summaryrefslogtreecommitdiff
path: root/frontend/beta
Unidiff
Diffstat (limited to 'frontend/beta') (more/less context) (ignore whitespace changes)
-rw-r--r--frontend/beta/css/clipperz/clipperz.css15
-rw-r--r--frontend/beta/css/clipperz/compact.css15
-rw-r--r--frontend/beta/css/clipperz/ie.css15
-rw-r--r--frontend/beta/css/clipperz/ytheme-clipperz.css15
-rw-r--r--frontend/beta/css/yui-extensions/basic-dialog.css15
-rw-r--r--frontend/beta/css/yui-extensions/button.css15
-rw-r--r--frontend/beta/css/yui-extensions/core.css15
-rw-r--r--frontend/beta/css/yui-extensions/dd.css15
-rw-r--r--frontend/beta/css/yui-extensions/grid.css15
-rw-r--r--frontend/beta/css/yui-extensions/inline-editor.css15
-rw-r--r--frontend/beta/css/yui-extensions/layout.css15
-rw-r--r--frontend/beta/css/yui-extensions/qtips.css15
-rw-r--r--frontend/beta/css/yui-extensions/reset-min.css15
-rw-r--r--frontend/beta/css/yui-extensions/resizable.css15
-rw-r--r--frontend/beta/css/yui-extensions/tabs.css15
-rw-r--r--frontend/beta/css/yui-extensions/toolbar.css15
-rw-r--r--frontend/beta/css/yui-extensions/tree.css15
-rw-r--r--frontend/beta/css/yui-extensions/ytheme-aero.css15
-rw-r--r--frontend/beta/css/yui-extensions/ytheme-gray.css15
-rw-r--r--frontend/beta/css/yui-extensions/ytheme-vista.css15
-rw-r--r--frontend/beta/css/yui/calendar.css15
-rw-r--r--frontend/beta/css/yui/container.css15
-rw-r--r--frontend/beta/css/yui/fonts.css15
-rw-r--r--frontend/beta/css/yui/grids.css15
-rw-r--r--frontend/beta/css/yui/logger.css15
-rw-r--r--frontend/beta/css/yui/menu.css15
-rw-r--r--frontend/beta/css/yui/reset.css15
-rw-r--r--frontend/beta/css/yui/tree.css15
-rw-r--r--frontend/beta/js/Bookmarklet.js15
-rw-r--r--frontend/beta/js/BookmarkletHash.js15
-rw-r--r--frontend/beta/js/Clipperz/Base.js15
-rw-r--r--frontend/beta/js/Clipperz/ByteArray.js15
-rw-r--r--frontend/beta/js/Clipperz/CSVProcessor.js15
-rw-r--r--frontend/beta/js/Clipperz/Crypto/AES.js15
-rw-r--r--frontend/beta/js/Clipperz/Crypto/Base.js15
-rw-r--r--frontend/beta/js/Clipperz/Crypto/BigInt.js15
-rw-r--r--frontend/beta/js/Clipperz/Crypto/BigInt_scoped.js15
-rw-r--r--frontend/beta/js/Clipperz/Crypto/ECC.js15
-rw-r--r--frontend/beta/js/Clipperz/Crypto/ECC/BinaryField/Curve.js15
-rw-r--r--frontend/beta/js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js15
-rw-r--r--frontend/beta/js/Clipperz/Crypto/ECC/BinaryField/Point.js15
-rw-r--r--frontend/beta/js/Clipperz/Crypto/ECC/BinaryField/Value.js15
-rw-r--r--frontend/beta/js/Clipperz/Crypto/PRNG.js15
-rw-r--r--frontend/beta/js/Clipperz/Crypto/RSA.js15
-rw-r--r--frontend/beta/js/Clipperz/Crypto/SHA.js15
-rw-r--r--frontend/beta/js/Clipperz/Crypto/SRP.js15
-rw-r--r--frontend/beta/js/Clipperz/DOM.js15
-rw-r--r--frontend/beta/js/Clipperz/Date.js15
-rw-r--r--frontend/beta/js/Clipperz/KeePassExportProcessor.js15
-rw-r--r--frontend/beta/js/Clipperz/NotificationCenter.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/BookmarkletProcessor.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/BaseComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Compact/CompactHeader.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Compact/CompactInterface.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Compact/LoginForm.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportColumns.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportFields.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportHeader.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportNotes.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportTitle.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Import/CSVImportComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Import/ClipperzImportComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Import/ExcelImportComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Import/GenericImportComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Import/KeePassImportComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Import/MainComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Import/PasswordPlusImportComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Import/RoboFormImportComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/MessageBox.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/OTP/MainComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Panels/AccountPanel.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Panels/BasePanel.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Panels/ContactsPanel.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Panels/DataPanel.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Panels/LoginPanel.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Panels/LogoutPanel.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Panels/MainPanel.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Panels/ToolsPanel.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/PasswordEntropyDisplay.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/PasswordGenerator.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Printing/Footer.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Printing/Header.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/Printing/Record.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/RecordDetail/AbstractComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/RecordDetail/AbstractFieldSubComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/RecordDetail/CreationWizard.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/RecordDetail/DirectLoginBindingComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/RecordDetail/DirectLoginComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/RecordDetail/DirectLoginValueComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/RecordDetail/DirectLoginsComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldButtonComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldDragHandler.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldLabelComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldTypeComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldValueComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/RecordDetail/HeaderComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/RecordDetail/MainComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/RecordDetail/NotesComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/RecordDetail/TitleComponent.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/TabPanel/TabPanelController.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Components/TextFormField.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Connection.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Crypto.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/DataModel/DirectLogin.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/DataModel/DirectLoginBinding.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/DataModel/DirectLoginInput.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/DataModel/DirectLoginReference.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/DataModel/Header.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/DataModel/OneTimePassword.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/DataModel/OneTimePasswordManager.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/DataModel/Record.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/DataModel/RecordField.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/DataModel/RecordVersion.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/DataModel/Statistics.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/DataModel/User.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/DataModel/UserPreferences.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Date.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Main.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Proxy.js15
-rwxr-xr-xfrontend/beta/js/Clipperz/PM/Proxy/Proxy.JSON.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Proxy/Proxy.Offline.js15
-rwxr-xr-xfrontend/beta/js/Clipperz/PM/Proxy/Proxy.PHP.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Proxy/Proxy.Test.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Strings.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Strings/MessagePanelConfigurations.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Strings/Strings_de-DE.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Strings/Strings_el-GR.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Strings/Strings_en-CA.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Strings/Strings_en-GB.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Strings/Strings_en-US.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Strings/Strings_es-ES.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Strings/Strings_fr-FR.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Strings/Strings_he-IL.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Strings/Strings_it-IT.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Strings/Strings_ja-JP.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Strings/Strings_pt-BR.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Strings/Strings_pt-PT.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Strings/Strings_ru-RU.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Strings/Strings_zh-CN.js15
-rw-r--r--frontend/beta/js/Clipperz/PM/Toll.js15
-rw-r--r--frontend/beta/js/Clipperz/Profile.js15
-rw-r--r--frontend/beta/js/Clipperz/Set.js15
-rw-r--r--frontend/beta/js/Clipperz/Signal.js15
-rw-r--r--frontend/beta/js/Clipperz/Style.js15
-rw-r--r--frontend/beta/js/Clipperz/YUI/Collapser.js15
-rw-r--r--frontend/beta/js/Clipperz/YUI/DomHelper.js15
-rw-r--r--frontend/beta/js/Clipperz/YUI/DomQuery.js15
-rw-r--r--frontend/beta/js/Clipperz/YUI/Drawer.js15
-rw-r--r--frontend/beta/js/Clipperz/YUI/IBLayoutManager.js15
-rw-r--r--frontend/beta/js/Clipperz/YUI/IBLayoutRegion.js15
-rw-r--r--frontend/beta/js/Clipperz/YUI/MessageBox.js15
153 files changed, 918 insertions, 1377 deletions
diff --git a/frontend/beta/css/clipperz/clipperz.css b/frontend/beta/css/clipperz/clipperz.css
index b0601a2..cf99ac9 100644
--- a/frontend/beta/css/clipperz/clipperz.css
+++ b/frontend/beta/css/clipperz/clipperz.css
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29/* @override 26/* @override
30 https://www.example.com/css/clipperz.css 27 https://www.example.com/css/clipperz.css
31 http://www.example.com/css/clipperz.css 28 http://www.example.com/css/clipperz.css
32 https://www.example.com/concurrency/css/clipperz.css 29 https://www.example.com/concurrency/css/clipperz.css
33 https://www.clipperz.com/beta-connection/css/clipperz.css 30 https://www.clipperz.com/beta-connection/css/clipperz.css
34 https://www.example.com/import/css/clipperz.css 31 https://www.example.com/import/css/clipperz.css
35*/ 32*/
36 33
37body { 34body {
38 /*margin-left: 15px; margin-right: 15px;*/ 35 /*margin-left: 15px; margin-right: 15px;*/
39 background-color: white; 36 background-color: white;
40 color: black; 37 color: black;
41 font-family: Helvetica, Arial, Geneva, sans-serif; 38 font-family: Helvetica, Arial, Geneva, sans-serif;
42} 39}
43 40
44table { 41table {
45 /* width: 100%;*/ 42 /* width: 100%;*/
46} 43}
47 44
48/* @group Header */ 45/* @group Header */
49 46
50div#applicationVersionType { 47div#applicationVersionType {
51 position: fixed; 48 position: fixed;
52 top: 0; 49 top: 0;
53 left: 0; 50 left: 0;
54 width: 120px; 51 width: 120px;
55 height: 120px; 52 height: 120px;
56 z-index: 99999; 53 z-index: 99999;
57} 54}
58 55
59div#applicationVersionType.readOnly { 56div#applicationVersionType.readOnly {
60 /* background: url(../images/read-only.png) no-repeat fixed -5px -8px;*/ 57 /* background: url(../images/read-only.png) no-repeat fixed -5px -8px;*/
61 background: url(data:image/png;charset=utf-8;base64,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) no-repeat fixed -5px -8px; 58 background: url(data:image/png;charset=utf-8;base64,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) no-repeat fixed -5px -8px;
62} 59}
63 60
64div#applicationVersionType.TEST { 61div#applicationVersionType.TEST {
65 /* background: url(../images/test-database.png) no-repeat fixed -5px -8px;*/ 62 /* background: url(../images/test-database.png) no-repeat fixed -5px -8px;*/
66 background: url(data:image/png;charset=utf-8;base64,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) no-repeat fixed -5px -8px; 63 background: url(data:image/png;charset=utf-8;base64,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) no-repeat fixed -5px -8px;
67} 64}
68 65
69div#applicationVersionType.LIVE { 66div#applicationVersionType.LIVE {
70 display: none; 67 display: none;
71 visibility: hidden; 68 visibility: hidden;
72} 69}
73 70
74div#applicationVersionType.DEBUG { 71div#applicationVersionType.DEBUG {
75 display: none; 72 display: none;
76 visibility: hidden; 73 visibility: hidden;
77} 74}
78 75
79div#header { 76div#header {
80 background-color: #336; 77 background-color: #336;
81 /*border-bottom: 8px solid #ff9400;*/ 78 /*border-bottom: 8px solid #ff9400;*/
82} 79}
83 80
84div#logoFrame { 81div#logoFrame {
85 /* float: left;*/ 82 /* float: left;*/
86 /* height: 44px;*/ 83 /* height: 44px;*/
87 min-height: 44px; 84 min-height: 44px;
88 background-color: #333366; 85 background-color: #333366;
89} 86}
90 87
91div#logoFrame > a { 88div#logoFrame > a {
92 font-size: 12pt; 89 font-size: 12pt;
93} 90}
94 91
95img#logo { 92img#logo {
96 padding-left: 15px; 93 padding-left: 15px;
97} 94}
98 95
99h5.clipperzPayoff { 96h5.clipperzPayoff {
100 color: white; 97 color: white;
101 font-size: 10pt; 98 font-size: 10pt;
102 font-weight: normal; 99 font-weight: normal;
103 padding-left: 20px; 100 padding-left: 20px;
104 display: inline; 101 display: inline;
105 vertical-align: 7px; 102 vertical-align: 7px;
106 white-space: nowrap; 103 white-space: nowrap;
107} 104}
108 105
109/* @group Misc links 106/* @group Misc links
110 */ 107 */
111div#miscLinks { 108div#miscLinks {
112 float: right; 109 float: right;
113 top: 0; 110 top: 0;
114 right: 15px; 111 right: 15px;
115} 112}
116 113
117div#miscLinks ul { 114div#miscLinks ul {
118 padding-top: 5px; 115 padding-top: 5px;
119 padding-right: 3px; 116 padding-right: 3px;
120} 117}
121 118
122div#miscLinks ul li { 119div#miscLinks ul li {
123 display: inline; 120 display: inline;
124 padding-left: 5px; 121 padding-left: 5px;
125 padding-right: 5px; 122 padding-right: 5px;
126} 123}
127 124
128div#miscLinks ul li a { 125div#miscLinks ul li a {
129 color: #ff9404; 126 color: #ff9404;
130 text-decoration: none; 127 text-decoration: none;
131 font-size: 10pt; 128 font-size: 10pt;
132} 129}
133 130
134div#miscLinks ul li a:hover { 131div#miscLinks ul li a:hover {
135 text-decoration: underline; 132 text-decoration: underline;
136} 133}
137 134
138/* @end */ 135/* @end */
139 136
140/* @end */ 137/* @end */
141 138
142/* @group Menu */ 139/* @group Menu */
143 140
144div#mainTabs { 141div#mainTabs {
145 /* background: #ff9400 url(../images/menubarSprite.gif) repeat-x;*/ 142 /* background: #ff9400 url(../images/menubarSprite.gif) repeat-x;*/
146 background: #ff9400 url(data:image/gif;charset=utf-8;base64,R0lGODlhAQCcAOYAANN7AKNfAP2zTf/KgO7QppVXAKJeALFmAOCkTfKtTZhZAPWvTaVgAJ5cAPCsTd2hTdygTaxjAOinTc13APySAOe8gO6rTfSuTZFVAKdhAOqIAN+jTfuyTZJVAO+LAPmxTeuqTbBlAKGDWbFnAOKkTaFdAOmoTfevTeSkTZdXAK9lAPyzTY9TAO+rTeamTfGMALKNWf60TeSmTZ1bAN+BAJpZAP/apvmyTZRWAKliAKpjAJxaAK1lAOiHAPaPANh9APyTANd9APSOANyBAPqQAPiPANF6ANB5AOOEANV9AOaGANV8AOyKANyAAPWPAP6UAPiQANp/AOGDANp+AOaFAOCDAO2KANJ6AP2TAPqRAOOFAM95APSNAP2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAABAJwAAAeigANdQBRZUD5cLx5MGj1USFU0Q1E/SwBXWxUTNjECKxw3HycLFwkOLRYgJhIuMigkCBsPBBAwIwchKjwROjkZDAEGJQ0zOzUKKQU4HRgiLBVHRgBJQVNNNFJaSj0aVh4vQk5FRBRYTwMTIhgdOAUpCjU7Mw0lBgEMGTk6ETwqIQcjYLAg8GADAhIoZLiQYAKEhRYOElxYcOLDDQ4rBMSwASEQADsK) repeat-x; 143 background: #ff9400 url(data:image/gif;charset=utf-8;base64,R0lGODlhAQCcAOYAANN7AKNfAP2zTf/KgO7QppVXAKJeALFmAOCkTfKtTZhZAPWvTaVgAJ5cAPCsTd2hTdygTaxjAOinTc13APySAOe8gO6rTfSuTZFVAKdhAOqIAN+jTfuyTZJVAO+LAPmxTeuqTbBlAKGDWbFnAOKkTaFdAOmoTfevTeSkTZdXAK9lAPyzTY9TAO+rTeamTfGMALKNWf60TeSmTZ1bAN+BAJpZAP/apvmyTZRWAKliAKpjAJxaAK1lAOiHAPaPANh9APyTANd9APSOANyBAPqQAPiPANF6ANB5AOOEANV9AOaGANV8AOyKANyAAPWPAP6UAPiQANp/AOGDANp+AOaFAOCDAO2KANJ6AP2TAPqRAOOFAM95APSNAP2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAABAJwAAAeigANdQBRZUD5cLx5MGj1USFU0Q1E/SwBXWxUTNjECKxw3HycLFwkOLRYgJhIuMigkCBsPBBAwIwchKjwROjkZDAEGJQ0zOzUKKQU4HRgiLBVHRgBJQVNNNFJaSj0aVh4vQk5FRBRYTwMTIhgdOAUpCjU7Mw0lBgEMGTk6ETwqIQcjYLAg8GADAhIoZLiQYAKEhRYOElxYcOLDDQ4rBMSwASEQADsK) repeat-x;
147 height: 26px; 144 height: 26px;
148} 145}
149 146
150/* @group Exit links */ 147/* @group Exit links */
151 148
152ul#exitLinks { 149ul#exitLinks {
diff --git a/frontend/beta/css/clipperz/compact.css b/frontend/beta/css/clipperz/compact.css
index 7c9252a..c6e8661 100644
--- a/frontend/beta/css/clipperz/compact.css
+++ b/frontend/beta/css/clipperz/compact.css
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29/* @override https://www.example.com/css/compact.css */ 26/* @override https://www.example.com/css/compact.css */
30 27
31body.compact div#mainDiv { 28body.compact div#mainDiv {
32/* 29/*
33 width: 250px; 30 width: 250px;
34 height: 95%; 31 height: 95%;
35 border: 1px solid #333366; 32 border: 1px solid #333366;
36*/ 33*/
37 padding: 0px; 34 padding: 0px;
38} 35}
39 36
40body.compact div#compactHeader { 37body.compact div#compactHeader {
41 background-color: #333366; 38 background-color: #333366;
42} 39}
43 40
44body.compact div#compactHeader img { 41body.compact div#compactHeader img {
45 padding: 2px 20px 2px 4px; 42 padding: 2px 20px 2px 4px;
46 width: 60; 43 width: 60;
47} 44}
48 45
49body.compact div#compactHeader a { 46body.compact div#compactHeader a {
50 color: white; 47 color: white;
51 text-decoration: none; 48 text-decoration: none;
52 font-size: 10pt; 49 font-size: 10pt;
53 /*position: absolute; */ 50 /*position: absolute; */
54 right: 10px; 51 right: 10px;
55 top: 6px; 52 top: 6px;
56} 53}
57 54
58body.compact div#compactHeader a:hover { 55body.compact div#compactHeader a:hover {
59 color: #ff9400; 56 color: #ff9400;
60} 57}
61 58
62body.compact h4 { 59body.compact h4 {
63 color: #999999; 60 color: #999999;
64 text-align: center; 61 text-align: center;
65 padding: 20px; 62 padding: 20px;
66 font-weight: normal; 63 font-weight: normal;
67 font-size: 12pt; 64 font-size: 12pt;
68 font-style: italic; 65 font-style: italic;
69} 66}
70 67
71body.compact div.loginPanel form { 68body.compact div.loginPanel form {
72 padding: 10px; 69 padding: 10px;
73} 70}
74 71
75body.compact div.loginPanel dt { 72body.compact div.loginPanel dt {
76 color: #aaaaaa; 73 color: #aaaaaa;
77 font-size: 10pt; 74 font-size: 10pt;
78} 75}
79 76
80body.compact div.loginPanel input { 77body.compact div.loginPanel input {
81 width: 180px; 78 width: 180px;
82} 79}
83 80
84body.compact ul#directLogins { 81body.compact ul#directLogins {
85 background-image: none; 82 background-image: none;
86 padding: 4px 0px; 83 padding: 4px 0px;
87} 84}
88 85
89body.compact ul#directLogins li { 86body.compact ul#directLogins li {
90 width:auto; 87 width:auto;
91} 88}
92 89
93body.compact ul#directLogins li.hover { 90body.compact ul#directLogins li.hover {
94 width:auto; 91 width:auto;
95 padding-right: 0px; 92 padding-right: 0px;
96} 93}
97 94
98body.compact div.lockPanel { 95body.compact div.lockPanel {
99 color: #999999; 96 color: #999999;
100 font-size: 10pt; 97 font-size: 10pt;
101 padding: 10px; 98 padding: 10px;
102} 99}
103 100
104div#compactMiscLinks ul { 101div#compactMiscLinks ul {
105 /* text-align: center;*/ 102 /* text-align: center;*/
106 display: block; 103 display: block;
107 padding-left: 22px; 104 padding-left: 22px;
108 background-color: #ff9400; 105 background-color: #ff9400;
109} 106}
110 107
111div#compactMiscLinks ul li { 108div#compactMiscLinks ul li {
112 display: inline; 109 display: inline;
113 padding: 2px 5px; 110 padding: 2px 5px;
114} 111}
115 112
116div#compactHeader div#compactMiscLinks ul li a { 113div#compactHeader div#compactMiscLinks ul li a {
117 font-size: 9pt; 114 font-size: 9pt;
118} 115}
119 116
120div#compactHeader div#compactMiscLinks ul li a:hover { 117div#compactHeader div#compactMiscLinks ul li a:hover {
121 color: #333366; 118 color: #333366;
122} 119}
123 120
124div#lockBlock { 121div#lockBlock {
125 position: absolute; 122 position: absolute;
126 right: 10px; 123 right: 10px;
127 top: 6px; 124 top: 6px;
128} 125}
129 126
130div#lockBlock input { 127div#lockBlock input {
131 width: auto; 128 width: auto;
132 padding-bottom: 2px; 129 padding-bottom: 2px;
133} 130}
134 131
135div#lockBlock span { 132div#lockBlock span {
136 font-size: 9pt; 133 font-size: 9pt;
137 padding: 0px 5px 0px 4px; 134 padding: 0px 5px 0px 4px;
138 color: #aaaaaa; 135 color: #aaaaaa;
139} 136}
140 137
141div#lockBlock a#lock { 138div#lockBlock a#lock {
142 font-size: 9pt; 139 font-size: 9pt;
143} 140}
144 141
145/* @group Donate */ 142/* @group Donate */
146 143
147a#donateHeaderLink { 144a#donateHeaderLink {
148 font-weight: bold; 145 font-weight: bold;
149} 146}
150 147
151div#compactMiscLinks a#donateHeaderIconLink img#donateHeaderLinkIcon { 148div#compactMiscLinks a#donateHeaderIconLink img#donateHeaderLinkIcon {
152 display: inline; 149 display: inline;
diff --git a/frontend/beta/css/clipperz/ie.css b/frontend/beta/css/clipperz/ie.css
index 02b09f2..320363c 100644
--- a/frontend/beta/css/clipperz/ie.css
+++ b/frontend/beta/css/clipperz/ie.css
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29<!--[if IE]> 26<!--[if IE]>
30 27
31<style> 28<style>
32 29
33{ 30{
34 background-color: white; 31 background-color: white;
35} 32}
36 33
37div#logoFrame { 34div#logoFrame {
38 height: 44px; 35 height: 44px;
39} 36}
40 37
41div.clipperzLoginForm div.loginForm form { 38div.clipperzLoginForm div.loginForm form {
42 padding-left: 20px; 39 padding-left: 20px;
43} 40}
44 41
45div.clipperzLoginForm div.registrationForm form { 42div.clipperzLoginForm div.registrationForm form {
46 padding-left: 20px; 43 padding-left: 20px;
47} 44}
48 45
49div#newRecordInnerPanel { 46div#newRecordInnerPanel {
50 width: 350px; 47 width: 350px;
51 height: 160px; 48 height: 160px;
52 background: url(../images/newRecordPanelBackground.png) no-repeat 0 -165px; 49 background: url(../images/newRecordPanelBackground.png) no-repeat 0 -165px;
53 /*background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAY4AAAFQCAYAAACoMJkjAAANIWlDQ1BJQ0MgUHJvZmlsZQAAeJyV13k0lG8bB/BrFsYyZhhjDyO7iLITskQi2feS7AwzMQkpS1KILKFoQWihKJGoqH5kSUghoajIkj1Llnn/kOr9nff3vue9/njO9dzPc859P885n+99bgC8miuVSkYCgH8ALdDSSI9k7+BIwnQCBnDAA1gQdnULouqam5vCP9Z8JyAAADrkXKlU8j+/9x8LF2jv4AiAkAUAotd6vxMAiIfWe2sAIB6lUWkACG8AILp5u7oDIMIBQDbQ2lIfAHEDAHBe630lAOAOrfcNAIALdvOiASC6ARgJAe4+AQCYcQBGbXePIDcAnCwAuLsHufkD4JIBwMzfn+IOgPsIAFJu1EAaAJ4JAOTsHRxJ60t2igdQ4gNgMvk9djQdoDwXQGrv7zHRBwDcrgB5ib/HZi0BAQAI7tYgT8XtAACAwOoBMPTT6bMSAJhUgNUUOn05j05fvQaA6gWoJbsdCQz++b8QiBaA/3W//s0/C4UAQAIgxBCFyDBUODqc4QRjJCaa6SSzAXMdy2nWM9g4trO4CnZvjhRCCmcq8TxXOnc6TyZvHT9FIHtTtuBloQbSEZG8zddEW8WPSRRKtkufkCna0ikXvfW2fM+209vvKX5QPqtSoTqgnqRRpTmklab9RGdUN0Pvmf7ErizDeqMZ46t7mkzm9+aZvdrXZt5m0W65Yn3L5q1tp12Xfbcj2umuc+/+vgP9Lh8OfjyEdXvo/tnji+eQ17D3V58RPy7yU/9vAROUSerU4enAmaA52tyR78HzRxdCFkOXwn4cWwlfOb4aIR35NhpxEhmDOoWOZTjNeAYTxxTPnMByljURm8R2DpeMT2FP5UgjnOdMJ2ZwZXJf4LnIm8WXzX9J4PKmK4JXhXKEc0l5Itc254sWiBWKX5e8IXlT6pZ0kUzRWDH5tuwduRL5UoW72+5tK9t+X6lcuUKlYv5BcKXqQ7UqjWrNRzse73ii9WStJqJW5+nOZ7rP9f7Sr0PXxdTvemHYYNRo3GTczNKc8NKkxfSVWSuu9VybebvFa8sOQkfqG6u31p02Xdxdmd127+x7HN/zv8/ude5z7t//QejD1Y8uAwcHRQbzPh367PbFfUh8qHDY86vXiPeo9OitMd9xv2/kCbmJO5MBU5Rp6sy2mXuzgXNB32nzyvMVC8GLIUuhP0KXNZarV46thq9prT2h0wEQokgccgrVjC5iSGMMx3gxWTPrsyixSmIl2XhxPHhedl4OLoIEpxRRjcuU+wBPEG8SXwl/s8CIIKeQirAX6YLIC1GEmJb4YYm7kpPSUjLkLdVyqK268ikKA9ulFWOVulRkVKlqdRo8miE7Xmpz61B2PtMT0z9m0G4oZBSy+7Hxksk2U4+96Wbt5jgLI8sQqwLrN7YsdjvtDztcdqx3mtwvfGCfS9jBPNe6QyPuXB46nvZeJ7xzfGp9+/yW/DkDtlAMqN6HwwOTg/Jo5Ucagt8fHQ2ZD0Md4wgnHZc9oRyxM9Ikal+008mDMR6nyLG004FnIuMi408mxJ1NTUxIyjp3MTkzJSX1Ulrq+Yz0Cxk3Mq9fuHPxRlZRdsmlR5cfXam7+jKnPbcjr+NaR/77gs+Fw9cHb3y5OXlrumiyeOL2zJ3JkrHS8bvD9wbKBu/3lLdXND6orXzwsKTqUnXqo8jH/k+cakxqdzyVeUZ4tvT8419Ndffr014ENlg1qjQJNNGbe17eb4l/5dgq2jrUVtZ+/PWuDlxH35uct76dip2rXS3dae/290j3zL6v6o3uM+kn9vd/uPkxaEBzED3Y9On85wNfJL+MD1UNR33dM8I10jeaP0YeVx5f+9Y4kTrpNCU2NT5dNhM+azRHmOv+XjBPWVBfRC2+WEr54bQsuvxtpWI1cs2Yzk2nA8BJRAgyDKWJqkIfZ9BhqGGMwpxiMmSqY45lOc0aj92DbWZLxCXik9j3sbdyJBNSOdOIaVzWXG+4M3gyeC/wZfFnC2RvuiToLNgndFU4h5Qrkrs5V/SaWL54gUSh5HWpG9I3ZXxkRrfcki2Wu731jnyJQum2u9vvKZYp3VeuUKlQrVALUVtUr9Ko0qze8UjrsfYJ7TWdmp21uk/1nuk/N4jZhd5VZ1hv9GJ3g3HjniaTBFOs6cu9LWav9rWaJ1uwW7RbvrbqsH5j02mbYcdt12Xf7fDOsccp21nAuXd/34EPLh8PfnTNPSRyaNDtk/tnjy+ehV4S6wniO+pXRJYlj/9bisz+SpHKULXQpbAfx5bDV46vnliLoEdBNPJXkmDOYOKY4hrj9ySwnsUmYpPYzuGT2VM4fmUJdybPBd6fWbLpzyzJG7zmli9aIFYocV1iI02KZW/L3dn6R5YolitVKD9QrVR9qFalXq35SPPxjifaNdp/5MiuesMXhg1GjbubjJtNXga/2txq1mbebv7aouP4W5lO2y677uge+feOvbH9ih/iBpQHz352H9IcThnxGfP9Rp6kTMfPOc6fW0pYtaTTAdb3PgAARhWAjC0AtlkAVnkAsVsAJF0AuG8AmLMBWKsDkkEIkFpUQOzR2tg/AAHsIAhbQQ8cIAiSoRQWESSECSIEcQPxCjGMxCONkFHIx8gVlBYqClWPWkGLoB3QhejvDIYMpxhKGCYZjRhzGYcwXBhnzGMmDJM6UwzTGLMGM4W5lkWOJZKlkhXHGsX6DkvEBmC/su1iO8k2gHPFPcOj8J74cXYL9gz2VY44jhmCBqGAU5WzgHOS6EJc4PLhquDewv2Cx5MXw3uLT5zvKN8c/2UBI4HZTTmCYoLhQgihcmFfkgipR+T85s2bI0Xxoq1iKeI2EvwSg5JFUvpSN6X1ZDhkBraUyZ6Wc96qKI+VH1b4a1ve9mhFdyUjZVkVTpUV1SG1THWceq1GqWbujvNaZ7QjdI7uPKxL1vPR9zbw3uVnGGBE233MOGbPOZNs05t7K80a9/WaT1tirISs1WysbKl2SfZ3HNocZ51592sf8HRJPljt+tWNx93II9Sz2IfX19wvnlwXgKToUqMOPw9ipJkcSQ0RC6WEPQpnOe54ojiCHmUdgzzlHPvgDGfc4fj2xPSkpWSXlPo0+fNZmUEXPmVZZddduZMjnnv5Gk8h+/Wkm7hb525nlgiW5t+TKzeoaK90fTj9mOdJca3ec1odvr64YU9zfIvcq/a24I76t9Quge6GXom+7g/xAzqfi4fcvwqP9HyzneSe6prJmnNZGF8qX46g89LpAIAEFuABadABezgC6VAJ/QgMQgHhgkhC1CBmkTJIF2QW8g0Kj9qLOotqQbOh96HT0e8ZSAw+DKUMi4z6jOcY32HEMUcwz5kITO5MlcyszM7Md1jQLAdY7rOysLqx1mC5sFRsC5sMWyLbOM4UV4Jnw1Pwnew72fM5cBzBHO8JhoS7nCTOVM41YhDxG5cv1yg3mXuGh8YzzxvGh+A7y8/Pf0tAXaB+k+2mEcFIIT6hCmEL4VFSrIiESMPmAFEe0SdibuJY8acSAZLCkq+l4qT1pFdlqreEy2rJLsjVbD0jb60gojC5rWZ7iqKvkoGykPKyylvVh2qX1aM0vDTtdmhpyWuL6BB2onVRujN60/qTBmO7hgxnjcZ2f9+DNCGa8uzdZqa9b5+5pYWfZahVtvU9m5e27+1WHIiO8k5mzof3XzxQ5zLsynxIwc3bPcujxnPKW9rHwzfT762/QIANJZv6NVAqKJjWGCx4NCikKUz0WFL46AmHiIYoleiCGMKppNOEMxnxvAnZicpJr5I9Un6kJaarZny5cCXL95LNFekchtzxa88Kyq9fvBlb5HbbucTwrlqZUvnWB3IPparFH0vVKDzVeb67zuIFufFwc0pLTuuj9v4Oeqdwt1aPe29Cf9XH8U98X/SGI0dujH2e4J/ynLkyN7QgtRSwXLGGoNMBgBHYQRD0wAGSoRReb9jfcL+uHo1HO6C/MxgyZP30voZxZhJmimEaY7ZmrmWRY7nEimONYl3ABmC/srnjXHGf8J74cfYg9lWOOAI3oYBTlbOJ6EJc4Er+ZdqMb+6nZ3MhhFD5T8sW65J/Og6W1vvT8G/BP/2+Vq/VKP1t97fcf3b739R6Dfjw+pr/XW1wz9/dRt/6U+7Z7b/lZjBu2L2svqE3P23DbzFhQ3BZ5Ybh6pPrip/2bDhuHGmOf/lXS8ar9rbg14Id9W+pnaVdsd0NPcG9En1+/QYf4gd0Bk9/OvS5+Mv8UMdX4RG/UeMxqXHMN9uJwsnYKa/p3TMys6yzE3Nt38vmMxasF8YXY5b0fkj+GFqOWOFdubLKsRqzurCWT0+g0wHWz0sAAMCiTyFTAkmm+gb/52Hvf5U/+cjGHEgAwHoE2FgBAAEApHxoxtYAQAQADdAHCpCBAoFAAlPQB4OfVxK4/XriA7B+lgMAYGQHuGQHAFCzeCzy7/PSPEJoAAD6FGpooI+XN42kS6WSPUj6FH/qEZpHoCzJOMBtqyxpu4KCMgDAvwBJl//fxucdgAAAAAlwSFlzAAALEwAACxMBAJqcGAAADQdJREFUeJzt3U+MnGd9wPHfOzP7x/FuvOAYZAzGRg1pFKDAIVXbiD8Sai2knKJK7QHEAXHoHfXS9MIFDkg9c0BVD1SqUIA2VRuLKhIEOBjhQxDBjo0BJ7gQ4jq769m1d2emh5nH885k7e5vZnbj2p+P9Gr+7LvvO3t5v/u8z/vuRgAAAAAAAAAAAAAAAAAAAAAA95HqLd7vW7V/gHtBb7Dsq70+cFe1Jcae78f+Ae5V48Hojj3fs6Ds1YG7iohGjIZj/PV4VADYvV5tKdHo3uG9mZn1QbseiEZENAfvt2rvNcbW28vPA3Av2WmUUQ9FWTq15/WvzyQgszpQ7xSM5uB56/jxPzt66NDxJ5vNA59sNKr3RjROVlU1P6N9A9zHemu9Xu/Vbnf7JzdurP/bSy9987sRsR39eGzHMCQzi8cswlGPxq1YRETr0KH3v+3EiT/+21Zr8bMR1eIM9gXAHXS7nZfa7d///blz33k+hvGoB2TqeDT/71XuaDwarYiYj4iFEyc+9cFjxz70zWZz/lMRVWvK/QCwC1XVODI3d/AvH3ro0d7vfvfij8vbs9zHtOEocxb1aMy/5z0fe/TIkT94pqoa75r2AwKQU1VV1WzOP3H48CMxiEcZYfRiBhGZZgNllDESjeXld608/PCnT1dV43h95cOHH4zPfObP4/HH/zCOHj0cy8sPTLFrACIi1tbacf78K/HMM9+L5547M/K1Xq/XW1+/8rnz55/9bkRsRsTWYCmnrrpv2uAuTBOOMp8xN1jmI+KBD3zgr/9uYWH58/UVT516PL74xb+KQ4cOTrE7AO7k+efPxpe+9E+xutq+9V63u33h7Nmvn4qIdozGoxPDSfOUSU9VlbmN1mBZiIjFBx88cfTIkUf/oaqqW9v9xCc+HF/+8hdicdFFVAB76eTJo3HixNE4fXo48qiqxtsPHnzn+atXX/5FjF6uW78PJKUx4eerX3Z7Kx7Hjn3kqfpltu94x0o8/fRnJ9wFAFkf//gfxalTj4+8t7i48hcRsRj9X/LLMXune+l2ZZJw1G/kG7mSam5u6Yn6ik8++adOTwHss6ee+tjI67m5xQ9F/zjdiv7UQjOm+Osd04w4SkDK/MZ8szn/aH2lJ5744ISbB2BSDz/87pHXVdV4KPqjjTLiKL/071s4yk7qp6nmImKx0Wiu1Fd87LETE2wegGksLR0YeV1VjYPRj8ZcDMNRfvlPm3TEUa6oKvEoV1aNbrwx6eYBmLFynC7hqP/h2ZRJjuyN2mO5smou+jUD4O40H8N770o4It6COY6Rv0014bYA2HtlpFGO22VJy35TfRa+GaN3j0/750sA2Dvll/z6v7eY6MqqaUYcEaOXdAkHwN1rqktw66YNR9nGxDeSALAv6tML5fW+3QBY/xD1+zlcQgVw96pqj1ONOmYVDgDubtVtnqfNcpQgIAD3AaeXAEgRDoD7w05nhfZlcvxO1/06VQXw/0P9GL5v93GM71w0AO5+MzleO1UFQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkCAcAKcIBQIpwAJAiHACkzDIcvRluC4DZmtkxOhuO3tjz+gLA3W0mx+1JRhxCAXBvmCgi5jgASJlFOG5bql7PwATgXjNpOHo7PPa63e3r9ZXOnbs86ecCYELXr2+OvO71OpsxwznpaUYc4x+gu7W18av6Ci+88OIUmwdgEpcuXRl53elsvzG2ylQRmUU4uhHRiYheu/36z+orPPvsj6Ld3tzpewHYI9/+9gsjr7e2rv8yBsfpGB63JzarcPQionPlytnvR/Q6ZYVXXnktvvKVf57m8wGQcObMz98UjrW1V88OnpZf9MvziTQn+J5q8H2twTIXEfMRsbi93W4sLx9758LC8vGy8ssvvxKrq+346EffH63WJLsDYDfOnPl5PP3016PdvnHrvU7nxu8vXnzuH3u97lpEtCPiRkRsRsTWYOlGMiKTHMkbg6U5WEo4FiJifn39yquHDz/yJ41Gc6F8w09/eilOn/5xLC0diJWVpVhcXIhGo5pg1wDUtdubce7c5fja156Nr371X0aiERHx29+++I3V1csXImI9IjYGy42IuBkR24MlFY5Jjt5ltLEQEQciYikiliPiwYh4KCLetrLyvsdOnvzk39TjAcD+euONy9+7cOE/vhERr0fE1Yi4FhGrMYzIZvTD0bntRnYw6amq8VFHGXnMRcT85ub/bNy8uf6b5eVjj4gHwP67du3XP7h48T+/FRFrEXE9RkccW9EfcXRiOGm+a5OGo8xzjMejjEaaGxtX169d+9W5AwfevjI/v3SkqirnpgD22Pb25rUrV37yr5cvv/B89KNRwnE9+nMcm9GPxlb0o1EucNq1aWerdwpIa/C60elsbr3++vkL6+v/fTEithqNVquqGo2qajSFBGB63W5na3t7Y31j4+qvX3vtpR9euvRf/7629ptfRn+EUR9ttOPN8xslHCmTHrwbMbyiaiEiFiPigejPdSxFxKEYzn0sRcTBwTqLMbwaq5zumvazANxP6qODcvDfjv4IYjOGoVgbPK4Onq9GPx7lyqqtGE6Mp0YcrSk+fHew0zLauBn9mpWRR9EZfMADg6/Px2g4yqmvCPEAuJORP/MUwzmKrRheZrsR/TjURxwlFjdiOMroxoR3j08ajvrt6t3Bh65qS3m/VPDG4IdZjP4opZzSKhPtggGwO/Vjb7mhr0x2b8Zw1NGuPW7E8PRUfW5jItOGoxOjo4V6AEpQbkZ/tLEQ/dHG3GC/zRiGI0I8AHZjp3Bsx3Duoow66ksJSolG/c+PpE1zqqrssFz/Ox6NUrZy3m0+huEoE+r1cIxvA4BR9VNV5VTTdm25GcN4lMf6neL1OY23NBxl5FGed2tL+UHKvEaZUC/zIvXTWxHCAXAn4wf8csqpPkFezvTcrD0v0Zh6tBExXTgi3vwD1N8rP0gr+sUr4RgfbYgFQF59grsEoYw8tmJ0PqN+6e3U/5Nj2nDE4IM0xj5IfXK8xKJ+v0f9aqrxuREAbm+nK6vKYznudnZYejHlKapilgfs8RDUT0eVWOw00nCaCmB3xv/7asTo9MBOIan//42p/g9HsRcH6/pVUuMhGf9afX0Adqc+ahi/PaL+OP71mdjL3/J3mvS+3aW7AOSNj0B2epxZMIr9PHg7JQWwd3Y6jQUAAAAAAAAAAAAAAAAAAAAAMK3/BX4vwOY3EngcAAAAAElFTkSuQmCCCg==) no-repeat 0 -165px; */ 50 /*background: url(data:image/png;charset=utf-8;base64,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) no-repeat 0 -165px; */
54} 51}
55 52
56img#donateHeaderIcon { 53img#donateHeaderIcon {
57 padding-top: 0px; 54 padding-top: 0px;
58 margin-bottom: 0px; 55 margin-bottom: 0px;
59} 56}
60 57
61/* ========================================================== */ 58/* ========================================================== */
62 59
63div#applicationVersionType { 60div#applicationVersionType {
64 position: absolute; 61 position: absolute;
65} 62}
66 63
67div#applicationVersionType.readOnly { 64div#applicationVersionType.readOnly {
68 background: url(../images/read-only.png) no-repeat fixed -5px -8px; 65 background: url(../images/read-only.png) no-repeat fixed -5px -8px;
69} 66}
70 67
71div#applicationVersionType.TEST { 68div#applicationVersionType.TEST {
72 background: url(../images/test-database.png) no-repeat fixed -5px -8px; 69 background: url(../images/test-database.png) no-repeat fixed -5px -8px;
73} 70}
74 71
75div#mainTabs { 72div#mainTabs {
76 background: #ff9400 url(../images/menubarSprite.gif) repeat-x; 73 background: #ff9400 url(../images/menubarSprite.gif) repeat-x;
77} 74}
78 75
79div#menus { 76div#menus {
80 background: url(../images/menubarSprite.gif) no-repeat right -26px; 77 background: url(../images/menubarSprite.gif) no-repeat right -26px;
81} 78}
82 79
83div#menus table { 80div#menus table {
84 background: url(../images/menubarSprite.gif) no-repeat 0 -52px; 81 background: url(../images/menubarSprite.gif) no-repeat 0 -52px;
85} 82}
86 83
87div#menus table tbody tr td div { 84div#menus table tbody tr td div {
88 background: url(../images/menubarSprite.gif) no-repeat right -52px; 85 background: url(../images/menubarSprite.gif) no-repeat right -52px;
89} 86}
90 87
91div#menus table tbody tr td div a { 88div#menus table tbody tr td div a {
92 background: url(../images/menubarSprite.gif) no-repeat left -26px; 89 background: url(../images/menubarSprite.gif) no-repeat left -26px;
93} 90}
94 91
95div#menus table tbody tr td.selectedTab { 92div#menus table tbody tr td.selectedTab {
96 background: url(../images/menubarSprite.gif) repeat-x right -78px; 93 background: url(../images/menubarSprite.gif) repeat-x right -78px;
97} 94}
98 95
99div#menus table tbody tr td.selectedTab div { 96div#menus table tbody tr td.selectedTab div {
100 background: url(../images/menubarSprite.gif) no-repeat right -130px; 97 background: url(../images/menubarSprite.gif) no-repeat right -130px;
101} 98}
102 99
103div#menus table tbody tr td.selectedTab div a { 100div#menus table tbody tr td.selectedTab div a {
104 background: url(../images/menubarSprite.gif) no-repeat left -104px; 101 background: url(../images/menubarSprite.gif) no-repeat left -104px;
105} 102}
106 103
107div.clipperzLoginForm div.loginFormHeaderBox { 104div.clipperzLoginForm div.loginFormHeaderBox {
108 background: url(../images/loginFormBox.png) no-repeat -3px top; 105 background: url(../images/loginFormBox.png) no-repeat -3px top;
109} 106}
110 107
111div.clipperzLoginForm div.loginForm { 108div.clipperzLoginForm div.loginForm {
112 background: url(../images/loginFormBox.png) repeat-y -408px; 109 background: url(../images/loginFormBox.png) repeat-y -408px;
113} 110}
114 111
115div.loginForm div.loginFormFooterBox { 112div.loginForm div.loginFormFooterBox {
116 background: url(../images/loginFormBox.png) no-repeat -813px bottom; 113 background: url(../images/loginFormBox.png) no-repeat -813px bottom;
117} 114}
118 115
119div.clipperzLoginForm div.registrationForm { 116div.clipperzLoginForm div.registrationForm {
120 background: url(../images/loginFormBox.png) repeat-y -408px; 117 background: url(../images/loginFormBox.png) repeat-y -408px;
121} 118}
122 119
123div.clipperzLoginForm form.read-only table.formLayout, div.panelform.read-only table.panelBody, div.clipperzSubPanel span.read-only, div.read-only { 120div.clipperzLoginForm form.read-only table.formLayout, div.panelform.read-only table.panelBody, div.clipperzSubPanel span.read-only, div.read-only {
124 background-image: url(../images/read-only_background.png); 121 background-image: url(../images/read-only_background.png);
125} 122}
126 123
127div.registrationForm div.loginFormFooterBox { 124div.registrationForm div.loginFormFooterBox {
128 background: url(../images/loginFormBox.png) no-repeat -813px bottom; 125 background: url(../images/loginFormBox.png) no-repeat -813px bottom;
129} 126}
130 127
131div.loginPanelSwitchLanguageBox { 128div.loginPanelSwitchLanguageBox {
132 background: url(../images/languageBox.png) no-repeat 19px -15px; 129 background: url(../images/languageBox.png) no-repeat 19px -15px;
133} 130}
134 131
135div#directLoginsBlock { 132div#directLoginsBlock {
136 background: url(../images/directLoginBox.png) repeat-y -262px bottom; 133 background: url(../images/directLoginBox.png) repeat-y -262px bottom;
137} 134}
138 135
139div#directLoginsBlock div.directLoginsBlockHeaderBox { 136div#directLoginsBlock div.directLoginsBlockHeaderBox {
140 background: url(../images/directLoginBox.png) no-repeat -11px -13px; 137 background: url(../images/directLoginBox.png) no-repeat -11px -13px;
141} 138}
142 139
143ul#directLogins { 140ul#directLogins {
144 background: url(../images/directLoginBox.png) no-repeat -513px bottom; 141 background: url(../images/directLoginBox.png) no-repeat -513px bottom;
145} 142}
146 143
147div#directLoginsDescription { 144div#directLoginsDescription {
148 background: url(../images/directLoginBox.png) no-repeat -513px bottom; 145 background: url(../images/directLoginBox.png) no-repeat -513px bottom;
149} 146}
150 147
151/* 148/*
152div#recordListFilterHeader { 149div#recordListFilterHeader {
diff --git a/frontend/beta/css/clipperz/ytheme-clipperz.css b/frontend/beta/css/clipperz/ytheme-clipperz.css
index 71ca4d1..effed2e 100644
--- a/frontend/beta/css/clipperz/ytheme-clipperz.css
+++ b/frontend/beta/css/clipperz/ytheme-clipperz.css
@@ -1,141 +1,138 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29/* @override 26/* @override
30 http://localhost:8080/pm-restyle/css/ytheme-clipperz.css 27 http://localhost:8080/pm-restyle/css/ytheme-clipperz.css
31 http://proxy/css/ytheme-clipperz.css 28 http://proxy/css/ytheme-clipperz.css
32 http://proxy/pm-497/css/ytheme-clipperz.css 29 http://proxy/pm-497/css/ytheme-clipperz.css
33 https://www.example.com/css/ytheme-clipperz.css 30 https://www.example.com/css/ytheme-clipperz.css
34*/ 31*/
35 32
36/* @group new Message dialog */ 33/* @group new Message dialog */
37 34
38#mb-dlg .ext-mb-progress { 35#mb-dlg .ext-mb-progress {
39 height:18px; 36 height:18px;
40 /* background:transparent url(../images/default/basic-dialog/progress2.gif) repeat-x 1px 1px;*/ 37 /* background:transparent url(../images/default/basic-dialog/progress2.gif) repeat-x 1px 1px;*/
41 background:transparent url(data:image/gif;charset=utf-8;base64,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) repeat-x 1px 1px; 38 background:transparent url(data:image/gif;charset=utf-8;base64,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) repeat-x 1px 1px;
42} 39}
43 40
44.ydlg .ydlg-hd { 41.ydlg .ydlg-hd {
45 /* background: url(../images/clipperz/basic-dialog/hd-sprite.gif) repeat-x 0 -82px;*/ 42 /* background: url(../images/clipperz/basic-dialog/hd-sprite.gif) repeat-x 0 -82px;*/
46 background: url(data:image/gif;charset=utf-8;base64,R0lGODlhAwB7AIABADMzZv///yH5BAEAAAEALAAAAAADAHsAAAITBGKpy+0Po5y0Houz3rz7D4ZUAQA7Cg==) repeat-x 0 -82px; 43 background: url(data:image/gif;charset=utf-8;base64,R0lGODlhAwB7AIABADMzZv///yH5BAEAAAEALAAAAAADAHsAAAITBGKpy+0Po5y0Houz3rz7D4ZUAQA7Cg==) repeat-x 0 -82px;
47 background-color:navy; 44 background-color:navy;
48 color:#ffffff; 45 color:#ffffff;
49 font:bold 12px "sans serif", Helvetica, Arial, Geneva, sans-serif; 46 font:bold 12px "sans serif", Helvetica, Arial, Geneva, sans-serif;
50 overflow:hidden; 47 overflow:hidden;
51 padding:5px; 48 padding:5px;
52} 49}
53.ydlg .ydlg-hd-left { 50.ydlg .ydlg-hd-left {
54 /* background: url(../images/clipperz/basic-dialog/hd-sprite.gif) no-repeat 0 -41px;*/ 51 /* background: url(../images/clipperz/basic-dialog/hd-sprite.gif) no-repeat 0 -41px;*/
55 background: url(data:image/gif;charset=utf-8;base64,R0lGODlhAwB7AIABADMzZv///yH5BAEAAAEALAAAAAADAHsAAAITBGKpy+0Po5y0Houz3rz7D4ZUAQA7Cg==) no-repeat 0 -41px; 52 background: url(data:image/gif;charset=utf-8;base64,R0lGODlhAwB7AIABADMzZv///yH5BAEAAAEALAAAAAADAHsAAAITBGKpy+0Po5y0Houz3rz7D4ZUAQA7Cg==) no-repeat 0 -41px;
56 padding-left:3px; 53 padding-left:3px;
57 margin:0px; 54 margin:0px;
58} 55}
59.ydlg .ydlg-hd-right { 56.ydlg .ydlg-hd-right {
60 /* background: url(../images/clipperz/basic-dialog/hd-sprite.gif) no-repeat right 0;*/ 57 /* background: url(../images/clipperz/basic-dialog/hd-sprite.gif) no-repeat right 0;*/
61 background: url(data:image/gif;charset=utf-8;base64,R0lGODlhAwB7AIABADMzZv///yH5BAEAAAEALAAAAAADAHsAAAITBGKpy+0Po5y0Houz3rz7D4ZUAQA7Cg==) no-repeat right 0; 58 background: url(data:image/gif;charset=utf-8;base64,R0lGODlhAwB7AIABADMzZv///yH5BAEAAAEALAAAAAADAHsAAAITBGKpy+0Po5y0Houz3rz7D4ZUAQA7Cg==) no-repeat right 0;
62 padding-right:3px; 59 padding-right:3px;
63} 60}
64.ydlg .ydlg-dlg-body { 61.ydlg .ydlg-dlg-body {
65 /*background:url(../images/clipperz/layout/gradient-bg.gif);*/ 62 /*background:url(../images/clipperz/layout/gradient-bg.gif);*/
66 background-color: white; 63 background-color: white;
67 border:1px solid #333366; 64 border:1px solid #333366;
68 border-top:0 none; 65 border-top:0 none;
69 padding:10px; 66 padding:10px;
70 overflow:hidden; 67 overflow:hidden;
71} 68}
72 69
73/* 70/*
74.ydlg .ydlg-dlg-body .ydlg-ft{ 71.ydlg .ydlg-dlg-body .ydlg-ft{
75 padding-top: 7px; 72 padding-top: 7px;
76 border-top: 1px dotted #333366; 73 border-top: 1px dotted #333366;
77} 74}
78*/ 75*/
79 76
80.ydlg .ydlg-close { 77.ydlg .ydlg-close {
81 position:absolute; 78 position:absolute;
82 top:4px; 79 top:4px;
83 right:4px; 80 right:4px;
84 z-index:6; 81 z-index:6;
85 height:15px; 82 height:15px;
86 width:15px; 83 width:15px;
87 margin:0; 84 margin:0;
88 padding:0; 85 padding:0;
89 line-height:1px; 86 line-height:1px;
90 font-size:1px; 87 font-size:1px;
91 background-repeat:no-repeat; 88 background-repeat:no-repeat;
92 cursor:pointer; 89 cursor:pointer;
93 visibility:inherit; 90 visibility:inherit;
94 /* background-image:url(../images/clipperz/basic-dialog/close.gif);*/ 91 /* background-image:url(../images/clipperz/basic-dialog/close.gif);*/
95 background-image:url(data:image/gif;charset=utf-8;base64,R0lGODlhDwAPANUAADk1bpeVs5+dub27z+Df6LGvxo2KqzIyZdfW4jk0brq4zNbU4cTD1ImGqVZSg/f2+Y+MraKgu9/e6NjX4qyqwjIyZtrZ5Pn5+mZij0pGenx4n0A7c7Oxx8C/0XZzm/39/Tw3cLCvxX57obe1yrCuxX16oP///zMzZjYxbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAPAA8AAAZ9wJNQSAgJKIuh8oTAoJ5PB2M5AEGvKMEQYcVeFUInqmSBoDyTwDNzIEAtJlPnY7oAngMSFBLvF6AGAlcdfRIJUBoUUB50fWpPDQtQE3EScQ93KBwnDk8BFwUJAQ8jTxsVJwxQmSisEUOCXk8iSwoZWBuvSycHAwYaDRyoQ0EAOwo=); 92 background-image:url(data:image/gif;charset=utf-8;base64,R0lGODlhDwAPANUAADk1bpeVs5+dub27z+Df6LGvxo2KqzIyZdfW4jk0brq4zNbU4cTD1ImGqVZSg/f2+Y+MraKgu9/e6NjX4qyqwjIyZtrZ5Pn5+mZij0pGenx4n0A7c7Oxx8C/0XZzm/39/Tw3cLCvxX57obe1yrCuxX16oP///zMzZjYxbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAPAA8AAAZ9wJNQSAgJKIuh8oTAoJ5PB2M5AEGvKMEQYcVeFUInqmSBoDyTwDNzIEAtJlPnY7oAngMSFBLvF6AGAlcdfRIJUBoUUB50fWpPDQtQE3EScQ93KBwnDk8BFwUJAQ8jTxsVJwxQmSisEUOCXk8iSwoZWBuvSycHAwYaDRyoQ0EAOwo=);
96} 93}
97 94
98/* @end */ 95/* @end */
99 96
100/* @group Message dialog */ 97/* @group Message dialog */
101 98
102div#mb-dlg div div div.ydlg-hd { 99div#mb-dlg div div div.ydlg-hd {
103 background-color: #35306b; 100 background-color: #35306b;
104} 101}
105 102
106div#mb-dlg div.ydlg-dlg-body { 103div#mb-dlg div.ydlg-dlg-body {
107 border-color: #333366; 104 border-color: #333366;
108} 105}
109 106
110div#mb-dlg div.ydlg-dlg-body span.ext-mb-text { 107div#mb-dlg div.ydlg-dlg-body span.ext-mb-text {
111 font-size: 10pt; 108 font-size: 10pt;
112 color: #999999; 109 color: #999999;
113} 110}
114 111
115div.ydlg-btns-center table tbody tr td { 112div.ydlg-btns-center table tbody tr td {
116 text-align: center; 113 text-align: center;
117} 114}
118 115
119/* @end */ 116/* @end */
120 117
121body .ybtn-left{ 118body .ybtn-left{
122 /* background:url(../images/default/basic-dialog/btn-sprite.gif) no-repeat 0 0;*/ 119 /* background:url(../images/default/basic-dialog/btn-sprite.gif) no-repeat 0 0;*/
123 background:url(data:image/gif;charset=utf-8;base64,R0lGODlhAwCTAIcAAAA8dBZNfiVXg0hukEpxk1V9okD/QGaHoGeIoGqLomyMpHqVqHuVqX2ZqoOEb4SGceWXAPiyMPizMPi0Nfi1Nfm0Nfi3O/m3Ovm3O/m4O+21R++1Sfm6Qfm6Qvq6Qfm9SPm9Sfq9Sfq+SfrAUPrAUfrBUPrDWPrEWPrEWfrHYfvHYfvIYPvKavzKafvPcvzOcfzOcvzRevzSefzSeo2eoaOutLG3tra9vb/Hyr/O27/O3P3Vgf3Vgv3Yif3bj/7dlf7fmu7crf3gm8DCycfJzsDP3dvXzdbY39Xf6Nrc4d3e4t3f5ODd1OLf1uTi2eTi2uXi2+bj3Obj3efk3ejl3ujl3+/o0vjt0//wz+Di6OPn6+nm4Orn4Oro4evo4evo4uvq4+vr5ezr5Ozr5ezr5u3q5u3s5e7t5u7t5+jq7+/u6Ovt8vDv6fDu6vDw6vDw6/Hw6vHw6/Hx7PPx7vLy7fLy7vPz7vT07/Dy9fT08PX18fX08vX18vb08vb28vb28/b29PP1+Pb3+vf4+fj49vj49/r6+fr6+vv7+vn8/f39/P7+/f7+/v7+/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAMAAAYALAAAAAADAJMAAAj/AA0sELCgQBEBOhgBUKQIwCFDAAoRAgAIEIA/fwD44QNAjx4AefIAuHMHgB07AOrUAUCHDgA5cgC8cQOATJgAOJocIFDDQAMBARAYQFKAwaIcAhD1AbCnDYA5ZQDE+QIAjhcAbLgAULMFAJoqAM5QAWBmCoAxUgCIiQIADBQAXZwAeMIEgJEbAWwMSBBAgQEAgB0JZkS4keFEiAUpDsQYj+M1kNNI1kI5i+UlmJNoPsJ5iGcioEOHHkQaMACBBGlYERBEBgAgrn+49uG6h2sermfMAPDiBYAWLACoWAHABAoAI0oAACECgIcOADJgAFCBQoANEQ48gOATqNArNBjIfwgiQIYQADJ+oPeBvgf6HehjAHABAwCLFgBSqABw4jgJ5SF8AAAHHABgwQUAUDABABJoEAAEDvDll2lYVNjDhYY1glgiignCWCCO4QHZGpKlQZkWlmWB2RKaJcHZEZ4NEZoSNEZgIwQ4mkahhRee6OOPQAYp5JAn2hgBjhCYFhAAOwo=) no-repeat 0 0; 120 background:url(data:image/gif;charset=utf-8;base64,R0lGODlhAwCTAIcAAAA8dBZNfiVXg0hukEpxk1V9okD/QGaHoGeIoGqLomyMpHqVqHuVqX2ZqoOEb4SGceWXAPiyMPizMPi0Nfi1Nfm0Nfi3O/m3Ovm3O/m4O+21R++1Sfm6Qfm6Qvq6Qfm9SPm9Sfq9Sfq+SfrAUPrAUfrBUPrDWPrEWPrEWfrHYfvHYfvIYPvKavzKafvPcvzOcfzOcvzRevzSefzSeo2eoaOutLG3tra9vb/Hyr/O27/O3P3Vgf3Vgv3Yif3bj/7dlf7fmu7crf3gm8DCycfJzsDP3dvXzdbY39Xf6Nrc4d3e4t3f5ODd1OLf1uTi2eTi2uXi2+bj3Obj3efk3ejl3ujl3+/o0vjt0//wz+Di6OPn6+nm4Orn4Oro4evo4evo4uvq4+vr5ezr5Ozr5ezr5u3q5u3s5e7t5u7t5+jq7+/u6Ovt8vDv6fDu6vDw6vDw6/Hw6vHw6/Hx7PPx7vLy7fLy7vPz7vT07/Dy9fT08PX18fX08vX18vb08vb28vb28/b29PP1+Pb3+vf4+fj49vj49/r6+fr6+vv7+vn8/f39/P7+/f7+/v7+/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAMAAAYALAAAAAADAJMAAAj/AA0sELCgQBEBOhgBUKQIwCFDAAoRAgAIEIA/fwD44QNAjx4AefIAuHMHgB07AOrUAUCHDgA5cgC8cQOATJgAOJocIFDDQAMBARAYQFKAwaIcAhD1AbCnDYA5ZQDE+QIAjhcAbLgAULMFAJoqAM5QAWBmCoAxUgCIiQIADBQAXZwAeMIEgJEbAWwMSBBAgQEAgB0JZkS4keFEiAUpDsQYj+M1kNNI1kI5i+UlmJNoPsJ5iGcioEOHHkQaMACBBGlYERBEBgAgrn+49uG6h2sermfMAPDiBYAWLACoWAHABAoAI0oAACECgIcOADJgAFCBQoANEQ48gOATqNArNBjIfwgiQIYQADJ+oPeBvgf6HehjAHABAwCLFgBSqABw4jgJ5SF8AAAHHABgwQUAUDABABJoEAAEDvDll2lYVNjDhYY1glgiignCWCCO4QHZGpKlQZkWlmWB2RKaJcHZEZ4NEZoSNEZgIwQ4mkahhRee6OOPQAYp5JAn2hgBjhCYFhAAOwo=) no-repeat 0 0;
124} 121}
125body .ybtn-right{ 122body .ybtn-right{
126 /* background:url(../images/default/basic-dialog/btn-sprite.gif) no-repeat 0 -21px;*/ 123 /* background:url(../images/default/basic-dialog/btn-sprite.gif) no-repeat 0 -21px;*/
127 background:url(data:image/gif;charset=utf-8;base64,R0lGODlhAwCTAIcAAAA8dBZNfiVXg0hukEpxk1V9okD/QGaHoGeIoGqLomyMpHqVqHuVqX2ZqoOEb4SGceWXAPiyMPizMPi0Nfi1Nfm0Nfi3O/m3Ovm3O/m4O+21R++1Sfm6Qfm6Qvq6Qfm9SPm9Sfq9Sfq+SfrAUPrAUfrBUPrDWPrEWPrEWfrHYfvHYfvIYPvKavzKafvPcvzOcfzOcvzRevzSefzSeo2eoaOutLG3tra9vb/Hyr/O27/O3P3Vgf3Vgv3Yif3bj/7dlf7fmu7crf3gm8DCycfJzsDP3dvXzdbY39Xf6Nrc4d3e4t3f5ODd1OLf1uTi2eTi2uXi2+bj3Obj3efk3ejl3ujl3+/o0vjt0//wz+Di6OPn6+nm4Orn4Oro4evo4evo4uvq4+vr5ezr5Ozr5ezr5u3q5u3s5e7t5u7t5+jq7+/u6Ovt8vDv6fDu6vDw6vDw6/Hw6vHw6/Hx7PPx7vLy7fLy7vPz7vT07/Dy9fT08PX18fX08vX18vb08vb28vb28/b29PP1+Pb3+vf4+fj49vj49/r6+fr6+vv7+vn8/f39/P7+/f7+/v7+/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAMAAAYALAAAAAADAJMAAAj/AA0sELCgQBEBOhgBUKQIwCFDAAoRAgAIEIA/fwD44QNAjx4AefIAuHMHgB07AOrUAUCHDgA5cgC8cQOATJgAOJocIFDDQAMBARAYQFKAwaIcAhD1AbCnDYA5ZQDE+QIAjhcAbLgAULMFAJoqAM5QAWBmCoAxUgCIiQIADBQAXZwAeMIEgJEbAWwMSBBAgQEAgB0JZkS4keFEiAUpDsQYj+M1kNNI1kI5i+UlmJNoPsJ5iGcioEOHHkQaMACBBGlYERBEBgAgrn+49uG6h2sermfMAPDiBYAWLACoWAHABAoAI0oAACECgIcOADJgAFCBQoANEQ48gOATqNArNBjIfwgiQIYQADJ+oPeBvgf6HehjAHABAwCLFgBSqABw4jgJ5SF8AAAHHABgwQUAUDABABJoEAAEDvDll2lYVNjDhYY1glgiignCWCCO4QHZGpKlQZkWlmWB2RKaJcHZEZ4NEZoSNEZgIwQ4mkahhRee6OOPQAYp5JAn2hgBjhCYFhAAOwo=) no-repeat 0 -21px; 124 background:url(data:image/gif;charset=utf-8;base64,R0lGODlhAwCTAIcAAAA8dBZNfiVXg0hukEpxk1V9okD/QGaHoGeIoGqLomyMpHqVqHuVqX2ZqoOEb4SGceWXAPiyMPizMPi0Nfi1Nfm0Nfi3O/m3Ovm3O/m4O+21R++1Sfm6Qfm6Qvq6Qfm9SPm9Sfq9Sfq+SfrAUPrAUfrBUPrDWPrEWPrEWfrHYfvHYfvIYPvKavzKafvPcvzOcfzOcvzRevzSefzSeo2eoaOutLG3tra9vb/Hyr/O27/O3P3Vgf3Vgv3Yif3bj/7dlf7fmu7crf3gm8DCycfJzsDP3dvXzdbY39Xf6Nrc4d3e4t3f5ODd1OLf1uTi2eTi2uXi2+bj3Obj3efk3ejl3ujl3+/o0vjt0//wz+Di6OPn6+nm4Orn4Oro4evo4evo4uvq4+vr5ezr5Ozr5ezr5u3q5u3s5e7t5u7t5+jq7+/u6Ovt8vDv6fDu6vDw6vDw6/Hw6vHw6/Hx7PPx7vLy7fLy7vPz7vT07/Dy9fT08PX18fX08vX18vb08vb28vb28/b29PP1+Pb3+vf4+fj49vj49/r6+fr6+vv7+vn8/f39/P7+/f7+/v7+/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAMAAAYALAAAAAADAJMAAAj/AA0sELCgQBEBOhgBUKQIwCFDAAoRAgAIEIA/fwD44QNAjx4AefIAuHMHgB07AOrUAUCHDgA5cgC8cQOATJgAOJocIFDDQAMBARAYQFKAwaIcAhD1AbCnDYA5ZQDE+QIAjhcAbLgAULMFAJoqAM5QAWBmCoAxUgCIiQIADBQAXZwAeMIEgJEbAWwMSBBAgQEAgB0JZkS4keFEiAUpDsQYj+M1kNNI1kI5i+UlmJNoPsJ5iGcioEOHHkQaMACBBGlYERBEBgAgrn+49uG6h2sermfMAPDiBYAWLACoWAHABAoAI0oAACECgIcOADJgAFCBQoANEQ48gOATqNArNBjIfwgiQIYQADJ+oPeBvgf6HehjAHABAwCLFgBSqABw4jgJ5SF8AAAHHABgwQUAUDABABJoEAAEDvDll2lYVNjDhYY1glgiignCWCCO4QHZGpKlQZkWlmWB2RKaJcHZEZ4NEZoSNEZgIwQ4mkahhRee6OOPQAYp5JAn2hgBjhCYFhAAOwo=) no-repeat 0 -21px;
128} 125}
129body .ybtn-center{ 126body .ybtn-center{
130 /* background:url(../images/default/basic-dialog/btn-sprite.gif) repeat-x 0 -42px;*/ 127 /* background:url(../images/default/basic-dialog/btn-sprite.gif) repeat-x 0 -42px;*/
131 background:url(data:image/gif;charset=utf-8;base64,R0lGODlhAwCTAIcAAAA8dBZNfiVXg0hukEpxk1V9okD/QGaHoGeIoGqLomyMpHqVqHuVqX2ZqoOEb4SGceWXAPiyMPizMPi0Nfi1Nfm0Nfi3O/m3Ovm3O/m4O+21R++1Sfm6Qfm6Qvq6Qfm9SPm9Sfq9Sfq+SfrAUPrAUfrBUPrDWPrEWPrEWfrHYfvHYfvIYPvKavzKafvPcvzOcfzOcvzRevzSefzSeo2eoaOutLG3tra9vb/Hyr/O27/O3P3Vgf3Vgv3Yif3bj/7dlf7fmu7crf3gm8DCycfJzsDP3dvXzdbY39Xf6Nrc4d3e4t3f5ODd1OLf1uTi2eTi2uXi2+bj3Obj3efk3ejl3ujl3+/o0vjt0//wz+Di6OPn6+nm4Orn4Oro4evo4evo4uvq4+vr5ezr5Ozr5ezr5u3q5u3s5e7t5u7t5+jq7+/u6Ovt8vDv6fDu6vDw6vDw6/Hw6vHw6/Hx7PPx7vLy7fLy7vPz7vT07/Dy9fT08PX18fX08vX18vb08vb28vb28/b29PP1+Pb3+vf4+fj49vj49/r6+fr6+vv7+vn8/f39/P7+/f7+/v7+/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAMAAAYALAAAAAADAJMAAAj/AA0sELCgQBEBOhgBUKQIwCFDAAoRAgAIEIA/fwD44QNAjx4AefIAuHMHgB07AOrUAUCHDgA5cgC8cQOATJgAOJocIFDDQAMBARAYQFKAwaIcAhD1AbCnDYA5ZQDE+QIAjhcAbLgAULMFAJoqAM5QAWBmCoAxUgCIiQIADBQAXZwAeMIEgJEbAWwMSBBAgQEAgB0JZkS4keFEiAUpDsQYj+M1kNNI1kI5i+UlmJNoPsJ5iGcioEOHHkQaMACBBGlYERBEBgAgrn+49uG6h2sermfMAPDiBYAWLACoWAHABAoAI0oAACECgIcOADJgAFCBQoANEQ48gOATqNArNBjIfwgiQIYQADJ+oPeBvgf6HehjAHABAwCLFgBSqABw4jgJ5SF8AAAHHABgwQUAUDABABJoEAAEDvDll2lYVNjDhYY1glgiignCWCCO4QHZGpKlQZkWlmWB2RKaJcHZEZ4NEZoSNEZgIwQ4mkahhRee6OOPQAYp5JAn2hgBjhCYFhAAOwo=) repeat-x 0 -42px; 128 background:url(data:image/gif;charset=utf-8;base64,R0lGODlhAwCTAIcAAAA8dBZNfiVXg0hukEpxk1V9okD/QGaHoGeIoGqLomyMpHqVqHuVqX2ZqoOEb4SGceWXAPiyMPizMPi0Nfi1Nfm0Nfi3O/m3Ovm3O/m4O+21R++1Sfm6Qfm6Qvq6Qfm9SPm9Sfq9Sfq+SfrAUPrAUfrBUPrDWPrEWPrEWfrHYfvHYfvIYPvKavzKafvPcvzOcfzOcvzRevzSefzSeo2eoaOutLG3tra9vb/Hyr/O27/O3P3Vgf3Vgv3Yif3bj/7dlf7fmu7crf3gm8DCycfJzsDP3dvXzdbY39Xf6Nrc4d3e4t3f5ODd1OLf1uTi2eTi2uXi2+bj3Obj3efk3ejl3ujl3+/o0vjt0//wz+Di6OPn6+nm4Orn4Oro4evo4evo4uvq4+vr5ezr5Ozr5ezr5u3q5u3s5e7t5u7t5+jq7+/u6Ovt8vDv6fDu6vDw6vDw6/Hw6vHw6/Hx7PPx7vLy7fLy7vPz7vT07/Dy9fT08PX18fX08vX18vb08vb28vb28/b29PP1+Pb3+vf4+fj49vj49/r6+fr6+vv7+vn8/f39/P7+/f7+/v7+/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAMAAAYALAAAAAADAJMAAAj/AA0sELCgQBEBOhgBUKQIwCFDAAoRAgAIEIA/fwD44QNAjx4AefIAuHMHgB07AOrUAUCHDgA5cgC8cQOATJgAOJocIFDDQAMBARAYQFKAwaIcAhD1AbCnDYA5ZQDE+QIAjhcAbLgAULMFAJoqAM5QAWBmCoAxUgCIiQIADBQAXZwAeMIEgJEbAWwMSBBAgQEAgB0JZkS4keFEiAUpDsQYj+M1kNNI1kI5i+UlmJNoPsJ5iGcioEOHHkQaMACBBGlYERBEBgAgrn+49uG6h2sermfMAPDiBYAWLACoWAHABAoAI0oAACECgIcOADJgAFCBQoANEQ48gOATqNArNBjIfwgiQIYQADJ+oPeBvgf6HehjAHABAwCLFgBSqABw4jgJ5SF8AAAHHABgwQUAUDABABJoEAAEDvDll2lYVNjDhYY1glgiignCWCCO4QHZGpKlQZkWlmWB2RKaJcHZEZ4NEZoSNEZgIwQ4mkahhRee6OOPQAYp5JAn2hgBjhCYFhAAOwo=) repeat-x 0 -42px;
132} 129}
133 130
134.ext-el-mask { 131.ext-el-mask {
135 zoom:100%; 132 zoom:100%;
136} 133}
137 134
138 135
139body.masked textarea { 136body.masked textarea {
140 overflow: hidden; 137 overflow: hidden;
141} 138}
diff --git a/frontend/beta/css/yui-extensions/basic-dialog.css b/frontend/beta/css/yui-extensions/basic-dialog.css
index f1b6375..bad0679 100644
--- a/frontend/beta/css/yui-extensions/basic-dialog.css
+++ b/frontend/beta/css/yui-extensions/basic-dialog.css
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29.ydlg-proxy { 26.ydlg-proxy {
30 background-image: url(../images/default/gradient-bg.gif); 27 background-image: url(../images/default/gradient-bg.gif);
31 background-color:#c3daf9; 28 background-color:#c3daf9;
32 border:1px solid #6593cf; 29 border:1px solid #6593cf;
33 z-index:10001; 30 z-index:10001;
34 overflow:hidden; 31 overflow:hidden;
35 position:absolute; 32 position:absolute;
36 left:0;top:0; 33 left:0;top:0;
37} 34}
38.ydlg-shadow{ 35.ydlg-shadow{
39 background:#aaaaaa; 36 background:#aaaaaa;
40 position:absolute; 37 position:absolute;
41 left:0;top:0; 38 left:0;top:0;
42} 39}
43.ydlg-focus{ 40.ydlg-focus{
44 -moz-outline:0 none; 41 -moz-outline:0 none;
45 outline:0 none; 42 outline:0 none;
46 width:0; 43 width:0;
47 height:0; 44 height:0;
48 overflow:hidden; 45 overflow:hidden;
49 position:absolute; 46 position:absolute;
50 top:0; 47 top:0;
51 left:0; 48 left:0;
52} 49}
53.ydlg-mask{ 50.ydlg-mask{
54 z-index:10000; 51 z-index:10000;
55 display:none; 52 display:none;
56 position:absolute; 53 position:absolute;
57 top:0; 54 top:0;
58 left:0; 55 left:0;
59 -moz-opacity: 0.5; 56 -moz-opacity: 0.5;
60 opacity:.50; 57 opacity:.50;
61 filter: alpha(opacity=50); 58 filter: alpha(opacity=50);
62 background-color:#CCC; 59 background-color:#CCC;
63} 60}
64body.masked{ 61body.masked{
65} 62}
66body.masked select { 63body.masked select {
67 visibility:hidden; 64 visibility:hidden;
68} 65}
69body.masked .ydlg select { 66body.masked .ydlg select {
70 visibility:visible; 67 visibility:visible;
71} 68}
72.ydlg{ 69.ydlg{
73 z-index:10001; 70 z-index:10001;
74 overflow:hidden; 71 overflow:hidden;
75 position:absolute; 72 position:absolute;
76 left:300;top:0; 73 left:300;top:0;
77} 74}
78.yresizable-proxy{ 75.yresizable-proxy{
79 z-index:10002; 76 z-index:10002;
80} 77}
81.ydlg .ydlg-hd { 78.ydlg .ydlg-hd {
82 background: url(../images/default/basic-dialog/hd-sprite.gif) repeat-x 0 -82px; 79 background: url(../images/default/basic-dialog/hd-sprite.gif) repeat-x 0 -82px;
83 background-color:navy; 80 background-color:navy;
84 color:#ffffff; 81 color:#ffffff;
85 font:bold 12px "sans serif", tahoma, verdana, helvetica; 82 font:bold 12px "sans serif", tahoma, verdana, helvetica;
86 overflow:hidden; 83 overflow:hidden;
87 padding:5px; 84 padding:5px;
88} 85}
89.ydlg .ydlg-hd-left { 86.ydlg .ydlg-hd-left {
90 background: url(../images/default/basic-dialog/hd-sprite.gif) no-repeat 0 -41px; 87 background: url(../images/default/basic-dialog/hd-sprite.gif) no-repeat 0 -41px;
91 padding-left:3px; 88 padding-left:3px;
92 margin:0px; 89 margin:0px;
93} 90}
94.ydlg .ydlg-hd-right { 91.ydlg .ydlg-hd-right {
95 background: url(../images/default/basic-dialog/hd-sprite.gif) no-repeat right 0; 92 background: url(../images/default/basic-dialog/hd-sprite.gif) no-repeat right 0;
96 padding-right:3px; 93 padding-right:3px;
97} 94}
98.ydlg .ydlg-dlg-body{ 95.ydlg .ydlg-dlg-body{
99 background:url(../images/default/layout/gradient-bg.gif); 96 background:url(../images/default/layout/gradient-bg.gif);
100 border:1px solid #6593cf; 97 border:1px solid #6593cf;
101 border-top:0 none; 98 border-top:0 none;
102 padding:10px; 99 padding:10px;
103 overflow:hidden; 100 overflow:hidden;
104} 101}
105.ydlg .ydlg-bd{ 102.ydlg .ydlg-bd{
106 overflow:hidden; 103 overflow:hidden;
107} 104}
108.ydlg .ydlg-ft{ 105.ydlg .ydlg-ft{
109 overflow:hidden; 106 overflow:hidden;
110 padding:5px; 107 padding:5px;
111 padding-bottom:0; 108 padding-bottom:0;
112} 109}
113.ydlg .yui-ext-tabbody{ 110.ydlg .yui-ext-tabbody{
114 background:white; 111 background:white;
115 overflow:auto; 112 overflow:auto;
116} 113}
117.ydlg .ytabs-top .yui-ext-tabbody{ 114.ydlg .ytabs-top .yui-ext-tabbody{
118 border:1px solid #6593cf; 115 border:1px solid #6593cf;
119 border-top:0 none; 116 border-top:0 none;
120} 117}
121.ydlg .ytabs-bottom .yui-ext-tabbody{ 118.ydlg .ytabs-bottom .yui-ext-tabbody{
122 border:1px solid #6593cf; 119 border:1px solid #6593cf;
123 border-bottom:0 none; 120 border-bottom:0 none;
124} 121}
125.ydlg .ylayout-container .yui-ext-tabbody{ 122.ydlg .ylayout-container .yui-ext-tabbody{
126 border:0 none; 123 border:0 none;
127} 124}
128.ydlg .inner-tab{ 125.ydlg .inner-tab{
129 margin:5px; 126 margin:5px;
130} 127}
131.ydlg .ydlg-ft .ybtn{ 128.ydlg .ydlg-ft .ybtn{
132 margin-right:5px; 129 margin-right:5px;
133 float:right; 130 float:right;
134 clear:none; 131 clear:none;
135} 132}
136.ydlg .ydlg-ft .ydlg-btns td { 133.ydlg .ydlg-ft .ydlg-btns td {
137 border:0; 134 border:0;
138 padding:0; 135 padding:0;
139} 136}
140.ydlg .ydlg-ft .ydlg-btns-right table{ 137.ydlg .ydlg-ft .ydlg-btns-right table{
141 float:right; 138 float:right;
142 clear:none; 139 clear:none;
143} 140}
144.ydlg .ydlg-ft .ydlg-btns-left table{ 141.ydlg .ydlg-ft .ydlg-btns-left table{
145 float:left; 142 float:left;
146 clear:none; 143 clear:none;
147} 144}
148.ydlg .ydlg-ft .ydlg-btns-center{ 145.ydlg .ydlg-ft .ydlg-btns-center{
149 text-align:center; /*ie*/ 146 text-align:center; /*ie*/
150} 147}
151.ydlg .ydlg-ft .ydlg-btns-center table{ 148.ydlg .ydlg-ft .ydlg-btns-center table{
152 margin:0 auto; /*everyone else*/ 149 margin:0 auto; /*everyone else*/
diff --git a/frontend/beta/css/yui-extensions/button.css b/frontend/beta/css/yui-extensions/button.css
index ee2d86f..ad1b2fc 100644
--- a/frontend/beta/css/yui-extensions/button.css
+++ b/frontend/beta/css/yui-extensions/button.css
@@ -1,86 +1,83 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29.ybtn{ 26.ybtn{
30 font:normal 11px arial, tahoma, verdana, helvetica; 27 font:normal 11px arial, tahoma, verdana, helvetica;
31 cursor:pointer; 28 cursor:pointer;
32 white-space: nowrap; 29 white-space: nowrap;
33} 30}
34.ybtn-left, .ybtn-right{ 31.ybtn-left, .ybtn-right{
35 font-size:1px; 32 font-size:1px;
36 line-height:1px; 33 line-height:1px;
37} 34}
38.ybtn-left{ 35.ybtn-left{
39 width:3px; 36 width:3px;
40 height:21px; 37 height:21px;
41 background:url(../images/default/basic-dialog/btn-sprite.gif) no-repeat 0 0; 38 background:url(../images/default/basic-dialog/btn-sprite.gif) no-repeat 0 0;
42} 39}
43.ybtn-right{ 40.ybtn-right{
44 width:3px; 41 width:3px;
45 height:21px; 42 height:21px;
46 background:url(../images/default/basic-dialog/btn-sprite.gif) no-repeat 0 -21px; 43 background:url(../images/default/basic-dialog/btn-sprite.gif) no-repeat 0 -21px;
47} 44}
48.ybtn-focus{ 45.ybtn-focus{
49 text-decoration:none !important; 46 text-decoration:none !important;
50 color:black !important; 47 color:black !important;
51 display: -moz-inline-block; 48 display: -moz-inline-block;
52 display:inline-block; 49 display:inline-block;
53 width:auto; 50 width:auto;
54 position:relative; 51 position:relative;
55 white-space: nowrap; 52 white-space: nowrap;
56} 53}
57.ybtn-center{ 54.ybtn-center{
58 background:url(../images/default/basic-dialog/btn-sprite.gif) repeat-x 0 -42px; 55 background:url(../images/default/basic-dialog/btn-sprite.gif) repeat-x 0 -42px;
59 font:normal 11px "san serif",tahoma,verdana,helvetica; 56 font:normal 11px "san serif",tahoma,verdana,helvetica;
60 vertical-align: middle; 57 vertical-align: middle;
61 text-align:center; 58 text-align:center;
62 padding:0 5px; 59 padding:0 5px;
63 cursor:pointer; 60 cursor:pointer;
64 white-space:nowrap; 61 white-space:nowrap;
65 -moz-user-select: none; 62 -moz-user-select: none;
66 -khtml-user-select: none; 63 -khtml-user-select: none;
67} 64}
68.ybtn-over .ybtn-left{ 65.ybtn-over .ybtn-left{
69 background-position:0 -63px; 66 background-position:0 -63px;
70} 67}
71.ybtn-over .ybtn-right{ 68.ybtn-over .ybtn-right{
72 background-position:0 -84px; 69 background-position:0 -84px;
73} 70}
74.ybtn-over .ybtn-center{ 71.ybtn-over .ybtn-center{
75 background-position:0 -105px; 72 background-position:0 -105px;
76} 73}
77.ybtn-click .ybtn-center{ 74.ybtn-click .ybtn-center{
78 background-position:0 -126px; 75 background-position:0 -126px;
79} 76}
80.ybtn-disabled{ 77.ybtn-disabled{
81 cursor:default; 78 cursor:default;
82} 79}
83.ybtn-disabled .ybtn-center{ 80.ybtn-disabled .ybtn-center{
84 color:gray; 81 color:gray;
85 cursor:default; 82 cursor:default;
86} 83}
diff --git a/frontend/beta/css/yui-extensions/core.css b/frontend/beta/css/yui-extensions/core.css
index 3cd8b6e..fab4e47 100644
--- a/frontend/beta/css/yui-extensions/core.css
+++ b/frontend/beta/css/yui-extensions/core.css
@@ -1,53 +1,50 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29.ext-el-mask { 26.ext-el-mask {
30 z-index:20000; 27 z-index:20000;
31 position:absolute; 28 position:absolute;
32 top:0; 29 top:0;
33 left:0; 30 left:0;
34 -moz-opacity: 0.5; 31 -moz-opacity: 0.5;
35 opacity:.50; 32 opacity:.50;
36 filter: alpha(opacity=50); 33 filter: alpha(opacity=50);
37 background-color:#CCC; 34 background-color:#CCC;
38 width:100%; 35 width:100%;
39 height:100%; 36 height:100%;
40 zoom:1; 37 zoom:1;
41} 38}
42.ext-masked { 39.ext-masked {
43 overflow:hidden !important; 40 overflow:hidden !important;
44} 41}
45.ext-masked select,.ext-masked object,.ext-masked embed{ 42.ext-masked select,.ext-masked object,.ext-masked embed{
46 visibility:hidden; 43 visibility:hidden;
47} 44}
48.ylayer-shadow{ 45.ylayer-shadow{
49 background:#cccccc; 46 background:#cccccc;
50 opacity:.3; 47 opacity:.3;
51 -moz-opacity:.3; 48 -moz-opacity:.3;
52 filter: alpha(opacity=30); 49 filter: alpha(opacity=30);
53} \ No newline at end of file 50} \ No newline at end of file
diff --git a/frontend/beta/css/yui-extensions/dd.css b/frontend/beta/css/yui-extensions/dd.css
index ac2ba40..d4413e5 100644
--- a/frontend/beta/css/yui-extensions/dd.css
+++ b/frontend/beta/css/yui-extensions/dd.css
@@ -1,81 +1,78 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29.ydd-drag-proxy{ 26.ydd-drag-proxy{
30 position:absolute; 27 position:absolute;
31 left:0;top:0; 28 left:0;top:0;
32 visibility:hidden; 29 visibility:hidden;
33 z-index:15000; 30 z-index:15000;
34} 31}
35.ydd-drag-ghost{ 32.ydd-drag-ghost{
36 color: black; 33 color: black;
37 font: normal 11px arial, helvetica, sans-serif; 34 font: normal 11px arial, helvetica, sans-serif;
38 -moz-opacity: 0.85; 35 -moz-opacity: 0.85;
39 opacity:.85; 36 opacity:.85;
40 filter: alpha(opacity=85); 37 filter: alpha(opacity=85);
41 border-top:1px solid #dddddd; 38 border-top:1px solid #dddddd;
42 border-left:1px solid #dddddd; 39 border-left:1px solid #dddddd;
43 border-right:1px solid #bbbbbb; 40 border-right:1px solid #bbbbbb;
44 border-bottom:1px solid #bbbbbb; 41 border-bottom:1px solid #bbbbbb;
45 padding:3px; 42 padding:3px;
46 padding-left:20px; 43 padding-left:20px;
47 background-color:white; 44 background-color:white;
48 white-space:nowrap; 45 white-space:nowrap;
49} 46}
50.ydd-drag-repair .ydd-drag-ghost{ 47.ydd-drag-repair .ydd-drag-ghost{
51 -moz-opacity: 0.4; 48 -moz-opacity: 0.4;
52 opacity:.4; 49 opacity:.4;
53 filter: alpha(opacity=40); 50 filter: alpha(opacity=40);
54 border:0 none; 51 border:0 none;
55 padding:0; 52 padding:0;
56 background-color:transparent; 53 background-color:transparent;
57} 54}
58.ydd-drag-repair .ydd-drop-icon{ 55.ydd-drag-repair .ydd-drop-icon{
59 visibility:hidden; 56 visibility:hidden;
60} 57}
61.ydd-drop-icon{ 58.ydd-drop-icon{
62 position:absolute; 59 position:absolute;
63 top:3px; 60 top:3px;
64 left:3px; 61 left:3px;
65 display:block; 62 display:block;
66 width:16px; 63 width:16px;
67 height:16px; 64 height:16px;
68 background-color:transparent; 65 background-color:transparent;
69 background-position: center; 66 background-position: center;
70 background-repeat: no-repeat; 67 background-repeat: no-repeat;
71 z-index:1; 68 z-index:1;
72} 69}
73.ydd-drop-nodrop .ydd-drop-icon{ 70.ydd-drop-nodrop .ydd-drop-icon{
74 background-image: url(../images/default/dd/drop-no.gif); 71 background-image: url(../images/default/dd/drop-no.gif);
75} 72}
76.ydd-drop-ok .ydd-drop-icon{ 73.ydd-drop-ok .ydd-drop-icon{
77 background-image: url(../images/default/dd/drop-yes.gif); 74 background-image: url(../images/default/dd/drop-yes.gif);
78} 75}
79.ydd-drop-ok-add .ydd-drop-icon{ 76.ydd-drop-ok-add .ydd-drop-icon{
80 background-image: url(../images/default/dd/drop-add.gif); 77 background-image: url(../images/default/dd/drop-add.gif);
81} 78}
diff --git a/frontend/beta/css/yui-extensions/grid.css b/frontend/beta/css/yui-extensions/grid.css
index 01be8d5..37066ce 100644
--- a/frontend/beta/css/yui-extensions/grid.css
+++ b/frontend/beta/css/yui-extensions/grid.css
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29.ygrid-cell-text { 26.ygrid-cell-text {
30 display: block; 27 display: block;
31 overflow: hidden; 28 overflow: hidden;
32 padding: 3px 5px; 29 padding: 3px 5px;
33 white-space: nowrap; 30 white-space: nowrap;
34} 31}
35.ygrid-col{ 32.ygrid-col{
36 cursor: default; 33 cursor: default;
37 height:21px !important; 34 height:21px !important;
38 box-sizing: border-box; 35 box-sizing: border-box;
39 -moz-box-sizing: border-box; 36 -moz-box-sizing: border-box;
40 position:absolute; 37 position:absolute;
41 display:block; 38 display:block;
42 -moz-outline: none; 39 -moz-outline: none;
43 -moz-user-focus: normal; 40 -moz-user-focus: normal;
44 overflow: hidden; 41 overflow: hidden;
45 border-left: 1px solid #f1efe2; 42 border-left: 1px solid #f1efe2;
46} 43}
47.yeditgrid .ygrid-col{ 44.yeditgrid .ygrid-col{
48 -moz-outline: normal; 45 -moz-outline: normal;
49} 46}
50.ygrid-col, .ygrid-hd { 47.ygrid-col, .ygrid-hd {
51 -o-text-overflow: ellipsis; 48 -o-text-overflow: ellipsis;
52 text-overflow: ellipsis; 49 text-overflow: ellipsis;
53} 50}
54.ygrid-col-0{ 51.ygrid-col-0{
55 border-left: 0; 52 border-left: 0;
56} 53}
57.ygrid-col-last{ 54.ygrid-col-last{
58 border-right: 1px solid #f1efe2; 55 border-right: 1px solid #f1efe2;
59} 56}
60.ygrid-editor{ 57.ygrid-editor{
61 box-sizing: border-box; 58 box-sizing: border-box;
62 -moz-box-sizing: border-box; 59 -moz-box-sizing: border-box;
63 position:absolute; 60 position:absolute;
64 visibility:hidden; 61 visibility:hidden;
65 font: normal 8pt arial; 62 font: normal 8pt arial;
66 border: 1px solid #afbdc9; 63 border: 1px solid #afbdc9;
67 z-index:10; 64 z-index:10;
68} 65}
69.ygrid-editor input{ 66.ygrid-editor input{
70 font: normal 8pt arial; 67 font: normal 8pt arial;
71 border: 0; 68 border: 0;
72 padding-top:2px; 69 padding-top:2px;
73 padding-left:3px; 70 padding-left:3px;
74} 71}
75.ygrid-editor-container{ 72.ygrid-editor-container{
76 overflow:hidden; 73 overflow:hidden;
77 display:block; 74 display:block;
78 background-color:white; 75 background-color:white;
79} 76}
80.ygrid-editor .pick-button{ 77.ygrid-editor .pick-button{
81 width:15px; 78 width:15px;
82 height:20px; 79 height:20px;
83 position:absolute; 80 position:absolute;
84 display:block; 81 display:block;
85 right:0; 82 right:0;
86 top:0; 83 top:0;
87 z-index:2; 84 z-index:2;
88 background-image: url(../images/default/grid/pick-button.gif); 85 background-image: url(../images/default/grid/pick-button.gif);
89 background-repeat: no-repeat; 86 background-repeat: no-repeat;
90} 87}
91.ygrid-editor-invalid{ 88.ygrid-editor-invalid{
92 background-image: url(../images/default/grid/invalid_line.gif); 89 background-image: url(../images/default/grid/invalid_line.gif);
93 background-repeat: repeat-x; 90 background-repeat: repeat-x;
94 background-position: bottom; 91 background-position: bottom;
95 border: 1px solid #afbdc9; 92 border: 1px solid #afbdc9;
96} 93}
97.ygrid-checkbox-editor{ 94.ygrid-checkbox-editor{
98 text-align: center; 95 text-align: center;
99 overflow:hidden; 96 overflow:hidden;
100 display:block; 97 display:block;
101 background-color:white; 98 background-color:white;
102} 99}
103.ygrid-checkbox-editor input{ 100.ygrid-checkbox-editor input{
104 margin-top:3px; 101 margin-top:3px;
105 height:13px; 102 height:13px;
106 width:13px; 103 width:13px;
107} 104}
108select.ygrid-editor{ 105select.ygrid-editor{
109 padding: 0; 106 padding: 0;
110 -moz-outline: none; 107 -moz-outline: none;
111 border: 1px solid #afbdc9; 108 border: 1px solid #afbdc9;
112} 109}
113.ygrid-num-editor{ 110.ygrid-num-editor{
114 text-align:right; 111 text-align:right;
115 padding-top:2px; 112 padding-top:2px;
116 padding-left:3px; 113 padding-left:3px;
117} 114}
118.ygrid-text-editor{ 115.ygrid-text-editor{
119 padding-top:2px; 116 padding-top:2px;
120 padding-left:3px; 117 padding-left:3px;
121} 118}
122.ygrid-hd{ 119.ygrid-hd{
123 font: normal 8pt arial; 120 font: normal 8pt arial;
124 background-color: #ebeadb; 121 background-color: #ebeadb;
125 box-sizing: border-box; 122 box-sizing: border-box;
126 -moz-box-sizing: border-box; 123 -moz-box-sizing: border-box;
127 display: block; 124 display: block;
128 position: absolute; 125 position: absolute;
129 overflow:hidden; 126 overflow:hidden;
130} 127}
131.ygrid-column-sizer { 128.ygrid-column-sizer {
132 width:1px; 129 width:1px;
133 border-right:1px dashed #6593cf; 130 border-right:1px dashed #6593cf;
134 background:none; 131 background:none;
135 cursor: col-resize; 132 cursor: col-resize;
136} 133}
137.ygrid-drag-proxy{ 134.ygrid-drag-proxy{
138 width:150px; 135 width:150px;
139 height:24px; 136 height:24px;
140 background-color:#3366cc; 137 background-color:#3366cc;
141 border: 1px solid #002266; 138 border: 1px solid #002266;
142 position:absolute; 139 position:absolute;
143 visibility:hidden; 140 visibility:hidden;
144 z-index:10000; 141 z-index:10000;
145} 142}
146.ygrid-drag-text{ 143.ygrid-drag-text{
147 font: normal 8pt arial; 144 font: normal 8pt arial;
148 color:white; 145 color:white;
149 position:absolute; 146 position:absolute;
150 top:0; 147 top:0;
151 left:26px; 148 left:26px;
152 padding:3px; 149 padding:3px;
diff --git a/frontend/beta/css/yui-extensions/inline-editor.css b/frontend/beta/css/yui-extensions/inline-editor.css
index 1ef560a..1ccaaf2 100644
--- a/frontend/beta/css/yui-extensions/inline-editor.css
+++ b/frontend/beta/css/yui-extensions/inline-editor.css
@@ -1,60 +1,57 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29.yinline-editor { 26.yinline-editor {
30 border: 1px solid #a3bac9; 27 border: 1px solid #a3bac9;
31 font: normal 11px arial,helvetica,sans-serif; 28 font: normal 11px arial,helvetica,sans-serif;
32 left: 0; 29 left: 0;
33 overflow: hidden; 30 overflow: hidden;
34 padding: 1px 0 0 1px; 31 padding: 1px 0 0 1px;
35 position: absolute; 32 position: absolute;
36 top: 0; 33 top: 0;
37} 34}
38.yinline-editor-multiline { 35.yinline-editor-multiline {
39 overflow: hidden; 36 overflow: hidden;
40 padding: 0; 37 padding: 0;
41 white-space: nowrap; 38 white-space: nowrap;
42} 39}
43.yinline-editor-sizer { 40.yinline-editor-sizer {
44 font: normal 11px arial,helvetica,sans-serif; 41 font: normal 11px arial,helvetica,sans-serif;
45 left: -1000px; 42 left: -1000px;
46 padding: 3px; 43 padding: 3px;
47 padding-right: 6px; 44 padding-right: 6px;
48 position: absolute; 45 position: absolute;
49 top: -1000px; 46 top: -1000px;
50 visibility: hidden; 47 visibility: hidden;
51 white-space: nowrap; 48 white-space: nowrap;
52} 49}
53.yinline-editor-wrap { 50.yinline-editor-wrap {
54 color: white; 51 color: white;
55 overflow: auto; 52 overflow: auto;
56 position: absolute; 53 position: absolute;
57 top: 0; 54 top: 0;
58 visibility: hidden; 55 visibility: hidden;
59 z-index: 15002; 56 z-index: 15002;
60} 57}
diff --git a/frontend/beta/css/yui-extensions/layout.css b/frontend/beta/css/yui-extensions/layout.css
index 58456ac..0c0feee 100644
--- a/frontend/beta/css/yui-extensions/layout.css
+++ b/frontend/beta/css/yui-extensions/layout.css
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29.ylayout-container{ 26.ylayout-container{
30 width:100%; 27 width:100%;
31 height:100%; 28 height:100%;
32 overflow:hidden; 29 overflow:hidden;
33 background-color:#c3daf9; 30 background-color:#c3daf9;
34} 31}
35.ylayout-collapsed{ 32.ylayout-collapsed{
36 position:absolute; 33 position:absolute;
37 left:-10000px; 34 left:-10000px;
38 top:-10000px; 35 top:-10000px;
39 visibility:hidden; 36 visibility:hidden;
40 background-color:#c3daf9; 37 background-color:#c3daf9;
41 width:20px; 38 width:20px;
42 height:20px; 39 height:20px;
43 overflow:hidden; 40 overflow:hidden;
44 border:1px solid #98c0f4; 41 border:1px solid #98c0f4;
45 z-index:20; 42 z-index:20;
46} 43}
47.ylayout-collapsed-over{ 44.ylayout-collapsed-over{
48 cursor:pointer; 45 cursor:pointer;
49 background-color:#d9e8fb; 46 background-color:#d9e8fb;
50} 47}
51.ylayout-collapsed-west .ylayout-tools-button{ 48.ylayout-collapsed-west .ylayout-tools-button{
52 float:right; 49 float:right;
53} 50}
54.ylayout-collapsed-east .ylayout-tools-button{ 51.ylayout-collapsed-east .ylayout-tools-button{
55 float:left; 52 float:left;
56} 53}
57.ylayout-collapsed-north, .ylayout-collapsed-south{ 54.ylayout-collapsed-north, .ylayout-collapsed-south{
58 text-align:right; 55 text-align:right;
59} 56}
60.ylayout-collapsed .ylayout-tools-button{ 57.ylayout-collapsed .ylayout-tools-button{
61 margin:2px; 58 margin:2px;
62 width:12px; 59 width:12px;
63 text-align:center; 60 text-align:center;
64} 61}
65.ylayout-inactive-content{ 62.ylayout-inactive-content{
66 position:absolute; 63 position:absolute;
67 left:-10000px; 64 left:-10000px;
68 top:-10000px; 65 top:-10000px;
69 visibility:hidden; 66 visibility:hidden;
70} 67}
71.ylayout-active-content{ 68.ylayout-active-content{
72 visibility:visible; 69 visibility:visible;
73} 70}
74.ylayout-panel{ 71.ylayout-panel{
75 position:absolute;border:1px solid #98c0f4;overflow:hidden;background-color:white; 72 position:absolute;border:1px solid #98c0f4;overflow:hidden;background-color:white;
76} 73}
77.ylayout-panel-east, .ylayout-panel-west { 74.ylayout-panel-east, .ylayout-panel-west {
78 z-index:10; 75 z-index:10;
79} 76}
80.ylayout-panel-north, .ylayout-panel-south { 77.ylayout-panel-north, .ylayout-panel-south {
81 z-index:11; 78 z-index:11;
82} 79}
83.ylayout-collapsed-north, .ylayout-collapsed-south, .ylayout-collapsed-east, .ylayout-collapsed-west { 80.ylayout-collapsed-north, .ylayout-collapsed-south, .ylayout-collapsed-east, .ylayout-collapsed-west {
84 z-index:12; 81 z-index:12;
85} 82}
86.ylayout-panel-body{ 83.ylayout-panel-body{
87 overflow:hidden; 84 overflow:hidden;
88} 85}
89.ylayout-grid-wrapper{ 86.ylayout-grid-wrapper{
90 87
91} 88}
92.ylayout-split{ 89.ylayout-split{
93 position:absolute; 90 position:absolute;
94 height:5px; 91 height:5px;
95 width:5px; 92 width:5px;
96 line-height:1px; 93 line-height:1px;
97 font-size:1px; 94 font-size:1px;
98 z-index:3; 95 z-index:3;
99 background-color:#c3daf9; 96 background-color:#c3daf9;
100} 97}
101.ylayout-panel-hd{ 98.ylayout-panel-hd{
102 background-image: url(../images/default/layout/panel-title-light-bg.gif); 99 background-image: url(../images/default/layout/panel-title-light-bg.gif);
103 color: black; 100 color: black;
104 border-bottom:1px solid #98c0f4; 101 border-bottom:1px solid #98c0f4;
105 position:relative; 102 position:relative;
106} 103}
107.ylayout-panel-hd-text{ 104.ylayout-panel-hd-text{
108 font:normal 11px tahoma, verdana, helvetica; 105 font:normal 11px tahoma, verdana, helvetica;
109 padding: 4px; 106 padding: 4px;
110 padding-left: 4px; 107 padding-left: 4px;
111 display:block; 108 display:block;
112 white-space:nowrap; 109 white-space:nowrap;
113} 110}
114.ylayout-panel-hd-tools{ 111.ylayout-panel-hd-tools{
115 position:absolute; 112 position:absolute;
116 right:0; 113 right:0;
117 top:0; 114 top:0;
118 text-align:right; 115 text-align:right;
119 padding-top:2px; 116 padding-top:2px;
120 padding-right:2px;width:40px; 117 padding-right:2px;width:40px;
121} 118}
122.ylayout-tools-button{ 119.ylayout-tools-button{
123 z-index:6; 120 z-index:6;
124 padding:2px; 121 padding:2px;
125 cursor:pointer; 122 cursor:pointer;
126} 123}
127.ylayout-tools-button-over{ 124.ylayout-tools-button-over{
128 padding:1px; 125 padding:1px;
129 border:1px solid #98c0f4; 126 border:1px solid #98c0f4;
130 background-color:white; 127 background-color:white;
131} 128}
132.ylayout-tools-button-inner{ 129.ylayout-tools-button-inner{
133 height:12px; 130 height:12px;
134 width:12px; 131 width:12px;
135 line-height:1px; 132 line-height:1px;
136 font-size:1px; 133 font-size:1px;
137 background-repeat:no-repeat; 134 background-repeat:no-repeat;
138 background-position:center; 135 background-position:center;
139} 136}
140.ylayout-close{ 137.ylayout-close{
141 background-image:url(../images/default/layout/layout-sprite.gif); 138 background-image:url(../images/default/layout/layout-sprite.gif);
142 background-repeat: no-repeat; 139 background-repeat: no-repeat;
143 background-position: 50% -48px; 140 background-position: 50% -48px;
144} 141}
145.ylayout-collapse-west,.ylayout-expand-east{ 142.ylayout-collapse-west,.ylayout-expand-east{
146 background-image:url(../images/default/layout/layout-sprite.gif); 143 background-image:url(../images/default/layout/layout-sprite.gif);
147 background-repeat: no-repeat; 144 background-repeat: no-repeat;
148 background-position: 50% 0; 145 background-position: 50% 0;
149} 146}
150.ylayout-expand-west,.ylayout-collapse-east{ 147.ylayout-expand-west,.ylayout-collapse-east{
151 background-image:url(../images/default/layout/layout-sprite.gif); 148 background-image:url(../images/default/layout/layout-sprite.gif);
152 background-repeat: no-repeat; 149 background-repeat: no-repeat;
diff --git a/frontend/beta/css/yui-extensions/qtips.css b/frontend/beta/css/yui-extensions/qtips.css
index 4165168..34d3323 100644
--- a/frontend/beta/css/yui-extensions/qtips.css
+++ b/frontend/beta/css/yui-extensions/qtips.css
@@ -1,70 +1,67 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29.ytip{ 26.ytip{
30 position: absolute; 27 position: absolute;
31 top: 0; 28 top: 0;
32 visibility: hidden; 29 visibility: hidden;
33 z-index: 11000; 30 z-index: 11000;
34} 31}
35.ytip .ytip-bd{ 32.ytip .ytip-bd{
36 background: #e0e8f3 url(../images/default/qtip/bg.gif) repeat-x; 33 background: #e0e8f3 url(../images/default/qtip/bg.gif) repeat-x;
37 border: 1px solid #a3bad9; 34 border: 1px solid #a3bad9;
38 font: normal 11px arial,helvetica,sans-serif; 35 font: normal 11px arial,helvetica,sans-serif;
39 padding: 5px; 36 padding: 5px;
40} 37}
41.ytip .ytip-close{ 38.ytip .ytip-close{
42 background-image: url(../images/default/basic-dialog/close.gif); 39 background-image: url(../images/default/basic-dialog/close.gif);
43 height: 15px; 40 height: 15px;
44 position: absolute; 41 position: absolute;
45 right: 3px; 42 right: 3px;
46 top: 3px; 43 top: 3px;
47 width: 15px; 44 width: 15px;
48} 45}
49.ytip .ytip-hd { 46.ytip .ytip-hd {
50 background: url(../images/default/basic-dialog/hd-sprite.gif) repeat-x 0px -82px; 47 background: url(../images/default/basic-dialog/hd-sprite.gif) repeat-x 0px -82px;
51 background-color: navy; 48 background-color: navy;
52 color: #FFF; 49 color: #FFF;
53 display: block; 50 display: block;
54 font: bold 11px tahoma, arial, verdana, helvetica; 51 font: bold 11px tahoma, arial, verdana, helvetica;
55 padding: 4px; 52 padding: 4px;
56} 53}
57.ytip .ytip-hd-left { 54.ytip .ytip-hd-left {
58 background: url(../images/default/basic-dialog/hd-sprite.gif) no-repeat 0px -41px; 55 background: url(../images/default/basic-dialog/hd-sprite.gif) no-repeat 0px -41px;
59 display: block; 56 display: block;
60 margin: 0px; 57 margin: 0px;
61 padding-left: 3px; 58 padding-left: 3px;
62} 59}
63.ytip .ytip-hd-right { 60.ytip .ytip-hd-right {
64 background: url(../images/default/basic-dialog/hd-sprite.gif) no-repeat right 0px; 61 background: url(../images/default/basic-dialog/hd-sprite.gif) no-repeat right 0px;
65 display: block; 62 display: block;
66 padding-right: 3px; 63 padding-right: 3px;
67} 64}
68y\:qtip, qtip{ 65y\:qtip, qtip{
69 display: none; 66 display: none;
70} 67}
diff --git a/frontend/beta/css/yui-extensions/reset-min.css b/frontend/beta/css/yui-extensions/reset-min.css
index 25a5158..c09701c 100644
--- a/frontend/beta/css/yui-extensions/reset-min.css
+++ b/frontend/beta/css/yui-extensions/reset-min.css
@@ -1,29 +1,26 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td{margin:0;padding:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}ol,ul {list-style:none;}caption,th {text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;}q:before,q:after{content:'';} \ No newline at end of file 26body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td{margin:0;padding:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}ol,ul {list-style:none;}caption,th {text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;}q:before,q:after{content:'';} \ No newline at end of file
diff --git a/frontend/beta/css/yui-extensions/resizable.css b/frontend/beta/css/yui-extensions/resizable.css
index 46fef2a..51d91ac 100644
--- a/frontend/beta/css/yui-extensions/resizable.css
+++ b/frontend/beta/css/yui-extensions/resizable.css
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29.yresizable-handle { 26.yresizable-handle {
30 position:absolute; 27 position:absolute;
31 z-index:100; 28 z-index:100;
32 /* ie needs these */ 29 /* ie needs these */
33 font-size:1px; 30 font-size:1px;
34 line-height:6px; 31 line-height:6px;
35 overflow:hidden; 32 overflow:hidden;
36 background:white; 33 background:white;
37 filter:alpha(opacity=0); 34 filter:alpha(opacity=0);
38 opacity:0; 35 opacity:0;
39 zoom:1; 36 zoom:1;
40} 37}
41.yresizable-handle-east{ 38.yresizable-handle-east{
42 width:6px; 39 width:6px;
43 cursor:e-resize; 40 cursor:e-resize;
44 right:0px; 41 right:0px;
45 top:0px; 42 top:0px;
46 height:100%; 43 height:100%;
47 margin-right:-1px; /*IE rounding error*/ 44 margin-right:-1px; /*IE rounding error*/
48} 45}
49.yresizable-handle-south{ 46.yresizable-handle-south{
50 width:100%; 47 width:100%;
51 cursor:s-resize; 48 cursor:s-resize;
52 left:0px; 49 left:0px;
53 bottom:0px; 50 bottom:0px;
54 height:6px; 51 height:6px;
55 margin-bottom:-1px; /*IE rounding error*/ 52 margin-bottom:-1px; /*IE rounding error*/
56} 53}
57.yresizable-handle-west{ 54.yresizable-handle-west{
58 width:6px; 55 width:6px;
59 cursor:w-resize; 56 cursor:w-resize;
60 left:0px; 57 left:0px;
61 top:0px; 58 top:0px;
62 height:100%; 59 height:100%;
63} 60}
64.yresizable-handle-north{ 61.yresizable-handle-north{
65 width:100%; 62 width:100%;
66 cursor:n-resize; 63 cursor:n-resize;
67 left:0px; 64 left:0px;
68 top:0px; 65 top:0px;
69 height:6px; 66 height:6px;
70} 67}
71.yresizable-handle-southeast{ 68.yresizable-handle-southeast{
72 width:6px; 69 width:6px;
73 cursor:se-resize; 70 cursor:se-resize;
74 right:0px; 71 right:0px;
75 bottom:0px; 72 bottom:0px;
76 height:6px; 73 height:6px;
77 z-index:101; 74 z-index:101;
78} 75}
79.yresizable-handle-northwest{ 76.yresizable-handle-northwest{
80 width:6px; 77 width:6px;
81 cursor:nw-resize; 78 cursor:nw-resize;
82 left:0px; 79 left:0px;
83 top:0px; 80 top:0px;
84 height:6px; 81 height:6px;
85 z-index:101; 82 z-index:101;
86} 83}
87.yresizable-handle-northeast{ 84.yresizable-handle-northeast{
88 width:6px; 85 width:6px;
89 cursor:ne-resize; 86 cursor:ne-resize;
90 right:0px; 87 right:0px;
91 top:0px; 88 top:0px;
92 height:6px; 89 height:6px;
93 z-index:101; 90 z-index:101;
94} 91}
95.yresizable-handle-southwest{ 92.yresizable-handle-southwest{
96 width:6px; 93 width:6px;
97 cursor:sw-resize; 94 cursor:sw-resize;
98 left:0px; 95 left:0px;
99 bottom:0px; 96 bottom:0px;
100 height:6px; 97 height:6px;
101 z-index:101; 98 z-index:101;
102} 99}
103.yresizable-over .yresizable-handle, .yresizable-pinned .yresizable-handle{ 100.yresizable-over .yresizable-handle, .yresizable-pinned .yresizable-handle{
104 filter:alpha(opacity=100); 101 filter:alpha(opacity=100);
105 opacity:1; 102 opacity:1;
106} 103}
107.yresizable-over .yresizable-handle-east, .yresizable-pinned .yresizable-handle-east{ 104.yresizable-over .yresizable-handle-east, .yresizable-pinned .yresizable-handle-east{
108 background:url(../images/default/sizer/e-handle.gif); 105 background:url(../images/default/sizer/e-handle.gif);
109 background-position: left; 106 background-position: left;
110} 107}
111.yresizable-over .yresizable-handle-west, .yresizable-pinned .yresizable-handle-west{ 108.yresizable-over .yresizable-handle-west, .yresizable-pinned .yresizable-handle-west{
112 background:url(../images/default/sizer/e-handle.gif); 109 background:url(../images/default/sizer/e-handle.gif);
113 background-position: left; 110 background-position: left;
114} 111}
115.yresizable-over .yresizable-handle-south, .yresizable-pinned .yresizable-handle-south{ 112.yresizable-over .yresizable-handle-south, .yresizable-pinned .yresizable-handle-south{
116 background:url(../images/default/sizer/s-handle.gif); 113 background:url(../images/default/sizer/s-handle.gif);
117 background-position: top; 114 background-position: top;
118} 115}
119.yresizable-over .yresizable-handle-north, .yresizable-pinned .yresizable-handle-north{ 116.yresizable-over .yresizable-handle-north, .yresizable-pinned .yresizable-handle-north{
120 background:url(../images/default/sizer/s-handle.gif); 117 background:url(../images/default/sizer/s-handle.gif);
121 background-position: top; 118 background-position: top;
122} 119}
123.yresizable-over .yresizable-handle-southeast, .yresizable-pinned .yresizable-handle-southeast{ 120.yresizable-over .yresizable-handle-southeast, .yresizable-pinned .yresizable-handle-southeast{
124 background:url(../images/default/sizer/corners-sprite.gif); 121 background:url(../images/default/sizer/corners-sprite.gif);
125 background-position: top left; 122 background-position: top left;
126} 123}
127.yresizable-over .yresizable-handle-northwest, .yresizable-pinned .yresizable-handle-northwest{ 124.yresizable-over .yresizable-handle-northwest, .yresizable-pinned .yresizable-handle-northwest{
128 background:url(../images/default/sizer/corners-sprite.gif); 125 background:url(../images/default/sizer/corners-sprite.gif);
129 background-position:bottom right; 126 background-position:bottom right;
130} 127}
131.yresizable-over .yresizable-handle-northeast, .yresizable-pinned .yresizable-handle-northeast{ 128.yresizable-over .yresizable-handle-northeast, .yresizable-pinned .yresizable-handle-northeast{
132 background:url(../images/default/sizer/corners-sprite.gif); 129 background:url(../images/default/sizer/corners-sprite.gif);
133 background-position: bottom left; 130 background-position: bottom left;
134} 131}
135.yresizable-over .yresizable-handle-southwest, .yresizable-pinned .yresizable-handle-southwest{ 132.yresizable-over .yresizable-handle-southwest, .yresizable-pinned .yresizable-handle-southwest{
136 background:url(../images/default/sizer/corners-sprite.gif); 133 background:url(../images/default/sizer/corners-sprite.gif);
137 background-position: top right; 134 background-position: top right;
138} 135}
139.yresizable-proxy{ 136.yresizable-proxy{
140 border: 1px dashed #6593cf; 137 border: 1px dashed #6593cf;
141 position:absolute; 138 position:absolute;
142 overflow:hidden; 139 overflow:hidden;
143 visibility:hidden; 140 visibility:hidden;
144 left:0;top:0; 141 left:0;top:0;
145 z-index:1001; 142 z-index:1001;
146} 143}
147.yresizable-overlay{ 144.yresizable-overlay{
148 width:100%; 145 width:100%;
149 height:100%; 146 height:100%;
150 display:none; 147 display:none;
151 position:absolute; 148 position:absolute;
152 left:0; 149 left:0;
diff --git a/frontend/beta/css/yui-extensions/tabs.css b/frontend/beta/css/yui-extensions/tabs.css
index 8eb81e0..6fd0f89 100644
--- a/frontend/beta/css/yui-extensions/tabs.css
+++ b/frontend/beta/css/yui-extensions/tabs.css
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29.ytab-wrap { 26.ytab-wrap {
30 border-bottom:1px solid #6593cf; 27 border-bottom:1px solid #6593cf;
31 padding-top:2px; 28 padding-top:2px;
32} 29}
33.ytab-strip-wrap{ 30.ytab-strip-wrap{
34 width:100%; 31 width:100%;
35} 32}
36.ytab-wrap table{ 33.ytab-wrap table{
37 position:relative; 34 position:relative;
38 top:0; left:0; 35 top:0; left:0;
39} 36}
40.ytab-strip td{ 37.ytab-strip td{
41 padding:0; 38 padding:0;
42 padding-left:2px; 39 padding-left:2px;
43} 40}
44.ytab-strip a, .ytab-strip span, .ytab-strip em { 41.ytab-strip a, .ytab-strip span, .ytab-strip em {
45 display:block; 42 display:block;
46} 43}
47.ytab-strip a { 44.ytab-strip a {
48 text-decoration:none !important; 45 text-decoration:none !important;
49 -moz-outline: none; 46 -moz-outline: none;
50 outline: none; 47 outline: none;
51 cursor:pointer; 48 cursor:pointer;
52} 49}
53.ytab-strip .ytab-text { 50.ytab-strip .ytab-text {
54 font:bold 11px tahoma,arial,helvetica; 51 font:bold 11px tahoma,arial,helvetica;
55 color:#666; 52 color:#666;
56 overflow:hidden; 53 overflow:hidden;
57 white-space: nowrap; 54 white-space: nowrap;
58 cursor:pointer; 55 cursor:pointer;
59 text-overflow: ellipsis; 56 text-overflow: ellipsis;
60} 57}
61.ytab-strip .on .ytab-text { 58.ytab-strip .on .ytab-text {
62 cursor:default; 59 cursor:default;
63 color:#083772; 60 color:#083772;
64} 61}
65.ytab-strip .disabled .ytab-text { 62.ytab-strip .disabled .ytab-text {
66 cursor:default; 63 cursor:default;
67 color:#aaaaaa; 64 color:#aaaaaa;
68} 65}
69.ytab-strip .ytab-inner { 66.ytab-strip .ytab-inner {
70 padding:4px 10px; 67 padding:4px 10px;
71} 68}
72 69
73.ytab-strip .on .ytab-right { 70.ytab-strip .on .ytab-right {
74 background: url(../images/default/tabs/tab-sprite.gif) no-repeat right 0; 71 background: url(../images/default/tabs/tab-sprite.gif) no-repeat right 0;
75} 72}
76.ytab-strip .on .ytab-left { 73.ytab-strip .on .ytab-left {
77 background: url(../images/default/tabs/tab-sprite.gif) no-repeat 0 -100px; 74 background: url(../images/default/tabs/tab-sprite.gif) no-repeat 0 -100px;
78} 75}
79.ytab-strip .ytab-right { 76.ytab-strip .ytab-right {
80 background: url(../images/default/tabs/tab-sprite.gif) no-repeat right -50px; 77 background: url(../images/default/tabs/tab-sprite.gif) no-repeat right -50px;
81} 78}
82.ytab-strip .ytab-left { 79.ytab-strip .ytab-left {
83 background: url(../images/default/tabs/tab-sprite.gif) no-repeat 0 -150px; 80 background: url(../images/default/tabs/tab-sprite.gif) no-repeat 0 -150px;
84} 81}
85 82
86.ytab-strip a { 83.ytab-strip a {
87 position:relative; 84 position:relative;
88 top:1px; left:0; 85 top:1px; left:0;
89} 86}
90.ytab-strip .on a { 87.ytab-strip .on a {
91 position:relative; 88 position:relative;
92} 89}
93.ytab-strip .on .ytab-inner { 90.ytab-strip .on .ytab-inner {
94 padding-bottom:5px; 91 padding-bottom:5px;
95} 92}
96/** closable tabs */ 93/** closable tabs */
97.ytab-strip .ytab-closable .ytab-inner{ 94.ytab-strip .ytab-closable .ytab-inner{
98 padding-right:22px; 95 padding-right:22px;
99 position:relative; 96 position:relative;
100} 97}
101.ytab-strip .ytab-closable .close-icon{ 98.ytab-strip .ytab-closable .close-icon{
102 line-height: 1px; 99 line-height: 1px;
103 font-size:1px; 100 font-size:1px;
104 background-image:url(../images/default/layout/layout-sprite.gif); 101 background-image:url(../images/default/layout/layout-sprite.gif);
105 background-repeat: no-repeat; 102 background-repeat: no-repeat;
106 background-position: 50% -60px; 103 background-position: 50% -60px;
107 display:block; 104 display:block;
108 position:absolute; 105 position:absolute;
109 right:5px;top:4px; 106 right:5px;top:4px;
110 width:12px;height:11px; 107 width:12px;height:11px;
111 cursor:pointer; 108 cursor:pointer;
112} 109}
113.ytab-strip .on .close-icon{ 110.ytab-strip .on .close-icon{
114 background-image:url(../images/default/layout/layout-sprite.gif); 111 background-image:url(../images/default/layout/layout-sprite.gif);
115 background-repeat: no-repeat; 112 background-repeat: no-repeat;
116 background-position: 50% -60px; 113 background-position: 50% -60px;
117} 114}
118.ytab-strip .ytab-closable .close-over{ 115.ytab-strip .ytab-closable .close-over{
119 background-image:url(../images/default/layout/layout-sprite.gif); 116 background-image:url(../images/default/layout/layout-sprite.gif);
120 background-repeat: no-repeat; 117 background-repeat: no-repeat;
121 background-position: 50% -72px; 118 background-position: 50% -72px;
122} 119}
123 120
124.ytabs-bottom .ytab-wrap { 121.ytabs-bottom .ytab-wrap {
125 border-top:1px solid #6593cf; 122 border-top:1px solid #6593cf;
126 border-bottom:0 none; 123 border-bottom:0 none;
127 padding-top:0; 124 padding-top:0;
128 padding-bottom:2px; 125 padding-bottom:2px;
129} 126}
130.ytabs-bottom .ytab-strip .ytab-right { 127.ytabs-bottom .ytab-strip .ytab-right {
131 background: url(../images/default/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom left; 128 background: url(../images/default/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom left;
132} 129}
133.ytabs-bottom .ytab-strip .ytab-left { 130.ytabs-bottom .ytab-strip .ytab-left {
134 background: url(../images/default/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom right; 131 background: url(../images/default/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom right;
135} 132}
136.ytabs-bottom .ytab-strip .on .ytab-right { 133.ytabs-bottom .ytab-strip .on .ytab-right {
137 background: url(../images/default/tabs/tab-btm-right-bg.gif) no-repeat bottom left; 134 background: url(../images/default/tabs/tab-btm-right-bg.gif) no-repeat bottom left;
138} 135}
139.ytabs-bottom .ytab-strip .on .ytab-left { 136.ytabs-bottom .ytab-strip .on .ytab-left {
140 background: url(../images/default/tabs/tab-btm-left-bg.gif) no-repeat bottom right; 137 background: url(../images/default/tabs/tab-btm-left-bg.gif) no-repeat bottom right;
141} 138}
142.ytabs-bottom .ytab-strip a { 139.ytabs-bottom .ytab-strip a {
143 position:relative; 140 position:relative;
144 top:0; left:0; 141 top:0; left:0;
145} 142}
146.ytabs-bottom .ytab-strip .on a { 143.ytabs-bottom .ytab-strip .on a {
147 margin-top:-1px; 144 margin-top:-1px;
148} 145}
149.ytabs-bottom .ytab-strip .on .ytab-inner { 146.ytabs-bottom .ytab-strip .on .ytab-inner {
150 padding-top:5px; 147 padding-top:5px;
151} 148}
152 149
diff --git a/frontend/beta/css/yui-extensions/toolbar.css b/frontend/beta/css/yui-extensions/toolbar.css
index df91c83..dea6754 100644
--- a/frontend/beta/css/yui-extensions/toolbar.css
+++ b/frontend/beta/css/yui-extensions/toolbar.css
@@ -1,115 +1,112 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29.ytoolbar{ 26.ytoolbar{
30 background-color: #ebeadb; 27 background-color: #ebeadb;
31 border: 1px solid #cbc7b8; 28 border: 1px solid #cbc7b8;
32 display: block; 29 display: block;
33 padding:2px; 30 padding:2px;
34} 31}
35 32
36.mso .ytoolbar, .ygrid-mso .ytoolbar{ 33.mso .ytoolbar, .ygrid-mso .ytoolbar{
37 border: 0px none; 34 border: 0px none;
38 background: url(../images/default/grid/mso-hd.gif); 35 background: url(../images/default/grid/mso-hd.gif);
39} 36}
40.ytoolbar td,.ytoolbar span,.ytoolbar input,.ytoolbar div{ 37.ytoolbar td,.ytoolbar span,.ytoolbar input,.ytoolbar div{
41 white-space: nowrap; 38 white-space: nowrap;
42 font:normal 8pt arial,helvetica; 39 font:normal 8pt arial,helvetica;
43} 40}
44.ytoolbar .ytb-button-disabled .ytb-button-inner{ 41.ytoolbar .ytb-button-disabled .ytb-button-inner{
45 color:gray; 42 color:gray;
46 cursor:default; 43 cursor:default;
47} 44}
48 45
49/* 46/*
50 Default button class is icon only. Add a class with a background-image property 47 Default button class is icon only. Add a class with a background-image property
51 to your toolbar button 48 to your toolbar button
52*/ 49*/
53.ytoolbar .ytb-button-inner{ 50.ytoolbar .ytb-button-inner{
54 background-position: center; 51 background-position: center;
55 background-repeat: no-repeat; 52 background-repeat: no-repeat;
56 display: block; 53 display: block;
57 height: 16px; 54 height: 16px;
58 width: 16px; 55 width: 16px;
59 cursor:pointer; 56 cursor:pointer;
60 white-space: nowrap; 57 white-space: nowrap;
61} 58}
62 59
63/* 60/*
64 Button class for icon and text. Add this class and a class with a background-image 61 Button class for icon and text. Add this class and a class with a background-image
65 to your toolbar button for both text and icon 62 to your toolbar button for both text and icon
66*/ 63*/
67.ytoolbar .ytb-text-icon{ 64.ytoolbar .ytb-text-icon{
68 background-position: 0px 0px; 65 background-position: 0px 0px;
69 background-repeat: no-repeat; 66 background-repeat: no-repeat;
70 padding-left:18px; 67 padding-left:18px;
71 padding-top:1px; 68 padding-top:1px;
72 width:auto; 69 width:auto;
73 display:block; 70 display:block;
74} 71}
75 72
76/* 73/*
77 Button class for a button with only text. Add this class 74 Button class for a button with only text. Add this class
78 to your toolbar button for a just text button 75 to your toolbar button for a just text button
79*/ 76*/
80.ytoolbar .ytb-text-only{ 77.ytoolbar .ytb-text-only{
81 background:none; 78 background:none;
82 padding-left:0px; 79 padding-left:0px;
83 padding-top:1px; 80 padding-top:1px;
84 width:auto; 81 width:auto;
85 display:block; 82 display:block;
86} 83}
87.ytoolbar .ytb-text{ 84.ytoolbar .ytb-text{
88 padding:2px; 85 padding:2px;
89} 86}
90.ytoolbar .ytb-button{ 87.ytoolbar .ytb-button{
91 padding:2px 3px; 88 padding:2px 3px;
92 display:block; 89 display:block;
93} 90}
94.ytoolbar .ytb-button-over{ 91.ytoolbar .ytb-button-over{
95 background:#c3d3ed url(../images/default/toolbar/btn-over-bg.gif) repeat-x; 92 background:#c3d3ed url(../images/default/toolbar/btn-over-bg.gif) repeat-x;
96 border:1px solid #6593cf; 93 border:1px solid #6593cf;
97 padding:1px 2px; 94 padding:1px 2px;
98} 95}
99.ytoolbar .ytb-sep { 96.ytoolbar .ytb-sep {
100 background-image: url(../images/default/grid/grid-split.gif); 97 background-image: url(../images/default/grid/grid-split.gif);
101 background-position: center; 98 background-position: center;
102 background-repeat: no-repeat; 99 background-repeat: no-repeat;
103 display: block; 100 display: block;
104 font-size: 1px; 101 font-size: 1px;
105 height: 16px; 102 height: 16px;
106 width:4px; 103 width:4px;
107 overflow: hidden; 104 overflow: hidden;
108 cursor:default; 105 cursor:default;
109 margin: 0px 2px 0px; 106 margin: 0px 2px 0px;
110 border:0px; 107 border:0px;
111} 108}
112.mso .ytoolbar .ytb-sep, .ygrid-mso .ytoolbar .ytb-sep{ 109.mso .ytoolbar .ytb-sep, .ygrid-mso .ytoolbar .ytb-sep{
113 background-image: url(../images/default/grid/grid-blue-split.gif); 110 background-image: url(../images/default/grid/grid-blue-split.gif);
114} 111}
115 112
diff --git a/frontend/beta/css/yui-extensions/tree.css b/frontend/beta/css/yui-extensions/tree.css
index 9667f83..992909d 100644
--- a/frontend/beta/css/yui-extensions/tree.css
+++ b/frontend/beta/css/yui-extensions/tree.css
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29.ytree-icon, .ytree-ec-icon, .ytree-elbow-line, .ytree-elbow, .ytree-elbow-end, .ytree-elbow-plus, .ytree-elbow-minus, .ytree-elbow-end-plus, .ytree-elbow-end-minus{ 26.ytree-icon, .ytree-ec-icon, .ytree-elbow-line, .ytree-elbow, .ytree-elbow-end, .ytree-elbow-plus, .ytree-elbow-minus, .ytree-elbow-end-plus, .ytree-elbow-end-minus{
30 border: 0 none; 27 border: 0 none;
31 height: 18px; 28 height: 18px;
32 margin: 0px; 29 margin: 0px;
33 padding: 0px; 30 padding: 0px;
34 vertical-align: middle; 31 vertical-align: middle;
35 width: 16px; 32 width: 16px;
36} 33}
37.ytree-node-collapsed .ytree-node-icon, .ytree-node-expanded .ytree-node-icon, .ytree-node-leaf .ytree-node-icon{ 34.ytree-node-collapsed .ytree-node-icon, .ytree-node-expanded .ytree-node-icon, .ytree-node-leaf .ytree-node-icon{
38 border: 0 none; 35 border: 0 none;
39 height: 16px; 36 height: 16px;
40 margin: 0px; 37 margin: 0px;
41 padding: 0px; 38 padding: 0px;
42 vertical-align: middle; 39 vertical-align: middle;
43 width: 16px; 40 width: 16px;
44 background-position:center; 41 background-position:center;
45} 42}
46 43
47/* some default icons for leaf/folder */ 44/* some default icons for leaf/folder */
48.ytree-node-collapsed .ytree-node-icon{ 45.ytree-node-collapsed .ytree-node-icon{
49 background:transparent url(../images/default/tree/folder.gif); 46 background:transparent url(../images/default/tree/folder.gif);
50} 47}
51.ytree-node-expanded .ytree-node-icon{ 48.ytree-node-expanded .ytree-node-icon{
52 background:transparent url(../images/default/tree/folder-open.gif); 49 background:transparent url(../images/default/tree/folder-open.gif);
53} 50}
54.ytree-node-leaf .ytree-node-icon{ 51.ytree-node-leaf .ytree-node-icon{
55 background:transparent url(../images/default/tree/leaf.gif); 52 background:transparent url(../images/default/tree/leaf.gif);
56} 53}
57 54
58/* loading icon */ 55/* loading icon */
59.ytree-node-loading .ytree-node-icon{ 56.ytree-node-loading .ytree-node-icon{
60 background:transparent url(../images/default/tree/loading.gif) !important; 57 background:transparent url(../images/default/tree/loading.gif) !important;
61} 58}
62.ytree-node-loading a span{ 59.ytree-node-loading a span{
63 font-style: italic; 60 font-style: italic;
64 color:#444444; 61 color:#444444;
65} 62}
66 63
67/* Line styles */ 64/* Line styles */
68.ytree-lines .ytree-elbow{ 65.ytree-lines .ytree-elbow{
69 background:transparent url(../images/default/tree/elbow.gif); 66 background:transparent url(../images/default/tree/elbow.gif);
70} 67}
71.ytree-lines .ytree-elbow-plus{ 68.ytree-lines .ytree-elbow-plus{
72 background:transparent url(../images/default/tree/elbow-plus.gif); 69 background:transparent url(../images/default/tree/elbow-plus.gif);
73} 70}
74.ytree-lines .ytree-elbow-minus{ 71.ytree-lines .ytree-elbow-minus{
75 background:transparent url(../images/default/tree/elbow-minus.gif); 72 background:transparent url(../images/default/tree/elbow-minus.gif);
76} 73}
77.ytree-lines .ytree-elbow-end{ 74.ytree-lines .ytree-elbow-end{
78 background:transparent url(../images/default/tree/elbow-end.gif); 75 background:transparent url(../images/default/tree/elbow-end.gif);
79} 76}
80.ytree-lines .ytree-elbow-end-plus{ 77.ytree-lines .ytree-elbow-end-plus{
81 background:transparent url(../images/default/tree/elbow-end-plus.gif); 78 background:transparent url(../images/default/tree/elbow-end-plus.gif);
82} 79}
83.ytree-lines .ytree-elbow-end-minus{ 80.ytree-lines .ytree-elbow-end-minus{
84 background:transparent url(../images/default/tree/elbow-end-minus.gif); 81 background:transparent url(../images/default/tree/elbow-end-minus.gif);
85} 82}
86.ytree-lines .ytree-elbow-line{ 83.ytree-lines .ytree-elbow-line{
87 background:transparent url(../images/default/tree/elbow-line.gif); 84 background:transparent url(../images/default/tree/elbow-line.gif);
88} 85}
89 86
90/* No line styles */ 87/* No line styles */
91.ytree-no-lines .ytree-elbow{ 88.ytree-no-lines .ytree-elbow{
92 background:transparent; 89 background:transparent;
93} 90}
94.ytree-no-lines .ytree-elbow-plus{ 91.ytree-no-lines .ytree-elbow-plus{
95 background:transparent url(../images/default/tree/elbow-plus-nl.gif); 92 background:transparent url(../images/default/tree/elbow-plus-nl.gif);
96} 93}
97.ytree-no-lines .ytree-elbow-minus{ 94.ytree-no-lines .ytree-elbow-minus{
98 background:transparent url(../images/default/tree/elbow-minus-nl.gif); 95 background:transparent url(../images/default/tree/elbow-minus-nl.gif);
99} 96}
100.ytree-no-lines .ytree-elbow-end{ 97.ytree-no-lines .ytree-elbow-end{
101 background:transparent; 98 background:transparent;
102} 99}
103.ytree-no-lines .ytree-elbow-end-plus{ 100.ytree-no-lines .ytree-elbow-end-plus{
104 background:transparent url(../images/default/tree/elbow-end-plus-nl.gif); 101 background:transparent url(../images/default/tree/elbow-end-plus-nl.gif);
105} 102}
106.ytree-no-lines .ytree-elbow-end-minus{ 103.ytree-no-lines .ytree-elbow-end-minus{
107 background:transparent url(../images/default/tree/elbow-end-minus-nl.gif); 104 background:transparent url(../images/default/tree/elbow-end-minus-nl.gif);
108} 105}
109.ytree-no-lines .ytree-elbow-line{ 106.ytree-no-lines .ytree-elbow-line{
110 background:transparent; 107 background:transparent;
111} 108}
112 109
113.ytree-elbow-plus, .ytree-elbow-minus, .ytree-elbow-end-plus, .ytree-elbow-end-minus{ 110.ytree-elbow-plus, .ytree-elbow-minus, .ytree-elbow-end-plus, .ytree-elbow-end-minus{
114 cursor:pointer; 111 cursor:pointer;
115} 112}
116 113
117.ytree-node{ 114.ytree-node{
118 color: black; 115 color: black;
119 font: normal 11px arial, helvetica, sans-serif; 116 font: normal 11px arial, helvetica, sans-serif;
120 white-space: nowrap; 117 white-space: nowrap;
121} 118}
122.ytree-node a, .ydd-drag-ghost a{ 119.ytree-node a, .ydd-drag-ghost a{
123 text-decoration:none; 120 text-decoration:none;
124 color:black; 121 color:black;
125 -khtml-user-select:normal; 122 -khtml-user-select:normal;
126 -moz-user-select:normal; 123 -moz-user-select:normal;
127} 124}
128.ytree-node a span, .ydd-drag-ghost a span{ 125.ytree-node a span, .ydd-drag-ghost a span{
129 text-decoration:none; 126 text-decoration:none;
130 color:black; 127 color:black;
131 padding:1px 3px 1px 2px; 128 padding:1px 3px 1px 2px;
132} 129}
133.ytree-node .ytree-node-disabled a span{ 130.ytree-node .ytree-node-disabled a span{
134 color:gray !important; 131 color:gray !important;
135} 132}
136.ytree-node .ytree-node-disabled .ytree-node-icon{ 133.ytree-node .ytree-node-disabled .ytree-node-icon{
137 -moz-opacity: 0.5; 134 -moz-opacity: 0.5;
138 opacity:.5; 135 opacity:.5;
139 filter: alpha(opacity=50); 136 filter: alpha(opacity=50);
140} 137}
141.ytree-node .ytree-node-inline-icon{ 138.ytree-node .ytree-node-inline-icon{
142 background:transparent; 139 background:transparent;
143} 140}
144.ytree-node a:hover, .ydd-drag-ghost a:hover{ 141.ytree-node a:hover, .ydd-drag-ghost a:hover{
145 text-decoration:none; 142 text-decoration:none;
146} 143}
147.ytree-node div.ytree-drag-insert-below{ 144.ytree-node div.ytree-drag-insert-below{
148 border-bottom:1px dotted #3366cc; 145 border-bottom:1px dotted #3366cc;
149} 146}
150.ytree-node div.ytree-drag-insert-above{ 147.ytree-node div.ytree-drag-insert-above{
151 border-top:1px dotted #3366cc; 148 border-top:1px dotted #3366cc;
152} 149}
diff --git a/frontend/beta/css/yui-extensions/ytheme-aero.css b/frontend/beta/css/yui-extensions/ytheme-aero.css
index 10d8ec0..b599de0 100644
--- a/frontend/beta/css/yui-extensions/ytheme-aero.css
+++ b/frontend/beta/css/yui-extensions/ytheme-aero.css
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29/** 26/**
30* Tabs 27* Tabs
31*/ 28*/
32.ytab-wrap, .ylayout-panel .ytabs-top .ytab-wrap { 29.ytab-wrap, .ylayout-panel .ytabs-top .ytab-wrap {
33 background:#deecfd; 30 background:#deecfd;
34 border:1px solid #8db2e3; 31 border:1px solid #8db2e3;
35 padding-bottom:2px; 32 padding-bottom:2px;
36 padding-top:0px; 33 padding-top:0px;
37} 34}
38.ytab-strip-wrap{ 35.ytab-strip-wrap{
39 padding-top:1px; 36 padding-top:1px;
40 background:#cedff5 url(../images/aero/tabs/tab-strip-bg.gif) repeat-x bottom; 37 background:#cedff5 url(../images/aero/tabs/tab-strip-bg.gif) repeat-x bottom;
41 border-bottom:1px solid #8db2e3; 38 border-bottom:1px solid #8db2e3;
42} 39}
43.ytab-strip .ytab-text { 40.ytab-strip .ytab-text {
44 color:#15428b; 41 color:#15428b;
45 font-weight:normal; 42 font-weight:normal;
46} 43}
47.ytab-strip .on .ytab-text { 44.ytab-strip .on .ytab-text {
48 cursor:default; 45 cursor:default;
49 color:#15428b; 46 color:#15428b;
50} 47}
51.ytabs-top .ytab-strip .on .ytab-right { 48.ytabs-top .ytab-strip .on .ytab-right {
52 background: url(../images/aero/tabs/tab-sprite.gif) no-repeat right 0px; 49 background: url(../images/aero/tabs/tab-sprite.gif) no-repeat right 0px;
53} 50}
54.ytabs-top .ytab-strip .on .ytab-left,.ytabs-top .ytab-strip .on a:hover .ytab-left{ 51.ytabs-top .ytab-strip .on .ytab-left,.ytabs-top .ytab-strip .on a:hover .ytab-left{
55 background: url(../images/aero/tabs/tab-sprite.gif) no-repeat 0px -100px; 52 background: url(../images/aero/tabs/tab-sprite.gif) no-repeat 0px -100px;
56} 53}
57.ytabs-top .ytab-strip .ytab-right { 54.ytabs-top .ytab-strip .ytab-right {
58 background:transparent url(../images/aero/tabs/tab-sprite.gif) no-repeat right -50px; 55 background:transparent url(../images/aero/tabs/tab-sprite.gif) no-repeat right -50px;
59} 56}
60.ytabs-top .ytab-strip .ytab-left { 57.ytabs-top .ytab-strip .ytab-left {
61 background:transparent url(../images/aero/tabs/tab-sprite.gif) no-repeat 0px -150px; 58 background:transparent url(../images/aero/tabs/tab-sprite.gif) no-repeat 0px -150px;
62} 59}
63.ytabs-top .yui-ext-tabbody { 60.ytabs-top .yui-ext-tabbody {
64 border:1px solid #8db2e3; 61 border:1px solid #8db2e3;
65 border-top:0px none; 62 border-top:0px none;
66} 63}
67.ytabs-bottom .ytab-wrap, .ylayout-panel .ytabs-bottom .ytab-wrap { 64.ytabs-bottom .ytab-wrap, .ylayout-panel .ytabs-bottom .ytab-wrap {
68 background:#deecfd; 65 background:#deecfd;
69 border:1px solid #8db2e3; 66 border:1px solid #8db2e3;
70 padding-top:2px; 67 padding-top:2px;
71 padding-bottom:0px; 68 padding-bottom:0px;
72} 69}
73.ytabs-bottom .ytab-strip-wrap{ 70.ytabs-bottom .ytab-strip-wrap{
74 padding-top:0px; 71 padding-top:0px;
75 padding-bottom:1px; 72 padding-bottom:1px;
76 background:#cedff5 url(../images/aero/tabs/tab-strip-btm-bg.gif) repeat-x top; 73 background:#cedff5 url(../images/aero/tabs/tab-strip-btm-bg.gif) repeat-x top;
77 border-top:1px solid #8db2e3; 74 border-top:1px solid #8db2e3;
78 border-bottom:0px none; 75 border-bottom:0px none;
79} 76}
80.ytabs-bottom .ytab-strip .ytab-right { 77.ytabs-bottom .ytab-strip .ytab-right {
81 background:transparent url(../images/aero/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom right; 78 background:transparent url(../images/aero/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom right;
82} 79}
83.ytabs-bottom .ytab-strip .ytab-left { 80.ytabs-bottom .ytab-strip .ytab-left {
84 background:transparent url(../images/aero/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom left; 81 background:transparent url(../images/aero/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom left;
85} 82}
86.ytabs-bottom .ytab-strip .on .ytab-right,.ytabs-bottom .ytab-strip .on a:hover { 83.ytabs-bottom .ytab-strip .on .ytab-right,.ytabs-bottom .ytab-strip .on a:hover {
87 background: url(../images/aero/tabs/tab-btm-right-bg.gif) no-repeat bottom left; 84 background: url(../images/aero/tabs/tab-btm-right-bg.gif) no-repeat bottom left;
88} 85}
89.ytabs-bottom .ytab-strip .on .ytab-left,.ytabs-bottom .ytab-strip .on a:hover .ytab-left { 86.ytabs-bottom .ytab-strip .on .ytab-left,.ytabs-bottom .ytab-strip .on a:hover .ytab-left {
90 background: url(../images/aero/tabs/tab-btm-left-bg.gif) no-repeat bottom right; 87 background: url(../images/aero/tabs/tab-btm-left-bg.gif) no-repeat bottom right;
91} 88}
92.ytabs-bottom .yui-ext-tabbody { 89.ytabs-bottom .yui-ext-tabbody {
93 border:1px solid #8db2e3; 90 border:1px solid #8db2e3;
94 border-bottom:0px none; 91 border-bottom:0px none;
95} 92}
96/** 93/**
97* Basic-Dialog 94* Basic-Dialog
98*/ 95*/
99.ydlg-proxy { 96.ydlg-proxy {
100 background:#C7DFFC; 97 background:#C7DFFC;
101 border:1px solid #A5CCF9; 98 border:1px solid #A5CCF9;
102} 99}
103.ydlg-shadow{ 100.ydlg-shadow{
104 background:#cccccc; 101 background:#cccccc;
105 opacity:.3; 102 opacity:.3;
106 -moz-opacity:.3; 103 -moz-opacity:.3;
107 filter: alpha(opacity=30); 104 filter: alpha(opacity=30);
108} 105}
109.ydlg { 106.ydlg {
110 background:transparent; 107 background:transparent;
111} 108}
112.ydlg .ydlg-hd { 109.ydlg .ydlg-hd {
113 background: url(../images/aero/basic-dialog/hd-sprite.gif) repeat-x 0px -82px; 110 background: url(../images/aero/basic-dialog/hd-sprite.gif) repeat-x 0px -82px;
114 background-color:#aabaca; 111 background-color:#aabaca;
115 color:#15428b; 112 color:#15428b;
116 zoom:1; 113 zoom:1;
117 padding-top:7px; 114 padding-top:7px;
118} 115}
119.ydlg .ydlg-hd-left { 116.ydlg .ydlg-hd-left {
120 opacity:.85;-moz-opacity:.85;filter:alpha(opacity=80); 117 opacity:.85;-moz-opacity:.85;filter:alpha(opacity=80);
121 background: url(../images/aero/basic-dialog/hd-sprite.gif) no-repeat 0px -41px; 118 background: url(../images/aero/basic-dialog/hd-sprite.gif) no-repeat 0px -41px;
122 zoom:1; 119 zoom:1;
123} 120}
124.ydlg-modal .ydlg-hd-left { 121.ydlg-modal .ydlg-hd-left {
125 opacity:.75;-moz-opacity:.75;filter:alpha(opacity=70); 122 opacity:.75;-moz-opacity:.75;filter:alpha(opacity=70);
126} 123}
127 124
128.ydlg .ydlg-hd-right { 125.ydlg .ydlg-hd-right {
129 background: url(../images/aero/basic-dialog/hd-sprite.gif) no-repeat right 0px; 126 background: url(../images/aero/basic-dialog/hd-sprite.gif) no-repeat right 0px;
130 zoom:1; 127 zoom:1;
131} 128}
132.ydlg .ydlg-dlg-body{ 129.ydlg .ydlg-dlg-body{
133 padding:0px 0px 0px; 130 padding:0px 0px 0px;
134 position:absolute; 131 position:absolute;
135 top:24px;left:0px; 132 top:24px;left:0px;
136 z-index:1; 133 z-index:1;
137 border:0px none; 134 border:0px none;
138 background:transparent; 135 background:transparent;
139} 136}
140.ydlg .ydlg-bd{ 137.ydlg .ydlg-bd{
141 background:#fff; 138 background:#fff;
142 border:1px solid #96b9e6; 139 border:1px solid #96b9e6;
143} 140}
144.ydlg .ydlg-ft{ 141.ydlg .ydlg-ft{
145 border:0px none; 142 border:0px none;
146 background:transparent; 143 background:transparent;
147 padding-bottom:8px; 144 padding-bottom:8px;
148} 145}
149.ydlg .ydlg-bg{ 146.ydlg .ydlg-bg{
150 filter:alpha(opacity=80); 147 filter:alpha(opacity=80);
151 opacity:.85; 148 opacity:.85;
152 -moz-opacity:.85; 149 -moz-opacity:.85;
diff --git a/frontend/beta/css/yui-extensions/ytheme-gray.css b/frontend/beta/css/yui-extensions/ytheme-gray.css
index 675fed1..d1a1a4a 100644
--- a/frontend/beta/css/yui-extensions/ytheme-gray.css
+++ b/frontend/beta/css/yui-extensions/ytheme-gray.css
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29/** 26/**
30* Basic-Dialog 27* Basic-Dialog
31*/ 28*/
32.ydlg-proxy { 29.ydlg-proxy {
33 background-image: url(../images/gray/layout/gradient-bg.gif); 30 background-image: url(../images/gray/layout/gradient-bg.gif);
34 background-color:#EAE8D5; 31 background-color:#EAE8D5;
35 border:1px solid #b3b6b0; 32 border:1px solid #b3b6b0;
36} 33}
37.ydlg-shadow{ 34.ydlg-shadow{
38 background:#aaaaaa; 35 background:#aaaaaa;
39} 36}
40.ydlg-proxy .tabset{ 37.ydlg-proxy .tabset{
41 background:url(../images/gray/layout/gradient-bg.gif); 38 background:url(../images/gray/layout/gradient-bg.gif);
42} 39}
43.ydlg .ydlg-hd { 40.ydlg .ydlg-hd {
44 background: url(../images/gray/basic-dialog/hd-sprite.gif) repeat-x 0px -82px; 41 background: url(../images/gray/basic-dialog/hd-sprite.gif) repeat-x 0px -82px;
45 background-color:#333333; 42 background-color:#333333;
46} 43}
47.ydlg .ydlg-hd-left { 44.ydlg .ydlg-hd-left {
48 background: url(../images/gray/basic-dialog/hd-sprite.gif) no-repeat 0px -41px; 45 background: url(../images/gray/basic-dialog/hd-sprite.gif) no-repeat 0px -41px;
49} 46}
50.ydlg .ydlg-hd-right { 47.ydlg .ydlg-hd-right {
51 background: url(../images/gray/basic-dialog/hd-sprite.gif) no-repeat right 0px; 48 background: url(../images/gray/basic-dialog/hd-sprite.gif) no-repeat right 0px;
52} 49}
53.ydlg .ydlg-dlg-body{ 50.ydlg .ydlg-dlg-body{
54 background:#efefec; 51 background:#efefec;
55 border:1px solid #b3b6b0; 52 border:1px solid #b3b6b0;
56 border-top:0px none; 53 border-top:0px none;
57} 54}
58.ydlg .ytabs-top .yui-ext-tabbody{ 55.ydlg .ytabs-top .yui-ext-tabbody{
59 border:1px solid #b3b6b0; 56 border:1px solid #b3b6b0;
60 border-top:0px none; 57 border-top:0px none;
61} 58}
62.ydlg .ytabs-bottom .yui-ext-tabbody{ 59.ydlg .ytabs-bottom .yui-ext-tabbody{
63 border:1px solid #b3b6b0; 60 border:1px solid #b3b6b0;
64 border-bottom:0px none; 61 border-bottom:0px none;
65} 62}
66.ydlg .ylayout-container .yui-ext-tabbody{ 63.ydlg .ylayout-container .yui-ext-tabbody{
67 border:0px none; 64 border:0px none;
68} 65}
69.ydlg .ydlg-close { 66.ydlg .ydlg-close {
70 background-image:url(../images/gray/basic-dialog/close.gif); 67 background-image:url(../images/gray/basic-dialog/close.gif);
71} 68}
72.ydlg div.yresizable-handle-east{ 69.ydlg div.yresizable-handle-east{
73 background-image:url(../images/gray/basic-dialog/e-handle.gif); 70 background-image:url(../images/gray/basic-dialog/e-handle.gif);
74 border:0px none; 71 border:0px none;
75} 72}
76.ydlg div.yresizable-handle-south{ 73.ydlg div.yresizable-handle-south{
77 background-image:url(../images/gray/basic-dialog/s-handle.gif); 74 background-image:url(../images/gray/basic-dialog/s-handle.gif);
78 border:0px none; 75 border:0px none;
79} 76}
80.ydlg div.yresizable-handle-west{ 77.ydlg div.yresizable-handle-west{
81 background-image:url(../images/gray/basic-dialog/e-handle.gif); 78 background-image:url(../images/gray/basic-dialog/e-handle.gif);
82 border:0px none; 79 border:0px none;
83} 80}
84.ydlg div.yresizable-handle-southeast{ 81.ydlg div.yresizable-handle-southeast{
85 background-image:url(../images/gray/basic-dialog/se-handle.gif); 82 background-image:url(../images/gray/basic-dialog/se-handle.gif);
86 background-position: bottom right; 83 background-position: bottom right;
87 width:8px; 84 width:8px;
88 height:8px; 85 height:8px;
89 border:0px; 86 border:0px;
90} 87}
91.ydlg div.yresizable-handle-southwest{ 88.ydlg div.yresizable-handle-southwest{
92 background-image:url(../images/gray/sizer/sw-handle-dark.gif); 89 background-image:url(../images/gray/sizer/sw-handle-dark.gif);
93 background-position: top right; 90 background-position: top right;
94 margin-left:1px; 91 margin-left:1px;
95 margin-bottom:1px; 92 margin-bottom:1px;
96 border:0px; 93 border:0px;
97} 94}
98.ydlg div.yresizable-handle-north{ 95.ydlg div.yresizable-handle-north{
99 background-image:url(../images/gray/s.gif); 96 background-image:url(../images/gray/s.gif);
100 border:0px none; 97 border:0px none;
101} 98}
102 99
103/** 100/**
104* Tabs 101* Tabs
105*/ 102*/
106.ytab-wrap { 103.ytab-wrap {
107 border-bottom:1px solid #aca899; 104 border-bottom:1px solid #aca899;
108} 105}
109.ytab-strip .on .ytab-text { 106.ytab-strip .on .ytab-text {
110 cursor:default; 107 cursor:default;
111 color:#333333; 108 color:#333333;
112} 109}
113.ytabs-top .ytab-strip .on .ytab-right { 110.ytabs-top .ytab-strip .on .ytab-right {
114 background: url(../images/gray/tabs/tab-sprite.gif) no-repeat right 0px; 111 background: url(../images/gray/tabs/tab-sprite.gif) no-repeat right 0px;
115} 112}
116.ytabs-top .ytab-strip .on .ytab-left { 113.ytabs-top .ytab-strip .on .ytab-left {
117 background: url(../images/gray/tabs/tab-sprite.gif) no-repeat 0px -100px; 114 background: url(../images/gray/tabs/tab-sprite.gif) no-repeat 0px -100px;
118} 115}
119.ytabs-top .ytab-strip .ytab-right { 116.ytabs-top .ytab-strip .ytab-right {
120 background: url(../images/gray/tabs/tab-sprite.gif) no-repeat right -50px; 117 background: url(../images/gray/tabs/tab-sprite.gif) no-repeat right -50px;
121} 118}
122.ytabs-top .ytab-strip .ytab-left { 119.ytabs-top .ytab-strip .ytab-left {
123 background: url(../images/gray/tabs/tab-sprite.gif) no-repeat 0px -150px; 120 background: url(../images/gray/tabs/tab-sprite.gif) no-repeat 0px -150px;
124} 121}
125.ytab-strip .ytab-closable .close-icon{ 122.ytab-strip .ytab-closable .close-icon{
126 background-image:url(../images/gray/layout/layout-sprite.gif); 123 background-image:url(../images/gray/layout/layout-sprite.gif);
127 background-position: 50% -60px; 124 background-position: 50% -60px;
128} 125}
129.ytab-strip .on .close-icon{ 126.ytab-strip .on .close-icon{
130 background-image:url(../images/gray/layout/layout-sprite.gif); 127 background-image:url(../images/gray/layout/layout-sprite.gif);
131 background-position: 50% -60px; 128 background-position: 50% -60px;
132} 129}
133.ytab-strip .ytab-closable .close-over{ 130.ytab-strip .ytab-closable .close-over{
134 background-image:url(../images/gray/layout/layout-sprite.gif); 131 background-image:url(../images/gray/layout/layout-sprite.gif);
135 background-position: 50% -72px; 132 background-position: 50% -72px;
136} 133}
137 134
138.ytabs-bottom .ytab-wrap { 135.ytabs-bottom .ytab-wrap {
139 border-bottom:0px none; 136 border-bottom:0px none;
140 padding-top:0px; 137 padding-top:0px;
141 border-top:1px solid #aca899; 138 border-top:1px solid #aca899;
142} 139}
143.ytabs-bottom .ytab-strip .ytab-right { 140.ytabs-bottom .ytab-strip .ytab-right {
144 background: url(../images/gray/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom left; 141 background: url(../images/gray/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom left;
145} 142}
146.ytabs-bottom .ytab-strip .ytab-left { 143.ytabs-bottom .ytab-strip .ytab-left {
147 background: url(../images/gray/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom right; 144 background: url(../images/gray/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom right;
148} 145}
149.ytabs-bottom .ytab-strip .on .ytab-right { 146.ytabs-bottom .ytab-strip .on .ytab-right {
150 background: url(../images/gray/tabs/tab-btm-right-bg.gif) no-repeat bottom left; 147 background: url(../images/gray/tabs/tab-btm-right-bg.gif) no-repeat bottom left;
151} 148}
152.ytabs-bottom .ytab-strip .on .ytab-left { 149.ytabs-bottom .ytab-strip .on .ytab-left {
diff --git a/frontend/beta/css/yui-extensions/ytheme-vista.css b/frontend/beta/css/yui-extensions/ytheme-vista.css
index 2770566..85bf82b 100644
--- a/frontend/beta/css/yui-extensions/ytheme-vista.css
+++ b/frontend/beta/css/yui-extensions/ytheme-vista.css
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29/** 26/**
30* Tabs 27* Tabs
31*/ 28*/
32.ytab-wrap { 29.ytab-wrap {
33 background:#4f4f4f; 30 background:#4f4f4f;
34 border-bottom:1px solid #b3b6b0; 31 border-bottom:1px solid #b3b6b0;
35} 32}
36.ytab-strip .ytab-text { 33.ytab-strip .ytab-text {
37 color:white; 34 color:white;
38 font-weight:normal; 35 font-weight:normal;
39} 36}
40.ytab-strip .on .ytab-text { 37.ytab-strip .on .ytab-text {
41 cursor:default; 38 cursor:default;
42 color:#333333; 39 color:#333333;
43} 40}
44.ytabs-top .ytab-strip a:hover { 41.ytabs-top .ytab-strip a:hover {
45 background:transparent url(../images/vista/tabs/tab-sprite.gif) no-repeat right -50px; 42 background:transparent url(../images/vista/tabs/tab-sprite.gif) no-repeat right -50px;
46} 43}
47.ytabs-top .ytab-strip a:hover .ytab-left { 44.ytabs-top .ytab-strip a:hover .ytab-left {
48 background:transparent url(../images/vista/tabs/tab-sprite.gif) no-repeat 0 -150px; 45 background:transparent url(../images/vista/tabs/tab-sprite.gif) no-repeat 0 -150px;
49} 46}
50.ytabs-top .ytab-strip .on .ytab-right, .ytabs-top .ytab-strip .on a:hover { 47.ytabs-top .ytab-strip .on .ytab-right, .ytabs-top .ytab-strip .on a:hover {
51 background: url(../images/vista/tabs/tab-sprite.gif) no-repeat right 0; 48 background: url(../images/vista/tabs/tab-sprite.gif) no-repeat right 0;
52} 49}
53.ytabs-top .ytab-strip .on .ytab-left, .ytabs-top .ytab-strip .on a:hover .ytab-left { 50.ytabs-top .ytab-strip .on .ytab-left, .ytabs-top .ytab-strip .on a:hover .ytab-left {
54 background: url(../images/vista/tabs/tab-sprite.gif) no-repeat 0 -100px; 51 background: url(../images/vista/tabs/tab-sprite.gif) no-repeat 0 -100px;
55} 52}
56.ytabs-top .ytab-strip .ytab-right { 53.ytabs-top .ytab-strip .ytab-right {
57 background:transparent; 54 background:transparent;
58} 55}
59.ytabs-top .ytab-strip .ytab-left { 56.ytabs-top .ytab-strip .ytab-left {
60 background:transparent; 57 background:transparent;
61} 58}
62.ytab-strip .ytab-closable .close-icon{ 59.ytab-strip .ytab-closable .close-icon{
63 background-image:url(../images/vista/layout/layout-sprite.gif); 60 background-image:url(../images/vista/layout/layout-sprite.gif);
64 background-position: 50% -60px; 61 background-position: 50% -60px;
65} 62}
66.ytab-strip .on .close-icon{ 63.ytab-strip .on .close-icon{
67 background-image:url(../images/vista/layout/layout-sprite.gif); 64 background-image:url(../images/vista/layout/layout-sprite.gif);
68 background-position: 50% -72px; 65 background-position: 50% -72px;
69} 66}
70.ytab-strip .ytab-closable .close-over{ 67.ytab-strip .ytab-closable .close-over{
71 background-image:url(../images/vista/layout/layout-sprite.gif); 68 background-image:url(../images/vista/layout/layout-sprite.gif);
72 background-position: 50% -72px; 69 background-position: 50% -72px;
73} 70}
74 71
75.ytabs-bottom .ytab-strip { 72.ytabs-bottom .ytab-strip {
76 background:#4f4f4f; 73 background:#4f4f4f;
77} 74}
78.ytabs-bottom .ytab-strip a:hover { 75.ytabs-bottom .ytab-strip a:hover {
79 background:transparent url(../images/vista/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom right; 76 background:transparent url(../images/vista/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom right;
80} 77}
81.ytabs-bottom .ytab-strip a:hover .ytab-left{ 78.ytabs-bottom .ytab-strip a:hover .ytab-left{
82 background:transparent url(../images/vista/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom left; 79 background:transparent url(../images/vista/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom left;
83} 80}
84.ytabs-bottom .ytab-wrap { 81.ytabs-bottom .ytab-wrap {
85 border-bottom:0px none; 82 border-bottom:0px none;
86 padding-top:0px; 83 padding-top:0px;
87 border-top:1px solid #b3b6b0; 84 border-top:1px solid #b3b6b0;
88} 85}
89.ytabs-bottom .ytab-strip .ytab-right { 86.ytabs-bottom .ytab-strip .ytab-right {
90 background:transparent; 87 background:transparent;
91} 88}
92.ytabs-bottom .ytab-strip .ytab-left { 89.ytabs-bottom .ytab-strip .ytab-left {
93 background:transparent; 90 background:transparent;
94} 91}
95.ytabs-bottom .ytab-strip .on .ytab-right,.ytabs-bottom .ytab-strip .on a:hover { 92.ytabs-bottom .ytab-strip .on .ytab-right,.ytabs-bottom .ytab-strip .on a:hover {
96 background: url(../images/vista/tabs/tab-btm-right-bg.gif) no-repeat bottom left; 93 background: url(../images/vista/tabs/tab-btm-right-bg.gif) no-repeat bottom left;
97} 94}
98.ytabs-bottom .ytab-strip .on .ytab-left,.ytabs-bottom .ytab-strip .on a:hover .ytab-left { 95.ytabs-bottom .ytab-strip .on .ytab-left,.ytabs-bottom .ytab-strip .on a:hover .ytab-left {
99 background: url(../images/vista/tabs/tab-btm-left-bg.gif) no-repeat bottom right; 96 background: url(../images/vista/tabs/tab-btm-left-bg.gif) no-repeat bottom right;
100} 97}
101/** 98/**
102* Basic-Dialog 99* Basic-Dialog
103*/ 100*/
104.ydlg-proxy { 101.ydlg-proxy {
105 background:#d3d6d0; 102 background:#d3d6d0;
106 border:2px solid #b3b6b0; 103 border:2px solid #b3b6b0;
107} 104}
108.ydlg-shadow{ 105.ydlg-shadow{
109 background:#cccccc; 106 background:#cccccc;
110 opacity:.3; 107 opacity:.3;
111 -moz-opacity:.3; 108 -moz-opacity:.3;
112 filter: alpha(opacity=30); 109 filter: alpha(opacity=30);
113} 110}
114.ydlg .ydlg-hd { 111.ydlg .ydlg-hd {
115 background: url(../images/vista/basic-dialog/hd-sprite.gif) repeat-x 0px -82px; 112 background: url(../images/vista/basic-dialog/hd-sprite.gif) repeat-x 0px -82px;
116 background-color:#333333; 113 background-color:#333333;
117 zoom:1; 114 zoom:1;
118} 115}
119.ydlg .ydlg-hd-left { 116.ydlg .ydlg-hd-left {
120 opacity:.95;-moz-opacity:.95;filter:alpha(opacity=90); 117 opacity:.95;-moz-opacity:.95;filter:alpha(opacity=90);
121 background: url(../images/vista/basic-dialog/hd-sprite.gif) no-repeat 0px -41px; 118 background: url(../images/vista/basic-dialog/hd-sprite.gif) no-repeat 0px -41px;
122 zoom:1; 119 zoom:1;
123} 120}
124.ydlg .ydlg-hd-right { 121.ydlg .ydlg-hd-right {
125 background: url(../images/vista/basic-dialog/hd-sprite.gif) no-repeat right 0px; 122 background: url(../images/vista/basic-dialog/hd-sprite.gif) no-repeat right 0px;
126 zoom:1; 123 zoom:1;
127} 124}
128.ydlg .ydlg-dlg-body{ 125.ydlg .ydlg-dlg-body{
129 background:#fff; 126 background:#fff;
130 border:0 none; 127 border:0 none;
131 border-top:0px none; 128 border-top:0px none;
132 padding:0px 0px 0px; 129 padding:0px 0px 0px;
133 position:absolute; 130 position:absolute;
134 top:24px;left:0px; 131 top:24px;left:0px;
135 z-index:1; 132 z-index:1;
136} 133}
137.ydlg-auto-tabs .ydlg-dlg-body{ 134.ydlg-auto-tabs .ydlg-dlg-body{
138 background:transparent; 135 background:transparent;
139} 136}
140.ydlg-auto-tabs .ytabs-top .ytab-wrap{ 137.ydlg-auto-tabs .ytabs-top .ytab-wrap{
141 background:transparent; 138 background:transparent;
142} 139}
143.ydlg .ydlg-ft{ 140.ydlg .ydlg-ft{
144 border-top:1px solid #b3b6b0; 141 border-top:1px solid #b3b6b0;
145 background:#F0F0F0; 142 background:#F0F0F0;
146 padding-bottom:8px; 143 padding-bottom:8px;
147} 144}
148.ydlg .ydlg-bg{ 145.ydlg .ydlg-bg{
149 opacity:.90;-moz-opacity:.90;filter:alpha(opacity=85); 146 opacity:.90;-moz-opacity:.90;filter:alpha(opacity=85);
150 zoom:1; 147 zoom:1;
151} 148}
152.ydlg .ydlg-bg-left,.ydlg .ydlg-bg-center,.ydlg .ydlg-bg-right{ 149.ydlg .ydlg-bg-left,.ydlg .ydlg-bg-center,.ydlg .ydlg-bg-right{
diff --git a/frontend/beta/css/yui/calendar.css b/frontend/beta/css/yui/calendar.css
index a634e50..51399e6 100644
--- a/frontend/beta/css/yui/calendar.css
+++ b/frontend/beta/css/yui/calendar.css
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29/* 26/*
30Copyright (c) 2006, Yahoo! Inc. All rights reserved. 27Copyright (c) 2006, Yahoo! Inc. All rights reserved.
31Code licensed under the BSD License: 28Code licensed under the BSD License:
32http://developer.yahoo.net/yui/license.txt 29http://developer.yahoo.net/yui/license.txt
33Version 0.11.3 30Version 0.11.3
34*/ 31*/
35 32
36.yui-cal2upwrapper {*height:1%;} /* IE */ 33.yui-cal2upwrapper {*height:1%;} /* IE */
37.yui-cal2upwrapper:after {content:'.';clear:both;display:block;visibility:hidden;height:0;} /* others */ 34.yui-cal2upwrapper:after {content:'.';clear:both;display:block;visibility:hidden;height:0;} /* others */
38 35
39.yui-calcontainer { 36.yui-calcontainer {
40 float:left; 37 float:left;
41 padding:5px; 38 padding:5px;
42 background-color:#F7F9FB; 39 background-color:#F7F9FB;
43 border:1px solid #7B9EBD; 40 border:1px solid #7B9EBD;
44} 41}
45 42
46.yui-calcontainer .title { 43.yui-calcontainer .title {
47 font:100% sans-serif; 44 font:100% sans-serif;
48 color:#000; 45 color:#000;
49 font-weight:bold; 46 font-weight:bold;
50 margin-bottom:5px; 47 margin-bottom:5px;
51 height:auto; 48 height:auto;
52 position:relative; 49 position:relative;
53} 50}
54 51
55.yui-calcontainer .title .close-icon { 52.yui-calcontainer .title .close-icon {
56 position:absolute; 53 position:absolute;
57 right:0; 54 right:0;
58 top:0; 55 top:0;
59 border:none; 56 border:none;
60} 57}
61 58
62.yui-calcontainer .cal2up { 59.yui-calcontainer .cal2up {
63 float:left; 60 float:left;
64} 61}
65 62
66.yui-calendar .calnavleft { 63.yui-calendar .calnavleft {
67 position:absolute; 64 position:absolute;
68 background-repeat:no-repeat; 65 background-repeat:no-repeat;
69 cursor:pointer; 66 cursor:pointer;
70 top:2px; 67 top:2px;
71 bottom:0; 68 bottom:0;
72 width:9px; 69 width:9px;
73 height:12px; 70 height:12px;
74 left:2px; 71 left:2px;
75} 72}
76 73
77.yui-calendar .calnavright { 74.yui-calendar .calnavright {
78 position:absolute; 75 position:absolute;
79 background-repeat:no-repeat; 76 background-repeat:no-repeat;
80 cursor:pointer; 77 cursor:pointer;
81 top:2px; 78 top:2px;
82 bottom:0; 79 bottom:0;
83 width:9px; 80 width:9px;
84 height:12px; 81 height:12px;
85 right:2px; 82 right:2px;
86} 83}
87 84
88/* Calendar element styles */ 85/* Calendar element styles */
89 86
90.yui-calendar { 87.yui-calendar {
91 font:100% sans-serif; 88 font:100% sans-serif;
92 text-align:center; 89 text-align:center;
93 border-spacing:0; 90 border-spacing:0;
94 border-collapse:separate; 91 border-collapse:separate;
95} 92}
96 93
97.yui-calendar td.calcell { 94.yui-calendar td.calcell {
98 padding:.1em .2em; 95 padding:.1em .2em;
99 border:1px solid #E0E0E0; 96 border:1px solid #E0E0E0;
100 background-color:#FFF; 97 background-color:#FFF;
101} 98}
102 99
103.yui-calendar td.calcell a { 100.yui-calendar td.calcell a {
104 color:#003DB8; 101 color:#003DB8;
105 text-decoration:none; 102 text-decoration:none;
106} 103}
107 104
108.yui-calendar td.calcell.today { 105.yui-calendar td.calcell.today {
109 border:1px solid #000; 106 border:1px solid #000;
110} 107}
111 108
112.yui-calendar td.calcell.oom { 109.yui-calendar td.calcell.oom {
113 cursor:default; 110 cursor:default;
114 color:#999; 111 color:#999;
115 background-color:#EEE; 112 background-color:#EEE;
116 border:1px solid #E0E0E0; 113 border:1px solid #E0E0E0;
117} 114}
118 115
119.yui-calendar td.calcell.selected { 116.yui-calendar td.calcell.selected {
120 color:#003DB8; 117 color:#003DB8;
121 background-color:#FFF19F; 118 background-color:#FFF19F;
122 border:1px solid #FF9900; 119 border:1px solid #FF9900;
123} 120}
124 121
125.yui-calendar td.calcell.calcellhover { 122.yui-calendar td.calcell.calcellhover {
126 cursor:pointer; 123 cursor:pointer;
127 color:#FFF; 124 color:#FFF;
128 background-color:#FF9900; 125 background-color:#FF9900;
129 border:1px solid #FF9900; 126 border:1px solid #FF9900;
130} 127}
131 128
132.yui-calendar td.calcell.calcellhover a { 129.yui-calendar td.calcell.calcellhover a {
133 color:#FFF; 130 color:#FFF;
134} 131}
135 132
136.yui-calendar td.calcell.restricted { 133.yui-calendar td.calcell.restricted {
137 text-decoration:line-through; 134 text-decoration:line-through;
138} 135}
139 136
140.yui-calendar td.calcell.previous { 137.yui-calendar td.calcell.previous {
141 color:#CCC; 138 color:#CCC;
142} 139}
143 140
144.yui-calendar td.calcell.highlight1 { background-color:#CCFF99; } 141.yui-calendar td.calcell.highlight1 { background-color:#CCFF99; }
145.yui-calendar td.calcell.highlight2 { background-color:#99CCFF; } 142.yui-calendar td.calcell.highlight2 { background-color:#99CCFF; }
146.yui-calendar td.calcell.highlight3 { background-color:#FFCCCC; } 143.yui-calendar td.calcell.highlight3 { background-color:#FFCCCC; }
147.yui-calendar td.calcell.highlight4 { background-color:#CCFF99; } 144.yui-calendar td.calcell.highlight4 { background-color:#CCFF99; }
148 145
149 146
150.yui-calendar .calhead { 147.yui-calendar .calhead {
151 border:1px solid #E0E0E0; 148 border:1px solid #E0E0E0;
152 vertical-align:middle; 149 vertical-align:middle;
diff --git a/frontend/beta/css/yui/container.css b/frontend/beta/css/yui/container.css
index 1d7154c..337fe70 100644
--- a/frontend/beta/css/yui/container.css
+++ b/frontend/beta/css/yui/container.css
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29/* 26/*
30Copyright (c) 2006, Yahoo! Inc. All rights reserved. 27Copyright (c) 2006, Yahoo! Inc. All rights reserved.
31Code licensed under the BSD License: 28Code licensed under the BSD License:
32http://developer.yahoo.net/yui/license.txt 29http://developer.yahoo.net/yui/license.txt
33Version 0.11.4 30Version 0.11.4
34*/ 31*/
35 32
36.overlay { 33.overlay {
37 position:absolute; 34 position:absolute;
38 display:block; 35 display:block;
39} 36}
40 37
41.tt { 38.tt {
42 visibility:hidden; 39 visibility:hidden;
43 position:absolute; 40 position:absolute;
44 color:#333; 41 color:#333;
45 background-color:#FDFFB4; 42 background-color:#FDFFB4;
46 font-family:arial,helvetica,verdana,sans-serif; 43 font-family:arial,helvetica,verdana,sans-serif;
47 padding:2px; 44 padding:2px;
48 border:1px solid #FCC90D; 45 border:1px solid #FCC90D;
49 font:100% sans-serif; 46 font:100% sans-serif;
50 width:auto; 47 width:auto;
51} 48}
52 49
53* html body.masked select { 50* html body.masked select {
54 visibility:hidden; 51 visibility:hidden;
55} 52}
56 53
57* html div.panel-container select { 54* html div.panel-container select {
58 visibility:inherit; 55 visibility:inherit;
59} 56}
60 57
61* html div.drag select { 58* html div.drag select {
62 visibility:hidden; 59 visibility:hidden;
63} 60}
64 61
65* html div.hide-select select { 62* html div.hide-select select {
66 visibility:hidden; 63 visibility:hidden;
67} 64}
68 65
69.mask { 66.mask {
70 z-index:0; 67 z-index:0;
71 display:none; 68 display:none;
72 position:absolute; 69 position:absolute;
73 top:0; 70 top:0;
74 left:0; 71 left:0;
75 -moz-opacity: 0.5; 72 -moz-opacity: 0.5;
76 opacity:.50; 73 opacity:.50;
77 filter: alpha(opacity=50); 74 filter: alpha(opacity=50);
78 background-color:#CCC; 75 background-color:#CCC;
79} 76}
80 77
81.hide-scrollbars * { 78.hide-scrollbars * {
82 overflow:hidden; 79 overflow:hidden;
83} 80}
84 81
85.hide-scrollbars textarea, .hide-scrollbars select { 82.hide-scrollbars textarea, .hide-scrollbars select {
86 overflow:hidden; 83 overflow:hidden;
87 display:none; 84 display:none;
88} 85}
89 86
90.show-scrollbars textarea, .show-scrollbars select { 87.show-scrollbars textarea, .show-scrollbars select {
91 overflow:visible; 88 overflow:visible;
92} 89}
93 90
94.panel-container { 91.panel-container {
95 position:absolute; 92 position:absolute;
96 background-color:transparent; 93 background-color:transparent;
97 z-index:6; 94 z-index:6;
98 visibility:hidden; 95 visibility:hidden;
99 overflow:visible; 96 overflow:visible;
100 width:auto; 97 width:auto;
101} 98}
102 99
103.panel-container.matte { 100.panel-container.matte {
104 padding:3px; 101 padding:3px;
105 background-color:#FFF; 102 background-color:#FFF;
106} 103}
107 104
108.panel-container.matte .underlay { 105.panel-container.matte .underlay {
109 display:none; 106 display:none;
110} 107}
111 108
112.panel-container.shadow { 109.panel-container.shadow {
113 padding:0px; 110 padding:0px;
114 background-color:transparent; 111 background-color:transparent;
115} 112}
116 113
117.panel-container.shadow .underlay { 114.panel-container.shadow .underlay {
118 visibility:inherit; 115 visibility:inherit;
119 position:absolute; 116 position:absolute;
120 background-color:#CCC; 117 background-color:#CCC;
121 top:3px;left:3px; 118 top:3px;left:3px;
122 z-index:0; 119 z-index:0;
123 width:100%; 120 width:100%;
124 height:100%; 121 height:100%;
125 -moz-opacity: 0.7; 122 -moz-opacity: 0.7;
126 opacity:.70; 123 opacity:.70;
127 filter:alpha(opacity=70); 124 filter:alpha(opacity=70);
128 zoom:1; 125 zoom:1;
129} 126}
130 127
131.panel { 128.panel {
132 visibility:hidden; 129 visibility:hidden;
133 border-collapse:separate; 130 border-collapse:separate;
134 position:relative; 131 position:relative;
135 left:0px;top:0px; 132 left:0px;top:0px;
136 font:1em Arial; 133 font:1em Arial;
137 background-color:#FFF; 134 background-color:#FFF;
138 border:1px solid #000; 135 border:1px solid #000;
139 z-index:1; 136 z-index:1;
140 overflow:hidden; 137 overflow:hidden;
141} 138}
142 139
143.panel .hd { 140.panel .hd {
144 background-color:#3d77cb; 141 background-color:#3d77cb;
145 color:#FFF; 142 color:#FFF;
146 font-size:100%; 143 font-size:100%;
147 line-height:100%; 144 line-height:100%;
148 border:1px solid #FFF; 145 border:1px solid #FFF;
149 border-bottom:1px solid #000; 146 border-bottom:1px solid #000;
150 font-weight:bold; 147 font-weight:bold;
151 overflow:hidden; 148 overflow:hidden;
152 padding:4px; 149 padding:4px;
diff --git a/frontend/beta/css/yui/fonts.css b/frontend/beta/css/yui/fonts.css
index ea8dd16..a334b8a 100644
--- a/frontend/beta/css/yui/fonts.css
+++ b/frontend/beta/css/yui/fonts.css
@@ -1,62 +1,59 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29/* 26/*
30Copyright (c) 2006, Yahoo! Inc. All rights reserved. 27Copyright (c) 2006, Yahoo! Inc. All rights reserved.
31Code licensed under the BSD License: 28Code licensed under the BSD License:
32http://developer.yahoo.net/yui/license.txt 29http://developer.yahoo.net/yui/license.txt
33version: 0.11.3 30version: 0.11.3
34*/ 31*/
35 32
36/** 33/**
37 * 84.5% for !IE, keywords for IE 34 * 84.5% for !IE, keywords for IE
38 * Percents could work for IE, but for backCompat purposes, we are using 35 * Percents could work for IE, but for backCompat purposes, we are using
39 keywords. 36 keywords.
40 * x-small is for IE < 6 and IE6 quirks mode. 37 * x-small is for IE < 6 and IE6 quirks mode.
41 * 38 *
42 */ 39 */
43body {font:13px arial,helvetica,clean,sans-serif;*font-size:small;*font:x- 40body {font:13px arial,helvetica,clean,sans-serif;*font-size:small;*font:x-
44small;} 41small;}
45table {font-size:inherit;font:100%;} 42table {font-size:inherit;font:100%;}
46 43
47/** 44/**
48 * 99% for safari; 100% is too large 45 * 99% for safari; 100% is too large
49 */ 46 */
50select, input, textarea {font:99% arial,helvetica,clean,sans-serif;} 47select, input, textarea {font:99% arial,helvetica,clean,sans-serif;}
51 48
52/** 49/**
53 * Bump up !IE to get to 13px equivalent 50 * Bump up !IE to get to 13px equivalent
54 */ 51 */
55pre, code {font:115% monospace;*font-size:100%;} 52pre, code {font:115% monospace;*font-size:100%;}
56 53
57/** 54/**
58 * Default line-height based on font-size rather than "computed-value" 55 * Default line-height based on font-size rather than "computed-value"
59 * see: http://www.w3.org/TR/CSS21/visudet.html#line-height 56 * see: http://www.w3.org/TR/CSS21/visudet.html#line-height
60 */ 57 */
61body * {line-height:1.22em;} 58body * {line-height:1.22em;}
62 59
diff --git a/frontend/beta/css/yui/grids.css b/frontend/beta/css/yui/grids.css
index 8b64f89..7d60306 100644
--- a/frontend/beta/css/yui/grids.css
+++ b/frontend/beta/css/yui/grids.css
@@ -1,116 +1,113 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29/* 26/*
30Copyright (c) 2006, Yahoo! Inc. All rights reserved. 27Copyright (c) 2006, Yahoo! Inc. All rights reserved.
31Code licensed under the BSD License: 28Code licensed under the BSD License:
32http://developer.yahoo.net/yui/license.txt 29http://developer.yahoo.net/yui/license.txt
33version: 0.11.3 30version: 0.11.3
34*/ 31*/
35body { 32body {
36 text-align:center; 33 text-align:center;
37} 34}
38 35
39#doc { 36#doc {
40 width:57.69em; 37 width:57.69em;
41 *width:56.3em; /* IE */ 38 *width:56.3em; /* IE */
42 min-width:750px; 39 min-width:750px;
43 margin:auto; 40 margin:auto;
44 text-align:left; 41 text-align:left;
45} 42}
46 43
47#hd,#bd {margin-bottom:1em;text-align:left;} 44#hd,#bd {margin-bottom:1em;text-align:left;}
48#ft {font-size:77%;font-family:verdana;clear:both;} 45#ft {font-size:77%;font-family:verdana;clear:both;}
49 46
50/* rules for main templates */ 47/* rules for main templates */
51.yui-t1 #yui-main .yui-b, .yui-t2 #yui-main .yui-b, .yui-t3 #yui-main .yui-b, 48.yui-t1 #yui-main .yui-b, .yui-t2 #yui-main .yui-b, .yui-t3 #yui-main .yui-b,
52.yui-t4 .yui-b, .yui-t5 .yui-b, .yui-t6 .yui-b {float:right;} 49.yui-t4 .yui-b, .yui-t5 .yui-b, .yui-t6 .yui-b {float:right;}
53.yui-t1 .yui-b, .yui-t2 .yui-b, .yui-t3 .yui-b, .yui-t4 #yui-main .yui-b, .yui- 50.yui-t1 .yui-b, .yui-t2 .yui-b, .yui-t3 .yui-b, .yui-t4 #yui-main .yui-b, .yui-
54t5 #yui-main .yui-b, .yui-t6 #yui-main .yui-b {float:left;} 51t5 #yui-main .yui-b, .yui-t6 #yui-main .yui-b {float:left;}
55 52
56/* t1: L160 */ 53/* t1: L160 */
57.yui-t1 #yui-main .yui-b {width:76%;min-width:570px;} 54.yui-t1 #yui-main .yui-b {width:76%;min-width:570px;}
58.yui-t1 .yui-b {width:21.33%;min-width:160px;} 55.yui-t1 .yui-b {width:21.33%;min-width:160px;}
59 56
60/* t2 & t4: L180 & R180 */ 57/* t2 & t4: L180 & R180 */
61.yui-t2 #yui-main .yui-b, .yui-t4 #yui-main .yui-b {width:73.4%;min- 58.yui-t2 #yui-main .yui-b, .yui-t4 #yui-main .yui-b {width:73.4%;min-
62width:550px;} 59width:550px;}
63.yui-t2 .yui-b, .yui-t4 .yui-b {width:24%;min-width:180px;} 60.yui-t2 .yui-b, .yui-t4 .yui-b {width:24%;min-width:180px;}
64 61
65/* t3 & t6: L300 & R300 */ 62/* t3 & t6: L300 & R300 */
66.yui-t3 #yui-main .yui-b, .yui-t6 #yui-main .yui-b {width:57.6%;min- 63.yui-t3 #yui-main .yui-b, .yui-t6 #yui-main .yui-b {width:57.6%;min-
67width:430px;} 64width:430px;}
68.yui-t3 .yui-b, .yui-t6 .yui-b {width:40%;min-width:300px;} 65.yui-t3 .yui-b, .yui-t6 .yui-b {width:40%;min-width:300px;}
69 66
70/* t5: R240 */ 67/* t5: R240 */
71.yui-t5 #yui-main .yui-b {width:65.4%;min-width:490px;} 68.yui-t5 #yui-main .yui-b {width:65.4%;min-width:490px;}
72.yui-t5 .yui-b {width:32%;min-width:240px;} 69.yui-t5 .yui-b {width:32%;min-width:240px;}
73 70
74/* t7: 750 */ 71/* t7: 750 */
75 72
76 73
77 74
78 /*grid-generic rules for all templates */ 75 /*grid-generic rules for all templates */
79 76
80/* all modules and grids nested in a grid get floated */ 77/* all modules and grids nested in a grid get floated */
81.yui-g .yui-u, .yui-g .yui-g, .yui-ge .yui-u, .yui-gf .yui-u { 78.yui-g .yui-u, .yui-g .yui-g, .yui-ge .yui-u, .yui-gf .yui-u {
82 float:right; 79 float:right;
83 display:inline; /* IE */ 80 display:inline; /* IE */
84} 81}
85 82
86/* float left and kill margin on first for added flex */ 83/* float left and kill margin on first for added flex */
87.yui-g .first, .yui-gd .first, .yui-ge .first, .yui-gf .first {float:left; } 84.yui-g .first, .yui-gd .first, .yui-ge .first, .yui-gf .first {float:left; }
88 85
89/* 2 col */ 86/* 2 col */
90.yui-g .yui-u, .yui-g .yui-g {width:49.1%;} 87.yui-g .yui-u, .yui-g .yui-g {width:49.1%;}
91.yui-g .yui-g .yui-u {width:48.1%;} /* smaller for nested to preserve margins */ 88.yui-g .yui-g .yui-u {width:48.1%;} /* smaller for nested to preserve margins */
92 89
93/* 3 col */ 90/* 3 col */
94.yui-gb .yui-u, .yui-gc .yui-u, .yui-gd .yui-u { 91.yui-gb .yui-u, .yui-gc .yui-u, .yui-gd .yui-u {
95 float:left; /* need to reverse the order for 3 */ 92 float:left; /* need to reverse the order for 3 */
96 margin-left:2%; *margin-left:1.895%; 93 margin-left:2%; *margin-left:1.895%;
97 width:32%; 94 width:32%;
98} 95}
99 96
100.yui-gb .first, .yui-gc .first, .yui-gd .first {margin-left:0;} 97.yui-gb .first, .yui-gc .first, .yui-gd .first {margin-left:0;}
101 98
102/* colspan 2 */ 99/* colspan 2 */
103.yui-gc .first, .yui-gd .yui-u {width:66%;} 100.yui-gc .first, .yui-gd .yui-u {width:66%;}
104.yui-gd .first {width:32%;} 101.yui-gd .first {width:32%;}
105 102
106/* colspan 3 */ 103/* colspan 3 */
107.yui-ge .yui-u {width:24%;} 104.yui-ge .yui-u {width:24%;}
108.yui-ge .first, .yui-gf .yui-u {width:74.2%;} 105.yui-ge .first, .yui-gf .yui-u {width:74.2%;}
109.yui-gf .first {width:24%;} 106.yui-gf .first {width:24%;}
110.yui-ge .first {width:74.2%;} 107.yui-ge .first {width:74.2%;}
111 108
112/* self clear floated parent containers */ 109/* self clear floated parent containers */
113#bd:after, .yui-g:after, .yui-gb:after, .yui-gc:after, .yui-gd:after, .yui- 110#bd:after, .yui-g:after, .yui-gb:after, .yui-gc:after, .yui-gd:after, .yui-
114ge:after, .yui-gf:after 111ge:after, .yui-gf:after
115{content:".";display:block;height:0;clear:both;visibility:hidden;} 112{content:".";display:block;height:0;clear:both;visibility:hidden;}
116#bd, .yui-g, .yui-gb, .yui-gc, .yui-gd, .yui-ge, .yui-gf {zoom:1;} /* IE */ 113#bd, .yui-g, .yui-gb, .yui-gc, .yui-gd, .yui-ge, .yui-gf {zoom:1;} /* IE */
diff --git a/frontend/beta/css/yui/logger.css b/frontend/beta/css/yui/logger.css
index 1a00f44..2fdebcf 100644
--- a/frontend/beta/css/yui/logger.css
+++ b/frontend/beta/css/yui/logger.css
@@ -1,49 +1,46 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29/* Copyright (c) 2006, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: http://developer.yahoo.net/yui/license.txt Version: 0.11.3 */ 26/* Copyright (c) 2006, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: http://developer.yahoo.net/yui/license.txt Version: 0.11.3 */
30/* logger default styles */ 27/* logger default styles */
31/* font size is controlled here: default 77% */ 28/* font size is controlled here: default 77% */
32#yui-log {position:absolute;top:1em;right:1em;font-size:77%;text-align:left;} 29#yui-log {position:absolute;top:1em;right:1em;font-size:77%;text-align:left;}
33/* width is controlled here: default 31em */ 30/* width is controlled here: default 31em */
34.yui-log {padding:1em;width:31em;background-color:#AAA;border:1px solid black;font-family:monospace;z-index:9000;} 31.yui-log {padding:1em;width:31em;background-color:#AAA;border:1px solid black;font-family:monospace;z-index:9000;}
35.yui-log p {margin:1px;padding:.1em;} 32.yui-log p {margin:1px;padding:.1em;}
36.yui-log button {font-family:monospace;} 33.yui-log button {font-family:monospace;}
37.yui-log .yui-log-hd {margin-top:1em;padding:.5em;background-color:#575757;color:#FFF;} 34.yui-log .yui-log-hd {margin-top:1em;padding:.5em;background-color:#575757;color:#FFF;}
38/* height is controlled here: default 20em*/ 35/* height is controlled here: default 20em*/
39.yui-log .yui-log-bd {width:100%;height:20em;background-color:#FFF;border:1px solid gray;overflow:auto;} 36.yui-log .yui-log-bd {width:100%;height:20em;background-color:#FFF;border:1px solid gray;overflow:auto;}
40.yui-log .yui-log-ft {margin-top:.5em;margin-bottom:1em;} 37.yui-log .yui-log-ft {margin-top:.5em;margin-bottom:1em;}
41.yui-log .yui-log-ft .yui-log-categoryfilters {} 38.yui-log .yui-log-ft .yui-log-categoryfilters {}
42.yui-log .yui-log-ft .yui-log-sourcefilters {width:100%;border-top:1px solid #575757;margin-top:.75em;padding-top:.75em;} 39.yui-log .yui-log-ft .yui-log-sourcefilters {width:100%;border-top:1px solid #575757;margin-top:.75em;padding-top:.75em;}
43.yui-log .yui-log-btns {position:relative;float:right;bottom:.25em;} 40.yui-log .yui-log-btns {position:relative;float:right;bottom:.25em;}
44.yui-log .yui-log-filtergrp {margin-right:.5em;} 41.yui-log .yui-log-filtergrp {margin-right:.5em;}
45.yui-log .info {background-color:#A7CC25;} /* A7CC25 green */ 42.yui-log .info {background-color:#A7CC25;} /* A7CC25 green */
46.yui-log .warn {background-color:#F58516;} /* F58516 orange */ 43.yui-log .warn {background-color:#F58516;} /* F58516 orange */
47.yui-log .error {background-color:#E32F0B;} /* E32F0B red */ 44.yui-log .error {background-color:#E32F0B;} /* E32F0B red */
48.yui-log .time {background-color:#A6C9D7;} /* A6C9D7 blue */ 45.yui-log .time {background-color:#A6C9D7;} /* A6C9D7 blue */
49.yui-log .window {background-color:#F2E886;} /* F2E886 tan */ 46.yui-log .window {background-color:#F2E886;} /* F2E886 tan */
diff --git a/frontend/beta/css/yui/menu.css b/frontend/beta/css/yui/menu.css
index ab3daea..0b8eba7 100644
--- a/frontend/beta/css/yui/menu.css
+++ b/frontend/beta/css/yui/menu.css
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29/* 26/*
30Copyright (c) 2006, Yahoo! Inc. All rights reserved. 27Copyright (c) 2006, Yahoo! Inc. All rights reserved.
31Code licensed under the BSD License: 28Code licensed under the BSD License:
32http://developer.yahoo.com/yui/license.txt 29http://developer.yahoo.com/yui/license.txt
33Version: 0.11.3 30Version: 0.11.3
34*/ 31*/
35 32
36 33
37 34
38/* Menu styles */ 35/* Menu styles */
39 36
40div.yuimenu { 37div.yuimenu {
41 38
42 z-index:1; 39 z-index:1;
43 visibility:hidden; 40 visibility:hidden;
44 background-color:#f6f7ee; 41 background-color:#f6f7ee;
45 border:solid 1px #c4c4be; 42 border:solid 1px #c4c4be;
46 padding:1px; 43 padding:1px;
47 44
48} 45}
49 46
50 47
51/* MenuBar Styles */ 48/* MenuBar Styles */
52 49
53div.yuimenubar { 50div.yuimenubar {
54 51
55 background-color:#f6f7ee; 52 background-color:#f6f7ee;
56 53
57} 54}
58 55
59/* 56/*
60 Application of "zoom:1" triggers "haslayout" in IE so that the module's 57 Application of "zoom:1" triggers "haslayout" in IE so that the module's
61 body clears its floated elements 58 body clears its floated elements
62*/ 59*/
63div.yuimenubar div.bd { 60div.yuimenubar div.bd {
64 61
65 zoom:1; 62 zoom:1;
66 63
67} 64}
68 65
69/* 66/*
70 Clear the module body for other browsers 67 Clear the module body for other browsers
71*/ 68*/
72div.yuimenubar div.bd:after { 69div.yuimenubar div.bd:after {
73 70
74 content:'.'; 71 content:'.';
75 display:block; 72 display:block;
76 clear:both; 73 clear:both;
77 visibility:hidden; 74 visibility:hidden;
78 height:0; 75 height:0;
79 76
80} 77}
81 78
82 79
83/* Matches the group title (H6) inside a Menu or MenuBar instance */ 80/* Matches the group title (H6) inside a Menu or MenuBar instance */
84 81
85div.yuimenu h6, 82div.yuimenu h6,
86div.yuimenubar h6 { 83div.yuimenubar h6 {
87 84
88 font-size:100%; 85 font-size:100%;
89 font-weight:normal; 86 font-weight:normal;
90 margin:0; 87 margin:0;
91 border:solid 1px #c4c4be; 88 border:solid 1px #c4c4be;
92 color:#b9b9b9; 89 color:#b9b9b9;
93 90
94} 91}
95 92
96div.yuimenubar h6 { 93div.yuimenubar h6 {
97 94
98 float:left; 95 float:left;
99 display:inline; /* Prevent margin doubling in IE */ 96 display:inline; /* Prevent margin doubling in IE */
100 padding:4px 12px; 97 padding:4px 12px;
101 border-width:0 1px 0 0; 98 border-width:0 1px 0 0;
102 99
103} 100}
104 101
105div.yuimenu h6 { 102div.yuimenu h6 {
106 103
107 float:none; 104 float:none;
108 display:block; 105 display:block;
109 border-width:1px 0 0 0; 106 border-width:1px 0 0 0;
110 padding:5px 10px 0 10px; 107 padding:5px 10px 0 10px;
111 108
112} 109}
113 110
114 111
115/* Matches the UL inside a Menu or MenuBar instance */ 112/* Matches the UL inside a Menu or MenuBar instance */
116 113
117div.yuimenubar ul { 114div.yuimenubar ul {
118 115
119 list-style-type:none; 116 list-style-type:none;
120 margin:0; 117 margin:0;
121 padding:0; 118 padding:0;
122 119
123} 120}
124 121
125div.yuimenu ul { 122div.yuimenu ul {
126 123
127 list-style-type:none; 124 list-style-type:none;
128 border:solid 1px #c4c4be; 125 border:solid 1px #c4c4be;
129 border-width:1px 0 0 0; 126 border-width:1px 0 0 0;
130 margin:0; 127 margin:0;
131 padding:10px 0; 128 padding:10px 0;
132 129
133} 130}
134 131
135 132
136div.yuimenu ul.first-of-type, 133div.yuimenu ul.first-of-type,
137div.yuimenu ul.hastitle, 134div.yuimenu ul.hastitle,
138div.yuimenu h6.first-of-type { 135div.yuimenu h6.first-of-type {
139 136
140 border-width:0; 137 border-width:0;
141 138
142} 139}
143 140
144 141
145/* MenuItem and MenuBarItem styles */ 142/* MenuItem and MenuBarItem styles */
146 143
147div.yuimenu li, 144div.yuimenu li,
148div.yuimenubar li { 145div.yuimenubar li {
149 146
150 font-size:85%; 147 font-size:85%;
151 cursor:pointer; 148 cursor:pointer;
152 cursor:hand; 149 cursor:hand;
diff --git a/frontend/beta/css/yui/reset.css b/frontend/beta/css/yui/reset.css
index c72ae7b..eb8e615 100644
--- a/frontend/beta/css/yui/reset.css
+++ b/frontend/beta/css/yui/reset.css
@@ -1,43 +1,40 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29/* 26/*
30Copyright (c) 2006, Yahoo! Inc. All rights reserved. 27Copyright (c) 2006, Yahoo! Inc. All rights reserved.
31Code licensed under the BSD License: 28Code licensed under the BSD License:
32http://developer.yahoo.net/yui/license.txt 29http://developer.yahoo.net/yui/license.txt
33version: 0.11.3 30version: 0.11.3
34*/ 31*/
35body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td{margin:0;padding:0;} 32body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td{margin:0;padding:0;}
36table{border-collapse:collapse;border-spacing:0;} 33table{border-collapse:collapse;border-spacing:0;}
37fieldset,img{border:0;} 34fieldset,img{border:0;}
38address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;} 35address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}
39ol,ul {list-style:none;} 36ol,ul {list-style:none;}
40caption,th {text-align:left;} 37caption,th {text-align:left;}
41h1,h2,h3,h4,h5,h6{font-size:100%;} 38h1,h2,h3,h4,h5,h6{font-size:100%;}
42q:before,q:after{content:'';} 39q:before,q:after{content:'';}
43 40
diff --git a/frontend/beta/css/yui/tree.css b/frontend/beta/css/yui/tree.css
index 8f537ac..00aeb86 100644
--- a/frontend/beta/css/yui/tree.css
+++ b/frontend/beta/css/yui/tree.css
@@ -1,132 +1,129 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29/* 26/*
30Copyright (c) 2006, Yahoo! Inc. All rights reserved. 27Copyright (c) 2006, Yahoo! Inc. All rights reserved.
31Code licensed under the BSD License: 28Code licensed under the BSD License:
32http://developer.yahoo.com/yui/license.txt 29http://developer.yahoo.com/yui/license.txt
33Version: 0.11.3 30Version: 0.11.3
34*/ 31*/
35 32
36/* first or middle sibling, no children */ 33/* first or middle sibling, no children */
37.ygtvtn { 34.ygtvtn {
38 width:16px; height:22px; 35 width:16px; height:22px;
39 background: url(../../images/yui/treeview/tn.gif) 0 0 no-repeat; 36 background: url(../../images/yui/treeview/tn.gif) 0 0 no-repeat;
40} 37}
41 38
42/* first or middle sibling, collapsable */ 39/* first or middle sibling, collapsable */
43.ygtvtm { 40.ygtvtm {
44 width:16px; height:22px; 41 width:16px; height:22px;
45 cursor:pointer ; 42 cursor:pointer ;
46 background: url(../../images/yui/treeview/tm.gif) 0 0 no-repeat; 43 background: url(../../images/yui/treeview/tm.gif) 0 0 no-repeat;
47} 44}
48 45
49/* first or middle sibling, collapsable, hover */ 46/* first or middle sibling, collapsable, hover */
50.ygtvtmh { 47.ygtvtmh {
51 width:16px; height:22px; 48 width:16px; height:22px;
52 cursor:pointer ; 49 cursor:pointer ;
53 background: url(../../images/yui/treeview/tmh.gif) 0 0 no-repeat; 50 background: url(../../images/yui/treeview/tmh.gif) 0 0 no-repeat;
54} 51}
55 52
56/* first or middle sibling, expandable */ 53/* first or middle sibling, expandable */
57.ygtvtp { 54.ygtvtp {
58 width:16px; height:22px; 55 width:16px; height:22px;
59 cursor:pointer ; 56 cursor:pointer ;
60 background: url(../../images/yui/treeview/tp.gif) 0 0 no-repeat; 57 background: url(../../images/yui/treeview/tp.gif) 0 0 no-repeat;
61} 58}
62 59
63/* first or middle sibling, expandable, hover */ 60/* first or middle sibling, expandable, hover */
64.ygtvtph { 61.ygtvtph {
65 width:16px; height:22px; 62 width:16px; height:22px;
66 cursor:pointer ; 63 cursor:pointer ;
67 background: url(../../images/yui/treeview/tph.gif) 0 0 no-repeat; 64 background: url(../../images/yui/treeview/tph.gif) 0 0 no-repeat;
68} 65}
69 66
70/* last sibling, no children */ 67/* last sibling, no children */
71.ygtvln { 68.ygtvln {
72 width:16px; height:22px; 69 width:16px; height:22px;
73 background: url(../../images/yui/treeview/ln.gif) 0 0 no-repeat; 70 background: url(../../images/yui/treeview/ln.gif) 0 0 no-repeat;
74} 71}
75 72
76/* Last sibling, collapsable */ 73/* Last sibling, collapsable */
77.ygtvlm { 74.ygtvlm {
78 width:16px; height:22px; 75 width:16px; height:22px;
79 cursor:pointer ; 76 cursor:pointer ;
80 background: url(../../images/yui/treeview/lm.gif) 0 0 no-repeat; 77 background: url(../../images/yui/treeview/lm.gif) 0 0 no-repeat;
81} 78}
82 79
83/* Last sibling, collapsable, hover */ 80/* Last sibling, collapsable, hover */
84.ygtvlmh { 81.ygtvlmh {
85 width:16px; height:22px; 82 width:16px; height:22px;
86 cursor:pointer ; 83 cursor:pointer ;
87 background: url(../../images/yui/treeview/lmh.gif) 0 0 no-repeat; 84 background: url(../../images/yui/treeview/lmh.gif) 0 0 no-repeat;
88} 85}
89 86
90/* Last sibling, expandable */ 87/* Last sibling, expandable */
91.ygtvlp { 88.ygtvlp {
92 width:16px; height:22px; 89 width:16px; height:22px;
93 cursor:pointer ; 90 cursor:pointer ;
94 background: url(../../images/yui/treeview/lp.gif) 0 0 no-repeat; 91 background: url(../../images/yui/treeview/lp.gif) 0 0 no-repeat;
95} 92}
96 93
97/* Last sibling, expandable, hover */ 94/* Last sibling, expandable, hover */
98.ygtvlph { 95.ygtvlph {
99 width:16px; height:22px; cursor:pointer ; 96 width:16px; height:22px; cursor:pointer ;
100 background: url(../../images/yui/treeview/lph.gif) 0 0 no-repeat; 97 background: url(../../images/yui/treeview/lph.gif) 0 0 no-repeat;
101} 98}
102 99
103/* Loading icon */ 100/* Loading icon */
104.ygtvloading { 101.ygtvloading {
105 width:16px; height:22px; 102 width:16px; height:22px;
106 background: url(../../images/yui/treeview/loading.gif) 0 0 no-repeat; 103 background: url(../../images/yui/treeview/loading.gif) 0 0 no-repeat;
107} 104}
108 105
109/* the style for the empty cells that are used for rendering the depth 106/* the style for the empty cells that are used for rendering the depth
110 * of the node */ 107 * of the node */
111.ygtvdepthcell { 108.ygtvdepthcell {
112 width:16px; height:22px; 109 width:16px; height:22px;
113 background: url(../../images/yui/treeview/vline.gif) 0 0 no-repeat; 110 background: url(../../images/yui/treeview/vline.gif) 0 0 no-repeat;
114} 111}
115 112
116.ygtvblankdepthcell { width:16px; height:22px; } 113.ygtvblankdepthcell { width:16px; height:22px; }
117 114
118/* the style of the div around each node */ 115/* the style of the div around each node */
119.ygtvitem { } 116.ygtvitem { }
120 117
121/* the style of the div around each node's collection of children */ 118/* the style of the div around each node's collection of children */
122.ygtvchildren { } 119.ygtvchildren { }
123* html .ygtvchildren { height:2%; } 120* html .ygtvchildren { height:2%; }
124 121
125/* the style of the text label in ygTextNode */ 122/* the style of the text label in ygTextNode */
126.ygtvlabel, .ygtvlabel:link, .ygtvlabel:visited, .ygtvlabel:hover { 123.ygtvlabel, .ygtvlabel:link, .ygtvlabel:visited, .ygtvlabel:hover {
127 margin-left:2px; 124 margin-left:2px;
128 text-decoration: none; 125 text-decoration: none;
129} 126}
130 127
131.ygtvspacer { height: 10px; width: 10px; margin: 2px; } 128.ygtvspacer { height: 10px; width: 10px; margin: 2px; }
132 129
diff --git a/frontend/beta/js/Bookmarklet.js b/frontend/beta/js/Bookmarklet.js
index b8a0c0e..59f4fef 100644
--- a/frontend/beta/js/Bookmarklet.js
+++ b/frontend/beta/js/Bookmarklet.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29_cble = null; 26_cble = null;
30 27
31//----------------------------------------------------------------------------- 28//-----------------------------------------------------------------------------
32 29
33isLoginForm = function(aForm) { 30isLoginForm = function(aForm) {
34 var inputFields; 31 var inputFields;
35 var passwordFieldsFound; 32 var passwordFieldsFound;
36 var i,c; 33 var i,c;
37 34
38//console.log('is login form: ' + aForm.name + ' (' + aForm.id + ')'); 35//console.log('is login form: ' + aForm.name + ' (' + aForm.id + ')');
39 passwordFieldsFound = 0; 36 passwordFieldsFound = 0;
40 inputFields = aForm.elements; 37 inputFields = aForm.elements;
41 c = inputFields.length; 38 c = inputFields.length;
42 for (i=0; i<c; i++) { 39 for (i=0; i<c; i++) {
43 if (inputFields[i].type == 'password') { 40 if (inputFields[i].type == 'password') {
44 passwordFieldsFound ++; 41 passwordFieldsFound ++;
45 } 42 }
46 } 43 }
47//console.log('number of password fields found: ' + passwordFieldsFound); 44//console.log('number of password fields found: ' + passwordFieldsFound);
48 return (passwordFieldsFound == 1); 45 return (passwordFieldsFound == 1);
49}; 46};
50 47
51//----------------------------------------------------------------------------- 48//-----------------------------------------------------------------------------
52 49
53findLoginForm = function(aDocument, aLevel) { 50findLoginForm = function(aDocument, aLevel) {
54 varresult; 51 varresult;
55 vardocumentForms; 52 vardocumentForms;
56 var i,c; 53 var i,c;
57 54
58 result = null; 55 result = null;
59 56
60 try { 57 try {
61 documentForms = aDocument.getElementsByTagName('form'); 58 documentForms = aDocument.getElementsByTagName('form');
62 59
63 c = documentForms.length; 60 c = documentForms.length;
64 for (i=0; (i<c) && (result == null); i++) { 61 for (i=0; (i<c) && (result == null); i++) {
65 if (isLoginForm(documentForms[i])) { 62 if (isLoginForm(documentForms[i])) {
66 result = documentForms[i]; 63 result = documentForms[i];
67 } 64 }
68 } 65 }
69 66
70 if ((result == null) && (aLevel == 0)) { 67 if ((result == null) && (aLevel == 0)) {
71 var iFrames; 68 var iFrames;
72 69
73 iFrames = aDocument.getElementsByTagName('iframe'); 70 iFrames = aDocument.getElementsByTagName('iframe');
74 c = iFrames.length; 71 c = iFrames.length;
75 for (i=0; (i<c) && (result == null); i++) { 72 for (i=0; (i<c) && (result == null); i++) {
76 result = findLoginForm(iFrames[i].contentDocument, (aLevel + 1)); 73 result = findLoginForm(iFrames[i].contentDocument, (aLevel + 1));
77 } 74 }
78 } 75 }
79 } catch (e) { 76 } catch (e) {
80 _cble = e; 77 _cble = e;
81 } 78 }
82 79
83 return result; 80 return result;
84}; 81};
85 82
86//----------------------------------------------------------------------------- 83//-----------------------------------------------------------------------------
87 84
88inputElementValues = function(anInputElement) { 85inputElementValues = function(anInputElement) {
89 varresult; 86 varresult;
90 87
91 //if ((anInputElement instanceof HTMLInputElement) && (anInputElement.getAttribute('name') != null)) { 88 //if ((anInputElement instanceof HTMLInputElement) && (anInputElement.getAttribute('name') != null)) {
92 if ((anInputElement.tagName.toLowerCase() == 'input') && (anInputElement.getAttribute('name') != null)) { 89 if ((anInputElement.tagName.toLowerCase() == 'input') && (anInputElement.getAttribute('name') != null)) {
93 result = {}; 90 result = {};
94 result.type = anInputElement.getAttribute('type') || 'text'; 91 result.type = anInputElement.getAttribute('type') || 'text';
95 result.name = anInputElement.getAttribute('name'); 92 result.name = anInputElement.getAttribute('name');
96 // result.value = anInputElement.getAttribute('value'); 93 // result.value = anInputElement.getAttribute('value');
97 result.value = anInputElement.value; 94 result.value = anInputElement.value;
98 if (anInputElement.type.toLowerCase() == 'radio') { 95 if (anInputElement.type.toLowerCase() == 'radio') {
99 result.checked = anInputElement.checked; 96 result.checked = anInputElement.checked;
100 } 97 }
101 //} else if ((anInputElement instanceof HTMLSelectElement) && (anInputElement.getAttribute('name') != null)) { 98 //} else if ((anInputElement instanceof HTMLSelectElement) && (anInputElement.getAttribute('name') != null)) {
102 } else if ((anInputElement.tagName.toLowerCase() == 'select') && (anInputElement.getAttribute('name') != null)) { 99 } else if ((anInputElement.tagName.toLowerCase() == 'select') && (anInputElement.getAttribute('name') != null)) {
103 varoptions; 100 varoptions;
104 var c,i; 101 var c,i;
105 102
106//console.log('input element values: %o', anInputElement); 103//console.log('input element values: %o', anInputElement);
107 result = {}; 104 result = {};
108 result.type = 'select'; 105 result.type = 'select';
109 result.name = anInputElement.getAttribute('name'); 106 result.name = anInputElement.getAttribute('name');
110 107
111 result.options = []; 108 result.options = [];
112 options = anInputElement.options; 109 options = anInputElement.options;
113 c = options.length; 110 c = options.length;
114 for (i=0; i<c; i++) { 111 for (i=0; i<c; i++) {
115 varoption; 112 varoption;
116 113
117 option = {}; 114 option = {};
118 option.selected = options[i].selected; 115 option.selected = options[i].selected;
119 option.label = options[i].label || options[i].innerHTML; 116 option.label = options[i].label || options[i].innerHTML;
120 option.value = options[i].value; 117 option.value = options[i].value;
121 result.options.push(option); 118 result.options.push(option);
122 } 119 }
123 } else { 120 } else {
124 result = null; 121 result = null;
125 } 122 }
126 123
127 return result; 124 return result;
128}; 125};
129 126
130//----------------------------------------------------------------------------- 127//-----------------------------------------------------------------------------
131 128
132formParameters = function(aLoginForm) { 129formParameters = function(aLoginForm) {
133 varresult; 130 varresult;
134 vari, c; 131 vari, c;
135 varaction; 132 varaction;
136 133
137 if (aLoginForm == null) { 134 if (aLoginForm == null) {
138 result = null; 135 result = null;
139 } else { 136 } else {
140 varradioValues; 137 varradioValues;
141 varradioValueName; 138 varradioValueName;
142 139
143 result = {}; 140 result = {};
144 radioValues = {}; 141 radioValues = {};
145 142
146 action = aLoginForm.action; 143 action = aLoginForm.action;
147 if (action.constructor != String) { 144 if (action.constructor != String) {
148 action = aLoginForm.getAttribute('action'); 145 action = aLoginForm.getAttribute('action');
149 } 146 }
150 147
151 if (/^https?\:\/\/.*/.test(action)) { 148 if (/^https?\:\/\/.*/.test(action)) {
152 action = action; 149 action = action;
diff --git a/frontend/beta/js/BookmarkletHash.js b/frontend/beta/js/BookmarkletHash.js
index 19e49b7..8661eaa 100644
--- a/frontend/beta/js/BookmarkletHash.js
+++ b/frontend/beta/js/BookmarkletHash.js
@@ -1,47 +1,44 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29 //18f820faffcdb5e847d4c5d5c4a1de6743baa1a0 26 //18f820faffcdb5e847d4c5d5c4a1de6743baa1a0
30 //9b30434c73fb009b15fecaa904b44f9ced807577 27 //9b30434c73fb009b15fecaa904b44f9ced807577
31 //9b30434c73fb009b15fecaa904b44f9ced807577 28 //9b30434c73fb009b15fecaa904b44f9ced807577
32 varxh; 29 varxh;
33 vardocumentText; 30 vardocumentText;
34 31
35try { 32try {
36 xh=new XMLHttpRequest(); 33 xh=new XMLHttpRequest();
37} catch(e) { 34} catch(e) {
38 xh=new ActiveXObject("Msxml2.XMLHTTP"); 35 xh=new ActiveXObject("Msxml2.XMLHTTP");
39} 36}
40 37
41xh.open("GET", window.location, false); 38xh.open("GET", window.location, false);
42xh.send(null); 39xh.send(null);
43 40
44documentText = "#####" + xh.responseText + "####"; 41documentText = "#####" + xh.responseText + "####";
45//documentText = document.body.innerHTML; 42//documentText = document.body.innerHTML;
46 43
47console.log(documentText); \ No newline at end of file 44console.log(documentText); \ No newline at end of file
diff --git a/frontend/beta/js/Clipperz/Base.js b/frontend/beta/js/Clipperz/Base.js
index 5bd972b..1c0504b 100644
--- a/frontend/beta/js/Clipperz/Base.js
+++ b/frontend/beta/js/Clipperz/Base.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.Base) == 'undefined') { Clipperz.Base = {}; } 27if (typeof(Clipperz.Base) == 'undefined') { Clipperz.Base = {}; }
31 28
32Clipperz.Base.VERSION = "0.1"; 29Clipperz.Base.VERSION = "0.1";
33Clipperz.Base.NAME = "Clipperz.Base"; 30Clipperz.Base.NAME = "Clipperz.Base";
34 31
35MochiKit.Base.update(Clipperz.Base, { 32MochiKit.Base.update(Clipperz.Base, {
36 33
37 //------------------------------------------------------------------------- 34 //-------------------------------------------------------------------------
38 35
39 '__repr__': function () { 36 '__repr__': function () {
40 return "[" + this.NAME + " " + this.VERSION + "]"; 37 return "[" + this.NAME + " " + this.VERSION + "]";
41 }, 38 },
42 39
43 //------------------------------------------------------------------------- 40 //-------------------------------------------------------------------------
44 41
45 'toString': function () { 42 'toString': function () {
46 return this.__repr__(); 43 return this.__repr__();
47 }, 44 },
48 45
49 //------------------------------------------------------------------------- 46 //-------------------------------------------------------------------------
50 47
51 'trim': function (aValue) { 48 'trim': function (aValue) {
52 return aValue.replace(/^\s+|\s+$/g, ""); 49 return aValue.replace(/^\s+|\s+$/g, "");
53 }, 50 },
54 51
55 //------------------------------------------------------------------------- 52 //-------------------------------------------------------------------------
56 53
57 'stringToByteArray': function (aValue) { 54 'stringToByteArray': function (aValue) {
58 varresult; 55 varresult;
59 var i, c; 56 var i, c;
60 57
61 result = []; 58 result = [];
62 59
63 c = aValue.length; 60 c = aValue.length;
64 for (i=0; i<c; i++) { 61 for (i=0; i<c; i++) {
65 result[i] = aValue.charCodeAt(i); 62 result[i] = aValue.charCodeAt(i);
66 } 63 }
67 64
68 return result; 65 return result;
69 }, 66 },
70 67
71 //......................................................................... 68 //.........................................................................
72 69
73 'byteArrayToString': function (anArrayOfBytes) { 70 'byteArrayToString': function (anArrayOfBytes) {
74 varresult; 71 varresult;
75 var i, c; 72 var i, c;
76 73
77 result = ""; 74 result = "";
78 75
79 c = anArrayOfBytes.length; 76 c = anArrayOfBytes.length;
80 for (i=0; i<c; i++) { 77 for (i=0; i<c; i++) {
81 result += String.fromCharCode(anArrayOfBytes[i]); 78 result += String.fromCharCode(anArrayOfBytes[i]);
82 } 79 }
83 80
84 return result; 81 return result;
85 }, 82 },
86 83
87 //------------------------------------------------------------------------- 84 //-------------------------------------------------------------------------
88 85
89 'getValueForKeyInFormContent': function (aFormContent, aKey) { 86 'getValueForKeyInFormContent': function (aFormContent, aKey) {
90 return aFormContent[1][MochiKit.Base.find(aFormContent[0], aKey)]; 87 return aFormContent[1][MochiKit.Base.find(aFormContent[0], aKey)];
91 }, 88 },
92 89
93 //------------------------------------------------------------------------- 90 //-------------------------------------------------------------------------
94 91
95 'indexOfObjectInArray': function(anObject, anArray) { 92 'indexOfObjectInArray': function(anObject, anArray) {
96 varresult; 93 varresult;
97 vari, c; 94 vari, c;
98 95
99 result = -1; 96 result = -1;
100 97
101 c = anArray.length; 98 c = anArray.length;
102 for (i=0; ((i<c) && (result < 0)); i++) { 99 for (i=0; ((i<c) && (result < 0)); i++) {
103 if (anArray[i] === anObject) { 100 if (anArray[i] === anObject) {
104 result = i; 101 result = i;
105 } 102 }
106 } 103 }
107 104
108 return result; 105 return result;
109 }, 106 },
110 107
111 'removeObjectAtIndexFromArray': function(anIndex, anArray) { 108 'removeObjectAtIndexFromArray': function(anIndex, anArray) {
112 anArray.splice(anIndex, 1); 109 anArray.splice(anIndex, 1);
113 }, 110 },
114 111
115 'removeObjectFromArray': function(anObject, anArray) { 112 'removeObjectFromArray': function(anObject, anArray) {
116 varobjectIndex; 113 varobjectIndex;
117 114
118 objectIndex = Clipperz.Base.indexOfObjectInArray(anObject, anArray); 115 objectIndex = Clipperz.Base.indexOfObjectInArray(anObject, anArray);
119 if (objectIndex > -1) { 116 if (objectIndex > -1) {
120 Clipperz.Base.removeObjectAtIndexFromArray(objectIndex, anArray); 117 Clipperz.Base.removeObjectAtIndexFromArray(objectIndex, anArray);
121 } else { 118 } else {
122 // jslog.error("Trying to remove an object not present in the array"); 119 // jslog.error("Trying to remove an object not present in the array");
123 //TODO: raise an exception 120 //TODO: raise an exception
124 } 121 }
125 }, 122 },
126 123
127 'removeFromArray': function(anArray, anObject) { 124 'removeFromArray': function(anArray, anObject) {
128 return Clipperz.Base.removeObjectFromArray(anObject, anArray); 125 return Clipperz.Base.removeObjectFromArray(anObject, anArray);
129 }, 126 },
130 127
131 //------------------------------------------------------------------------- 128 //-------------------------------------------------------------------------
132 129
133 'splitStringAtFixedTokenSize': function(aString, aTokenSize) { 130 'splitStringAtFixedTokenSize': function(aString, aTokenSize) {
134 var result; 131 var result;
135 varstringToProcess; 132 varstringToProcess;
136 133
137 stringToProcess = aString; 134 stringToProcess = aString;
138 result = []; 135 result = [];
139 if (stringToProcess != null) { 136 if (stringToProcess != null) {
140 while (stringToProcess.length > aTokenSize) { 137 while (stringToProcess.length > aTokenSize) {
141 result.push(stringToProcess.substring(0, aTokenSize)); 138 result.push(stringToProcess.substring(0, aTokenSize));
142 stringToProcess = stringToProcess.substring(aTokenSize); 139 stringToProcess = stringToProcess.substring(aTokenSize);
143 } 140 }
144 141
145 result.push(stringToProcess); 142 result.push(stringToProcess);
146 } 143 }
147 144
148 return result; 145 return result;
149 }, 146 },
150 147
151 //------------------------------------------------------------------------- 148 //-------------------------------------------------------------------------
152 149
diff --git a/frontend/beta/js/Clipperz/ByteArray.js b/frontend/beta/js/Clipperz/ByteArray.js
index 2275087..a69aa43 100644
--- a/frontend/beta/js/Clipperz/ByteArray.js
+++ b/frontend/beta/js/Clipperz/ByteArray.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30 27
31//============================================================================= 28//=============================================================================
32 29
33Clipperz.ByteArray_abstract = function(args) { 30Clipperz.ByteArray_abstract = function(args) {
34 return this; 31 return this;
35} 32}
36 33
37Clipperz.ByteArray_abstract.prototype = MochiKit.Base.update(null, { 34Clipperz.ByteArray_abstract.prototype = MochiKit.Base.update(null, {
38 35
39 //------------------------------------------------------------------------- 36 //-------------------------------------------------------------------------
40 37
41 'toString': function() { 38 'toString': function() {
42 return "Clipperz.ByteArray_abstract"; 39 return "Clipperz.ByteArray_abstract";
43 }, 40 },
44 41
45 //------------------------------------------------------------------------- 42 //-------------------------------------------------------------------------
46 43
47 'equals': function(aValue) { 44 'equals': function(aValue) {
48 return (this.compare(aValue) == 0); 45 return (this.compare(aValue) == 0);
49 }, 46 },
50 47
51 //------------------------------------------------------------------------- 48 //-------------------------------------------------------------------------
52 49
53 'compare': function(aValue) { 50 'compare': function(aValue) {
54 var result; 51 var result;
55 var i; 52 var i;
56 53
57 result = MochiKit.Base.compare(this.length(), aValue.length()); 54 result = MochiKit.Base.compare(this.length(), aValue.length());
58 i = this.length(); 55 i = this.length();
59 56
60 while ((result == 0) && (i>0)) { 57 while ((result == 0) && (i>0)) {
61 i--; 58 i--;
62 result = MochiKit.Base.compare(this.byteAtIndex(i), aValue.byteAtIndex(i)); 59 result = MochiKit.Base.compare(this.byteAtIndex(i), aValue.byteAtIndex(i));
63 } 60 }
64 61
65 return result; 62 return result;
66 }, 63 },
67 64
68 //------------------------------------------------------------------------- 65 //-------------------------------------------------------------------------
69 66
70 'clone': function() { 67 'clone': function() {
71 throw Clipperz.Base.exception.AbstractMethod; 68 throw Clipperz.Base.exception.AbstractMethod;
72 }, 69 },
73 70
74 //------------------------------------------------------------------------- 71 //-------------------------------------------------------------------------
75 72
76 'newInstance': function() { 73 'newInstance': function() {
77 throw Clipperz.Base.exception.AbstractMethod; 74 throw Clipperz.Base.exception.AbstractMethod;
78 }, 75 },
79 76
80 //------------------------------------------------------------------------- 77 //-------------------------------------------------------------------------
81 78
82 'reset': function() { 79 'reset': function() {
83 throw Clipperz.Base.exception.AbstractMethod; 80 throw Clipperz.Base.exception.AbstractMethod;
84 }, 81 },
85 82
86 //------------------------------------------------------------------------- 83 //-------------------------------------------------------------------------
87 84
88 'length': function() { 85 'length': function() {
89 throw Clipperz.Base.exception.AbstractMethod; 86 throw Clipperz.Base.exception.AbstractMethod;
90 }, 87 },
91 88
92 //------------------------------------------------------------------------- 89 //-------------------------------------------------------------------------
93 90
94 'checkValue': function(aValue) { 91 'checkValue': function(aValue) {
95 if ((aValue & 0xff) != aValue) { 92 if ((aValue & 0xff) != aValue) {
96 MochiKit.Logging.logError("Clipperz.ByteArray.appendByte: the provided value (0x" + aValue.toString(16) + ") is not a byte value."); 93 MochiKit.Logging.logError("Clipperz.ByteArray.appendByte: the provided value (0x" + aValue.toString(16) + ") is not a byte value.");
97 throw Clipperz.ByteArray.exception.InvalidValue; 94 throw Clipperz.ByteArray.exception.InvalidValue;
98 } 95 }
99 }, 96 },
100 97
101 //------------------------------------------------------------------------- 98 //-------------------------------------------------------------------------
102 99
103 'xorMergeWithBlock': function(aBlock, anAllignment, paddingMode) { 100 'xorMergeWithBlock': function(aBlock, anAllignment, paddingMode) {
104 var result; 101 var result;
105 var a, b; 102 var a, b;
106 var aLength; 103 var aLength;
107 var bLength; 104 var bLength;
108 var i, c; 105 var i, c;
109 106
110 if (this.length() > aBlock.length()) { 107 if (this.length() > aBlock.length()) {
111 a = this; 108 a = this;
112 b = aBlock; 109 b = aBlock;
113 } else { 110 } else {
114 a = aBlock; 111 a = aBlock;
115 b = this; 112 b = this;
116 } 113 }
117 114
118 aLength = a.length(); 115 aLength = a.length();
119 bLength = b.length(); 116 bLength = b.length();
120 117
121 if (aLength != bLength) { 118 if (aLength != bLength) {
122 if (paddingMode == 'truncate') { 119 if (paddingMode == 'truncate') {
123 if (anAllignment == 'left') { 120 if (anAllignment == 'left') {
124 a = a.split(0, bLength); 121 a = a.split(0, bLength);
125 } else { 122 } else {
126 a = a.split(aLength - bLength); 123 a = a.split(aLength - bLength);
127 } 124 }
128 } else { 125 } else {
129 var ii, cc; 126 var ii, cc;
130 var padding; 127 var padding;
131 128
132 // padding = new Clipperz.ByteArray(); 129 // padding = new Clipperz.ByteArray();
133 padding = this.newInstance(); 130 padding = this.newInstance();
134 cc = aLength - bLength; 131 cc = aLength - bLength;
135 for (ii=0; ii<cc; ii++) { 132 for (ii=0; ii<cc; ii++) {
136 padding.appendByte(0); 133 padding.appendByte(0);
137 } 134 }
138 135
139 if (anAllignment == 'left') { 136 if (anAllignment == 'left') {
140 b = b.appendBlock(padding); 137 b = b.appendBlock(padding);
141 } else { 138 } else {
142 b = padding.appendBlock(b); 139 b = padding.appendBlock(b);
143 } 140 }
144 } 141 }
145 } 142 }
146 143
147 144
148 // result = new Clipperz.ByteArray(); 145 // result = new Clipperz.ByteArray();
149 result = this.newInstance(); 146 result = this.newInstance();
150 c = a.length(); 147 c = a.length();
151 for (i=0; i<c; i++) { 148 for (i=0; i<c; i++) {
152 result.appendByte(a.byteAtIndex(i) ^ b.byteAtIndex(i)); 149 result.appendByte(a.byteAtIndex(i) ^ b.byteAtIndex(i));
diff --git a/frontend/beta/js/Clipperz/CSVProcessor.js b/frontend/beta/js/Clipperz/CSVProcessor.js
index 164b02e..ec94206 100644
--- a/frontend/beta/js/Clipperz/CSVProcessor.js
+++ b/frontend/beta/js/Clipperz/CSVProcessor.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30 27
31 28
32Clipperz.CSVProcessor = function(args) { 29Clipperz.CSVProcessor = function(args) {
33 args = args || {}; 30 args = args || {};
34 31
35 // this._status = undefined; 32 // this._status = undefined;
36 // this._error_input= undefined; 33 // this._error_input= undefined;
37 // this._string = undefined; 34 // this._string = undefined;
38 // this._fields = undefined; 35 // this._fields = undefined;
39 36
40 this._quoteChar = args['quoteChar'] ||"\042"; 37 this._quoteChar = args['quoteChar'] ||"\042";
41 this._eol = args['eol'] ||""; 38 this._eol = args['eol'] ||"";
42 this._escapeChar = args['escapeChar'] ||"\042"; 39 this._escapeChar = args['escapeChar'] ||"\042";
43 this._separatorChar = args['separatorChar'] ||","; 40 this._separatorChar = args['separatorChar'] ||",";
44 this._binary = args['binary'] ||false; 41 this._binary = args['binary'] ||false;
45 this._alwaysQuote = args['alwaysQuote'] ||false; 42 this._alwaysQuote = args['alwaysQuote'] ||false;
46 43
47 return this; 44 return this;
48} 45}
49 46
50//============================================================================= 47//=============================================================================
51 48
52Clipperz.CSVProcessor.prototype = MochiKit.Base.update(null, { 49Clipperz.CSVProcessor.prototype = MochiKit.Base.update(null, {
53 50
54 //------------------------------------------------------------------------- 51 //-------------------------------------------------------------------------
55 52
56 'quoteChar': function() { 53 'quoteChar': function() {
57 return this._quoteChar; 54 return this._quoteChar;
58 }, 55 },
59 56
60 //------------------------------------------------------------------------- 57 //-------------------------------------------------------------------------
61 58
62 'eol': function() { 59 'eol': function() {
63 return this._eol; 60 return this._eol;
64 }, 61 },
65 62
66 //------------------------------------------------------------------------- 63 //-------------------------------------------------------------------------
67 64
68 'escapeChar': function() { 65 'escapeChar': function() {
69 return this._escapeChar; 66 return this._escapeChar;
70 }, 67 },
71 68
72 //------------------------------------------------------------------------- 69 //-------------------------------------------------------------------------
73 70
74 'separatorChar': function() { 71 'separatorChar': function() {
75 return this._separatorChar; 72 return this._separatorChar;
76 }, 73 },
77 74
78 'setSeparatorChar': function(aValue) { 75 'setSeparatorChar': function(aValue) {
79 this._separatorChar = aValue; 76 this._separatorChar = aValue;
80 }, 77 },
81 78
82 //------------------------------------------------------------------------- 79 //-------------------------------------------------------------------------
83 80
84 'binary': function() { 81 'binary': function() {
85 return this._binary; 82 return this._binary;
86 }, 83 },
87 84
88 //------------------------------------------------------------------------- 85 //-------------------------------------------------------------------------
89 86
90 'alwaysQuote': function() { 87 'alwaysQuote': function() {
91 return this._alwaysQuote; 88 return this._alwaysQuote;
92 }, 89 },
93 90
94 //------------------------------------------------------------------------- 91 //-------------------------------------------------------------------------
95/* 92/*
96 'parse': function(aValue) { 93 'parse': function(aValue) {
97 var result; 94 var result;
98 var lines; 95 var lines;
99 var parameter; 96 var parameter;
100 97
101//MochiKit.Logging.logDebug(">>> CSVProcessor.parse"); 98//MochiKit.Logging.logDebug(">>> CSVProcessor.parse");
102 result = []; 99 result = [];
103 100
104 lines = aValue.replace(/\r?\n/g, "\n").replace(/^\n* /g, "").replace(/\n$/g, "");; 101 lines = aValue.replace(/\r?\n/g, "\n").replace(/^\n* /g, "").replace(/\n$/g, "");;
105 parameter = { 102 parameter = {
106 line: lines 103 line: lines
107 } 104 }
108 105
109 do { 106 do {
110 var fields; 107 var fields;
111 108
112 fields = this.parseLine(parameter); 109 fields = this.parseLine(parameter);
113 110
114 if (fields != null) { 111 if (fields != null) {
115 result.push(fields); 112 result.push(fields);
116 } 113 }
117 114
118 parameter.line = parameter.line.replace(/^\n* /g, "").replace(/\n$/g, ""); 115 parameter.line = parameter.line.replace(/^\n* /g, "").replace(/\n$/g, "");
119 116
120//MochiKit.Logging.logDebug("line: '" + parameter.line + "'"); 117//MochiKit.Logging.logDebug("line: '" + parameter.line + "'");
121 } while (parameter.line != ""); 118 } while (parameter.line != "");
122//MochiKit.Logging.logDebug("--- CSVProcessor.parse - result: " + Clipperz.Base.serializeJSON(result)); 119//MochiKit.Logging.logDebug("--- CSVProcessor.parse - result: " + Clipperz.Base.serializeJSON(result));
123//MochiKit.Logging.logDebug("<<< CSVProcessor.parse"); 120//MochiKit.Logging.logDebug("<<< CSVProcessor.parse");
124 121
125 return result; 122 return result;
126 }, 123 },
127*/ 124*/
128 //------------------------------------------------------------------------- 125 //-------------------------------------------------------------------------
129 126
130 'deferredParse_core': function(aContext) { 127 'deferredParse_core': function(aContext) {
131 var deferredResult; 128 var deferredResult;
132 129
133 if (aContext.line == "") { 130 if (aContext.line == "") {
134 deferredResult = MochiKit.Async.succeed(aContext.result); 131 deferredResult = MochiKit.Async.succeed(aContext.result);
135 } else { 132 } else {
136 var fields; 133 var fields;
137 134
138 fields = this.parseLine(aContext); 135 fields = this.parseLine(aContext);
139 if (fields != null) { 136 if (fields != null) {
140 aContext.result.push(fields); 137 aContext.result.push(fields);
141 } 138 }
142 139
143 aContext.line = aContext.line.replace(/^\n*/g, "").replace(/\n$/g, ""); 140 aContext.line = aContext.line.replace(/^\n*/g, "").replace(/\n$/g, "");
144 141
145 deferredResult = new MochiKit.Async.Deferred(); 142 deferredResult = new MochiKit.Async.Deferred();
146 deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'importProcessorProgressUpdate', {status:'processing', size:aContext.size, progress:(aContext.size - aContext.line.length)}); 143 deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'importProcessorProgressUpdate', {status:'processing', size:aContext.size, progress:(aContext.size - aContext.line.length)});
147 deferredResult.addCallback(MochiKit.Async.wait, 0.2); 144 deferredResult.addCallback(MochiKit.Async.wait, 0.2);
148 deferredResult.addCallback(MochiKit.Base.method(this, 'deferredParse_core')) 145 deferredResult.addCallback(MochiKit.Base.method(this, 'deferredParse_core'))
149 deferredResult.callback(aContext); 146 deferredResult.callback(aContext);
150 } 147 }
151 148
152 return deferredResult; 149 return deferredResult;
diff --git a/frontend/beta/js/Clipperz/Crypto/AES.js b/frontend/beta/js/Clipperz/Crypto/AES.js
index a60df5c..7ddda3e 100644
--- a/frontend/beta/js/Clipperz/Crypto/AES.js
+++ b/frontend/beta/js/Clipperz/Crypto/AES.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) { 26try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) {
30 throw "Clipperz.Crypto.AES depends on Clipperz.ByteArray!"; 27 throw "Clipperz.Crypto.AES depends on Clipperz.ByteArray!";
31} 28}
32 29
33 //Dependency commented to avoid a circular reference 30 //Dependency commented to avoid a circular reference
34//try { if (typeof(Clipperz.Crypto.PRNG) == 'undefined') { throw ""; }} catch (e) { 31//try { if (typeof(Clipperz.Crypto.PRNG) == 'undefined') { throw ""; }} catch (e) {
35 //throw "Clipperz.Crypto.AES depends on Clipperz.Crypto.PRNG!"; 32 //throw "Clipperz.Crypto.AES depends on Clipperz.Crypto.PRNG!";
36//} 33//}
37 34
38if (typeof(Clipperz.Crypto.AES) == 'undefined') { Clipperz.Crypto.AES = {}; } 35if (typeof(Clipperz.Crypto.AES) == 'undefined') { Clipperz.Crypto.AES = {}; }
39 36
40//############################################################################# 37//#############################################################################
41 38
42Clipperz.Crypto.AES.DeferredExecutionContext = function(args) { 39Clipperz.Crypto.AES.DeferredExecutionContext = function(args) {
43 args = args || {}; 40 args = args || {};
44 41
45 this._key = args.key; 42 this._key = args.key;
46 this._message = args.message; 43 this._message = args.message;
47 this._result = args.message.clone(); 44 this._result = args.message.clone();
48 this._nonce = args.nonce; 45 this._nonce = args.nonce;
49 this._messageLength = this._message.length(); 46 this._messageLength = this._message.length();
50 47
51 this._messageArray = this._message.arrayValues(); 48 this._messageArray = this._message.arrayValues();
52 this._resultArray = this._result.arrayValues(); 49 this._resultArray = this._result.arrayValues();
53 this._nonceArray = this._nonce.arrayValues(); 50 this._nonceArray = this._nonce.arrayValues();
54 51
55 this._executionStep = 0; 52 this._executionStep = 0;
56 53
57 return this; 54 return this;
58} 55}
59 56
60Clipperz.Crypto.AES.DeferredExecutionContext.prototype = MochiKit.Base.update(null, { 57Clipperz.Crypto.AES.DeferredExecutionContext.prototype = MochiKit.Base.update(null, {
61 58
62 'key': function() { 59 'key': function() {
63 return this._key; 60 return this._key;
64 }, 61 },
65 62
66 'message': function() { 63 'message': function() {
67 return this._message; 64 return this._message;
68 }, 65 },
69 66
70 'messageLength': function() { 67 'messageLength': function() {
71 return this._messageLength; 68 return this._messageLength;
72 }, 69 },
73 70
74 'result': function() { 71 'result': function() {
75 return new Clipperz.ByteArray(this.resultArray()); 72 return new Clipperz.ByteArray(this.resultArray());
76 }, 73 },
77 74
78 'nonce': function() { 75 'nonce': function() {
79 return this._nonce; 76 return this._nonce;
80 }, 77 },
81 78
82 'messageArray': function() { 79 'messageArray': function() {
83 return this._messageArray; 80 return this._messageArray;
84 }, 81 },
85 82
86 'resultArray': function() { 83 'resultArray': function() {
87 return this._resultArray; 84 return this._resultArray;
88 }, 85 },
89 86
90 'nonceArray': function() { 87 'nonceArray': function() {
91 return this._nonceArray; 88 return this._nonceArray;
92 }, 89 },
93 90
94 'elaborationChunkSize': function() { 91 'elaborationChunkSize': function() {
95 return Clipperz.Crypto.AES.DeferredExecution.chunkSize; 92 return Clipperz.Crypto.AES.DeferredExecution.chunkSize;
96 }, 93 },
97 94
98 'executionStep': function() { 95 'executionStep': function() {
99 return this._executionStep; 96 return this._executionStep;
100 }, 97 },
101 98
102 'setExecutionStep': function(aValue) { 99 'setExecutionStep': function(aValue) {
103 this._executionStep = aValue; 100 this._executionStep = aValue;
104 }, 101 },
105 102
106 'pause': function(aValue) { 103 'pause': function(aValue) {
107 return MochiKit.Async.wait(Clipperz.Crypto.AES.DeferredExecution.pauseTime, aValue); 104 return MochiKit.Async.wait(Clipperz.Crypto.AES.DeferredExecution.pauseTime, aValue);
108 }, 105 },
109 106
110 //----------------------------------------------------------------------------- 107 //-----------------------------------------------------------------------------
111 __syntaxFix__: "syntax fix" 108 __syntaxFix__: "syntax fix"
112 109
113}); 110});
114 111
115//############################################################################# 112//#############################################################################
116 113
117Clipperz.Crypto.AES.Key = function(args) { 114Clipperz.Crypto.AES.Key = function(args) {
118 args = args || {}; 115 args = args || {};
119 116
120 this._key = args.key; 117 this._key = args.key;
121 this._keySize = args.keySize || this.key().length(); 118 this._keySize = args.keySize || this.key().length();
122 119
123 if (this.keySize() == 128/8) { 120 if (this.keySize() == 128/8) {
124 this._b = 176; 121 this._b = 176;
125 this._numberOfRounds = 10; 122 this._numberOfRounds = 10;
126 } else if (this.keySize() == 256/8) { 123 } else if (this.keySize() == 256/8) {
127 this._b = 240; 124 this._b = 240;
128 this._numberOfRounds = 14; 125 this._numberOfRounds = 14;
129 } else { 126 } else {
130 MochiKit.Logging.logError("AES unsupported key size: " + (this.keySize() * 8) + " bits"); 127 MochiKit.Logging.logError("AES unsupported key size: " + (this.keySize() * 8) + " bits");
131 throw Clipperz.Crypto.AES.exception.UnsupportedKeySize; 128 throw Clipperz.Crypto.AES.exception.UnsupportedKeySize;
132 } 129 }
133 130
134 this._stretchedKey = null; 131 this._stretchedKey = null;
135 132
136 return this; 133 return this;
137} 134}
138 135
139Clipperz.Crypto.AES.Key.prototype = MochiKit.Base.update(null, { 136Clipperz.Crypto.AES.Key.prototype = MochiKit.Base.update(null, {
140 137
141 'asString': function() { 138 'asString': function() {
142 return "Clipperz.Crypto.AES.Key (" + this.key().toHexString() + ")"; 139 return "Clipperz.Crypto.AES.Key (" + this.key().toHexString() + ")";
143 }, 140 },
144 141
145 //----------------------------------------------------------------------------- 142 //-----------------------------------------------------------------------------
146 143
147 'key': function() { 144 'key': function() {
148 return this._key; 145 return this._key;
149 }, 146 },
150 147
151 'keySize': function() { 148 'keySize': function() {
152 return this._keySize; 149 return this._keySize;
diff --git a/frontend/beta/js/Clipperz/Crypto/Base.js b/frontend/beta/js/Clipperz/Crypto/Base.js
index b69dcc8..d3a8e36 100644
--- a/frontend/beta/js/Clipperz/Crypto/Base.js
+++ b/frontend/beta/js/Clipperz/Crypto/Base.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29try { if (typeof(Clipperz.Base) == 'undefined') { throw ""; }} catch (e) { 26try { if (typeof(Clipperz.Base) == 'undefined') { throw ""; }} catch (e) {
30 throw "Clipperz.Crypto.Base depends on Clipperz.Base!"; 27 throw "Clipperz.Crypto.Base depends on Clipperz.Base!";
31} 28}
32 29
33if (typeof(Clipperz.Crypto) == 'undefined') { Clipperz.Crypto = {}; } 30if (typeof(Clipperz.Crypto) == 'undefined') { Clipperz.Crypto = {}; }
34if (typeof(Clipperz.Crypto.Base) == 'undefined') { Clipperz.Crypto.Base = {}; } 31if (typeof(Clipperz.Crypto.Base) == 'undefined') { Clipperz.Crypto.Base = {}; }
35 32
36Clipperz.Crypto.Base.VERSION = "0.1"; 33Clipperz.Crypto.Base.VERSION = "0.1";
37Clipperz.Crypto.Base.NAME = "Clipperz.Crypto.Base"; 34Clipperz.Crypto.Base.NAME = "Clipperz.Crypto.Base";
38 35
39//############################################################################# 36//#############################################################################
40 //Downloaded on March 30, 2006 from http://anmar.eu.org/projects/jssha2/files/jssha2-0.3.zip (jsSha2/sha256.js) 37 //Downloaded on March 30, 2006 from http://anmar.eu.org/projects/jssha2/files/jssha2-0.3.zip (jsSha2/sha256.js)
41//############################################################################# 38//#############################################################################
42 39
43/* A JavaScript implementation of the Secure Hash Algorithm, SHA-256 40/* A JavaScript implementation of the Secure Hash Algorithm, SHA-256
44 * Version 0.3 Copyright Angel Marin 2003-2004 - http://anmar.eu.org/ 41 * Version 0.3 Copyright Angel Marin 2003-2004 - http://anmar.eu.org/
45 * Distributed under the BSD License 42 * Distributed under the BSD License
46 * Some bits taken from Paul Johnston's SHA-1 implementation 43 * Some bits taken from Paul Johnston's SHA-1 implementation
47 */ 44 */
48var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */ 45var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */
49function safe_add (x, y) { 46function safe_add (x, y) {
50 var lsw = (x & 0xFFFF) + (y & 0xFFFF); 47 var lsw = (x & 0xFFFF) + (y & 0xFFFF);
51 var msw = (x >> 16) + (y >> 16) + (lsw >> 16); 48 var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
52 return (msw << 16) | (lsw & 0xFFFF); 49 return (msw << 16) | (lsw & 0xFFFF);
53} 50}
54function S (X, n) {return ( X >>> n ) | (X << (32 - n));} 51function S (X, n) {return ( X >>> n ) | (X << (32 - n));}
55function R (X, n) {return ( X >>> n );} 52function R (X, n) {return ( X >>> n );}
56function Ch(x, y, z) {return ((x & y) ^ ((~x) & z));} 53function Ch(x, y, z) {return ((x & y) ^ ((~x) & z));}
57function Maj(x, y, z) {return ((x & y) ^ (x & z) ^ (y & z));} 54function Maj(x, y, z) {return ((x & y) ^ (x & z) ^ (y & z));}
58function Sigma0256(x) {return (S(x, 2) ^ S(x, 13) ^ S(x, 22));} 55function Sigma0256(x) {return (S(x, 2) ^ S(x, 13) ^ S(x, 22));}
59function Sigma1256(x) {return (S(x, 6) ^ S(x, 11) ^ S(x, 25));} 56function Sigma1256(x) {return (S(x, 6) ^ S(x, 11) ^ S(x, 25));}
60function Gamma0256(x) {return (S(x, 7) ^ S(x, 18) ^ R(x, 3));} 57function Gamma0256(x) {return (S(x, 7) ^ S(x, 18) ^ R(x, 3));}
61function Gamma1256(x) {return (S(x, 17) ^ S(x, 19) ^ R(x, 10));} 58function Gamma1256(x) {return (S(x, 17) ^ S(x, 19) ^ R(x, 10));}
62function core_sha256 (m, l) { 59function core_sha256 (m, l) {
63 var K = new Array(0x428A2F98,0x71374491,0xB5C0FBCF,0xE9B5DBA5,0x3956C25B,0x59F111F1,0x923F82A4,0xAB1C5ED5,0xD807AA98,0x12835B01,0x243185BE,0x550C7DC3,0x72BE5D74,0x80DEB1FE,0x9BDC06A7,0xC19BF174,0xE49B69C1,0xEFBE4786,0xFC19DC6,0x240CA1CC,0x2DE92C6F,0x4A7484AA,0x5CB0A9DC,0x76F988DA,0x983E5152,0xA831C66D,0xB00327C8,0xBF597FC7,0xC6E00BF3,0xD5A79147,0x6CA6351,0x14292967,0x27B70A85,0x2E1B2138,0x4D2C6DFC,0x53380D13,0x650A7354,0x766A0ABB,0x81C2C92E,0x92722C85,0xA2BFE8A1,0xA81A664B,0xC24B8B70,0xC76C51A3,0xD192E819,0xD6990624,0xF40E3585,0x106AA070,0x19A4C116,0x1E376C08,0x2748774C,0x34B0BCB5,0x391C0CB3,0x4ED8AA4A,0x5B9CCA4F,0x682E6FF3,0x748F82EE,0x78A5636F,0x84C87814,0x8CC70208,0x90BEFFFA,0xA4506CEB,0xBEF9A3F7,0xC67178F2); 60 var K = new Array(0x428A2F98,0x71374491,0xB5C0FBCF,0xE9B5DBA5,0x3956C25B,0x59F111F1,0x923F82A4,0xAB1C5ED5,0xD807AA98,0x12835B01,0x243185BE,0x550C7DC3,0x72BE5D74,0x80DEB1FE,0x9BDC06A7,0xC19BF174,0xE49B69C1,0xEFBE4786,0xFC19DC6,0x240CA1CC,0x2DE92C6F,0x4A7484AA,0x5CB0A9DC,0x76F988DA,0x983E5152,0xA831C66D,0xB00327C8,0xBF597FC7,0xC6E00BF3,0xD5A79147,0x6CA6351,0x14292967,0x27B70A85,0x2E1B2138,0x4D2C6DFC,0x53380D13,0x650A7354,0x766A0ABB,0x81C2C92E,0x92722C85,0xA2BFE8A1,0xA81A664B,0xC24B8B70,0xC76C51A3,0xD192E819,0xD6990624,0xF40E3585,0x106AA070,0x19A4C116,0x1E376C08,0x2748774C,0x34B0BCB5,0x391C0CB3,0x4ED8AA4A,0x5B9CCA4F,0x682E6FF3,0x748F82EE,0x78A5636F,0x84C87814,0x8CC70208,0x90BEFFFA,0xA4506CEB,0xBEF9A3F7,0xC67178F2);
64 var HASH = new Array(0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19); 61 var HASH = new Array(0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19);
65 var W = new Array(64); 62 var W = new Array(64);
66 var a, b, c, d, e, f, g, h, i, j; 63 var a, b, c, d, e, f, g, h, i, j;
67 var T1, T2; 64 var T1, T2;
68 /* append padding */ 65 /* append padding */
69 m[l >> 5] |= 0x80 << (24 - l % 32); 66 m[l >> 5] |= 0x80 << (24 - l % 32);
70 m[((l + 64 >> 9) << 4) + 15] = l; 67 m[((l + 64 >> 9) << 4) + 15] = l;
71 for ( var i = 0; i<m.length; i+=16 ) { 68 for ( var i = 0; i<m.length; i+=16 ) {
72 a = HASH[0]; b = HASH[1]; c = HASH[2]; d = HASH[3]; e = HASH[4]; f = HASH[5]; g = HASH[6]; h = HASH[7]; 69 a = HASH[0]; b = HASH[1]; c = HASH[2]; d = HASH[3]; e = HASH[4]; f = HASH[5]; g = HASH[6]; h = HASH[7];
73 for ( var j = 0; j<64; j++) { 70 for ( var j = 0; j<64; j++) {
74 if (j < 16) W[j] = m[j + i]; 71 if (j < 16) W[j] = m[j + i];
75 else W[j] = safe_add(safe_add(safe_add(Gamma1256(W[j - 2]), W[j - 7]), Gamma0256(W[j - 15])), W[j - 16]); 72 else W[j] = safe_add(safe_add(safe_add(Gamma1256(W[j - 2]), W[j - 7]), Gamma0256(W[j - 15])), W[j - 16]);
76 T1 = safe_add(safe_add(safe_add(safe_add(h, Sigma1256(e)), Ch(e, f, g)), K[j]), W[j]); 73 T1 = safe_add(safe_add(safe_add(safe_add(h, Sigma1256(e)), Ch(e, f, g)), K[j]), W[j]);
77 T2 = safe_add(Sigma0256(a), Maj(a, b, c)); 74 T2 = safe_add(Sigma0256(a), Maj(a, b, c));
78 h = g; g = f; f = e; e = safe_add(d, T1); d = c; c = b; b = a; a = safe_add(T1, T2); 75 h = g; g = f; f = e; e = safe_add(d, T1); d = c; c = b; b = a; a = safe_add(T1, T2);
79 } 76 }
80 HASH[0] = safe_add(a, HASH[0]); HASH[1] = safe_add(b, HASH[1]); HASH[2] = safe_add(c, HASH[2]); HASH[3] = safe_add(d, HASH[3]); HASH[4] = safe_add(e, HASH[4]); HASH[5] = safe_add(f, HASH[5]); HASH[6] = safe_add(g, HASH[6]); HASH[7] = safe_add(h, HASH[7]); 77 HASH[0] = safe_add(a, HASH[0]); HASH[1] = safe_add(b, HASH[1]); HASH[2] = safe_add(c, HASH[2]); HASH[3] = safe_add(d, HASH[3]); HASH[4] = safe_add(e, HASH[4]); HASH[5] = safe_add(f, HASH[5]); HASH[6] = safe_add(g, HASH[6]); HASH[7] = safe_add(h, HASH[7]);
81 } 78 }
82 return HASH; 79 return HASH;
83} 80}
84function str2binb (str) { 81function str2binb (str) {
85 var bin = Array(); 82 var bin = Array();
86 var mask = (1 << chrsz) - 1; 83 var mask = (1 << chrsz) - 1;
87 for(var i = 0; i < str.length * chrsz; i += chrsz) 84 for(var i = 0; i < str.length * chrsz; i += chrsz)
88 bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (24 - i%32); 85 bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (24 - i%32);
89 return bin; 86 return bin;
90} 87}
91function binb2hex (binarray) { 88function binb2hex (binarray) {
92 var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ 89 var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */
93 var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; 90 var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
94 var str = ""; 91 var str = "";
95 for (var i = 0; i < binarray.length * 4; i++) { 92 for (var i = 0; i < binarray.length * 4; i++) {
96 str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) + hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF); 93 str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) + hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF);
97 } 94 }
98 return str; 95 return str;
99} 96}
100function hex_sha256(s){return binb2hex(core_sha256(str2binb(s),s.length * chrsz));} 97function hex_sha256(s){return binb2hex(core_sha256(str2binb(s),s.length * chrsz));}
101 98
102 99
103 100
104//############################################################################# 101//#############################################################################
105 //Downloaded on March 30, 2006 from http://www.fourmilab.ch/javascrypt/javascrypt.zip (entropy.js) 102 //Downloaded on March 30, 2006 from http://www.fourmilab.ch/javascrypt/javascrypt.zip (entropy.js)
106//############################################################################# 103//#############################################################################
107 104
108 // Entropy collection utilities 105 // Entropy collection utilities
109 106
110 /*Start by declaring static storage and initialise 107 /*Start by declaring static storage and initialise
111 the entropy vector from the time we come through 108 the entropy vector from the time we come through
112 here. */ 109 here. */
113 110
114 var entropyData = new Array(); // Collected entropy data 111 var entropyData = new Array(); // Collected entropy data
115 var edlen = 0; // Keyboard array data length 112 var edlen = 0; // Keyboard array data length
116 113
117 addEntropyTime(); // Start entropy collection with page load time 114 addEntropyTime(); // Start entropy collection with page load time
118 ce(); // Roll milliseconds into initial entropy 115 ce(); // Roll milliseconds into initial entropy
119 116
120 //Add a byte to the entropy vector 117 //Add a byte to the entropy vector
121 118
122 function addEntropyByte(b) { 119 function addEntropyByte(b) {
123 entropyData[edlen++] = b; 120 entropyData[edlen++] = b;
124 } 121 }
125 122
126 /*Capture entropy. When the user presses a key or performs 123 /*Capture entropy. When the user presses a key or performs
127 various other events for which we can request 124 various other events for which we can request
128 notification, add the time in 255ths of a second to the 125 notification, add the time in 255ths of a second to the
129 entropyData array. The name of the function is short 126 entropyData array. The name of the function is short
130 so it doesn't bloat the form object declarations in 127 so it doesn't bloat the form object declarations in
131 which it appears in various "onXXX" events. */ 128 which it appears in various "onXXX" events. */
132 129
133 function ce() { 130 function ce() {
134 addEntropyByte(Math.floor((((new Date).getMilliseconds()) * 255) / 999)); 131 addEntropyByte(Math.floor((((new Date).getMilliseconds()) * 255) / 999));
135 } 132 }
136 133
137 //Add a 32 bit quantity to the entropy vector 134 //Add a 32 bit quantity to the entropy vector
138 135
139 function addEntropy32(w) { 136 function addEntropy32(w) {
140 var i; 137 var i;
141 138
142 for (i = 0; i < 4; i++) { 139 for (i = 0; i < 4; i++) {
143 addEntropyByte(w & 0xFF); 140 addEntropyByte(w & 0xFF);
144 w >>= 8; 141 w >>= 8;
145 } 142 }
146 } 143 }
147 144
148 /*Add the current time and date (milliseconds since the epoch, 145 /*Add the current time and date (milliseconds since the epoch,
149 truncated to 32 bits) to the entropy vector. */ 146 truncated to 32 bits) to the entropy vector. */
150 147
151 function addEntropyTime() { 148 function addEntropyTime() {
152 addEntropy32((new Date()).getTime()); 149 addEntropy32((new Date()).getTime());
diff --git a/frontend/beta/js/Clipperz/Crypto/BigInt.js b/frontend/beta/js/Clipperz/Crypto/BigInt.js
index d4d05d2..41483a3 100644
--- a/frontend/beta/js/Clipperz/Crypto/BigInt.js
+++ b/frontend/beta/js/Clipperz/Crypto/BigInt.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.Crypto) == 'undefined') { Clipperz.Crypto = {}; } 27if (typeof(Clipperz.Crypto) == 'undefined') { Clipperz.Crypto = {}; }
31 28
32//############################################################################# 29//#############################################################################
33 //Downloaded on March 05, 2007 from http://www.leemon.com/crypto/BigInt.js 30 //Downloaded on March 05, 2007 from http://www.leemon.com/crypto/BigInt.js
34//############################################################################# 31//#############################################################################
35 32
36 33
37//////////////////////////////////////////////////////////////////////////////////////// 34////////////////////////////////////////////////////////////////////////////////////////
38// Big Integer Library v. 5.0 35// Big Integer Library v. 5.0
39// Created 2000, last modified 2006 36// Created 2000, last modified 2006
40// Leemon Baird 37// Leemon Baird
41// www.leemon.com 38// www.leemon.com
42// 39//
43// This file is public domain. You can use it for any purpose without restriction. 40// This file is public domain. You can use it for any purpose without restriction.
44// I do not guarantee that it is correct, so use it at your own risk. If you use 41// I do not guarantee that it is correct, so use it at your own risk. If you use
45// it for something interesting, I'd appreciate hearing about it. If you find 42// it for something interesting, I'd appreciate hearing about it. If you find
46// any bugs or make any improvements, I'd appreciate hearing about those too. 43// any bugs or make any improvements, I'd appreciate hearing about those too.
47// It would also be nice if my name and address were left in the comments. 44// It would also be nice if my name and address were left in the comments.
48// But none of that is required. 45// But none of that is required.
49// 46//
50// This code defines a bigInt library for arbitrary-precision integers. 47// This code defines a bigInt library for arbitrary-precision integers.
51// A bigInt is an array of integers storing the value in chunks of bpe bits, 48// A bigInt is an array of integers storing the value in chunks of bpe bits,
52// little endian (buff[0] is the least significant word). 49// little endian (buff[0] is the least significant word).
53// Negative bigInts are stored two's complement. 50// Negative bigInts are stored two's complement.
54// Some functions assume their parameters have at least one leading zero element. 51// Some functions assume their parameters have at least one leading zero element.
55// Functions with an underscore at the end of the name have unpredictable behavior in case of overflow, 52// Functions with an underscore at the end of the name have unpredictable behavior in case of overflow,
56// so the caller must make sure overflow won't happen. 53// so the caller must make sure overflow won't happen.
57// For each function where a parameter is modified, that same 54// For each function where a parameter is modified, that same
58// variable must not be used as another argument too. 55// variable must not be used as another argument too.
59// So, you cannot square x by doing multMod_(x,x,n). 56// So, you cannot square x by doing multMod_(x,x,n).
60// You must use squareMod_(x,n) instead, or do y=dup(x); multMod_(x,y,n). 57// You must use squareMod_(x,n) instead, or do y=dup(x); multMod_(x,y,n).
61// 58//
62// These functions are designed to avoid frequent dynamic memory allocation in the inner loop. 59// These functions are designed to avoid frequent dynamic memory allocation in the inner loop.
63// For most functions, if it needs a BigInt as a local variable it will actually use 60// For most functions, if it needs a BigInt as a local variable it will actually use
64// a global, and will only allocate to it when it's not the right size. This ensures 61// a global, and will only allocate to it when it's not the right size. This ensures
65// that when a function is called repeatedly with same-sized parameters, it only allocates 62// that when a function is called repeatedly with same-sized parameters, it only allocates
66// memory on the first call. 63// memory on the first call.
67// 64//
68// Note that for cryptographic purposes, the calls to Math.random() must 65// Note that for cryptographic purposes, the calls to Math.random() must
69// be replaced with calls to a better pseudorandom number generator. 66// be replaced with calls to a better pseudorandom number generator.
70// 67//
71// In the following, "bigInt" means a bigInt with at least one leading zero element, 68// In the following, "bigInt" means a bigInt with at least one leading zero element,
72// and "integer" means a nonnegative integer less than radix. In some cases, integer 69// and "integer" means a nonnegative integer less than radix. In some cases, integer
73// can be negative. Negative bigInts are 2s complement. 70// can be negative. Negative bigInts are 2s complement.
74// 71//
75// The following functions do not modify their inputs, but dynamically allocate memory every time they are called: 72// The following functions do not modify their inputs, but dynamically allocate memory every time they are called:
76// 73//
77// function bigInt2str(x,base) //convert a bigInt into a string in a given base, from base 2 up to base 95 74// function bigInt2str(x,base) //convert a bigInt into a string in a given base, from base 2 up to base 95
78// function dup(x) //returns a copy of bigInt x 75// function dup(x) //returns a copy of bigInt x
79// function findPrimes(n) //return array of all primes less than integer n 76// function findPrimes(n) //return array of all primes less than integer n
80// function int2bigInt(t,n,m) //convert integer t to a bigInt with at least n bits and m array elements 77// function int2bigInt(t,n,m) //convert integer t to a bigInt with at least n bits and m array elements
81// function int2bigInt(s,b,n,m) //convert string s in base b to a bigInt with at least n bits and m array elements 78// function int2bigInt(s,b,n,m) //convert string s in base b to a bigInt with at least n bits and m array elements
82// function trim(x,k) //return a copy of x with exactly k leading zero elements 79// function trim(x,k) //return a copy of x with exactly k leading zero elements
83// 80//
84// The following functions do not modify their inputs, so there is never a problem with the result being too big: 81// The following functions do not modify their inputs, so there is never a problem with the result being too big:
85// 82//
86// function bitSize(x) //returns how many bits long the bigInt x is, not counting leading zeros 83// function bitSize(x) //returns how many bits long the bigInt x is, not counting leading zeros
87// function equals(x,y) //is the bigInt x equal to the bigint y? 84// function equals(x,y) //is the bigInt x equal to the bigint y?
88// function equalsInt(x,y) //is bigint x equal to integer y? 85// function equalsInt(x,y) //is bigint x equal to integer y?
89// function greater(x,y) //is x>y? (x and y are nonnegative bigInts) 86// function greater(x,y) //is x>y? (x and y are nonnegative bigInts)
90// function greaterShift(x,y,shift)//is (x <<(shift*bpe)) > y? 87// function greaterShift(x,y,shift)//is (x <<(shift*bpe)) > y?
91// function isZero(x) //is the bigInt x equal to zero? 88// function isZero(x) //is the bigInt x equal to zero?
92// function millerRabin(x,b) //does one round of Miller-Rabin base integer b say that bigInt x is possibly prime (as opposed to definitely composite)? 89// function millerRabin(x,b) //does one round of Miller-Rabin base integer b say that bigInt x is possibly prime (as opposed to definitely composite)?
93// function modInt(x,n) //return x mod n for bigInt x and integer n. 90// function modInt(x,n) //return x mod n for bigInt x and integer n.
94// function negative(x) //is bigInt x negative? 91// function negative(x) //is bigInt x negative?
95// 92//
96// The following functions do not modify their inputs, but allocate memory and call functions with underscores 93// The following functions do not modify their inputs, but allocate memory and call functions with underscores
97// 94//
98// function add(x,y) //return (x+y) for bigInts x and y. 95// function add(x,y) //return (x+y) for bigInts x and y.
99// function addInt(x,n) //return (x+n) where x is a bigInt and n is an integer. 96// function addInt(x,n) //return (x+n) where x is a bigInt and n is an integer.
100// function expand(x,n) //return a copy of x with at least n elements, adding leading zeros if needed 97// function expand(x,n) //return a copy of x with at least n elements, adding leading zeros if needed
101// function inverseMod(x,n) //return (x**(-1) mod n) for bigInts x and n. If no inverse exists, it returns null 98// function inverseMod(x,n) //return (x**(-1) mod n) for bigInts x and n. If no inverse exists, it returns null
102// function mod(x,n) //return a new bigInt equal to (x mod n) for bigInts x and n. 99// function mod(x,n) //return a new bigInt equal to (x mod n) for bigInts x and n.
103// function mult(x,y) //return x*y for bigInts x and y. This is faster when y<x. 100// function mult(x,y) //return x*y for bigInts x and y. This is faster when y<x.
104// function multMod(x,y,n) //return (x*y mod n) for bigInts x,y,n. For greater speed, let y<x. 101// function multMod(x,y,n) //return (x*y mod n) for bigInts x,y,n. For greater speed, let y<x.
105// function powMod(x,y,n) //return (x**y mod n) where x,y,n are bigInts and ** is exponentiation. 0**0=1. Faster for odd n. 102// function powMod(x,y,n) //return (x**y mod n) where x,y,n are bigInts and ** is exponentiation. 0**0=1. Faster for odd n.
106// function randTruePrime(k) //return a new, random, k-bit, true prime using Maurer's algorithm. 103// function randTruePrime(k) //return a new, random, k-bit, true prime using Maurer's algorithm.
107// function sub(x,y) //return (x-y) for bigInts x and y. Negative answers will be 2s complement 104// function sub(x,y) //return (x-y) for bigInts x and y. Negative answers will be 2s complement
108// 105//
109// The following functions write a bigInt result to one of the parameters, but 106// The following functions write a bigInt result to one of the parameters, but
110// the result is never bigger than the original, so there can't be overflow problems: 107// the result is never bigger than the original, so there can't be overflow problems:
111// 108//
112// function divInt_(x,n) //do x=floor(x/n) for bigInt x and integer n, and return the remainder 109// function divInt_(x,n) //do x=floor(x/n) for bigInt x and integer n, and return the remainder
113// function GCD_(x,y) //set x to the greatest common divisor of bigInts x and y, (y is destroyed). 110// function GCD_(x,y) //set x to the greatest common divisor of bigInts x and y, (y is destroyed).
114// function halve_(x) //do x=floor(|x|/2)*sgn(x) for bigInt x in 2's complement 111// function halve_(x) //do x=floor(|x|/2)*sgn(x) for bigInt x in 2's complement
115// function mod_(x,n) //do x=x mod n for bigInts x and n. 112// function mod_(x,n) //do x=x mod n for bigInts x and n.
116// function rightShift_(x,n) //right shift bigInt x by n bits. 0 <= n < bpe. 113// function rightShift_(x,n) //right shift bigInt x by n bits. 0 <= n < bpe.
117// 114//
118// The following functions write a bigInt result to one of the parameters. The caller is responsible for 115// The following functions write a bigInt result to one of the parameters. The caller is responsible for
119// ensuring it is large enough to hold the result. 116// ensuring it is large enough to hold the result.
120// 117//
121// function addInt_(x,n) //do x=x+n where x is a bigInt and n is an integer 118// function addInt_(x,n) //do x=x+n where x is a bigInt and n is an integer
122// function add_(x,y) //do x=x+y for bigInts x and y 119// function add_(x,y) //do x=x+y for bigInts x and y
123// function addShift_(x,y,ys) //do x=x+(y<<(ys*bpe)) 120// function addShift_(x,y,ys) //do x=x+(y<<(ys*bpe))
124// function copy_(x,y) //do x=y on bigInts x and y 121// function copy_(x,y) //do x=y on bigInts x and y
125// function copyInt_(x,n) //do x=n on bigInt x and integer n 122// function copyInt_(x,n) //do x=n on bigInt x and integer n
126// function carry_(x) //do carries and borrows so each element of the bigInt x fits in bpe bits. 123// function carry_(x) //do carries and borrows so each element of the bigInt x fits in bpe bits.
127// function divide_(x,y,q,r) //divide_ x by y giving quotient q and remainder r 124// function divide_(x,y,q,r) //divide_ x by y giving quotient q and remainder r
128// function eGCD_(x,y,d,a,b) //sets a,b,d to positive big integers such that d = GCD_(x,y) = a*x-b*y 125// function eGCD_(x,y,d,a,b) //sets a,b,d to positive big integers such that d = GCD_(x,y) = a*x-b*y
129// function inverseMod_(x,n) //do x=x**(-1) mod n, for bigInts x and n. Returns 1 (0) if inverse does (doesn't) exist 126// function inverseMod_(x,n) //do x=x**(-1) mod n, for bigInts x and n. Returns 1 (0) if inverse does (doesn't) exist
130// function inverseModInt_(x,n) //return x**(-1) mod n, for integers x and n. Return 0 if there is no inverse 127// function inverseModInt_(x,n) //return x**(-1) mod n, for integers x and n. Return 0 if there is no inverse
131// function leftShift_(x,n) //left shift bigInt x by n bits. n<bpe. 128// function leftShift_(x,n) //left shift bigInt x by n bits. n<bpe.
132// function linComb_(x,y,a,b) //do x=a*x+b*y for bigInts x and y and integers a and b 129// function linComb_(x,y,a,b) //do x=a*x+b*y for bigInts x and y and integers a and b
133// function linCombShift_(x,y,b,ys) //do x=x+b*(y<<(ys*bpe)) for bigInts x and y, and integers b and ys 130// function linCombShift_(x,y,b,ys) //do x=x+b*(y<<(ys*bpe)) for bigInts x and y, and integers b and ys
134// function mont_(x,y,n,np) //Montgomery multiplication (see comments where the function is defined) 131// function mont_(x,y,n,np) //Montgomery multiplication (see comments where the function is defined)
135// function mult_(x,y) //do x=x*y for bigInts x and y. 132// function mult_(x,y) //do x=x*y for bigInts x and y.
136// function multInt_(x,n) //do x=x*n where x is a bigInt and n is an integer. 133// function multInt_(x,n) //do x=x*n where x is a bigInt and n is an integer.
137// function multMod_(x,y,n) //do x=x*y mod n for bigInts x,y,n. 134// function multMod_(x,y,n) //do x=x*y mod n for bigInts x,y,n.
138// function powMod_(x,y,n) //do x=x**y mod n, where x,y,n are bigInts (n is odd) and ** is exponentiation. 0**0=1. 135// function powMod_(x,y,n) //do x=x**y mod n, where x,y,n are bigInts (n is odd) and ** is exponentiation. 0**0=1.
139// function randBigInt_(b,n,s) //do b = an n-bit random BigInt. if s=1, then nth bit (most significant bit) is set to 1. n>=1. 136// function randBigInt_(b,n,s) //do b = an n-bit random BigInt. if s=1, then nth bit (most significant bit) is set to 1. n>=1.
140// function randTruePrime_(ans,k) //do ans = a random k-bit true random prime (not just probable prime) with 1 in the msb. 137// function randTruePrime_(ans,k) //do ans = a random k-bit true random prime (not just probable prime) with 1 in the msb.
141// function squareMod_(x,n) //do x=x*x mod n for bigInts x,n 138// function squareMod_(x,n) //do x=x*x mod n for bigInts x,n
142// function sub_(x,y) //do x=x-y for bigInts x and y. Negative answers will be 2s complement. 139// function sub_(x,y) //do x=x-y for bigInts x and y. Negative answers will be 2s complement.
143// function subShift_(x,y,ys) //do x=x-(y<<(ys*bpe)). Negative answers will be 2s complement. 140// function subShift_(x,y,ys) //do x=x-(y<<(ys*bpe)). Negative answers will be 2s complement.
144// 141//
145// The following functions are based on algorithms from the _Handbook of Applied Cryptography_ 142// The following functions are based on algorithms from the _Handbook of Applied Cryptography_
146// powMod_() = algorithm 14.94, Montgomery exponentiation 143// powMod_() = algorithm 14.94, Montgomery exponentiation
147// eGCD_,inverseMod_() = algorithm 14.61, Binary extended GCD_ 144// eGCD_,inverseMod_() = algorithm 14.61, Binary extended GCD_
148// GCD_() = algorothm 14.57, Lehmer's algorithm 145// GCD_() = algorothm 14.57, Lehmer's algorithm
149// mont_() = algorithm 14.36, Montgomery multiplication 146// mont_() = algorithm 14.36, Montgomery multiplication
150// divide_() = algorithm 14.20 Multiple-precision division 147// divide_() = algorithm 14.20 Multiple-precision division
151// squareMod_() = algorithm 14.16 Multiple-precision squaring 148// squareMod_() = algorithm 14.16 Multiple-precision squaring
152// randTruePrime_() = algorithm 4.62, Maurer's algorithm 149// randTruePrime_() = algorithm 4.62, Maurer's algorithm
diff --git a/frontend/beta/js/Clipperz/Crypto/BigInt_scoped.js b/frontend/beta/js/Clipperz/Crypto/BigInt_scoped.js
index e91e823..f91c7e9 100644
--- a/frontend/beta/js/Clipperz/Crypto/BigInt_scoped.js
+++ b/frontend/beta/js/Clipperz/Crypto/BigInt_scoped.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.Crypto) == 'undefined') { Clipperz.Crypto = {}; } 27if (typeof(Clipperz.Crypto) == 'undefined') { Clipperz.Crypto = {}; }
31 28
32if (typeof(Leemon) == 'undefined') { Leemon = {}; } 29if (typeof(Leemon) == 'undefined') { Leemon = {}; }
33if (typeof(Baird.Crypto) == 'undefined') { Baird.Crypto = {}; } 30if (typeof(Baird.Crypto) == 'undefined') { Baird.Crypto = {}; }
34if (typeof(Baird.Crypto.BigInt) == 'undefined') { Baird.Crypto.BigInt = {}; } 31if (typeof(Baird.Crypto.BigInt) == 'undefined') { Baird.Crypto.BigInt = {}; }
35 32
36 33
37//############################################################################# 34//#############################################################################
38 //Downloaded on March 05, 2007 from http://www.leemon.com/crypto/BigInt.js 35 //Downloaded on March 05, 2007 from http://www.leemon.com/crypto/BigInt.js
39//############################################################################# 36//#############################################################################
40 37
41//////////////////////////////////////////////////////////////////////////////////////// 38////////////////////////////////////////////////////////////////////////////////////////
42// Big Integer Library v. 5.0 39// Big Integer Library v. 5.0
43// Created 2000, last modified 2006 40// Created 2000, last modified 2006
44// Leemon Baird 41// Leemon Baird
45// www.leemon.com 42// www.leemon.com
46// 43//
47// This file is public domain. You can use it for any purpose without restriction. 44// This file is public domain. You can use it for any purpose without restriction.
48// I do not guarantee that it is correct, so use it at your own risk. If you use 45// I do not guarantee that it is correct, so use it at your own risk. If you use
49// it for something interesting, I'd appreciate hearing about it. If you find 46// it for something interesting, I'd appreciate hearing about it. If you find
50// any bugs or make any improvements, I'd appreciate hearing about those too. 47// any bugs or make any improvements, I'd appreciate hearing about those too.
51// It would also be nice if my name and address were left in the comments. 48// It would also be nice if my name and address were left in the comments.
52// But none of that is required. 49// But none of that is required.
53// 50//
54// This code defines a bigInt library for arbitrary-precision integers. 51// This code defines a bigInt library for arbitrary-precision integers.
55// A bigInt is an array of integers storing the value in chunks of bpe bits, 52// A bigInt is an array of integers storing the value in chunks of bpe bits,
56// little endian (buff[0] is the least significant word). 53// little endian (buff[0] is the least significant word).
57// Negative bigInts are stored two's complement. 54// Negative bigInts are stored two's complement.
58// Some functions assume their parameters have at least one leading zero element. 55// Some functions assume their parameters have at least one leading zero element.
59// Functions with an underscore at the end of the name have unpredictable behavior in case of overflow, 56// Functions with an underscore at the end of the name have unpredictable behavior in case of overflow,
60// so the caller must make sure overflow won't happen. 57// so the caller must make sure overflow won't happen.
61// For each function where a parameter is modified, that same 58// For each function where a parameter is modified, that same
62// variable must not be used as another argument too. 59// variable must not be used as another argument too.
63// So, you cannot square x by doing multMod_(x,x,n). 60// So, you cannot square x by doing multMod_(x,x,n).
64// You must use squareMod_(x,n) instead, or do y=dup(x); multMod_(x,y,n). 61// You must use squareMod_(x,n) instead, or do y=dup(x); multMod_(x,y,n).
65// 62//
66// These functions are designed to avoid frequent dynamic memory allocation in the inner loop. 63// These functions are designed to avoid frequent dynamic memory allocation in the inner loop.
67// For most functions, if it needs a BigInt as a local variable it will actually use 64// For most functions, if it needs a BigInt as a local variable it will actually use
68// a global, and will only allocate to it when it's not the right size. This ensures 65// a global, and will only allocate to it when it's not the right size. This ensures
69// that when a function is called repeatedly with same-sized parameters, it only allocates 66// that when a function is called repeatedly with same-sized parameters, it only allocates
70// memory on the first call. 67// memory on the first call.
71// 68//
72// Note that for cryptographic purposes, the calls to Math.random() must 69// Note that for cryptographic purposes, the calls to Math.random() must
73// be replaced with calls to a better pseudorandom number generator. 70// be replaced with calls to a better pseudorandom number generator.
74// 71//
75// In the following, "bigInt" means a bigInt with at least one leading zero element, 72// In the following, "bigInt" means a bigInt with at least one leading zero element,
76// and "integer" means a nonnegative integer less than radix. In some cases, integer 73// and "integer" means a nonnegative integer less than radix. In some cases, integer
77// can be negative. Negative bigInts are 2s complement. 74// can be negative. Negative bigInts are 2s complement.
78// 75//
79// The following functions do not modify their inputs, but dynamically allocate memory every time they are called: 76// The following functions do not modify their inputs, but dynamically allocate memory every time they are called:
80// 77//
81// function bigInt2str(x,base) //convert a bigInt into a string in a given base, from base 2 up to base 95 78// function bigInt2str(x,base) //convert a bigInt into a string in a given base, from base 2 up to base 95
82// function dup(x) //returns a copy of bigInt x 79// function dup(x) //returns a copy of bigInt x
83// function findPrimes(n) //return array of all primes less than integer n 80// function findPrimes(n) //return array of all primes less than integer n
84// function int2bigInt(t,n,m) //convert integer t to a bigInt with at least n bits and m array elements 81// function int2bigInt(t,n,m) //convert integer t to a bigInt with at least n bits and m array elements
85// function str2bigInt(s,b,n,m) //convert string s in base b to a bigInt with at least n bits and m array elements 82// function str2bigInt(s,b,n,m) //convert string s in base b to a bigInt with at least n bits and m array elements
86// function trim(x,k) //return a copy of x with exactly k leading zero elements 83// function trim(x,k) //return a copy of x with exactly k leading zero elements
87// 84//
88// The following functions do not modify their inputs, so there is never a problem with the result being too big: 85// The following functions do not modify their inputs, so there is never a problem with the result being too big:
89// 86//
90// function bitSize(x) //returns how many bits long the bigInt x is, not counting leading zeros 87// function bitSize(x) //returns how many bits long the bigInt x is, not counting leading zeros
91// function equals(x,y) //is the bigInt x equal to the bigint y? 88// function equals(x,y) //is the bigInt x equal to the bigint y?
92// function equalsInt(x,y) //is bigint x equal to integer y? 89// function equalsInt(x,y) //is bigint x equal to integer y?
93// function greater(x,y) //is x>y? (x and y are nonnegative bigInts) 90// function greater(x,y) //is x>y? (x and y are nonnegative bigInts)
94// function greaterShift(x,y,shift)//is (x <<(shift*bpe)) > y? 91// function greaterShift(x,y,shift)//is (x <<(shift*bpe)) > y?
95// function isZero(x) //is the bigInt x equal to zero? 92// function isZero(x) //is the bigInt x equal to zero?
96// function millerRabin(x,b) //does one round of Miller-Rabin base integer b say that bigInt x is possibly prime (as opposed to definitely composite)? 93// function millerRabin(x,b) //does one round of Miller-Rabin base integer b say that bigInt x is possibly prime (as opposed to definitely composite)?
97// function modInt(x,n) //return x mod n for bigInt x and integer n. 94// function modInt(x,n) //return x mod n for bigInt x and integer n.
98// function negative(x) //is bigInt x negative? 95// function negative(x) //is bigInt x negative?
99// 96//
100// The following functions do not modify their inputs, but allocate memory and call functions with underscores 97// The following functions do not modify their inputs, but allocate memory and call functions with underscores
101// 98//
102// function add(x,y) //return (x+y) for bigInts x and y. 99// function add(x,y) //return (x+y) for bigInts x and y.
103// function addInt(x,n) //return (x+n) where x is a bigInt and n is an integer. 100// function addInt(x,n) //return (x+n) where x is a bigInt and n is an integer.
104// function expand(x,n) //return a copy of x with at least n elements, adding leading zeros if needed 101// function expand(x,n) //return a copy of x with at least n elements, adding leading zeros if needed
105// function inverseMod(x,n) //return (x**(-1) mod n) for bigInts x and n. If no inverse exists, it returns null 102// function inverseMod(x,n) //return (x**(-1) mod n) for bigInts x and n. If no inverse exists, it returns null
106// function mod(x,n) //return a new bigInt equal to (x mod n) for bigInts x and n. 103// function mod(x,n) //return a new bigInt equal to (x mod n) for bigInts x and n.
107// function mult(x,y) //return x*y for bigInts x and y. This is faster when y<x. 104// function mult(x,y) //return x*y for bigInts x and y. This is faster when y<x.
108// function multMod(x,y,n) //return (x*y mod n) for bigInts x,y,n. For greater speed, let y<x. 105// function multMod(x,y,n) //return (x*y mod n) for bigInts x,y,n. For greater speed, let y<x.
109// function powMod(x,y,n) //return (x**y mod n) where x,y,n are bigInts and ** is exponentiation. 0**0=1. Faster for odd n. 106// function powMod(x,y,n) //return (x**y mod n) where x,y,n are bigInts and ** is exponentiation. 0**0=1. Faster for odd n.
110// function randTruePrime(k) //return a new, random, k-bit, true prime using Maurer's algorithm. 107// function randTruePrime(k) //return a new, random, k-bit, true prime using Maurer's algorithm.
111// function sub(x,y) //return (x-y) for bigInts x and y. Negative answers will be 2s complement 108// function sub(x,y) //return (x-y) for bigInts x and y. Negative answers will be 2s complement
112// 109//
113// The following functions write a bigInt result to one of the parameters, but 110// The following functions write a bigInt result to one of the parameters, but
114// the result is never bigger than the original, so there can't be overflow problems: 111// the result is never bigger than the original, so there can't be overflow problems:
115// 112//
116// function divInt_(x,n) //do x=floor(x/n) for bigInt x and integer n, and return the remainder 113// function divInt_(x,n) //do x=floor(x/n) for bigInt x and integer n, and return the remainder
117// function GCD_(x,y) //set x to the greatest common divisor of bigInts x and y, (y is destroyed). 114// function GCD_(x,y) //set x to the greatest common divisor of bigInts x and y, (y is destroyed).
118// function halve_(x) //do x=floor(|x|/2)*sgn(x) for bigInt x in 2's complement 115// function halve_(x) //do x=floor(|x|/2)*sgn(x) for bigInt x in 2's complement
119// function mod_(x,n) //do x=x mod n for bigInts x and n. 116// function mod_(x,n) //do x=x mod n for bigInts x and n.
120// function rightShift_(x,n) //right shift bigInt x by n bits. 0 <= n < bpe. 117// function rightShift_(x,n) //right shift bigInt x by n bits. 0 <= n < bpe.
121// 118//
122// The following functions write a bigInt result to one of the parameters. The caller is responsible for 119// The following functions write a bigInt result to one of the parameters. The caller is responsible for
123// ensuring it is large enough to hold the result. 120// ensuring it is large enough to hold the result.
124// 121//
125// function addInt_(x,n) //do x=x+n where x is a bigInt and n is an integer 122// function addInt_(x,n) //do x=x+n where x is a bigInt and n is an integer
126// function add_(x,y) //do x=x+y for bigInts x and y 123// function add_(x,y) //do x=x+y for bigInts x and y
127// function addShift_(x,y,ys) //do x=x+(y<<(ys*bpe)) 124// function addShift_(x,y,ys) //do x=x+(y<<(ys*bpe))
128// function copy_(x,y) //do x=y on bigInts x and y 125// function copy_(x,y) //do x=y on bigInts x and y
129// function copyInt_(x,n) //do x=n on bigInt x and integer n 126// function copyInt_(x,n) //do x=n on bigInt x and integer n
130// function carry_(x) //do carries and borrows so each element of the bigInt x fits in bpe bits. 127// function carry_(x) //do carries and borrows so each element of the bigInt x fits in bpe bits.
131// function divide_(x,y,q,r) //divide_ x by y giving quotient q and remainder r 128// function divide_(x,y,q,r) //divide_ x by y giving quotient q and remainder r
132// function eGCD_(x,y,d,a,b) //sets a,b,d to positive big integers such that d = GCD_(x,y) = a*x-b*y 129// function eGCD_(x,y,d,a,b) //sets a,b,d to positive big integers such that d = GCD_(x,y) = a*x-b*y
133// function inverseMod_(x,n) //do x=x**(-1) mod n, for bigInts x and n. Returns 1 (0) if inverse does (doesn't) exist 130// function inverseMod_(x,n) //do x=x**(-1) mod n, for bigInts x and n. Returns 1 (0) if inverse does (doesn't) exist
134// function inverseModInt_(x,n) //return x**(-1) mod n, for integers x and n. Return 0 if there is no inverse 131// function inverseModInt_(x,n) //return x**(-1) mod n, for integers x and n. Return 0 if there is no inverse
135// function leftShift_(x,n) //left shift bigInt x by n bits. n<bpe. 132// function leftShift_(x,n) //left shift bigInt x by n bits. n<bpe.
136// function linComb_(x,y,a,b) //do x=a*x+b*y for bigInts x and y and integers a and b 133// function linComb_(x,y,a,b) //do x=a*x+b*y for bigInts x and y and integers a and b
137// function linCombShift_(x,y,b,ys) //do x=x+b*(y<<(ys*bpe)) for bigInts x and y, and integers b and ys 134// function linCombShift_(x,y,b,ys) //do x=x+b*(y<<(ys*bpe)) for bigInts x and y, and integers b and ys
138// function mont_(x,y,n,np) //Montgomery multiplication (see comments where the function is defined) 135// function mont_(x,y,n,np) //Montgomery multiplication (see comments where the function is defined)
139// function mult_(x,y) //do x=x*y for bigInts x and y. 136// function mult_(x,y) //do x=x*y for bigInts x and y.
140// function multInt_(x,n) //do x=x*n where x is a bigInt and n is an integer. 137// function multInt_(x,n) //do x=x*n where x is a bigInt and n is an integer.
141// function multMod_(x,y,n) //do x=x*y mod n for bigInts x,y,n. 138// function multMod_(x,y,n) //do x=x*y mod n for bigInts x,y,n.
142// function powMod_(x,y,n) //do x=x**y mod n, where x,y,n are bigInts (n is odd) and ** is exponentiation. 0**0=1. 139// function powMod_(x,y,n) //do x=x**y mod n, where x,y,n are bigInts (n is odd) and ** is exponentiation. 0**0=1.
143// function randBigInt_(b,n,s) //do b = an n-bit random BigInt. if s=1, then nth bit (most significant bit) is set to 1. n>=1. 140// function randBigInt_(b,n,s) //do b = an n-bit random BigInt. if s=1, then nth bit (most significant bit) is set to 1. n>=1.
144// function randTruePrime_(ans,k) //do ans = a random k-bit true random prime (not just probable prime) with 1 in the msb. 141// function randTruePrime_(ans,k) //do ans = a random k-bit true random prime (not just probable prime) with 1 in the msb.
145// function squareMod_(x,n) //do x=x*x mod n for bigInts x,n 142// function squareMod_(x,n) //do x=x*x mod n for bigInts x,n
146// function sub_(x,y) //do x=x-y for bigInts x and y. Negative answers will be 2s complement. 143// function sub_(x,y) //do x=x-y for bigInts x and y. Negative answers will be 2s complement.
147// function subShift_(x,y,ys) //do x=x-(y<<(ys*bpe)). Negative answers will be 2s complement. 144// function subShift_(x,y,ys) //do x=x-(y<<(ys*bpe)). Negative answers will be 2s complement.
148// 145//
149// The following functions are based on algorithms from the _Handbook of Applied Cryptography_ 146// The following functions are based on algorithms from the _Handbook of Applied Cryptography_
150// powMod_() = algorithm 14.94, Montgomery exponentiation 147// powMod_() = algorithm 14.94, Montgomery exponentiation
151// eGCD_,inverseMod_() = algorithm 14.61, Binary extended GCD_ 148// eGCD_,inverseMod_() = algorithm 14.61, Binary extended GCD_
152// GCD_() = algorothm 14.57, Lehmer's algorithm 149// GCD_() = algorothm 14.57, Lehmer's algorithm
diff --git a/frontend/beta/js/Clipperz/Crypto/ECC.js b/frontend/beta/js/Clipperz/Crypto/ECC.js
index c3dcec3..bdfd9be 100644
--- a/frontend/beta/js/Clipperz/Crypto/ECC.js
+++ b/frontend/beta/js/Clipperz/Crypto/ECC.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29/* 26/*
30try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) { 27try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) {
31 throw "Clipperz.Crypto.ECC depends on Clipperz.ByteArray!"; 28 throw "Clipperz.Crypto.ECC depends on Clipperz.ByteArray!";
32} 29}
33 30
34if (typeof(Clipperz.Crypto.ECC) == 'undefined') { Clipperz.Crypto.ECC = {}; } 31if (typeof(Clipperz.Crypto.ECC) == 'undefined') { Clipperz.Crypto.ECC = {}; }
35 32
36 33
37//############################################################################# 34//#############################################################################
38 35
39Clipperz.Crypto.ECC.BinaryField = {}; 36Clipperz.Crypto.ECC.BinaryField = {};
40 37
41//############################################################################# 38//#############################################################################
42 39
43Clipperz.Crypto.ECC.BinaryField.AbstractValue = function(aValue, aBase) { 40Clipperz.Crypto.ECC.BinaryField.AbstractValue = function(aValue, aBase) {
44 return this; 41 return this;
45} 42}
46 43
47Clipperz.Crypto.ECC.BinaryField.AbstractValue.prototype = MochiKit.Base.update(null, { 44Clipperz.Crypto.ECC.BinaryField.AbstractValue.prototype = MochiKit.Base.update(null, {
48 45
49 'asString': function(aBase) { 46 'asString': function(aBase) {
50 throw Clipperz.Base.exception.AbstractMethod; 47 throw Clipperz.Base.exception.AbstractMethod;
51 }, 48 },
52 49
53 'isZero': function() { 50 'isZero': function() {
54 throw Clipperz.Base.exception.AbstractMethod; 51 throw Clipperz.Base.exception.AbstractMethod;
55 }, 52 },
56 53
57 'shiftLeft': function(aNumberOfBitsToShift) { 54 'shiftLeft': function(aNumberOfBitsToShift) {
58 throw Clipperz.Base.exception.AbstractMethod; 55 throw Clipperz.Base.exception.AbstractMethod;
59 }, 56 },
60 57
61 'bitSize': function() { 58 'bitSize': function() {
62 throw Clipperz.Base.exception.AbstractMethod; 59 throw Clipperz.Base.exception.AbstractMethod;
63 }, 60 },
64 61
65 'isBitSet': function(aBitPosition) { 62 'isBitSet': function(aBitPosition) {
66 throw Clipperz.Base.exception.AbstractMethod; 63 throw Clipperz.Base.exception.AbstractMethod;
67 }, 64 },
68 65
69 'xor': function(aValue) { 66 'xor': function(aValue) {
70 throw Clipperz.Base.exception.AbstractMethod; 67 throw Clipperz.Base.exception.AbstractMethod;
71 }, 68 },
72 69
73 'compare': function(aValue) { 70 'compare': function(aValue) {
74 throw Clipperz.Base.exception.AbstractMethod; 71 throw Clipperz.Base.exception.AbstractMethod;
75 }, 72 },
76 73
77 //----------------------------------------------------------------------------- 74 //-----------------------------------------------------------------------------
78 __syntaxFix__: "syntax fix" 75 __syntaxFix__: "syntax fix"
79}); 76});
80 77
81//***************************************************************************** 78//*****************************************************************************
82/ * 79/ *
83Clipperz.Crypto.ECC.BinaryField.BigIntValue = function(aValue, aBase) { 80Clipperz.Crypto.ECC.BinaryField.BigIntValue = function(aValue, aBase) {
84 this._value = new Clipperz.Crypto.BigInt(aValue, aBase); 81 this._value = new Clipperz.Crypto.BigInt(aValue, aBase);
85 return this; 82 return this;
86} 83}
87 84
88Clipperz.Crypto.ECC.BinaryField.BigIntValue.prototype = MochiKit.Base.update(new Clipperz.Crypto.ECC.BinaryField.AbstractValue(), { 85Clipperz.Crypto.ECC.BinaryField.BigIntValue.prototype = MochiKit.Base.update(new Clipperz.Crypto.ECC.BinaryField.AbstractValue(), {
89 86
90 'value': function() { 87 'value': function() {
91 return this._value; 88 return this._value;
92 }, 89 },
93 90
94 //----------------------------------------------------------------------------- 91 //-----------------------------------------------------------------------------
95 92
96 'isZero': function() { 93 'isZero': function() {
97 return (this.value().compare(Clipperz.Crypto.ECC.BinaryField.BigIntValue.O) == 0); 94 return (this.value().compare(Clipperz.Crypto.ECC.BinaryField.BigIntValue.O) == 0);
98 }, 95 },
99 96
100 //----------------------------------------------------------------------------- 97 //-----------------------------------------------------------------------------
101 98
102 'asString': function(aBase) { 99 'asString': function(aBase) {
103 return this.value().asString(aBase); 100 return this.value().asString(aBase);
104 }, 101 },
105 102
106 //----------------------------------------------------------------------------- 103 //-----------------------------------------------------------------------------
107 104
108 'shiftLeft': function(aNumberOfBitsToShift) { 105 'shiftLeft': function(aNumberOfBitsToShift) {
109 return new Clipperz.Crypto.ECC.BinaryField.BigIntValue(this.value().shiftLeft(aNumberOfBitsToShift)); 106 return new Clipperz.Crypto.ECC.BinaryField.BigIntValue(this.value().shiftLeft(aNumberOfBitsToShift));
110 }, 107 },
111 108
112 //----------------------------------------------------------------------------- 109 //-----------------------------------------------------------------------------
113 110
114 'bitSize': function() { 111 'bitSize': function() {
115 return this.value().bitSize(); 112 return this.value().bitSize();
116 }, 113 },
117 114
118 //----------------------------------------------------------------------------- 115 //-----------------------------------------------------------------------------
119 116
120 'isBitSet': function(aBitPosition) { 117 'isBitSet': function(aBitPosition) {
121 return this.value().isBitSet(aBitPosition); 118 return this.value().isBitSet(aBitPosition);
122 }, 119 },
123 120
124 //----------------------------------------------------------------------------- 121 //-----------------------------------------------------------------------------
125 122
126 'xor': function(aValue) { 123 'xor': function(aValue) {
127 return new Clipperz.Crypto.ECC.BinaryField.BigIntValue(this.value().xor(aValue.value())); 124 return new Clipperz.Crypto.ECC.BinaryField.BigIntValue(this.value().xor(aValue.value()));
128 }, 125 },
129 126
130 //----------------------------------------------------------------------------- 127 //-----------------------------------------------------------------------------
131 128
132 'compare': function(aValue) { 129 'compare': function(aValue) {
133 return this.value().compare(aValue.value()); 130 return this.value().compare(aValue.value());
134 }, 131 },
135 132
136 //----------------------------------------------------------------------------- 133 //-----------------------------------------------------------------------------
137 __syntaxFix__: "syntax fix" 134 __syntaxFix__: "syntax fix"
138}); 135});
139 136
140Clipperz.Crypto.ECC.BinaryField.BigIntValue.O = new Clipperz.Crypto.BigInt(0); 137Clipperz.Crypto.ECC.BinaryField.BigIntValue.O = new Clipperz.Crypto.BigInt(0);
141Clipperz.Crypto.ECC.BinaryField.BigIntValue.I = new Clipperz.Crypto.BigInt(1); 138Clipperz.Crypto.ECC.BinaryField.BigIntValue.I = new Clipperz.Crypto.BigInt(1);
142* / 139* /
143//***************************************************************************** 140//*****************************************************************************
144 141
145Clipperz.Crypto.ECC.BinaryField.WordArrayValue = function(aValue, aBase) { 142Clipperz.Crypto.ECC.BinaryField.WordArrayValue = function(aValue, aBase) {
146 if (aValue.constructor == String) { 143 if (aValue.constructor == String) {
147 varvalue; 144 varvalue;
148 varstringLength; 145 varstringLength;
149 var numberOfWords; 146 var numberOfWords;
150 vari,c; 147 vari,c;
151 148
152 if (aBase != 16) { 149 if (aBase != 16) {
diff --git a/frontend/beta/js/Clipperz/Crypto/ECC/BinaryField/Curve.js b/frontend/beta/js/Clipperz/Crypto/ECC/BinaryField/Curve.js
index 042ca6c..01127c3 100644
--- a/frontend/beta/js/Clipperz/Crypto/ECC/BinaryField/Curve.js
+++ b/frontend/beta/js/Clipperz/Crypto/ECC/BinaryField/Curve.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) { 26try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) {
30 throw "Clipperz.Crypto.ECC depends on Clipperz.ByteArray!"; 27 throw "Clipperz.Crypto.ECC depends on Clipperz.ByteArray!";
31} 28}
32if (typeof(Clipperz.Crypto.ECC) == 'undefined') { Clipperz.Crypto.ECC = {}; } 29if (typeof(Clipperz.Crypto.ECC) == 'undefined') { Clipperz.Crypto.ECC = {}; }
33if (typeof(Clipperz.Crypto.ECC.BinaryField) == 'undefined') { Clipperz.Crypto.ECC.BinaryField = {}; } 30if (typeof(Clipperz.Crypto.ECC.BinaryField) == 'undefined') { Clipperz.Crypto.ECC.BinaryField = {}; }
34 31
35Clipperz.Crypto.ECC.BinaryField.Curve = function(args) { 32Clipperz.Crypto.ECC.BinaryField.Curve = function(args) {
36 args = args || {}; 33 args = args || {};
37 34
38 this._modulus = args.modulus; 35 this._modulus = args.modulus;
39 36
40 this._a = args.a; 37 this._a = args.a;
41 this._b = args.b; 38 this._b = args.b;
42 this._G = args.G; 39 this._G = args.G;
43 this._r = args.r; 40 this._r = args.r;
44 this._h = args.h; 41 this._h = args.h;
45 42
46 this._finiteField = null; 43 this._finiteField = null;
47 44
48 return this; 45 return this;
49} 46}
50 47
51Clipperz.Crypto.ECC.BinaryField.Curve.prototype = MochiKit.Base.update(null, { 48Clipperz.Crypto.ECC.BinaryField.Curve.prototype = MochiKit.Base.update(null, {
52 49
53 'asString': function() { 50 'asString': function() {
54 return "Clipperz.Crypto.ECC.BinaryField.Curve"; 51 return "Clipperz.Crypto.ECC.BinaryField.Curve";
55 }, 52 },
56 53
57 //----------------------------------------------------------------------------- 54 //-----------------------------------------------------------------------------
58 55
59 'modulus': function() { 56 'modulus': function() {
60 return this._modulus; 57 return this._modulus;
61 }, 58 },
62 59
63 'a': function() { 60 'a': function() {
64 return this._a; 61 return this._a;
65 }, 62 },
66 63
67 'b': function() { 64 'b': function() {
68 return this._b; 65 return this._b;
69 }, 66 },
70 67
71 'G': function() { 68 'G': function() {
72 return this._G; 69 return this._G;
73 }, 70 },
74 71
75 'r': function() { 72 'r': function() {
76 return this._r; 73 return this._r;
77 }, 74 },
78 75
79 'h': function() { 76 'h': function() {
80 return this._h; 77 return this._h;
81 }, 78 },
82 79
83 //----------------------------------------------------------------------------- 80 //-----------------------------------------------------------------------------
84 81
85 'finiteField': function() { 82 'finiteField': function() {
86 if (this._finiteField == null) { 83 if (this._finiteField == null) {
87 this._finiteField = new Clipperz.Crypto.ECC.BinaryField.FiniteField({modulus:this.modulus()}) 84 this._finiteField = new Clipperz.Crypto.ECC.BinaryField.FiniteField({modulus:this.modulus()})
88 } 85 }
89 86
90 return this._finiteField; 87 return this._finiteField;
91 }, 88 },
92 89
93 //----------------------------------------------------------------------------- 90 //-----------------------------------------------------------------------------
94 91
95 'negate': function(aPointA) { 92 'negate': function(aPointA) {
96 var result; 93 var result;
97 94
98 result = new Clipperz.Crypto.ECC.Point({x:aPointA.x(), y:this.finiteField().add(aPointA.y(), aPointA.x())}) 95 result = new Clipperz.Crypto.ECC.Point({x:aPointA.x(), y:this.finiteField().add(aPointA.y(), aPointA.x())})
99 96
100 return result; 97 return result;
101 }, 98 },
102 99
103 //----------------------------------------------------------------------------- 100 //-----------------------------------------------------------------------------
104 101
105 'add': function(aPointA, aPointB) { 102 'add': function(aPointA, aPointB) {
106 var result; 103 var result;
107 104
108//console.log(">>> ECC.BinaryField.Curve.add"); 105//console.log(">>> ECC.BinaryField.Curve.add");
109 if (aPointA.isZero()) { 106 if (aPointA.isZero()) {
110//console.log("--- pointA == zero"); 107//console.log("--- pointA == zero");
111 result = aPointB; 108 result = aPointB;
112 } else if (aPointB.isZero()) { 109 } else if (aPointB.isZero()) {
113//console.log("--- pointB == zero"); 110//console.log("--- pointB == zero");
114 result = aPointA; 111 result = aPointA;
115 } else if ((aPointA.x().compare(aPointB.x()) == 0) && ((aPointA.y().compare(aPointB.y()) != 0) || aPointB.x().isZero())) { 112 } else if ((aPointA.x().compare(aPointB.x()) == 0) && ((aPointA.y().compare(aPointB.y()) != 0) || aPointB.x().isZero())) {
116//console.log("compare A.x - B.x: ", aPointA.x().compare(aPointB.x())); 113//console.log("compare A.x - B.x: ", aPointA.x().compare(aPointB.x()));
117//console.log("compare A.y - B.y: ", (aPointA.y().compare(aPointB.y()) != 0)); 114//console.log("compare A.y - B.y: ", (aPointA.y().compare(aPointB.y()) != 0));
118//console.log("compare B.x.isZero(): ", aPointB.x().isZero()); 115//console.log("compare B.x.isZero(): ", aPointB.x().isZero());
119 116
120//console.log("--- result = zero"); 117//console.log("--- result = zero");
121 result = new Clipperz.Crypto.ECC.BinaryField.Point({x:Clipperz.Crypto.ECC.BinaryField.Value.O, y:Clipperz.Crypto.ECC.BinaryField.Value.O}); 118 result = new Clipperz.Crypto.ECC.BinaryField.Point({x:Clipperz.Crypto.ECC.BinaryField.Value.O, y:Clipperz.Crypto.ECC.BinaryField.Value.O});
122 } else { 119 } else {
123//console.log("--- result = ELSE"); 120//console.log("--- result = ELSE");
124 varf2m; 121 varf2m;
125 var x, y; 122 var x, y;
126 var lambda; 123 var lambda;
127 var aX, aY, bX, bY; 124 var aX, aY, bX, bY;
128 125
129 aX = aPointA.x()._value; 126 aX = aPointA.x()._value;
130 aY = aPointA.y()._value; 127 aY = aPointA.y()._value;
131 bX = aPointB.x()._value; 128 bX = aPointB.x()._value;
132 bY = aPointB.y()._value; 129 bY = aPointB.y()._value;
133 130
134 f2m = this.finiteField(); 131 f2m = this.finiteField();
135 132
136 if (aPointA.x().compare(aPointB.x()) != 0) { 133 if (aPointA.x().compare(aPointB.x()) != 0) {
137//console.log(" a.x != b.x"); 134//console.log(" a.x != b.x");
138 lambda =f2m._fastMultiply( 135 lambda =f2m._fastMultiply(
139 f2m._add(aY, bY), 136 f2m._add(aY, bY),
140 f2m._inverse(f2m._add(aX, bX)) 137 f2m._inverse(f2m._add(aX, bX))
141 ); 138 );
142 x = f2m._add(this.a()._value, f2m._square(lambda)); 139 x = f2m._add(this.a()._value, f2m._square(lambda));
143 f2m._overwriteAdd(x, lambda); 140 f2m._overwriteAdd(x, lambda);
144 f2m._overwriteAdd(x, aX); 141 f2m._overwriteAdd(x, aX);
145 f2m._overwriteAdd(x, bX); 142 f2m._overwriteAdd(x, bX);
146 } else { 143 } else {
147//console.log(" a.x == b.x"); 144//console.log(" a.x == b.x");
148 lambda = f2m._add(bX, f2m._fastMultiply(bY, f2m._inverse(bX))); 145 lambda = f2m._add(bX, f2m._fastMultiply(bY, f2m._inverse(bX)));
149//console.log(" lambda: " + lambda.asString(16)); 146//console.log(" lambda: " + lambda.asString(16));
150 x = f2m._add(this.a()._value, f2m._square(lambda)); 147 x = f2m._add(this.a()._value, f2m._square(lambda));
151//console.log(" x (step 1): " + x.asString(16)); 148//console.log(" x (step 1): " + x.asString(16));
152 f2m._overwriteAdd(x, lambda); 149 f2m._overwriteAdd(x, lambda);
diff --git a/frontend/beta/js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js b/frontend/beta/js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js
index 3ddf2ec..650b479 100644
--- a/frontend/beta/js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js
+++ b/frontend/beta/js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) { 26try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) {
30 throw "Clipperz.Crypto.ECC depends on Clipperz.ByteArray!"; 27 throw "Clipperz.Crypto.ECC depends on Clipperz.ByteArray!";
31} 28}
32if (typeof(Clipperz.Crypto.ECC) == 'undefined') { Clipperz.Crypto.ECC = {}; } 29if (typeof(Clipperz.Crypto.ECC) == 'undefined') { Clipperz.Crypto.ECC = {}; }
33if (typeof(Clipperz.Crypto.ECC.BinaryField) == 'undefined') { Clipperz.Crypto.ECC.BinaryField = {}; } 30if (typeof(Clipperz.Crypto.ECC.BinaryField) == 'undefined') { Clipperz.Crypto.ECC.BinaryField = {}; }
34 31
35Clipperz.Crypto.ECC.BinaryField.FiniteField = function(args) { 32Clipperz.Crypto.ECC.BinaryField.FiniteField = function(args) {
36 args = args || {}; 33 args = args || {};
37 this._modulus = args.modulus; 34 this._modulus = args.modulus;
38 35
39 return this; 36 return this;
40} 37}
41 38
42Clipperz.Crypto.ECC.BinaryField.FiniteField.prototype = MochiKit.Base.update(null, { 39Clipperz.Crypto.ECC.BinaryField.FiniteField.prototype = MochiKit.Base.update(null, {
43 40
44 'asString': function() { 41 'asString': function() {
45 return "Clipperz.Crypto.ECC.BinaryField.FiniteField (" + this.modulus().asString() + ")"; 42 return "Clipperz.Crypto.ECC.BinaryField.FiniteField (" + this.modulus().asString() + ")";
46 }, 43 },
47 44
48 //----------------------------------------------------------------------------- 45 //-----------------------------------------------------------------------------
49 46
50 'modulus': function() { 47 'modulus': function() {
51 return this._modulus; 48 return this._modulus;
52 }, 49 },
53 50
54 //----------------------------------------------------------------------------- 51 //-----------------------------------------------------------------------------
55 52
56 '_module': function(aValue) { 53 '_module': function(aValue) {
57 varresult; 54 varresult;
58 var modulusComparison; 55 var modulusComparison;
59//console.log(">>> binaryField.finiteField.(standard)module"); 56//console.log(">>> binaryField.finiteField.(standard)module");
60 57
61 modulusComparison = Clipperz.Crypto.ECC.BinaryField.Value._compare(aValue, this.modulus()._value); 58 modulusComparison = Clipperz.Crypto.ECC.BinaryField.Value._compare(aValue, this.modulus()._value);
62 59
63 if (modulusComparison < 0) { 60 if (modulusComparison < 0) {
64 result = aValue; 61 result = aValue;
65 } else if (modulusComparison == 0) { 62 } else if (modulusComparison == 0) {
66 result = [0]; 63 result = [0];
67 } else { 64 } else {
68 var modulusBitSize; 65 var modulusBitSize;
69 var resultBitSize; 66 var resultBitSize;
70 67
71 result = aValue; 68 result = aValue;
72 69
73 modulusBitSize = this.modulus().bitSize(); 70 modulusBitSize = this.modulus().bitSize();
74 resultBitSize = Clipperz.Crypto.ECC.BinaryField.Value._bitSize(result); 71 resultBitSize = Clipperz.Crypto.ECC.BinaryField.Value._bitSize(result);
75 while (resultBitSize >= modulusBitSize) { 72 while (resultBitSize >= modulusBitSize) {
76 Clipperz.Crypto.ECC.BinaryField.Value._overwriteXor(result, Clipperz.Crypto.ECC.BinaryField.Value._shiftLeft(this.modulus()._value, resultBitSize - modulusBitSize)); 73 Clipperz.Crypto.ECC.BinaryField.Value._overwriteXor(result, Clipperz.Crypto.ECC.BinaryField.Value._shiftLeft(this.modulus()._value, resultBitSize - modulusBitSize));
77 resultBitSize = Clipperz.Crypto.ECC.BinaryField.Value._bitSize(result); 74 resultBitSize = Clipperz.Crypto.ECC.BinaryField.Value._bitSize(result);
78 } 75 }
79 } 76 }
80//console.log("<<< binaryField.finiteField.(standard)module"); 77//console.log("<<< binaryField.finiteField.(standard)module");
81 78
82 return result; 79 return result;
83 }, 80 },
84 81
85 'module': function(aValue) { 82 'module': function(aValue) {
86 return new Clipperz.Crypto.ECC.BinaryField.Value(this._module(aValue._value.slice(0))); 83 return new Clipperz.Crypto.ECC.BinaryField.Value(this._module(aValue._value.slice(0)));
87 }, 84 },
88 85
89 //----------------------------------------------------------------------------- 86 //-----------------------------------------------------------------------------
90 87
91 '_add': function(a, b) { 88 '_add': function(a, b) {
92 return Clipperz.Crypto.ECC.BinaryField.Value._xor(a, b); 89 return Clipperz.Crypto.ECC.BinaryField.Value._xor(a, b);
93 }, 90 },
94 91
95 '_overwriteAdd': function(a, b) { 92 '_overwriteAdd': function(a, b) {
96 Clipperz.Crypto.ECC.BinaryField.Value._overwriteXor(a, b); 93 Clipperz.Crypto.ECC.BinaryField.Value._overwriteXor(a, b);
97 }, 94 },
98 95
99 'add': function(a, b) { 96 'add': function(a, b) {
100 return new Clipperz.Crypto.ECC.BinaryField.Value(this._add(a._value, b._value)); 97 return new Clipperz.Crypto.ECC.BinaryField.Value(this._add(a._value, b._value));
101 }, 98 },
102 99
103 //----------------------------------------------------------------------------- 100 //-----------------------------------------------------------------------------
104 101
105 'negate': function(aValue) { 102 'negate': function(aValue) {
106 return aValue.clone(); 103 return aValue.clone();
107 }, 104 },
108 105
109 //----------------------------------------------------------------------------- 106 //-----------------------------------------------------------------------------
110 107
111 '_multiply': function(a, b) { 108 '_multiply': function(a, b) {
112 var result; 109 var result;
113 var valueToXor; 110 var valueToXor;
114 var i,c; 111 var i,c;
115 112
116 result = [0]; 113 result = [0];
117 valueToXor = b; 114 valueToXor = b;
118 c = Clipperz.Crypto.ECC.BinaryField.Value._bitSize(a); 115 c = Clipperz.Crypto.ECC.BinaryField.Value._bitSize(a);
119 for (i=0; i<c; i++) { 116 for (i=0; i<c; i++) {
120 if (Clipperz.Crypto.ECC.BinaryField.Value._isBitSet(a, i) === true) { 117 if (Clipperz.Crypto.ECC.BinaryField.Value._isBitSet(a, i) === true) {
121 Clipperz.Crypto.ECC.BinaryField.Value._overwriteXor(result, valueToXor); 118 Clipperz.Crypto.ECC.BinaryField.Value._overwriteXor(result, valueToXor);
122 } 119 }
123 valueToXor = Clipperz.Crypto.ECC.BinaryField.Value._overwriteShiftLeft(valueToXor, 1); 120 valueToXor = Clipperz.Crypto.ECC.BinaryField.Value._overwriteShiftLeft(valueToXor, 1);
124 } 121 }
125 result = this._module(result); 122 result = this._module(result);
126 123
127 return result; 124 return result;
128 }, 125 },
129 126
130 'multiply': function(a, b) { 127 'multiply': function(a, b) {
131 return new Clipperz.Crypto.ECC.BinaryField.Value(this._multiply(a._value, b._value)); 128 return new Clipperz.Crypto.ECC.BinaryField.Value(this._multiply(a._value, b._value));
132 }, 129 },
133 130
134 //----------------------------------------------------------------------------- 131 //-----------------------------------------------------------------------------
135 132
136 '_fastMultiply': function(a, b) { 133 '_fastMultiply': function(a, b) {
137 var result; 134 var result;
138 var B; 135 var B;
139 var i,c; 136 var i,c;
140 137
141 result = [0]; 138 result = [0];
142 B = b.slice(0); //Is this array copy avoidable? 139 B = b.slice(0); //Is this array copy avoidable?
143 c = 32; 140 c = 32;
144 for (i=0; i<c; i++) { 141 for (i=0; i<c; i++) {
145 var ii, cc; 142 var ii, cc;
146 143
147 cc = a.length; 144 cc = a.length;
148 for (ii=0; ii<cc; ii++) { 145 for (ii=0; ii<cc; ii++) {
149 if (((a[ii] >>> i) & 0x01) == 1) { 146 if (((a[ii] >>> i) & 0x01) == 1) {
150 Clipperz.Crypto.ECC.BinaryField.Value._overwriteXor(result, B, ii); 147 Clipperz.Crypto.ECC.BinaryField.Value._overwriteXor(result, B, ii);
151 } 148 }
152 } 149 }
diff --git a/frontend/beta/js/Clipperz/Crypto/ECC/BinaryField/Point.js b/frontend/beta/js/Clipperz/Crypto/ECC/BinaryField/Point.js
index f0739bc..6661839 100644
--- a/frontend/beta/js/Clipperz/Crypto/ECC/BinaryField/Point.js
+++ b/frontend/beta/js/Clipperz/Crypto/ECC/BinaryField/Point.js
@@ -1,67 +1,64 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) { 26try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) {
30 throw "Clipperz.Crypto.ECC depends on Clipperz.ByteArray!"; 27 throw "Clipperz.Crypto.ECC depends on Clipperz.ByteArray!";
31} 28}
32if (typeof(Clipperz.Crypto.ECC) == 'undefined') { Clipperz.Crypto.ECC = {}; } 29if (typeof(Clipperz.Crypto.ECC) == 'undefined') { Clipperz.Crypto.ECC = {}; }
33if (typeof(Clipperz.Crypto.ECC.BinaryField) == 'undefined') { Clipperz.Crypto.ECC.BinaryField = {}; } 30if (typeof(Clipperz.Crypto.ECC.BinaryField) == 'undefined') { Clipperz.Crypto.ECC.BinaryField = {}; }
34 31
35Clipperz.Crypto.ECC.BinaryField.Point = function(args) { 32Clipperz.Crypto.ECC.BinaryField.Point = function(args) {
36 args = args || {}; 33 args = args || {};
37 this._x = args.x; 34 this._x = args.x;
38 this._y = args.y; 35 this._y = args.y;
39 36
40 return this; 37 return this;
41} 38}
42 39
43Clipperz.Crypto.ECC.BinaryField.Point.prototype = MochiKit.Base.update(null, { 40Clipperz.Crypto.ECC.BinaryField.Point.prototype = MochiKit.Base.update(null, {
44 41
45 'asString': function() { 42 'asString': function() {
46 return "Clipperz.Crypto.ECC.BinaryField.Point (" + this.x() + ", " + this.y() + ")"; 43 return "Clipperz.Crypto.ECC.BinaryField.Point (" + this.x() + ", " + this.y() + ")";
47 }, 44 },
48 45
49 //----------------------------------------------------------------------------- 46 //-----------------------------------------------------------------------------
50 47
51 'x': function() { 48 'x': function() {
52 return this._x; 49 return this._x;
53 }, 50 },
54 51
55 'y': function() { 52 'y': function() {
56 return this._y; 53 return this._y;
57 }, 54 },
58 55
59 //----------------------------------------------------------------------------- 56 //-----------------------------------------------------------------------------
60 57
61 'isZero': function() { 58 'isZero': function() {
62 return (this.x().isZero() && this.y().isZero()) 59 return (this.x().isZero() && this.y().isZero())
63 }, 60 },
64 61
65 //----------------------------------------------------------------------------- 62 //-----------------------------------------------------------------------------
66 __syntaxFix__: "syntax fix" 63 __syntaxFix__: "syntax fix"
67}); 64});
diff --git a/frontend/beta/js/Clipperz/Crypto/ECC/BinaryField/Value.js b/frontend/beta/js/Clipperz/Crypto/ECC/BinaryField/Value.js
index 10d055e..b5beafa 100644
--- a/frontend/beta/js/Clipperz/Crypto/ECC/BinaryField/Value.js
+++ b/frontend/beta/js/Clipperz/Crypto/ECC/BinaryField/Value.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) { 26try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) {
30 throw "Clipperz.Crypto.ECC depends on Clipperz.ByteArray!"; 27 throw "Clipperz.Crypto.ECC depends on Clipperz.ByteArray!";
31} 28}
32if (typeof(Clipperz.Crypto.ECC) == 'undefined') { Clipperz.Crypto.ECC = {}; } 29if (typeof(Clipperz.Crypto.ECC) == 'undefined') { Clipperz.Crypto.ECC = {}; }
33if (typeof(Clipperz.Crypto.ECC.BinaryField) == 'undefined') { Clipperz.Crypto.ECC.BinaryField = {}; } 30if (typeof(Clipperz.Crypto.ECC.BinaryField) == 'undefined') { Clipperz.Crypto.ECC.BinaryField = {}; }
34 31
35Clipperz.Crypto.ECC.BinaryField.Value = function(aValue, aBase) { 32Clipperz.Crypto.ECC.BinaryField.Value = function(aValue, aBase) {
36 if (aValue.constructor == String) { 33 if (aValue.constructor == String) {
37 varvalue; 34 varvalue;
38 varstringLength; 35 varstringLength;
39 var numberOfWords; 36 var numberOfWords;
40 vari,c; 37 vari,c;
41 38
42 if (aBase != 16) { 39 if (aBase != 16) {
43 throw Clipperz.Crypto.ECC.BinaryField.Value.exception.UnsupportedBase; 40 throw Clipperz.Crypto.ECC.BinaryField.Value.exception.UnsupportedBase;
44 } 41 }
45 42
46 value = aValue.replace(/ /g, ''); 43 value = aValue.replace(/ /g, '');
47 stringLength = value.length; 44 stringLength = value.length;
48 numberOfWords = Math.ceil(stringLength / 8); 45 numberOfWords = Math.ceil(stringLength / 8);
49 this._value = new Array(numberOfWords); 46 this._value = new Array(numberOfWords);
50 47
51 c = numberOfWords; 48 c = numberOfWords;
52 for (i=0; i<c; i++) { 49 for (i=0; i<c; i++) {
53 varword; 50 varword;
54 51
55 if (i < (c-1)) { 52 if (i < (c-1)) {
56 word = parseInt(value.substr(stringLength-((i+1)*8), 8), 16); 53 word = parseInt(value.substr(stringLength-((i+1)*8), 8), 16);
57 } else { 54 } else {
58 word = parseInt(value.substr(0, stringLength-(i*8)), 16); 55 word = parseInt(value.substr(0, stringLength-(i*8)), 16);
59 } 56 }
60 57
61 this._value[i] = word; 58 this._value[i] = word;
62 } 59 }
63 } else if (aValue.constructor == Array) { 60 } else if (aValue.constructor == Array) {
64 var itemsToCopy; 61 var itemsToCopy;
65 62
66 itemsToCopy = aValue.length; 63 itemsToCopy = aValue.length;
67 while (aValue[itemsToCopy - 1] == 0) { 64 while (aValue[itemsToCopy - 1] == 0) {
68 itemsToCopy --; 65 itemsToCopy --;
69 } 66 }
70 67
71 this._value = aValue.slice(0, itemsToCopy); 68 this._value = aValue.slice(0, itemsToCopy);
72 } else if (aValue.constructor == Number) { 69 } else if (aValue.constructor == Number) {
73 this._value = [aValue]; 70 this._value = [aValue];
74 } else { 71 } else {
75 // throw Clipperz.Crypto.ECC.BinaryField.Value.exception.UnsupportedConstructorValueType; 72 // throw Clipperz.Crypto.ECC.BinaryField.Value.exception.UnsupportedConstructorValueType;
76 } 73 }
77 74
78 return this; 75 return this;
79} 76}
80 77
81Clipperz.Crypto.ECC.BinaryField.Value.prototype = MochiKit.Base.update(null, { 78Clipperz.Crypto.ECC.BinaryField.Value.prototype = MochiKit.Base.update(null, {
82 79
83 'value': function() { 80 'value': function() {
84 return this._value; 81 return this._value;
85 }, 82 },
86 83
87 //----------------------------------------------------------------------------- 84 //-----------------------------------------------------------------------------
88 85
89 'wordSize': function() { 86 'wordSize': function() {
90 return this._value.length 87 return this._value.length
91 }, 88 },
92 89
93 //----------------------------------------------------------------------------- 90 //-----------------------------------------------------------------------------
94 91
95 'clone': function() { 92 'clone': function() {
96 return new Clipperz.Crypto.ECC.BinaryField.Value(this._value.slice(0)); 93 return new Clipperz.Crypto.ECC.BinaryField.Value(this._value.slice(0));
97 }, 94 },
98 95
99 //----------------------------------------------------------------------------- 96 //-----------------------------------------------------------------------------
100 97
101 'isZero': function() { 98 'isZero': function() {
102 return (this.compare(Clipperz.Crypto.ECC.BinaryField.Value.O) == 0); 99 return (this.compare(Clipperz.Crypto.ECC.BinaryField.Value.O) == 0);
103 }, 100 },
104 101
105 //----------------------------------------------------------------------------- 102 //-----------------------------------------------------------------------------
106 103
107 'asString': function(aBase) { 104 'asString': function(aBase) {
108 varresult; 105 varresult;
109 var i,c; 106 var i,c;
110 107
111 if (aBase != 16) { 108 if (aBase != 16) {
112 throw Clipperz.Crypto.ECC.BinaryField.Value.exception.UnsupportedBase; 109 throw Clipperz.Crypto.ECC.BinaryField.Value.exception.UnsupportedBase;
113 } 110 }
114 111
115 result = ""; 112 result = "";
116 c = this.wordSize(); 113 c = this.wordSize();
117 for (i=0; i<c; i++) { 114 for (i=0; i<c; i++) {
118 varwordAsString; 115 varwordAsString;
119 116
120 // wordAsString = ("00000000" + this.value()[i].toString(16)); 117 // wordAsString = ("00000000" + this.value()[i].toString(16));
121 wordAsString = ("00000000" + this._value[i].toString(16)); 118 wordAsString = ("00000000" + this._value[i].toString(16));
122 wordAsString = wordAsString.substring(wordAsString.length - 8); 119 wordAsString = wordAsString.substring(wordAsString.length - 8);
123 result = wordAsString + result; 120 result = wordAsString + result;
124 } 121 }
125 122
126 result = result.replace(/^(00)*/, ""); 123 result = result.replace(/^(00)*/, "");
127 124
128 if (result == "") { 125 if (result == "") {
129 result = "0"; 126 result = "0";
130 } 127 }
131 128
132 return result; 129 return result;
133 }, 130 },
134 131
135 //----------------------------------------------------------------------------- 132 //-----------------------------------------------------------------------------
136 133
137 'shiftLeft': function(aNumberOfBitsToShift) { 134 'shiftLeft': function(aNumberOfBitsToShift) {
138 return new Clipperz.Crypto.ECC.BinaryField.Value(Clipperz.Crypto.ECC.BinaryField.Value._shiftLeft(this._value, aNumberOfBitsToShift)); 135 return new Clipperz.Crypto.ECC.BinaryField.Value(Clipperz.Crypto.ECC.BinaryField.Value._shiftLeft(this._value, aNumberOfBitsToShift));
139 }, 136 },
140 137
141 //----------------------------------------------------------------------------- 138 //-----------------------------------------------------------------------------
142 139
143 'bitSize': function() { 140 'bitSize': function() {
144 return Clipperz.Crypto.ECC.BinaryField.Value._bitSize(this._value); 141 return Clipperz.Crypto.ECC.BinaryField.Value._bitSize(this._value);
145 }, 142 },
146 143
147 //----------------------------------------------------------------------------- 144 //-----------------------------------------------------------------------------
148 145
149 'isBitSet': function(aBitPosition) { 146 'isBitSet': function(aBitPosition) {
150 return Clipperz.Crypto.ECC.BinaryField.Value._isBitSet(this._value, aBitPosition); 147 return Clipperz.Crypto.ECC.BinaryField.Value._isBitSet(this._value, aBitPosition);
151 }, 148 },
152 149
diff --git a/frontend/beta/js/Clipperz/Crypto/PRNG.js b/frontend/beta/js/Clipperz/Crypto/PRNG.js
index 770ceb1..39d0045 100644
--- a/frontend/beta/js/Clipperz/Crypto/PRNG.js
+++ b/frontend/beta/js/Clipperz/Crypto/PRNG.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) { 26try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) {
30 throw "Clipperz.Crypto.PRNG depends on Clipperz.ByteArray!"; 27 throw "Clipperz.Crypto.PRNG depends on Clipperz.ByteArray!";
31} 28}
32 29
33try { if (typeof(Clipperz.Crypto.SHA) == 'undefined') { throw ""; }} catch (e) { 30try { if (typeof(Clipperz.Crypto.SHA) == 'undefined') { throw ""; }} catch (e) {
34 throw "Clipperz.Crypto.PRNG depends on Clipperz.Crypto.SHA!"; 31 throw "Clipperz.Crypto.PRNG depends on Clipperz.Crypto.SHA!";
35} 32}
36 33
37try { if (typeof(Clipperz.Crypto.AES) == 'undefined') { throw ""; }} catch (e) { 34try { if (typeof(Clipperz.Crypto.AES) == 'undefined') { throw ""; }} catch (e) {
38 throw "Clipperz.Crypto.PRNG depends on Clipperz.Crypto.AES!"; 35 throw "Clipperz.Crypto.PRNG depends on Clipperz.Crypto.AES!";
39} 36}
40 37
41if (typeof(Clipperz.Crypto.PRNG) == 'undefined') { Clipperz.Crypto.PRNG = {}; } 38if (typeof(Clipperz.Crypto.PRNG) == 'undefined') { Clipperz.Crypto.PRNG = {}; }
42 39
43//############################################################################# 40//#############################################################################
44 41
45Clipperz.Crypto.PRNG.EntropyAccumulator = function(args) { 42Clipperz.Crypto.PRNG.EntropyAccumulator = function(args) {
46 args = args || {}; 43 args = args || {};
47 //MochiKit.Base.bindMethods(this); 44 //MochiKit.Base.bindMethods(this);
48 45
49 this._stack = new Clipperz.ByteArray(); 46 this._stack = new Clipperz.ByteArray();
50 this._maxStackLengthBeforeHashing = args.maxStackLengthBeforeHashing || 256; 47 this._maxStackLengthBeforeHashing = args.maxStackLengthBeforeHashing || 256;
51 return this; 48 return this;
52} 49}
53 50
54Clipperz.Crypto.PRNG.EntropyAccumulator.prototype = MochiKit.Base.update(null, { 51Clipperz.Crypto.PRNG.EntropyAccumulator.prototype = MochiKit.Base.update(null, {
55 52
56 'toString': function() { 53 'toString': function() {
57 return "Clipperz.Crypto.PRNG.EntropyAccumulator"; 54 return "Clipperz.Crypto.PRNG.EntropyAccumulator";
58 }, 55 },
59 56
60 //------------------------------------------------------------------------- 57 //-------------------------------------------------------------------------
61 58
62 'stack': function() { 59 'stack': function() {
63 return this._stack; 60 return this._stack;
64 }, 61 },
65 62
66 'setStack': function(aValue) { 63 'setStack': function(aValue) {
67 this._stack = aValue; 64 this._stack = aValue;
68 }, 65 },
69 66
70 'resetStack': function() { 67 'resetStack': function() {
71 this.stack().reset(); 68 this.stack().reset();
72 }, 69 },
73 70
74 'maxStackLengthBeforeHashing': function() { 71 'maxStackLengthBeforeHashing': function() {
75 return this._maxStackLengthBeforeHashing; 72 return this._maxStackLengthBeforeHashing;
76 }, 73 },
77 74
78 //------------------------------------------------------------------------- 75 //-------------------------------------------------------------------------
79 76
80 'addRandomByte': function(aValue) { 77 'addRandomByte': function(aValue) {
81 this.stack().appendByte(aValue); 78 this.stack().appendByte(aValue);
82 79
83 if (this.stack().length() > this.maxStackLengthBeforeHashing()) { 80 if (this.stack().length() > this.maxStackLengthBeforeHashing()) {
84 this.setStack(Clipperz.Crypto.SHA.sha_d256(this.stack())); 81 this.setStack(Clipperz.Crypto.SHA.sha_d256(this.stack()));
85 } 82 }
86 }, 83 },
87 84
88 //------------------------------------------------------------------------- 85 //-------------------------------------------------------------------------
89 __syntaxFix__: "syntax fix" 86 __syntaxFix__: "syntax fix"
90}); 87});
91 88
92//############################################################################# 89//#############################################################################
93 90
94Clipperz.Crypto.PRNG.RandomnessSource = function(args) { 91Clipperz.Crypto.PRNG.RandomnessSource = function(args) {
95 args = args || {}; 92 args = args || {};
96 MochiKit.Base.bindMethods(this); 93 MochiKit.Base.bindMethods(this);
97 94
98 this._generator = args.generator || null; 95 this._generator = args.generator || null;
99 this._sourceId = args.sourceId || null; 96 this._sourceId = args.sourceId || null;
100 this._boostMode = args.boostMode || false; 97 this._boostMode = args.boostMode || false;
101 98
102 this._nextPoolIndex = 0; 99 this._nextPoolIndex = 0;
103 100
104 return this; 101 return this;
105} 102}
106 103
107Clipperz.Crypto.PRNG.RandomnessSource.prototype = MochiKit.Base.update(null, { 104Clipperz.Crypto.PRNG.RandomnessSource.prototype = MochiKit.Base.update(null, {
108 105
109 'generator': function() { 106 'generator': function() {
110 return this._generator; 107 return this._generator;
111 }, 108 },
112 109
113 'setGenerator': function(aValue) { 110 'setGenerator': function(aValue) {
114 this._generator = aValue; 111 this._generator = aValue;
115 }, 112 },
116 113
117 //------------------------------------------------------------------------- 114 //-------------------------------------------------------------------------
118 115
119 'boostMode': function() { 116 'boostMode': function() {
120 return this._boostMode; 117 return this._boostMode;
121 }, 118 },
122 119
123 'setBoostMode': function(aValue) { 120 'setBoostMode': function(aValue) {
124 this._boostMode = aValue; 121 this._boostMode = aValue;
125 }, 122 },
126 123
127 //------------------------------------------------------------------------- 124 //-------------------------------------------------------------------------
128 125
129 'sourceId': function() { 126 'sourceId': function() {
130 return this._sourceId; 127 return this._sourceId;
131 }, 128 },
132 129
133 'setSourceId': function(aValue) { 130 'setSourceId': function(aValue) {
134 this._sourceId = aValue; 131 this._sourceId = aValue;
135 }, 132 },
136 133
137 //------------------------------------------------------------------------- 134 //-------------------------------------------------------------------------
138 135
139 'nextPoolIndex': function() { 136 'nextPoolIndex': function() {
140 return this._nextPoolIndex; 137 return this._nextPoolIndex;
141 }, 138 },
142 139
143 'incrementNextPoolIndex': function() { 140 'incrementNextPoolIndex': function() {
144 this._nextPoolIndex = ((this._nextPoolIndex + 1) % this.generator().numberOfEntropyAccumulators()); 141 this._nextPoolIndex = ((this._nextPoolIndex + 1) % this.generator().numberOfEntropyAccumulators());
145 }, 142 },
146 143
147 //------------------------------------------------------------------------- 144 //-------------------------------------------------------------------------
148 145
149 'updateGeneratorWithValue': function(aRandomValue) { 146 'updateGeneratorWithValue': function(aRandomValue) {
150 if (this.generator() != null) { 147 if (this.generator() != null) {
151 this.generator().addRandomByte(this.sourceId(), this.nextPoolIndex(), aRandomValue); 148 this.generator().addRandomByte(this.sourceId(), this.nextPoolIndex(), aRandomValue);
152 this.incrementNextPoolIndex(); 149 this.incrementNextPoolIndex();
diff --git a/frontend/beta/js/Clipperz/Crypto/RSA.js b/frontend/beta/js/Clipperz/Crypto/RSA.js
index 4dad8f7..6844dba 100644
--- a/frontend/beta/js/Clipperz/Crypto/RSA.js
+++ b/frontend/beta/js/Clipperz/Crypto/RSA.js
@@ -1,151 +1,148 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29try { if (typeof(Clipperz.Crypto.BigInt) == 'undefined') { throw ""; }} catch (e) { 26try { if (typeof(Clipperz.Crypto.BigInt) == 'undefined') { throw ""; }} catch (e) {
30 throw "Clipperz.Crypto.RSA depends on Clipperz.Crypto.BigInt!"; 27 throw "Clipperz.Crypto.RSA depends on Clipperz.Crypto.BigInt!";
31} 28}
32 29
33if (typeof(Clipperz.Crypto.RSA) == 'undefined') { Clipperz.Crypto.RSA = {}; } 30if (typeof(Clipperz.Crypto.RSA) == 'undefined') { Clipperz.Crypto.RSA = {}; }
34 31
35Clipperz.Crypto.RSA.VERSION = "0.1"; 32Clipperz.Crypto.RSA.VERSION = "0.1";
36Clipperz.Crypto.RSA.NAME = "Clipperz.RSA"; 33Clipperz.Crypto.RSA.NAME = "Clipperz.RSA";
37 34
38//############################################################################# 35//#############################################################################
39 36
40MochiKit.Base.update(Clipperz.Crypto.RSA, { 37MochiKit.Base.update(Clipperz.Crypto.RSA, {
41 38
42 //------------------------------------------------------------------------- 39 //-------------------------------------------------------------------------
43 40
44 'publicKeyWithValues': function (e, d, n) { 41 'publicKeyWithValues': function (e, d, n) {
45 varresult; 42 varresult;
46 43
47 result = {}; 44 result = {};
48 45
49 if (e.isBigInt) { 46 if (e.isBigInt) {
50 result.e = e; 47 result.e = e;
51 } else { 48 } else {
52 result.e = new Clipperz.Crypto.BigInt(e, 16); 49 result.e = new Clipperz.Crypto.BigInt(e, 16);
53 } 50 }
54 51
55 if (d.isBigInt) { 52 if (d.isBigInt) {
56 result.d = d; 53 result.d = d;
57 } else { 54 } else {
58 result.d = new Clipperz.Crypto.BigInt(d, 16); 55 result.d = new Clipperz.Crypto.BigInt(d, 16);
59 } 56 }
60 57
61 if (n.isBigInt) { 58 if (n.isBigInt) {
62 result.n = n; 59 result.n = n;
63 } else { 60 } else {
64 result.n = new Clipperz.Crypto.BigInt(n, 16); 61 result.n = new Clipperz.Crypto.BigInt(n, 16);
65 } 62 }
66 63
67 return result; 64 return result;
68 }, 65 },
69 66
70 'privateKeyWithValues': function(e, d, n) { 67 'privateKeyWithValues': function(e, d, n) {
71 return Clipperz.Crypto.RSA.publicKeyWithValues(e, d, n); 68 return Clipperz.Crypto.RSA.publicKeyWithValues(e, d, n);
72 }, 69 },
73 70
74 //----------------------------------------------------------------------------- 71 //-----------------------------------------------------------------------------
75 72
76 'encryptUsingPublicKey': function (aKey, aMessage) { 73 'encryptUsingPublicKey': function (aKey, aMessage) {
77 varmessageValue; 74 varmessageValue;
78 varresult; 75 varresult;
79 76
80 messageValue = new Clipperz.Crypto.BigInt(aMessage, 16); 77 messageValue = new Clipperz.Crypto.BigInt(aMessage, 16);
81 result = messageValue.powerModule(aKey.e, aKey.n); 78 result = messageValue.powerModule(aKey.e, aKey.n);
82 79
83 return result.asString(16); 80 return result.asString(16);
84 }, 81 },
85 82
86 //............................................................................. 83 //.............................................................................
87 84
88 'decryptUsingPublicKey': function (aKey, aMessage) { 85 'decryptUsingPublicKey': function (aKey, aMessage) {
89 return Clipperz.Crypto.RSA.encryptUsingPublicKey(aKey, aMessage); 86 return Clipperz.Crypto.RSA.encryptUsingPublicKey(aKey, aMessage);
90 }, 87 },
91 88
92 //----------------------------------------------------------------------------- 89 //-----------------------------------------------------------------------------
93 90
94 'encryptUsingPrivateKey': function (aKey, aMessage) { 91 'encryptUsingPrivateKey': function (aKey, aMessage) {
95 varmessageValue; 92 varmessageValue;
96 varresult; 93 varresult;
97 94
98 messageValue = new Clipperz.Crypto.BigInt(aMessage, 16); 95 messageValue = new Clipperz.Crypto.BigInt(aMessage, 16);
99 result = messageValue.powerModule(aKey.d, aKey.n); 96 result = messageValue.powerModule(aKey.d, aKey.n);
100 97
101 return result.asString(16); 98 return result.asString(16);
102 }, 99 },
103 100
104 //............................................................................. 101 //.............................................................................
105 102
106 'decryptUsingPrivateKey': function (aKey, aMessage) { 103 'decryptUsingPrivateKey': function (aKey, aMessage) {
107 return Clipperz.Crypto.RSA.encryptUsingPrivateKey(aKey, aMessage); 104 return Clipperz.Crypto.RSA.encryptUsingPrivateKey(aKey, aMessage);
108 }, 105 },
109 106
110 //----------------------------------------------------------------------------- 107 //-----------------------------------------------------------------------------
111 108
112 'generatePublicKey': function(aNumberOfBits) { 109 'generatePublicKey': function(aNumberOfBits) {
113 varresult; 110 varresult;
114 vare; 111 vare;
115 vard; 112 vard;
116 varn; 113 varn;
117 114
118 e = new Clipperz.Crypto.BigInt("10001", 16); 115 e = new Clipperz.Crypto.BigInt("10001", 16);
119 116
120 { 117 {
121 var p, q; 118 var p, q;
122 varphi; 119 varphi;
123 120
124 do { 121 do {
125 p = Clipperz.Crypto.BigInt.randomPrime(aNumberOfBits); 122 p = Clipperz.Crypto.BigInt.randomPrime(aNumberOfBits);
126 } while (p.module(e).equals(1)); 123 } while (p.module(e).equals(1));
127 124
128 do { 125 do {
129 q = Clipperz.Crypto.BigInt.randomPrime(aNumberOfBits); 126 q = Clipperz.Crypto.BigInt.randomPrime(aNumberOfBits);
130 } while ((q.equals(p)) || (q.module(e).equals(1))); 127 } while ((q.equals(p)) || (q.module(e).equals(1)));
131 128
132 n = p.multiply(q); 129 n = p.multiply(q);
133 phi = (p.subtract(1).multiply(q.subtract(1))); 130 phi = (p.subtract(1).multiply(q.subtract(1)));
134 d = e.powerModule(-1, phi); 131 d = e.powerModule(-1, phi);
135 } 132 }
136 133
137 result = Clipperz.Crypto.RSA.publicKeyWithValues(e, d, n); 134 result = Clipperz.Crypto.RSA.publicKeyWithValues(e, d, n);
138 135
139 return result; 136 return result;
140 }, 137 },
141 138
142 //------------------------------------------------------------------------- 139 //-------------------------------------------------------------------------
143 140
144 __syntaxFix__: "syntax fix" 141 __syntaxFix__: "syntax fix"
145 142
146 //------------------------------------------------------------------------- 143 //-------------------------------------------------------------------------
147 144
148}); 145});
149 146
150//############################################################################# 147//#############################################################################
151 148
diff --git a/frontend/beta/js/Clipperz/Crypto/SHA.js b/frontend/beta/js/Clipperz/Crypto/SHA.js
index bb50b4f..635eb90 100644
--- a/frontend/beta/js/Clipperz/Crypto/SHA.js
+++ b/frontend/beta/js/Clipperz/Crypto/SHA.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) { 26try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) {
30 throw "Clipperz.Crypto.PRNG depends on Clipperz.ByteArray!"; 27 throw "Clipperz.Crypto.PRNG depends on Clipperz.ByteArray!";
31} 28}
32 29
33if (typeof(Clipperz.Crypto) == 'undefined') { Clipperz.Crypto = {}; } 30if (typeof(Clipperz.Crypto) == 'undefined') { Clipperz.Crypto = {}; }
34if (typeof(Clipperz.Crypto.SHA) == 'undefined') { Clipperz.Crypto.SHA = {}; } 31if (typeof(Clipperz.Crypto.SHA) == 'undefined') { Clipperz.Crypto.SHA = {}; }
35 32
36Clipperz.Crypto.SHA.VERSION = "0.3"; 33Clipperz.Crypto.SHA.VERSION = "0.3";
37Clipperz.Crypto.SHA.NAME = "Clipperz.Crypto.SHA"; 34Clipperz.Crypto.SHA.NAME = "Clipperz.Crypto.SHA";
38 35
39MochiKit.Base.update(Clipperz.Crypto.SHA, { 36MochiKit.Base.update(Clipperz.Crypto.SHA, {
40 37
41 '__repr__': function () { 38 '__repr__': function () {
42 return "[" + this.NAME + " " + this.VERSION + "]"; 39 return "[" + this.NAME + " " + this.VERSION + "]";
43 }, 40 },
44 41
45 'toString': function () { 42 'toString': function () {
46 return this.__repr__(); 43 return this.__repr__();
47 }, 44 },
48 45
49 //----------------------------------------------------------------------------- 46 //-----------------------------------------------------------------------------
50 47
51 'rotateRight': function(aValue, aNumberOfBits) { 48 'rotateRight': function(aValue, aNumberOfBits) {
52//Clipperz.Profile.start("Clipperz.Crypto.SHA.rotateRight"); 49//Clipperz.Profile.start("Clipperz.Crypto.SHA.rotateRight");
53 var result; 50 var result;
54 51
55 result = (aValue >>> aNumberOfBits) | (aValue << (32 - aNumberOfBits)); 52 result = (aValue >>> aNumberOfBits) | (aValue << (32 - aNumberOfBits));
56 53
57//Clipperz.Profile.stop("Clipperz.Crypto.SHA.rotateRight"); 54//Clipperz.Profile.stop("Clipperz.Crypto.SHA.rotateRight");
58 return result; 55 return result;
59 }, 56 },
60 57
61 'shiftRight': function(aValue, aNumberOfBits) { 58 'shiftRight': function(aValue, aNumberOfBits) {
62//Clipperz.Profile.start("Clipperz.Crypto.SHA.shiftRight"); 59//Clipperz.Profile.start("Clipperz.Crypto.SHA.shiftRight");
63 var result; 60 var result;
64 61
65 result = aValue >>> aNumberOfBits; 62 result = aValue >>> aNumberOfBits;
66 63
67//Clipperz.Profile.stop("Clipperz.Crypto.SHA.shiftRight"); 64//Clipperz.Profile.stop("Clipperz.Crypto.SHA.shiftRight");
68 return result; 65 return result;
69 }, 66 },
70 67
71 //----------------------------------------------------------------------------- 68 //-----------------------------------------------------------------------------
72 69
73 'safeAdd': function() { 70 'safeAdd': function() {
74//Clipperz.Profile.start("Clipperz.Crypto.SHA.safeAdd"); 71//Clipperz.Profile.start("Clipperz.Crypto.SHA.safeAdd");
75 varresult; 72 varresult;
76 vari, c; 73 vari, c;
77 74
78 result = arguments[0]; 75 result = arguments[0];
79 c = arguments.length; 76 c = arguments.length;
80 for (i=1; i<c; i++) { 77 for (i=1; i<c; i++) {
81 varlowerBytesSum; 78 varlowerBytesSum;
82 79
83 lowerBytesSum = (result & 0xffff) + (arguments[i] & 0xffff); 80 lowerBytesSum = (result & 0xffff) + (arguments[i] & 0xffff);
84 result = (((result >> 16) + (arguments[i] >> 16) + (lowerBytesSum >> 16)) << 16) | (lowerBytesSum & 0xffff); 81 result = (((result >> 16) + (arguments[i] >> 16) + (lowerBytesSum >> 16)) << 16) | (lowerBytesSum & 0xffff);
85 } 82 }
86 83
87//Clipperz.Profile.stop("Clipperz.Crypto.SHA.safeAdd"); 84//Clipperz.Profile.stop("Clipperz.Crypto.SHA.safeAdd");
88 return result; 85 return result;
89 }, 86 },
90 87
91 //----------------------------------------------------------------------------- 88 //-----------------------------------------------------------------------------
92 89
93 'sha256_array': function(aValue) { 90 'sha256_array': function(aValue) {
94//Clipperz.Profile.start("Clipperz.Crypto.SHA.sha256_array"); 91//Clipperz.Profile.start("Clipperz.Crypto.SHA.sha256_array");
95 varresult; 92 varresult;
96 varmessage; 93 varmessage;
97 var h0, h1, h2, h3, h4, h5, h6, h7; 94 var h0, h1, h2, h3, h4, h5, h6, h7;
98 vark; 95 vark;
99 varmessageLength; 96 varmessageLength;
100 varmessageLengthInBits; 97 varmessageLengthInBits;
101 var_i, _c; 98 var_i, _c;
102 var charBits; 99 var charBits;
103 var rotateRight; 100 var rotateRight;
104 var shiftRight; 101 var shiftRight;
105 var safeAdd; 102 var safeAdd;
106 varbytesPerBlock; 103 varbytesPerBlock;
107 var currentMessageIndex; 104 var currentMessageIndex;
108 105
109 bytesPerBlock = 512/8; 106 bytesPerBlock = 512/8;
110 rotateRight = Clipperz.Crypto.SHA.rotateRight; 107 rotateRight = Clipperz.Crypto.SHA.rotateRight;
111 shiftRight = Clipperz.Crypto.SHA.shiftRight; 108 shiftRight = Clipperz.Crypto.SHA.shiftRight;
112 safeAdd = Clipperz.Crypto.SHA.safeAdd; 109 safeAdd = Clipperz.Crypto.SHA.safeAdd;
113 110
114 charBits = 8; 111 charBits = 8;
115 112
116 h0 = 0x6a09e667; 113 h0 = 0x6a09e667;
117 h1 = 0xbb67ae85; 114 h1 = 0xbb67ae85;
118 h2 = 0x3c6ef372; 115 h2 = 0x3c6ef372;
119 h3 = 0xa54ff53a; 116 h3 = 0xa54ff53a;
120 h4 = 0x510e527f; 117 h4 = 0x510e527f;
121 h5 = 0x9b05688c; 118 h5 = 0x9b05688c;
122 h6 = 0x1f83d9ab; 119 h6 = 0x1f83d9ab;
123 h7 = 0x5be0cd19; 120 h7 = 0x5be0cd19;
124 121
125 k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 122 k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
126 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 123 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
127 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 124 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
128 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 125 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
129 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 126 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
130 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 127 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
131 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 128 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
132 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2]; 129 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];
133 130
134 message = aValue; 131 message = aValue;
135 messageLength = message.length; 132 messageLength = message.length;
136 133
137 //Pre-processing: 134 //Pre-processing:
138 message.push(0x80); //append a single "1" bit to message 135 message.push(0x80); //append a single "1" bit to message
139 136
140 _c = (512 - (((messageLength + 1) * charBits) % 512) - 64) / charBits; 137 _c = (512 - (((messageLength + 1) * charBits) % 512) - 64) / charBits;
141 for (_i=0; _i<_c; _i++) { 138 for (_i=0; _i<_c; _i++) {
142 message.push(0x00); //append "0" bits until message length ≡ 448 ≡ -64 (mod 512) 139 message.push(0x00); //append "0" bits until message length ≡ 448 ≡ -64 (mod 512)
143 } 140 }
144 messageLengthInBits = messageLength * charBits; 141 messageLengthInBits = messageLength * charBits;
145 message.push(0x00); //the 4 most high byte are alway 0 as message length is represented with a 32bit value; 142 message.push(0x00); //the 4 most high byte are alway 0 as message length is represented with a 32bit value;
146 message.push(0x00); 143 message.push(0x00);
147 message.push(0x00); 144 message.push(0x00);
148 message.push(0x00); 145 message.push(0x00);
149 message.push((messageLengthInBits >> 24)& 0xff); 146 message.push((messageLengthInBits >> 24)& 0xff);
150 message.push((messageLengthInBits >> 16)& 0xff); 147 message.push((messageLengthInBits >> 16)& 0xff);
151 message.push((messageLengthInBits >> 8) & 0xff); 148 message.push((messageLengthInBits >> 8) & 0xff);
152 message.push( messageLengthInBits & 0xff); 149 message.push( messageLengthInBits & 0xff);
diff --git a/frontend/beta/js/Clipperz/Crypto/SRP.js b/frontend/beta/js/Clipperz/Crypto/SRP.js
index 0eef6ec..3b25275 100644
--- a/frontend/beta/js/Clipperz/Crypto/SRP.js
+++ b/frontend/beta/js/Clipperz/Crypto/SRP.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) { 26try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) {
30 throw "Clipperz.Crypto.PRNG depends on Clipperz.ByteArray!"; 27 throw "Clipperz.Crypto.PRNG depends on Clipperz.ByteArray!";
31} 28}
32 29
33try { if (typeof(Clipperz.Crypto.BigInt) == 'undefined') { throw ""; }} catch (e) { 30try { if (typeof(Clipperz.Crypto.BigInt) == 'undefined') { throw ""; }} catch (e) {
34 throw "Clipperz.Crypto.SRP depends on Clipperz.Crypto.BigInt!"; 31 throw "Clipperz.Crypto.SRP depends on Clipperz.Crypto.BigInt!";
35} 32}
36 33
37try { if (typeof(Clipperz.Crypto.PRNG) == 'undefined') { throw ""; }} catch (e) { 34try { if (typeof(Clipperz.Crypto.PRNG) == 'undefined') { throw ""; }} catch (e) {
38 throw "Clipperz.Crypto.SRP depends on Clipperz.Crypto.PRNG!"; 35 throw "Clipperz.Crypto.SRP depends on Clipperz.Crypto.PRNG!";
39} 36}
40 37
41if (typeof(Clipperz.Crypto.SRP) == 'undefined') { Clipperz.Crypto.SRP = {}; } 38if (typeof(Clipperz.Crypto.SRP) == 'undefined') { Clipperz.Crypto.SRP = {}; }
42 39
43Clipperz.Crypto.SRP.VERSION = "0.1"; 40Clipperz.Crypto.SRP.VERSION = "0.1";
44Clipperz.Crypto.SRP.NAME = "Clipperz.Crypto.SRP"; 41Clipperz.Crypto.SRP.NAME = "Clipperz.Crypto.SRP";
45 42
46//############################################################################# 43//#############################################################################
47 44
48MochiKit.Base.update(Clipperz.Crypto.SRP, { 45MochiKit.Base.update(Clipperz.Crypto.SRP, {
49 46
50 '_n': null, 47 '_n': null,
51 '_g': null, 48 '_g': null,
52 //------------------------------------------------------------------------- 49 //-------------------------------------------------------------------------
53 50
54 'n': function() { 51 'n': function() {
55 if (Clipperz.Crypto.SRP._n == null) { 52 if (Clipperz.Crypto.SRP._n == null) {
56 Clipperz.Crypto.SRP._n = new Clipperz.Crypto.BigInt("115b8b692e0e045692cf280b436735c77a5a9e8a9e7ed56c965f87db5b2a2ece3", 16); 53 Clipperz.Crypto.SRP._n = new Clipperz.Crypto.BigInt("115b8b692e0e045692cf280b436735c77a5a9e8a9e7ed56c965f87db5b2a2ece3", 16);
57 } 54 }
58 55
59 return Clipperz.Crypto.SRP._n; 56 return Clipperz.Crypto.SRP._n;
60 }, 57 },
61 58
62 //------------------------------------------------------------------------- 59 //-------------------------------------------------------------------------
63 60
64 'g': function() { 61 'g': function() {
65 if (Clipperz.Crypto.SRP._g == null) { 62 if (Clipperz.Crypto.SRP._g == null) {
66 Clipperz.Crypto.SRP._g = new Clipperz.Crypto.BigInt(2); //eventually 5 (as suggested on the Diffi-Helmann documentation) 63 Clipperz.Crypto.SRP._g = new Clipperz.Crypto.BigInt(2); //eventually 5 (as suggested on the Diffi-Helmann documentation)
67 } 64 }
68 65
69 return Clipperz.Crypto.SRP._g; 66 return Clipperz.Crypto.SRP._g;
70 }, 67 },
71 68
72 //----------------------------------------------------------------------------- 69 //-----------------------------------------------------------------------------
73 70
74 'exception': { 71 'exception': {
75 'InvalidValue': new MochiKit.Base.NamedError("Clipperz.Crypto.SRP.exception.InvalidValue") 72 'InvalidValue': new MochiKit.Base.NamedError("Clipperz.Crypto.SRP.exception.InvalidValue")
76 }, 73 },
77 74
78 //------------------------------------------------------------------------- 75 //-------------------------------------------------------------------------
79 __syntaxFix__: "syntax fix" 76 __syntaxFix__: "syntax fix"
80 77
81}); 78});
82 79
83//############################################################################# 80//#############################################################################
84// 81//
85 // S R P C o n n e c t i o n version 1.0 82 // S R P C o n n e c t i o n version 1.0
86// 83//
87//============================================================================= 84//=============================================================================
88Clipperz.Crypto.SRP.Connection = function (args) { 85Clipperz.Crypto.SRP.Connection = function (args) {
89 args = args || {}; 86 args = args || {};
90 87
91 this._C = args.C; 88 this._C = args.C;
92 this._P = args.P; 89 this._P = args.P;
93 this.hash = args.hash; 90 this.hash = args.hash;
94 91
95 this._a = null; 92 this._a = null;
96 this._A = null; 93 this._A = null;
97 94
98 this._s = null; 95 this._s = null;
99 this._B = null; 96 this._B = null;
100 97
101 this._x = null; 98 this._x = null;
102 99
103 this._u = null; 100 this._u = null;
104 this._K = null; 101 this._K = null;
105 this._M1 = null; 102 this._M1 = null;
106 this._M2 = null; 103 this._M2 = null;
107 104
108 this._sessionKey = null; 105 this._sessionKey = null;
109 106
110 return this; 107 return this;
111} 108}
112 109
113Clipperz.Crypto.SRP.Connection.prototype = MochiKit.Base.update(null, { 110Clipperz.Crypto.SRP.Connection.prototype = MochiKit.Base.update(null, {
114 111
115 'toString': function () { 112 'toString': function () {
116 return "Clipperz.Crypto.SRP.Connection (username: " + this.username() + "). Status: " + this.statusDescription(); 113 return "Clipperz.Crypto.SRP.Connection (username: " + this.username() + "). Status: " + this.statusDescription();
117 }, 114 },
118 115
119 //------------------------------------------------------------------------- 116 //-------------------------------------------------------------------------
120 117
121 'C': function () { 118 'C': function () {
122 return this._C; 119 return this._C;
123 }, 120 },
124 121
125 //------------------------------------------------------------------------- 122 //-------------------------------------------------------------------------
126 123
127 'P': function () { 124 'P': function () {
128 return this._P; 125 return this._P;
129 }, 126 },
130 127
131 //------------------------------------------------------------------------- 128 //-------------------------------------------------------------------------
132 129
133 'a': function () { 130 'a': function () {
134 if (this._a == null) { 131 if (this._a == null) {
135 this._a = new Clipperz.Crypto.BigInt(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32).toHexString().substring(2), 16); 132 this._a = new Clipperz.Crypto.BigInt(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32).toHexString().substring(2), 16);
136 // this._a = new Clipperz.Crypto.BigInt("37532428169486597638072888476611365392249575518156687476805936694442691012367", 10); 133 // this._a = new Clipperz.Crypto.BigInt("37532428169486597638072888476611365392249575518156687476805936694442691012367", 10);
137//MochiKit.Logging.logDebug("SRP a: " + this._a); 134//MochiKit.Logging.logDebug("SRP a: " + this._a);
138 } 135 }
139 136
140 return this._a; 137 return this._a;
141 }, 138 },
142 139
143 //------------------------------------------------------------------------- 140 //-------------------------------------------------------------------------
144 141
145 'A': function () { 142 'A': function () {
146 if (this._A == null) { 143 if (this._A == null) {
147 //Warning: this value should be strictly greater than zero: how should we perform this check? 144 //Warning: this value should be strictly greater than zero: how should we perform this check?
148 this._A = Clipperz.Crypto.SRP.g().powerModule(this.a(), Clipperz.Crypto.SRP.n()); 145 this._A = Clipperz.Crypto.SRP.g().powerModule(this.a(), Clipperz.Crypto.SRP.n());
149 146
150 if (this._A.equals(0)) { 147 if (this._A.equals(0)) {
151MochiKit.Logging.logError("Clipperz.Crypto.SRP.Connection: trying to set 'A' to 0."); 148MochiKit.Logging.logError("Clipperz.Crypto.SRP.Connection: trying to set 'A' to 0.");
152 throw Clipperz.Crypto.SRP.exception.InvalidValue; 149 throw Clipperz.Crypto.SRP.exception.InvalidValue;
diff --git a/frontend/beta/js/Clipperz/DOM.js b/frontend/beta/js/Clipperz/DOM.js
index 7c27359..7e230bc 100644
--- a/frontend/beta/js/Clipperz/DOM.js
+++ b/frontend/beta/js/Clipperz/DOM.js
@@ -1,131 +1,128 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.DOM) == 'undefined') { Clipperz.DOM = {}; } 27if (typeof(Clipperz.DOM) == 'undefined') { Clipperz.DOM = {}; }
31 28
32Clipperz.DOM.VERSION = "0.1"; 29Clipperz.DOM.VERSION = "0.1";
33Clipperz.DOM.NAME = "Clipperz.DOM"; 30Clipperz.DOM.NAME = "Clipperz.DOM";
34 31
35MochiKit.Base.update(Clipperz.DOM, { 32MochiKit.Base.update(Clipperz.DOM, {
36 33
37 //------------------------------------------------------------------------- 34 //-------------------------------------------------------------------------
38 35
39 '__repr__': function () { 36 '__repr__': function () {
40 return "[" + this.NAME + " " + this.VERSION + "]"; 37 return "[" + this.NAME + " " + this.VERSION + "]";
41 }, 38 },
42 39
43 //------------------------------------------------------------------------- 40 //-------------------------------------------------------------------------
44 41
45 'toString': function () { 42 'toString': function () {
46 return this.__repr__(); 43 return this.__repr__();
47 }, 44 },
48 45
49 //------------------------------------------------------------------------- 46 //-------------------------------------------------------------------------
50 47
51 'selectOptionMatchingValue': function (aSelectElement, aValue, shouldUseCaseInsensitiveTest) { 48 'selectOptionMatchingValue': function (aSelectElement, aValue, shouldUseCaseInsensitiveTest) {
52 var selectedOptionIndex; 49 var selectedOptionIndex;
53 var i, c; 50 var i, c;
54 51
55 selectedOptionIndex = -1; 52 selectedOptionIndex = -1;
56 53
57 c = aSelectElement.options.length; 54 c = aSelectElement.options.length;
58 for (i=0; (i<c) && (selectedOptionIndex == -1); i++) { 55 for (i=0; (i<c) && (selectedOptionIndex == -1); i++) {
59 if (shouldUseCaseInsensitiveTest == true) { 56 if (shouldUseCaseInsensitiveTest == true) {
60 if (aSelectElement.options[i].value.toLowerCase() == aValue.toLowerCase()) { 57 if (aSelectElement.options[i].value.toLowerCase() == aValue.toLowerCase()) {
61 selectedOptionIndex = i; 58 selectedOptionIndex = i;
62 } 59 }
63 } else { 60 } else {
64 if (aSelectElement.options[i].value == aValue) { 61 if (aSelectElement.options[i].value == aValue) {
65 selectedOptionIndex = i; 62 selectedOptionIndex = i;
66 } 63 }
67 } 64 }
68 } 65 }
69 66
70 if (selectedOptionIndex != -1) { 67 if (selectedOptionIndex != -1) {
71 aSelectElement.selectedIndex = selectedOptionIndex; 68 aSelectElement.selectedIndex = selectedOptionIndex;
72 } 69 }
73 }, 70 },
74 71
75 //------------------------------------------------------------------------- 72 //-------------------------------------------------------------------------
76 73
77 'setFormContents': function(aNode, someValues) { 74 'setFormContents': function(aNode, someValues) {
78 var node; 75 var node;
79 var values; 76 var values;
80 var i, c; 77 var i, c;
81 78
82 values = {}; 79 values = {};
83 c = someValues[0].length; 80 c = someValues[0].length;
84 for (i=0; i<c; i++) { 81 for (i=0; i<c; i++) {
85 values[someValues[0][i]] = someValues[1][i]; 82 values[someValues[0][i]] = someValues[1][i];
86 } 83 }
87 84
88 // var m = MochiKit.Base; 85 // var m = MochiKit.Base;
89 // var self = MochiKit.DOM; 86 // var self = MochiKit.DOM;
90 if (typeof(aNode) == "undefined" || aNode === null) { 87 if (typeof(aNode) == "undefined" || aNode === null) {
91 node = MochiKit.DOM._document.body; 88 node = MochiKit.DOM._document.body;
92 } else { 89 } else {
93 node = MochiKit.DOM.getElement(aNode); 90 node = MochiKit.DOM.getElement(aNode);
94 } 91 }
95 92
96 MochiKit.Base.nodeWalk(node, function(aNode) { 93 MochiKit.Base.nodeWalk(node, function(aNode) {
97 var result; 94 var result;
98 var name; 95 var name;
99 96
100 result = null; 97 result = null;
101 name = aNode.name; 98 name = aNode.name;
102 if (MochiKit.Base.isNotEmpty(name) && (typeof(values[name]) != 'undefined')) { 99 if (MochiKit.Base.isNotEmpty(name) && (typeof(values[name]) != 'undefined')) {
103 var tagName; 100 var tagName;
104 101
105 tagName = aNode.tagName.toUpperCase(); 102 tagName = aNode.tagName.toUpperCase();
106 if (tagName === "INPUT" && (aNode.type == "radio" || aNode.type == "checkbox")) { 103 if (tagName === "INPUT" && (aNode.type == "radio" || aNode.type == "checkbox")) {
107 aNode.checked = values[name]; 104 aNode.checked = values[name];
108 } else if (tagName === "SELECT") { 105 } else if (tagName === "SELECT") {
109 if (aNode.type == "select-one") { 106 if (aNode.type == "select-one") {
110 Clipperz.DOM.selectOptionMatchingValue(aNode, values[name]); 107 Clipperz.DOM.selectOptionMatchingValue(aNode, values[name]);
111 } else { //aNode.type == "select-multiple" 108 } else { //aNode.type == "select-multiple"
112MochiKit.Logging.logWarning("### unhandled Select.type = 'select-multiple' condition"); 109MochiKit.Logging.logWarning("### unhandled Select.type = 'select-multiple' condition");
113 } 110 }
114 } else if (tagName === "FORM" || tagName === "P" || tagName === "SPAN" || tagName === "DIV") { 111 } else if (tagName === "FORM" || tagName === "P" || tagName === "SPAN" || tagName === "DIV") {
115 result = aNode.childNodes; 112 result = aNode.childNodes;
116 } else { 113 } else {
117 aNode.value = values[name] 114 aNode.value = values[name]
118 } 115 }
119 } else { 116 } else {
120 result = aNode.childNodes; 117 result = aNode.childNodes;
121 } 118 }
122 119
123 return result; 120 return result;
124 }); 121 });
125 }, 122 },
126 123
127 //------------------------------------------------------------------------- 124 //-------------------------------------------------------------------------
128 __syntaxFix__: "syntax fix" 125 __syntaxFix__: "syntax fix"
129 126
130}); 127});
131 128
diff --git a/frontend/beta/js/Clipperz/Date.js b/frontend/beta/js/Clipperz/Date.js
index 4103b88..020d77b 100644
--- a/frontend/beta/js/Clipperz/Date.js
+++ b/frontend/beta/js/Clipperz/Date.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.Date) == 'undefined') { Clipperz.Date = {}; } 27if (typeof(Clipperz.Date) == 'undefined') { Clipperz.Date = {}; }
31 28
32Clipperz.Date.VERSION = "0.1"; 29Clipperz.Date.VERSION = "0.1";
33Clipperz.Date.NAME = "Clipperz.Date"; 30Clipperz.Date.NAME = "Clipperz.Date";
34 31
35MochiKit.Base.update(Clipperz.Date, { 32MochiKit.Base.update(Clipperz.Date, {
36 33
37 //------------------------------------------------------------------------- 34 //-------------------------------------------------------------------------
38 35
39 '__repr__': function () { 36 '__repr__': function () {
40 return "[" + this.NAME + " " + this.VERSION + "]"; 37 return "[" + this.NAME + " " + this.VERSION + "]";
41 }, 38 },
42 39
43 //------------------------------------------------------------------------- 40 //-------------------------------------------------------------------------
44 41
45 'toString': function () { 42 'toString': function () {
46 return this.__repr__(); 43 return this.__repr__();
47 }, 44 },
48 45
49 //------------------------------------------------------------------------- 46 //-------------------------------------------------------------------------
50 47
51 'daysInMonth': [31,28,31,30,31,30,31,31,30,31,30,31], 48 'daysInMonth': [31,28,31,30,31,30,31,31,30,31,30,31],
52 49
53 //------------------------------------------------------------------------- 50 //-------------------------------------------------------------------------
54 51
55 'englishOrdinalDaySuffixForDate': function(aDate) { 52 'englishOrdinalDaySuffixForDate': function(aDate) {
56 var result; 53 var result;
57 54
58 switch (aDate.getDate()) { 55 switch (aDate.getDate()) {
59 case 1: 56 case 1:
60 case 21: 57 case 21:
61 case 31: 58 case 31:
62 result = "st"; 59 result = "st";
63 break; 60 break;
64 case 2: 61 case 2:
65 case 22: 62 case 22:
66 result = "nd"; 63 result = "nd";
67 break; 64 break;
68 case 3: 65 case 3:
69 case 23: 66 case 23:
70 result = "rd"; 67 result = "rd";
71 break; 68 break;
72 default: 69 default:
73 result = "th"; 70 result = "th";
74 break; 71 break;
75 } 72 }
76 73
77 return result; 74 return result;
78 }, 75 },
79 76
80 //------------------------------------------------------------------------- 77 //-------------------------------------------------------------------------
81 78
82 'isLeapYear': function(aDate) { 79 'isLeapYear': function(aDate) {
83 var year; 80 var year;
84 var result; 81 var result;
85 82
86 year = aDate.getFullYear(); 83 year = aDate.getFullYear();
87 result = ((year & 0x03) == 0 && (year % 100 || (year % 400 == 0 && year))); 84 result = ((year & 0x03) == 0 && (year % 100 || (year % 400 == 0 && year)));
88 85
89 return result; 86 return result;
90 }, 87 },
91 88
92 //------------------------------------------------------------------------- 89 //-------------------------------------------------------------------------
93 90
94 'getDaysInMonth': function(aDate) { 91 'getDaysInMonth': function(aDate) {
95 var result; 92 var result;
96 93
97 if (aDate.getMonth() == 1) { 94 if (aDate.getMonth() == 1) {
98 Clipperz.Date.isLeapYear(aDate) 95 Clipperz.Date.isLeapYear(aDate)
99 result += Clipperz.Date.isLeapYear(aDate) ? 29 : 28; 96 result += Clipperz.Date.isLeapYear(aDate) ? 29 : 28;
100 } else { 97 } else {
101 result = Clipperz.Date.daysInMonth[aDate.getMonth()]; 98 result = Clipperz.Date.daysInMonth[aDate.getMonth()];
102 } 99 }
103 100
104 return result; 101 return result;
105 }, 102 },
106 103
107 //------------------------------------------------------------------------- 104 //-------------------------------------------------------------------------
108 105
109 'getTimezone': function(aDate) { 106 'getTimezone': function(aDate) {
110 var result; 107 var result;
111 108
112 result = aDate.toString(); 109 result = aDate.toString();
113 result = result.replace(/([A-Z]{3}) [0-9]{4}/, '$1'); 110 result = result.replace(/([A-Z]{3}) [0-9]{4}/, '$1');
114 result = result.replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/, "$1$2$3"); 111 result = result.replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/, "$1$2$3");
115 112
116 return result; 113 return result;
117 }, 114 },
118 115
119 'getGMTOffset': function(aDate) { 116 'getGMTOffset': function(aDate) {
120 return (aDate.getTimezoneOffset() > 0 ? "-" : "+")+ MochiKit.Format.numberFormatter('00')(Math.floor(this.getTimezoneOffset() / 60)) 117 return (aDate.getTimezoneOffset() > 0 ? "-" : "+")+ MochiKit.Format.numberFormatter('00')(Math.floor(this.getTimezoneOffset() / 60))
121 + MochiKit.Format.numberFormatter('00')(this.getTimezoneOffset() % 60); 118 + MochiKit.Format.numberFormatter('00')(this.getTimezoneOffset() % 60);
122 }, 119 },
123 120
124 //------------------------------------------------------------------------- 121 //-------------------------------------------------------------------------
125 122
126 'dayOfYear': function(aDate) { 123 'dayOfYear': function(aDate) {
127 var result; 124 var result;
128 var i,c; 125 var i,c;
129 126
130 result = 0; 127 result = 0;
131 c = aDate.getMonth(); 128 c = aDate.getMonth();
132 for (i=0; i<c; i++) { 129 for (i=0; i<c; i++) {
133 if (i == 1) { 130 if (i == 1) {
134 result += Clipperz.Date.isLeapYear(aDate) ? 29 : 28; 131 result += Clipperz.Date.isLeapYear(aDate) ? 29 : 28;
135 } else { 132 } else {
136 result += Clipperz.Date.daysInMonth[i]; 133 result += Clipperz.Date.daysInMonth[i];
137 } 134 }
138 } 135 }
139 return num + this.getDate() - 1; 136 return num + this.getDate() - 1;
140 }, 137 },
141 138
142 //------------------------------------------------------------------------- 139 //-------------------------------------------------------------------------
143 140
144 'getPHPLikeFormatCode': function(aCharacter) { 141 'getPHPLikeFormatCode': function(aCharacter) {
145 var result; 142 var result;
146 143
147 switch (aCharacter) { 144 switch (aCharacter) {
148 case "d": 145 case "d":
149 result = " + MochiKit.Format.numberFormatter('00')(aDate.getDate())"; 146 result = " + MochiKit.Format.numberFormatter('00')(aDate.getDate())";
150 break; 147 break;
151 case "D": 148 case "D":
152 result = " + aLocale['shortDays'][aDate.getDay()]"; 149 result = " + aLocale['shortDays'][aDate.getDay()]";
diff --git a/frontend/beta/js/Clipperz/KeePassExportProcessor.js b/frontend/beta/js/Clipperz/KeePassExportProcessor.js
index ba56b8e..74d36ca 100644
--- a/frontend/beta/js/Clipperz/KeePassExportProcessor.js
+++ b/frontend/beta/js/Clipperz/KeePassExportProcessor.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30 27
31 28
32Clipperz.KeePassExportProcessor = function(args) { 29Clipperz.KeePassExportProcessor = function(args) {
33 args = args || {}; 30 args = args || {};
34 31
35 return this; 32 return this;
36} 33}
37 34
38//============================================================================= 35//=============================================================================
39 36
40Clipperz.KeePassExportProcessor.prototype = MochiKit.Base.update(null, { 37Clipperz.KeePassExportProcessor.prototype = MochiKit.Base.update(null, {
41 38
42 //------------------------------------------------------------------------- 39 //-------------------------------------------------------------------------
43/* 40/*
44 'parse': function(aValue) { 41 'parse': function(aValue) {
45 var result; 42 var result;
46 43
47//MochiKit.Logging.logDebug(">>> KeePassExportProcessor.parse"); 44//MochiKit.Logging.logDebug(">>> KeePassExportProcessor.parse");
48 result = []; 45 result = [];
49//MochiKit.Logging.logDebug("--- KeePassExportProcessor.parse - result: " + Clipperz.Base.serializeJSON(result)); 46//MochiKit.Logging.logDebug("--- KeePassExportProcessor.parse - result: " + Clipperz.Base.serializeJSON(result));
50//MochiKit.Logging.logDebug("<<< KeePassExportProcessor.parse"); 47//MochiKit.Logging.logDebug("<<< KeePassExportProcessor.parse");
51 48
52 return result; 49 return result;
53 }, 50 },
54*/ 51*/
55 //------------------------------------------------------------------------- 52 //-------------------------------------------------------------------------
56 53
57 'deferredParse_core': function(aContext) { 54 'deferredParse_core': function(aContext) {
58 var deferredResult; 55 var deferredResult;
59 56
60 //MochiKit.Logging.logDebug(">>> KeePassExportProcessor.deferredParse_core"); 57 //MochiKit.Logging.logDebug(">>> KeePassExportProcessor.deferredParse_core");
61 //MochiKit.Logging.logDebug("--- KeePassExportProcessor.deferredParse_core - (1) aContext.line: " + aContext.line.replace(/\n/g, "\\n").substring(0,50)); 58 //MochiKit.Logging.logDebug("--- KeePassExportProcessor.deferredParse_core - (1) aContext.line: " + aContext.line.replace(/\n/g, "\\n").substring(0,50));
62 //MochiKit.Logging.logDebug("--- KeePassExportProcessor.deferredParse_core - aContext: " + Clipperz.Base.serializeJSON(aContext).substring(0,50)); 59 //MochiKit.Logging.logDebug("--- KeePassExportProcessor.deferredParse_core - aContext: " + Clipperz.Base.serializeJSON(aContext).substring(0,50));
63 //MochiKit.Logging.logDebug("--- KeePassExportProcessor.deferredParse_core - (2) aContext.line: " + aContext.line.replace(/\n/g, "\\n").substring(0,50)); 60 //MochiKit.Logging.logDebug("--- KeePassExportProcessor.deferredParse_core - (2) aContext.line: " + aContext.line.replace(/\n/g, "\\n").substring(0,50));
64//console.log("deferredParse_core - aContext", aContext); 61//console.log("deferredParse_core - aContext", aContext);
65 //MochiKit.Logging.logDebug("--- KeePassExportProcessor.deferredParse_core - (3) aContext.line: " + aContext.line.replace(/\n/g, "\\n").substring(0,50)); 62 //MochiKit.Logging.logDebug("--- KeePassExportProcessor.deferredParse_core - (3) aContext.line: " + aContext.line.replace(/\n/g, "\\n").substring(0,50));
66 if (aContext.line == "") { 63 if (aContext.line == "") {
67 deferredResult = MochiKit.Async.succeed(aContext.result); 64 deferredResult = MochiKit.Async.succeed(aContext.result);
68 } else { 65 } else {
69 var record; 66 var record;
70 67
71 record = this.parseRecord(aContext); 68 record = this.parseRecord(aContext);
72 if (record != null) { 69 if (record != null) {
73 aContext.result.push(record); 70 aContext.result.push(record);
74 } 71 }
75 72
76 //MochiKit.Logging.logDebug("--> KeePassExportProcessor.deferredParse_core - aContext.line: " + aContext.line.replace(/\n/g, "\\n").substring(0,50)); 73 //MochiKit.Logging.logDebug("--> KeePassExportProcessor.deferredParse_core - aContext.line: " + aContext.line.replace(/\n/g, "\\n").substring(0,50));
77 aContext.line = aContext.line.replace(/^\n*/g, "").replace(/\n$/g, ""); 74 aContext.line = aContext.line.replace(/^\n*/g, "").replace(/\n$/g, "");
78 //MochiKit.Logging.logDebug("<-- KeePassExportProcessor.deferredParse_core - aContext.line: " + aContext.line.replace(/\n/g, "\\n").substring(0,50)); 75 //MochiKit.Logging.logDebug("<-- KeePassExportProcessor.deferredParse_core - aContext.line: " + aContext.line.replace(/\n/g, "\\n").substring(0,50));
79 76
80 deferredResult = new MochiKit.Async.Deferred(); 77 deferredResult = new MochiKit.Async.Deferred();
81//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("KeePassExportProcessor.deferredParse_core - 1.1 " + res); return res;}); 78//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("KeePassExportProcessor.deferredParse_core - 1.1 " + res); return res;});
82 deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'importProcessorProgressUpdate', {status:'processing', size:aContext.size, progress:(aContext.size - aContext.line.length)}); 79 deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'importProcessorProgressUpdate', {status:'processing', size:aContext.size, progress:(aContext.size - aContext.line.length)});
83//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("KeePassExportProcessor.deferredParse_core - 1.2 " + res); return res;}); 80//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("KeePassExportProcessor.deferredParse_core - 1.2 " + res); return res;});
84 deferredResult.addCallback(MochiKit.Async.wait, 0.2); 81 deferredResult.addCallback(MochiKit.Async.wait, 0.2);
85//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("KeePassExportProcessor.deferredParse_core - 1.3 " + res); return res;}); 82//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("KeePassExportProcessor.deferredParse_core - 1.3 " + res); return res;});
86//deferredResult.addBoth(function(res) {console.log("KeePassExportProcessor.deferredParse_core - 1.3 ", res); return res;}); 83//deferredResult.addBoth(function(res) {console.log("KeePassExportProcessor.deferredParse_core - 1.3 ", res); return res;});
87 deferredResult.addCallback(MochiKit.Base.method(this, 'deferredParse_core')) 84 deferredResult.addCallback(MochiKit.Base.method(this, 'deferredParse_core'))
88//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("KeePassExportProcessor.deferredParse_core - 1.4 " + res); return res;}); 85//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("KeePassExportProcessor.deferredParse_core - 1.4 " + res); return res;});
89 deferredResult.callback(aContext); 86 deferredResult.callback(aContext);
90 } 87 }
91 //MochiKit.Logging.logDebug("<<< KeePassExportProcessor.deferredParse_core"); 88 //MochiKit.Logging.logDebug("<<< KeePassExportProcessor.deferredParse_core");
92 89
93 return deferredResult; 90 return deferredResult;
94 }, 91 },
95 92
96 //......................................................................... 93 //.........................................................................
97 94
98 'deferredParse': function(aValue) { 95 'deferredParse': function(aValue) {
99 var deferredResult; 96 var deferredResult;
100 var lines; 97 var lines;
101 var context; 98 var context;
102 99
103//MochiKit.Logging.logDebug(">>> KeePassExportProcessor.deferredParse"); 100//MochiKit.Logging.logDebug(">>> KeePassExportProcessor.deferredParse");
104//MochiKit.Logging.logDebug("--- KeePassExportProcessor.deferredParse - aValue: " + aValue.length); 101//MochiKit.Logging.logDebug("--- KeePassExportProcessor.deferredParse - aValue: " + aValue.length);
105 lines = aValue.replace(/\r?\n/g, "\n"); 102 lines = aValue.replace(/\r?\n/g, "\n");
106//MochiKit.Logging.logDebug("--- KeePassExportProcessor.deferredParse - lines: " + lines.length); 103//MochiKit.Logging.logDebug("--- KeePassExportProcessor.deferredParse - lines: " + lines.length);
107 context = { 104 context = {
108 line: lines, 105 line: lines,
109 size: lines.length, 106 size: lines.length,
110 result: [] 107 result: []
111 } 108 }
112//MochiKit.Logging.logDebug("--- KeePassExportProcessor.deferredParse - context: " + Clipperz.Base.serializeJSON(context).substring(0,50)); 109//MochiKit.Logging.logDebug("--- KeePassExportProcessor.deferredParse - context: " + Clipperz.Base.serializeJSON(context).substring(0,50));
113//console.log("--- KeePassExportProcessor.deferredParse - context: ", context); 110//console.log("--- KeePassExportProcessor.deferredParse - context: ", context);
114 111
115 deferredResult = new MochiKit.Async.Deferred(); 112 deferredResult = new MochiKit.Async.Deferred();
116//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("KeePassExportProcessor.deferredParse - 1 " + res); return res;}); 113//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("KeePassExportProcessor.deferredParse - 1 " + res); return res;});
117//deferredResult.addBoth(function(res) {console.log("KeePassExportProcessor.deferredParse - 1 ", res); return res;}); 114//deferredResult.addBoth(function(res) {console.log("KeePassExportProcessor.deferredParse - 1 ", res); return res;});
118 deferredResult.addCallback(MochiKit.Base.method(this, 'deferredParse_core')); 115 deferredResult.addCallback(MochiKit.Base.method(this, 'deferredParse_core'));
119//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("KeePassExportProcessor.deferredParse - 2 " + res); return res;}); 116//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("KeePassExportProcessor.deferredParse - 2 " + res); return res;});
120 deferredResult.callback(context); 117 deferredResult.callback(context);
121//MochiKit.Logging.logDebug("<<< KeePassExportProcessor.deferredParse"); 118//MochiKit.Logging.logDebug("<<< KeePassExportProcessor.deferredParse");
122 119
123 return deferredResult; 120 return deferredResult;
124 }, 121 },
125 122
126 //------------------------------------------------------------------------- 123 //-------------------------------------------------------------------------
127 124
128 'parseRecord': function(aContext) { 125 'parseRecord': function(aContext) {
129 var result; 126 var result;
130 var recordLabelRegexp; 127 var recordLabelRegexp;
131 varfieldLabelRegexp; 128 varfieldLabelRegexp;
132 var fieldValueRegexp; 129 var fieldValueRegexp;
133 var fullLineRegexp; 130 var fullLineRegexp;
134/* 131/*
135[Record name] 132[Record name]
136Group Tree: 133Group Tree:
137UserName: 134UserName:
138URL: 135URL:
139Password: 136Password:
140Notes: test 137Notes: test
141UUID: 525f62430079bae48b79ed2961924b05 138UUID: 525f62430079bae48b79ed2961924b05
142Icon: 0 139Icon: 0
143Creation Time: 2007-06-26 17:56:03 140Creation Time: 2007-06-26 17:56:03
144Last Access: 2007-10-25 16:23:51 141Last Access: 2007-10-25 16:23:51
145Last Modification: 2007-10-25 16:23:51 142Last Modification: 2007-10-25 16:23:51
146Expires: 2999-12-28 23:59:59 143Expires: 2999-12-28 23:59:59
147 144
148 [Record name] ==> Title 145 [Record name] ==> Title
149 Group: General ==> Group 146 Group: General ==> Group
150 Group Tree: ==> Group Tree 147 Group Tree: ==> Group Tree
151 UserName: ==> UserName 148 UserName: ==> UserName
152 URL: ==>URL 149 URL: ==>URL
diff --git a/frontend/beta/js/Clipperz/NotificationCenter.js b/frontend/beta/js/Clipperz/NotificationCenter.js
index 815d4fd..e346b1c 100644
--- a/frontend/beta/js/Clipperz/NotificationCenter.js
+++ b/frontend/beta/js/Clipperz/NotificationCenter.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.NotificationCenter) == 'undefined') { Clipperz.NotificationCenter = {}; } 27if (typeof(Clipperz.NotificationCenter) == 'undefined') { Clipperz.NotificationCenter = {}; }
31 28
32 29
33//############################################################################# 30//#############################################################################
34 31
35Clipperz.NotificationCenterEvent = function(args) { 32Clipperz.NotificationCenterEvent = function(args) {
36 args = args || {}; 33 args = args || {};
37 //MochiKit.Base.bindMethods(this); 34 //MochiKit.Base.bindMethods(this);
38 35
39 this._source = args.source || null; 36 this._source = args.source || null;
40 this._event = args.event || null; 37 this._event = args.event || null;
41 this._parameters = args.parameters || null; 38 this._parameters = args.parameters || null;
42 this._isSynchronous = args.isSynchronous || false; 39 this._isSynchronous = args.isSynchronous || false;
43 40
44 return this; 41 return this;
45} 42}
46 43
47//============================================================================= 44//=============================================================================
48 45
49Clipperz.NotificationCenterEvent.prototype = MochiKit.Base.update(null, { 46Clipperz.NotificationCenterEvent.prototype = MochiKit.Base.update(null, {
50 47
51 //------------------------------------------------------------------------- 48 //-------------------------------------------------------------------------
52 49
53 'toString': function() { 50 'toString': function() {
54 return "Clipperz.NotificationCenterEvent"; 51 return "Clipperz.NotificationCenterEvent";
55 //return "Clipperz.NotificationCenterEvent {source: " + this.source() + ", event: " + this.event() + ", parameters: " + this.parameters() + "}"; 52 //return "Clipperz.NotificationCenterEvent {source: " + this.source() + ", event: " + this.event() + ", parameters: " + this.parameters() + "}";
56 }, 53 },
57 54
58 //------------------------------------------------------------------------- 55 //-------------------------------------------------------------------------
59 56
60 'source': function() { 57 'source': function() {
61 return this._source; 58 return this._source;
62 }, 59 },
63 60
64 'setSource': function(aValue) { 61 'setSource': function(aValue) {
65 this._source = aValue; 62 this._source = aValue;
66 }, 63 },
67 64
68 //------------------------------------------------------------------------- 65 //-------------------------------------------------------------------------
69 66
70 'event': function() { 67 'event': function() {
71 return this._event; 68 return this._event;
72 }, 69 },
73 70
74 'setEvent': function(aValue) { 71 'setEvent': function(aValue) {
75 this._event = aValue; 72 this._event = aValue;
76 }, 73 },
77 74
78 //------------------------------------------------------------------------- 75 //-------------------------------------------------------------------------
79 76
80 'parameters': function() { 77 'parameters': function() {
81 return this._parameters; 78 return this._parameters;
82 }, 79 },
83 80
84 'setParameters': function(aValue) { 81 'setParameters': function(aValue) {
85 this._parameters = aValue; 82 this._parameters = aValue;
86 }, 83 },
87 84
88 //------------------------------------------------------------------------- 85 //-------------------------------------------------------------------------
89 86
90 'isSynchronous': function() { 87 'isSynchronous': function() {
91 return this._isSynchronous; 88 return this._isSynchronous;
92 }, 89 },
93 90
94 //------------------------------------------------------------------------- 91 //-------------------------------------------------------------------------
95 __syntaxFix__: "syntax fix" 92 __syntaxFix__: "syntax fix"
96}); 93});
97 94
98 95
99//############################################################################# 96//#############################################################################
100//############################################################################# 97//#############################################################################
101 98
102Clipperz.NotificationCenter = function(args) { 99Clipperz.NotificationCenter = function(args) {
103 args = args || {}; 100 args = args || {};
104 //MochiKit.Base.bindMethods(this); 101 //MochiKit.Base.bindMethods(this);
105 102
106 this._listeners = {}; 103 this._listeners = {};
107 this._useSynchronousListenerInvocation = args.useSynchronousListenerInvocation || false; 104 this._useSynchronousListenerInvocation = args.useSynchronousListenerInvocation || false;
108 this._timeoutDelay = args.timeoutDelay || 0.1; 105 this._timeoutDelay = args.timeoutDelay || 0.1;
109 106
110 return this; 107 return this;
111} 108}
112 109
113//============================================================================= 110//=============================================================================
114 111
115Clipperz.NotificationCenter.prototype = MochiKit.Base.update(null, { 112Clipperz.NotificationCenter.prototype = MochiKit.Base.update(null, {
116 113
117 //------------------------------------------------------------------------- 114 //-------------------------------------------------------------------------
118 115
119 'toString': function() { 116 'toString': function() {
120 return "Clipperz.NotificationCenter"; 117 return "Clipperz.NotificationCenter";
121 }, 118 },
122 119
123 //------------------------------------------------------------------------- 120 //-------------------------------------------------------------------------
124 121
125 'useSynchronousListenerInvocation': function() { 122 'useSynchronousListenerInvocation': function() {
126 return this._useSynchronousListenerInvocation; 123 return this._useSynchronousListenerInvocation;
127 }, 124 },
128 125
129 'setUseSynchronousListenerInvocation': function(aValue) { 126 'setUseSynchronousListenerInvocation': function(aValue) {
130 this._useSynchronousListenerInvocation = aValue; 127 this._useSynchronousListenerInvocation = aValue;
131 }, 128 },
132 129
133 //------------------------------------------------------------------------- 130 //-------------------------------------------------------------------------
134 131
135 'timeoutDelay': function() { 132 'timeoutDelay': function() {
136 return this._timeoutDelay; 133 return this._timeoutDelay;
137 }, 134 },
138 135
139 'setTimeoutDelay': function(aValue) { 136 'setTimeoutDelay': function(aValue) {
140 this._timeoutDelay = aValue; 137 this._timeoutDelay = aValue;
141 }, 138 },
142 139
143 //------------------------------------------------------------------------- 140 //-------------------------------------------------------------------------
144 141
145 'listeners': function() { 142 'listeners': function() {
146 return this._listeners; 143 return this._listeners;
147 }, 144 },
148 145
149 //------------------------------------------------------------------------- 146 //-------------------------------------------------------------------------
150 147
151 'register': function(aSource, anEvent, aListener, aMethod) { 148 'register': function(aSource, anEvent, aListener, aMethod) {
152 vareventListeners; 149 vareventListeners;
diff --git a/frontend/beta/js/Clipperz/PM/BookmarkletProcessor.js b/frontend/beta/js/Clipperz/PM/BookmarkletProcessor.js
index 4dfdd8e..83cbfe2 100644
--- a/frontend/beta/js/Clipperz/PM/BookmarkletProcessor.js
+++ b/frontend/beta/js/Clipperz/PM/BookmarkletProcessor.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31//if (typeof(Clipperz.PM.BookmarkletProcessor) == 'undefined') { Clipperz.PM.BookmarkletProcessor = {}; } 28//if (typeof(Clipperz.PM.BookmarkletProcessor) == 'undefined') { Clipperz.PM.BookmarkletProcessor = {}; }
32//if (typeof(Clipperz.PM.BookmarkletProcessor.versions) == 'undefined') { Clipperz.PM.BookmarkletProcessor.versions = {}; } 29//if (typeof(Clipperz.PM.BookmarkletProcessor.versions) == 'undefined') { Clipperz.PM.BookmarkletProcessor.versions = {}; }
33 30
34/* 31/*
35Clipperz.PM.BookmarkletProcessor.versions['abstract'] = function(anUser, aConfiguration) { 32Clipperz.PM.BookmarkletProcessor.versions['abstract'] = function(anUser, aConfiguration) {
36 this._user = anUser; 33 this._user = anUser;
37 this._configuration = aConfiguration; 34 this._configuration = aConfiguration;
38 35
39 this._recordTitle = null; 36 this._recordTitle = null;
40 this._record = null; 37 this._record = null;
41 this._editableFields = null; 38 this._editableFields = null;
42 39
43 return this; 40 return this;
44} 41}
45 42
46 43
47Clipperz.PM.BookmarkletProcessor.versions['abstract'].prototype = MochiKit.Base.update(null, { 44Clipperz.PM.BookmarkletProcessor.versions['abstract'].prototype = MochiKit.Base.update(null, {
48 45
49 'toString': function() { 46 'toString': function() {
50 return "BookmarkletProcessor - " + this.user(); 47 return "BookmarkletProcessor - " + this.user();
51 }, 48 },
52 49
53 //------------------------------------------------------------------------- 50 //-------------------------------------------------------------------------
54 51
55 'user': function() { 52 'user': function() {
56 return this._user; 53 return this._user;
57 }, 54 },
58 55
59 //------------------------------------------------------------------------- 56 //-------------------------------------------------------------------------
60 57
61 'configuration': function() { 58 'configuration': function() {
62 return this._configuration; 59 return this._configuration;
63 }, 60 },
64 61
65 //------------------------------------------------------------------------- 62 //-------------------------------------------------------------------------
66 63
67 'record': function() { 64 'record': function() {
68 throw Clipperz.Base.exception.AbstractMethod; 65 throw Clipperz.Base.exception.AbstractMethod;
69 }, 66 },
70 67
71 //------------------------------------------------------------------------- 68 //-------------------------------------------------------------------------
72 __syntaxFix__: "syntax fix" 69 __syntaxFix__: "syntax fix"
73}); 70});
74*/ 71*/
75 72
76Clipperz.PM.BookmarkletProcessor = function(anUser, aConfiguration) { 73Clipperz.PM.BookmarkletProcessor = function(anUser, aConfiguration) {
77 this._user = anUser; 74 this._user = anUser;
78 this._configuration = aConfiguration; 75 this._configuration = aConfiguration;
79 76
80 this._recordTitle = null; 77 this._recordTitle = null;
81 this._record = null; 78 this._record = null;
82 this._editableFields = null; 79 this._editableFields = null;
83 this._favicon = null; 80 this._favicon = null;
84 81
85 return this; 82 return this;
86} 83}
87 84
88Clipperz.PM.BookmarkletProcessor.prototype = MochiKit.Base.update(null, { 85Clipperz.PM.BookmarkletProcessor.prototype = MochiKit.Base.update(null, {
89 86
90 'toString': function() { 87 'toString': function() {
91 return "BookmarkletProcessor - " + this.user(); 88 return "BookmarkletProcessor - " + this.user();
92 }, 89 },
93 90
94 //------------------------------------------------------------------------- 91 //-------------------------------------------------------------------------
95 92
96 'user': function() { 93 'user': function() {
97 return this._user; 94 return this._user;
98 }, 95 },
99 96
100 //------------------------------------------------------------------------- 97 //-------------------------------------------------------------------------
101 98
102 'configuration': function() { 99 'configuration': function() {
103 return this._configuration; 100 return this._configuration;
104 }, 101 },
105 102
106 //------------------------------------------------------------------------- 103 //-------------------------------------------------------------------------
107 104
108 'recordTitle': function() { 105 'recordTitle': function() {
109 if (this._recordTitle == null) { 106 if (this._recordTitle == null) {
110 this._recordTitle = this.configuration().page.title; 107 this._recordTitle = this.configuration().page.title;
111 } 108 }
112 109
113 return this._recordTitle; 110 return this._recordTitle;
114 }, 111 },
115 112
116 //------------------------------------------------------------------------- 113 //-------------------------------------------------------------------------
117 114
118 'fields': function() { 115 'fields': function() {
119 return this.configuration().form.inputs; 116 return this.configuration().form.inputs;
120 }, 117 },
121 118
122 //------------------------------------------------------------------------- 119 //-------------------------------------------------------------------------
123 120
124 'editableFields': function() { 121 'editableFields': function() {
125 if (this._editableFields == null) { 122 if (this._editableFields == null) {
126 this._editableFields = MochiKit.Base.filter(function(aField) { 123 this._editableFields = MochiKit.Base.filter(function(aField) {
127 var result; 124 var result;
128 var type; 125 var type;
129 126
130 type = aField['type'].toLowerCase(); 127 type = aField['type'].toLowerCase();
131 result = ((type != 'hidden') && (type != 'submit') && (type != 'checkbox') && (type != 'radio') && (type != 'select')); 128 result = ((type != 'hidden') && (type != 'submit') && (type != 'checkbox') && (type != 'radio') && (type != 'select'));
132 129
133 return result; 130 return result;
134 }, this.fields()) 131 }, this.fields())
135 } 132 }
136 133
137 return this._editableFields; 134 return this._editableFields;
138 }, 135 },
139 136
140 //------------------------------------------------------------------------- 137 //-------------------------------------------------------------------------
141 138
142 'hostname': function() { 139 'hostname': function() {
143 if (this._hostname == null) { 140 if (this._hostname == null) {
144 var actionUrl; 141 var actionUrl;
145 142
146 actionUrl = this.configuration()['form']['attributes']['action']; 143 actionUrl = this.configuration()['form']['attributes']['action'];
147//MochiKit.Logging.logDebug("+++ actionUrl: " + actionUrl); 144//MochiKit.Logging.logDebug("+++ actionUrl: " + actionUrl);
148 this._hostname = actionUrl.replace(/^https?:\/\/([^\/]*)\/.*/, '$1'); 145 this._hostname = actionUrl.replace(/^https?:\/\/([^\/]*)\/.*/, '$1');
149 } 146 }
150 147
151 return this._hostname; 148 return this._hostname;
152 }, 149 },
diff --git a/frontend/beta/js/Clipperz/PM/Components/BaseComponent.js b/frontend/beta/js/Clipperz/PM/Components/BaseComponent.js
index 67e257b..f3a3902 100644
--- a/frontend/beta/js/Clipperz/PM/Components/BaseComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/BaseComponent.js
@@ -1,124 +1,121 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32 29
33//############################################################################# 30//#############################################################################
34 31
35var _Clipperz_PM_Components_Panels_base_id_ = 0; 32var _Clipperz_PM_Components_Panels_base_id_ = 0;
36 33
37//############################################################################# 34//#############################################################################
38 35
39Clipperz.PM.Components.BaseComponent = function(anElement, args) { 36Clipperz.PM.Components.BaseComponent = function(anElement, args) {
40 args = args || {}; 37 args = args || {};
41 //MochiKit.Base.bindMethods(this); 38 //MochiKit.Base.bindMethods(this);
42 //Clipperz.PM.Components.BaseComponent.superclass.constructor.call(this, args); 39 //Clipperz.PM.Components.BaseComponent.superclass.constructor.call(this, args);
43 40
44 this._element = anElement; 41 this._element = anElement;
45 this._ids = {}; 42 this._ids = {};
46 43
47 return this; 44 return this;
48} 45}
49 46
50//============================================================================= 47//=============================================================================
51 48
52//MochiKit.Base.update(Clipperz.PM.Components.BaseComponent.prototype, { 49//MochiKit.Base.update(Clipperz.PM.Components.BaseComponent.prototype, {
53YAHOO.extendX(Clipperz.PM.Components.BaseComponent, YAHOO.ext.util.Observable, { 50YAHOO.extendX(Clipperz.PM.Components.BaseComponent, YAHOO.ext.util.Observable, {
54 51
55 'isClipperzPMComponent': true, 52 'isClipperzPMComponent': true,
56 53
57 //------------------------------------------------------------------------- 54 //-------------------------------------------------------------------------
58 55
59 'toString': function () { 56 'toString': function () {
60 return "Clipperz.PM.Components.BaseComponent component"; 57 return "Clipperz.PM.Components.BaseComponent component";
61 }, 58 },
62 59
63 //------------------------------------------------------------------------- 60 //-------------------------------------------------------------------------
64 61
65 'domHelper': function() { 62 'domHelper': function() {
66 return Clipperz.YUI.DomHelper; 63 return Clipperz.YUI.DomHelper;
67 }, 64 },
68 65
69 //------------------------------------------------------------------------- 66 //-------------------------------------------------------------------------
70 67
71 'element': function() { 68 'element': function() {
72//MochiKit.Logging.logDebug(">>> BaseComponent.element"); 69//MochiKit.Logging.logDebug(">>> BaseComponent.element");
73 return this._element; 70 return this._element;
74 }, 71 },
75 72
76 'setElement': function(aValue) { 73 'setElement': function(aValue) {
77 this._element = aValue; 74 this._element = aValue;
78 }, 75 },
79 76
80 //----------------------------------------------------- 77 //-----------------------------------------------------
81 78
82 'remove': function() { 79 'remove': function() {
83//MochiKit.Logging.logDebug(">>> BaseComponent.remove"); 80//MochiKit.Logging.logDebug(">>> BaseComponent.remove");
84 Clipperz.NotificationCenter.unregister(this); 81 Clipperz.NotificationCenter.unregister(this);
85 MochiKit.Signal.disconnectAllTo(this); 82 MochiKit.Signal.disconnectAllTo(this);
86//MochiKit.Logging.logDebug("<<< BaseComponent.remove"); 83//MochiKit.Logging.logDebug("<<< BaseComponent.remove");
87 }, 84 },
88 85
89 //------------------------------------------------------------------------- 86 //-------------------------------------------------------------------------
90 87
91 'getId': function(aValue) { 88 'getId': function(aValue) {
92 varresult; 89 varresult;
93 90
94 result = this._ids[aValue]; 91 result = this._ids[aValue];
95 92
96 if (typeof(result) == 'undefined') { 93 if (typeof(result) == 'undefined') {
97 _Clipperz_PM_Components_Panels_base_id_ ++; 94 _Clipperz_PM_Components_Panels_base_id_ ++;
98 95
99 result = "Clipperz_PM_Components_Panels_" + aValue + "_" + _Clipperz_PM_Components_Panels_base_id_; 96 result = "Clipperz_PM_Components_Panels_" + aValue + "_" + _Clipperz_PM_Components_Panels_base_id_;
100 this._ids[aValue] = result; 97 this._ids[aValue] = result;
101//MochiKit.Logging.logDebug(">>> getId(" + aValue + ") = " + result); 98//MochiKit.Logging.logDebug(">>> getId(" + aValue + ") = " + result);
102 } else { 99 } else {
103//MochiKit.Logging.logDebug("<<< getId(" + aValue + ") = " + result); 100//MochiKit.Logging.logDebug("<<< getId(" + aValue + ") = " + result);
104 } 101 }
105 102
106 return result; 103 return result;
107 }, 104 },
108 105
109 'getDom': function(aValue) { 106 'getDom': function(aValue) {
110 return YAHOO.util.Dom.get(this.getId(aValue)); 107 return YAHOO.util.Dom.get(this.getId(aValue));
111 }, 108 },
112 109
113 'getElement': function(aValue) { 110 'getElement': function(aValue) {
114 return YAHOO.ext.Element.get(this.getId(aValue)); 111 return YAHOO.ext.Element.get(this.getId(aValue));
115 }, 112 },
116 113
117 'getActor': function(aValue, anAnimator) { 114 'getActor': function(aValue, anAnimator) {
118 return new YAHOO.ext.Actor(this.getDom(aValue), anAnimator); 115 return new YAHOO.ext.Actor(this.getDom(aValue), anAnimator);
119 }, 116 },
120 117
121 //------------------------------------------------------------------------- 118 //-------------------------------------------------------------------------
122 __syntaxFix__: "syntax fix" 119 __syntaxFix__: "syntax fix"
123 120
124}); 121});
diff --git a/frontend/beta/js/Clipperz/PM/Components/Compact/CompactHeader.js b/frontend/beta/js/Clipperz/PM/Components/Compact/CompactHeader.js
index e51b56f..7a3b3a3 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Compact/CompactHeader.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Compact/CompactHeader.js
@@ -1,86 +1,83 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Compact) == 'undefined') { Clipperz.PM.Components.Compact = {}; } 29if (typeof(Clipperz.PM.Components.Compact) == 'undefined') { Clipperz.PM.Components.Compact = {}; }
33 30
34Clipperz.PM.Components.Compact.CompactHeader = function(anElement, args) { 31Clipperz.PM.Components.Compact.CompactHeader = function(anElement, args) {
35 32
36 Clipperz.PM.Components.Compact.CompactHeader.superclass.constructor.call(this, anElement, args); 33 Clipperz.PM.Components.Compact.CompactHeader.superclass.constructor.call(this, anElement, args);
37 34
38 this.render(); 35 this.render();
39 36
40 return this; 37 return this;
41}; 38};
42 39
43YAHOO.extendX(Clipperz.PM.Components.Compact.CompactHeader, Clipperz.PM.Components.BaseComponent, { 40YAHOO.extendX(Clipperz.PM.Components.Compact.CompactHeader, Clipperz.PM.Components.BaseComponent, {
44 41
45 'toString': function() { 42 'toString': function() {
46 return "Clipperz.PM.Components.Compact.CompactHeader"; 43 return "Clipperz.PM.Components.Compact.CompactHeader";
47 }, 44 },
48 45
49 //----------------------------------------------------- 46 //-----------------------------------------------------
50 47
51 'render': function() { 48 'render': function() {
52 this.element().update(""); 49 this.element().update("");
53 50
54 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', children:[ 51 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', children:[
55 {tag:'img', src:'./images/logo.gif'}, 52 {tag:'img', src:'./images/logo.gif'},
56 {tag:'div', id:'lockBlock', children:[ 53 {tag:'div', id:'lockBlock', children:[
57 {tag:'input', type:'checkbox', id:'autolock'}, 54 {tag:'input', type:'checkbox', id:'autolock'},
58 {tag:'span', html:'auto'}, 55 {tag:'span', html:'auto'},
59 {tag:'a', href:'#', htmlString:Clipperz.PM.Strings['lockMenuLabel'], id:'lock'} 56 {tag:'a', href:'#', htmlString:Clipperz.PM.Strings['lockMenuLabel'], id:'lock'}
60 ]} 57 ]}
61 ]}); 58 ]});
62 59
63 Clipperz.YUI.DomHelper.append(this.element().dom, 60 Clipperz.YUI.DomHelper.append(this.element().dom,
64 {tag:'div', id:'compactMiscLinks', children:[ 61 {tag:'div', id:'compactMiscLinks', children:[
65 {tag:'a', id:'donateHeaderIconLink', target:'_blank', href:Clipperz.PM.Strings['donateHeaderLinkUrl'], children:[ 62 {tag:'a', id:'donateHeaderIconLink', target:'_blank', href:Clipperz.PM.Strings['donateHeaderLinkUrl'], children:[
66 {tag:'img', id:'donateHeaderLinkIcon', src:'./images/smiles_small.gif'} 63 {tag:'img', id:'donateHeaderLinkIcon', src:'./images/smiles_small.gif'}
67 ]}, 64 ]},
68 {tag:'ul', children:[ 65 {tag:'ul', children:[
69 {tag:'li', children:[{tag:'a', id:'donateHeaderLink', html:'donate', target:'_blank'}]}, 66 {tag:'li', children:[{tag:'a', id:'donateHeaderLink', html:'donate', target:'_blank'}]},
70 {tag:'li', children:[{tag:'a', id:'creditsHeaderLink', html:'credits', target:'_blank'}]}, 67 {tag:'li', children:[{tag:'a', id:'creditsHeaderLink', html:'credits', target:'_blank'}]},
71 {tag:'li', children:[{tag:'a', id:'feedbackHeaderLink', html:'feedback', target:'_blank'}]}, 68 {tag:'li', children:[{tag:'a', id:'feedbackHeaderLink', html:'feedback', target:'_blank'}]},
72 {tag:'li', children:[{tag:'a', id:'helpHeaderLink', html:'help', target:'_blank'}]}, 69 {tag:'li', children:[{tag:'a', id:'helpHeaderLink', html:'help', target:'_blank'}]},
73 {tag:'li', children:[{tag:'a', id:'forumHeaderLink', html:'forum', target:'_blank'}]} 70 {tag:'li', children:[{tag:'a', id:'forumHeaderLink', html:'forum', target:'_blank'}]}
74 ]} 71 ]}
75 ]} 72 ]}
76 ); 73 );
77 74
78 YAHOO.ext.Element.get('lockBlock').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide(); 75 YAHOO.ext.Element.get('lockBlock').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
79 Clipperz.NotificationCenter.notify(this, 'switchLanguage'); 76 Clipperz.NotificationCenter.notify(this, 'switchLanguage');
80 }, 77 },
81 78
82 //----------------------------------------------------- 79 //-----------------------------------------------------
83 __syntaxFix__: '__syntaxFix__' 80 __syntaxFix__: '__syntaxFix__'
84}); 81});
85 82
86 83
diff --git a/frontend/beta/js/Clipperz/PM/Components/Compact/CompactInterface.js b/frontend/beta/js/Clipperz/PM/Components/Compact/CompactInterface.js
index 492f815..0f6858a 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Compact/CompactInterface.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Compact/CompactInterface.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Compact) == 'undefined') { Clipperz.PM.Components.Compact = {}; } 29if (typeof(Clipperz.PM.Components.Compact) == 'undefined') { Clipperz.PM.Components.Compact = {}; }
33 30
34Clipperz.PM.Components.Compact.CompactInterface = function(anElement, args) { 31Clipperz.PM.Components.Compact.CompactInterface = function(anElement, args) {
35 32
36 Clipperz.PM.Components.Compact.CompactInterface.superclass.constructor.call(this, anElement, args); 33 Clipperz.PM.Components.Compact.CompactInterface.superclass.constructor.call(this, anElement, args);
37 34
38 this._directLoginItemTemplate = null; 35 this._directLoginItemTemplate = null;
39 this._user = args.user; 36 this._user = args.user;
40 this._autoLockTimer = null; 37 this._autoLockTimer = null;
41 38
42 Clipperz.NotificationCenter.register(null, 'updatedProgressState', this, 'userNotificationHandler') 39 Clipperz.NotificationCenter.register(null, 'updatedProgressState', this, 'userNotificationHandler')
43 Clipperz.NotificationCenter.register(null, 'directLoginAdded', this, 'directLoginAddedHandler'); 40 Clipperz.NotificationCenter.register(null, 'directLoginAdded', this, 'directLoginAddedHandler');
44 41
45 this.render(); 42 this.render();
46 43
47 return this; 44 return this;
48}; 45};
49 46
50YAHOO.extendX(Clipperz.PM.Components.Compact.CompactInterface, Clipperz.PM.Components.BaseComponent, { 47YAHOO.extendX(Clipperz.PM.Components.Compact.CompactInterface, Clipperz.PM.Components.BaseComponent, {
51 48
52 'toString': function() { 49 'toString': function() {
53 return "Clipperz.PM.Components.Compact.CompactInterface"; 50 return "Clipperz.PM.Components.Compact.CompactInterface";
54 }, 51 },
55 52
56 //----------------------------------------------------- 53 //-----------------------------------------------------
57 54
58 'render': function() { 55 'render': function() {
59 var result; 56 var result;
60 varlayout; 57 varlayout;
61 var registerButton; 58 var registerButton;
62 59
63//MochiKit.Logging.logDebug(">>> CompactInterface.render"); 60//MochiKit.Logging.logDebug(">>> CompactInterface.render");
64 this.element().update(""); 61 this.element().update("");
65 62
66 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', children:[ 63 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', children:[
67 {tag:'div', id:this.getId('cantentPanel'), children:[ 64 {tag:'div', id:this.getId('cantentPanel'), children:[
68 {tag:'h4', id:this.getId('message')}, 65 {tag:'h4', id:this.getId('message')},
69 {tag:'ul', id:'directLogins', children:[]} 66 {tag:'ul', id:'directLogins', children:[]}
70 ]}, 67 ]},
71 {tag:'div', id:this.getId('lockPanel'), cls:'lockPanel', children:[ 68 {tag:'div', id:this.getId('lockPanel'), cls:'lockPanel', children:[
72 {tag:'div', htmlString:Clipperz.PM.Strings['lockDescription']}, 69 {tag:'div', htmlString:Clipperz.PM.Strings['lockDescription']},
73 {tag:'form', id:'lockDialogForm', children:[ 70 {tag:'form', id:'lockDialogForm', children:[
74 {tag:'input', type:'password', id:this.getId('lockPassphrase')} 71 {tag:'input', type:'password', id:this.getId('lockPassphrase')}
75 ]}, 72 ]},
76 {tag:'div', id:this.getId('unlock')} 73 {tag:'div', id:this.getId('unlock')}
77 ]} 74 ]}
78 ]}); 75 ]});
79 76
80 this.getElement('lockPanel').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide(); 77 this.getElement('lockPanel').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
81 78
82 YAHOO.ext.Element.get('lockBlock').show(); 79 YAHOO.ext.Element.get('lockBlock').show();
83 MochiKit.Signal.connect(YAHOO.ext.Element.get('lock').dom, 'onclick', this, 'doLockEventHandler'); 80 MochiKit.Signal.connect(YAHOO.ext.Element.get('lock').dom, 'onclick', this, 'doLockEventHandler');
84 new YAHOO.ext.Button(this.getId('unlock'), {text:Clipperz.PM.Strings['unlockButtonLabel'], handler:this.doUnlockEventHandler, scope:this, minWidth:0}); 81 new YAHOO.ext.Button(this.getId('unlock'), {text:Clipperz.PM.Strings['unlockButtonLabel'], handler:this.doUnlockEventHandler, scope:this, minWidth:0});
85 this.getElement('unlock').swallowEvent('click', true); 82 this.getElement('unlock').swallowEvent('click', true);
86 new Clipperz.PM.Components.PasswordEntropyDisplay(this.getElement('lockPassphrase')); 83 new Clipperz.PM.Components.PasswordEntropyDisplay(this.getElement('lockPassphrase'));
87 MochiKit.Signal.connect('lockDialogForm', 'onsubmit', this, 'doUnlockEventHandler'); 84 MochiKit.Signal.connect('lockDialogForm', 'onsubmit', this, 'doUnlockEventHandler');
88 85
89 this.getElement('cantentPanel').setVisibilityMode(YAHOO.ext.Element.DISPLAY); 86 this.getElement('cantentPanel').setVisibilityMode(YAHOO.ext.Element.DISPLAY);
90//MochiKit.Logging.logDebug("<<< CompactInterface.render"); 87//MochiKit.Logging.logDebug("<<< CompactInterface.render");
91 88
92 return result; 89 return result;
93 }, 90 },
94 91
95 //----------------------------------------------------- 92 //-----------------------------------------------------
96 93
97 'directLoginAddedHandler': function(anEvent) { 94 'directLoginAddedHandler': function(anEvent) {
98 this.redrawDirectLoginItems(); 95 this.redrawDirectLoginItems();
99 }, 96 },
100 97
101 //----------------------------------------------------- 98 //-----------------------------------------------------
102 99
103 'compareDirectLogins': function(a, b) { 100 'compareDirectLogins': function(a, b) {
104 return MochiKit.Base.compare(a.label().toLowerCase(), b.label().toLowerCase()); 101 return MochiKit.Base.compare(a.label().toLowerCase(), b.label().toLowerCase());
105 }, 102 },
106 103
107 //----------------------------------------------------- 104 //-----------------------------------------------------
108 105
109 'redrawDirectLoginItems': function() { 106 'redrawDirectLoginItems': function() {
110 var template; 107 var template;
111 var allDirectLogins; 108 var allDirectLogins;
112 109
113 this.getElement('message').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide(); 110 this.getElement('message').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
114//MochiKit.Logging.logDebug(">>> CompactInterface.redrawDirectLoginItems"); 111//MochiKit.Logging.logDebug(">>> CompactInterface.redrawDirectLoginItems");
115//MochiKit.Logging.logDebug("--- CompactInterface.redrawDirectLoginItems - 0"); 112//MochiKit.Logging.logDebug("--- CompactInterface.redrawDirectLoginItems - 0");
116 MochiKit.Iter.forEach(YAHOO.ext.Element.get('directLogins').getChildrenByTagName('li'), function(aDirectLoginElement) { 113 MochiKit.Iter.forEach(YAHOO.ext.Element.get('directLogins').getChildrenByTagName('li'), function(aDirectLoginElement) {
117 MochiKit.Signal.disconnectAll(aDirectLoginElement.dom); 114 MochiKit.Signal.disconnectAll(aDirectLoginElement.dom);
118//MochiKit.Logging.logDebug("disconnecting IMG " + aDirectLoginElement.getChildrenByTagName('img')[0].dom.src); 115//MochiKit.Logging.logDebug("disconnecting IMG " + aDirectLoginElement.getChildrenByTagName('img')[0].dom.src);
119 MochiKit.Signal.disconnectAll(aDirectLoginElement.getChildrenByTagName('img')[0].dom); 116 MochiKit.Signal.disconnectAll(aDirectLoginElement.getChildrenByTagName('img')[0].dom);
120 }) 117 })
121//MochiKit.Logging.logDebug("--- CompactInterface.redrawDirectLoginItems - 1"); 118//MochiKit.Logging.logDebug("--- CompactInterface.redrawDirectLoginItems - 1");
122 YAHOO.ext.Element.get('directLogins').update(""); 119 YAHOO.ext.Element.get('directLogins').update("");
123//MochiKit.Logging.logDebug("--- CompactInterface.redrawDirectLoginItems - 2"); 120//MochiKit.Logging.logDebug("--- CompactInterface.redrawDirectLoginItems - 2");
124 allDirectLogins = MochiKit.Base.values(this.user().directLoginReferences()); 121 allDirectLogins = MochiKit.Base.values(this.user().directLoginReferences());
125//MochiKit.Logging.logDebug("--- CompactInterface.redrawDirectLoginItems - 3"); 122//MochiKit.Logging.logDebug("--- CompactInterface.redrawDirectLoginItems - 3");
126 allDirectLogins.sort(this.compareDirectLogins); 123 allDirectLogins.sort(this.compareDirectLogins);
127 124
128//MochiKit.Logging.logDebug("--- CompactInterface.redrawDirectLoginItems - 4"); 125//MochiKit.Logging.logDebug("--- CompactInterface.redrawDirectLoginItems - 4");
129 template = this.directLoginItemTemplate(); 126 template = this.directLoginItemTemplate();
130//MochiKit.Logging.logDebug("--- CompactInterface.redrawDirectLoginItems - 5"); 127//MochiKit.Logging.logDebug("--- CompactInterface.redrawDirectLoginItems - 5");
131 MochiKit.Iter.forEach(allDirectLogins, MochiKit.Base.bind(function(aDirectLogin) { 128 MochiKit.Iter.forEach(allDirectLogins, MochiKit.Base.bind(function(aDirectLogin) {
132 vardirectLoginElement; 129 vardirectLoginElement;
133 varfaviconImageElementID; 130 varfaviconImageElementID;
134 131
135 faviconImageElementID = aDirectLogin.reference() + "_faviconIMG"; 132 faviconImageElementID = aDirectLogin.reference() + "_faviconIMG";
136 directLoginElement = template.append('directLogins', { 133 directLoginElement = template.append('directLogins', {
137 elementID:faviconImageElementID, 134 elementID:faviconImageElementID,
138 faviconUrl:aDirectLogin.fixedFavicon(), 135 faviconUrl:aDirectLogin.fixedFavicon(),
139 directLoginTitle:aDirectLogin.label(), 136 directLoginTitle:aDirectLogin.label(),
140 directLoginReference:aDirectLogin.reference() 137 directLoginReference:aDirectLogin.reference()
141 }, true); 138 }, true);
142//MochiKit.Logging.logDebug("--- CompactInterface.redrawDirectLoginItems - 6: " + recordElement.dom); 139//MochiKit.Logging.logDebug("--- CompactInterface.redrawDirectLoginItems - 6: " + recordElement.dom);
143 directLoginElement.addClassOnOver("hover"); 140 directLoginElement.addClassOnOver("hover");
144 MochiKit.Signal.connect(directLoginElement.dom, 'onclick', this, 'handleDirectLoginClick'); 141 MochiKit.Signal.connect(directLoginElement.dom, 'onclick', this, 'handleDirectLoginClick');
145 142
146 MochiKit.Signal.connect(faviconImageElementID, 'onload', this, 'handleLoadedFaviconImage'); 143 MochiKit.Signal.connect(faviconImageElementID, 'onload', this, 'handleLoadedFaviconImage');
147 MochiKit.Signal.connect(faviconImageElementID, 'onerror', aDirectLogin, 'handleMissingFaviconImage'); 144 MochiKit.Signal.connect(faviconImageElementID, 'onerror', aDirectLogin, 'handleMissingFaviconImage');
148 MochiKit.Signal.connect(faviconImageElementID, 'onabort', aDirectLogin, 'handleMissingFaviconImage'); 145 MochiKit.Signal.connect(faviconImageElementID, 'onabort', aDirectLogin, 'handleMissingFaviconImage');
149 146
150 // YAHOO.ext.Element.get(faviconImageElementID).dom.src = aDirectLogin.fixedFavicon(); 147 // YAHOO.ext.Element.get(faviconImageElementID).dom.src = aDirectLogin.fixedFavicon();
151 }, this)); 148 }, this));
152 149
diff --git a/frontend/beta/js/Clipperz/PM/Components/Compact/LoginForm.js b/frontend/beta/js/Clipperz/PM/Components/Compact/LoginForm.js
index d708464..a1e60d8 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Compact/LoginForm.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Compact/LoginForm.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Compact) == 'undefined') { Clipperz.PM.Components.Compact = {}; } 29if (typeof(Clipperz.PM.Components.Compact) == 'undefined') { Clipperz.PM.Components.Compact = {}; }
33 30
34Clipperz.PM.Components.Compact.LoginForm = function(anElement, args) { 31Clipperz.PM.Components.Compact.LoginForm = function(anElement, args) {
35 32
36 Clipperz.PM.Components.Compact.LoginForm.superclass.constructor.call(this, anElement, args); 33 Clipperz.PM.Components.Compact.LoginForm.superclass.constructor.call(this, anElement, args);
37 34
38 this.render(); 35 this.render();
39 Clipperz.NotificationCenter.register(null, 'updatedProgressState', this, 'userNotificationHandler') 36 Clipperz.NotificationCenter.register(null, 'updatedProgressState', this, 'userNotificationHandler')
40 37
41 return this; 38 return this;
42}; 39};
43 40
44YAHOO.extendX(Clipperz.PM.Components.Compact.LoginForm, Clipperz.PM.Components.BaseComponent, { 41YAHOO.extendX(Clipperz.PM.Components.Compact.LoginForm, Clipperz.PM.Components.BaseComponent, {
45 42
46 'toString': function() { 43 'toString': function() {
47 return "Clipperz.PM.Components.Compact.LoginForm"; 44 return "Clipperz.PM.Components.Compact.LoginForm";
48 }, 45 },
49 46
50 //----------------------------------------------------- 47 //-----------------------------------------------------
51 48
52 'render': function() { 49 'render': function() {
53 var result; 50 var result;
54 varlayout; 51 varlayout;
55 52
56 MochiKit.Signal.disconnectAllTo(this); 53 MochiKit.Signal.disconnectAllTo(this);
57 this.element().update(""); 54 this.element().update("");
58 55
59 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', id:this.getId('baseDiv'), cls:'LoginPanel', children:[ 56 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', id:this.getId('baseDiv'), cls:'LoginPanel', children:[
60 {tag:'div', id:'compactHeader'}, 57 {tag:'div', id:'compactHeader'},
61 {tag:'div', id:'compactBody', children:[ 58 {tag:'div', id:'compactBody', children:[
62 {tag:'form', id:this.getId('loginForm_form'), children:[ 59 {tag:'form', id:this.getId('loginForm_form'), children:[
63 {tag:'dl', children:[ 60 {tag:'dl', children:[
64 {tag:'dt', htmlString:Clipperz.PM.Strings['loginFormUsernameLabel']}, 61 {tag:'dt', htmlString:Clipperz.PM.Strings['loginFormUsernameLabel']},
65 {tag:'dd', children:[ 62 {tag:'dd', children:[
66 {tag:'input', id:this.getId('login_username'), type:'text', size:'30', name:'username'} 63 {tag:'input', id:this.getId('login_username'), type:'text', size:'30', name:'username'}
67 ]}, 64 ]},
68 {tag:'dt', htmlString:Clipperz.PM.Strings['loginFormPassphraseLabel']}, 65 {tag:'dt', htmlString:Clipperz.PM.Strings['loginFormPassphraseLabel']},
69 {tag:'dd', children:[ 66 {tag:'dd', children:[
70 {tag:'input', id:this.getId('login_passphrase'), type:'password', size:'30', name:'passphrase'} 67 {tag:'input', id:this.getId('login_passphrase'), type:'password', size:'30', name:'passphrase'}
71 ]} 68 ]}
72 ]}, 69 ]},
73 {tag:'div', id:this.getId('login_submit')} 70 {tag:'div', id:this.getId('login_submit')}
74 ]}, 71 ]},
75 {tag:'h4', id:this.getId('message')} 72 {tag:'h4', id:this.getId('message')}
76 ]} 73 ]}
77 ]}); 74 ]});
78 75
79 new Clipperz.PM.Components.Compact.CompactHeader(YAHOO.ext.Element.get('compactHeader')); 76 new Clipperz.PM.Components.Compact.CompactHeader(YAHOO.ext.Element.get('compactHeader'));
80 77
81 MochiKit.Signal.connect(this.getId('loginForm_form'), 'onsubmit', this, 'stopFormSubmit'); 78 MochiKit.Signal.connect(this.getId('loginForm_form'), 'onsubmit', this, 'stopFormSubmit');
82 new YAHOO.ext.Button(this.getId('login_submit'), {text:Clipperz.PM.Strings['loginFormButtonLabel'], handler:this.doLogin, scope:this, minWidth:0}); 79 new YAHOO.ext.Button(this.getId('login_submit'), {text:Clipperz.PM.Strings['loginFormButtonLabel'], handler:this.doLogin, scope:this, minWidth:0});
83 this.getElement('login_submit').swallowEvent('click', true); 80 this.getElement('login_submit').swallowEvent('click', true);
84 81
85 MochiKit.Signal.connect(this.getId('loginForm_form'), 'onkeydown', this, 'onkeydown'); 82 MochiKit.Signal.connect(this.getId('loginForm_form'), 'onkeydown', this, 'onkeydown');
86 83
87 new Clipperz.PM.Components.PasswordEntropyDisplay(this.getElement('login_passphrase')); 84 new Clipperz.PM.Components.PasswordEntropyDisplay(this.getElement('login_passphrase'));
88 this.getElement('login_username').focus(); 85 this.getElement('login_username').focus();
89 86
90 return result; 87 return result;
91 }, 88 },
92 89
93 //----------------------------------------------------- 90 //-----------------------------------------------------
94 91
95 'doLogin': function(e) { 92 'doLogin': function(e) {
96//MochiKit.Logging.logDebug(">>> compact.LoginForm.doLogin"); 93//MochiKit.Logging.logDebug(">>> compact.LoginForm.doLogin");
97 if (this.checkLoginForm()) { 94 if (this.checkLoginForm()) {
98 this.doLoginWithUsernameAndPassphrase(this.getDom('login_username').value, this.getDom('login_passphrase').value); 95 this.doLoginWithUsernameAndPassphrase(this.getDom('login_username').value, this.getDom('login_passphrase').value);
99 } 96 }
100//MochiKit.Logging.logDebug("<<< compact.LoginForm.doLogin"); 97//MochiKit.Logging.logDebug("<<< compact.LoginForm.doLogin");
101 }, 98 },
102 99
103 //......................................................................... 100 //.........................................................................
104 101
105 'doLoginWithUsernameAndPassphrase': function(anUsername, aPassphrase) { 102 'doLoginWithUsernameAndPassphrase': function(anUsername, aPassphrase) {
106 var deferredResult; 103 var deferredResult;
107 var user; 104 var user;
108 105
109//MochiKit.Logging.logDebug(">>> compact.LoginForm.doLoginWithUsernameAndPassphrase"); 106//MochiKit.Logging.logDebug(">>> compact.LoginForm.doLoginWithUsernameAndPassphrase");
110 user = new Clipperz.PM.DataModel.User({username:anUsername, passphrase:aPassphrase}); 107 user = new Clipperz.PM.DataModel.User({username:anUsername, passphrase:aPassphrase});
111 108
112 deferredResult = new MochiKit.Async.Deferred(); 109 deferredResult = new MochiKit.Async.Deferred();
113 deferredResult.addCallback(MochiKit.Base.method(user, 'connect')); 110 deferredResult.addCallback(MochiKit.Base.method(user, 'connect'));
114 deferredResult.addCallback(MochiKit.Base.method(user, 'loadPreferences')); 111 deferredResult.addCallback(MochiKit.Base.method(user, 'loadPreferences'));
115 deferredResult.addCallback(MochiKit.Base.method(user, 'loadRecords')); 112 deferredResult.addCallback(MochiKit.Base.method(user, 'loadRecords'));
116 deferredResult.addCallback(MochiKit.Base.method(user, 'loadDirectLogins')); 113 deferredResult.addCallback(MochiKit.Base.method(user, 'loadDirectLogins'));
117 deferredResult.addErrback(MochiKit.Base.bind(function() { 114 deferredResult.addErrback(MochiKit.Base.bind(function() {
118 this.getElement('loginForm_form').setVisibilityMode(YAHOO.ext.Element.DISPLAY).show(); 115 this.getElement('loginForm_form').setVisibilityMode(YAHOO.ext.Element.DISPLAY).show();
119 this.getElement('message').update(Clipperz.PM.Strings['loginMessagePanelFailureText']); 116 this.getElement('message').update(Clipperz.PM.Strings['loginMessagePanelFailureText']);
120 this.getDom('login_passphrase').value = ""; 117 this.getDom('login_passphrase').value = "";
121 this.getElement('login_passphrase').focus(); 118 this.getElement('login_passphrase').focus();
122 }, this)) 119 }, this))
123//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("compact.LoginForm.doLogin - 6: " + res); return res;}); 120//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("compact.LoginForm.doLogin - 6: " + res); return res;});
124 deferredResult.callback("token"); 121 deferredResult.callback("token");
125//MochiKit.Logging.logDebug("<<< compact.LoginForm.doLoginWithUsernameAndPassphrase"); 122//MochiKit.Logging.logDebug("<<< compact.LoginForm.doLoginWithUsernameAndPassphrase");
126 123
127 return deferredResult; 124 return deferredResult;
128 }, 125 },
129 126
130 //......................................................................... 127 //.........................................................................
131 128
132 'checkLoginForm': function() { 129 'checkLoginForm': function() {
133 var result; 130 var result;
134 var username 131 var username
135 varpassphrase; 132 varpassphrase;
136 133
137//MochiKit.Logging.logDebug(">>> checkLoginForm"); 134//MochiKit.Logging.logDebug(">>> checkLoginForm");
138 username = this.getDom('login_username').value; 135 username = this.getDom('login_username').value;
139 passphrase = this.getDom('login_passphrase').value; 136 passphrase = this.getDom('login_passphrase').value;
140 137
141 if ((username != "") && (passphrase != "")) { 138 if ((username != "") && (passphrase != "")) {
142 result = true; 139 result = true;
143 } else { 140 } else {
144 if (username == "") { 141 if (username == "") {
145 this.getElement('login_username').focus(); 142 this.getElement('login_username').focus();
146 } else if (passphrase == "") { 143 } else if (passphrase == "") {
147 this.getElement('login_passphrase').focus(); 144 this.getElement('login_passphrase').focus();
148 } 145 }
149 146
150 result = false; 147 result = false;
151 } 148 }
152//MochiKit.Logging.logDebug("<<< checkLoginForm - " + result); 149//MochiKit.Logging.logDebug("<<< checkLoginForm - " + result);
diff --git a/frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportColumns.js b/frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportColumns.js
index 18b36da..3f4952d 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportColumns.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportColumns.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; } 29if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; }
33if (typeof(Clipperz.PM.Components.Import.CSVImport) == 'undefined') { Clipperz.PM.Components.Import.CSVImport = {}; } 30if (typeof(Clipperz.PM.Components.Import.CSVImport) == 'undefined') { Clipperz.PM.Components.Import.CSVImport = {}; }
34 31
35//############################################################################# 32//#############################################################################
36 33
37Clipperz.PM.Components.Import.CSVImport.CSVImportColumns = function(anElement, args) { 34Clipperz.PM.Components.Import.CSVImport.CSVImportColumns = function(anElement, args) {
38 args = args || {}; 35 args = args || {};
39 36
40 Clipperz.PM.Components.Import.CSVImport.CSVImportColumns.superclass.constructor.call(this, anElement, args); 37 Clipperz.PM.Components.Import.CSVImport.CSVImportColumns.superclass.constructor.call(this, anElement, args);
41 this._mainComponent = args.mainComponent; 38 this._mainComponent = args.mainComponent;
42 39
43 return this; 40 return this;
44} 41}
45 42
46//============================================================================= 43//=============================================================================
47 44
48YAHOO.extendX(Clipperz.PM.Components.Import.CSVImport.CSVImportColumns, Clipperz.PM.Components.BaseComponent, { 45YAHOO.extendX(Clipperz.PM.Components.Import.CSVImport.CSVImportColumns, Clipperz.PM.Components.BaseComponent, {
49 46
50 'toString': function() { 47 'toString': function() {
51 return "Clipperz.PM.Components.Import.CSVImport.CSVImportColumns component"; 48 return "Clipperz.PM.Components.Import.CSVImport.CSVImportColumns component";
52 }, 49 },
53 50
54 //------------------------------------------------------------------------- 51 //-------------------------------------------------------------------------
55 52
56 'mainComponent': function() { 53 'mainComponent': function() {
57 return this._mainComponent; 54 return this._mainComponent;
58 }, 55 },
59 56
60 //------------------------------------------------------------------------- 57 //-------------------------------------------------------------------------
61 58
62 'render': function() { 59 'render': function() {
63 var i,c; 60 var i,c;
64 var columnSelectorCheckboxCells; 61 var columnSelectorCheckboxCells;
65 var checkboxes; 62 var checkboxes;
66 var data; 63 var data;
67 64
68//MochiKit.Logging.logDebug(">>> CSVImportColumns.render"); 65//MochiKit.Logging.logDebug(">>> CSVImportColumns.render");
69 Clipperz.NotificationCenter.unregister(this); 66 Clipperz.NotificationCenter.unregister(this);
70 MochiKit.Signal.disconnectAllTo(this); 67 MochiKit.Signal.disconnectAllTo(this);
71 68
72 this.element().update(""); 69 this.element().update("");
73 70
74 data = this.mainComponent().parsedValues(); 71 data = this.mainComponent().parsedValues();
75 columnSelectorCheckboxCells = []; 72 columnSelectorCheckboxCells = [];
76 73
77 c =data[0].length; 74 c =data[0].length;
78 for (i=0; i<c; i++) { 75 for (i=0; i<c; i++) {
79 columnSelectorCheckboxCells.push({tag:'th', valign:'top', cls:(this.mainComponent().isColumnSelected(i) ? 'selectedColumn': 'skippedColumn'), children:[ 76 columnSelectorCheckboxCells.push({tag:'th', valign:'top', cls:(this.mainComponent().isColumnSelected(i) ? 'selectedColumn': 'skippedColumn'), children:[
80 {tag:'input', type:'checkbox', id:this.getId('columnCheckbox_' + i), value:i} 77 {tag:'input', type:'checkbox', id:this.getId('columnCheckbox_' + i), value:i}
81 ]}) 78 ]})
82 } 79 }
83 80
84 this.domHelper().append(this.element(), {tag:'div', children:[ 81 this.domHelper().append(this.element(), {tag:'div', children:[
85 {tag:'div', cls:'importStepDescription', htmlString:Clipperz.PM.Strings['CSV_ImportWizard_Columns']}, 82 {tag:'div', cls:'importStepDescription', htmlString:Clipperz.PM.Strings['CSV_ImportWizard_Columns']},
86 {tag:'div', id:this.getId('dataDiv'), cls:'csvImportPreview', children:[ 83 {tag:'div', id:this.getId('dataDiv'), cls:'csvImportPreview', children:[
87 {tag:'table', id:this.getId('previewDada'), cls:'csvImportPreview columns', cellspacing:'0', children:[ 84 {tag:'table', id:this.getId('previewDada'), cls:'csvImportPreview columns', cellspacing:'0', children:[
88 {tag:'thead', id:this.getId('previewData_thead'), children:[ 85 {tag:'thead', id:this.getId('previewData_thead'), children:[
89 {tag:'tr', children:columnSelectorCheckboxCells} 86 {tag:'tr', children:columnSelectorCheckboxCells}
90 ]}, 87 ]},
91 {tag:'tbody', id:this.getId('previewData_tbody'), children:[]} 88 {tag:'tbody', id:this.getId('previewData_tbody'), children:[]}
92 ]} 89 ]}
93 ]} 90 ]}
94 ]}); 91 ]});
95 92
96 c =data[0].length; 93 c =data[0].length;
97 for (i=0; i<c; i++) { 94 for (i=0; i<c; i++) {
98 if (this.mainComponent().isColumnSelected(i)) { 95 if (this.mainComponent().isColumnSelected(i)) {
99 this.getDom('columnCheckbox_' + i).checked = true; 96 this.getDom('columnCheckbox_' + i).checked = true;
100 } 97 }
101 } 98 }
102 99
103 this.renderData(this.getElement('previewData_tbody'), data); 100 this.renderData(this.getElement('previewData_tbody'), data);
104 101
105 checkboxes = MochiKit.DOM.getElementsByTagAndClassName('input', null, this.getDom('previewData_thead')); 102 checkboxes = MochiKit.DOM.getElementsByTagAndClassName('input', null, this.getDom('previewData_thead'));
106 c = checkboxes.length; 103 c = checkboxes.length;
107 for (i=0; i<c; i++) { 104 for (i=0; i<c; i++) {
108 MochiKit.Signal.connect(checkboxes[i], 'onclick', this, 'renderDataHandler'); 105 MochiKit.Signal.connect(checkboxes[i], 'onclick', this, 'renderDataHandler');
109 } 106 }
110//MochiKit.Logging.logDebug("<<< CSVImportColumns.render"); 107//MochiKit.Logging.logDebug("<<< CSVImportColumns.render");
111 }, 108 },
112 109
113 //------------------------------------------------------------------------- 110 //-------------------------------------------------------------------------
114 111
115 'renderData': function(anElement, someData) { 112 'renderData': function(anElement, someData) {
116 var config; 113 var config;
117 var i,c; 114 var i,c;
118 115
119//MochiKit.Logging.logDebug(">>> CSVImportColumns.renderData"); 116//MochiKit.Logging.logDebug(">>> CSVImportColumns.renderData");
120 // anElement.update(""); 117 // anElement.update("");
121 MochiKit.DOM.replaceChildNodes(anElement.dom); 118 MochiKit.DOM.replaceChildNodes(anElement.dom);
122 119
123 config = MochiKit.Base.map(MochiKit.Base.bind(function(aRowData) { 120 config = MochiKit.Base.map(MochiKit.Base.bind(function(aRowData) {
124 var result; 121 var result;
125 var i,c; 122 var i,c;
126 123
127 result = {tag:'tr', children:[]}; 124 result = {tag:'tr', children:[]};
128 c = aRowData.length; 125 c = aRowData.length;
129 for (i=0; i<c; i++) { 126 for (i=0; i<c; i++) {
130 var field; 127 var field;
131 128
132 field = aRowData[i]; 129 field = aRowData[i];
133 result.children.push({tag:'td', valign:'top', cls:(this.mainComponent().isColumnSelected(i) ? 'selectedColumn': 'skippedColumn'), html:(MochiKit.Base.isNotEmpty(field) ? field.replace(/\n/g, '<br>') : '&nbsp;')}); 130 result.children.push({tag:'td', valign:'top', cls:(this.mainComponent().isColumnSelected(i) ? 'selectedColumn': 'skippedColumn'), html:(MochiKit.Base.isNotEmpty(field) ? field.replace(/\n/g, '<br>') : '&nbsp;')});
134 } 131 }
135 132
136 return result; 133 return result;
137 }, this), someData); 134 }, this), someData);
138 135
139 MochiKit.Base.map(function(aRowConfig) {Clipperz.YUI.DomHelper.append(anElement, aRowConfig);}, config); 136 MochiKit.Base.map(function(aRowConfig) {Clipperz.YUI.DomHelper.append(anElement, aRowConfig);}, config);
140 137
141 Clipperz.Style.applyZebraStylesToTable(this.getId('previewDada')); 138 Clipperz.Style.applyZebraStylesToTable(this.getId('previewDada'));
142//MochiKit.Logging.logDebug("<<< CSVImportColumns.renderData"); 139//MochiKit.Logging.logDebug("<<< CSVImportColumns.renderData");
143 }, 140 },
144 141
145 //------------------------------------------------------------------------- 142 //-------------------------------------------------------------------------
146 143
147 'renderDataHandler': function(anEvent) { 144 'renderDataHandler': function(anEvent) {
148 var thElement; 145 var thElement;
149 146
150 thElement = YAHOO.ext.Element.get(anEvent.src().parentNode); 147 thElement = YAHOO.ext.Element.get(anEvent.src().parentNode);
151 148
152 if (anEvent.src().checked == true) { 149 if (anEvent.src().checked == true) {
diff --git a/frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportFields.js b/frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportFields.js
index a368747..f7dbd5d 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportFields.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportFields.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; } 29if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; }
33if (typeof(Clipperz.PM.Components.Import.CSVImport) == 'undefined') { Clipperz.PM.Components.Import.CSVImport = {}; } 30if (typeof(Clipperz.PM.Components.Import.CSVImport) == 'undefined') { Clipperz.PM.Components.Import.CSVImport = {}; }
34 31
35//############################################################################# 32//#############################################################################
36 33
37Clipperz.PM.Components.Import.CSVImport.CSVImportFields = function(anElement, args) { 34Clipperz.PM.Components.Import.CSVImport.CSVImportFields = function(anElement, args) {
38 args = args || {}; 35 args = args || {};
39 36
40 Clipperz.PM.Components.Import.CSVImport.CSVImportFields.superclass.constructor.call(this, anElement, args); 37 Clipperz.PM.Components.Import.CSVImport.CSVImportFields.superclass.constructor.call(this, anElement, args);
41 this._mainComponent = args.mainComponent; 38 this._mainComponent = args.mainComponent;
42 39
43 return this; 40 return this;
44} 41}
45 42
46//============================================================================= 43//=============================================================================
47 44
48YAHOO.extendX(Clipperz.PM.Components.Import.CSVImport.CSVImportFields, Clipperz.PM.Components.BaseComponent, { 45YAHOO.extendX(Clipperz.PM.Components.Import.CSVImport.CSVImportFields, Clipperz.PM.Components.BaseComponent, {
49 46
50 'toString': function() { 47 'toString': function() {
51 return "Clipperz.PM.Components.Import.CSVImport.CSVImportFields component"; 48 return "Clipperz.PM.Components.Import.CSVImport.CSVImportFields component";
52 }, 49 },
53 50
54 //------------------------------------------------------------------------- 51 //-------------------------------------------------------------------------
55 52
56 'mainComponent': function() { 53 'mainComponent': function() {
57 return this._mainComponent; 54 return this._mainComponent;
58 }, 55 },
59 56
60 //------------------------------------------------------------------------- 57 //-------------------------------------------------------------------------
61 58
62 'render': function() { 59 'render': function() {
63 varfieldsHeaderCells; 60 varfieldsHeaderCells;
64 var titleColumnIndex; 61 var titleColumnIndex;
65 var notesColumnIndex; 62 var notesColumnIndex;
66 var i,c; 63 var i,c;
67 64
68 Clipperz.NotificationCenter.unregister(this); 65 Clipperz.NotificationCenter.unregister(this);
69 MochiKit.Signal.disconnectAllTo(this); 66 MochiKit.Signal.disconnectAllTo(this);
70 67
71 this.element().update(""); 68 this.element().update("");
72 69
73 titleColumnIndex = this.mainComponent().titleColumnIndex() 70 titleColumnIndex = this.mainComponent().titleColumnIndex()
74 notesColumnIndex = this.mainComponent().notesColumnIndex() 71 notesColumnIndex = this.mainComponent().notesColumnIndex()
75 72
76 fieldsHeaderCells = []; 73 fieldsHeaderCells = [];
77 fieldsHeaderCells.push({tag:'td', valign:'top', cls:'title', html:this.mainComponent().labelForColumn(titleColumnIndex)}); 74 fieldsHeaderCells.push({tag:'td', valign:'top', cls:'title', html:this.mainComponent().labelForColumn(titleColumnIndex)});
78 75
79 c =this.mainComponent().parsedValues()[0].length; 76 c =this.mainComponent().parsedValues()[0].length;
80 for (i=0; i<c; i++) { 77 for (i=0; i<c; i++) {
81 if ((i != titleColumnIndex) && (i != notesColumnIndex) && (this.mainComponent().isColumnSelected(i))) { 78 if ((i != titleColumnIndex) && (i != notesColumnIndex) && (this.mainComponent().isColumnSelected(i))) {
82 var trimmedLabel; 79 var trimmedLabel;
83 80
84 trimmedLabel = Clipperz.Base.trim(this.mainComponent().labelForColumn(i)); 81 trimmedLabel = Clipperz.Base.trim(this.mainComponent().labelForColumn(i));
85 fieldsHeaderCells.push({tag:'td', valign:'top', id:this.getId('fieldHeaderTD_' + i), cls:((trimmedLabel == "") ? 'missingLabelWarning' : (this.isColumnSetup(i) ? 'configuredColumn': 'unconfiguredColumn')), children:[ 82 fieldsHeaderCells.push({tag:'td', valign:'top', id:this.getId('fieldHeaderTD_' + i), cls:((trimmedLabel == "") ? 'missingLabelWarning' : (this.isColumnSetup(i) ? 'configuredColumn': 'unconfiguredColumn')), children:[
86 {tag:'span', html:((trimmedLabel == "") ? Clipperz.PM.Strings['CSV_ImportWizard_Fields_MissingLabelWarning'] : trimmedLabel)/*, cls:((trimmedLabel == "") ? 'missingLabelWarning' : '')*/}, 83 {tag:'span', html:((trimmedLabel == "") ? Clipperz.PM.Strings['CSV_ImportWizard_Fields_MissingLabelWarning'] : trimmedLabel)/*, cls:((trimmedLabel == "") ? 'missingLabelWarning' : '')*/},
87 {tag:'select', id:this.getId('select_' + i), name:i, children:[ 84 {tag:'select', id:this.getId('select_' + i), name:i, children:[
88 {tag:'option', value:'UNDEFINED', html:"select data type", cls:'disabledOption'}, 85 {tag:'option', value:'UNDEFINED', html:"select data type", cls:'disabledOption'},
89 {tag:'option', value:'TXT', htmlString:Clipperz.PM.Strings['recordFieldTypologies']['TXT']['shortDescription']}, 86 {tag:'option', value:'TXT', htmlString:Clipperz.PM.Strings['recordFieldTypologies']['TXT']['shortDescription']},
90 {tag:'option', value:'PWD', htmlString:Clipperz.PM.Strings['recordFieldTypologies']['PWD']['shortDescription']}, 87 {tag:'option', value:'PWD', htmlString:Clipperz.PM.Strings['recordFieldTypologies']['PWD']['shortDescription']},
91 {tag:'option', value:'URL', htmlString:Clipperz.PM.Strings['recordFieldTypologies']['URL']['shortDescription']}, 88 {tag:'option', value:'URL', htmlString:Clipperz.PM.Strings['recordFieldTypologies']['URL']['shortDescription']},
92 {tag:'option', value:'DATE', htmlString:Clipperz.PM.Strings['recordFieldTypologies']['DATE']['shortDescription']}, 89 {tag:'option', value:'DATE', htmlString:Clipperz.PM.Strings['recordFieldTypologies']['DATE']['shortDescription']},
93 {tag:'option', value:'ADDR', htmlString:Clipperz.PM.Strings['recordFieldTypologies']['ADDR']['shortDescription']} 90 {tag:'option', value:'ADDR', htmlString:Clipperz.PM.Strings['recordFieldTypologies']['ADDR']['shortDescription']}
94 ]} 91 ]}
95 ]}) 92 ]})
96 } 93 }
97 } 94 }
98 95
99 if (notesColumnIndex != -1) { 96 if (notesColumnIndex != -1) {
100 fieldsHeaderCells.push({tag:'td', valign:'top', cls:'notes', html:this.mainComponent().labelForColumn(notesColumnIndex)}); 97 fieldsHeaderCells.push({tag:'td', valign:'top', cls:'notes', html:this.mainComponent().labelForColumn(notesColumnIndex)});
101 } 98 }
102 99
103 this.domHelper().append(this.element(), {tag:'div', children:[ 100 this.domHelper().append(this.element(), {tag:'div', children:[
104 {tag:'div', cls:'importStepDescription', htmlString:Clipperz.PM.Strings['CSV_ImportWizard_Fields']}, 101 {tag:'div', cls:'importStepDescription', htmlString:Clipperz.PM.Strings['CSV_ImportWizard_Fields']},
105 {tag:'div', id:this.getId('dataDiv'), children:[ 102 {tag:'div', id:this.getId('dataDiv'), children:[
106 {tag:'div', children:[ 103 {tag:'div', children:[
107 ]}, 104 ]},
108 {tag:'div', cls:'csvImportPreview', children:[ 105 {tag:'div', cls:'csvImportPreview', children:[
109 {tag:'table', id:this.getId('previewDada'), cls:'csvImportPreview', cellspacing:'0', children:[ 106 {tag:'table', id:this.getId('previewDada'), cls:'csvImportPreview', cellspacing:'0', children:[
110 {tag:'thead', id:this.getId('previewData_thead'), children:[ 107 {tag:'thead', id:this.getId('previewData_thead'), children:[
111 {tag:'tr', cls:'CSV_previewData_header', children:fieldsHeaderCells} 108 {tag:'tr', cls:'CSV_previewData_header', children:fieldsHeaderCells}
112 ]}, 109 ]},
113 {tag:'tbody', id:this.getId('previewData_tbody'), children:[]} 110 {tag:'tbody', id:this.getId('previewData_tbody'), children:[]}
114 ]} 111 ]}
115 ]} 112 ]}
116 ]} 113 ]}
117 ]}); 114 ]});
118 115
119 for (i=0; i<c; i++) { 116 for (i=0; i<c; i++) {
120 if ((i != titleColumnIndex) && (i != notesColumnIndex) && (this.mainComponent().isColumnSelected(i))) { 117 if ((i != titleColumnIndex) && (i != notesColumnIndex) && (this.mainComponent().isColumnSelected(i))) {
121 Clipperz.DOM.selectOptionMatchingValue(this.getDom('select_' + i), this.mainComponent().typeForColumn(i)); 118 Clipperz.DOM.selectOptionMatchingValue(this.getDom('select_' + i), this.mainComponent().typeForColumn(i));
122 MochiKit.Signal.connect(this.getDom('select_' + i), 'onchange', this, 'renderDataRowsHandler'); 119 MochiKit.Signal.connect(this.getDom('select_' + i), 'onchange', this, 'renderDataRowsHandler');
123 } 120 }
124 } 121 }
125 122
126 this.renderDataRows(this.getElement('previewData_tbody')); 123 this.renderDataRows(this.getElement('previewData_tbody'));
127 // Clipperz.NotificationCenter.register(null, 'updatedCSVImportColumnHeader', this, 'renderDataRowsHandler'); 124 // Clipperz.NotificationCenter.register(null, 'updatedCSVImportColumnHeader', this, 'renderDataRowsHandler');
128 }, 125 },
129 126
130 //------------------------------------------------------------------------- 127 //-------------------------------------------------------------------------
131 128
132 'isColumnSetup': function(aColumnIndex) { 129 'isColumnSetup': function(aColumnIndex) {
133 return ((Clipperz.Base.trim(this.mainComponent().labelForColumn(aColumnIndex)) != "") && (this.mainComponent().typeForColumn(aColumnIndex) != 'UNDEFINED')); 130 return ((Clipperz.Base.trim(this.mainComponent().labelForColumn(aColumnIndex)) != "") && (this.mainComponent().typeForColumn(aColumnIndex) != 'UNDEFINED'));
134 }, 131 },
135 132
136 //------------------------------------------------------------------------- 133 //-------------------------------------------------------------------------
137 134
138 'renderDataRowsHandler': function(anEvent) { 135 'renderDataRowsHandler': function(anEvent) {
139 var columnIndex; 136 var columnIndex;
140 var tdElement; 137 var tdElement;
141 138
142//MochiKit.Logging.logDebug(">>> renderDataRowsHandler") 139//MochiKit.Logging.logDebug(">>> renderDataRowsHandler")
143 columnIndex = anEvent.src().name; 140 columnIndex = anEvent.src().name;
144 this.mainComponent().setTypeForColumn(anEvent.src().value, columnIndex); 141 this.mainComponent().setTypeForColumn(anEvent.src().value, columnIndex);
145 142
146 tdElement = this.getElement('fieldHeaderTD_' + columnIndex); 143 tdElement = this.getElement('fieldHeaderTD_' + columnIndex);
147 144
148 if (this.isColumnSetup(columnIndex)) { 145 if (this.isColumnSetup(columnIndex)) {
149 tdElement.removeClass('unconfiguredColumn'); 146 tdElement.removeClass('unconfiguredColumn');
150 tdElement.addClass('configuredColumn'); 147 tdElement.addClass('configuredColumn');
151 } else { 148 } else {
152 tdElement.addClass('unconfiguredColumn'); 149 tdElement.addClass('unconfiguredColumn');
diff --git a/frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportHeader.js b/frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportHeader.js
index ebd243a..5cb8679 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportHeader.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportHeader.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; } 29if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; }
33if (typeof(Clipperz.PM.Components.Import.CSVImport) == 'undefined') { Clipperz.PM.Components.Import.CSVImport = {}; } 30if (typeof(Clipperz.PM.Components.Import.CSVImport) == 'undefined') { Clipperz.PM.Components.Import.CSVImport = {}; }
34 31
35//############################################################################# 32//#############################################################################
36 33
37Clipperz.PM.Components.Import.CSVImport.CSVImportHeader = function(anElement, args) { 34Clipperz.PM.Components.Import.CSVImport.CSVImportHeader = function(anElement, args) {
38 args = args || {}; 35 args = args || {};
39 36
40 Clipperz.PM.Components.Import.CSVImport.CSVImportHeader.superclass.constructor.call(this, anElement, args); 37 Clipperz.PM.Components.Import.CSVImport.CSVImportHeader.superclass.constructor.call(this, anElement, args);
41 this._mainComponent = args.mainComponent; 38 this._mainComponent = args.mainComponent;
42 39
43 this._pendingDeferredLabelFieldHandlerEvents = 0; 40 this._pendingDeferredLabelFieldHandlerEvents = 0;
44 41
45 return this; 42 return this;
46} 43}
47 44
48//============================================================================= 45//=============================================================================
49 46
50YAHOO.extendX(Clipperz.PM.Components.Import.CSVImport.CSVImportHeader, Clipperz.PM.Components.BaseComponent, { 47YAHOO.extendX(Clipperz.PM.Components.Import.CSVImport.CSVImportHeader, Clipperz.PM.Components.BaseComponent, {
51 48
52 'toString': function() { 49 'toString': function() {
53 return "Clipperz.PM.Components.Import.CSVImport.CSVImportHeader component"; 50 return "Clipperz.PM.Components.Import.CSVImport.CSVImportHeader component";
54 }, 51 },
55 52
56 //------------------------------------------------------------------------- 53 //-------------------------------------------------------------------------
57 54
58 'mainComponent': function() { 55 'mainComponent': function() {
59 return this._mainComponent; 56 return this._mainComponent;
60 }, 57 },
61 58
62 //------------------------------------------------------------------------- 59 //-------------------------------------------------------------------------
63 60
64 'render': function() { 61 'render': function() {
65 var thConfigs; 62 var thConfigs;
66 var i,c; 63 var i,c;
67 64
68//MochiKit.Logging.logDebug(">>> CSVImportHeader.render"); 65//MochiKit.Logging.logDebug(">>> CSVImportHeader.render");
69 Clipperz.NotificationCenter.unregister(this); 66 Clipperz.NotificationCenter.unregister(this);
70 MochiKit.Signal.disconnectAllTo(this); 67 MochiKit.Signal.disconnectAllTo(this);
71 68
72 thConfigs = []; 69 thConfigs = [];
73 c = this.mainComponent().parsedValues()[0].length; 70 c = this.mainComponent().parsedValues()[0].length;
74 for (i=0; i<c; i++) { 71 for (i=0; i<c; i++) {
75 if (this.mainComponent().isColumnSelected(i)) { 72 if (this.mainComponent().isColumnSelected(i)) {
76 // thConfigs.push({tag:'th', children:[{tag:'input', type:'text', id:this.getId('headerTextField_' + i), value:this.mainComponent().labelForColumn(i)}]}); 73 // thConfigs.push({tag:'th', children:[{tag:'input', type:'text', id:this.getId('headerTextField_' + i), value:this.mainComponent().labelForColumn(i)}]});
77 thConfigs.push({tag:'th', children:[{tag:'input', type:'text', id:this.getId('headerTextField_' + i), value:""}]}); 74 thConfigs.push({tag:'th', children:[{tag:'input', type:'text', id:this.getId('headerTextField_' + i), value:""}]});
78 } 75 }
79 } 76 }
80 77
81 this.element().update(""); 78 this.element().update("");
82 this.domHelper().append(this.element(), {tag:'div', children:[ 79 this.domHelper().append(this.element(), {tag:'div', children:[
83 {tag:'div', cls:'importStepDescription', htmlString:Clipperz.PM.Strings['CSV_ImportWizard_Header']}, 80 {tag:'div', cls:'importStepDescription', htmlString:Clipperz.PM.Strings['CSV_ImportWizard_Header']},
84 {tag:'div', cls:'importStepParameters', children:[ 81 {tag:'div', cls:'importStepParameters', children:[
85 {tag:'input', type:'checkbox', name:'isFistRowHeader', id:this.getId('isFirstRowHeader_checkbox')}, 82 {tag:'input', type:'checkbox', name:'isFistRowHeader', id:this.getId('isFirstRowHeader_checkbox')},
86 {tag:'span', id:this.getId('isFirstRowHeader_span'), cls:'clickableSpan', htmlString:Clipperz.PM.Strings['CSV_ImportWizard_Header_Settings_firstRowHeaderLabel']} 83 {tag:'span', id:this.getId('isFirstRowHeader_span'), cls:'clickableSpan', htmlString:Clipperz.PM.Strings['CSV_ImportWizard_Header_Settings_firstRowHeaderLabel']}
87 ]}, 84 ]},
88 {tag:'div', id:this.getId('dataDiv'), children:[ 85 {tag:'div', id:this.getId('dataDiv'), children:[
89 {tag:'div', cls:'csvImportPreview', children:[ 86 {tag:'div', cls:'csvImportPreview', children:[
90 {tag:'table', id:this.getId('previewDada'), cls:'csvImportPreview header', cellspacing:'0', children:[ 87 {tag:'table', id:this.getId('previewDada'), cls:'csvImportPreview header', cellspacing:'0', children:[
91 {tag:'thead', children:[{tag:'tr', children:thConfigs}]}, 88 {tag:'thead', children:[{tag:'tr', children:thConfigs}]},
92 {tag:'tbody', id:this.getId('previewData_tbody')} 89 {tag:'tbody', id:this.getId('previewData_tbody')}
93 ]} 90 ]}
94 ]} 91 ]}
95 ]} 92 ]}
96 ]}); 93 ]});
97 94
98 for (i=0; i<c; i++) { 95 for (i=0; i<c; i++) {
99 if (this.mainComponent().isColumnSelected(i)) { 96 if (this.mainComponent().isColumnSelected(i)) {
100 this.getElement('headerTextField_' + i).dom.value = this.mainComponent().labelForColumn(i); 97 this.getElement('headerTextField_' + i).dom.value = this.mainComponent().labelForColumn(i);
101 } 98 }
102 } 99 }
103 100
104 this.renderData(this.getElement('previewData_tbody'), this.mainComponent().parsedValues()); 101 this.renderData(this.getElement('previewData_tbody'), this.mainComponent().parsedValues());
105 102
106 if (this.mainComponent().isFirstRowHeader()) { 103 if (this.mainComponent().isFirstRowHeader()) {
107 this.getDom('isFirstRowHeader_checkbox').click(); 104 this.getDom('isFirstRowHeader_checkbox').click();
108 } 105 }
109 106
110 c = this.mainComponent().parsedValues()[0].length; 107 c = this.mainComponent().parsedValues()[0].length;
111 for (i=0; i<c; i++) { 108 for (i=0; i<c; i++) {
112 if (this.mainComponent().isColumnSelected(i)) { 109 if (this.mainComponent().isColumnSelected(i)) {
113 MochiKit.Signal.connect(this.getDom('headerTextField_' + i), 'onchange', MochiKit.Base.partial(MochiKit.Base.method(this, 'labelFieldHandler'), i)); 110 MochiKit.Signal.connect(this.getDom('headerTextField_' + i), 'onchange', MochiKit.Base.partial(MochiKit.Base.method(this, 'labelFieldHandler'), i));
114 MochiKit.Signal.connect(this.getDom('headerTextField_' + i), 'onkeypress', MochiKit.Base.partial(MochiKit.Base.method(this, 'deferredLabelFieldHandler'), i)); 111 MochiKit.Signal.connect(this.getDom('headerTextField_' + i), 'onkeypress', MochiKit.Base.partial(MochiKit.Base.method(this, 'deferredLabelFieldHandler'), i));
115 } 112 }
116 } 113 }
117 114
118 MochiKit.Signal.connect(this.getDom('isFirstRowHeader_checkbox'), 'onclick', this, 'toggleFirstRowHeaderCheckboxHandler'); 115 MochiKit.Signal.connect(this.getDom('isFirstRowHeader_checkbox'), 'onclick', this, 'toggleFirstRowHeaderCheckboxHandler');
119 if (Clipperz_IEisBroken != true) { 116 if (Clipperz_IEisBroken != true) {
120 MochiKit.Signal.connect(this.getDom('isFirstRowHeader_span'), 'onclick', this.getDom('isFirstRowHeader_checkbox'), 'click'); 117 MochiKit.Signal.connect(this.getDom('isFirstRowHeader_span'), 'onclick', this.getDom('isFirstRowHeader_checkbox'), 'click');
121 } 118 }
122//MochiKit.Logging.logDebug("<<< CSVImportHeader.render"); 119//MochiKit.Logging.logDebug("<<< CSVImportHeader.render");
123 }, 120 },
124 121
125 //------------------------------------------------------------------------- 122 //-------------------------------------------------------------------------
126 123
127 'renderData': function(anElement, someData) { 124 'renderData': function(anElement, someData) {
128 var trConfigs; 125 var trConfigs;
129 var data; 126 var data;
130 var i,c; 127 var i,c;
131 128
132 // anElement.update(""); 129 // anElement.update("");
133 MochiKit.DOM.replaceChildNodes(anElement.dom); 130 MochiKit.DOM.replaceChildNodes(anElement.dom);
134 131
135 if (this.mainComponent().isFirstRowHeader()) { 132 if (this.mainComponent().isFirstRowHeader()) {
136 data = someData.slice(1); 133 data = someData.slice(1);
137 } else { 134 } else {
138 data = someData; 135 data = someData;
139 } 136 }
140 137
141 trConfigs = MochiKit.Base.map(MochiKit.Base.bind(function(aRowData) { 138 trConfigs = MochiKit.Base.map(MochiKit.Base.bind(function(aRowData) {
142 var result; 139 var result;
143 var i,c; 140 var i,c;
144 141
145 result = {tag:'tr', children:[]}; 142 result = {tag:'tr', children:[]};
146 c = aRowData.length; 143 c = aRowData.length;
147 for (i=0; i<c; i++) { 144 for (i=0; i<c; i++) {
148 if (this.mainComponent().isColumnSelected(i)) { 145 if (this.mainComponent().isColumnSelected(i)) {
149 result.children.push({tag:'td', valign:'top', html:(MochiKit.Base.isNotEmpty(aRowData[i]) ? aRowData[i].replace(/\n/g, '<br>') : '&nbsp;')}); 146 result.children.push({tag:'td', valign:'top', html:(MochiKit.Base.isNotEmpty(aRowData[i]) ? aRowData[i].replace(/\n/g, '<br>') : '&nbsp;')});
150 } 147 }
151 } 148 }
152 149
diff --git a/frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportNotes.js b/frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportNotes.js
index a53c531..6344e06 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportNotes.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportNotes.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; } 29if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; }
33if (typeof(Clipperz.PM.Components.Import.CSVImport) == 'undefined') { Clipperz.PM.Components.Import.CSVImport = {}; } 30if (typeof(Clipperz.PM.Components.Import.CSVImport) == 'undefined') { Clipperz.PM.Components.Import.CSVImport = {}; }
34 31
35//############################################################################# 32//#############################################################################
36 33
37Clipperz.PM.Components.Import.CSVImport.CSVImportNotes = function(anElement, args) { 34Clipperz.PM.Components.Import.CSVImport.CSVImportNotes = function(anElement, args) {
38 args = args || {}; 35 args = args || {};
39 36
40 Clipperz.PM.Components.Import.CSVImport.CSVImportNotes.superclass.constructor.call(this, anElement, args); 37 Clipperz.PM.Components.Import.CSVImport.CSVImportNotes.superclass.constructor.call(this, anElement, args);
41 this._mainComponent = args.mainComponent; 38 this._mainComponent = args.mainComponent;
42 39
43 return this; 40 return this;
44} 41}
45 42
46//============================================================================= 43//=============================================================================
47 44
48YAHOO.extendX(Clipperz.PM.Components.Import.CSVImport.CSVImportNotes, Clipperz.PM.Components.BaseComponent, { 45YAHOO.extendX(Clipperz.PM.Components.Import.CSVImport.CSVImportNotes, Clipperz.PM.Components.BaseComponent, {
49 46
50 'toString': function() { 47 'toString': function() {
51 return "Clipperz.PM.Components.Import.CSVImport.CSVImportNotes component"; 48 return "Clipperz.PM.Components.Import.CSVImport.CSVImportNotes component";
52 }, 49 },
53 50
54 //------------------------------------------------------------------------- 51 //-------------------------------------------------------------------------
55 52
56 'mainComponent': function() { 53 'mainComponent': function() {
57 return this._mainComponent; 54 return this._mainComponent;
58 }, 55 },
59 56
60 //------------------------------------------------------------------------- 57 //-------------------------------------------------------------------------
61 58
62 'render': function() { 59 'render': function() {
63 varnotesSelectorCheckboxCells; 60 varnotesSelectorCheckboxCells;
64 var totalNumberOfColumns; 61 var totalNumberOfColumns;
65 var titleColumnIndex; 62 var titleColumnIndex;
66 var notesColumnIndex; 63 var notesColumnIndex;
67 var i,c; 64 var i,c;
68 65
69 Clipperz.NotificationCenter.unregister(this); 66 Clipperz.NotificationCenter.unregister(this);
70 MochiKit.Signal.disconnectAllTo(this); 67 MochiKit.Signal.disconnectAllTo(this);
71 68
72 this.element().update(""); 69 this.element().update("");
73 70
74 titleColumnIndex = this.mainComponent().titleColumnIndex() 71 titleColumnIndex = this.mainComponent().titleColumnIndex()
75 notesColumnIndex = this.mainComponent().notesColumnIndex() 72 notesColumnIndex = this.mainComponent().notesColumnIndex()
76 73
77 totalNumberOfColumns = this.mainComponent().parsedValues()[0].length; 74 totalNumberOfColumns = this.mainComponent().parsedValues()[0].length;
78 75
79 notesSelectorCheckboxCells = [{tag:'th', cls:'title', html:this.mainComponent().labelForColumn(titleColumnIndex)}]; 76 notesSelectorCheckboxCells = [{tag:'th', cls:'title', html:this.mainComponent().labelForColumn(titleColumnIndex)}];
80 c =totalNumberOfColumns; 77 c =totalNumberOfColumns;
81 for (i=0; i<c; i++) { 78 for (i=0; i<c; i++) {
82 if ((i != titleColumnIndex) && (this.mainComponent().isColumnSelected(i))) { 79 if ((i != titleColumnIndex) && (this.mainComponent().isColumnSelected(i))) {
83 notesSelectorCheckboxCells.push({tag:'th', id:this.getId('th_' + i), valign:'top', children:[ 80 notesSelectorCheckboxCells.push({tag:'th', id:this.getId('th_' + i), valign:'top', children:[
84 {tag:'input', type:'radio', id:this.getId('radio_' + i), name:'CSVImportNotesColumn', value:i}, 81 {tag:'input', type:'radio', id:this.getId('radio_' + i), name:'CSVImportNotesColumn', value:i},
85 {tag:'span', cls:'clickableSpan', id:this.getId('columnLabel_' + i), html:this.mainComponent().labelForColumn(i)} 82 {tag:'span', cls:'clickableSpan', id:this.getId('columnLabel_' + i), html:this.mainComponent().labelForColumn(i)}
86 ]}) 83 ]})
87 } 84 }
88 } 85 }
89 86
90 this.domHelper().append(this.element(), {tag:'div', children:[ 87 this.domHelper().append(this.element(), {tag:'div', children:[
91 {tag:'div', cls:'importStepDescription', htmlString:Clipperz.PM.Strings['CSV_ImportWizard_Notes']}, 88 {tag:'div', cls:'importStepDescription', htmlString:Clipperz.PM.Strings['CSV_ImportWizard_Notes']},
92 {tag:'div', id:this.getId('dataDiv'), children:[ 89 {tag:'div', id:this.getId('dataDiv'), children:[
93 {tag:'div', cls:'importStepParameters', children:[ 90 {tag:'div', cls:'importStepParameters', children:[
94 {tag:'input', id:this.getId('doNotSetNotes_radio'), type:'radio', name:'CSVImportNotesColumn', value:-1}, 91 {tag:'input', id:this.getId('doNotSetNotes_radio'), type:'radio', name:'CSVImportNotesColumn', value:-1},
95 {tag:'span', id:this.getId('doNotSetNotes_span'), cls:'clickableSpan', htmlString:Clipperz.PM.Strings['CSV_ImportWizard_Notes_Settings_noSelectionLabel']} 92 {tag:'span', id:this.getId('doNotSetNotes_span'), cls:'clickableSpan', htmlString:Clipperz.PM.Strings['CSV_ImportWizard_Notes_Settings_noSelectionLabel']}
96 ]}, 93 ]},
97 {tag:'div', cls:'csvImportPreview', children:[ 94 {tag:'div', cls:'csvImportPreview', children:[
98 {tag:'table', id:this.getId('previewDada'), cls:'csvImportPreview', cellspacing:'0', children:[ 95 {tag:'table', id:this.getId('previewDada'), cls:'csvImportPreview', cellspacing:'0', children:[
99 {tag:'thead', id:this.getId('previewData_thead'), children:[ 96 {tag:'thead', id:this.getId('previewData_thead'), children:[
100 {tag:'tr', children:notesSelectorCheckboxCells} 97 {tag:'tr', children:notesSelectorCheckboxCells}
101 ]}, 98 ]},
102 {tag:'tbody', id:this.getId('previewData_tbody'), children:[]} 99 {tag:'tbody', id:this.getId('previewData_tbody'), children:[]}
103 ]} 100 ]}
104 ]} 101 ]}
105 ]} 102 ]}
106 ]}); 103 ]});
107 104
108 this.renderData(this.getElement('previewData_tbody'), this.mainComponent().parsedValues()); 105 this.renderData(this.getElement('previewData_tbody'), this.mainComponent().parsedValues());
109 106
110 if ((notesColumnIndex >= totalNumberOfColumns) || (notesColumnIndex == titleColumnIndex) || !(this.mainComponent().isColumnSelected(notesColumnIndex))) { 107 if ((notesColumnIndex >= totalNumberOfColumns) || (notesColumnIndex == titleColumnIndex) || !(this.mainComponent().isColumnSelected(notesColumnIndex))) {
111 this.mainComponent().setNotesColumnIndex(-1); 108 this.mainComponent().setNotesColumnIndex(-1);
112 notesColumnIndex = -1; 109 notesColumnIndex = -1;
113 } 110 }
114 111
115 c =totalNumberOfColumns; 112 c =totalNumberOfColumns;
116 for (i=0; i<c; i++) { 113 for (i=0; i<c; i++) {
117 if ((i != titleColumnIndex) && (this.mainComponent().isColumnSelected(i))) { 114 if ((i != titleColumnIndex) && (this.mainComponent().isColumnSelected(i))) {
118 MochiKit.Signal.connect(this.getDom('radio_' + i), 'onclick', this, 'renderDataHandler'); 115 MochiKit.Signal.connect(this.getDom('radio_' + i), 'onclick', this, 'renderDataHandler');
119 if (Clipperz_IEisBroken != true) { 116 if (Clipperz_IEisBroken != true) {
120 MochiKit.Signal.connect(this.getDom('columnLabel_' + i), 'onclick', this.getDom('radio_' + i), 'click'); 117 MochiKit.Signal.connect(this.getDom('columnLabel_' + i), 'onclick', this.getDom('radio_' + i), 'click');
121 } 118 }
122 } 119 }
123 } 120 }
124 121
125 MochiKit.Signal.connect(this.getDom('doNotSetNotes_radio'), 'onclick', this, 'renderDataHandler'); 122 MochiKit.Signal.connect(this.getDom('doNotSetNotes_radio'), 'onclick', this, 'renderDataHandler');
126 if (Clipperz_IEisBroken != true) { 123 if (Clipperz_IEisBroken != true) {
127 MochiKit.Signal.connect(this.getDom('doNotSetNotes_span'), 'onclick', this.getDom('doNotSetNotes_radio'), 'click'); 124 MochiKit.Signal.connect(this.getDom('doNotSetNotes_span'), 'onclick', this.getDom('doNotSetNotes_radio'), 'click');
128 } 125 }
129 126
130 if (notesColumnIndex == -1) { 127 if (notesColumnIndex == -1) {
131 this.getDom('doNotSetNotes_radio').click(); 128 this.getDom('doNotSetNotes_radio').click();
132 } else { 129 } else {
133 this.getDom('radio_' + notesColumnIndex).click(); 130 this.getDom('radio_' + notesColumnIndex).click();
134 } 131 }
135 }, 132 },
136 133
137 //------------------------------------------------------------------------- 134 //-------------------------------------------------------------------------
138 135
139 'renderData': function(anElement, someData) { 136 'renderData': function(anElement, someData) {
140 var data; 137 var data;
141 var config; 138 var config;
142 var titleColumnIndex; 139 var titleColumnIndex;
143 var notesColumnIndex; 140 var notesColumnIndex;
144 var i,c; 141 var i,c;
145 142
146 // anElement.update(""); 143 // anElement.update("");
147 MochiKit.DOM.replaceChildNodes(anElement.dom); 144 MochiKit.DOM.replaceChildNodes(anElement.dom);
148 145
149 titleColumnIndex = this.mainComponent().titleColumnIndex(); 146 titleColumnIndex = this.mainComponent().titleColumnIndex();
150 notesColumnIndex = this.mainComponent().notesColumnIndex(); 147 notesColumnIndex = this.mainComponent().notesColumnIndex();
151 148
152 if (this.mainComponent().isFirstRowHeader()) { 149 if (this.mainComponent().isFirstRowHeader()) {
diff --git a/frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportTitle.js b/frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportTitle.js
index 9162867..aa57580 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportTitle.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Import/CSVImport/CSVImportTitle.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; } 29if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; }
33if (typeof(Clipperz.PM.Components.Import.CSVImport) == 'undefined') { Clipperz.PM.Components.Import.CSVImport = {}; } 30if (typeof(Clipperz.PM.Components.Import.CSVImport) == 'undefined') { Clipperz.PM.Components.Import.CSVImport = {}; }
34 31
35//############################################################################# 32//#############################################################################
36 33
37Clipperz.PM.Components.Import.CSVImport.CSVImportTitle = function(anElement, args) { 34Clipperz.PM.Components.Import.CSVImport.CSVImportTitle = function(anElement, args) {
38 args = args || {}; 35 args = args || {};
39 36
40 Clipperz.PM.Components.Import.CSVImport.CSVImportTitle.superclass.constructor.call(this, anElement, args); 37 Clipperz.PM.Components.Import.CSVImport.CSVImportTitle.superclass.constructor.call(this, anElement, args);
41 this._mainComponent = args.mainComponent; 38 this._mainComponent = args.mainComponent;
42 39
43 return this; 40 return this;
44} 41}
45 42
46//============================================================================= 43//=============================================================================
47 44
48YAHOO.extendX(Clipperz.PM.Components.Import.CSVImport.CSVImportTitle, Clipperz.PM.Components.BaseComponent, { 45YAHOO.extendX(Clipperz.PM.Components.Import.CSVImport.CSVImportTitle, Clipperz.PM.Components.BaseComponent, {
49 46
50 'toString': function() { 47 'toString': function() {
51 return "Clipperz.PM.Components.Import.CSVImport.CSVImportTitle component"; 48 return "Clipperz.PM.Components.Import.CSVImport.CSVImportTitle component";
52 }, 49 },
53 50
54 //------------------------------------------------------------------------- 51 //-------------------------------------------------------------------------
55 52
56 'mainComponent': function() { 53 'mainComponent': function() {
57 return this._mainComponent; 54 return this._mainComponent;
58 }, 55 },
59 56
60 //------------------------------------------------------------------------- 57 //-------------------------------------------------------------------------
61 58
62 'render': function() { 59 'render': function() {
63 vartitleSelectorCheckboxCells; 60 vartitleSelectorCheckboxCells;
64 var titleColumnIndex; 61 var titleColumnIndex;
65 var i,c; 62 var i,c;
66 63
67 Clipperz.NotificationCenter.unregister(this); 64 Clipperz.NotificationCenter.unregister(this);
68 MochiKit.Signal.disconnectAllTo(this); 65 MochiKit.Signal.disconnectAllTo(this);
69 66
70 this.element().update(""); 67 this.element().update("");
71 68
72 titleColumnIndex = this.mainComponent().titleColumnIndex() 69 titleColumnIndex = this.mainComponent().titleColumnIndex()
73 titleSelectorCheckboxCells = []; 70 titleSelectorCheckboxCells = [];
74 c =this.mainComponent().parsedValues()[0].length; 71 c =this.mainComponent().parsedValues()[0].length;
75 for (i=0; i<c; i++) { 72 for (i=0; i<c; i++) {
76 if (this.mainComponent().isColumnSelected(i)) { 73 if (this.mainComponent().isColumnSelected(i)) {
77 titleSelectorCheckboxCells.push({tag:'th', valign:'top', id:this.getId('th_' + i), children:[ 74 titleSelectorCheckboxCells.push({tag:'th', valign:'top', id:this.getId('th_' + i), children:[
78 {tag:'input', type:'radio', id:this.getId('radio_' + i), name:'CSVImportTitleColumn', value:i}, 75 {tag:'input', type:'radio', id:this.getId('radio_' + i), name:'CSVImportTitleColumn', value:i},
79 {tag:'span', cls:'clickableSpan', id:this.getId('columnLabel_' + i), html:this.mainComponent().labelForColumn(i)} 76 {tag:'span', cls:'clickableSpan', id:this.getId('columnLabel_' + i), html:this.mainComponent().labelForColumn(i)}
80 ]}) 77 ]})
81 } 78 }
82 } 79 }
83 80
84 if (titleColumnIndex >= titleSelectorCheckboxCells.length) { 81 if (titleColumnIndex >= titleSelectorCheckboxCells.length) {
85 this.mainComponent().setTitleColumnIndex(-1); 82 this.mainComponent().setTitleColumnIndex(-1);
86 } 83 }
87 84
88 this.domHelper().append(this.element(), {tag:'div', children:[ 85 this.domHelper().append(this.element(), {tag:'div', children:[
89 {tag:'div', cls:'importStepDescription', htmlString:Clipperz.PM.Strings['CSV_ImportWizard_Title']}, 86 {tag:'div', cls:'importStepDescription', htmlString:Clipperz.PM.Strings['CSV_ImportWizard_Title']},
90 {tag:'div', id:this.getId('dataDiv'), cls:'csvImportPreview', children:[ 87 {tag:'div', id:this.getId('dataDiv'), cls:'csvImportPreview', children:[
91 {tag:'table', id:this.getId('previewDada'), cls:'csvImportPreview', cellspacing:'0', children:[ 88 {tag:'table', id:this.getId('previewDada'), cls:'csvImportPreview', cellspacing:'0', children:[
92 {tag:'thead', id:this.getId('previewData_thead'), children:[ 89 {tag:'thead', id:this.getId('previewData_thead'), children:[
93 {tag:'tr', children:titleSelectorCheckboxCells} 90 {tag:'tr', children:titleSelectorCheckboxCells}
94 ]}, 91 ]},
95 {tag:'tbody', id:this.getId('previewData_tbody'), children:[]} 92 {tag:'tbody', id:this.getId('previewData_tbody'), children:[]}
96 ]} 93 ]}
97 ]} 94 ]}
98 ]}); 95 ]});
99 96
100 this.renderData(this.getElement('previewData_tbody'), this.mainComponent().parsedValues()); 97 this.renderData(this.getElement('previewData_tbody'), this.mainComponent().parsedValues());
101 98
102 c =this.mainComponent().parsedValues()[0].length; 99 c =this.mainComponent().parsedValues()[0].length;
103 for (i=0; i<c; i++) { 100 for (i=0; i<c; i++) {
104 if (this.mainComponent().isColumnSelected(i)) { 101 if (this.mainComponent().isColumnSelected(i)) {
105 MochiKit.Signal.connect(this.getDom('radio_' + i), 'onclick', this, 'renderDataHandler'); 102 MochiKit.Signal.connect(this.getDom('radio_' + i), 'onclick', this, 'renderDataHandler');
106 if (Clipperz_IEisBroken != true) { 103 if (Clipperz_IEisBroken != true) {
107 MochiKit.Signal.connect(this.getDom('columnLabel_' + i), 'onclick', this.getDom('radio_' + i), 'click'); 104 MochiKit.Signal.connect(this.getDom('columnLabel_' + i), 'onclick', this.getDom('radio_' + i), 'click');
108 } 105 }
109 } 106 }
110 } 107 }
111 108
112 if (titleColumnIndex != -1) { 109 if (titleColumnIndex != -1) {
113 this.getDom('radio_' + titleColumnIndex).click(); 110 this.getDom('radio_' + titleColumnIndex).click();
114 } else { 111 } else {
115 this.mainComponent().nextButton().disable(); 112 this.mainComponent().nextButton().disable();
116 } 113 }
117 114
118 }, 115 },
119 116
120 //------------------------------------------------------------------------- 117 //-------------------------------------------------------------------------
121 118
122 'renderData': function(anElement, someData) { 119 'renderData': function(anElement, someData) {
123 var data; 120 var data;
124 var config; 121 var config;
125 var titleColumnIndex; 122 var titleColumnIndex;
126 var i,c; 123 var i,c;
127 124
128 // anElement.update(""); 125 // anElement.update("");
129 MochiKit.DOM.replaceChildNodes(anElement.dom); 126 MochiKit.DOM.replaceChildNodes(anElement.dom);
130 127
131 titleColumnIndex = this.mainComponent().titleColumnIndex() 128 titleColumnIndex = this.mainComponent().titleColumnIndex()
132 129
133 if (this.mainComponent().isFirstRowHeader()) { 130 if (this.mainComponent().isFirstRowHeader()) {
134 data = someData.slice(1); 131 data = someData.slice(1);
135 } else { 132 } else {
136 data = someData; 133 data = someData;
137 } 134 }
138 135
139 config = MochiKit.Base.map(MochiKit.Base.bind(function(aRowData) { 136 config = MochiKit.Base.map(MochiKit.Base.bind(function(aRowData) {
140 var result; 137 var result;
141 var i,c; 138 var i,c;
142 139
143 result = {tag:'tr', children:[]}; 140 result = {tag:'tr', children:[]};
144 c = aRowData.length; 141 c = aRowData.length;
145 for (i=0; i<c; i++) { 142 for (i=0; i<c; i++) {
146 if (this.mainComponent().isColumnSelected(i)) { 143 if (this.mainComponent().isColumnSelected(i)) {
147 var field; 144 var field;
148 145
149 field = aRowData[i]; 146 field = aRowData[i];
150 result.children.push({tag:'td', valign:'top', cls:((titleColumnIndex == i) ? 'titleColumn': ''), html:(MochiKit.Base.isNotEmpty(field) ? field.replace(/\n/g, '<br>') : '&nbsp;')}); 147 result.children.push({tag:'td', valign:'top', cls:((titleColumnIndex == i) ? 'titleColumn': ''), html:(MochiKit.Base.isNotEmpty(field) ? field.replace(/\n/g, '<br>') : '&nbsp;')});
151 } 148 }
152 } 149 }
diff --git a/frontend/beta/js/Clipperz/PM/Components/Import/CSVImportComponent.js b/frontend/beta/js/Clipperz/PM/Components/Import/CSVImportComponent.js
index 707a3d2..c1dd1a9 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Import/CSVImportComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Import/CSVImportComponent.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; } 29if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.Import.CSVImportComponent = function(anElement, args) { 33Clipperz.PM.Components.Import.CSVImportComponent = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 this._steps = this._steps || ['CSV_EDIT', 'CSV_COLUMNS', 'CSV_HEADER', 'CSV_TITLE', 'CSV_NOTES', 'CSV_FIELDS', 'PREVIEW', 'IMPORT']; 36 this._steps = this._steps || ['CSV_EDIT', 'CSV_COLUMNS', 'CSV_HEADER', 'CSV_TITLE', 'CSV_NOTES', 'CSV_FIELDS', 'PREVIEW', 'IMPORT'];
40 37
41 Clipperz.PM.Components.Import.CSVImportComponent.superclass.constructor.call(this, anElement, args); 38 Clipperz.PM.Components.Import.CSVImportComponent.superclass.constructor.call(this, anElement, args);
42 39
43 this._step1Component = null; 40 this._step1Component = null;
44 this._step2Component = null; 41 this._step2Component = null;
45 this._step3Component = null; 42 this._step3Component = null;
46 this._step4Component = null; 43 this._step4Component = null;
47 this._step5Component = null; 44 this._step5Component = null;
48 45
49 this._isFirstRowHeader = false; 46 this._isFirstRowHeader = false;
50 this._titleColumnIndex = -1; 47 this._titleColumnIndex = -1;
51 this._notesColumnIndex = -1; 48 this._notesColumnIndex = -1;
52 this._fieldSettings = {}; 49 this._fieldSettings = {};
53 this._skippedColumns = new Clipperz.Set(); 50 this._skippedColumns = new Clipperz.Set();
54 51
55 this.render(); 52 this.render();
56 53
57 return this; 54 return this;
58} 55}
59 56
60//============================================================================= 57//=============================================================================
61 58
62YAHOO.extendX(Clipperz.PM.Components.Import.CSVImportComponent, Clipperz.PM.Components.Import.GenericImportComponent, { 59YAHOO.extendX(Clipperz.PM.Components.Import.CSVImportComponent, Clipperz.PM.Components.Import.GenericImportComponent, {
63 60
64 'toString': function() { 61 'toString': function() {
65 return "Clipperz.PM.Components.Import.CSVImportComponent component"; 62 return "Clipperz.PM.Components.Import.CSVImportComponent component";
66 }, 63 },
67 64
68 //------------------------------------------------------------------------- 65 //-------------------------------------------------------------------------
69 66
70 'render': function() { 67 'render': function() {
71 this.domHelper().append(this.element(), {tag:'div', cls:'csvImportWizard', children:[ 68 this.domHelper().append(this.element(), {tag:'div', cls:'csvImportWizard', children:[
72 {tag:'h3', htmlString:Clipperz.PM.Strings['CSV_ImportWizard_Title']}, 69 {tag:'h3', htmlString:Clipperz.PM.Strings['CSV_ImportWizard_Title']},
73 {tag:'div', cls:'importSteps', id:this.getId('importSteps')}, 70 {tag:'div', cls:'importSteps', id:this.getId('importSteps')},
74 {tag:'div', cls:'importStepBlocks', children:[ 71 {tag:'div', cls:'importStepBlocks', children:[
75 {tag:'div', cls:'step_0', id:this.getId('step_0'), children:[ 72 {tag:'div', cls:'step_0', id:this.getId('step_0'), children:[
76 {tag:'div', children:[ 73 {tag:'div', children:[
77 {tag:'div', cls:'importOptionsDescription', htmlString:Clipperz.PM.Strings['importOptions_csv_description']}, 74 {tag:'div', cls:'importOptionsDescription', htmlString:Clipperz.PM.Strings['importOptions_csv_description']},
78 {tag:'div', cls:'importOptionsParameters', children:[ 75 {tag:'div', cls:'importOptionsParameters', children:[
79 {tag:'div', cls:'CSVImportOptionsParameters', children:[ 76 {tag:'div', cls:'CSVImportOptionsParameters', children:[
80 {tag:'ul', children:[ 77 {tag:'ul', children:[
81 {tag:'li', children:[ 78 {tag:'li', children:[
82 {tag:'label', 'for':this.getId('CSV_inputOptions_separator'), html:"separator"}, 79 {tag:'label', 'for':this.getId('CSV_inputOptions_separator'), html:"separator"},
83 {tag:'select', name:this.getId('CSV_inputOptions_separator'), id:this.getId('CSV_inputOptions_separator'), children:[ 80 {tag:'select', name:this.getId('CSV_inputOptions_separator'), id:this.getId('CSV_inputOptions_separator'), children:[
84 {tag:'option', name:'comma', value:',', html:"comma (,)", selected:true}, 81 {tag:'option', name:'comma', value:',', html:"comma (,)", selected:true},
85 {tag:'option', name:'tab', value:'\t', html:"tab"} 82 {tag:'option', name:'tab', value:'\t', html:"tab"}
86 ]} 83 ]}
87 ]}, 84 ]},
88 85
89 {tag:'li', children:[ 86 {tag:'li', children:[
90 {tag:'label', 'for':this.getId('CSV_inputOptions_quote'), html:"quote"}, 87 {tag:'label', 'for':this.getId('CSV_inputOptions_quote'), html:"quote"},
91 {tag:'select', name:this.getId('CSV_inputOptions_quote'), id:this.getId('CSV_inputOptions_quote'), children:[ 88 {tag:'select', name:this.getId('CSV_inputOptions_quote'), id:this.getId('CSV_inputOptions_quote'), children:[
92 {tag:'option', name:'doubleQuote', value:'\"', html:"double quote (\")", selected:true}, 89 {tag:'option', name:'doubleQuote', value:'\"', html:"double quote (\")", selected:true},
93 {tag:'option', name:'singleQuote', value:'\'', html:"single quote (\')"} 90 {tag:'option', name:'singleQuote', value:'\'', html:"single quote (\')"}
94 ]} 91 ]}
95 ]}, 92 ]},
96 93
97 {tag:'li', children:[ 94 {tag:'li', children:[
98 {tag:'label', 'for':this.getId('CSV_inputOptions_escape'), html:"escape"}, 95 {tag:'label', 'for':this.getId('CSV_inputOptions_escape'), html:"escape"},
99 {tag:'select', name:this.getId('CSV_inputOptions_escape'), id:this.getId('CSV_inputOptions_escape'), children:[ 96 {tag:'select', name:this.getId('CSV_inputOptions_escape'), id:this.getId('CSV_inputOptions_escape'), children:[
100 {tag:'option', name:'doubleQuote', value:'\"', html:"double quote (\")", selected:true}, 97 {tag:'option', name:'doubleQuote', value:'\"', html:"double quote (\")", selected:true},
101 {tag:'option', name:'slash', value:'\/', html:"slash (\/)"}, 98 {tag:'option', name:'slash', value:'\/', html:"slash (\/)"},
102 {tag:'option', name:'backslash', value:'\\', html:"backslash (\\)"} 99 {tag:'option', name:'backslash', value:'\\', html:"backslash (\\)"}
103 ]} 100 ]}
104 ]} 101 ]}
105 ]} 102 ]}
106 ]} 103 ]}
107 ]}, 104 ]},
108 this.textAreaConfig() 105 this.textAreaConfig()
109 ]} 106 ]}
110 ]}, 107 ]},
111 {tag:'div', cls:'step_1', id:this.getId('step_1'), children:[]}, 108 {tag:'div', cls:'step_1', id:this.getId('step_1'), children:[]},
112 {tag:'div', cls:'step_2', id:this.getId('step_2'), children:[]}, 109 {tag:'div', cls:'step_2', id:this.getId('step_2'), children:[]},
113 {tag:'div', cls:'step_3', id:this.getId('step_3'), children:[]}, 110 {tag:'div', cls:'step_3', id:this.getId('step_3'), children:[]},
114 {tag:'div', cls:'step_4', id:this.getId('step_4'), children:[]}, 111 {tag:'div', cls:'step_4', id:this.getId('step_4'), children:[]},
115 {tag:'div', cls:'step_5', id:this.getId('step_5'), children:[]}, 112 {tag:'div', cls:'step_5', id:this.getId('step_5'), children:[]},
116 {tag:'div', cls:'step_6', id:this.getId('step_6'), children:[ 113 {tag:'div', cls:'step_6', id:this.getId('step_6'), children:[
117 {tag:'div', children:[ 114 {tag:'div', children:[
118 {tag:'div', id:this.getId('previewDiv'), html:"preview"} 115 {tag:'div', id:this.getId('previewDiv'), html:"preview"}
119 ]} 116 ]}
120 ]}, 117 ]},
121 {tag:'div', cls:'step_7', id:this.getId('step_7'), children:[ 118 {tag:'div', cls:'step_7', id:this.getId('step_7'), children:[
122 {tag:'div', children:[ 119 {tag:'div', children:[
123 {tag:'h4', html:"done"} 120 {tag:'h4', html:"done"}
124 ]} 121 ]}
125 ]} 122 ]}
126 ]}, 123 ]},
127 {tag:'div', cls:'importOptionsButtons', children:[ 124 {tag:'div', cls:'importOptionsButtons', children:[
128 {tag:'table', children:[ 125 {tag:'table', children:[
129 {tag:'tbody', children:[ 126 {tag:'tbody', children:[
130 {tag:'tr', children:[ 127 {tag:'tr', children:[
131 {tag:'td', html:'&nbsp;'}, 128 {tag:'td', html:'&nbsp;'},
132 {tag:'td', children:[ 129 {tag:'td', children:[
133 {tag:'div', id:this.getId('backActionButton')} 130 {tag:'div', id:this.getId('backActionButton')}
134 ]}, 131 ]},
135 {tag:'td', html:'&nbsp;'}, 132 {tag:'td', html:'&nbsp;'},
136 {tag:'td', children:[ 133 {tag:'td', children:[
137 {tag:'div', id:this.getId('nextActionButton')} 134 {tag:'div', id:this.getId('nextActionButton')}
138 ]}, 135 ]},
139 {tag:'td', html:'&nbsp;'} 136 {tag:'td', html:'&nbsp;'}
140 ]} 137 ]}
141 ]} 138 ]}
142 ]} 139 ]}
143 ]} 140 ]}
144 ]}); 141 ]});
145 142
146 this.setBackButton(new YAHOO.ext.Button(this.getDom('backActionButton'), {text:"back", handler:this.backAction, scope:this})); 143 this.setBackButton(new YAHOO.ext.Button(this.getDom('backActionButton'), {text:"back", handler:this.backAction, scope:this}));
147 this.setNextButton(new YAHOO.ext.Button(this.getDom('nextActionButton'), {text:"next", handler:this.nextAction, scope:this})); 144 this.setNextButton(new YAHOO.ext.Button(this.getDom('nextActionButton'), {text:"next", handler:this.nextAction, scope:this}));
148 145
149 this.updateSteps(); 146 this.updateSteps();
150 147
151 this.getElement('step_0').setVisibilityMode(YAHOO.ext.Element.DISPLAY).show() 148 this.getElement('step_0').setVisibilityMode(YAHOO.ext.Element.DISPLAY).show()
152 this.getElement('step_1').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide(); 149 this.getElement('step_1').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
diff --git a/frontend/beta/js/Clipperz/PM/Components/Import/ClipperzImportComponent.js b/frontend/beta/js/Clipperz/PM/Components/Import/ClipperzImportComponent.js
index 50dcb93..c3d2fac 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Import/ClipperzImportComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Import/ClipperzImportComponent.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; } 29if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.Import.ClipperzImportComponent = function(anElement, args) { 33Clipperz.PM.Components.Import.ClipperzImportComponent = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 Clipperz.PM.Components.Import.ClipperzImportComponent.superclass.constructor.call(this, anElement, args); 36 Clipperz.PM.Components.Import.ClipperzImportComponent.superclass.constructor.call(this, anElement, args);
40 37
41 this.render(); 38 this.render();
42 39
43 return this; 40 return this;
44} 41}
45 42
46//============================================================================= 43//=============================================================================
47 44
48YAHOO.extendX(Clipperz.PM.Components.Import.ClipperzImportComponent, Clipperz.PM.Components.Import.GenericImportComponent, { 45YAHOO.extendX(Clipperz.PM.Components.Import.ClipperzImportComponent, Clipperz.PM.Components.Import.GenericImportComponent, {
49 46
50 'toString': function() { 47 'toString': function() {
51 return "Clipperz.PM.Components.Import.ClipperzImportComponent component"; 48 return "Clipperz.PM.Components.Import.ClipperzImportComponent component";
52 }, 49 },
53 50
54 //------------------------------------------------------------------------- 51 //-------------------------------------------------------------------------
55 52
56 'render': function() { 53 'render': function() {
57//MochiKit.Logging.logDebug(">>> Import.ClipperzImportComponent.render"); 54//MochiKit.Logging.logDebug(">>> Import.ClipperzImportComponent.render");
58 this.domHelper().append(this.element(), {tag:'div', cls:'clipperzImportWizard', children:[ 55 this.domHelper().append(this.element(), {tag:'div', cls:'clipperzImportWizard', children:[
59 {tag:'h3', htmlString:Clipperz.PM.Strings['Clipperz_ImportWizard_Title']}, 56 {tag:'h3', htmlString:Clipperz.PM.Strings['Clipperz_ImportWizard_Title']},
60 {tag:'div', cls:'importSteps', id:this.getId('importSteps')}, 57 {tag:'div', cls:'importSteps', id:this.getId('importSteps')},
61 {tag:'div', cls:'importStepBlocks', children:[ 58 {tag:'div', cls:'importStepBlocks', children:[
62 {tag:'div', cls:'step_0', id:this.getId('step_0'), children:[ 59 {tag:'div', cls:'step_0', id:this.getId('step_0'), children:[
63 {tag:'div', children:[ 60 {tag:'div', children:[
64 {tag:'div', cls:'importOptionsDescription', htmlString:Clipperz.PM.Strings['importOptions_clipperz_description']}, 61 {tag:'div', cls:'importOptionsDescription', htmlString:Clipperz.PM.Strings['importOptions_clipperz_description']},
65 {tag:'div', cls:'importOptionsParameters', children:[]}, 62 {tag:'div', cls:'importOptionsParameters', children:[]},
66 this.textAreaConfig() 63 this.textAreaConfig()
67 ]} 64 ]}
68 ]}, 65 ]},
69 {tag:'div', cls:'step_1', id:this.getId('step_1'), children:[ 66 {tag:'div', cls:'step_1', id:this.getId('step_1'), children:[
70 {tag:'div', children:[ 67 {tag:'div', children:[
71 {tag:'div', id:this.getId('previewDiv'), html:"preview"} 68 {tag:'div', id:this.getId('previewDiv'), html:"preview"}
72 ]} 69 ]}
73 ]}, 70 ]},
74 {tag:'div', cls:'step_2', id:this.getId('step_2'), children:[ 71 {tag:'div', cls:'step_2', id:this.getId('step_2'), children:[
75 {tag:'div', children:[ 72 {tag:'div', children:[
76 {tag:'h4', html:"done"} 73 {tag:'h4', html:"done"}
77 ]} 74 ]}
78 ]} 75 ]}
79 ]}, 76 ]},
80 {tag:'div', cls:'importOptionsButtons', children:[ 77 {tag:'div', cls:'importOptionsButtons', children:[
81 {tag:'table', children:[ 78 {tag:'table', children:[
82 {tag:'tbody', children:[ 79 {tag:'tbody', children:[
83 {tag:'tr', children:[ 80 {tag:'tr', children:[
84 {tag:'td', html:'&nbsp;'}, 81 {tag:'td', html:'&nbsp;'},
85 {tag:'td', children:[ 82 {tag:'td', children:[
86 {tag:'div', id:this.getId('backActionButton')} 83 {tag:'div', id:this.getId('backActionButton')}
87 ]}, 84 ]},
88 {tag:'td', html:'&nbsp;'}, 85 {tag:'td', html:'&nbsp;'},
89 {tag:'td', children:[ 86 {tag:'td', children:[
90 {tag:'div', id:this.getId('nextActionButton')} 87 {tag:'div', id:this.getId('nextActionButton')}
91 ]}, 88 ]},
92 {tag:'td', html:'&nbsp;'} 89 {tag:'td', html:'&nbsp;'}
93 ]} 90 ]}
94 ]} 91 ]}
95 ]} 92 ]}
96 ]} 93 ]}
97 ]}); 94 ]});
98 95
99 this.updateSteps(); 96 this.updateSteps();
100 97
101 this.setBackButton(new YAHOO.ext.Button(this.getDom('backActionButton'), {text:"back", handler:this.backAction, scope:this})); 98 this.setBackButton(new YAHOO.ext.Button(this.getDom('backActionButton'), {text:"back", handler:this.backAction, scope:this}));
102 this.setNextButton(new YAHOO.ext.Button(this.getDom('nextActionButton'), {text:"next", handler:this.nextAction, scope:this})); 99 this.setNextButton(new YAHOO.ext.Button(this.getDom('nextActionButton'), {text:"next", handler:this.nextAction, scope:this}));
103 100
104 this.getElement('step_0').setVisibilityMode(YAHOO.ext.Element.DISPLAY).show() 101 this.getElement('step_0').setVisibilityMode(YAHOO.ext.Element.DISPLAY).show()
105 this.getElement('step_1').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide(); 102 this.getElement('step_1').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
106 this.getElement('step_2').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide(); 103 this.getElement('step_2').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
107//MochiKit.Logging.logDebug("<<< Import.ClipperzImportComponent.render"); 104//MochiKit.Logging.logDebug("<<< Import.ClipperzImportComponent.render");
108 }, 105 },
109 106
110 //------------------------------------------------------------------------- 107 //-------------------------------------------------------------------------
111 108
112 'nextAction': function() { 109 'nextAction': function() {
113 switch (this.currentStep()) { 110 switch (this.currentStep()) {
114 case 0: //-> 1 111 case 0: //-> 1
115 this.previewValues(); 112 this.previewValues();
116 break; 113 break;
117 case 1: //-> 2 114 case 1: //-> 2
118 this.importValues(); 115 this.importValues();
119 break; 116 break;
120 } 117 }
121 }, 118 },
122 119
123 //------------------------------------------------------------------------- 120 //-------------------------------------------------------------------------
124 121
125 'deferredPreviewValues': function() { 122 'deferredPreviewValues': function() {
126 var deferredResult; 123 var deferredResult;
127 124
128 deferredResult = new MochiKit.Async.Deferred(); 125 deferredResult = new MochiKit.Async.Deferred();
129 deferredResult.addCallback(MochiKit.Base.bind(function(res) { 126 deferredResult.addCallback(MochiKit.Base.bind(function(res) {
130 this.startProcessing(); 127 this.startProcessing();
131 128
132 return res; 129 return res;
133 }, this)); 130 }, this));
134 deferredResult.addCallback(MochiKit.Base.method(this, 'processClipperzValues')); 131 deferredResult.addCallback(MochiKit.Base.method(this, 'processClipperzValues'));
135 deferredResult.addCallback(MochiKit.Base.method(this, 'setProcessedValues')); 132 deferredResult.addCallback(MochiKit.Base.method(this, 'setProcessedValues'));
136 deferredResult.addCallback(MochiKit.Base.method(this, 'previewRecordValues')); 133 deferredResult.addCallback(MochiKit.Base.method(this, 'previewRecordValues'));
137 deferredResult.addCallback(MochiKit.Base.bind(function(res) { 134 deferredResult.addCallback(MochiKit.Base.bind(function(res) {
138 this.processingDone(); 135 this.processingDone();
139 this.getElement('step_0').hide(); 136 this.getElement('step_0').hide();
140 this.getElement('step_1').show(); 137 this.getElement('step_1').show();
141 this.backButton().enable(); 138 this.backButton().enable();
142 139
143 return res; 140 return res;
144 }, this)); 141 }, this));
145 // deferredResult.addErrback(MochiKit.Base.bind(function() { 142 // deferredResult.addErrback(MochiKit.Base.bind(function() {
146 // this.processingAborted(); 143 // this.processingAborted();
147 // }, this)) 144 // }, this))
148 deferredResult.callback(this.textAreaContent()); 145 deferredResult.callback(this.textAreaContent());
149 146
150 return deferredResult; 147 return deferredResult;
151 }, 148 },
152 149
diff --git a/frontend/beta/js/Clipperz/PM/Components/Import/ExcelImportComponent.js b/frontend/beta/js/Clipperz/PM/Components/Import/ExcelImportComponent.js
index ecdf509..ad0d985 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Import/ExcelImportComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Import/ExcelImportComponent.js
@@ -1,134 +1,131 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; } 29if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.Import.ExcelImportComponent = function(anElement, args) { 33Clipperz.PM.Components.Import.ExcelImportComponent = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 this._steps = ['EXCEL_EDIT', 'CSV_COLUMNS', 'CSV_HEADER', 'CSV_TITLE', 'CSV_NOTES', 'CSV_FIELDS', 'PREVIEW', 'IMPORT']; 36 this._steps = ['EXCEL_EDIT', 'CSV_COLUMNS', 'CSV_HEADER', 'CSV_TITLE', 'CSV_NOTES', 'CSV_FIELDS', 'PREVIEW', 'IMPORT'];
40 37
41 Clipperz.PM.Components.Import.ExcelImportComponent.superclass.constructor.call(this, anElement, args); 38 Clipperz.PM.Components.Import.ExcelImportComponent.superclass.constructor.call(this, anElement, args);
42 39
43 return this; 40 return this;
44} 41}
45 42
46//============================================================================= 43//=============================================================================
47 44
48YAHOO.extendX(Clipperz.PM.Components.Import.ExcelImportComponent, Clipperz.PM.Components.Import.CSVImportComponent, { 45YAHOO.extendX(Clipperz.PM.Components.Import.ExcelImportComponent, Clipperz.PM.Components.Import.CSVImportComponent, {
49 46
50 'toString': function() { 47 'toString': function() {
51 return "Clipperz.PM.Components.Import.ExcelImportComponent component"; 48 return "Clipperz.PM.Components.Import.ExcelImportComponent component";
52 }, 49 },
53 50
54 //------------------------------------------------------------------------- 51 //-------------------------------------------------------------------------
55 52
56 'render': function() { 53 'render': function() {
57//MochiKit.Logging.logDebug(">>> Import.ExcelImportComponent.render"); 54//MochiKit.Logging.logDebug(">>> Import.ExcelImportComponent.render");
58 this.domHelper().append(this.element(), {tag:'div', cls:'excelImportWizard', children:[ 55 this.domHelper().append(this.element(), {tag:'div', cls:'excelImportWizard', children:[
59 {tag:'h3', htmlString:Clipperz.PM.Strings['Excel_ImportWizard_Title']}, 56 {tag:'h3', htmlString:Clipperz.PM.Strings['Excel_ImportWizard_Title']},
60 {tag:'div', cls:'importSteps', id:this.getId('importSteps')}, 57 {tag:'div', cls:'importSteps', id:this.getId('importSteps')},
61 {tag:'div', cls:'importStepBlocks', children:[ 58 {tag:'div', cls:'importStepBlocks', children:[
62 {tag:'div', cls:'step_0', id:this.getId('step_0'), children:[ 59 {tag:'div', cls:'step_0', id:this.getId('step_0'), children:[
63 {tag:'div', children:[ 60 {tag:'div', children:[
64 {tag:'div', cls:'importOptionsDescription', htmlString:Clipperz.PM.Strings['importOptions_excel_description']}, 61 {tag:'div', cls:'importOptionsDescription', htmlString:Clipperz.PM.Strings['importOptions_excel_description']},
65 {tag:'div', cls:'importOptionsParameters', children:[]}, 62 {tag:'div', cls:'importOptionsParameters', children:[]},
66 this.textAreaConfig() 63 this.textAreaConfig()
67 ]} 64 ]}
68 ]}, 65 ]},
69 {tag:'div', cls:'step_1', id:this.getId('step_1'), children:[]}, 66 {tag:'div', cls:'step_1', id:this.getId('step_1'), children:[]},
70 {tag:'div', cls:'step_2', id:this.getId('step_2'), children:[]}, 67 {tag:'div', cls:'step_2', id:this.getId('step_2'), children:[]},
71 {tag:'div', cls:'step_3', id:this.getId('step_3'), children:[]}, 68 {tag:'div', cls:'step_3', id:this.getId('step_3'), children:[]},
72 {tag:'div', cls:'step_4', id:this.getId('step_4'), children:[]}, 69 {tag:'div', cls:'step_4', id:this.getId('step_4'), children:[]},
73 {tag:'div', cls:'step_5', id:this.getId('step_5'), children:[]}, 70 {tag:'div', cls:'step_5', id:this.getId('step_5'), children:[]},
74 {tag:'div', cls:'step_6', id:this.getId('step_6'), children:[ 71 {tag:'div', cls:'step_6', id:this.getId('step_6'), children:[
75 {tag:'div', children:[ 72 {tag:'div', children:[
76 {tag:'div', id:this.getId('previewDiv'), html:"preview"} 73 {tag:'div', id:this.getId('previewDiv'), html:"preview"}
77 ]} 74 ]}
78 ]}, 75 ]},
79 {tag:'div', cls:'step_7', id:this.getId('step_7'), children:[ 76 {tag:'div', cls:'step_7', id:this.getId('step_7'), children:[
80 {tag:'div', children:[ 77 {tag:'div', children:[
81 {tag:'h4', html:"done"} 78 {tag:'h4', html:"done"}
82 ]} 79 ]}
83 ]} 80 ]}
84 ]}, 81 ]},
85 {tag:'div', cls:'importOptionsButtons', children:[ 82 {tag:'div', cls:'importOptionsButtons', children:[
86 {tag:'table', children:[ 83 {tag:'table', children:[
87 {tag:'tbody', children:[ 84 {tag:'tbody', children:[
88 {tag:'tr', children:[ 85 {tag:'tr', children:[
89 {tag:'td', html:'&nbsp;'}, 86 {tag:'td', html:'&nbsp;'},
90 {tag:'td', children:[ 87 {tag:'td', children:[
91 {tag:'div', id:this.getId('backActionButton')} 88 {tag:'div', id:this.getId('backActionButton')}
92 ]}, 89 ]},
93 {tag:'td', html:'&nbsp;'}, 90 {tag:'td', html:'&nbsp;'},
94 {tag:'td', children:[ 91 {tag:'td', children:[
95 {tag:'div', id:this.getId('nextActionButton')} 92 {tag:'div', id:this.getId('nextActionButton')}
96 ]}, 93 ]},
97 {tag:'td', html:'&nbsp;'} 94 {tag:'td', html:'&nbsp;'}
98 ]} 95 ]}
99 ]} 96 ]}
100 ]} 97 ]}
101 ]} 98 ]}
102 ]}); 99 ]});
103 100
104 this.updateSteps(); 101 this.updateSteps();
105 102
106 this.setBackButton(new YAHOO.ext.Button(this.getDom('backActionButton'), {text:"back", handler:this.backAction, scope:this})); 103 this.setBackButton(new YAHOO.ext.Button(this.getDom('backActionButton'), {text:"back", handler:this.backAction, scope:this}));
107 this.setNextButton(new YAHOO.ext.Button(this.getDom('nextActionButton'), {text:"next", handler:this.nextAction, scope:this})); 104 this.setNextButton(new YAHOO.ext.Button(this.getDom('nextActionButton'), {text:"next", handler:this.nextAction, scope:this}));
108 105
109 this.getElement('step_0').setVisibilityMode(YAHOO.ext.Element.DISPLAY).show() 106 this.getElement('step_0').setVisibilityMode(YAHOO.ext.Element.DISPLAY).show()
110 this.getElement('step_1').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide(); 107 this.getElement('step_1').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
111 this.getElement('step_2').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide(); 108 this.getElement('step_2').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
112 this.getElement('step_3').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide(); 109 this.getElement('step_3').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
113 this.getElement('step_4').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide(); 110 this.getElement('step_4').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
114 this.getElement('step_5').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide(); 111 this.getElement('step_5').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
115 this.getElement('step_6').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide(); 112 this.getElement('step_6').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
116 this.getElement('step_7').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide(); 113 this.getElement('step_7').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
117//MochiKit.Logging.logDebug("<<< Import.ExcelImportComponent.render"); 114//MochiKit.Logging.logDebug("<<< Import.ExcelImportComponent.render");
118 }, 115 },
119 116
120 //------------------------------------------------------------------------- 117 //-------------------------------------------------------------------------
121 118
122 'csvProcessor': function() { 119 'csvProcessor': function() {
123 return new Clipperz.CSVProcessor({ 120 return new Clipperz.CSVProcessor({
124 // quoteChar: this.getDom('CSV_inputOptions_quote').value, 121 // quoteChar: this.getDom('CSV_inputOptions_quote').value,
125 // escapeChar: this.getDom('CSV_inputOptions_escape').value, 122 // escapeChar: this.getDom('CSV_inputOptions_escape').value,
126 separatorChar:'\t', 123 separatorChar:'\t',
127 binary:true 124 binary:true
128 }); 125 });
129 }, 126 },
130 127
131 //------------------------------------------------------------------------- 128 //-------------------------------------------------------------------------
132 __syntaxFix__: "syntax fix" 129 __syntaxFix__: "syntax fix"
133}); 130});
134 131
diff --git a/frontend/beta/js/Clipperz/PM/Components/Import/GenericImportComponent.js b/frontend/beta/js/Clipperz/PM/Components/Import/GenericImportComponent.js
index 4f6b1e4..a55455a 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Import/GenericImportComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Import/GenericImportComponent.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; } 29if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.Import.GenericImportComponent = function(anElement, args) { 33Clipperz.PM.Components.Import.GenericImportComponent = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 this._steps = this._steps || ['EDIT', 'PREVIEW', 'IMPORT']; 36 this._steps = this._steps || ['EDIT', 'PREVIEW', 'IMPORT'];
40 37
41 Clipperz.PM.Components.Import.GenericImportComponent.superclass.constructor.call(this, anElement, args); 38 Clipperz.PM.Components.Import.GenericImportComponent.superclass.constructor.call(this, anElement, args);
42 39
43 this._user = args['user']; 40 this._user = args['user'];
44 41
45 this._currentStep = 0; 42 this._currentStep = 0;
46 this._currentStatus = 'IDLE'; //'PROCESSING' 43 this._currentStatus = 'IDLE'; //'PROCESSING'
47 44
48 this._parsedValues = null; 45 this._parsedValues = null;
49 this._processedValues = null; 46 this._processedValues = null;
50 47
51 this._backButton = null; 48 this._backButton = null;
52 this._nextButton = null; 49 this._nextButton = null;
53 50
54 Clipperz.NotificationCenter.register(null, 'importProcessorProgressUpdate', this, 'updateProgressDialogStatus'); 51 Clipperz.NotificationCenter.register(null, 'importProcessorProgressUpdate', this, 'updateProgressDialogStatus');
55 52
56 return this; 53 return this;
57} 54}
58 55
59//============================================================================= 56//=============================================================================
60 57
61YAHOO.extendX(Clipperz.PM.Components.Import.GenericImportComponent, Clipperz.PM.Components.BaseComponent, { 58YAHOO.extendX(Clipperz.PM.Components.Import.GenericImportComponent, Clipperz.PM.Components.BaseComponent, {
62 59
63 'toString': function() { 60 'toString': function() {
64 return "Clipperz.PM.Components.Import.GenericImportComponent component"; 61 return "Clipperz.PM.Components.Import.GenericImportComponent component";
65 }, 62 },
66 63
67 //------------------------------------------------------------------------- 64 //-------------------------------------------------------------------------
68 65
69 'user': function() { 66 'user': function() {
70 return this._user; 67 return this._user;
71 }, 68 },
72 69
73 //------------------------------------------------------------------------- 70 //-------------------------------------------------------------------------
74 71
75 'textAreaConfig': function() { 72 'textAreaConfig': function() {
76 return {tag:'textarea', name:this.getId('importTextArea'), cls:'importTextArea', id:this.getId('importTextArea'), cols:60, rows:15, html:""}; 73 return {tag:'textarea', name:this.getId('importTextArea'), cls:'importTextArea', id:this.getId('importTextArea'), cols:60, rows:15, html:""};
77 }, 74 },
78 75
79 'textAreaContent': function() { 76 'textAreaContent': function() {
80 return this.getDom('importTextArea').value 77 return this.getDom('importTextArea').value
81 }, 78 },
82 79
83 //------------------------------------------------------------------------- 80 //-------------------------------------------------------------------------
84 81
85 'steps': function() { 82 'steps': function() {
86 return this._steps; 83 return this._steps;
87 }, 84 },
88 85
89 'currentStep': function() { 86 'currentStep': function() {
90 return this._currentStep; 87 return this._currentStep;
91 }, 88 },
92 89
93 'setCurrentStep': function(aValue) { 90 'setCurrentStep': function(aValue) {
94 this._currentStep = aValue; 91 this._currentStep = aValue;
95 this.updateSteps(); 92 this.updateSteps();
96 }, 93 },
97 94
98 //------------------------------------------------------------------------- 95 //-------------------------------------------------------------------------
99 96
100 'currentStatus': function() { 97 'currentStatus': function() {
101 return this._currentStatus; 98 return this._currentStatus;
102 }, 99 },
103 100
104 'startProcessing': function() { 101 'startProcessing': function() {
105 this._currentStatus = 'PROCESSING'; 102 this._currentStatus = 'PROCESSING';
106 this.updateSteps(); 103 this.updateSteps();
107 }, 104 },
108 105
109 'processingDone': function() { 106 'processingDone': function() {
110 this._currentStatus = 'IDLE'; 107 this._currentStatus = 'IDLE';
111 this.setCurrentStep(this.currentStep() + 1); 108 this.setCurrentStep(this.currentStep() + 1);
112 }, 109 },
113 110
114 'processingAborted': function() { 111 'processingAborted': function() {
115 this._currentStatus = 'IDLE'; 112 this._currentStatus = 'IDLE';
116 this.updateSteps(); 113 this.updateSteps();
117 }, 114 },
118 115
119 //------------------------------------------------------------------------- 116 //-------------------------------------------------------------------------
120 117
121 'stepsConfig': function() { 118 'stepsConfig': function() {
122 var result; 119 var result;
123 var i,c; 120 var i,c;
124 121
125 result = []; 122 result = [];
126 c = this.steps().length; 123 c = this.steps().length;
127 for (i=0; i<c; i++) { 124 for (i=0; i<c; i++) {
128 var cls; 125 var cls;
129 126
130 if (this.currentStep() == i) { 127 if (this.currentStep() == i) {
131 if (this.currentStatus() == 'IDLE') { 128 if (this.currentStatus() == 'IDLE') {
132 cls = 'current'; 129 cls = 'current';
133 } else { 130 } else {
134 cls = 'currentProcessing'; 131 cls = 'currentProcessing';
135 } 132 }
136 } else { 133 } else {
137 cls = ""; 134 cls = "";
138 } 135 }
139 136
140 result.push({tag:'td', cls:cls, children:[ 137 result.push({tag:'td', cls:cls, children:[
141 {tag:'div', children:[{tag:'span', htmlString:Clipperz.PM.Strings['ImportWizard'][this.steps()[i]]}]} 138 {tag:'div', children:[{tag:'span', htmlString:Clipperz.PM.Strings['ImportWizard'][this.steps()[i]]}]}
142 ]}) 139 ]})
143 if (i < (c-1)) { 140 if (i < (c-1)) {
144 if ((this.currentStep() == i) && (this.currentStatus() == 'PROCESSING')) { 141 if ((this.currentStep() == i) && (this.currentStatus() == 'PROCESSING')) {
145 cls = 'stepSeparatorProcessing'; 142 cls = 'stepSeparatorProcessing';
146 } else { 143 } else {
147 cls = 'stepSeparator'; 144 cls = 'stepSeparator';
148 } 145 }
149 146
150 result.push({tag:'td', cls:cls, children:[ 147 result.push({tag:'td', cls:cls, children:[
151 {tag:'div', children:[{tag:'span', html:">"}]} 148 {tag:'div', children:[{tag:'span', html:">"}]}
152 ]}); 149 ]});
diff --git a/frontend/beta/js/Clipperz/PM/Components/Import/KeePassImportComponent.js b/frontend/beta/js/Clipperz/PM/Components/Import/KeePassImportComponent.js
index 0657520..5f4fe33 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Import/KeePassImportComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Import/KeePassImportComponent.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; } 29if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.Import.KeePassImportComponent = function(anElement, args) { 33Clipperz.PM.Components.Import.KeePassImportComponent = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 Clipperz.PM.Components.Import.KeePassImportComponent.superclass.constructor.call(this, anElement, args); 36 Clipperz.PM.Components.Import.KeePassImportComponent.superclass.constructor.call(this, anElement, args);
40 37
41 this._steps = ['EDIT', 'KEEPASS_SETTINGS', 'PREVIEW', 'IMPORT']; 38 this._steps = ['EDIT', 'KEEPASS_SETTINGS', 'PREVIEW', 'IMPORT'];
42 this._definedFields = ['Group', 'Group Tree', 'UserName', 'URL', 'Password', 'Notes', 'UUID', 'Icon', 'Creation Time', 'Last Access', 'Last Modification', 'Expires', 'Attachment Description', 'Attachment']; 39 this._definedFields = ['Group', 'Group Tree', 'UserName', 'URL', 'Password', 'Notes', 'UUID', 'Icon', 'Creation Time', 'Last Access', 'Last Modification', 'Expires', 'Attachment Description', 'Attachment'];
43 40
44 this.render(); 41 this.render();
45 42
46 return this; 43 return this;
47} 44}
48 45
49//============================================================================= 46//=============================================================================
50 47
51YAHOO.extendX(Clipperz.PM.Components.Import.KeePassImportComponent, Clipperz.PM.Components.Import.GenericImportComponent, { 48YAHOO.extendX(Clipperz.PM.Components.Import.KeePassImportComponent, Clipperz.PM.Components.Import.GenericImportComponent, {
52 49
53 'toString': function() { 50 'toString': function() {
54 return "Clipperz.PM.Components.Import.KeePassImportComponent component"; 51 return "Clipperz.PM.Components.Import.KeePassImportComponent component";
55 }, 52 },
56 53
57 //------------------------------------------------------------------------- 54 //-------------------------------------------------------------------------
58 55
59 'render': function() { 56 'render': function() {
60//MochiKit.Logging.logDebug(">>> Import.KeePassImportComponent.render"); 57//MochiKit.Logging.logDebug(">>> Import.KeePassImportComponent.render");
61 this.domHelper().append(this.element(), {tag:'div', cls:'keePassImportWizard', children:[ 58 this.domHelper().append(this.element(), {tag:'div', cls:'keePassImportWizard', children:[
62 {tag:'h3', htmlString:Clipperz.PM.Strings['KeePass_ImportWizard_Title']}, 59 {tag:'h3', htmlString:Clipperz.PM.Strings['KeePass_ImportWizard_Title']},
63 {tag:'div', cls:'importSteps', id:this.getId('importSteps')}, 60 {tag:'div', cls:'importSteps', id:this.getId('importSteps')},
64 {tag:'div', cls:'importStepBlocks', children:[ 61 {tag:'div', cls:'importStepBlocks', children:[
65 {tag:'div', cls:'step_0', id:this.getId('step_0'), children:[ 62 {tag:'div', cls:'step_0', id:this.getId('step_0'), children:[
66 {tag:'div', children:[ 63 {tag:'div', children:[
67 {tag:'div', cls:'importOptionsDescription', htmlString:Clipperz.PM.Strings['importOptions_keePass_description']}, 64 {tag:'div', cls:'importOptionsDescription', htmlString:Clipperz.PM.Strings['importOptions_keePass_description']},
68 {tag:'div', cls:'importOptionsParameters', children:[]}, 65 {tag:'div', cls:'importOptionsParameters', children:[]},
69 this.textAreaConfig() 66 this.textAreaConfig()
70 ]} 67 ]}
71 ]}, 68 ]},
72 {tag:'div', cls:'step_1', id:this.getId('step_1'), children:[ 69 {tag:'div', cls:'step_1', id:this.getId('step_1'), children:[
73 {tag:'div', children:[ 70 {tag:'div', children:[
74 {tag:'div', id:this.getId('settingsDiv'), children:[ 71 {tag:'div', id:this.getId('settingsDiv'), children:[
75 {tag:'table', id:'KeePassSettings', children:[ 72 {tag:'table', id:'KeePassSettings', children:[
76 {tag:'tbody', children:[ 73 {tag:'tbody', children:[
77 {tag:'tr', children:[ 74 {tag:'tr', children:[
78 {tag:'td', width:'50%', valign:'top', children:[ 75 {tag:'td', width:'50%', valign:'top', children:[
79 {tag:'table', children:[ 76 {tag:'table', children:[
80 {tag:'tbody', children:[ 77 {tag:'tbody', children:[
81 {tag:'tr', children:[ 78 {tag:'tr', children:[
82 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('Group_checkbox'), name:'Group'/*, checked:true*/}]}, 79 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('Group_checkbox'), name:'Group'/*, checked:true*/}]},
83 {tag:'td', width:'150', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('Group_label'), html:"Group"}]} 80 {tag:'td', width:'150', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('Group_label'), html:"Group"}]}
84 ]}, 81 ]},
85 {tag:'tr', children:[ 82 {tag:'tr', children:[
86 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('Group Tree_checkbox'), name:'Group Tree'/*, checked:true*/}]}, 83 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('Group Tree_checkbox'), name:'Group Tree'/*, checked:true*/}]},
87 {tag:'td', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('Group Tree_label'), html:"Group Tree"}]} 84 {tag:'td', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('Group Tree_label'), html:"Group Tree"}]}
88 ]}, 85 ]},
89 {tag:'tr', children:[ 86 {tag:'tr', children:[
90 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('UserName_checkbox'), name:'UserName', checked:true}]}, 87 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('UserName_checkbox'), name:'UserName', checked:true}]},
91 {tag:'td', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('UserName_label'), html:"UserName"}]} 88 {tag:'td', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('UserName_label'), html:"UserName"}]}
92 ]}, 89 ]},
93 {tag:'tr', children:[ 90 {tag:'tr', children:[
94 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('URL_checkbox'), name:'URL', checked:true}]}, 91 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('URL_checkbox'), name:'URL', checked:true}]},
95 {tag:'td', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('URL_label'), html:"URL"}]} 92 {tag:'td', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('URL_label'), html:"URL"}]}
96 ]}, 93 ]},
97 {tag:'tr', children:[ 94 {tag:'tr', children:[
98 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('Password_checkbox'), name:'Password', checked:true}]}, 95 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('Password_checkbox'), name:'Password', checked:true}]},
99 {tag:'td', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('Password_label'), html:"Password"}]} 96 {tag:'td', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('Password_label'), html:"Password"}]}
100 ]}, 97 ]},
101 {tag:'tr', children:[ 98 {tag:'tr', children:[
102 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('Notes_checkbox'), name:'Notes', checked:true}]}, 99 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('Notes_checkbox'), name:'Notes', checked:true}]},
103 {tag:'td', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('Notes_label'), html:"Notes"}]} 100 {tag:'td', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('Notes_label'), html:"Notes"}]}
104 ]}, 101 ]},
105 {tag:'tr', children:[ 102 {tag:'tr', children:[
106 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('UUID_checkbox'), name:'UUID'/*, checked:true*/}]}, 103 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('UUID_checkbox'), name:'UUID'/*, checked:true*/}]},
107 {tag:'td', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('UUID_label'), html:"UUID"}]} 104 {tag:'td', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('UUID_label'), html:"UUID"}]}
108 ]} 105 ]}
109 ]} 106 ]}
110 ]} 107 ]}
111 ]}, 108 ]},
112 {tag:'td', width:'50%', valign:'top', children:[ 109 {tag:'td', width:'50%', valign:'top', children:[
113 {tag:'table', children:[ 110 {tag:'table', children:[
114 {tag:'tbody', children:[ 111 {tag:'tbody', children:[
115 {tag:'tr', children:[ 112 {tag:'tr', children:[
116 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('Icon_checkbox'), name:'Icon'/*, checked:true*/}]}, 113 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('Icon_checkbox'), name:'Icon'/*, checked:true*/}]},
117 {tag:'td', width:'150', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('Icon_label'), html:"Icon"}]} 114 {tag:'td', width:'150', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('Icon_label'), html:"Icon"}]}
118 ]}, 115 ]},
119 {tag:'tr', children:[ 116 {tag:'tr', children:[
120 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('Creation Time_checkbox'), name:'Creation Time'/*, checked:true*/}]}, 117 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('Creation Time_checkbox'), name:'Creation Time'/*, checked:true*/}]},
121 {tag:'td', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('Creation Time_label'), html:"Creation Time"}]} 118 {tag:'td', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('Creation Time_label'), html:"Creation Time"}]}
122 ]}, 119 ]},
123 {tag:'tr', children:[ 120 {tag:'tr', children:[
124 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('Last Access_checkbox'), name:'Last Access'/*, checked:true*/}]}, 121 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('Last Access_checkbox'), name:'Last Access'/*, checked:true*/}]},
125 {tag:'td', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('Last Access_label'), html:"Last Access"}]} 122 {tag:'td', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('Last Access_label'), html:"Last Access"}]}
126 ]}, 123 ]},
127 {tag:'tr', children:[ 124 {tag:'tr', children:[
128 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('Last Modification_checkbox'), name:'Last Modification'/*, checked:true*/}]}, 125 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('Last Modification_checkbox'), name:'Last Modification'/*, checked:true*/}]},
129 {tag:'td', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('Last Modification_label'), html:"Last Modification"}]} 126 {tag:'td', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('Last Modification_label'), html:"Last Modification"}]}
130 ]}, 127 ]},
131 {tag:'tr', children:[ 128 {tag:'tr', children:[
132 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('Expires_checkbox'), name:'Expires'/*, checked:true*/}]}, 129 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('Expires_checkbox'), name:'Expires'/*, checked:true*/}]},
133 {tag:'td', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('Expires_label'), html:"Expires"}]} 130 {tag:'td', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('Expires_label'), html:"Expires"}]}
134 ]}, 131 ]},
135 {tag:'tr', children:[ 132 {tag:'tr', children:[
136 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('Attachment Description_checkbox'), name:'Attachment Description', checked:true}]}, 133 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('Attachment Description_checkbox'), name:'Attachment Description', checked:true}]},
137 {tag:'td', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('Attachment Description_label'), html:"Attachment Description"}]} 134 {tag:'td', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('Attachment Description_label'), html:"Attachment Description"}]}
138 ]}, 135 ]},
139 {tag:'tr', children:[ 136 {tag:'tr', children:[
140 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('Attachment_checkbox'), name:'Attachment', checked:true}]}, 137 {tag:'td', valign:'top', children:[{tag:'input', type:'checkbox', id:this.getId('Attachment_checkbox'), name:'Attachment', checked:true}]},
141 {tag:'td', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('Attachment_label'), html:"Attachment"}]} 138 {tag:'td', valign:'top', children:[{tag:'span', cls:'keePassFieldLabel', id:this.getId('Attachment_label'), html:"Attachment"}]}
142 ]} 139 ]}
143 ]} 140 ]}
144 ]} 141 ]}
145 ]} 142 ]}
146 ]} 143 ]}
147 ]} 144 ]}
148 ]} 145 ]}
149 ]} 146 ]}
150 ]} 147 ]}
151 ]}, 148 ]},
152 {tag:'div', cls:'step_2', id:this.getId('step_2'), children:[ 149 {tag:'div', cls:'step_2', id:this.getId('step_2'), children:[
diff --git a/frontend/beta/js/Clipperz/PM/Components/Import/MainComponent.js b/frontend/beta/js/Clipperz/PM/Components/Import/MainComponent.js
index 54813bc..05baf46 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Import/MainComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Import/MainComponent.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; } 29if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.Import.MainComponent = function(anElement, args) { 33Clipperz.PM.Components.Import.MainComponent = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 Clipperz.PM.Components.Import.MainComponent.superclass.constructor.call(this, anElement, args); 36 Clipperz.PM.Components.Import.MainComponent.superclass.constructor.call(this, anElement, args);
40 37
41 this._user = args.user; 38 this._user = args.user;
42 this._wizardComponent = null; 39 this._wizardComponent = null;
43 40
44 this._backButton = null; 41 this._backButton = null;
45 this._nextButton = null; 42 this._nextButton = null;
46 43
47 this._selectedComponent = null; 44 this._selectedComponent = null;
48 45
49 this.render(); 46 this.render();
50 47
51 return this; 48 return this;
52} 49}
53 50
54//============================================================================= 51//=============================================================================
55 52
56YAHOO.extendX(Clipperz.PM.Components.Import.MainComponent, Clipperz.PM.Components.BaseComponent, { 53YAHOO.extendX(Clipperz.PM.Components.Import.MainComponent, Clipperz.PM.Components.BaseComponent, {
57 54
58 'toString': function() { 55 'toString': function() {
59 return "Clipperz.PM.Components.Import.MainComponent component"; 56 return "Clipperz.PM.Components.Import.MainComponent component";
60 }, 57 },
61 58
62 //------------------------------------------------------------------------- 59 //-------------------------------------------------------------------------
63 60
64 'user': function() { 61 'user': function() {
65 return this._user; 62 return this._user;
66 }, 63 },
67 64
68 //------------------------------------------------------------------------- 65 //-------------------------------------------------------------------------
69 66
70 'wizardComponent': function() { 67 'wizardComponent': function() {
71 return this._wizardComponent; 68 return this._wizardComponent;
72 }, 69 },
73 70
74 'setWizardComponent': function(aValue) { 71 'setWizardComponent': function(aValue) {
75 if (this._wizardComponent != null) { 72 if (this._wizardComponent != null) {
76 this._wizardComponent.remove(); 73 this._wizardComponent.remove();
77 } 74 }
78 75
79 if (aValue != null) { 76 if (aValue != null) {
80 this.getElement('importCover').hide(); 77 this.getElement('importCover').hide();
81 this.getElement('importWizard').show(); 78 this.getElement('importWizard').show();
82 } 79 }
83 this._wizardComponent = aValue; 80 this._wizardComponent = aValue;
84 }, 81 },
85 82
86 'resetImportComponent': function() { 83 'resetImportComponent': function() {
87//MochiKit.Logging.logDebug(">>> resetImportComponent"); 84//MochiKit.Logging.logDebug(">>> resetImportComponent");
88 this.setWizardComponent(null); 85 this.setWizardComponent(null);
89 this.getElement('wizardComponent').update(""); 86 this.getElement('wizardComponent').update("");
90 87
91 this.getElement('importCover').show(); 88 this.getElement('importCover').show();
92 this.getElement('importWizard').hide(); 89 this.getElement('importWizard').hide();
93//MochiKit.Logging.logDebug("<<< resetImportComponent"); 90//MochiKit.Logging.logDebug("<<< resetImportComponent");
94 }, 91 },
95 92
96 //------------------------------------------------------------------------- 93 //-------------------------------------------------------------------------
97 94
98 'backButton': function() { 95 'backButton': function() {
99 return this._backButton; 96 return this._backButton;
100 }, 97 },
101 98
102 'setBackButton': function(aValue) { 99 'setBackButton': function(aValue) {
103 this._backButton = aValue; 100 this._backButton = aValue;
104 }, 101 },
105 102
106 'nextButton': function() { 103 'nextButton': function() {
107 return this._nextButton; 104 return this._nextButton;
108 }, 105 },
109 106
110 'setNextButton': function(aValue) { 107 'setNextButton': function(aValue) {
111 this._nextButton = aValue; 108 this._nextButton = aValue;
112 }, 109 },
113 110
114 //------------------------------------------------------------------------- 111 //-------------------------------------------------------------------------
115 112
116 'render': function() { 113 'render': function() {
117//MochiKit.Logging.logDebug(">>> Import.MainComponent.render"); 114//MochiKit.Logging.logDebug(">>> Import.MainComponent.render");
118 Clipperz.NotificationCenter.unregister(this); 115 Clipperz.NotificationCenter.unregister(this);
119 MochiKit.Signal.disconnectAllTo(this); 116 MochiKit.Signal.disconnectAllTo(this);
120 117
121 this.element().update(""); 118 this.element().update("");
122 this.domHelper().append(this.element(), {tag:'div', id:this.getId('mainDiv'), children:[ 119 this.domHelper().append(this.element(), {tag:'div', id:this.getId('mainDiv'), children:[
123 {tag:'div', id:this.getId('importCover'), children:[ 120 {tag:'div', id:this.getId('importCover'), children:[
124 {tag:'h5', htmlString:Clipperz.PM.Strings['importTabTitle']}, 121 {tag:'h5', htmlString:Clipperz.PM.Strings['importTabTitle']},
125 {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['importTabDescription']}, 122 {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['importTabDescription']},
126 {tag:'div', cls:'importFormats', children:[ 123 {tag:'div', cls:'importFormats', children:[
127 {tag:'ul', cls:'radioList', children:[ 124 {tag:'ul', cls:'radioList', children:[
128 {tag:'li', children:[ 125 {tag:'li', children:[
129 {tag:'table', children:[{tag:'tbody', children:[{tag:'tr', children:[ 126 {tag:'table', children:[{tag:'tbody', children:[{tag:'tr', children:[
130 {tag:'td', valign:'top', children:[ 127 {tag:'td', valign:'top', children:[
131 {tag:'input', id:this.getId('CSV_radio'), type:'radio', name:'importFormat', value:'CSV'} 128 {tag:'input', id:this.getId('CSV_radio'), type:'radio', name:'importFormat', value:'CSV'}
132 ]}, 129 ]},
133 {tag:'td', valign:'top', children:[ 130 {tag:'td', valign:'top', children:[
134 {tag:'h4', id:this.getId('CSV_title'), htmlString:Clipperz.PM.Strings['importFormats']['CSV']['label']}, 131 {tag:'h4', id:this.getId('CSV_title'), htmlString:Clipperz.PM.Strings['importFormats']['CSV']['label']},
135 {tag:'div', cls:'templateDescription', htmlString:Clipperz.PM.Strings['importFormats']['CSV']['description']} 132 {tag:'div', cls:'templateDescription', htmlString:Clipperz.PM.Strings['importFormats']['CSV']['description']}
136 ]} 133 ]}
137 ]}]}]} 134 ]}]}]}
138 ]}, 135 ]},
139 {tag:'li', children:[ 136 {tag:'li', children:[
140 {tag:'table', children:[{tag:'tbody', children:[{tag:'tr', children:[ 137 {tag:'table', children:[{tag:'tbody', children:[{tag:'tr', children:[
141 {tag:'td', valign:'top', children:[ 138 {tag:'td', valign:'top', children:[
142 {tag:'input', id:this.getId('Excel_radio'), type:'radio', name:'importFormat', value:'EXCEL'} 139 {tag:'input', id:this.getId('Excel_radio'), type:'radio', name:'importFormat', value:'EXCEL'}
143 ]}, 140 ]},
144 {tag:'td', valign:'top', children:[ 141 {tag:'td', valign:'top', children:[
145 {tag:'h4', id:this.getId('Excel_title'), htmlString:Clipperz.PM.Strings['importFormats']['Excel']['label']}, 142 {tag:'h4', id:this.getId('Excel_title'), htmlString:Clipperz.PM.Strings['importFormats']['Excel']['label']},
146 {tag:'div', cls:'templateDescription', htmlString:Clipperz.PM.Strings['importFormats']['Excel']['description']} 143 {tag:'div', cls:'templateDescription', htmlString:Clipperz.PM.Strings['importFormats']['Excel']['description']}
147 ]} 144 ]}
148 ]}]}]} 145 ]}]}]}
149 ]}, 146 ]},
150 {tag:'li', children:[ 147 {tag:'li', children:[
151 {tag:'table', children:[{tag:'tbody', children:[{tag:'tr', children:[ 148 {tag:'table', children:[{tag:'tbody', children:[{tag:'tr', children:[
152 {tag:'td', valign:'top', children:[ 149 {tag:'td', valign:'top', children:[
diff --git a/frontend/beta/js/Clipperz/PM/Components/Import/PasswordPlusImportComponent.js b/frontend/beta/js/Clipperz/PM/Components/Import/PasswordPlusImportComponent.js
index f476ac2..24dc785 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Import/PasswordPlusImportComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Import/PasswordPlusImportComponent.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; } 29if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.Import.PasswordPlusImportComponent = function(anElement, args) { 33Clipperz.PM.Components.Import.PasswordPlusImportComponent = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 Clipperz.PM.Components.Import.PasswordPlusImportComponent.superclass.constructor.call(this, anElement, args); 36 Clipperz.PM.Components.Import.PasswordPlusImportComponent.superclass.constructor.call(this, anElement, args);
40 37
41 this.render(); 38 this.render();
42 39
43 return this; 40 return this;
44} 41}
45 42
46//============================================================================= 43//=============================================================================
47 44
48YAHOO.extendX(Clipperz.PM.Components.Import.PasswordPlusImportComponent, Clipperz.PM.Components.Import.GenericImportComponent, { 45YAHOO.extendX(Clipperz.PM.Components.Import.PasswordPlusImportComponent, Clipperz.PM.Components.Import.GenericImportComponent, {
49 46
50 'toString': function() { 47 'toString': function() {
51 return "Clipperz.PM.Components.Import.PasswordPlusImportComponent component"; 48 return "Clipperz.PM.Components.Import.PasswordPlusImportComponent component";
52 }, 49 },
53 50
54 //------------------------------------------------------------------------- 51 //-------------------------------------------------------------------------
55 52
56 'render': function() { 53 'render': function() {
57//MochiKit.Logging.logDebug(">>> Import.PasswordPlusImportComponent.render"); 54//MochiKit.Logging.logDebug(">>> Import.PasswordPlusImportComponent.render");
58 this.domHelper().append(this.element(), {tag:'div', cls:'passwordPlusImportWizard', children:[ 55 this.domHelper().append(this.element(), {tag:'div', cls:'passwordPlusImportWizard', children:[
59 {tag:'h3', htmlString:Clipperz.PM.Strings['PasswordPlus_ImportWizard_Title']}, 56 {tag:'h3', htmlString:Clipperz.PM.Strings['PasswordPlus_ImportWizard_Title']},
60 {tag:'div', cls:'importSteps', id:this.getId('importSteps')}, 57 {tag:'div', cls:'importSteps', id:this.getId('importSteps')},
61 {tag:'div', cls:'importStepBlocks', children:[ 58 {tag:'div', cls:'importStepBlocks', children:[
62 {tag:'div', cls:'step_0', id:this.getId('step_0'), children:[ 59 {tag:'div', cls:'step_0', id:this.getId('step_0'), children:[
63 {tag:'div', children:[ 60 {tag:'div', children:[
64 {tag:'div', cls:'importOptionsDescription', htmlString:Clipperz.PM.Strings['importOptions_passwordPlus_description']}, 61 {tag:'div', cls:'importOptionsDescription', htmlString:Clipperz.PM.Strings['importOptions_passwordPlus_description']},
65 {tag:'div', cls:'importOptionsParameters', children:[]}, 62 {tag:'div', cls:'importOptionsParameters', children:[]},
66 this.textAreaConfig() 63 this.textAreaConfig()
67 ]} 64 ]}
68 ]}, 65 ]},
69 {tag:'div', cls:'step_1', id:this.getId('step_1'), children:[ 66 {tag:'div', cls:'step_1', id:this.getId('step_1'), children:[
70 {tag:'div', children:[ 67 {tag:'div', children:[
71 {tag:'div', id:this.getId('previewDiv'), html:"preview"} 68 {tag:'div', id:this.getId('previewDiv'), html:"preview"}
72 ]} 69 ]}
73 ]}, 70 ]},
74 {tag:'div', cls:'step_2', id:this.getId('step_2'), children:[ 71 {tag:'div', cls:'step_2', id:this.getId('step_2'), children:[
75 {tag:'div', children:[ 72 {tag:'div', children:[
76 {tag:'h4', html:"done"} 73 {tag:'h4', html:"done"}
77 ]} 74 ]}
78 ]} 75 ]}
79 ]}, 76 ]},
80 {tag:'div', cls:'importOptionsButtons', children:[ 77 {tag:'div', cls:'importOptionsButtons', children:[
81 {tag:'table', children:[ 78 {tag:'table', children:[
82 {tag:'tbody', children:[ 79 {tag:'tbody', children:[
83 {tag:'tr', children:[ 80 {tag:'tr', children:[
84 {tag:'td', html:'&nbsp;'}, 81 {tag:'td', html:'&nbsp;'},
85 {tag:'td', children:[ 82 {tag:'td', children:[
86 {tag:'div', id:this.getId('backActionButton')} 83 {tag:'div', id:this.getId('backActionButton')}
87 ]}, 84 ]},
88 {tag:'td', html:'&nbsp;'}, 85 {tag:'td', html:'&nbsp;'},
89 {tag:'td', children:[ 86 {tag:'td', children:[
90 {tag:'div', id:this.getId('nextActionButton')} 87 {tag:'div', id:this.getId('nextActionButton')}
91 ]}, 88 ]},
92 {tag:'td', html:'&nbsp;'} 89 {tag:'td', html:'&nbsp;'}
93 ]} 90 ]}
94 ]} 91 ]}
95 ]} 92 ]}
96 ]} 93 ]}
97 ]}); 94 ]});
98 95
99 this.updateSteps(); 96 this.updateSteps();
100 97
101 this.setBackButton(new YAHOO.ext.Button(this.getDom('backActionButton'), {text:"back", handler:this.backAction, scope:this})); 98 this.setBackButton(new YAHOO.ext.Button(this.getDom('backActionButton'), {text:"back", handler:this.backAction, scope:this}));
102 this.setNextButton(new YAHOO.ext.Button(this.getDom('nextActionButton'), {text:"next", handler:this.nextAction, scope:this})); 99 this.setNextButton(new YAHOO.ext.Button(this.getDom('nextActionButton'), {text:"next", handler:this.nextAction, scope:this}));
103 100
104 this.getElement('step_0').setVisibilityMode(YAHOO.ext.Element.DISPLAY).show() 101 this.getElement('step_0').setVisibilityMode(YAHOO.ext.Element.DISPLAY).show()
105 this.getElement('step_1').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide(); 102 this.getElement('step_1').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
106 this.getElement('step_2').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide(); 103 this.getElement('step_2').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
107//MochiKit.Logging.logDebug("<<< Import.PasswordPlusImportComponent.render"); 104//MochiKit.Logging.logDebug("<<< Import.PasswordPlusImportComponent.render");
108 }, 105 },
109 106
110 //------------------------------------------------------------------------- 107 //-------------------------------------------------------------------------
111/* 108/*
112 'backAction': function() { 109 'backAction': function() {
113 switch (this.currentStep()) { 110 switch (this.currentStep()) {
114 case 1: //-> 0 111 case 1: //-> 0
115 this.backButton().disable(); 112 this.backButton().disable();
116 this.getElement('step_1').hide(); 113 this.getElement('step_1').hide();
117 this.setCurrentStep(0); 114 this.setCurrentStep(0);
118 this.getElement('step_0').show(); 115 this.getElement('step_0').show();
119 break; 116 break;
120 } 117 }
121 }, 118 },
122*/ 119*/
123 //------------------------------------------------------------------------- 120 //-------------------------------------------------------------------------
124 121
125 'nextAction': function() { 122 'nextAction': function() {
126 switch (this.currentStep()) { 123 switch (this.currentStep()) {
127 case 0: //-> 1 124 case 0: //-> 1
128 this.previewValues(); 125 this.previewValues();
129 break; 126 break;
130 case 1: //-> 2 127 case 1: //-> 2
131 this.importValues(); 128 this.importValues();
132 break; 129 break;
133 } 130 }
134 }, 131 },
135 132
136 //------------------------------------------------------------------------- 133 //-------------------------------------------------------------------------
137 134
138 'deferredPreviewValues': function() { 135 'deferredPreviewValues': function() {
139 var deferredResult; 136 var deferredResult;
140 137
141 // this.setFormValues(MochiKit.DOM.formContents(this.getDom('dataForm'))); 138 // this.setFormValues(MochiKit.DOM.formContents(this.getDom('dataForm')));
142 139
143 deferredResult = new MochiKit.Async.Deferred(); 140 deferredResult = new MochiKit.Async.Deferred();
144 deferredResult.addCallback(MochiKit.Base.bind(function(res) { 141 deferredResult.addCallback(MochiKit.Base.bind(function(res) {
145 this.startProcessing(); 142 this.startProcessing();
146 143
147 return res; 144 return res;
148 }, this)); 145 }, this));
149 deferredResult.addCallback(MochiKit.Base.method(this, 'processPasswordPlusValues')); 146 deferredResult.addCallback(MochiKit.Base.method(this, 'processPasswordPlusValues'));
150 deferredResult.addCallback(MochiKit.Base.method(this, 'setProcessedValues')); 147 deferredResult.addCallback(MochiKit.Base.method(this, 'setProcessedValues'));
151 deferredResult.addCallback(MochiKit.Base.method(this, 'previewRecordValues')); 148 deferredResult.addCallback(MochiKit.Base.method(this, 'previewRecordValues'));
152 deferredResult.addCallback(MochiKit.Base.bind(function(res) { 149 deferredResult.addCallback(MochiKit.Base.bind(function(res) {
diff --git a/frontend/beta/js/Clipperz/PM/Components/Import/RoboFormImportComponent.js b/frontend/beta/js/Clipperz/PM/Components/Import/RoboFormImportComponent.js
index d35bdc6..fe4d45c 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Import/RoboFormImportComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Import/RoboFormImportComponent.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; } 29if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.Import.RoboFormImportComponent = function(anElement, args) { 33Clipperz.PM.Components.Import.RoboFormImportComponent = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 Clipperz.PM.Components.Import.RoboFormImportComponent.superclass.constructor.call(this, anElement, args); 36 Clipperz.PM.Components.Import.RoboFormImportComponent.superclass.constructor.call(this, anElement, args);
40 37
41 this.render(); 38 this.render();
42 39
43 return this; 40 return this;
44} 41}
45 42
46//============================================================================= 43//=============================================================================
47 44
48YAHOO.extendX(Clipperz.PM.Components.Import.RoboFormImportComponent, Clipperz.PM.Components.Import.GenericImportComponent, { 45YAHOO.extendX(Clipperz.PM.Components.Import.RoboFormImportComponent, Clipperz.PM.Components.Import.GenericImportComponent, {
49 46
50 'toString': function() { 47 'toString': function() {
51 return "Clipperz.PM.Components.Import.RoboFormImportComponent component"; 48 return "Clipperz.PM.Components.Import.RoboFormImportComponent component";
52 }, 49 },
53 50
54 //------------------------------------------------------------------------- 51 //-------------------------------------------------------------------------
55 52
56 'render': function() { 53 'render': function() {
57//MochiKit.Logging.logDebug(">>> Import.RoboFormImportComponent.render"); 54//MochiKit.Logging.logDebug(">>> Import.RoboFormImportComponent.render");
58 this.domHelper().append(this.element(), {tag:'div', cls:'roboFormImportWizard', children:[ 55 this.domHelper().append(this.element(), {tag:'div', cls:'roboFormImportWizard', children:[
59 {tag:'h3', htmlString:Clipperz.PM.Strings['RoboForm_ImportWizard_Title']}, 56 {tag:'h3', htmlString:Clipperz.PM.Strings['RoboForm_ImportWizard_Title']},
60 {tag:'div', cls:'importSteps', id:this.getId('importSteps')}, 57 {tag:'div', cls:'importSteps', id:this.getId('importSteps')},
61 {tag:'div', cls:'importStepBlocks', children:[ 58 {tag:'div', cls:'importStepBlocks', children:[
62 {tag:'div', cls:'step_0', id:this.getId('step_0'), children:[ 59 {tag:'div', cls:'step_0', id:this.getId('step_0'), children:[
63 {tag:'div', children:[ 60 {tag:'div', children:[
64 {tag:'div', cls:'importOptionsDescription', htmlString:Clipperz.PM.Strings['importOptions_roboForm_description']}, 61 {tag:'div', cls:'importOptionsDescription', htmlString:Clipperz.PM.Strings['importOptions_roboForm_description']},
65 {tag:'div', cls:'importOptionsParameters', children:[]}, 62 {tag:'div', cls:'importOptionsParameters', children:[]},
66 this.textAreaConfig() 63 this.textAreaConfig()
67 ]} 64 ]}
68 ]}, 65 ]},
69 {tag:'div', cls:'step_1', id:this.getId('step_1'), children:[ 66 {tag:'div', cls:'step_1', id:this.getId('step_1'), children:[
70 {tag:'div', children:[ 67 {tag:'div', children:[
71 {tag:'div', id:this.getId('previewDiv'), html:"preview"} 68 {tag:'div', id:this.getId('previewDiv'), html:"preview"}
72 ]} 69 ]}
73 ]}, 70 ]},
74 {tag:'div', cls:'step_2', id:this.getId('step_2'), children:[ 71 {tag:'div', cls:'step_2', id:this.getId('step_2'), children:[
75 {tag:'div', children:[ 72 {tag:'div', children:[
76 {tag:'h4', html:"done"} 73 {tag:'h4', html:"done"}
77 ]} 74 ]}
78 ]} 75 ]}
79 ]}, 76 ]},
80 {tag:'div', cls:'importOptionsButtons', children:[ 77 {tag:'div', cls:'importOptionsButtons', children:[
81 {tag:'table', children:[ 78 {tag:'table', children:[
82 {tag:'tbody', children:[ 79 {tag:'tbody', children:[
83 {tag:'tr', children:[ 80 {tag:'tr', children:[
84 {tag:'td', html:'&nbsp;'}, 81 {tag:'td', html:'&nbsp;'},
85 {tag:'td', children:[ 82 {tag:'td', children:[
86 {tag:'div', id:this.getId('backActionButton')} 83 {tag:'div', id:this.getId('backActionButton')}
87 ]}, 84 ]},
88 {tag:'td', html:'&nbsp;'}, 85 {tag:'td', html:'&nbsp;'},
89 {tag:'td', children:[ 86 {tag:'td', children:[
90 {tag:'div', id:this.getId('nextActionButton')} 87 {tag:'div', id:this.getId('nextActionButton')}
91 ]}, 88 ]},
92 {tag:'td', html:'&nbsp;'} 89 {tag:'td', html:'&nbsp;'}
93 ]} 90 ]}
94 ]} 91 ]}
95 ]} 92 ]}
96 ]} 93 ]}
97 ]}); 94 ]});
98 95
99 this.updateSteps(); 96 this.updateSteps();
100 97
101 this.setBackButton(new YAHOO.ext.Button(this.getDom('backActionButton'), {text:"back", handler:this.backAction, scope:this})); 98 this.setBackButton(new YAHOO.ext.Button(this.getDom('backActionButton'), {text:"back", handler:this.backAction, scope:this}));
102 this.setNextButton(new YAHOO.ext.Button(this.getDom('nextActionButton'), {text:"next", handler:this.nextAction, scope:this})); 99 this.setNextButton(new YAHOO.ext.Button(this.getDom('nextActionButton'), {text:"next", handler:this.nextAction, scope:this}));
103 100
104 this.getElement('step_0').setVisibilityMode(YAHOO.ext.Element.DISPLAY).show() 101 this.getElement('step_0').setVisibilityMode(YAHOO.ext.Element.DISPLAY).show()
105 this.getElement('step_1').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide(); 102 this.getElement('step_1').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
106 this.getElement('step_2').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide(); 103 this.getElement('step_2').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
107//MochiKit.Logging.logDebug("<<< Import.RoboFormImportComponent.render"); 104//MochiKit.Logging.logDebug("<<< Import.RoboFormImportComponent.render");
108 }, 105 },
109 106
110 //------------------------------------------------------------------------- 107 //-------------------------------------------------------------------------
111 108
112 'nextAction': function() { 109 'nextAction': function() {
113 switch (this.currentStep()) { 110 switch (this.currentStep()) {
114 case 0: //-> 1 111 case 0: //-> 1
115 this.previewValues(); 112 this.previewValues();
116 break; 113 break;
117 case 1: //-> 2 114 case 1: //-> 2
118 this.importValues(); 115 this.importValues();
119 break; 116 break;
120 } 117 }
121 }, 118 },
122 119
123 //------------------------------------------------------------------------- 120 //-------------------------------------------------------------------------
124 121
125 'deferredPreviewValues': function() { 122 'deferredPreviewValues': function() {
126 var deferredResult; 123 var deferredResult;
127 124
128 // this.setFormValues(MochiKit.DOM.formContents(this.getDom('dataForm'))); 125 // this.setFormValues(MochiKit.DOM.formContents(this.getDom('dataForm')));
129 126
130 deferredResult = new MochiKit.Async.Deferred(); 127 deferredResult = new MochiKit.Async.Deferred();
131 deferredResult.addCallback(MochiKit.Base.bind(function(res) { 128 deferredResult.addCallback(MochiKit.Base.bind(function(res) {
132 this.startProcessing(); 129 this.startProcessing();
133 130
134 return res; 131 return res;
135 }, this)); 132 }, this));
136 deferredResult.addCallback(MochiKit.Base.method(this, 'processRoboFormValues')); 133 deferredResult.addCallback(MochiKit.Base.method(this, 'processRoboFormValues'));
137 deferredResult.addCallback(MochiKit.Base.method(this, 'setProcessedValues')); 134 deferredResult.addCallback(MochiKit.Base.method(this, 'setProcessedValues'));
138 deferredResult.addCallback(MochiKit.Base.method(this, 'previewRecordValues')); 135 deferredResult.addCallback(MochiKit.Base.method(this, 'previewRecordValues'));
139 deferredResult.addCallback(MochiKit.Base.bind(function(res) { 136 deferredResult.addCallback(MochiKit.Base.bind(function(res) {
140 this.processingDone(); 137 this.processingDone();
141 this.getElement('step_0').hide(); 138 this.getElement('step_0').hide();
142 this.getElement('step_1').show(); 139 this.getElement('step_1').show();
143 this.backButton().enable(); 140 this.backButton().enable();
144 141
145 return res; 142 return res;
146 }, this)); 143 }, this));
147 // deferredResult.addErrback(MochiKit.Base.bind(function() { 144 // deferredResult.addErrback(MochiKit.Base.bind(function() {
148 // this.processingAborted(); 145 // this.processingAborted();
149 // }, this)) 146 // }, this))
150 deferredResult.callback(this.textAreaContent()); 147 deferredResult.callback(this.textAreaContent());
151 148
152 return deferredResult; 149 return deferredResult;
diff --git a/frontend/beta/js/Clipperz/PM/Components/MessageBox.js b/frontend/beta/js/Clipperz/PM/Components/MessageBox.js
index d2bc09a..cf9ec86 100644
--- a/frontend/beta/js/Clipperz/PM/Components/MessageBox.js
+++ b/frontend/beta/js/Clipperz/PM/Components/MessageBox.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32 29
33 30
34 31
35Clipperz.PM.Components.MessageBoxImplementation = function() { 32Clipperz.PM.Components.MessageBoxImplementation = function() {
36 this._step = 0; 33 this._step = 0;
37 this._steps = 0; 34 this._steps = 0;
38 35
39 return this; 36 return this;
40}; 37};
41 38
42//YAHOO.extendX(Clipperz.PM.Components.MessageBoxImplementation, Clipperz.PM.Components.BaseComponent, { 39//YAHOO.extendX(Clipperz.PM.Components.MessageBoxImplementation, Clipperz.PM.Components.BaseComponent, {
43Clipperz.PM.Components.MessageBoxImplementation.prototype = MochiKit.Base.update(null, { 40Clipperz.PM.Components.MessageBoxImplementation.prototype = MochiKit.Base.update(null, {
44 41
45 'toString': function() { 42 'toString': function() {
46 return "Clipperz.PM.Components.MessageBox"; 43 return "Clipperz.PM.Components.MessageBox";
47 }, 44 },
48 45
49 //----------------------------------------------------- 46 //-----------------------------------------------------
50 47
51 'step': function() { 48 'step': function() {
52 return this._step; 49 return this._step;
53 }, 50 },
54 51
55 'setStep': function(aValue) { 52 'setStep': function(aValue) {
56 if (aValue == 'next') { 53 if (aValue == 'next') {
57 this._step = this._step + 1; 54 this._step = this._step + 1;
58 } else { 55 } else {
59 this._step = aValue; 56 this._step = aValue;
60 } 57 }
61 58
62 if (this._step > this.steps()) { 59 if (this._step > this.steps()) {
63//MochiKit.Logging.logDebug("overstepping: " + this._step + " (" + this.steps() + ")"); 60//MochiKit.Logging.logDebug("overstepping: " + this._step + " (" + this.steps() + ")");
64 this._step = this.steps(); 61 this._step = this.steps();
65 } 62 }
66 }, 63 },
67 64
68 //----------------------------------------------------- 65 //-----------------------------------------------------
69 66
70 'steps': function() { 67 'steps': function() {
71 return this._steps; 68 return this._steps;
72 }, 69 },
73 70
74 'setSteps': function(aValue) { 71 'setSteps': function(aValue) {
75 if (aValue.constructor == String) { 72 if (aValue.constructor == String) {
76 if (aValue.charAt(0) == '+') { 73 if (aValue.charAt(0) == '+') {
77 this._steps += aValue.substring(1)*1; 74 this._steps += aValue.substring(1)*1;
78 } else if (aValue.charAt(0) == '-') { 75 } else if (aValue.charAt(0) == '-') {
79 this._steps -= aValue.substring(1)*1; 76 this._steps -= aValue.substring(1)*1;
80 } else { 77 } else {
81 this._steps = aValue.substring(1)*1; 78 this._steps = aValue.substring(1)*1;
82 } 79 }
83 } else { 80 } else {
84 this._steps = aValue; 81 this._steps = aValue;
85 } 82 }
86 }, 83 },
87 84
88 //----------------------------------------------------- 85 //-----------------------------------------------------
89 86
90 'deferredShow': function(aConfiguration, anAnimationTargetElement, aValue) { 87 'deferredShow': function(aConfiguration, anAnimationTargetElement, aValue) {
91 this.show(aConfiguration, anAnimationTargetElement); 88 this.show(aConfiguration, anAnimationTargetElement);
92 89
93 return aValue; 90 return aValue;
94 }, 91 },
95 92
96 'show': function(aConfiguration, anAnimationTargetElement) { 93 'show': function(aConfiguration, anAnimationTargetElement) {
97 varmessageBoxConfiguration; 94 varmessageBoxConfiguration;
98 95
99 messageBoxConfiguration = MochiKit.Base.clone(aConfiguration); 96 messageBoxConfiguration = MochiKit.Base.clone(aConfiguration);
100 messageBoxConfiguration.msg = messageBoxConfiguration.text; 97 messageBoxConfiguration.msg = messageBoxConfiguration.text;
101 messageBoxConfiguration.animEl = anAnimationTargetElement; 98 messageBoxConfiguration.animEl = anAnimationTargetElement;
102 messageBoxConfiguration.progress = messageBoxConfiguration.showProgressBar; 99 messageBoxConfiguration.progress = messageBoxConfiguration.showProgressBar;
103 messageBoxConfiguration.closable = messageBoxConfiguration.showCloseButton; 100 messageBoxConfiguration.closable = messageBoxConfiguration.showCloseButton;
104 this.setSteps(aConfiguration.steps || 0); 101 this.setSteps(aConfiguration.steps || 0);
105 this.setStep(aConfiguration.step || 0); 102 this.setStep(aConfiguration.step || 0);
106 delete messageBoxConfiguration.buttons; 103 delete messageBoxConfiguration.buttons;
107 104
108 Clipperz.YUI.MessageBox.show(messageBoxConfiguration); 105 Clipperz.YUI.MessageBox.show(messageBoxConfiguration);
109 }, 106 },
110 107
111 //----------------------------------------------------- 108 //-----------------------------------------------------
112 109
113 'update': function(someValues) { 110 'update': function(someValues) {
114//MochiKit.Logging.logDebug(">>> MessageBox.update"); 111//MochiKit.Logging.logDebug(">>> MessageBox.update");
115 if (someValues.title) { 112 if (someValues.title) {
116 Clipperz.YUI.MessageBox.getDialog().setTitle(someValues.title); 113 Clipperz.YUI.MessageBox.getDialog().setTitle(someValues.title);
117 }; 114 };
118 115
119 if (someValues.text) { 116 if (someValues.text) {
120 Clipperz.YUI.MessageBox.updateText(someValues.text); 117 Clipperz.YUI.MessageBox.updateText(someValues.text);
121 }; 118 };
122 119
123 if (typeof(someValues.showProgressBar) != 'undefined') { 120 if (typeof(someValues.showProgressBar) != 'undefined') {
124 Clipperz.YUI.MessageBox.progressElement().setDisplayed(someValues.showProgressBar); 121 Clipperz.YUI.MessageBox.progressElement().setDisplayed(someValues.showProgressBar);
125 Clipperz.YUI.MessageBox.updateProgress(0); 122 Clipperz.YUI.MessageBox.updateProgress(0);
126 }; 123 };
127 124
128 if (typeof(someValues.steps) != 'undefined') { 125 if (typeof(someValues.steps) != 'undefined') {
129 this.setSteps(someValues.steps); 126 this.setSteps(someValues.steps);
130 }; 127 };
131 128
132 if (typeof(someValues.step) != 'undefined') { 129 if (typeof(someValues.step) != 'undefined') {
133 this.setStep(someValues.step); 130 this.setStep(someValues.step);
134 } else { 131 } else {
135 this.setStep('next'); 132 this.setStep('next');
136 } 133 }
137 Clipperz.YUI.MessageBox.updateProgress(this.step() / this.steps()); 134 Clipperz.YUI.MessageBox.updateProgress(this.step() / this.steps());
138 135
139 136
140 if (typeof(someValues.fn) != 'undefined') { 137 if (typeof(someValues.fn) != 'undefined') {
141 Clipperz.YUI.MessageBox.opt().fn = someValues.fn; 138 Clipperz.YUI.MessageBox.opt().fn = someValues.fn;
142 }; 139 };
143 140
144 if (typeof(someValues.scope) != 'undefined') { 141 if (typeof(someValues.scope) != 'undefined') {
145 Clipperz.YUI.MessageBox.opt().scope = someValues.scope; 142 Clipperz.YUI.MessageBox.opt().scope = someValues.scope;
146 }; 143 };
147 144
148 if (someValues.buttons) { 145 if (someValues.buttons) {
149 Clipperz.YUI.MessageBox.updateButtons(someValues.buttons); 146 Clipperz.YUI.MessageBox.updateButtons(someValues.buttons);
150 }; 147 };
151 148
152 // if (someValues.title) { 149 // if (someValues.title) {
diff --git a/frontend/beta/js/Clipperz/PM/Components/OTP/MainComponent.js b/frontend/beta/js/Clipperz/PM/Components/OTP/MainComponent.js
index 9d191f6..7b0b12b 100644
--- a/frontend/beta/js/Clipperz/PM/Components/OTP/MainComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/OTP/MainComponent.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.OTP) == 'undefined') { Clipperz.PM.Components.OTP = {}; } 29if (typeof(Clipperz.PM.Components.OTP) == 'undefined') { Clipperz.PM.Components.OTP = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.OTP.MainComponent = function(anElement, args) { 33Clipperz.PM.Components.OTP.MainComponent = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39//MochiKit.Logging.logDebug("new OTP.MainComponent"); 36//MochiKit.Logging.logDebug("new OTP.MainComponent");
40 Clipperz.PM.Components.OTP.MainComponent.superclass.constructor.call(this, anElement, args); 37 Clipperz.PM.Components.OTP.MainComponent.superclass.constructor.call(this, anElement, args);
41 38
42 this._user = args.user; 39 this._user = args.user;
43 this._shouldRender = true; 40 this._shouldRender = true;
44 41
45 this._deleteButton = null; 42 this._deleteButton = null;
46 this._printButton = null; 43 this._printButton = null;
47 44
48 Clipperz.NotificationCenter.register(null, 'tabSelected', this, 'tabSelectedHandler'); 45 Clipperz.NotificationCenter.register(null, 'tabSelected', this, 'tabSelectedHandler');
49 //Clipperz.NotificationCenter.register(null, 'oneTimePasswordAdded', this, 'render'); 46 //Clipperz.NotificationCenter.register(null, 'oneTimePasswordAdded', this, 'render');
50 47
51 return this; 48 return this;
52} 49}
53 50
54//============================================================================= 51//=============================================================================
55 52
56YAHOO.extendX(Clipperz.PM.Components.OTP.MainComponent, Clipperz.PM.Components.BaseComponent, { 53YAHOO.extendX(Clipperz.PM.Components.OTP.MainComponent, Clipperz.PM.Components.BaseComponent, {
57 54
58 'toString': function() { 55 'toString': function() {
59 return "Clipperz.PM.Components.OTP.MainComponent component"; 56 return "Clipperz.PM.Components.OTP.MainComponent component";
60 }, 57 },
61 58
62 //------------------------------------------------------------------------- 59 //-------------------------------------------------------------------------
63 60
64 'render': function() { 61 'render': function() {
65//MochiKit.Logging.logDebug("### OTP.MainComponent.render"); 62//MochiKit.Logging.logDebug("### OTP.MainComponent.render");
66 Clipperz.NotificationCenter.unregister(this); 63 Clipperz.NotificationCenter.unregister(this);
67 MochiKit.Signal.disconnectAllTo(this); 64 MochiKit.Signal.disconnectAllTo(this);
68 65
69 if (Clipperz.PM.Proxy.defaultProxy.isReadOnly()) { 66 if (Clipperz.PM.Proxy.defaultProxy.isReadOnly()) {
70 this.element().update(""); 67 this.element().update("");
71 this.domHelper().append(this.element(), {tag:'div', cls:'oneTimePasswordReadOnlyMessage', htmlString:Clipperz.PM.Strings['oneTimePasswordReadOnlyMessage']}); 68 this.domHelper().append(this.element(), {tag:'div', cls:'oneTimePasswordReadOnlyMessage', htmlString:Clipperz.PM.Strings['oneTimePasswordReadOnlyMessage']});
72 } else { 69 } else {
73 var deferredResult; 70 var deferredResult;
74 71
75 deferredResult = new MochiKit.Async.Deferred(); 72 deferredResult = new MochiKit.Async.Deferred();
76 73
77//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("OTP.MainComponent.render - 1: " + res); return res;}); 74//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("OTP.MainComponent.render - 1: " + res); return res;});
78 deferredResult.addCallback(MochiKit.Base.bind(function() { 75 deferredResult.addCallback(MochiKit.Base.bind(function() {
79 this.element().update(""); 76 this.element().update("");
80 Clipperz.YUI.DomHelper.append(this.element(), {tag:'div', htmlString:Clipperz.PM.Strings['oneTimePasswordLoadingMessage']}); 77 Clipperz.YUI.DomHelper.append(this.element(), {tag:'div', htmlString:Clipperz.PM.Strings['oneTimePasswordLoadingMessage']});
81 }, this)); 78 }, this));
82//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("OTP.MainComponent.render - 2: " + res); return res;}); 79//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("OTP.MainComponent.render - 2: " + res); return res;});
83 deferredResult.addCallback(MochiKit.Base.method(this.user(), 'loadOneTimePasswords')); 80 deferredResult.addCallback(MochiKit.Base.method(this.user(), 'loadOneTimePasswords'));
84//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("OTP.MainComponent.render - 3: " + res); return res;}); 81//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("OTP.MainComponent.render - 3: " + res); return res;});
85//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("OTP.MainComponent.render - 3.1: " + Clipperz.Base.serializeJSON(res.serializedData())); return res;}); 82//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("OTP.MainComponent.render - 3.1: " + Clipperz.Base.serializeJSON(res.serializedData())); return res;});
86 deferredResult.addCallback(MochiKit.Base.bind(function(aResult) { 83 deferredResult.addCallback(MochiKit.Base.bind(function(aResult) {
87 vartbodyElement; 84 vartbodyElement;
88 varoneTimePasswordReferenceKeys; 85 varoneTimePasswordReferenceKeys;
89 var imageExtension; 86 var imageExtension;
90 var isThereAnyActiveOneTimePassword; 87 var isThereAnyActiveOneTimePassword;
91 88
92 isThereAnyActiveOneTimePassword = false; 89 isThereAnyActiveOneTimePassword = false;
93 90
94 this.element().update(""); 91 this.element().update("");
95 Clipperz.YUI.DomHelper.append(this.element(), {tag:'div', id:'oneTimePasswordList', children:[ 92 Clipperz.YUI.DomHelper.append(this.element(), {tag:'div', id:'oneTimePasswordList', children:[
96 {tag:'div', id:'oneTimePasswords_header', children:[ 93 {tag:'div', id:'oneTimePasswords_header', children:[
97 {tag:'table', width:'100%', children:[ 94 {tag:'table', width:'100%', children:[
98 {tag:'tbody', children:[ 95 {tag:'tbody', children:[
99 {tag:'tr', children:[ 96 {tag:'tr', children:[
100 {tag:'td', width:'10%', children:[ 97 {tag:'td', width:'10%', children:[
101 {tag:'div', id:this.getId('createNewOneTimePasswordButton')} 98 {tag:'div', id:this.getId('createNewOneTimePasswordButton')}
102 ]}, 99 ]},
103 {tag:'td', width:'40%', children:[ 100 {tag:'td', width:'40%', children:[
104 {tag:'div', id:this.getId('deleteSelectedOneTimePasswordButton')} 101 {tag:'div', id:this.getId('deleteSelectedOneTimePasswordButton')}
105 ]}, 102 ]},
106 {tag:'td', width:'50%', align:'right', children:[ 103 {tag:'td', width:'50%', align:'right', children:[
107 {tag:'div', id:this.getId('printOneTimePasswordButton')} 104 {tag:'div', id:this.getId('printOneTimePasswordButton')}
108 ]} 105 ]}
109 ]} 106 ]}
110 ]} 107 ]}
111 ]}, 108 ]},
112 {tag:'div', children:[ 109 {tag:'div', children:[
113 {tag:'ul', children:[ 110 {tag:'ul', children:[
114 {tag:'li', children:[ 111 {tag:'li', children:[
115 {tag:'span', htmlString:Clipperz.PM.Strings['oneTimePasswordSelectionLink_selectLabel']} 112 {tag:'span', htmlString:Clipperz.PM.Strings['oneTimePasswordSelectionLink_selectLabel']}
116 ]}, 113 ]},
117 {tag:'li', children:[ 114 {tag:'li', children:[
118 {tag:'a', href:'#', id:this.getId('selectAllOneTimePasswords_link'), htmlString:Clipperz.PM.Strings['oneTimePasswordSelectionLink_all']} 115 {tag:'a', href:'#', id:this.getId('selectAllOneTimePasswords_link'), htmlString:Clipperz.PM.Strings['oneTimePasswordSelectionLink_all']}
119 ]}, 116 ]},
120 {tag:'li', children:[ 117 {tag:'li', children:[
121 {tag:'a', href:'#', id:this.getId('selectNoneOneTimePasswords_link'), htmlString:Clipperz.PM.Strings['oneTimePasswordSelectionLink_none']} 118 {tag:'a', href:'#', id:this.getId('selectNoneOneTimePasswords_link'), htmlString:Clipperz.PM.Strings['oneTimePasswordSelectionLink_none']}
122 ]}, 119 ]},
123 {tag:'li', children:[ 120 {tag:'li', children:[
124 {tag:'a', href:'#', id:this.getId('selectUsedOneTimePasswords_link'), htmlString:Clipperz.PM.Strings['oneTimePasswordSelectionLink_used']} 121 {tag:'a', href:'#', id:this.getId('selectUsedOneTimePasswords_link'), htmlString:Clipperz.PM.Strings['oneTimePasswordSelectionLink_used']}
125 ]}, 122 ]},
126 {tag:'li', children:[ 123 {tag:'li', children:[
127 {tag:'a', href:'#', id:this.getId('selectUnusedOneTimePasswords_link'), htmlString:Clipperz.PM.Strings['oneTimePasswordSelectionLink_unused']} 124 {tag:'a', href:'#', id:this.getId('selectUnusedOneTimePasswords_link'), htmlString:Clipperz.PM.Strings['oneTimePasswordSelectionLink_unused']}
128 ]} 125 ]}
129 ]} 126 ]}
130 ]} 127 ]}
131 ]}, 128 ]},
132 {tag:'form', id:this.getId('oneTimePasswords_form'), children:[ 129 {tag:'form', id:this.getId('oneTimePasswords_form'), children:[
133 {tag:'table', cls:'oneTimePassword', cellspacing:'0', cellpadding:'2', children:[ 130 {tag:'table', cls:'oneTimePassword', cellspacing:'0', cellpadding:'2', children:[
134 {tag:'tbody', id:this.getId('oneTimePasswords_tbody'), children:[ 131 {tag:'tbody', id:this.getId('oneTimePasswords_tbody'), children:[
135 ]} 132 ]}
136 ]} 133 ]}
137 ]} 134 ]}
138 ]}); 135 ]});
139 136
140 imageExtension = (Clipperz_IEisBroken == true) ? 'gif': 'png'; 137 imageExtension = (Clipperz_IEisBroken == true) ? 'gif': 'png';
141 138
142 tbodyElement = this.getElement('oneTimePasswords_tbody'); 139 tbodyElement = this.getElement('oneTimePasswords_tbody');
143 oneTimePasswordReferenceKeys = MochiKit.Base.keys(this.user().oneTimePasswordManager().oneTimePasswords()).reverse(); 140 oneTimePasswordReferenceKeys = MochiKit.Base.keys(this.user().oneTimePasswordManager().oneTimePasswords()).reverse();
144 c = oneTimePasswordReferenceKeys.length; 141 c = oneTimePasswordReferenceKeys.length;
145 if (c>0) { 142 if (c>0) {
146 for (i=0; i<c; i++) { 143 for (i=0; i<c; i++) {
147 var otpReference; 144 var otpReference;
148 var currentOTP; 145 var currentOTP;
149 var loginSessionInfoConfig; 146 var loginSessionInfoConfig;
150 147
151 imageExtension = (Clipperz_IEisBroken == true) ? 'gif': 'png'; 148 imageExtension = (Clipperz_IEisBroken == true) ? 'gif': 'png';
152 149
diff --git a/frontend/beta/js/Clipperz/PM/Components/Panels/AccountPanel.js b/frontend/beta/js/Clipperz/PM/Components/Panels/AccountPanel.js
index 6b467d0..f7991f1 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Panels/AccountPanel.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Panels/AccountPanel.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Panels) == 'undefined') { Clipperz.PM.Components.Panels = {}; } 29if (typeof(Clipperz.PM.Components.Panels) == 'undefined') { Clipperz.PM.Components.Panels = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.Panels.AccountPanel = function(anElement, args) { 33Clipperz.PM.Components.Panels.AccountPanel = function(anElement, args) {
37//MochiKit.Logging.logDebug(">>> new AccountPanel"); 34//MochiKit.Logging.logDebug(">>> new AccountPanel");
38 args = args || {}; 35 args = args || {};
39 36
40 Clipperz.PM.Components.Panels.AccountPanel.superclass.constructor.call(this, anElement, args); 37 Clipperz.PM.Components.Panels.AccountPanel.superclass.constructor.call(this, anElement, args);
41 38
42 Clipperz.NotificationCenter.register(null, 'setupDone', this, 'render'); 39 Clipperz.NotificationCenter.register(null, 'setupDone', this, 'render');
43 40
44 this._shouldLoadLoginHistory = true; 41 this._shouldLoadLoginHistory = true;
45 42
46 //this.render(); 43 //this.render();
47//MochiKit.Logging.logDebug("<<< new AccountPanel"); 44//MochiKit.Logging.logDebug("<<< new AccountPanel");
48 45
49 return this; 46 return this;
50} 47}
51 48
52//============================================================================= 49//=============================================================================
53 50
54YAHOO.extendX(Clipperz.PM.Components.Panels.AccountPanel, Clipperz.PM.Components.Panels.BasePanel, { 51YAHOO.extendX(Clipperz.PM.Components.Panels.AccountPanel, Clipperz.PM.Components.Panels.BasePanel, {
55 52
56 'toString': function() { 53 'toString': function() {
57 return "Clipperz.PM.Components.AccountPanel component"; 54 return "Clipperz.PM.Components.AccountPanel component";
58 }, 55 },
59 56
60 //------------------------------------------------------------------------- 57 //-------------------------------------------------------------------------
61 58
62 'render': function() { 59 'render': function() {
63 var errorMessageActor; 60 var errorMessageActor;
64 varchangePasswordButton; 61 varchangePasswordButton;
65 var deleteAccountButton; 62 var deleteAccountButton;
66 63
67try { 64try {
68//MochiKit.Logging.logDebug(">>> AccountPanel.render"); 65//MochiKit.Logging.logDebug(">>> AccountPanel.render");
69 Clipperz.NotificationCenter.unregister(this); 66 Clipperz.NotificationCenter.unregister(this);
70 MochiKit.Signal.disconnectAllTo(this); 67 MochiKit.Signal.disconnectAllTo(this);
71 68
72 this.element().update(""); 69 this.element().update("");
73 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'table', border:'0', cellspacing:'0', cellpadding:'0', children:[ 70 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'table', border:'0', cellspacing:'0', cellpadding:'0', children:[
74 {tag:'tbody', children:[ 71 {tag:'tbody', children:[
75 {tag:'tr', children:[ 72 {tag:'tr', children:[
76 {tag:'td', valign:'top', width:'200', children:[ 73 {tag:'td', valign:'top', width:'200', children:[
77 {tag:'ul', id:"accountSubMenu", cls:'subMenu', children:[ 74 {tag:'ul', id:"accountSubMenu", cls:'subMenu', children:[
78 {tag:'li', id:'changePassphraseTab', htmlString:Clipperz.PM.Strings['changePasswordTabLabel']}, 75 {tag:'li', id:'changePassphraseTab', htmlString:Clipperz.PM.Strings['changePasswordTabLabel']},
79 {tag:'li', id:'manageOTPTab', htmlString:Clipperz.PM.Strings['manageOTPTabLabel']}, 76 {tag:'li', id:'manageOTPTab', htmlString:Clipperz.PM.Strings['manageOTPTabLabel']},
80 {tag:'li', id:'accountPreferencesTab', htmlString:Clipperz.PM.Strings['accountPreferencesLabel']}, 77 {tag:'li', id:'accountPreferencesTab', htmlString:Clipperz.PM.Strings['accountPreferencesLabel']},
81 {tag:'li', id:'loginHistoryTab', htmlString:Clipperz.PM.Strings['accountLoginHistoryLabel']}, 78 {tag:'li', id:'loginHistoryTab', htmlString:Clipperz.PM.Strings['accountLoginHistoryLabel']},
82 {tag:'li', id:'deleteAccountTab', htmlString:Clipperz.PM.Strings['deleteAccountTabLabel']} 79 {tag:'li', id:'deleteAccountTab', htmlString:Clipperz.PM.Strings['deleteAccountTabLabel']}
83 // {tag:'li', id:'paidAccountTab'), htmlString:Clipperz.PM.Strings['paidAccountTabLabel']} 80 // {tag:'li', id:'paidAccountTab'), htmlString:Clipperz.PM.Strings['paidAccountTabLabel']}
84 ]} 81 ]}
85 ]}, 82 ]},
86 {tag:'td', valign:'top', children:[ 83 {tag:'td', valign:'top', children:[
87 {tag:'ul', cls:'clipperzTabPanels', children:[ 84 {tag:'ul', cls:'clipperzTabPanels', children:[
88 {tag:'li', id:this.getId('changePassphrasePanel'), children:[ 85 {tag:'li', id:this.getId('changePassphrasePanel'), children:[
89 {tag:'div', cls:'clipperzSubPanel', children:[ 86 {tag:'div', cls:'clipperzSubPanel', children:[
90 {tag:'h5', htmlString:Clipperz.PM.Strings['changePasswordTabTitle']}, 87 {tag:'h5', htmlString:Clipperz.PM.Strings['changePasswordTabTitle']},
91 {tag:'div', cls:'panelBody', id:'changePassphraseBlock', children:[ 88 {tag:'div', cls:'panelBody', id:'changePassphraseBlock', children:[
92 {tag:'form', id:this.getId('changePassphraseForm'), children:[ 89 {tag:'form', id:this.getId('changePassphraseForm'), children:[
93 {tag:'h5', cls:'errorMessage', id:this.getId('changePassphrase_errorMessage')}, 90 {tag:'h5', cls:'errorMessage', id:this.getId('changePassphrase_errorMessage')},
94 {tag:'table', cls:'panelBody', children:[ 91 {tag:'table', cls:'panelBody', children:[
95 {tag:'tr', children:[ 92 {tag:'tr', children:[
96 {tag:'td', children:[ 93 {tag:'td', children:[
97 {tag:'span', cls:'formLabel', htmlString:Clipperz.PM.Strings['changePasswordFormUsernameLabel']} 94 {tag:'span', cls:'formLabel', htmlString:Clipperz.PM.Strings['changePasswordFormUsernameLabel']}
98 ]}, 95 ]},
99 {tag:'td', children:[ 96 {tag:'td', children:[
100 {tag:'input', type:'text', name:'username', id:this.getId('changePassphrase_username')} 97 {tag:'input', type:'text', name:'username', id:this.getId('changePassphrase_username')}
101 ]} 98 ]}
102 ]}, 99 ]},
103 {tag:'tr', children:[ 100 {tag:'tr', children:[
104 {tag:'td', children:[ 101 {tag:'td', children:[
105 {tag:'span', cls:'formLabel', htmlString:Clipperz.PM.Strings['changePasswordFormOldPassphraseLabel']} 102 {tag:'span', cls:'formLabel', htmlString:Clipperz.PM.Strings['changePasswordFormOldPassphraseLabel']}
106 ]}, 103 ]},
107 {tag:'td', children:[ 104 {tag:'td', children:[
108 {tag:'input', type:'password', name:'oldPassphrase', id:this.getId('changePassphrase_oldPassphrase')} 105 {tag:'input', type:'password', name:'oldPassphrase', id:this.getId('changePassphrase_oldPassphrase')}
109 ]} 106 ]}
110 ]}, 107 ]},
111 {tag:'tr', children:[ 108 {tag:'tr', children:[
112 {tag:'td', children:[ 109 {tag:'td', children:[
113 {tag:'span', cls:'formLabel', htmlString:Clipperz.PM.Strings['changePasswordFormNewPassphraseLabel']} 110 {tag:'span', cls:'formLabel', htmlString:Clipperz.PM.Strings['changePasswordFormNewPassphraseLabel']}
114 ]}, 111 ]},
115 {tag:'td', children:[ 112 {tag:'td', children:[
116 {tag:'input', type:'password', name:'newPassphrase', id:this.getId('changePassphrase_newPassphrase')} 113 {tag:'input', type:'password', name:'newPassphrase', id:this.getId('changePassphrase_newPassphrase')}
117 ]} 114 ]}
118 ]}, 115 ]},
119 {tag:'tr', children:[ 116 {tag:'tr', children:[
120 {tag:'td', children:[ 117 {tag:'td', children:[
121 {tag:'span', cls:'formLabel', htmlString:Clipperz.PM.Strings['changePasswordFormRetypePassphraseLabel']} 118 {tag:'span', cls:'formLabel', htmlString:Clipperz.PM.Strings['changePasswordFormRetypePassphraseLabel']}
122 ]}, 119 ]},
123 {tag:'td', children:[ 120 {tag:'td', children:[
124 {tag:'input', type:'password', name:'renewPassphrase', id:this.getId('changePassphrase_renewPassphrase')} 121 {tag:'input', type:'password', name:'renewPassphrase', id:this.getId('changePassphrase_renewPassphrase')}
125 ]} 122 ]}
126 ]}, 123 ]},
127 {tag:'tr', children:[ 124 {tag:'tr', children:[
128 {tag:'td', align:'right', children:[ 125 {tag:'td', align:'right', children:[
129 {tag:'input', type:'checkbox', id:this.getId('changePassphrase_safetyCheck')} 126 {tag:'input', type:'checkbox', id:this.getId('changePassphrase_safetyCheck')}
130 ]}, 127 ]},
131 {tag:'td', children:[ 128 {tag:'td', children:[
132 {tag:'span', htmlString:Clipperz.PM.Strings['changePasswordFormSafetyCheckboxLabel']} 129 {tag:'span', htmlString:Clipperz.PM.Strings['changePasswordFormSafetyCheckboxLabel']}
133 ]} 130 ]}
134 ]} 131 ]}
135 ]}, 132 ]},
136 {tag:'div', cls:'clipperzSubPanelButtonBox', children:[ 133 {tag:'div', cls:'clipperzSubPanelButtonBox', children:[
137 {tag:'div', id:this.getId('changePassphraseButton')} 134 {tag:'div', id:this.getId('changePassphraseButton')}
138 ]} 135 ]}
139 ]} 136 ]}
140 ]} 137 ]}
141 ]} 138 ]}
142 ]}, 139 ]},
143 {tag:'li', id:this.getId('manageOTPPanel'), children:[ 140 {tag:'li', id:this.getId('manageOTPPanel'), children:[
144 {tag:'div', cls:'clipperzSubPanel', children:[ 141 {tag:'div', cls:'clipperzSubPanel', children:[
145 {tag:'h5', htmlString:Clipperz.PM.Strings['manageOTPTabTitle']}, 142 {tag:'h5', htmlString:Clipperz.PM.Strings['manageOTPTabTitle']},
146 {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['manageOTPTabDescription']}, 143 {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['manageOTPTabDescription']},
147 {tag:'div', id:'OTPComponent'} 144 {tag:'div', id:'OTPComponent'}
148 ]} 145 ]}
149 ]}, 146 ]},
150 {tag:'li', id:this.getId('accountPreferencesPanel'), children:[ 147 {tag:'li', id:this.getId('accountPreferencesPanel'), children:[
151 {tag:'div', cls:'clipperzSubPanel', children:[ 148 {tag:'div', cls:'clipperzSubPanel', children:[
152 {tag:'h5', htmlString:Clipperz.PM.Strings['accountPreferencesTabTitle']}, 149 {tag:'h5', htmlString:Clipperz.PM.Strings['accountPreferencesTabTitle']},
diff --git a/frontend/beta/js/Clipperz/PM/Components/Panels/BasePanel.js b/frontend/beta/js/Clipperz/PM/Components/Panels/BasePanel.js
index bf60f45..15dd622 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Panels/BasePanel.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Panels/BasePanel.js
@@ -1,96 +1,93 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Panels) == 'undefined') { Clipperz.PM.Components.Panels = {}; } 29if (typeof(Clipperz.PM.Components.Panels) == 'undefined') { Clipperz.PM.Components.Panels = {}; }
33 30
34//var _Clipperz_PM_Components_Panels_base_id_ = 0; 31//var _Clipperz_PM_Components_Panels_base_id_ = 0;
35 32
36//############################################################################# 33//#############################################################################
37 34
38Clipperz.PM.Components.Panels.BasePanel = function(anElement, args) { 35Clipperz.PM.Components.Panels.BasePanel = function(anElement, args) {
39 args = args || {}; 36 args = args || {};
40 37
41 Clipperz.PM.Components.Panels.BasePanel.superclass.constructor.call(this, anElement, args); 38 Clipperz.PM.Components.Panels.BasePanel.superclass.constructor.call(this, anElement, args);
42 39
43 this._user = args.user || null; 40 this._user = args.user || null;
44 this._delegate = args.delegate || null; 41 this._delegate = args.delegate || null;
45 this._tabPanelController = null; 42 this._tabPanelController = null;
46 //Clipperz.NotificationCenter.register(null, 'switchLanguage', this, 'switchLanguageHandler'); 43 //Clipperz.NotificationCenter.register(null, 'switchLanguage', this, 'switchLanguageHandler');
47 44
48 //this._ids = {}; 45 //this._ids = {};
49 46
50 return this; 47 return this;
51} 48}
52 49
53//============================================================================= 50//=============================================================================
54 51
55YAHOO.extendX(Clipperz.PM.Components.Panels.BasePanel, Clipperz.PM.Components.BaseComponent, { 52YAHOO.extendX(Clipperz.PM.Components.Panels.BasePanel, Clipperz.PM.Components.BaseComponent, {
56 53
57 'toString': function() { 54 'toString': function() {
58 return "Clipperz.PM.Components.Panels.BasePanel component"; 55 return "Clipperz.PM.Components.Panels.BasePanel component";
59 }, 56 },
60 57
61 //------------------------------------------------------------------------- 58 //-------------------------------------------------------------------------
62 59
63 'user': function() { 60 'user': function() {
64 return this._user; 61 return this._user;
65 }, 62 },
66 63
67 'setUser': function(aValue) { 64 'setUser': function(aValue) {
68 this._user = aValue; 65 this._user = aValue;
69 }, 66 },
70 67
71 //------------------------------------------------------------------------- 68 //-------------------------------------------------------------------------
72 69
73 'delegate': function() { 70 'delegate': function() {
74 return this._delegate; 71 return this._delegate;
75 }, 72 },
76 73
77 'setDelegate': function(aValue) { 74 'setDelegate': function(aValue) {
78 this._delegate = aValue; 75 this._delegate = aValue;
79 }, 76 },
80 77
81 //------------------------------------------------------------------------- 78 //-------------------------------------------------------------------------
82 79
83 'tabPanelController': function() { 80 'tabPanelController': function() {
84 return this._tabPanelController; 81 return this._tabPanelController;
85 }, 82 },
86 83
87 'switchLanguageHandler': function() { 84 'switchLanguageHandler': function() {
88//MochiKit.Logging.logDebug(">>> BasePanel.switchLanguageHandler [" + this.toString() + "]"); 85//MochiKit.Logging.logDebug(">>> BasePanel.switchLanguageHandler [" + this.toString() + "]");
89 this.render(); 86 this.render();
90//MochiKit.Logging.logDebug("<<< BasePanel.switchLanguageHandler [" + this.toString() + "]"); 87//MochiKit.Logging.logDebug("<<< BasePanel.switchLanguageHandler [" + this.toString() + "]");
91 }, 88 },
92 89
93 //------------------------------------------------------------------------- 90 //-------------------------------------------------------------------------
94 __syntaxFix__: "syntax fix" 91 __syntaxFix__: "syntax fix"
95 92
96}); 93});
diff --git a/frontend/beta/js/Clipperz/PM/Components/Panels/ContactsPanel.js b/frontend/beta/js/Clipperz/PM/Components/Panels/ContactsPanel.js
index f0eb9c8..5a91d83 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Panels/ContactsPanel.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Panels/ContactsPanel.js
@@ -1,105 +1,102 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Panels) == 'undefined') { Clipperz.PM.Components.Panels = {}; } 29if (typeof(Clipperz.PM.Components.Panels) == 'undefined') { Clipperz.PM.Components.Panels = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.Panels.ContactsPanel = function(anElement, args) { 33Clipperz.PM.Components.Panels.ContactsPanel = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 Clipperz.PM.Components.Panels.ContactsPanel.superclass.constructor.call(this, anElement, args); 36 Clipperz.PM.Components.Panels.ContactsPanel.superclass.constructor.call(this, anElement, args);
40 37
41 this.render(); 38 this.render();
42 39
43 return this; 40 return this;
44} 41}
45 42
46//============================================================================= 43//=============================================================================
47 44
48YAHOO.extendX(Clipperz.PM.Components.Panels.ContactsPanel, Clipperz.PM.Components.Panels.BasePanel, { 45YAHOO.extendX(Clipperz.PM.Components.Panels.ContactsPanel, Clipperz.PM.Components.Panels.BasePanel, {
49 46
50 'toString': function() { 47 'toString': function() {
51 return "Clipperz.PM.Components.ContactsPanel component"; 48 return "Clipperz.PM.Components.ContactsPanel component";
52 }, 49 },
53 50
54 //------------------------------------------------------------------------- 51 //-------------------------------------------------------------------------
55 52
56 'render': function() { 53 'render': function() {
57 // var tabPanelControllerConfig; 54 // var tabPanelControllerConfig;
58 55
59 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'table', border:'0', cellspacing:'0', cellpadding:'0', children:[ 56 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'table', border:'0', cellspacing:'0', cellpadding:'0', children:[
60 {tag:'tbody', children:[ 57 {tag:'tbody', children:[
61 {tag:'tr', children:[ 58 {tag:'tr', children:[
62 {tag:'td', valign:'top', width:'200', children:[ 59 {tag:'td', valign:'top', width:'200', children:[
63 {tag:'ul', id:"dataSubMenu", cls:'subMenu', children:[ 60 {tag:'ul', id:"dataSubMenu", cls:'subMenu', children:[
64 {tag:'li', id:this.getId('contacts'), htmlString:Clipperz.PM.Strings['contactsTabLabel']}, 61 {tag:'li', id:this.getId('contacts'), htmlString:Clipperz.PM.Strings['contactsTabLabel']},
65 ]} 62 ]}
66 ]}, 63 ]},
67 {tag:'td', valign:'top', children:[ 64 {tag:'td', valign:'top', children:[
68 {tag:'ul', cls:'clipperzTabPanels', children:[ 65 {tag:'ul', cls:'clipperzTabPanels', children:[
69 {tag:'li', id:this.getId('contactsPanel'), children:[ 66 {tag:'li', id:this.getId('contactsPanel'), children:[
70 {tag:'div', cls:'clipperzSubPanel', children:[ 67 {tag:'div', cls:'clipperzSubPanel', children:[
71 {tag:'h5', htmlString:Clipperz.PM.Strings['contactsTabTitle']}, 68 {tag:'h5', htmlString:Clipperz.PM.Strings['contactsTabTitle']},
72 {tag:'div', htmlString:Clipperz.PM.Strings['comingSoon']} 69 {tag:'div', htmlString:Clipperz.PM.Strings['comingSoon']}
73 ]} 70 ]}
74 ]} 71 ]}
75 ]} 72 ]}
76 ]} 73 ]}
77 ]} 74 ]}
78 ]} 75 ]}
79 ]}); 76 ]});
80 77
81 // tabPanelControllerConfig = {} 78 // tabPanelControllerConfig = {}
82 // tabPanelControllerConfig[this.getId('contacts')] = this.getId('contactsPanel'); 79 // tabPanelControllerConfig[this.getId('contacts')] = this.getId('contactsPanel');
83 // new Clipperz.PM.Components.TabPanel.TabPanelController({ config:tabPanelControllerConfig, selectedTab:this.getId('contacts') }); 80 // new Clipperz.PM.Components.TabPanel.TabPanelController({ config:tabPanelControllerConfig, selectedTab:this.getId('contacts') });
84 this.tabPanelController().setUp(); 81 this.tabPanelController().setUp();
85 }, 82 },
86 83
87 //------------------------------------------------------------------------- 84 //-------------------------------------------------------------------------
88 85
89 'tabPanelController': function() { 86 'tabPanelController': function() {
90 if (this._tabPanelController == null) { 87 if (this._tabPanelController == null) {
91 var tabPanelControllerConfig; 88 var tabPanelControllerConfig;
92 89
93 tabPanelControllerConfig = {} 90 tabPanelControllerConfig = {}
94 tabPanelControllerConfig[this.getId('contacts')] = this.getId('contactsPanel'); 91 tabPanelControllerConfig[this.getId('contacts')] = this.getId('contactsPanel');
95 this._tabPanelController = new Clipperz.PM.Components.TabPanel.TabPanelController({ config:tabPanelControllerConfig, selectedTab:this.getId('contacts') }); 92 this._tabPanelController = new Clipperz.PM.Components.TabPanel.TabPanelController({ config:tabPanelControllerConfig, selectedTab:this.getId('contacts') });
96 } 93 }
97 94
98 return this._tabPanelController; 95 return this._tabPanelController;
99 }, 96 },
100 97
101 //------------------------------------------------------------------------- 98 //-------------------------------------------------------------------------
102 __syntaxFix__: "syntax fix" 99 __syntaxFix__: "syntax fix"
103 100
104}); 101});
105 102
diff --git a/frontend/beta/js/Clipperz/PM/Components/Panels/DataPanel.js b/frontend/beta/js/Clipperz/PM/Components/Panels/DataPanel.js
index 759903f..11d4bd7 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Panels/DataPanel.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Panels/DataPanel.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Panels) == 'undefined') { Clipperz.PM.Components.Panels = {}; } 29if (typeof(Clipperz.PM.Components.Panels) == 'undefined') { Clipperz.PM.Components.Panels = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.Panels.DataPanel = function(anElement, args) { 33Clipperz.PM.Components.Panels.DataPanel = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 Clipperz.PM.Components.Panels.DataPanel.superclass.constructor.call(this, anElement, args); 36 Clipperz.PM.Components.Panels.DataPanel.superclass.constructor.call(this, anElement, args);
40 37
41 this._progressWidth = 400; 38 this._progressWidth = 400;
42 39
43 40
44 this.render(); 41 this.render();
45 42
46 return this; 43 return this;
47} 44}
48 45
49//============================================================================= 46//=============================================================================
50 47
51YAHOO.extendX(Clipperz.PM.Components.Panels.DataPanel, Clipperz.PM.Components.Panels.BasePanel, { 48YAHOO.extendX(Clipperz.PM.Components.Panels.DataPanel, Clipperz.PM.Components.Panels.BasePanel, {
52 49
53 'toString': function() { 50 'toString': function() {
54 return "Clipperz.PM.Components.DataPanel component"; 51 return "Clipperz.PM.Components.DataPanel component";
55 }, 52 },
56 53
57 //------------------------------------------------------------------------- 54 //-------------------------------------------------------------------------
58 55
59 'render': function() { 56 'render': function() {
60 MochiKit.Signal.disconnectAllTo(this); 57 MochiKit.Signal.disconnectAllTo(this);
61 Clipperz.NotificationCenter.unregister(this); 58 Clipperz.NotificationCenter.unregister(this);
62 this.element().update(""); 59 this.element().update("");
63 60
64 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'table', border:'0', cellspacing:'0', cellpadding:'0', children:[ 61 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'table', border:'0', cellspacing:'0', cellpadding:'0', children:[
65 {tag:'tbody', children:[ 62 {tag:'tbody', children:[
66 {tag:'tr', children:[ 63 {tag:'tr', children:[
67 {tag:'td', valign:'top', width:'200', children:[ 64 {tag:'td', valign:'top', width:'200', children:[
68 {tag:'ul', id:"dataSubMenu", cls:'subMenu', children:[ 65 {tag:'ul', id:"dataSubMenu", cls:'subMenu', children:[
69 {tag:'li', id:'offlineCopyTab', htmlString:Clipperz.PM.Strings['offlineCopyTabLabel']}, 66 {tag:'li', id:'offlineCopyTab', htmlString:Clipperz.PM.Strings['offlineCopyTabLabel']},
70 {tag:'li', id:'sharingTab', htmlString:Clipperz.PM.Strings['sharingTabLabel']}, 67 {tag:'li', id:'sharingTab', htmlString:Clipperz.PM.Strings['sharingTabLabel']},
71 {tag:'li', id:'importTab', htmlString:Clipperz.PM.Strings['importTabLabel']}, 68 {tag:'li', id:'importTab', htmlString:Clipperz.PM.Strings['importTabLabel']},
72 {tag:'li', id:'printingTab', htmlString:Clipperz.PM.Strings['printingTabLabel']} 69 {tag:'li', id:'printingTab', htmlString:Clipperz.PM.Strings['printingTabLabel']}
73 ]} 70 ]}
74 ]}, 71 ]},
75 {tag:'td', valign:'top', children:[ 72 {tag:'td', valign:'top', children:[
76 {tag:'ul', cls:'clipperzTabPanels', children:[ 73 {tag:'ul', cls:'clipperzTabPanels', children:[
77 {tag:'li', id:this.getId('offlineCopyPanel'), children:[ 74 {tag:'li', id:this.getId('offlineCopyPanel'), children:[
78 {tag:'div', cls:'clipperzSubPanel', children:[ 75 {tag:'div', cls:'clipperzSubPanel', children:[
79 {tag:'h5', htmlString:Clipperz.PM.Strings['offlineCopyTabTitle']}, 76 {tag:'h5', htmlString:Clipperz.PM.Strings['offlineCopyTabTitle']},
80 {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['offlineCopyTabDescription']}, 77 {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['offlineCopyTabDescription']},
81 {tag:'div', id:this.getId('offlineCopyLinkBox'), children:[ 78 {tag:'div', id:this.getId('offlineCopyLinkBox'), children:[
82 {tag:'a', id:'offlineCopyLink', href:'#', htmlString:Clipperz.PM.Strings['offlineCopyDownloadLinkLabel']} 79 {tag:'a', id:'offlineCopyLink', href:'#', htmlString:Clipperz.PM.Strings['offlineCopyDownloadLinkLabel']}
83 ]}, 80 ]},
84 {tag:'div', id:this.getId('offlineCopyLinkBox_read-only'), children:[ 81 {tag:'div', id:this.getId('offlineCopyLinkBox_read-only'), children:[
85 {tag:'span', cls:'read-only', htmlString:Clipperz.PM.Strings['offlineCopyDownloadLinkLabel']} 82 {tag:'span', cls:'read-only', htmlString:Clipperz.PM.Strings['offlineCopyDownloadLinkLabel']}
86 ]} 83 ]}
87 ]} 84 ]}
88 ]}, 85 ]},
89 {tag:'li', id:this.getId('sharingPanel'), children:[ 86 {tag:'li', id:this.getId('sharingPanel'), children:[
90 {tag:'div', cls:'clipperzSubPanel', children:[ 87 {tag:'div', cls:'clipperzSubPanel', children:[
91 {tag:'h5', htmlString:Clipperz.PM.Strings['sharingTabTitle']}, 88 {tag:'h5', htmlString:Clipperz.PM.Strings['sharingTabTitle']},
92 {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['sharingTabDescription']} 89 {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['sharingTabDescription']}
93 ]} 90 ]}
94 ]}, 91 ]},
95 {tag:'li', id:this.getId('importPanel'), children:[ 92 {tag:'li', id:this.getId('importPanel'), children:[
96 {tag:'div', cls:'clipperzSubPanel', children:[ 93 {tag:'div', cls:'clipperzSubPanel', children:[
97 {tag:'div', id:this.getId('importPanelMainComponent')} 94 {tag:'div', id:this.getId('importPanelMainComponent')}
98 ]} 95 ]}
99 ]}, 96 ]},
100 {tag:'li', id:this.getId('printingPanel'), children:[ 97 {tag:'li', id:this.getId('printingPanel'), children:[
101 {tag:'div', cls:'clipperzSubPanel', children:[ 98 {tag:'div', cls:'clipperzSubPanel', children:[
102 {tag:'h5', htmlString:Clipperz.PM.Strings['printingTabTitle']}, 99 {tag:'h5', htmlString:Clipperz.PM.Strings['printingTabTitle']},
103 100
104 {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['printingTabDescription']}, 101 {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['printingTabDescription']},
105 {tag:'div', id:this.getId('printingLinkBox'), children:[ 102 {tag:'div', id:this.getId('printingLinkBox'), children:[
106 {tag:'a', id:'printingLink', href:'#', htmlString:Clipperz.PM.Strings['printingLinkLabel']} 103 {tag:'a', id:'printingLink', href:'#', htmlString:Clipperz.PM.Strings['printingLinkLabel']}
107 ]}, 104 ]},
108 105
109 {tag:'hr'}, 106 {tag:'hr'},
110 107
111 {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['exportTabDescription']}, 108 {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['exportTabDescription']},
112 {tag:'div', id:this.getId('exportLinkBox'), children:[ 109 {tag:'div', id:this.getId('exportLinkBox'), children:[
113 {tag:'a', id:'exportLink', href:'#', htmlString:Clipperz.PM.Strings['exportLinkLabel']} 110 {tag:'a', id:'exportLink', href:'#', htmlString:Clipperz.PM.Strings['exportLinkLabel']}
114 ]} 111 ]}
115 ]} 112 ]}
116 ]} 113 ]}
117 ]} 114 ]}
118 ]} 115 ]}
119 ]} 116 ]}
120 ]} 117 ]}
121 ]}); 118 ]});
122 119
123 this.tabPanelController().setUp(); 120 this.tabPanelController().setUp();
124 121
125 if (Clipperz.PM.Proxy.defaultProxy.isReadOnly()) { 122 if (Clipperz.PM.Proxy.defaultProxy.isReadOnly()) {
126 this.getElement('offlineCopyLinkBox').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide(); 123 this.getElement('offlineCopyLinkBox').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
127 } else { 124 } else {
128 this.getElement('offlineCopyLinkBox_read-only').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide(); 125 this.getElement('offlineCopyLinkBox_read-only').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
129 MochiKit.Signal.connect('offlineCopyLink', 'onclick', this, 'downloadOfflineCopy'); 126 MochiKit.Signal.connect('offlineCopyLink', 'onclick', this, 'downloadOfflineCopy');
130 } 127 }
131 128
132 new Clipperz.PM.Components.Import.MainComponent(this.getElement('importPanelMainComponent'), {user:this.user()}); 129 new Clipperz.PM.Components.Import.MainComponent(this.getElement('importPanelMainComponent'), {user:this.user()});
133 130
134 MochiKit.Signal.connect('printingLink', 'onclick', this, 'printAllData'); 131 MochiKit.Signal.connect('printingLink', 'onclick', this, 'printAllData');
135 MochiKit.Signal.connect('exportLink', 'onclick', this, 'exportAllData'); 132 MochiKit.Signal.connect('exportLink', 'onclick', this, 'exportAllData');
136 133
137 Clipperz.NotificationCenter.register(null, 'switchLanguage', this, 'switchLanguageHandler'); 134 Clipperz.NotificationCenter.register(null, 'switchLanguage', this, 'switchLanguageHandler');
138 }, 135 },
139 136
140 //------------------------------------------------------------------------- 137 //-------------------------------------------------------------------------
141 138
142 'tabPanelController': function() { 139 'tabPanelController': function() {
143 if (this._tabPanelController == null) { 140 if (this._tabPanelController == null) {
144 var tabPanelControllerConfig; 141 var tabPanelControllerConfig;
145 142
146 tabPanelControllerConfig = {} 143 tabPanelControllerConfig = {}
147 tabPanelControllerConfig['offlineCopyTab'] = this.getId('offlineCopyPanel'); 144 tabPanelControllerConfig['offlineCopyTab'] = this.getId('offlineCopyPanel');
148 tabPanelControllerConfig['sharingTab'] = this.getId('sharingPanel'); 145 tabPanelControllerConfig['sharingTab'] = this.getId('sharingPanel');
149 tabPanelControllerConfig['importTab'] = this.getId('importPanel'); 146 tabPanelControllerConfig['importTab'] = this.getId('importPanel');
150 tabPanelControllerConfig['printingTab'] = this.getId('printingPanel'); 147 tabPanelControllerConfig['printingTab'] = this.getId('printingPanel');
151 this._tabPanelController = new Clipperz.PM.Components.TabPanel.TabPanelController({ 148 this._tabPanelController = new Clipperz.PM.Components.TabPanel.TabPanelController({
152 name: 'dataTabPanel', 149 name: 'dataTabPanel',
diff --git a/frontend/beta/js/Clipperz/PM/Components/Panels/LoginPanel.js b/frontend/beta/js/Clipperz/PM/Components/Panels/LoginPanel.js
index 84b2475..ef2b91c 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Panels/LoginPanel.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Panels/LoginPanel.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Panels) == 'undefined') { Clipperz.PM.Components.Panels = {}; } 29if (typeof(Clipperz.PM.Components.Panels) == 'undefined') { Clipperz.PM.Components.Panels = {}; }
33 30
34 31
35Clipperz.PM.Components.Panels.LoginPanel = function(anElement, args) { 32Clipperz.PM.Components.Panels.LoginPanel = function(anElement, args) {
36 args = args || {}; 33 args = args || {};
37 34
38 Clipperz.PM.Components.Panels.LoginPanel.superclass.constructor.call(this, anElement, args); 35 Clipperz.PM.Components.Panels.LoginPanel.superclass.constructor.call(this, anElement, args);
39 36
40 this._showLoginFormAnimator = null; 37 this._showLoginFormAnimator = null;
41 this._showRegistrationFormAnimator = null; 38 this._showRegistrationFormAnimator = null;
42 this._shouldShowRegistrationAlert = true; 39 this._shouldShowRegistrationAlert = true;
43 40
44 this._visibleForm = null; 41 this._visibleForm = null;
45 //this._isPassphraseVisible = true; 42 //this._isPassphraseVisible = true;
46 43
47 Clipperz.NotificationCenter.register(null, 'switchLanguage', this, 'switchLanguageHandler'); 44 Clipperz.NotificationCenter.register(null, 'switchLanguage', this, 'switchLanguageHandler');
48 45
49 this.render(); 46 this.render();
50 47
51 return this; 48 return this;
52} 49}
53 50
54//============================================================================= 51//=============================================================================
55 52
56//MochiKit.Base.update(Clipperz.PM.Components.Panels.LoginPanel.prototype, { 53//MochiKit.Base.update(Clipperz.PM.Components.Panels.LoginPanel.prototype, {
57YAHOO.extendX(Clipperz.PM.Components.Panels.LoginPanel, Clipperz.PM.Components.Panels.BasePanel, { 54YAHOO.extendX(Clipperz.PM.Components.Panels.LoginPanel, Clipperz.PM.Components.Panels.BasePanel, {
58 55
59 'toString': function() { 56 'toString': function() {
60 return "Clipperz.PM.Components.LoginPanel component"; 57 return "Clipperz.PM.Components.LoginPanel component";
61 }, 58 },
62 59
63 //------------------------------------------------------------------------- 60 //-------------------------------------------------------------------------
64 61
65 'render': function() { 62 'render': function() {
66 var result; 63 var result;
67 varlayout; 64 varlayout;
68 var registerButton; 65 var registerButton;
69 66
70 MochiKit.Signal.disconnectAllTo(this); 67 MochiKit.Signal.disconnectAllTo(this);
71 this.element().update(""); 68 this.element().update("");
72 69
73//MochiKit.Logging.logDebug(">>> LoginPanel.initPanel"); 70//MochiKit.Logging.logDebug(">>> LoginPanel.initPanel");
74 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', id:this.getId('baseDiv'), cls:'LoginPanel', children:[ 71 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', id:this.getId('baseDiv'), cls:'LoginPanel', children:[
75 {tag:'table', children:[ 72 {tag:'table', children:[
76 {tag:'thead'}, 73 {tag:'thead'},
77 {tag:'tbody', children:[ 74 {tag:'tbody', children:[
78 {tag:'tr', children:[ 75 {tag:'tr', children:[
79 {tag:'td', valign:'top', children:[ 76 {tag:'td', valign:'top', children:[
80 {tag:'div', cls:'clipperzServiceDescription', htmlString:Clipperz.PM.Strings['clipperzServiceDescription']} 77 {tag:'div', cls:'clipperzServiceDescription', htmlString:Clipperz.PM.Strings['clipperzServiceDescription']}
81 ]}, 78 ]},
82 {tag:'td', valign:'top', align:'right', children:[ 79 {tag:'td', valign:'top', align:'right', children:[
83{tag:'div', id:this.getId('forms'), cls:'clipperzLoginForm', children:[ 80{tag:'div', id:this.getId('forms'), cls:'clipperzLoginForm', children:[
84 {tag:'div', id:this.getId('loginForm'), cls:'loginForm', children:[ 81 {tag:'div', id:this.getId('loginForm'), cls:'loginForm', children:[
85 {tag:'div', cls:'loginFormHeaderBox', children:[{tag:'h3', htmlString:Clipperz.PM.Strings['loginFormTitle']}]}, 82 {tag:'div', cls:'loginFormHeaderBox', children:[{tag:'h3', htmlString:Clipperz.PM.Strings['loginFormTitle']}]},
86 {tag:'form', id:this.getId('loginForm_form'), autocomplete:'off', children:[ 83 {tag:'form', id:this.getId('loginForm_form'), autocomplete:'off', children:[
87 84
88 {tag:'table', cls:'formLayout', children:[ 85 {tag:'table', cls:'formLayout', children:[
89 {tag:'thead'}, 86 {tag:'thead'},
90 {tag:'tbody', children:[ 87 {tag:'tbody', children:[
91 {tag:'tr', cls:'formFieldTR', children:[ 88 {tag:'tr', cls:'formFieldTR', children:[
92 {tag:'td', width:'90', htmlString:Clipperz.PM.Strings['loginFormUsernameLabel']}, 89 {tag:'td', width:'90', htmlString:Clipperz.PM.Strings['loginFormUsernameLabel']},
93 {tag:'td', children:[ 90 {tag:'td', children:[
94 {tag:'input', id:this.getId('login_username'), cls:'loginFormField', type:'text', name:'username'} 91 {tag:'input', id:this.getId('login_username'), cls:'loginFormField', type:'text', name:'username'}
95 ]} 92 ]}
96 ]}, 93 ]},
97 {tag:'tr', cls:'formFieldTR', children:[ 94 {tag:'tr', cls:'formFieldTR', children:[
98 {tag:'td', htmlString:Clipperz.PM.Strings['loginFormPassphraseLabel']}, 95 {tag:'td', htmlString:Clipperz.PM.Strings['loginFormPassphraseLabel']},
99 {tag:'td', children:[ 96 {tag:'td', children:[
100 {tag:'div', id:this.getId('passphraseDIV'), children:[ 97 {tag:'div', id:this.getId('passphraseDIV'), children:[
101 {tag:'input', id:this.getId('login_passphrase'), cls:'loginFormField', type:'password', name:'passphrase'} 98 {tag:'input', id:this.getId('login_passphrase'), cls:'loginFormField', type:'password', name:'passphrase'}
102 ]}, 99 ]},
103 {tag:'div', cls:'oneTimePassword', id:this.getId('oneTimePasswordDIV'), children:[ 100 {tag:'div', cls:'oneTimePassword', id:this.getId('oneTimePasswordDIV'), children:[
104 {tag:'input', type:'text', id:this.getId('oneTimePassword_1'), name:'passphrase'}, 101 {tag:'input', type:'text', id:this.getId('oneTimePassword_1'), name:'passphrase'},
105 {tag:'span', html:'-'}, 102 {tag:'span', html:'-'},
106 {tag:'input', type:'text', id:this.getId('oneTimePassword_2'), name:'passphrase'}, 103 {tag:'input', type:'text', id:this.getId('oneTimePassword_2'), name:'passphrase'},
107 {tag:'span', html:'-'}, 104 {tag:'span', html:'-'},
108 {tag:'input', type:'text', id:this.getId('oneTimePassword_3'), name:'passphrase'}, 105 {tag:'input', type:'text', id:this.getId('oneTimePassword_3'), name:'passphrase'},
109 {tag:'span', html:'-'}, 106 {tag:'span', html:'-'},
110 {tag:'input', type:'text', id:this.getId('oneTimePassword_4'), name:'passphrase'} 107 {tag:'input', type:'text', id:this.getId('oneTimePassword_4'), name:'passphrase'}
111 ]} 108 ]}
112 ]} 109 ]}
113 ]}, 110 ]},
114 {tag:'tr', cls:'formFieldTR', id:this.getId('passwordTypeChooserTR'), children:[ 111 {tag:'tr', cls:'formFieldTR', id:this.getId('passwordTypeChooserTR'), children:[
115 {tag:'td', valign:'top', align:'right', children:[ 112 {tag:'td', valign:'top', align:'right', children:[
116 {tag:'input', type:'checkbox', cls:'passwordTypeCheckbox', id:this.getId('useOneTimePasswordCheckbox')} 113 {tag:'input', type:'checkbox', cls:'passwordTypeCheckbox', id:this.getId('useOneTimePasswordCheckbox')}
117 ]}, 114 ]},
118 {tag:'td', children:[ 115 {tag:'td', children:[
119 {tag:'div', cls:'passwordTypeChooser', children:[ 116 {tag:'div', cls:'passwordTypeChooser', children:[
120 {tag:'h4', htmlString:Clipperz.PM.Strings['loginFormOneTimePasswordCheckboxLabel']}, 117 {tag:'h4', htmlString:Clipperz.PM.Strings['loginFormOneTimePasswordCheckboxLabel']},
121 {tag:'span', htmlString:Clipperz.PM.Strings['loginFormOneTimePasswordCheckboxDescription']} 118 {tag:'span', htmlString:Clipperz.PM.Strings['loginFormOneTimePasswordCheckboxDescription']}
122 ]} 119 ]}
123 ]} 120 ]}
124 ]}, 121 ]},
125 {tag:'tr', children:[ 122 {tag:'tr', children:[
126 {tag:'td'}, 123 {tag:'td'},
127 {tag:'td', children:[ 124 {tag:'td', children:[
128 {tag:'div', id:this.getId('login_submit')} 125 {tag:'div', id:this.getId('login_submit')}
129 ]} 126 ]}
130 ]} 127 ]}
131 ]}, 128 ]},
132 {tag:'tfoot'} 129 {tag:'tfoot'}
133 ]} 130 ]}
134 ]}, 131 ]},
135 132
136 {tag:'div', cls:'loginFormFooterBox', children:[ 133 {tag:'div', cls:'loginFormFooterBox', children:[
137 {tag:'ul', children:[ 134 {tag:'ul', children:[
138 {tag:'li', id:this.getId('showRegistrationLI'), children:[ 135 {tag:'li', id:this.getId('showRegistrationLI'), children:[
139 {tag:'span', htmlString:Clipperz.PM.Strings['loginFormDontHaveAnAccountLabel']}, 136 {tag:'span', htmlString:Clipperz.PM.Strings['loginFormDontHaveAnAccountLabel']},
140 {tag:'a', href:'.', id:this.getId('showRegistration'), cls:'clipperzActionLink', htmlString:Clipperz.PM.Strings['loginFormCreateOneLabel']} 137 {tag:'a', href:'.', id:this.getId('showRegistration'), cls:'clipperzActionLink', htmlString:Clipperz.PM.Strings['loginFormCreateOneLabel']}
141 ]}, 138 ]},
142 {tag:'li', children:[ 139 {tag:'li', children:[
143 {tag:'span', htmlString:Clipperz.PM.Strings['loginFormForgotYourCredentialsLabel']}, 140 {tag:'span', htmlString:Clipperz.PM.Strings['loginFormForgotYourCredentialsLabel']},
144 {tag:'a', href:Clipperz.PM.Strings['loginFormAarghThatsBadUrl'], target:'Clipperz_Help', htmlString:Clipperz.PM.Strings['loginFormAarghThatsBadLabel']} 141 {tag:'a', href:Clipperz.PM.Strings['loginFormAarghThatsBadUrl'], target:'Clipperz_Help', htmlString:Clipperz.PM.Strings['loginFormAarghThatsBadLabel']}
145 ]}, 142 ]},
146 {tag:'li', children:[ 143 {tag:'li', children:[
147 {tag:'span', htmlString:Clipperz.PM.Strings['loginFormAfraidOfMaliciousScriptsLabel']}, 144 {tag:'span', htmlString:Clipperz.PM.Strings['loginFormAfraidOfMaliciousScriptsLabel']},
148 {tag:'a', href:Clipperz.PM.Strings['loginFormVerifyTheCodeUrl'], target:'Clipperz_Help', htmlString:Clipperz.PM.Strings['loginFormVerifyTheCodeLabel']} 145 {tag:'a', href:Clipperz.PM.Strings['loginFormVerifyTheCodeUrl'], target:'Clipperz_Help', htmlString:Clipperz.PM.Strings['loginFormVerifyTheCodeLabel']}
149 ]} 146 ]}
150 ]} 147 ]}
151 ]} 148 ]}
152 ]}, 149 ]},
diff --git a/frontend/beta/js/Clipperz/PM/Components/Panels/LogoutPanel.js b/frontend/beta/js/Clipperz/PM/Components/Panels/LogoutPanel.js
index d7abfd6..b8cc556 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Panels/LogoutPanel.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Panels/LogoutPanel.js
@@ -1,73 +1,70 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Panels) == 'undefined') { Clipperz.PM.Components.Panels = {}; } 29if (typeof(Clipperz.PM.Components.Panels) == 'undefined') { Clipperz.PM.Components.Panels = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.Panels.LogoutPanel = function(args) { 33Clipperz.PM.Components.Panels.LogoutPanel = function(args) {
37 args = args || {}; 34 args = args || {};
38 35
39 Clipperz.PM.Components.Panels.LogoutPanel.superclass.constructor.call(this, args); 36 Clipperz.PM.Components.Panels.LogoutPanel.superclass.constructor.call(this, args);
40 37
41 return this; 38 return this;
42} 39}
43 40
44//============================================================================= 41//=============================================================================
45 42
46YAHOO.extendX(Clipperz.PM.Components.Panels.LogoutPanel, Clipperz.PM.Components.Panels.BasePanel, { 43YAHOO.extendX(Clipperz.PM.Components.Panels.LogoutPanel, Clipperz.PM.Components.Panels.BasePanel, {
47 44
48 'toString': function() { 45 'toString': function() {
49 return "Clipperz.PM.Components.LogoutPanel component"; 46 return "Clipperz.PM.Components.LogoutPanel component";
50 }, 47 },
51 48
52 //------------------------------------------------------------------------- 49 //-------------------------------------------------------------------------
53 50
54 'initPanel': function() { 51 'initPanel': function() {
55 var result; 52 var result;
56 varlayout; 53 varlayout;
57 54
58 result = new YAHOO.ext.ContentPanel(this.getId('panel'), {title:'logout', closable:false, autoCreate:true}); 55 result = new YAHOO.ext.ContentPanel(this.getId('panel'), {title:'logout', closable:false, autoCreate:true});
59 56
60 Clipperz.YUI.DomHelper.append(result.getEl().dom, 57 Clipperz.YUI.DomHelper.append(result.getEl().dom,
61 {tag:'div', children:[ 58 {tag:'div', children:[
62 {tag:'h2', html:'Logout panel'} 59 {tag:'h2', html:'Logout panel'}
63 ]} 60 ]}
64 ); 61 );
65 62
66 return result; 63 return result;
67 }, 64 },
68 65
69 //------------------------------------------------------------------------- 66 //-------------------------------------------------------------------------
70 __syntaxFix__: "syntax fix" 67 __syntaxFix__: "syntax fix"
71 68
72}); 69});
73 70
diff --git a/frontend/beta/js/Clipperz/PM/Components/Panels/MainPanel.js b/frontend/beta/js/Clipperz/PM/Components/Panels/MainPanel.js
index e2036d0..29ef516 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Panels/MainPanel.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Panels/MainPanel.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Panels) == 'undefined') { Clipperz.PM.Components.Panels = {}; } 29if (typeof(Clipperz.PM.Components.Panels) == 'undefined') { Clipperz.PM.Components.Panels = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.Panels.MainPanel = function(anElement, args) { 33Clipperz.PM.Components.Panels.MainPanel = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 Clipperz.PM.Components.Panels.MainPanel.superclass.constructor.call(this, anElement, args); 36 Clipperz.PM.Components.Panels.MainPanel.superclass.constructor.call(this, anElement, args);
40 37
41 this._recordListDataModel = null; 38 this._recordListDataModel = null;
42 this._selectedRecord = null; 39 this._selectedRecord = null;
43 this._recordDetailComponent = null; 40 this._recordDetailComponent = null;
44 this._recordListGrid = null; 41 this._recordListGrid = null;
45 42
46 this._directLinkItemTemplate = null; 43 this._directLinkItemTemplate = null;
47 this._recordItemTemplate = null; 44 this._recordItemTemplate = null;
48 45
49 this._addNewRecordButton = null; 46 this._addNewRecordButton = null;
50 this._deleteRecordButton = null; 47 this._deleteRecordButton = null;
51 48
52 this._creationWizard = null; 49 this._creationWizard = null;
53 50
54 Clipperz.NotificationCenter.register(null, 'selectAndEnterEditMode', this, 'selectRecordAndEnterEditModeHandler'); 51 Clipperz.NotificationCenter.register(null, 'selectAndEnterEditMode', this, 'selectRecordAndEnterEditModeHandler');
55 52
56 Clipperz.NotificationCenter.register(null, 'recordAdded', this, 'recordAddedHandler'); 53 Clipperz.NotificationCenter.register(null, 'recordAdded', this, 'recordAddedHandler');
57 Clipperz.NotificationCenter.register(null, 'recordUpdated', this, 'recordUpdatedHandler'); 54 Clipperz.NotificationCenter.register(null, 'recordUpdated', this, 'recordUpdatedHandler');
58 Clipperz.NotificationCenter.register(null, 'recordRemoved', this, 'recordRemovedHandler'); 55 Clipperz.NotificationCenter.register(null, 'recordRemoved', this, 'recordRemovedHandler');
59 56
60 Clipperz.NotificationCenter.register(null, 'directLoginAdded', this, 'directLoginAddedHandler'); 57 Clipperz.NotificationCenter.register(null, 'directLoginAdded', this, 'directLoginAddedHandler');
61 Clipperz.NotificationCenter.register(null, 'directLoginUpdated', this, 'directLoginUpdatedHandler'); 58 Clipperz.NotificationCenter.register(null, 'directLoginUpdated', this, 'directLoginUpdatedHandler');
62 Clipperz.NotificationCenter.register(null, 'directLoginRemoved', this, 'directLoginRemovedHandler'); 59 Clipperz.NotificationCenter.register(null, 'directLoginRemoved', this, 'directLoginRemovedHandler');
63 60
64 Clipperz.NotificationCenter.register(null, 'accountLocked', this, 'accountLockedHandler'); 61 Clipperz.NotificationCenter.register(null, 'accountLocked', this, 'accountLockedHandler');
65 62
66 MochiKit.Signal.connect(MochiKit.DOM.currentWindow(), 'onresize', this, 'resizeModalMask'); 63 MochiKit.Signal.connect(MochiKit.DOM.currentWindow(), 'onresize', this, 'resizeModalMask');
67 this.render(); 64 this.render();
68 65
69 return this; 66 return this;
70} 67}
71 68
72//============================================================================= 69//=============================================================================
73 70
74YAHOO.extendX(Clipperz.PM.Components.Panels.MainPanel, Clipperz.PM.Components.Panels.BasePanel, { 71YAHOO.extendX(Clipperz.PM.Components.Panels.MainPanel, Clipperz.PM.Components.Panels.BasePanel, {
75 72
76 'toString': function() { 73 'toString': function() {
77 return "Clipperz.PM.Components.Panels.MainPanel component"; 74 return "Clipperz.PM.Components.Panels.MainPanel component";
78 }, 75 },
79 76
80 //------------------------------------------------------------------------- 77 //-------------------------------------------------------------------------
81 78
82 'render': function() { 79 'render': function() {
83 this.element().update(""); 80 this.element().update("");
84 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'table', id:'mainPanelTABLE', border:'0', cellspacing:'0', cellpadding:'0', children:[ 81 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'table', id:'mainPanelTABLE', border:'0', cellspacing:'0', cellpadding:'0', children:[
85 {tag:'tbody', children:[ 82 {tag:'tbody', children:[
86 {tag:'tr', children:[ 83 {tag:'tr', children:[
87 {tag:'td', width:'15', children:[ 84 {tag:'td', width:'15', children:[
88 {tag:'div', cls:'mainPanelMinHeightDiv'} 85 {tag:'div', cls:'mainPanelMinHeightDiv'}
89 ]}, 86 ]},
90 {tag:'td', valign:'top', id:'directLoginsTD', width:'200', children:[ 87 {tag:'td', valign:'top', id:'directLoginsTD', width:'200', children:[
91 {tag:'div', id:'directLoginsBlock', children:[ 88 {tag:'div', id:'directLoginsBlock', children:[
92 {tag:'div', cls:'directLoginsBlockHeaderBox', children:[{tag:'h3', id:'directLoginTitle', htmlString:Clipperz.PM.Strings['mainPanelDirectLoginBlockLabel']}]}, 89 {tag:'div', cls:'directLoginsBlockHeaderBox', children:[{tag:'h3', id:'directLoginTitle', htmlString:Clipperz.PM.Strings['mainPanelDirectLoginBlockLabel']}]},
93 {tag:'div', id:'directLoginsDescription', htmlString:Clipperz.PM.Strings['mainPanelDirectLoginBlockDescription']}, 90 {tag:'div', id:'directLoginsDescription', htmlString:Clipperz.PM.Strings['mainPanelDirectLoginBlockDescription']},
94 {tag:'ul', id:'directLogins'} 91 {tag:'ul', id:'directLogins'}
95 ]} 92 ]}
96 ]}, 93 ]},
97 {tag:'td', width:'15', children:[ 94 {tag:'td', width:'15', children:[
98 {tag:'div', cls:'mainPanelMinHeightDiv'} 95 {tag:'div', cls:'mainPanelMinHeightDiv'}
99 ]}, 96 ]},
100 {tag:'td', valign:'top', children:[ 97 {tag:'td', valign:'top', children:[
101 {tag:'div', id:'mainContent', children:[ 98 {tag:'div', id:'mainContent', children:[
102 {tag:'div', id:'recordListBlockHeader'}, 99 {tag:'div', id:'recordListBlockHeader'},
103 {tag:'div', id:'recordListAndDetailBlock', children:[ 100 {tag:'div', id:'recordListAndDetailBlock', children:[
104 {tag:'table', id:'recordListAndDetailBlockTABLE', border:'0', cellspacing:'0', cellpadding:'0', children:[ 101 {tag:'table', id:'recordListAndDetailBlockTABLE', border:'0', cellspacing:'0', cellpadding:'0', children:[
105 {tag:'tbody', children:[ 102 {tag:'tbody', children:[
106 {tag:'tr', children:[ 103 {tag:'tr', children:[
107 {tag:'td', valign:'top', width:'250', children:[ 104 {tag:'td', valign:'top', width:'250', children:[
108 {tag:'div', id:'recordListBlock', children:[ 105 {tag:'div', id:'recordListBlock', children:[
109 {tag:'div', id:'recordListFilterHeader'}, 106 {tag:'div', id:'recordListFilterHeader'},
110 {tag:'ul', id:'records'} 107 {tag:'ul', id:'records'}
111 ]} 108 ]}
112 ]}, 109 ]},
113 {tag:'td', id:'recordDetailSeparatorTD', rowspan:'2', valign:'top', bgcolor:'#ddddff', html:'&nbsp;'}, 110 {tag:'td', id:'recordDetailSeparatorTD', rowspan:'2', valign:'top', bgcolor:'#ddddff', html:'&nbsp;'},
114 {tag:'td', valign:'top', children:[ 111 {tag:'td', valign:'top', children:[
115 {tag:'div', id:'recordDetailMainBlock', children:[ 112 {tag:'div', id:'recordDetailMainBlock', children:[
116 {tag:'div', id:'recordTitleTopBlock'}, 113 {tag:'div', id:'recordTitleTopBlock'},
117 {tag:'div', id:'recordDetailBlock', children:[ 114 {tag:'div', id:'recordDetailBlock', children:[
118 {tag:'div', id:'recordDetail'} 115 {tag:'div', id:'recordDetail'}
119 ]} 116 ]}
120 ]}, 117 ]},
121 {tag:'div', id:'recordCreationWizardMainBlock', children:[ 118 {tag:'div', id:'recordCreationWizardMainBlock', children:[
122 {tag:'div', id:'recordCreationWizard', html:"WIZARD"} 119 {tag:'div', id:'recordCreationWizard', html:"WIZARD"}
123 ]} 120 ]}
124 ]} 121 ]}
125 ]}, 122 ]},
126 {tag:'tr', children:[ 123 {tag:'tr', children:[
127 {tag:'td', id:'cardBoxLowerLeftTD', html:'&nbsp;'}, 124 {tag:'td', id:'cardBoxLowerLeftTD', html:'&nbsp;'},
128 {tag:'td', id:'cardBoxLowerRightTD', html:'&nbsp;'} 125 {tag:'td', id:'cardBoxLowerRightTD', html:'&nbsp;'}
129 ]} 126 ]}
130 ]} 127 ]}
131 ]} 128 ]}
132 ]} 129 ]}
133 ]} 130 ]}
134 ]}, 131 ]},
135 {tag:'td', width:'15', html:"&nbsp;"} 132 {tag:'td', width:'15', html:"&nbsp;"}
136 ]} 133 ]}
137 ]} 134 ]}
138 ]}); 135 ]});
139 136
140 this.renderRecordListBlockHeader(); 137 this.renderRecordListBlockHeader();
141 // this.renderRecordListFilterHeader(); 138 // this.renderRecordListFilterHeader();
142 139
143 YAHOO.ext.Element.get('directLogins').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide(); 140 YAHOO.ext.Element.get('directLogins').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
144 141
145 this.recordDetailComponent(); 142 this.recordDetailComponent();
146 143
147 YAHOO.ext.Element.get('recordDetailMainBlock').setVisibilityMode(YAHOO.ext.Element.DISPLAY).show(); 144 YAHOO.ext.Element.get('recordDetailMainBlock').setVisibilityMode(YAHOO.ext.Element.DISPLAY).show();
148 YAHOO.ext.Element.get('recordCreationWizardMainBlock').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide(); 145 YAHOO.ext.Element.get('recordCreationWizardMainBlock').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide();
149 }, 146 },
150 147
151 //------------------------------------------------------------------------- 148 //-------------------------------------------------------------------------
152 149
diff --git a/frontend/beta/js/Clipperz/PM/Components/Panels/ToolsPanel.js b/frontend/beta/js/Clipperz/PM/Components/Panels/ToolsPanel.js
index abd2621..4f2a015 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Panels/ToolsPanel.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Panels/ToolsPanel.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Panels) == 'undefined') { Clipperz.PM.Components.Panels = {}; } 29if (typeof(Clipperz.PM.Components.Panels) == 'undefined') { Clipperz.PM.Components.Panels = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.Panels.ToolsPanel = function(anElement, args) { 33Clipperz.PM.Components.Panels.ToolsPanel = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 Clipperz.PM.Components.Panels.ToolsPanel.superclass.constructor.call(this, anElement, args); 36 Clipperz.PM.Components.Panels.ToolsPanel.superclass.constructor.call(this, anElement, args);
40 37
41 this._generateButtonElement = null; 38 this._generateButtonElement = null;
42 this._needsRenderingUponTabSwitch = false; 39 this._needsRenderingUponTabSwitch = false;
43 40
44 this.render(); 41 this.render();
45 42
46 return this; 43 return this;
47} 44}
48 45
49//============================================================================= 46//=============================================================================
50 47
51YAHOO.extendX(Clipperz.PM.Components.Panels.ToolsPanel, Clipperz.PM.Components.Panels.BasePanel, { 48YAHOO.extendX(Clipperz.PM.Components.Panels.ToolsPanel, Clipperz.PM.Components.Panels.BasePanel, {
52 49
53 'toString': function() { 50 'toString': function() {
54 return "Clipperz.PM.Components.Panels.ToolsPanel component"; 51 return "Clipperz.PM.Components.Panels.ToolsPanel component";
55 }, 52 },
56 53
57 //------------------------------------------------------------------------- 54 //-------------------------------------------------------------------------
58 55
59 'render': function() { 56 'render': function() {
60 var bookmarkletUrl; 57 var bookmarkletUrl;
61 58
62//MochiKit.Logging.logDebug(">>> ToolsPanel.render"); 59//MochiKit.Logging.logDebug(">>> ToolsPanel.render");
63 Clipperz.NotificationCenter.unregister(this); 60 Clipperz.NotificationCenter.unregister(this);
64 MochiKit.Signal.disconnectAllTo(this); 61 MochiKit.Signal.disconnectAllTo(this);
65 62
66 if (Clipperz_IEisBroken == true) { 63 if (Clipperz_IEisBroken == true) {
67 bookmarkletUrl = bookmarklet_ie; 64 bookmarkletUrl = bookmarklet_ie;
68 } else { 65 } else {
69 bookmarkletUrl = bookmarklet; 66 bookmarkletUrl = bookmarklet;
70 } 67 }
71 68
72 this.element().update(""); 69 this.element().update("");
73 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'table', border:'0', cellspacing:'0', cellpadding:'0', children:[ 70 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'table', border:'0', cellspacing:'0', cellpadding:'0', children:[
74 {tag:'tbody', children:[ 71 {tag:'tbody', children:[
75 {tag:'tr', children:[ 72 {tag:'tr', children:[
76 {tag:'td', valign:'top', width:'200', children:[ 73 {tag:'td', valign:'top', width:'200', children:[
77 {tag:'ul', id:"dataSubMenu", cls:'subMenu', children:[ 74 {tag:'ul', id:"dataSubMenu", cls:'subMenu', children:[
78 {tag:'li', id:this.getId('passwordGenerator'), htmlString:Clipperz.PM.Strings['passwordGeneratorTabLabel']}, 75 {tag:'li', id:this.getId('passwordGenerator'), htmlString:Clipperz.PM.Strings['passwordGeneratorTabLabel']},
79 {tag:'li', id:this.getId('bookmarklet'), htmlString:Clipperz.PM.Strings['bookmarkletTabLabel']}, 76 {tag:'li', id:this.getId('bookmarklet'), htmlString:Clipperz.PM.Strings['bookmarkletTabLabel']},
80 {tag:'li', id:this.getId('compact'), htmlString:Clipperz.PM.Strings['compactTabLabel']}, 77 {tag:'li', id:this.getId('compact'), htmlString:Clipperz.PM.Strings['compactTabLabel']},
81 {tag:'li', id:this.getId('httpAuth'), htmlString:Clipperz.PM.Strings['httpAuthTabLabel']} 78 {tag:'li', id:this.getId('httpAuth'), htmlString:Clipperz.PM.Strings['httpAuthTabLabel']}
82 ]} 79 ]}
83 ]}, 80 ]},
84 {tag:'td', valign:'top', children:[ 81 {tag:'td', valign:'top', children:[
85 {tag:'ul', cls:'clipperzTabPanels', children:[ 82 {tag:'ul', cls:'clipperzTabPanels', children:[
86 {tag:'li', id:this.getId('passwordGeneratorPanel'), children:[ 83 {tag:'li', id:this.getId('passwordGeneratorPanel'), children:[
87 {tag:'div', cls:'clipperzSubPanel', children:[ 84 {tag:'div', cls:'clipperzSubPanel', children:[
88 {tag:'h5', htmlString:Clipperz.PM.Strings['passwordGeneratorTabTitle']}, 85 {tag:'h5', htmlString:Clipperz.PM.Strings['passwordGeneratorTabTitle']},
89 {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['paswordGeneratorTabDescription']}, 86 {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['paswordGeneratorTabDescription']},
90 87
91 //--------------------------------------------------- 88 //---------------------------------------------------
92 {tag:'div', children:[ 89 {tag:'div', children:[
93 {tag:'form', id:this.getId('passwordGeneratorForm'), cls:'passwordGenerator', children:[ 90 {tag:'form', id:this.getId('passwordGeneratorForm'), cls:'passwordGenerator', children:[
94 {tag:'input', type:'text', cls:'clipperz_passwordGenerator_password', id:this.getId('passwordField')}, 91 {tag:'input', type:'text', cls:'clipperz_passwordGenerator_password', id:this.getId('passwordField')},
95 {tag:'table', children:[ 92 {tag:'table', children:[
96 {tag:'tbody', children:[ 93 {tag:'tbody', children:[
97 {tag:'tr', children:[ 94 {tag:'tr', children:[
98 {tag:'td', width:'20%', children:[ 95 {tag:'td', width:'20%', children:[
99 {tag:'input', type:'checkbox', name:'lowercase', id:this.getId('lowercase'), checked:true}, 96 {tag:'input', type:'checkbox', name:'lowercase', id:this.getId('lowercase'), checked:true},
100 {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorLowercaseLabel']} 97 {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorLowercaseLabel']}
101 ]}, 98 ]},
102 {tag:'td', width:'20%', children:[ 99 {tag:'td', width:'20%', children:[
103 {tag:'input', type:'checkbox', name:'uppercase', id:this.getId('uppercase'), checked:true}, 100 {tag:'input', type:'checkbox', name:'uppercase', id:this.getId('uppercase'), checked:true},
104 {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorUppercaseLabel']} 101 {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorUppercaseLabel']}
105 ]}, 102 ]},
106 {tag:'td', width:'20%', children:[ 103 {tag:'td', width:'20%', children:[
107 {tag:'input', type:'checkbox', name:'numbers', id:this.getId('numbers'), checked:true}, 104 {tag:'input', type:'checkbox', name:'numbers', id:this.getId('numbers'), checked:true},
108 {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorNumberLabel']} 105 {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorNumberLabel']}
109 ]}, 106 ]},
110 {tag:'td', width:'20%', children:[ 107 {tag:'td', width:'20%', children:[
111 {tag:'input', type:'checkbox', name:'symbols', id:this.getId('symbols'), checked:true}, 108 {tag:'input', type:'checkbox', name:'symbols', id:this.getId('symbols'), checked:true},
112 {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorSymbolLabel']} 109 {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorSymbolLabel']}
113 ]}, 110 ]},
114 {tag:'td', width:'20%', children:[ 111 {tag:'td', width:'20%', children:[
115 {tag:'span', cls:'passwordGeneratorLength', children:[ 112 {tag:'span', cls:'passwordGeneratorLength', children:[
116 {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorLengthLabel']}, 113 {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorLengthLabel']},
117 {tag:'span', id:this.getId('passwordLength'), cls:'passwordGeneratorLengthValue', html:'0'} 114 {tag:'span', id:this.getId('passwordLength'), cls:'passwordGeneratorLengthValue', html:'0'}
118 ]} 115 ]}
119 ]} 116 ]}
120 ]} 117 ]}
121 ]} 118 ]}
122 ]} 119 ]}
123 ]}, 120 ]},
124 {tag:'div', id:this.getId('generateRandomPassword')} 121 {tag:'div', id:this.getId('generateRandomPassword')}
125 ]} 122 ]}
126 //--------------------------------------------------- 123 //---------------------------------------------------
127 124
128 ]} 125 ]}
129 ]}, 126 ]},
130 {tag:'li', id:this.getId('bookmarkletPanel'), children:[ 127 {tag:'li', id:this.getId('bookmarkletPanel'), children:[
131 {tag:'div', cls:'clipperzSubPanel', children:[ 128 {tag:'div', cls:'clipperzSubPanel', children:[
132 {tag:'h5', htmlString:Clipperz.PM.Strings['bookmarkletTabTitle']}, 129 {tag:'h5', htmlString:Clipperz.PM.Strings['bookmarkletTabTitle']},
133 {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['bookmarkletTabDescription']}, 130 {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['bookmarkletTabDescription']},
134 {tag:'a', href:bookmarkletUrl, cls:'bookmarkletLink', htmlString:Clipperz.PM.Strings['bookmarkletTabBookmarkletTitle']}, 131 {tag:'a', href:bookmarkletUrl, cls:'bookmarkletLink', htmlString:Clipperz.PM.Strings['bookmarkletTabBookmarkletTitle']},
135 {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['bookmarkletTabInstructions']} 132 {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['bookmarkletTabInstructions']}
136 ]} 133 ]}
137 ]}, 134 ]},
138 {tag:'li', id:this.getId('compactPanel'), children:[ 135 {tag:'li', id:this.getId('compactPanel'), children:[
139 {tag:'div', cls:'clipperzSubPanel', children:[ 136 {tag:'div', cls:'clipperzSubPanel', children:[
140 {tag:'h5', htmlString:Clipperz.PM.Strings['compactTabTitle']}, 137 {tag:'h5', htmlString:Clipperz.PM.Strings['compactTabTitle']},
141 {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['compactTabDescription']} 138 {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['compactTabDescription']}
142 ]} 139 ]}
143 ]}, 140 ]},
144 {tag:'li', id:this.getId('httpAuthPanel'), children:[ 141 {tag:'li', id:this.getId('httpAuthPanel'), children:[
145 {tag:'div', cls:'clipperzSubPanel', children:[ 142 {tag:'div', cls:'clipperzSubPanel', children:[
146 {tag:'h5', htmlString:Clipperz.PM.Strings['httpAuthTabTitle']}, 143 {tag:'h5', htmlString:Clipperz.PM.Strings['httpAuthTabTitle']},
147 {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['httpAuthTabDescription']}, 144 {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['httpAuthTabDescription']},
148 {tag:'div', cls:'bookmarkletConfiguration', children:[Clipperz.PM.Strings['httpAuthBookmarkletConfiguration']]} 145 {tag:'div', cls:'bookmarkletConfiguration', children:[Clipperz.PM.Strings['httpAuthBookmarkletConfiguration']]}
149 ]} 146 ]}
150 ]} 147 ]}
151 ]} 148 ]}
152 ]} 149 ]}
diff --git a/frontend/beta/js/Clipperz/PM/Components/PasswordEntropyDisplay.js b/frontend/beta/js/Clipperz/PM/Components/PasswordEntropyDisplay.js
index 530d2cb..784dce9 100644
--- a/frontend/beta/js/Clipperz/PM/Components/PasswordEntropyDisplay.js
+++ b/frontend/beta/js/Clipperz/PM/Components/PasswordEntropyDisplay.js
@@ -1,118 +1,115 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32 29
33Clipperz.PM.Components.PasswordEntropyDisplay = function(anElement, args) { 30Clipperz.PM.Components.PasswordEntropyDisplay = function(anElement, args) {
34 args = args || {}; 31 args = args || {};
35 32
36//MochiKit.Logging.logDebug(">>> new TextFormField"); 33//MochiKit.Logging.logDebug(">>> new TextFormField");
37 Clipperz.PM.Components.PasswordEntropyDisplay.superclass.constructor.call(this, anElement, args); 34 Clipperz.PM.Components.PasswordEntropyDisplay.superclass.constructor.call(this, anElement, args);
38 35
39 this._wrapperElement = null; 36 this._wrapperElement = null;
40 this._entropyElement = null; 37 this._entropyElement = null;
41 38
42 this.render(); 39 this.render();
43//MochiKit.Logging.logDebug("<<< new TextFormField"); 40//MochiKit.Logging.logDebug("<<< new TextFormField");
44 41
45 return this; 42 return this;
46}; 43};
47 44
48YAHOO.extendX(Clipperz.PM.Components.PasswordEntropyDisplay, Clipperz.PM.Components.BaseComponent, { 45YAHOO.extendX(Clipperz.PM.Components.PasswordEntropyDisplay, Clipperz.PM.Components.BaseComponent, {
49 46
50 'toString': function() { 47 'toString': function() {
51 return "Clipperz.PM.Components.PasswordEntropyDisplay"; 48 return "Clipperz.PM.Components.PasswordEntropyDisplay";
52 }, 49 },
53 50
54 //----------------------------------------------------- 51 //-----------------------------------------------------
55 52
56 'wrapperElement': function() { 53 'wrapperElement': function() {
57 return this._wrapperElement; 54 return this._wrapperElement;
58 }, 55 },
59 56
60 'setWrapperElement': function(aValue) { 57 'setWrapperElement': function(aValue) {
61 this._wrapperElement = aValue; 58 this._wrapperElement = aValue;
62 }, 59 },
63 60
64 //----------------------------------------------------- 61 //-----------------------------------------------------
65 62
66 'passwordElement': function() { 63 'passwordElement': function() {
67 return this.element(); 64 return this.element();
68 }, 65 },
69 66
70 //----------------------------------------------------- 67 //-----------------------------------------------------
71 68
72 'entropyElement': function() { 69 'entropyElement': function() {
73 return this._entropyElement; 70 return this._entropyElement;
74 }, 71 },
75 72
76 'setEntropyElement': function(aValue) { 73 'setEntropyElement': function(aValue) {
77 this._entropyElement = aValue; 74 this._entropyElement = aValue;
78 }, 75 },
79 76
80 //----------------------------------------------------- 77 //-----------------------------------------------------
81 78
82 'render': function() { 79 'render': function() {
83 MochiKit.Signal.disconnectAllTo(this); 80 MochiKit.Signal.disconnectAllTo(this);
84 81
85 this.setWrapperElement(this.element().wrap({tag:'div'})); 82 this.setWrapperElement(this.element().wrap({tag:'div'}));
86 this.setEntropyElement(Clipperz.YUI.DomHelper.append(this.wrapperElement().dom, {tag:'div', cls:'passwordEntropy', html:"&nbsp;"}, true)); 83 this.setEntropyElement(Clipperz.YUI.DomHelper.append(this.wrapperElement().dom, {tag:'div', cls:'passwordEntropy', html:"&nbsp;"}, true));
87 84
88 // this.entropyElement().setWidth(this.passwordElement().getWidth()); 85 // this.entropyElement().setWidth(this.passwordElement().getWidth());
89 this.updateEntropyElement(); 86 this.updateEntropyElement();
90 87
91 MochiKit.Signal.connect(this.element().dom, 'onkeyup', this, 'updateEntropyElement'); 88 MochiKit.Signal.connect(this.element().dom, 'onkeyup', this, 'updateEntropyElement');
92 MochiKit.Signal.connect(this.element().dom, 'onchange', this, 'updateEntropyElement'); 89 MochiKit.Signal.connect(this.element().dom, 'onchange', this, 'updateEntropyElement');
93 MochiKit.Signal.connect(this.element().dom, 'onblur', this, 'updateEntropyElement'); 90 MochiKit.Signal.connect(this.element().dom, 'onblur', this, 'updateEntropyElement');
94 }, 91 },
95 92
96 //----------------------------------------------------- 93 //-----------------------------------------------------
97 94
98 'computeEntropyForString': function(aValue) { 95 'computeEntropyForString': function(aValue) {
99 return Clipperz.PM.Crypto.passwordEntropy(aValue); 96 return Clipperz.PM.Crypto.passwordEntropy(aValue);
100 }, 97 },
101 98
102 //----------------------------------------------------- 99 //-----------------------------------------------------
103 100
104 'updateEntropyElement': function(anEvent) { 101 'updateEntropyElement': function(anEvent) {
105//MochiKit.Logging.logDebug(">>> PasswordEntropyDisplay.updateEntropyElement"); 102//MochiKit.Logging.logDebug(">>> PasswordEntropyDisplay.updateEntropyElement");
106 varmaxExtent; 103 varmaxExtent;
107 varentropy; 104 varentropy;
108 105
109 entropy = Math.min(128, this.computeEntropyForString(this.passwordElement().dom.value)); 106 entropy = Math.min(128, this.computeEntropyForString(this.passwordElement().dom.value));
110//MochiKit.Logging.logDebug("--- PasswordEntropyDisplay.updateEntropyElement - entropy: " + entropy); 107//MochiKit.Logging.logDebug("--- PasswordEntropyDisplay.updateEntropyElement - entropy: " + entropy);
111 this.entropyElement().setStyle('background-position', "0px " + -entropy + "px"); 108 this.entropyElement().setStyle('background-position', "0px " + -entropy + "px");
112 this.entropyElement().setWidth(this.passwordElement().getWidth() * (entropy/128)); 109 this.entropyElement().setWidth(this.passwordElement().getWidth() * (entropy/128));
113//MochiKit.Logging.logDebug("<<< PasswordEntropyDisplay.updateEntropyElement"); 110//MochiKit.Logging.logDebug("<<< PasswordEntropyDisplay.updateEntropyElement");
114 }, 111 },
115 112
116 //----------------------------------------------------- 113 //-----------------------------------------------------
117 __syntaxFix__: '__syntaxFix__' 114 __syntaxFix__: '__syntaxFix__'
118}); 115});
diff --git a/frontend/beta/js/Clipperz/PM/Components/PasswordGenerator.js b/frontend/beta/js/Clipperz/PM/Components/PasswordGenerator.js
index 8195f2e..87c52b2 100644
--- a/frontend/beta/js/Clipperz/PM/Components/PasswordGenerator.js
+++ b/frontend/beta/js/Clipperz/PM/Components/PasswordGenerator.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32 29
33Clipperz.PM.Components.PasswordGenerator = function(anElement, aFieldValueComponent, args) { 30Clipperz.PM.Components.PasswordGenerator = function(anElement, aFieldValueComponent, args) {
34 args = args || {}; 31 args = args || {};
35 32
36//MochiKit.Logging.logDebug(">>> new TextFormField"); 33//MochiKit.Logging.logDebug(">>> new TextFormField");
37 Clipperz.PM.Components.PasswordGenerator.superclass.constructor.call(this, anElement, args); 34 Clipperz.PM.Components.PasswordGenerator.superclass.constructor.call(this, anElement, args);
38 35
39 this._fieldValueComponent = aFieldValueComponent; 36 this._fieldValueComponent = aFieldValueComponent;
40 this._panelButton = null; 37 this._panelButton = null;
41 this.render(); 38 this.render();
42//MochiKit.Logging.logDebug("<<< new TextFormField"); 39//MochiKit.Logging.logDebug("<<< new TextFormField");
43 40
44 return this; 41 return this;
45}; 42};
46 43
47YAHOO.extendX(Clipperz.PM.Components.PasswordGenerator, Clipperz.PM.Components.BaseComponent, { 44YAHOO.extendX(Clipperz.PM.Components.PasswordGenerator, Clipperz.PM.Components.BaseComponent, {
48 45
49 'toString': function() { 46 'toString': function() {
50 return "Clipperz.PM.Components.PasswordGenerator"; 47 return "Clipperz.PM.Components.PasswordGenerator";
51 }, 48 },
52 49
53 //----------------------------------------------------- 50 //-----------------------------------------------------
54 51
55 'fieldValueComponent': function() { 52 'fieldValueComponent': function() {
56 return this._fieldValueComponent; 53 return this._fieldValueComponent;
57 }, 54 },
58 55
59 //----------------------------------------------------- 56 //-----------------------------------------------------
60 57
61 'render': function() { 58 'render': function() {
62 MochiKit.Signal.disconnectAllTo(this); 59 MochiKit.Signal.disconnectAllTo(this);
63 60
64 // this._panelButton = new YAHOO.ext.Button(this.element().dom, {text:Clipperz.PM.Strings['passwordGeneratorButtonLabel'], handler:this.openPasswordPanel, scope:this}); 61 // this._panelButton = new YAHOO.ext.Button(this.element().dom, {text:Clipperz.PM.Strings['passwordGeneratorButtonLabel'], handler:this.openPasswordPanel, scope:this});
65 MochiKit.Signal.connect(this.element().dom, 'onmouseenter', this, 'onMouseEnter'); 62 MochiKit.Signal.connect(this.element().dom, 'onmouseenter', this, 'onMouseEnter');
66 MochiKit.Signal.connect(this.element().dom, 'onmouseleave', this, 'onMouseLeave'); 63 MochiKit.Signal.connect(this.element().dom, 'onmouseleave', this, 'onMouseLeave');
67 MochiKit.Signal.connect(this.element().dom, 'onclick', this, 'openPasswordPanel'); 64 MochiKit.Signal.connect(this.element().dom, 'onclick', this, 'openPasswordPanel');
68 }, 65 },
69 66
70 //----------------------------------------------------- 67 //-----------------------------------------------------
71 68
72 'onMouseEnter': function() { 69 'onMouseEnter': function() {
73 this.element().addClass('hover'); 70 this.element().addClass('hover');
74 }, 71 },
75 72
76 'onMouseLeave': function() { 73 'onMouseLeave': function() {
77 this.element().removeClass('hover'); 74 this.element().removeClass('hover');
78 }, 75 },
79 76
80 //----------------------------------------------------- 77 //-----------------------------------------------------
81 78
82 'panelButton': function() { 79 'panelButton': function() {
83 return this._panelButton; 80 return this._panelButton;
84 }, 81 },
85 82
86 //----------------------------------------------------- 83 //-----------------------------------------------------
87 84
88 'openPasswordPanel': function() { 85 'openPasswordPanel': function() {
89 var passwordGeneratorElement; 86 var passwordGeneratorElement;
90 var passwordGeneratorDialog; 87 var passwordGeneratorDialog;
91 var cancelButton; 88 var cancelButton;
92 var okButton; 89 var okButton;
93 var cancelFunction; 90 var cancelFunction;
94 var okFunction; 91 var okFunction;
95 92
96//MochiKit.Logging.logDebug(">>> PasswordGenerator.openPasswordPanel"); 93//MochiKit.Logging.logDebug(">>> PasswordGenerator.openPasswordPanel");
97 passwordGeneratorElement = Clipperz.YUI.DomHelper.append(document.body, {tag:'div', id:'passwordGenerator', children:[ 94 passwordGeneratorElement = Clipperz.YUI.DomHelper.append(document.body, {tag:'div', id:'passwordGenerator', children:[
98 {tag:'div', cls:'ydlg-hd', htmlString:Clipperz.PM.Strings['passwordGeneratorPanelTitle']}, 95 {tag:'div', cls:'ydlg-hd', htmlString:Clipperz.PM.Strings['passwordGeneratorPanelTitle']},
99 {tag:'div', cls:'ydlg-bd', children:[ 96 {tag:'div', cls:'ydlg-bd', children:[
100 {tag:'form', id:this.getId('passwordGeneratorForm'), cls:'passwordGenerator', children:[ 97 {tag:'form', id:this.getId('passwordGeneratorForm'), cls:'passwordGenerator', children:[
101 {tag:'input', type:'text', cls:'clipperz_passwordGenerator_password', id:this.getId('passwordField')}, 98 {tag:'input', type:'text', cls:'clipperz_passwordGenerator_password', id:this.getId('passwordField')},
102 {tag:'table', children:[ 99 {tag:'table', children:[
103 {tag:'tbody', children:[ 100 {tag:'tbody', children:[
104 {tag:'tr', children:[ 101 {tag:'tr', children:[
105 {tag:'td', width:'20%', children:[ 102 {tag:'td', width:'20%', children:[
106 {tag:'input', type:'checkbox', name:'lowercase', id:this.getId('lowercase'), checked:true}, 103 {tag:'input', type:'checkbox', name:'lowercase', id:this.getId('lowercase'), checked:true},
107 {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorLowercaseLabel']} 104 {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorLowercaseLabel']}
108 ]}, 105 ]},
109 {tag:'td', width:'20%', children:[ 106 {tag:'td', width:'20%', children:[
110 {tag:'input', type:'checkbox', name:'uppercase', id:this.getId('uppercase'), checked:true}, 107 {tag:'input', type:'checkbox', name:'uppercase', id:this.getId('uppercase'), checked:true},
111 {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorUppercaseLabel']} 108 {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorUppercaseLabel']}
112 ]}, 109 ]},
113 {tag:'td', width:'20%', children:[ 110 {tag:'td', width:'20%', children:[
114 {tag:'input', type:'checkbox', name:'numbers', id:this.getId('numbers'), checked:true}, 111 {tag:'input', type:'checkbox', name:'numbers', id:this.getId('numbers'), checked:true},
115 {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorNumberLabel']} 112 {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorNumberLabel']}
116 ]}, 113 ]},
117 {tag:'td', width:'20%', children:[ 114 {tag:'td', width:'20%', children:[
118 {tag:'input', type:'checkbox', name:'symbols', id:this.getId('symbols'), checked:true}, 115 {tag:'input', type:'checkbox', name:'symbols', id:this.getId('symbols'), checked:true},
119 {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorSymbolLabel']} 116 {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorSymbolLabel']}
120 ]}, 117 ]},
121 {tag:'td', width:'20%', children:[ 118 {tag:'td', width:'20%', children:[
122 {tag:'span', cls:'passwordGeneratorLength', children:[ 119 {tag:'span', cls:'passwordGeneratorLength', children:[
123 {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorLengthLabel']}, 120 {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorLengthLabel']},
124 {tag:'span', id:this.getId('passwordLength'), cls:'passwordGeneratorLengthValue', html:'0'} 121 {tag:'span', id:this.getId('passwordLength'), cls:'passwordGeneratorLengthValue', html:'0'}
125 ]} 122 ]}
126 ]} 123 ]}
127 ]} 124 ]}
128 ]} 125 ]}
129 ]} 126 ]}
130 ]} 127 ]}
131 ]}, 128 ]},
132 {tag:'div', cls:'ydlg-ft'} 129 {tag:'div', cls:'ydlg-ft'}
133 ]}, true); 130 ]}, true);
134 131
135 new Clipperz.PM.Components.PasswordEntropyDisplay(this.getElement('passwordField')); 132 new Clipperz.PM.Components.PasswordEntropyDisplay(this.getElement('passwordField'));
136 133
137 MochiKit.Signal.connect(this.getId('lowercase'), 'onclick', this, 'updatePasswordValue'); 134 MochiKit.Signal.connect(this.getId('lowercase'), 'onclick', this, 'updatePasswordValue');
138 MochiKit.Signal.connect(this.getId('uppercase'), 'onclick', this, 'updatePasswordValue'); 135 MochiKit.Signal.connect(this.getId('uppercase'), 'onclick', this, 'updatePasswordValue');
139 MochiKit.Signal.connect(this.getId('numbers'), 'onclick', this, 'updatePasswordValue'); 136 MochiKit.Signal.connect(this.getId('numbers'), 'onclick', this, 'updatePasswordValue');
140 MochiKit.Signal.connect(this.getId('symbols'), 'onclick', this, 'updatePasswordValue'); 137 MochiKit.Signal.connect(this.getId('symbols'), 'onclick', this, 'updatePasswordValue');
141 138
142 MochiKit.Signal.connect(this.getDom('passwordField'), 'onkeyup', this, 'updatePasswordLengthLabel'); 139 MochiKit.Signal.connect(this.getDom('passwordField'), 'onkeyup', this, 'updatePasswordLengthLabel');
143 MochiKit.Signal.connect(this.getDom('passwordField'), 'onchange', this, 'updatePasswordLengthLabel'); 140 MochiKit.Signal.connect(this.getDom('passwordField'), 'onchange', this, 'updatePasswordLengthLabel');
144 MochiKit.Signal.connect(this.getDom('passwordField'), 'onblur', this, 'updatePasswordLengthLabel'); 141 MochiKit.Signal.connect(this.getDom('passwordField'), 'onblur', this, 'updatePasswordLengthLabel');
145 142
146 this.updatePasswordValue(); 143 this.updatePasswordValue();
147 144
148 passwordGeneratorDialog = new YAHOO.ext.BasicDialog( 145 passwordGeneratorDialog = new YAHOO.ext.BasicDialog(
149 passwordGeneratorElement, { 146 passwordGeneratorElement, {
150 autoCreate:false, 147 autoCreate:false,
151 closable:false, 148 closable:false,
152 modal:true, 149 modal:true,
diff --git a/frontend/beta/js/Clipperz/PM/Components/Printing/Footer.js b/frontend/beta/js/Clipperz/PM/Components/Printing/Footer.js
index 6bede3e..b3debad 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Printing/Footer.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Printing/Footer.js
@@ -1,28 +1,25 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
diff --git a/frontend/beta/js/Clipperz/PM/Components/Printing/Header.js b/frontend/beta/js/Clipperz/PM/Components/Printing/Header.js
index 6bede3e..b3debad 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Printing/Header.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Printing/Header.js
@@ -1,28 +1,25 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
diff --git a/frontend/beta/js/Clipperz/PM/Components/Printing/Record.js b/frontend/beta/js/Clipperz/PM/Components/Printing/Record.js
index 910d4b1..5f5c29f 100644
--- a/frontend/beta/js/Clipperz/PM/Components/Printing/Record.js
+++ b/frontend/beta/js/Clipperz/PM/Components/Printing/Record.js
@@ -1,95 +1,92 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.Printing) == 'undefined') { Clipperz.PM.Components.Printing = {}; } 29if (typeof(Clipperz.PM.Components.Printing) == 'undefined') { Clipperz.PM.Components.Printing = {}; }
33 30
34Clipperz.PM.Components.Printing.Record = function(args) { 31Clipperz.PM.Components.Printing.Record = function(args) {
35 args = args || {}; 32 args = args || {};
36 33
37 this._record = args['record']; 34 this._record = args['record'];
38 35
39 return this; 36 return this;
40} 37}
41 38
42MochiKit.Base.update(Clipperz.PM.Components.Printing.Record.prototype, { 39MochiKit.Base.update(Clipperz.PM.Components.Printing.Record.prototype, {
43 40
44 'record': function() { 41 'record': function() {
45 return this._record; 42 return this._record;
46 }, 43 },
47 44
48 //------------------------------------------------------------------------- 45 //-------------------------------------------------------------------------
49 46
50 'deferredDrawToWindow': function(aWindow) { 47 'deferredDrawToWindow': function(aWindow) {
51 vardeferredResult; 48 vardeferredResult;
52 49
53 deferredResult = new MochiKit.Async.Deferred(); 50 deferredResult = new MochiKit.Async.Deferred();
54 deferredResult.addCallback(MochiKit.Base.method(this.record(), 'deferredData')); 51 deferredResult.addCallback(MochiKit.Base.method(this.record(), 'deferredData'));
55 deferredResult.addCallback(MochiKit.Base.method(this, 'appendToWindow', aWindow)); 52 deferredResult.addCallback(MochiKit.Base.method(this, 'appendToWindow', aWindow));
56 deferredResult.callback(); 53 deferredResult.callback();
57 return deferredResult; 54 return deferredResult;
58 }, 55 },
59 56
60 //------------------------------------------------------------------------- 57 //-------------------------------------------------------------------------
61 58
62 'appendToWindow': function(aWindow) { 59 'appendToWindow': function(aWindow) {
63 MochiKit.DOM.withWindow(aWindow, MochiKit.Base.bind(function() { 60 MochiKit.DOM.withWindow(aWindow, MochiKit.Base.bind(function() {
64 var newBlock; 61 var newBlock;
65 var fields; 62 var fields;
66 63
67 fields = MochiKit.Base.concat( 64 fields = MochiKit.Base.concat(
68 MochiKit.Base.map(MochiKit.Base.bind(function(aField) { 65 MochiKit.Base.map(MochiKit.Base.bind(function(aField) {
69 var result; 66 var result;
70 var dt, dd; 67 var dt, dd;
71 var label, value; 68 var label, value;
72 69
73 label = aField.label(); 70 label = aField.label();
74 value = aField.value(); 71 value = aField.value();
75 dt = MochiKit.DOM.createDOM('DT', null, label); 72 dt = MochiKit.DOM.createDOM('DT', null, label);
76 dd = MochiKit.DOM.createDOM('DD', null, value) 73 dd = MochiKit.DOM.createDOM('DD', null, value)
77 result = [dt, dd]; 74 result = [dt, dd];
78 75
79 return result 76 return result
80 }, this), MochiKit.Base.values(this.record().currentVersion().fields())) 77 }, this), MochiKit.Base.values(this.record().currentVersion().fields()))
81 ); 78 );
82 79
83 newBlock = MochiKit.DOM.DIV({'class': 'recordBlock'}, 80 newBlock = MochiKit.DOM.DIV({'class': 'recordBlock'},
84 MochiKit.DOM.H2(null, this.record().label()), 81 MochiKit.DOM.H2(null, this.record().label()),
85 MochiKit.DOM.DIV({'class': 'recordNotes'}, MochiKit.Base.map(MochiKit.Base.partial(MochiKit.DOM.P, null), this.record().notes().split("\n"))), 82 MochiKit.DOM.DIV({'class': 'recordNotes'}, MochiKit.Base.map(MochiKit.Base.partial(MochiKit.DOM.P, null), this.record().notes().split("\n"))),
86 MochiKit.DOM.createDOM('DL', null, fields) 83 MochiKit.DOM.createDOM('DL', null, fields)
87 ); 84 );
88 MochiKit.DOM.appendChildNodes(MochiKit.DOM.currentDocument().body, newBlock); 85 MochiKit.DOM.appendChildNodes(MochiKit.DOM.currentDocument().body, newBlock);
89 86
90 }, this)); 87 }, this));
91 }, 88 },
92 89
93 //------------------------------------------------------------------------- 90 //-------------------------------------------------------------------------
94 __syntaxFix__: "syntax fix" 91 __syntaxFix__: "syntax fix"
95}); 92});
diff --git a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/AbstractComponent.js b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/AbstractComponent.js
index 840d555..5b50284 100644
--- a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/AbstractComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/AbstractComponent.js
@@ -1,105 +1,102 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; } 29if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.RecordDetail.AbstractComponent = function(anElement, args) { 33Clipperz.PM.Components.RecordDetail.AbstractComponent = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 Clipperz.PM.Components.RecordDetail.AbstractComponent.superclass.constructor.call(this, args); 36 Clipperz.PM.Components.RecordDetail.AbstractComponent.superclass.constructor.call(this, args);
40 37
41 this._element = anElement; 38 this._element = anElement;
42 this._mainComponent = args.mainComponent; 39 this._mainComponent = args.mainComponent;
43 40
44 return this; 41 return this;
45} 42}
46 43
47//============================================================================= 44//=============================================================================
48 45
49YAHOO.extendX(Clipperz.PM.Components.RecordDetail.AbstractComponent, Clipperz.PM.Components.BaseComponent, { 46YAHOO.extendX(Clipperz.PM.Components.RecordDetail.AbstractComponent, Clipperz.PM.Components.BaseComponent, {
50 47
51 'toString': function() { 48 'toString': function() {
52 return "Clipperz.PM.Components.RecordDetail.AbstractComponent"; 49 return "Clipperz.PM.Components.RecordDetail.AbstractComponent";
53 }, 50 },
54 51
55 //------------------------------------------------------------------------- 52 //-------------------------------------------------------------------------
56 53
57 'mainComponent': function() { 54 'mainComponent': function() {
58 return this._mainComponent; 55 return this._mainComponent;
59 }, 56 },
60 57
61 //------------------------------------------------------------------------- 58 //-------------------------------------------------------------------------
62 59
63 'record': function() { 60 'record': function() {
64 return this.mainComponent().record(); 61 return this.mainComponent().record();
65 }, 62 },
66 63
67 //------------------------------------------------------------------------- 64 //-------------------------------------------------------------------------
68 65
69 'editMode': function() { 66 'editMode': function() {
70 return this.mainComponent().editMode(); 67 return this.mainComponent().editMode();
71 }, 68 },
72 69
73 //------------------------------------------------------------------------- 70 //-------------------------------------------------------------------------
74 71
75 'render': function() { 72 'render': function() {
76 this.element().update(""); 73 this.element().update("");
77 this.update(); 74 this.update();
78 }, 75 },
79 76
80 //------------------------------------------------------------------------- 77 //-------------------------------------------------------------------------
81 78
82 'update': function(anEvent) { 79 'update': function(anEvent) {
83 if (this.editMode() == 'EDIT') { 80 if (this.editMode() == 'EDIT') {
84 this.updateEditMode(); 81 this.updateEditMode();
85 } else if (this.editMode() == 'VIEW') { 82 } else if (this.editMode() == 'VIEW') {
86 this.updateViewMode(); 83 this.updateViewMode();
87 } 84 }
88 }, 85 },
89 86
90 //------------------------------------------------------------------------- 87 //-------------------------------------------------------------------------
91 88
92 'updateViewMode': function() {}, 89 'updateViewMode': function() {},
93 'updateEditMode': function() {}, 90 'updateEditMode': function() {},
94 'synchronizeComponentValues': function() {}, 91 'synchronizeComponentValues': function() {},
95 92
96 //------------------------------------------------------------------------- 93 //-------------------------------------------------------------------------
97 94
98 'destroy': function() { 95 'destroy': function() {
99 this.element().remove(); 96 this.element().remove();
100 }, 97 },
101 98
102 //------------------------------------------------------------------------- 99 //-------------------------------------------------------------------------
103 __syntaxFix__: "syntax fix" 100 __syntaxFix__: "syntax fix"
104}); 101});
105 102
diff --git a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/AbstractFieldSubComponent.js b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/AbstractFieldSubComponent.js
index 7596184..ad733aa 100644
--- a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/AbstractFieldSubComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/AbstractFieldSubComponent.js
@@ -1,77 +1,74 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; } 29if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.RecordDetail.AbstractFieldSubComponent = function(anElement, args) { 33Clipperz.PM.Components.RecordDetail.AbstractFieldSubComponent = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 Clipperz.PM.Components.RecordDetail.AbstractFieldSubComponent.superclass.constructor.call(this, anElement, args); 36 Clipperz.PM.Components.RecordDetail.AbstractFieldSubComponent.superclass.constructor.call(this, anElement, args);
40 37
41 this._fieldComponent = args.fieldComponent || null; 38 this._fieldComponent = args.fieldComponent || null;
42 39
43 this.render(); 40 this.render();
44 41
45 return this; 42 return this;
46} 43}
47 44
48//============================================================================= 45//=============================================================================
49 46
50YAHOO.extendX(Clipperz.PM.Components.RecordDetail.AbstractFieldSubComponent, Clipperz.PM.Components.RecordDetail.AbstractComponent, { 47YAHOO.extendX(Clipperz.PM.Components.RecordDetail.AbstractFieldSubComponent, Clipperz.PM.Components.RecordDetail.AbstractComponent, {
51 48
52 'toString': function() { 49 'toString': function() {
53 return "Clipperz.PM.Components.RecordDetail.AbstractFieldSubComponent"; 50 return "Clipperz.PM.Components.RecordDetail.AbstractFieldSubComponent";
54 }, 51 },
55 52
56 //------------------------------------------------------------------------- 53 //-------------------------------------------------------------------------
57 54
58 'fieldComponent': function() { 55 'fieldComponent': function() {
59 return this._fieldComponent; 56 return this._fieldComponent;
60 }, 57 },
61 58
62 //------------------------------------------------------------------------- 59 //-------------------------------------------------------------------------
63 60
64 'mainComponent': function() { 61 'mainComponent': function() {
65 return this.fieldComponent().mainComponent(); 62 return this.fieldComponent().mainComponent();
66 }, 63 },
67 64
68 //------------------------------------------------------------------------- 65 //-------------------------------------------------------------------------
69 66
70 'recordField': function() { 67 'recordField': function() {
71 return this.fieldComponent().recordField(); 68 return this.fieldComponent().recordField();
72 }, 69 },
73 70
74 //------------------------------------------------------------------------- 71 //-------------------------------------------------------------------------
75 __syntaxFix__: "syntax fix" 72 __syntaxFix__: "syntax fix"
76}); 73});
77 74
diff --git a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/CreationWizard.js b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/CreationWizard.js
index a92285f..d4c7837 100644
--- a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/CreationWizard.js
+++ b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/CreationWizard.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; } 29if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.RecordDetail.CreationWizard = function(anElement, args) { 33Clipperz.PM.Components.RecordDetail.CreationWizard = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 Clipperz.PM.Components.RecordDetail.CreationWizard.superclass.constructor.call(this, anElement, args); 36 Clipperz.PM.Components.RecordDetail.CreationWizard.superclass.constructor.call(this, anElement, args);
40 37
41 this._mainComponent = args.mainComponent; 38 this._mainComponent = args.mainComponent;
42 this._previouslySelectedRecord = args.previouslySelectedRecord; 39 this._previouslySelectedRecord = args.previouslySelectedRecord;
43//MochiKit.Logging.logDebug("--- new CreationWizard - previouslySelectedRecord: " + args.previouslySelectedRecord); 40//MochiKit.Logging.logDebug("--- new CreationWizard - previouslySelectedRecord: " + args.previouslySelectedRecord);
44 this._createButton_header = null; 41 this._createButton_header = null;
45 this._createButton_footer = null; 42 this._createButton_footer = null;
46 43
47 this._cancelButton_header = null; 44 this._cancelButton_header = null;
48 this._cancelButton_footer = null; 45 this._cancelButton_footer = null;
49 46
50 this.render(); 47 this.render();
51 48
52 return this; 49 return this;
53} 50}
54 51
55//============================================================================= 52//=============================================================================
56 53
57YAHOO.extendX(Clipperz.PM.Components.RecordDetail.CreationWizard, Clipperz.PM.Components.BaseComponent, { 54YAHOO.extendX(Clipperz.PM.Components.RecordDetail.CreationWizard, Clipperz.PM.Components.BaseComponent, {
58 55
59 'toString': function() { 56 'toString': function() {
60 return "Clipperz.PM.Components.RecordDetail.CreationWizard component"; 57 return "Clipperz.PM.Components.RecordDetail.CreationWizard component";
61 }, 58 },
62 59
63 //------------------------------------------------------------------------- 60 //-------------------------------------------------------------------------
64 61
65 'previouslySelectedRecord': function() { 62 'previouslySelectedRecord': function() {
66 return this._previouslySelectedRecord; 63 return this._previouslySelectedRecord;
67 }, 64 },
68 65
69 //------------------------------------------------------------------------- 66 //-------------------------------------------------------------------------
70 67
71 'render': function() { 68 'render': function() {
72 vartemplateListElement; 69 vartemplateListElement;
73 vartemplates; 70 vartemplates;
74 71
75 this.element().update(""); 72 this.element().update("");
76 73
77 Clipperz.YUI.DomHelper.append(this.element().dom, 74 Clipperz.YUI.DomHelper.append(this.element().dom,
78 {tag:'form', cls:'recordDataFORM', id:this.getId('form'), children:[ 75 {tag:'form', cls:'recordDataFORM', id:this.getId('form'), children:[
79 {tag:'div', id:'recordDetailDataBox', cls:'recordDetailDataBox', children:[ 76 {tag:'div', id:'recordDetailDataBox', cls:'recordDetailDataBox', children:[
80 {tag:'div', id:this.getId('wizardBox'), cls:'recordCreationWizard', children:[ 77 {tag:'div', id:this.getId('wizardBox'), cls:'recordCreationWizard', children:[
81 {tag:'div', id:this.getId('recordCreationWizardTitleBox'), cls:'recordCreationWizardTitleBox', htmlString:Clipperz.PM.Strings['newRecordWizardTitleBox']}, 78 {tag:'div', id:this.getId('recordCreationWizardTitleBox'), cls:'recordCreationWizardTitleBox', htmlString:Clipperz.PM.Strings['newRecordWizardTitleBox']},
82 {tag:'ul', id:this.getId('templateList'), cls:'radioList'} 79 {tag:'ul', id:this.getId('templateList'), cls:'radioList'}
83 ]} 80 ]}
84 ]} 81 ]}
85 ]} 82 ]}
86 ); 83 );
87 84
88 Clipperz.YUI.DomHelper.append(this.getDom('recordCreationWizardTitleBox'), {tag:'div', cls:'newRecordWizardHeader', children:[ 85 Clipperz.YUI.DomHelper.append(this.getDom('recordCreationWizardTitleBox'), {tag:'div', cls:'newRecordWizardHeader', children:[
89 {tag:'table', width:'100%', cellpadding:'5', children:[ 86 {tag:'table', width:'100%', cellpadding:'5', children:[
90 {tag:'tbody', children:[ 87 {tag:'tbody', children:[
91 {tag:'tr', children:[ 88 {tag:'tr', children:[
92 {tag:'td', width:'49%', align:'right', children:[ 89 {tag:'td', width:'49%', align:'right', children:[
93 {tag:'div', id:this.getId('cancelButton_header')} 90 {tag:'div', id:this.getId('cancelButton_header')}
94 ]}, 91 ]},
95 {tag:'td', width:'10', html:'&nbsp;'}, 92 {tag:'td', width:'10', html:'&nbsp;'},
96 {tag:'td', width:'49%', align:'left', children:[ 93 {tag:'td', width:'49%', align:'left', children:[
97 {tag:'div', id:this.getId('createButton_header')} 94 {tag:'div', id:this.getId('createButton_header')}
98 ]} 95 ]}
99 ]} 96 ]}
100 ]} 97 ]}
101 ]} 98 ]}
102 ]}); 99 ]});
103 100
104 templateListElement = this.getElement('templateList'); 101 templateListElement = this.getElement('templateList');
105 templates = Clipperz.PM.Strings['recordTemplates']; 102 templates = Clipperz.PM.Strings['recordTemplates'];
106 MochiKit.Iter.forEach(MochiKit.Base.keys(templates), MochiKit.Base.bind(function(aTemplateKey) { 103 MochiKit.Iter.forEach(MochiKit.Base.keys(templates), MochiKit.Base.bind(function(aTemplateKey) {
107 Clipperz.YUI.DomHelper.append(templateListElement.dom, {tag:'li', children:[ 104 Clipperz.YUI.DomHelper.append(templateListElement.dom, {tag:'li', children:[
108 {tag:'table', children:[ 105 {tag:'table', children:[
109 {tag:'tbody', children:[ 106 {tag:'tbody', children:[
110 {tag:'tr', children:[ 107 {tag:'tr', children:[
111 {tag:'td', valign:'top', children:[ 108 {tag:'td', valign:'top', children:[
112 {tag:'input', id:this.getId(aTemplateKey+"_radio"), type:'radio', name:'recordTemplate', value:"aTemplateKey"} 109 {tag:'input', id:this.getId(aTemplateKey+"_radio"), type:'radio', name:'recordTemplate', value:"aTemplateKey"}
113 ]}, 110 ]},
114 {tag:'td', valign:'top', children:[ 111 {tag:'td', valign:'top', children:[
115 {tag:'h4', id:this.getId(aTemplateKey+"_title"), html:templates[aTemplateKey]['title']}, 112 {tag:'h4', id:this.getId(aTemplateKey+"_title"), html:templates[aTemplateKey]['title']},
116 {tag:'div', cls:'templateDescription', htmlString:templates[aTemplateKey]['description']} 113 {tag:'div', cls:'templateDescription', htmlString:templates[aTemplateKey]['description']}
117 ]} 114 ]}
118 ]} 115 ]}
119 ]} 116 ]}
120 ]} 117 ]}
121 ]}); 118 ]});
122 this.getElement(aTemplateKey+"_radio").dom.value = aTemplateKey; 119 this.getElement(aTemplateKey+"_radio").dom.value = aTemplateKey;
123 MochiKit.Signal.connect(this.getDom(aTemplateKey+"_title"), 'onclick', MochiKit.Base.partial(function(aRadioButton) {aRadioButton.click();}, this.getDom(aTemplateKey+"_radio"))); 120 MochiKit.Signal.connect(this.getDom(aTemplateKey+"_title"), 'onclick', MochiKit.Base.partial(function(aRadioButton) {aRadioButton.click();}, this.getDom(aTemplateKey+"_radio")));
124 }, this)); 121 }, this));
125 122
126 Clipperz.YUI.DomHelper.append(templateListElement.dom, {tag:'li', children:[ 123 Clipperz.YUI.DomHelper.append(templateListElement.dom, {tag:'li', children:[
127 {tag:'table', children:[ 124 {tag:'table', children:[
128 {tag:'tbody', children:[ 125 {tag:'tbody', children:[
129 {tag:'tr', children:[ 126 {tag:'tr', children:[
130 {tag:'td', valign:'top', children:[ 127 {tag:'td', valign:'top', children:[
131 {tag:'input', type:'radio', name:'recordTemplate', id:this.getId('bookmarkletRadioButton'), value:'BookmarkletConfigurationTemplate'} 128 {tag:'input', type:'radio', name:'recordTemplate', id:this.getId('bookmarkletRadioButton'), value:'BookmarkletConfigurationTemplate'}
132 ]}, 129 ]},
133 {tag:'td', valign:'top', children:[ 130 {tag:'td', valign:'top', children:[
134 {tag:'h4', htmlString:Clipperz.PM.Strings['newRecordWizardBookmarkletConfigurationTitle']}, 131 {tag:'h4', htmlString:Clipperz.PM.Strings['newRecordWizardBookmarkletConfigurationTitle']},
135 {tag:'div', cls:'templateDescription', htmlString:Clipperz.PM.Strings['newRecordWizardBookmarkletConfigurationDescription']}, 132 {tag:'div', cls:'templateDescription', htmlString:Clipperz.PM.Strings['newRecordWizardBookmarkletConfigurationDescription']},
136 {tag:'div', cls:'bookmarkletConfiguration', children:[ 133 {tag:'div', cls:'bookmarkletConfiguration', children:[
137 // {tag:'span', htmlString:Clipperz.PM.Strings['newRecordWizardBookmarkletConfigurationLabel']}, 134 // {tag:'span', htmlString:Clipperz.PM.Strings['newRecordWizardBookmarkletConfigurationLabel']},
138 {tag:'div', htmlString:Clipperz.PM.Strings['recordDetailNewDirectLoginDescription']}, 135 {tag:'div', htmlString:Clipperz.PM.Strings['recordDetailNewDirectLoginDescription']},
139 {tag:'textarea', id:this.getId('bookmarkletConfiguration')} 136 {tag:'textarea', id:this.getId('bookmarkletConfiguration')}
140 ]} 137 ]}
141 ]} 138 ]}
142 ]} 139 ]}
143 ]} 140 ]}
144 ]} 141 ]}
145 ]}); 142 ]});
146 143
147 Clipperz.YUI.DomHelper.append(this.getDom('wizardBox'), {tag:'div', cls:'newRecordWizardFooter', children:[ 144 Clipperz.YUI.DomHelper.append(this.getDom('wizardBox'), {tag:'div', cls:'newRecordWizardFooter', children:[
148 {tag:'table', width:'100%', cellpadding:'5', children:[ 145 {tag:'table', width:'100%', cellpadding:'5', children:[
149 {tag:'tbody', children:[ 146 {tag:'tbody', children:[
150 {tag:'tr', children:[ 147 {tag:'tr', children:[
151 {tag:'td', width:'49%', align:'right', children:[ 148 {tag:'td', width:'49%', align:'right', children:[
152 {tag:'div', id:this.getId('cancelButton_footer')} 149 {tag:'div', id:this.getId('cancelButton_footer')}
diff --git a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/DirectLoginBindingComponent.js b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/DirectLoginBindingComponent.js
index 6171a4e..36dd9a8 100644
--- a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/DirectLoginBindingComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/DirectLoginBindingComponent.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; } 29if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.RecordDetail.DirectLoginBindingComponent = function(anElement, args) { 33Clipperz.PM.Components.RecordDetail.DirectLoginBindingComponent = function(anElement, args) {
37//MochiKit.Logging.logDebug(">>> new DirectLoginBindingComponent"); 34//MochiKit.Logging.logDebug(">>> new DirectLoginBindingComponent");
38 args = args || {}; 35 args = args || {};
39 36
40 Clipperz.PM.Components.RecordDetail.DirectLoginBindingComponent.superclass.constructor.call(this, anElement, args); 37 Clipperz.PM.Components.RecordDetail.DirectLoginBindingComponent.superclass.constructor.call(this, anElement, args);
41 38
42 this._directLoginBinding = args.directLoginBinding || null; 39 this._directLoginBinding = args.directLoginBinding || null;
43 this.render(); 40 this.render();
44 41
45 Clipperz.NotificationCenter.register(this.record(), 'addNewRecordField',this, 'syncAndUpdateEditMode'); 42 Clipperz.NotificationCenter.register(this.record(), 'addNewRecordField',this, 'syncAndUpdateEditMode');
46 Clipperz.NotificationCenter.register(this.record(), 'removedField', this, 'syncAndUpdateEditMode'); 43 Clipperz.NotificationCenter.register(this.record(), 'removedField', this, 'syncAndUpdateEditMode');
47 Clipperz.NotificationCenter.register(this.record(), 'updatedFieldLabel',this, 'syncAndUpdateEditMode'); 44 Clipperz.NotificationCenter.register(this.record(), 'updatedFieldLabel',this, 'syncAndUpdateEditMode');
48//MochiKit.Logging.logDebug("<<< new DirectLoginBindingComponent"); 45//MochiKit.Logging.logDebug("<<< new DirectLoginBindingComponent");
49 46
50 return this; 47 return this;
51} 48}
52 49
53//============================================================================= 50//=============================================================================
54 51
55YAHOO.extendX(Clipperz.PM.Components.RecordDetail.DirectLoginBindingComponent, Clipperz.PM.Components.RecordDetail.AbstractComponent, { 52YAHOO.extendX(Clipperz.PM.Components.RecordDetail.DirectLoginBindingComponent, Clipperz.PM.Components.RecordDetail.AbstractComponent, {
56 53
57 'toString': function() { 54 'toString': function() {
58 return "Clipperz.PM.Components.RecordDetail.DirectLoginBindingComponent component"; 55 return "Clipperz.PM.Components.RecordDetail.DirectLoginBindingComponent component";
59 }, 56 },
60 57
61 //------------------------------------------------------------------------- 58 //-------------------------------------------------------------------------
62 59
63 'directLoginBinding': function() { 60 'directLoginBinding': function() {
64 return this._directLoginBinding; 61 return this._directLoginBinding;
65 }, 62 },
66 63
67 //------------------------------------------------------------------------- 64 //-------------------------------------------------------------------------
68 65
69 'render': function() { 66 'render': function() {
70 // Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'span', style:'font-weight:bold;', html:this.directLoginBinding().key()}) 67 // Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'span', style:'font-weight:bold;', html:this.directLoginBinding().key()})
71 // Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'span', html:this.directLoginBinding().value()}) 68 // Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'span', html:this.directLoginBinding().value()})
72//MochiKit.Logging.logDebug(">>> DirectLoginBindingComponent.render"); 69//MochiKit.Logging.logDebug(">>> DirectLoginBindingComponent.render");
73 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td', cls:'directLoginBindingLabelTD', children:[ 70 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td', cls:'directLoginBindingLabelTD', children:[
74 {tag:'span', html:this.directLoginBinding().key()} 71 {tag:'span', html:this.directLoginBinding().key()}
75 ]}); 72 ]});
76//MochiKit.Logging.logDebug("--- DirectLoginBindingComponent.render - 1"); 73//MochiKit.Logging.logDebug("--- DirectLoginBindingComponent.render - 1");
77 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td', cls:'directLoginBindingValueTD', children:[ 74 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td', cls:'directLoginBindingValueTD', children:[
78 {tag:'div', id:this.getId('editModeBox'), children:[ 75 {tag:'div', id:this.getId('editModeBox'), children:[
79 {tag:'select', id:this.getId('select'), children:this.recordFieldOptions()} 76 {tag:'select', id:this.getId('select'), children:this.recordFieldOptions()}
80 ]}, 77 ]},
81 {tag:'div', id:this.getId('viewModeBox'), children:[ 78 {tag:'div', id:this.getId('viewModeBox'), children:[
82 {tag:'span', id:this.getId('viewValue'), html:""} 79 {tag:'span', id:this.getId('viewValue'), html:""}
83 ]} 80 ]}
84 ]}); 81 ]});
85//MochiKit.Logging.logDebug("--- DirectLoginBindingComponent.render - 2"); 82//MochiKit.Logging.logDebug("--- DirectLoginBindingComponent.render - 2");
86 this.getElement('editModeBox').setVisibilityMode(YAHOO.ext.Element.DISPLAY); 83 this.getElement('editModeBox').setVisibilityMode(YAHOO.ext.Element.DISPLAY);
87 this.getElement('viewModeBox').setVisibilityMode(YAHOO.ext.Element.DISPLAY); 84 this.getElement('viewModeBox').setVisibilityMode(YAHOO.ext.Element.DISPLAY);
88 85
89 this.update(); 86 this.update();
90//MochiKit.Logging.logDebug("<<< DirectLoginBindingComponent.render"); 87//MochiKit.Logging.logDebug("<<< DirectLoginBindingComponent.render");
91 }, 88 },
92 89
93 //------------------------------------------------------------------------- 90 //-------------------------------------------------------------------------
94 91
95 'recordFieldOptions': function() { 92 'recordFieldOptions': function() {
96 varresult; 93 varresult;
97 var option; 94 var option;
98 varrecordFieldKey; 95 varrecordFieldKey;
99 varrecordFields; 96 varrecordFields;
100 97
101//MochiKit.Logging.logDebug(">>> DirectLoginBindingComponent.recordFieldOptions"); 98//MochiKit.Logging.logDebug(">>> DirectLoginBindingComponent.recordFieldOptions");
102 recordFields = this.directLoginBinding().directLogin().record().currentVersion().fields(); 99 recordFields = this.directLoginBinding().directLogin().record().currentVersion().fields();
103 result = []; 100 result = [];
104 option = {tag:'option', value:null, html:'---'}; 101 option = {tag:'option', value:null, html:'---'};
105 result.push(option); 102 result.push(option);
106 for (recordFieldKey in recordFields) { 103 for (recordFieldKey in recordFields) {
107 //TODO: remove the value: field and replace it with element.dom.value = <some value> 104 //TODO: remove the value: field and replace it with element.dom.value = <some value>
108 option = {tag:'option', value:recordFieldKey, html:recordFields[recordFieldKey].label()} 105 option = {tag:'option', value:recordFieldKey, html:recordFields[recordFieldKey].label()}
109 if (recordFieldKey == this.directLoginBinding().fieldKey()) { 106 if (recordFieldKey == this.directLoginBinding().fieldKey()) {
110 option['selected'] = true; 107 option['selected'] = true;
111 } 108 }
112 result.push(option); 109 result.push(option);
113 } 110 }
114//MochiKit.Logging.logDebug("<<< DirectLoginBindingComponent.recordFieldOptions"); 111//MochiKit.Logging.logDebug("<<< DirectLoginBindingComponent.recordFieldOptions");
115 112
116 return result; 113 return result;
117 }, 114 },
118 115
119 //------------------------------------------------------------------------- 116 //-------------------------------------------------------------------------
120 117
121 'syncAndUpdateEditMode': function() { 118 'syncAndUpdateEditMode': function() {
122 this.synchronizeComponentValues(); 119 this.synchronizeComponentValues();
123 this.updateEditMode(); 120 this.updateEditMode();
124 }, 121 },
125 122
126 'updateEditMode': function() { 123 'updateEditMode': function() {
127 varselectElementBox; 124 varselectElementBox;
128 125
129//MochiKit.Logging.logDebug(">>> DirectLoginBindingComponent.updateEditMode"); 126//MochiKit.Logging.logDebug(">>> DirectLoginBindingComponent.updateEditMode");
130 this.getElement('viewModeBox').hide(); 127 this.getElement('viewModeBox').hide();
131 128
132 selectElementBox = this.getElement('editModeBox'); 129 selectElementBox = this.getElement('editModeBox');
133 selectElementBox.update(""); 130 selectElementBox.update("");
134 131
135 Clipperz.YUI.DomHelper.append(selectElementBox.dom, {tag:'select', id:this.getId('select'), children:this.recordFieldOptions()}); 132 Clipperz.YUI.DomHelper.append(selectElementBox.dom, {tag:'select', id:this.getId('select'), children:this.recordFieldOptions()});
136 133
137/* 134/*
138 selectElement = this.getElement('select'); 135 selectElement = this.getElement('select');
139 136
140 selectElement.update(""); 137 selectElement.update("");
141 MochiKit.Iter.forEach(this.recordFieldOptions(), function(anOption) { 138 MochiKit.Iter.forEach(this.recordFieldOptions(), function(anOption) {
142 Clipperz.YUI.DomHelper.append(selectElement.dom, anOption); 139 Clipperz.YUI.DomHelper.append(selectElement.dom, anOption);
143 }); 140 });
144*/ 141*/
145 142
146 143
147 this.getElement('editModeBox').show(); 144 this.getElement('editModeBox').show();
148//MochiKit.Logging.logDebug("<<< DirectLoginBindingComponent.updateEditMode"); 145//MochiKit.Logging.logDebug("<<< DirectLoginBindingComponent.updateEditMode");
149 }, 146 },
150 147
151 //------------------------------------------------------------------------- 148 //-------------------------------------------------------------------------
152 149
diff --git a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/DirectLoginComponent.js b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/DirectLoginComponent.js
index 7638f00..69cad79 100644
--- a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/DirectLoginComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/DirectLoginComponent.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; } 29if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.RecordDetail.DirectLoginComponent = function(anElement, args) { 33Clipperz.PM.Components.RecordDetail.DirectLoginComponent = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 Clipperz.PM.Components.RecordDetail.DirectLoginComponent.superclass.constructor.call(this, anElement, args); 36 Clipperz.PM.Components.RecordDetail.DirectLoginComponent.superclass.constructor.call(this, anElement, args);
40 37
41 this._directLogin = args.directLogin || null; 38 this._directLogin = args.directLogin || null;
42 //this._titleElement = null; 39 //this._titleElement = null;
43 this._structureElement = null; 40 this._structureElement = null;
44 this._removeButton = null; 41 this._removeButton = null;
45 this._directLoginBindingComponents = null; 42 this._directLoginBindingComponents = null;
46 this._collapser = null; 43 this._collapser = null;
47 44
48 this.mainComponent().addEditComponent(this); 45 this.mainComponent().addEditComponent(this);
49 this.render(); 46 this.render();
50 47
51 return this; 48 return this;
52} 49}
53 50
54//============================================================================= 51//=============================================================================
55 52
56YAHOO.extendX(Clipperz.PM.Components.RecordDetail.DirectLoginComponent, Clipperz.PM.Components.RecordDetail.AbstractComponent, { 53YAHOO.extendX(Clipperz.PM.Components.RecordDetail.DirectLoginComponent, Clipperz.PM.Components.RecordDetail.AbstractComponent, {
57 54
58 'toString': function() { 55 'toString': function() {
59 return "Clipperz.PM.Components.RecordDetail.DirectLoginComponent component"; 56 return "Clipperz.PM.Components.RecordDetail.DirectLoginComponent component";
60 }, 57 },
61 58
62 //------------------------------------------------------------------------- 59 //-------------------------------------------------------------------------
63 60
64 'directLogin': function() { 61 'directLogin': function() {
65 return this._directLogin; 62 return this._directLogin;
66 }, 63 },
67 64
68 'directLoginBindingComponents': function() { 65 'directLoginBindingComponents': function() {
69 return this._directLoginBindingComponents; 66 return this._directLoginBindingComponents;
70 }, 67 },
71 68
72 //------------------------------------------------------------------------- 69 //-------------------------------------------------------------------------
73 70
74 'removeDirectLogin': function() { 71 'removeDirectLogin': function() {
75//MochiKit.Logging.logDebug(">>> DirectLoginComponent.removeDirectLogin"); 72//MochiKit.Logging.logDebug(">>> DirectLoginComponent.removeDirectLogin");
76 this.mainComponent().synchronizeComponentValues(); 73 this.mainComponent().synchronizeComponentValues();
77 this.directLogin().remove(); 74 this.directLogin().remove();
78 this.mainComponent().removeEditComponent(this); 75 this.mainComponent().removeEditComponent(this);
79 this.mainComponent().render(); 76 this.mainComponent().render();
80//MochiKit.Logging.logDebug("<<< DirectLoginComponent.removeDirectLogin"); 77//MochiKit.Logging.logDebug("<<< DirectLoginComponent.removeDirectLogin");
81 }, 78 },
82 79
83 //------------------------------------------------------------------------- 80 //-------------------------------------------------------------------------
84/* 81/*
85 'formDataValue': function() { 82 'formDataValue': function() {
86 return Clipperz.Base.serializeJSON(this.directLogin().formData()); 83 return Clipperz.Base.serializeJSON(this.directLogin().formData());
87 }, 84 },
88 85
89 'setFormDataValue': function(aValue) { 86 'setFormDataValue': function(aValue) {
90 87
91 }, 88 },
92 */ 89 */
93 //------------------------------------------------------------------------- 90 //-------------------------------------------------------------------------
94 91
95 'removeButton': function() { 92 'removeButton': function() {
96 return this._removeButton; 93 return this._removeButton;
97 }, 94 },
98 95
99 'setRemoveButton': function(aValue) { 96 'setRemoveButton': function(aValue) {
100 this._removeButton = aValue; 97 this._removeButton = aValue;
101 }, 98 },
102 99
103 //------------------------------------------------------------------------- 100 //-------------------------------------------------------------------------
104/* 101/*
105 'titleElement': function() { 102 'titleElement': function() {
106 return this._titleElement; 103 return this._titleElement;
107 }, 104 },
108 105
109 'setTitleElement': function(aValue) { 106 'setTitleElement': function(aValue) {
110 this._titleElement = aValue; 107 this._titleElement = aValue;
111 }, 108 },
112 */ 109 */
113 //------------------------------------------------------------------------- 110 //-------------------------------------------------------------------------
114 111
115 'structureElement': function() { 112 'structureElement': function() {
116 return this._structureElement; 113 return this._structureElement;
117 }, 114 },
118 115
119 'setStructureElement': function(aValue) { 116 'setStructureElement': function(aValue) {
120 this._structureElement = aValue; 117 this._structureElement = aValue;
121 }, 118 },
122 119
123 //------------------------------------------------------------------------- 120 //-------------------------------------------------------------------------
124 121
125 'render': function() { 122 'render': function() {
126//MochiKit.Logging.logDebug(">>> DirectLoginComponent.render"); 123//MochiKit.Logging.logDebug(">>> DirectLoginComponent.render");
127 try { 124 try {
128 this.element().update(""); 125 this.element().update("");
129 Clipperz.YUI.DomHelper.append(this.element().dom, 126 Clipperz.YUI.DomHelper.append(this.element().dom,
130 {tag:'li', children:[ 127 {tag:'li', children:[
131 {tag:'table', width:'100%', border:'0', cellpadding:'0', cellspacing:'0', children:[ 128 {tag:'table', width:'100%', border:'0', cellpadding:'0', cellspacing:'0', children:[
132 {tag:'tbody', children:[ 129 {tag:'tbody', children:[
133 {tag:'tr', children:[ 130 {tag:'tr', children:[
134 {tag:'td', rowspan:'2', width:'30', valign:'top', html:'&#160', children:[ 131 {tag:'td', rowspan:'2', width:'30', valign:'top', html:'&#160', children:[
135 {tag:'div', id:this.getId('removeDirectLogin'), children:[ 132 {tag:'div', id:this.getId('removeDirectLogin'), children:[
136 {tag:'div', id:this.getId('removeDirectLoginButton')} 133 {tag:'div', id:this.getId('removeDirectLoginButton')}
137 ]}, 134 ]},
138 {tag:'div', id:this.getId('collapseLink'), cls:'directLoginCollapseLink'} 135 {tag:'div', id:this.getId('collapseLink'), cls:'directLoginCollapseLink'}
139 ]}, 136 ]},
140 {tag:'td', valign:'top', children:[ 137 {tag:'td', valign:'top', children:[
141 {tag:'table', width:'100%', border:'0', cellpadding:'0', cellspacing:'0', children:[ 138 {tag:'table', width:'100%', border:'0', cellpadding:'0', cellspacing:'0', children:[
142 {tag:'tbody', children:[ 139 {tag:'tbody', children:[
143 {tag:'tr', children:[ 140 {tag:'tr', children:[
144 {tag:'td', width:'20', valign:'top', children:[ 141 {tag:'td', width:'20', valign:'top', children:[
145 {tag:'a', href:'#', id:this.getId('directLogin'), children:[ 142 {tag:'a', href:'#', id:this.getId('directLogin'), children:[
146 {tag:'img', id:this.getId('faviconImage'), width:'16', height:'16', src:this.directLogin().fixedFavicon()} 143 {tag:'img', id:this.getId('faviconImage'), width:'16', height:'16', src:this.directLogin().fixedFavicon()}
147 ]} 144 ]}
148 ]}, 145 ]},
149 {tag:'td', valign:'top', children:[ 146 {tag:'td', valign:'top', children:[
150 {tag:'div', cls:'directLoginDetailTitle', children:[ 147 {tag:'div', cls:'directLoginDetailTitle', children:[
151 {tag:'div', id:this.getId('titleViewBox'), children:[ 148 {tag:'div', id:this.getId('titleViewBox'), children:[
152 {tag:'a', href:'#', id:this.getId('titleLink')} 149 {tag:'a', href:'#', id:this.getId('titleLink')}
diff --git a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/DirectLoginValueComponent.js b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/DirectLoginValueComponent.js
index e70229b..d210100 100644
--- a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/DirectLoginValueComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/DirectLoginValueComponent.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; } 29if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.RecordDetail.DirectLoginValueComponent = function(anElement, args) { 33Clipperz.PM.Components.RecordDetail.DirectLoginValueComponent = function(anElement, args) {
37//MochiKit.Logging.logDebug(">>> new DirectLoginValueComponent"); 34//MochiKit.Logging.logDebug(">>> new DirectLoginValueComponent");
38 args = args || {}; 35 args = args || {};
39 36
40 Clipperz.PM.Components.RecordDetail.DirectLoginValueComponent.superclass.constructor.call(this, anElement, args); 37 Clipperz.PM.Components.RecordDetail.DirectLoginValueComponent.superclass.constructor.call(this, anElement, args);
41 38
42 this._directLoginInputValue = args.directLoginInputValue || null; 39 this._directLoginInputValue = args.directLoginInputValue || null;
43 this._value = this.directLoginInputValue().directLogin().formValues()[this.directLoginInputValue().name()]; 40 this._value = this.directLoginInputValue().directLogin().formValues()[this.directLoginInputValue().name()];
44 41
45 this.render(); 42 this.render();
46//MochiKit.Logging.logDebug("<<< new DirectLoginValueComponent - record: " + this.record()); 43//MochiKit.Logging.logDebug("<<< new DirectLoginValueComponent - record: " + this.record());
47 44
48 return this; 45 return this;
49} 46}
50 47
51//============================================================================= 48//=============================================================================
52 49
53YAHOO.extendX(Clipperz.PM.Components.RecordDetail.DirectLoginValueComponent, Clipperz.PM.Components.RecordDetail.AbstractComponent, { 50YAHOO.extendX(Clipperz.PM.Components.RecordDetail.DirectLoginValueComponent, Clipperz.PM.Components.RecordDetail.AbstractComponent, {
54 51
55 'toString': function() { 52 'toString': function() {
56 return "Clipperz.PM.Components.RecordDetail.DirectLoginValueComponent component - " + this.directLoginInputValue().name(); 53 return "Clipperz.PM.Components.RecordDetail.DirectLoginValueComponent component - " + this.directLoginInputValue().name();
57 }, 54 },
58 55
59 //------------------------------------------------------------------------- 56 //-------------------------------------------------------------------------
60 57
61 'directLoginInputValue': function() { 58 'directLoginInputValue': function() {
62 return this._directLoginInputValue; 59 return this._directLoginInputValue;
63 }, 60 },
64 61
65 //------------------------------------------------------------------------- 62 //-------------------------------------------------------------------------
66 63
67 'render': function() { 64 'render': function() {
68//MochiKit.Logging.logDebug(">>> DirectLoginValueComponent.render"); 65//MochiKit.Logging.logDebug(">>> DirectLoginValueComponent.render");
69 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td', cls:'directLoginDataLabelTD', children:[ 66 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td', cls:'directLoginDataLabelTD', children:[
70 {tag:'span', html:this.directLoginInputValue().name()} 67 {tag:'span', html:this.directLoginInputValue().name()}
71 ]}); 68 ]});
72//MochiKit.Logging.logDebug("--- DirectLoginValueComponent.render - 1"); 69//MochiKit.Logging.logDebug("--- DirectLoginValueComponent.render - 1");
73 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td', cls:'directLoginDataValueTD', children:[ 70 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td', cls:'directLoginDataValueTD', children:[
74 {tag:'span', id:this.getId('inputElement')} 71 {tag:'span', id:this.getId('inputElement')}
75 ]}); 72 ]});
76//MochiKit.Logging.logDebug("--- DirectLoginValueComponent.render - 2"); 73//MochiKit.Logging.logDebug("--- DirectLoginValueComponent.render - 2");
77 this.update(); 74 this.update();
78//MochiKit.Logging.logDebug("<<< DirectLoginValueComponent.render"); 75//MochiKit.Logging.logDebug("<<< DirectLoginValueComponent.render");
79 }, 76 },
80 77
81 //------------------------------------------------------------------------- 78 //-------------------------------------------------------------------------
82 79
83 'inputElementConfiguration': function() { 80 'inputElementConfiguration': function() {
84 var result; 81 var result;
85 var currentValue; 82 var currentValue;
86 83
87//MochiKit.Logging.logDebug(">>> DirectLoginValueComponent.inputElementConfiguration - " + this.directLoginInputValue().name()); 84//MochiKit.Logging.logDebug(">>> DirectLoginValueComponent.inputElementConfiguration - " + this.directLoginInputValue().name());
88 result = []; 85 result = [];
89 currentValue = this.value(); 86 currentValue = this.value();
90 87
91 switch (this.directLoginInputValue().type()) { 88 switch (this.directLoginInputValue().type()) {
92 case 'checkbox': 89 case 'checkbox':
93 var checkbox; 90 var checkbox;
94//{"type":"checkbox", "name":"rememberUsernameChk", "value":"checkbox"} 91//{"type":"checkbox", "name":"rememberUsernameChk", "value":"checkbox"}
95 checkbox = {tag:'input', id:this.getId('checkbox'), type:'checkbox'} 92 checkbox = {tag:'input', id:this.getId('checkbox'), type:'checkbox'}
96 if (currentValue == true) { 93 if (currentValue == true) {
97 checkbox.checked = true; 94 checkbox.checked = true;
98 } 95 }
99 result.push(checkbox); 96 result.push(checkbox);
100 break; 97 break;
101 98
102 case 'select': 99 case 'select':
103 var input; 100 var input;
104//{"type":"select", "name":"DOMAIN", "options":[{"selected":true, "label":"@tin.it", "value":"tin.it"}, {"selected":false, "label":"@virgilio.it", "value":"virgilio.it"}]} 101//{"type":"select", "name":"DOMAIN", "options":[{"selected":true, "label":"@tin.it", "value":"tin.it"}, {"selected":false, "label":"@virgilio.it", "value":"virgilio.it"}]}
105 input = {tag:'select', id:this.getId('select'), name:this.directLoginInputValue().name(), children:[]}; 102 input = {tag:'select', id:this.getId('select'), name:this.directLoginInputValue().name(), children:[]};
106 input.children.push({tag:'option', value:null, html:"---"}); 103 input.children.push({tag:'option', value:null, html:"---"});
107 MochiKit.Iter.forEach(this.directLoginInputValue().args()['options'], function(anOption) { 104 MochiKit.Iter.forEach(this.directLoginInputValue().args()['options'], function(anOption) {
108 var option; 105 var option;
109 106
110 //TODO: remove the value: field and replace it with element.dom.value = <some value> 107 //TODO: remove the value: field and replace it with element.dom.value = <some value>
111 option = {tag:'option', value:anOption['value'], html:anOption['label']} 108 option = {tag:'option', value:anOption['value'], html:anOption['label']}
112 if (currentValue == anOption['value']) { 109 if (currentValue == anOption['value']) {
113 option.selected = true; 110 option.selected = true;
114 } 111 }
115 input.children.push(option); 112 input.children.push(option);
116 }) 113 })
117 result.push(input); 114 result.push(input);
118 break; 115 break;
119 116
120 case 'radio': 117 case 'radio':
121 var name; 118 var name;
122 var radioBox; 119 var radioBox;
123 120
124//MochiKit.Logging.logDebug("--- DirectLoginValueComponent.inputElementConfiguration - 3"); 121//MochiKit.Logging.logDebug("--- DirectLoginValueComponent.inputElementConfiguration - 3");
125 name = this.getId(this.directLoginInputValue().name()); 122 name = this.getId(this.directLoginInputValue().name());
126 radioBox = {tag:'div', id:this.getId('radioBox'), children:[]}; 123 radioBox = {tag:'div', id:this.getId('radioBox'), children:[]};
127 result.push(radioBox); 124 result.push(radioBox);
128//MochiKit.Logging.logDebug("--- DirectLoginValueComponent.inputElementConfiguration - 3.1 - options.length: " + this.directLoginInputValue().args()['options'].length); 125//MochiKit.Logging.logDebug("--- DirectLoginValueComponent.inputElementConfiguration - 3.1 - options.length: " + this.directLoginInputValue().args()['options'].length);
129//{"name":"dominio", "type":"radio", "options":[{"value":"@alice.it", "checked":true}, {"value":"@tin.it", "checked":false}, {"value":"@virgilio.it", "checked":false}, {"value":"@tim.it", "checked":false}]} 126//{"name":"dominio", "type":"radio", "options":[{"value":"@alice.it", "checked":true}, {"value":"@tin.it", "checked":false}, {"value":"@virgilio.it", "checked":false}, {"value":"@tim.it", "checked":false}]}
130 127
131 MochiKit.Iter.forEach(this.directLoginInputValue().args()['options'], function(anOption) { 128 MochiKit.Iter.forEach(this.directLoginInputValue().args()['options'], function(anOption) {
132 varradio; 129 varradio;
133 130
134//MochiKit.Logging.logDebug("--- DirectLoginValueComponent.inputElementConfiguration - 3.1.1"); 131//MochiKit.Logging.logDebug("--- DirectLoginValueComponent.inputElementConfiguration - 3.1.1");
135 //TODO: remove the value: field and replace it with element.dom.value = <some value> 132 //TODO: remove the value: field and replace it with element.dom.value = <some value>
136 radio = {tag:'input', type:'radio', name:name, value:anOption['value']}; 133 radio = {tag:'input', type:'radio', name:name, value:anOption['value']};
137//MochiKit.Logging.logDebug("--- DirectLoginValueComponent.inputElementConfiguration - 3.1.2"); 134//MochiKit.Logging.logDebug("--- DirectLoginValueComponent.inputElementConfiguration - 3.1.2");
138 if (currentValue == anOption['value']) { 135 if (currentValue == anOption['value']) {
139//MochiKit.Logging.logDebug("--- DirectLoginValueComponent.inputElementConfiguration - 3.1.3"); 136//MochiKit.Logging.logDebug("--- DirectLoginValueComponent.inputElementConfiguration - 3.1.3");
140 radio.checked = true; 137 radio.checked = true;
141//MochiKit.Logging.logDebug("--- DirectLoginValueComponent.inputElementConfiguration - 3.1.4"); 138//MochiKit.Logging.logDebug("--- DirectLoginValueComponent.inputElementConfiguration - 3.1.4");
142 } 139 }
143//MochiKit.Logging.logDebug("--- DirectLoginValueComponent.inputElementConfiguration - 3.1.5"); 140//MochiKit.Logging.logDebug("--- DirectLoginValueComponent.inputElementConfiguration - 3.1.5");
144 radioBox.children.push({tag:'div', children:[ radio, {tag:'span', html:anOption['value']} ]}) 141 radioBox.children.push({tag:'div', children:[ radio, {tag:'span', html:anOption['value']} ]})
145//MochiKit.Logging.logDebug("--- DirectLoginValueComponent.inputElementConfiguration - 3.1.6"); 142//MochiKit.Logging.logDebug("--- DirectLoginValueComponent.inputElementConfiguration - 3.1.6");
146 }) 143 })
147//MochiKit.Logging.logDebug("--- DirectLoginValueComponent.inputElementConfiguration - 3.2"); 144//MochiKit.Logging.logDebug("--- DirectLoginValueComponent.inputElementConfiguration - 3.2");
148 break; 145 break;
149 } 146 }
150//MochiKit.Logging.logDebug("<<< DirectLoginValueComponent.inputElementConfiguration"); 147//MochiKit.Logging.logDebug("<<< DirectLoginValueComponent.inputElementConfiguration");
151 148
152 return result; 149 return result;
diff --git a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/DirectLoginsComponent.js b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/DirectLoginsComponent.js
index 3292a95..1396bd8 100644
--- a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/DirectLoginsComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/DirectLoginsComponent.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; } 29if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.RecordDetail.DirectLoginsComponent = function(anElement, args) { 33Clipperz.PM.Components.RecordDetail.DirectLoginsComponent = function(anElement, args) {
37//MochiKit.Logging.logDebug(">>> new Clipperz.PM.Components.RecordDetail.DirectLoginsComponent"); 34//MochiKit.Logging.logDebug(">>> new Clipperz.PM.Components.RecordDetail.DirectLoginsComponent");
38 args = args || {}; 35 args = args || {};
39 36
40//MochiKit.Logging.logDebug("--- new Clipperz.PM.Components.RecordDetail.DirectLoginsComponent - 0"); 37//MochiKit.Logging.logDebug("--- new Clipperz.PM.Components.RecordDetail.DirectLoginsComponent - 0");
41 Clipperz.PM.Components.RecordDetail.DirectLoginsComponent.superclass.constructor.call(this, anElement, args); 38 Clipperz.PM.Components.RecordDetail.DirectLoginsComponent.superclass.constructor.call(this, anElement, args);
42//MochiKit.Logging.logDebug("--- new Clipperz.PM.Components.RecordDetail.DirectLoginsComponent - 1"); 39//MochiKit.Logging.logDebug("--- new Clipperz.PM.Components.RecordDetail.DirectLoginsComponent - 1");
43 40
44 this._addDirectLoginButton = null; 41 this._addDirectLoginButton = null;
45 42
46//MochiKit.Logging.logDebug("--- new Clipperz.PM.Components.RecordDetail.DirectLoginsComponent - 2"); 43//MochiKit.Logging.logDebug("--- new Clipperz.PM.Components.RecordDetail.DirectLoginsComponent - 2");
47 this.mainComponent().addEditComponent(this); 44 this.mainComponent().addEditComponent(this);
48//MochiKit.Logging.logDebug("--- new Clipperz.PM.Components.RecordDetail.DirectLoginsComponent - 3"); 45//MochiKit.Logging.logDebug("--- new Clipperz.PM.Components.RecordDetail.DirectLoginsComponent - 3");
49 this.render(); 46 this.render();
50//MochiKit.Logging.logDebug("<<< new Clipperz.PM.Components.RecordDetail.DirectLoginsComponent"); 47//MochiKit.Logging.logDebug("<<< new Clipperz.PM.Components.RecordDetail.DirectLoginsComponent");
51 48
52 return this; 49 return this;
53} 50}
54 51
55//============================================================================= 52//=============================================================================
56 53
57YAHOO.extendX(Clipperz.PM.Components.RecordDetail.DirectLoginsComponent, Clipperz.PM.Components.RecordDetail.AbstractComponent, { 54YAHOO.extendX(Clipperz.PM.Components.RecordDetail.DirectLoginsComponent, Clipperz.PM.Components.RecordDetail.AbstractComponent, {
58 55
59 'toString': function() { 56 'toString': function() {
60 return "Clipperz.PM.Components.RecordDetail.DirectLoginsComponent component"; 57 return "Clipperz.PM.Components.RecordDetail.DirectLoginsComponent component";
61 }, 58 },
62 59
63 //------------------------------------------------------------------------- 60 //-------------------------------------------------------------------------
64 61
65 'addDirectLoginButton': function() { 62 'addDirectLoginButton': function() {
66 return this._addDirectLoginButton; 63 return this._addDirectLoginButton;
67 }, 64 },
68 65
69 'setAddDirectLoginButton': function(aValue) { 66 'setAddDirectLoginButton': function(aValue) {
70 this._addDirectLoginButton = aValue; 67 this._addDirectLoginButton = aValue;
71 }, 68 },
72 69
73 //------------------------------------------------------------------------- 70 //-------------------------------------------------------------------------
74 71
75 'render': function() { 72 'render': function() {
76 this.element().update(""); 73 this.element().update("");
77 74
78 Clipperz.YUI.DomHelper.append(this.element().dom, 75 Clipperz.YUI.DomHelper.append(this.element().dom,
79 {tag:'div', cls:'directLoginsRecordBox', children:[ 76 {tag:'div', cls:'directLoginsRecordBox', children:[
80 {tag:'h3', htmlString:Clipperz.PM.Strings['recordDetailDirectLoginBlockTitle']}, 77 {tag:'h3', htmlString:Clipperz.PM.Strings['recordDetailDirectLoginBlockTitle']},
81 {tag:'ul', id:this.getId('directLogins')}, 78 {tag:'ul', id:this.getId('directLogins')},
82 79
83 {tag:'div', cls:'addDirectLoginBox', id:this.getId('addDirectLogin'), children:[ 80 {tag:'div', cls:'addDirectLoginBox', id:this.getId('addDirectLogin'), children:[
84 {tag:'div', cls:'addDirectLoginBoxContent', children:[ 81 {tag:'div', cls:'addDirectLoginBoxContent', children:[
85 {tag:'div', cls:'bookmarkletConfiguration', children:[ 82 {tag:'div', cls:'bookmarkletConfiguration', children:[
86 // {tag:'span', htmlString:Clipperz.PM.Strings['newRecordWizardBookmarkletConfigurationLabel']}, 83 // {tag:'span', htmlString:Clipperz.PM.Strings['newRecordWizardBookmarkletConfigurationLabel']},
87 {tag:'div', htmlString:Clipperz.PM.Strings['recordDetailNewDirectLoginDescription']}, 84 {tag:'div', htmlString:Clipperz.PM.Strings['recordDetailNewDirectLoginDescription']},
88 {tag:'textarea', id:this.getId('addDirectLoginTextarea')} 85 {tag:'textarea', id:this.getId('addDirectLoginTextarea')}
89 ]}, 86 ]},
90 {tag:'div', id:this.getId('addDirectLoginButton')} 87 {tag:'div', id:this.getId('addDirectLoginButton')}
91 ]} 88 ]}
92 ]} 89 ]}
93 ]} 90 ]}
94 ); 91 );
95 92
96 if (MochiKit.Base.keys(this.record().directLogins()).length == 0) { 93 if (MochiKit.Base.keys(this.record().directLogins()).length == 0) {
97//MochiKit.Logging.logDebug("--- DirectLoginsComponent.render - 3"); 94//MochiKit.Logging.logDebug("--- DirectLoginsComponent.render - 3");
98 Clipperz.YUI.DomHelper.append(this.getElement('directLogins'), 95 Clipperz.YUI.DomHelper.append(this.getElement('directLogins'),
99 {tag:'li', children:[ 96 {tag:'li', children:[
100 // {tag:'span', htmlString:Clipperz.PM.Strings['recordDetailDirectLoginBlockNoDirectLoginConfiguredLabel']} 97 // {tag:'span', htmlString:Clipperz.PM.Strings['recordDetailDirectLoginBlockNoDirectLoginConfiguredLabel']}
101 {tag:'div', cls:'recordDetailNoDirectLoginDescriptionBox', htmlString:Clipperz.PM.Strings['recordDetailDirectLoginBlockNoDirectLoginConfiguredDescription']} 98 {tag:'div', cls:'recordDetailNoDirectLoginDescriptionBox', htmlString:Clipperz.PM.Strings['recordDetailDirectLoginBlockNoDirectLoginConfiguredDescription']}
102 ]} 99 ]}
103 ); 100 );
104//MochiKit.Logging.logDebug("--- DirectLoginsComponent.render - 4"); 101//MochiKit.Logging.logDebug("--- DirectLoginsComponent.render - 4");
105 } else { 102 } else {
106//MochiKit.Logging.logDebug("--- DirectLoginsComponent.render - 5"); 103//MochiKit.Logging.logDebug("--- DirectLoginsComponent.render - 5");
107 for (directLoginReference in this.record().directLogins()) { 104 for (directLoginReference in this.record().directLogins()) {
108//MochiKit.Logging.logDebug("--- DirectLoginsComponent.render - 6"); 105//MochiKit.Logging.logDebug("--- DirectLoginsComponent.render - 6");
109 this.addDirectLogin(this.record().directLogins()[directLoginReference]); 106 this.addDirectLogin(this.record().directLogins()[directLoginReference]);
110//MochiKit.Logging.logDebug("--- DirectLoginsComponent.render - 7"); 107//MochiKit.Logging.logDebug("--- DirectLoginsComponent.render - 7");
111 } 108 }
112//MochiKit.Logging.logDebug("--- DirectLoginsComponent.render - 8"); 109//MochiKit.Logging.logDebug("--- DirectLoginsComponent.render - 8");
113 } 110 }
114//MochiKit.Logging.logDebug("--- DirectLoginsComponent.render - 9"); 111//MochiKit.Logging.logDebug("--- DirectLoginsComponent.render - 9");
115 112
116 this.setAddDirectLoginButton(new YAHOO.ext.Button(this.getDom('addDirectLoginButton'), { 113 this.setAddDirectLoginButton(new YAHOO.ext.Button(this.getDom('addDirectLoginButton'), {
117 text:Clipperz.PM.Strings['recordDetailAddNewDirectLoginButtonLabel'], 114 text:Clipperz.PM.Strings['recordDetailAddNewDirectLoginButtonLabel'],
118 handler:this.addNewDirectLogin, 115 handler:this.addNewDirectLogin,
119 scope:this 116 scope:this
120 })); 117 }));
121 MochiKit.Signal.connect(this.getId('addDirectLoginTextarea'), 'onkeydown', this, 'onkeydown'); 118 MochiKit.Signal.connect(this.getId('addDirectLoginTextarea'), 'onkeydown', this, 'onkeydown');
122//MochiKit.Logging.logDebug("--- DirectLoginsComponent.render - 11"); 119//MochiKit.Logging.logDebug("--- DirectLoginsComponent.render - 11");
123 120
124 this.update(); 121 this.update();
125//MochiKit.Logging.logDebug("<<< DirectLoginsComponent.render"); 122//MochiKit.Logging.logDebug("<<< DirectLoginsComponent.render");
126 }, 123 },
127 124
128 //------------------------------------------------------------------------- 125 //-------------------------------------------------------------------------
129 126
130 'addDirectLogin': function(aDirectLogin) { 127 'addDirectLogin': function(aDirectLogin) {
131//MochiKit.Logging.logDebug(">>> DirectLoginsComponent.addDirectLogin"); 128//MochiKit.Logging.logDebug(">>> DirectLoginsComponent.addDirectLogin");
132 new Clipperz.PM.Components.RecordDetail.DirectLoginComponent( 129 new Clipperz.PM.Components.RecordDetail.DirectLoginComponent(
133 Clipperz.YUI.DomHelper.append(this.getDom('directLogins'), {tag:'div'}, true), 130 Clipperz.YUI.DomHelper.append(this.getDom('directLogins'), {tag:'div'}, true),
134 { 131 {
135 mainComponent:this.mainComponent(), 132 mainComponent:this.mainComponent(),
136 directLogin:aDirectLogin 133 directLogin:aDirectLogin
137 } 134 }
138 ); 135 );
139//MochiKit.Logging.logDebug("<<< DirectLoginsComponent.addDirectLogin"); 136//MochiKit.Logging.logDebug("<<< DirectLoginsComponent.addDirectLogin");
140 }, 137 },
141 138
142 //------------------------------------------------------------------------- 139 //-------------------------------------------------------------------------
143 140
144 'addNewDirectLogin': function() { 141 'addNewDirectLogin': function() {
145 varnewDirectLogin; 142 varnewDirectLogin;
146 varconfiguration; 143 varconfiguration;
147 144
148//MochiKit.Logging.logDebug(">>> DirectLoginsComponent.addNewDirectLogin"); 145//MochiKit.Logging.logDebug(">>> DirectLoginsComponent.addNewDirectLogin");
149 if (MochiKit.Base.keys(this.record().directLogins()).length == 0) { 146 if (MochiKit.Base.keys(this.record().directLogins()).length == 0) {
150 this.getElement('directLogins').update(""); 147 this.getElement('directLogins').update("");
151 } 148 }
152 149
diff --git a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldButtonComponent.js b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldButtonComponent.js
index 9e1d56a..b79c365 100644
--- a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldButtonComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldButtonComponent.js
@@ -1,117 +1,114 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; } 29if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.RecordDetail.FieldButtonComponent = function(anElement, args) { 33Clipperz.PM.Components.RecordDetail.FieldButtonComponent = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 Clipperz.PM.Components.RecordDetail.FieldButtonComponent.superclass.constructor.call(this, anElement, args); 36 Clipperz.PM.Components.RecordDetail.FieldButtonComponent.superclass.constructor.call(this, anElement, args);
40 37
41 this._button = null; 38 this._button = null;
42 39
43 this.render(); 40 this.render();
44 41
45 return this; 42 return this;
46} 43}
47 44
48//============================================================================= 45//=============================================================================
49 46
50YAHOO.extendX(Clipperz.PM.Components.RecordDetail.FieldButtonComponent, Clipperz.PM.Components.RecordDetail.AbstractFieldSubComponent, { 47YAHOO.extendX(Clipperz.PM.Components.RecordDetail.FieldButtonComponent, Clipperz.PM.Components.RecordDetail.AbstractFieldSubComponent, {
51 48
52 'toString': function() { 49 'toString': function() {
53 return "Clipperz.PM.Components.RecordDetail.FieldButtonComponent"; 50 return "Clipperz.PM.Components.RecordDetail.FieldButtonComponent";
54 }, 51 },
55 52
56 //------------------------------------------------------------------------- 53 //-------------------------------------------------------------------------
57 54
58 'buttonText': function() { 55 'buttonText': function() {
59 varresult; 56 varresult;
60 57
61 if (this.recordField() == null) { 58 if (this.recordField() == null) {
62 //TODO: this is never used. It is just an obsolete legacy chunk of code 59 //TODO: this is never used. It is just an obsolete legacy chunk of code
63 result = Clipperz.PM.Strings['recordDetailAddFieldButtonLabel']; 60 result = Clipperz.PM.Strings['recordDetailAddFieldButtonLabel'];
64 } else { 61 } else {
65 result = Clipperz.PM.Strings['recordDetailRemoveFieldButtonLabel']; 62 result = Clipperz.PM.Strings['recordDetailRemoveFieldButtonLabel'];
66 } 63 }
67 64
68 return result; 65 return result;
69 }, 66 },
70 67
71 //------------------------------------------------------------------------- 68 //-------------------------------------------------------------------------
72 69
73 'button': function() { 70 'button': function() {
74 return this._button; 71 return this._button;
75 }, 72 },
76 73
77 'setButton': function(aValue) { 74 'setButton': function(aValue) {
78 this._button = aValue; 75 this._button = aValue;
79 }, 76 },
80 77
81 //------------------------------------------------------------------------- 78 //-------------------------------------------------------------------------
82 79
83 'render': function() { 80 'render': function() {
84 this.element().update(""); 81 this.element().update("");
85 82
86 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', id:this.getId('button')}) 83 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', id:this.getId('button')})
87 this.setButton(new YAHOO.ext.Button(this.getDom('button'), {text:this.buttonText(), handler:this.handleButtonClick, scope:this})); 84 this.setButton(new YAHOO.ext.Button(this.getDom('button'), {text:this.buttonText(), handler:this.handleButtonClick, scope:this}));
88 85
89 this.update(); 86 this.update();
90 }, 87 },
91 88
92 //------------------------------------------------------------------------- 89 //-------------------------------------------------------------------------
93 90
94 'handleButtonClick': function() { 91 'handleButtonClick': function() {
95 if (this.recordField() == null) { 92 if (this.recordField() == null) {
96 this.mainComponent().addNewField(); 93 this.mainComponent().addNewField();
97 } else { 94 } else {
98 this.mainComponent().removeField(this.fieldComponent()); 95 this.mainComponent().removeField(this.fieldComponent());
99 } 96 }
100 }, 97 },
101 98
102 //------------------------------------------------------------------------- 99 //-------------------------------------------------------------------------
103 100
104 'updateEditMode': function() { 101 'updateEditMode': function() {
105 this.button().show(); 102 this.button().show();
106 }, 103 },
107 104
108 //------------------------------------------------------------------------- 105 //-------------------------------------------------------------------------
109 106
110 'updateViewMode': function() { 107 'updateViewMode': function() {
111 this.button().hide(); 108 this.button().hide();
112 }, 109 },
113 110
114 //------------------------------------------------------------------------- 111 //-------------------------------------------------------------------------
115 __syntaxFix__: "syntax fix" 112 __syntaxFix__: "syntax fix"
116}); 113});
117 114
diff --git a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldComponent.js b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldComponent.js
index c2d947e..978a54e 100644
--- a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldComponent.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; } 29if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.RecordDetail.FieldComponent = function(anElement, args) { 33Clipperz.PM.Components.RecordDetail.FieldComponent = function(anElement, args) {
37//MochiKit.Logging.logDebug(">>> new FieldComponent"); 34//MochiKit.Logging.logDebug(">>> new FieldComponent");
38 args = args || {}; 35 args = args || {};
39 36
40 Clipperz.PM.Components.RecordDetail.FieldComponent.superclass.constructor.call(this, anElement, args); 37 Clipperz.PM.Components.RecordDetail.FieldComponent.superclass.constructor.call(this, anElement, args);
41 38
42 this._element = anElement; 39 this._element = anElement;
43 this._recordField = args.recordField || null; 40 this._recordField = args.recordField || null;
44 41
45 this._buttonComponent = null; 42 this._buttonComponent = null;
46 this._labelComponent = null; 43 this._labelComponent = null;
47 this._dragHandler = null; 44 this._dragHandler = null;
48 this._valueComponent = null; 45 this._valueComponent = null;
49 this._typeComponent = null; 46 this._typeComponent = null;
50 47
51 this.mainComponent().addEditComponent(this); 48 this.mainComponent().addEditComponent(this);
52 49
53 this.render(); 50 this.render();
54 51
55 return this; 52 return this;
56} 53}
57 54
58//============================================================================= 55//=============================================================================
59 56
60YAHOO.extendX(Clipperz.PM.Components.RecordDetail.FieldComponent, Clipperz.PM.Components.RecordDetail.AbstractComponent, { 57YAHOO.extendX(Clipperz.PM.Components.RecordDetail.FieldComponent, Clipperz.PM.Components.RecordDetail.AbstractComponent, {
61 58
62 'toString': function() { 59 'toString': function() {
63 return "Clipperz.PM.Components.RecordDetail.FieldComponent component"; 60 return "Clipperz.PM.Components.RecordDetail.FieldComponent component";
64 }, 61 },
65 62
66 //------------------------------------------------------------------------- 63 //-------------------------------------------------------------------------
67 64
68 'recordField': function() { 65 'recordField': function() {
69 return this._recordField; 66 return this._recordField;
70 }, 67 },
71 68
72 //------------------------------------------------------------------------- 69 //-------------------------------------------------------------------------
73 70
74 'buttonComponent': function() { 71 'buttonComponent': function() {
75 return this._buttonComponent; 72 return this._buttonComponent;
76 }, 73 },
77 74
78 'setButtonComponent': function(aValue) { 75 'setButtonComponent': function(aValue) {
79 this._buttonComponent = aValue; 76 this._buttonComponent = aValue;
80 }, 77 },
81 78
82 //------------------------------------------------------------------------- 79 //-------------------------------------------------------------------------
83 80
84 'labelComponent': function() { 81 'labelComponent': function() {
85 return this._labelComponent; 82 return this._labelComponent;
86 }, 83 },
87 84
88 'setLabelComponent': function(aValue) { 85 'setLabelComponent': function(aValue) {
89 this._labelComponent = aValue; 86 this._labelComponent = aValue;
90 }, 87 },
91 88
92 //------------------------------------------------------------------------- 89 //-------------------------------------------------------------------------
93 90
94 'dragHandler': function() { 91 'dragHandler': function() {
95 return this._dragHandler; 92 return this._dragHandler;
96 }, 93 },
97 94
98 'setDragHandler': function(aValue) { 95 'setDragHandler': function(aValue) {
99 this._dragHandler = aValue; 96 this._dragHandler = aValue;
100 }, 97 },
101 98
102 //------------------------------------------------------------------------- 99 //-------------------------------------------------------------------------
103 100
104 'valueComponent': function() { 101 'valueComponent': function() {
105 return this._valueComponent; 102 return this._valueComponent;
106 }, 103 },
107 104
108 'setValueComponent': function(aValue) { 105 'setValueComponent': function(aValue) {
109 this._valueComponent = aValue; 106 this._valueComponent = aValue;
110 }, 107 },
111 108
112 //------------------------------------------------------------------------- 109 //-------------------------------------------------------------------------
113 110
114 'typeComponent': function() { 111 'typeComponent': function() {
115 return this._typeComponent; 112 return this._typeComponent;
116 }, 113 },
117 114
118 'setTypeComponent': function(aValue) { 115 'setTypeComponent': function(aValue) {
119 this._typeComponent = aValue; 116 this._typeComponent = aValue;
120 }, 117 },
121 118
122 //------------------------------------------------------------------------- 119 //-------------------------------------------------------------------------
123 120
124 'render': function() { 121 'render': function() {
125//MochiKit.Logging.logDebug(">>> RecordDetail.FieldComponent.render"); 122//MochiKit.Logging.logDebug(">>> RecordDetail.FieldComponent.render");
126 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td',/* width:'32',*/ height:'24', cls:'removeFieldButton', align:'left', valign:'top', id:this.getId('button')}); 123 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td',/* width:'32',*/ height:'24', cls:'removeFieldButton', align:'left', valign:'top', id:this.getId('button')});
127 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td',/* width:'25%',*/ valign:'top', id:this.getId('label')}); 124 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td',/* width:'25%',*/ valign:'top', id:this.getId('label')});
128 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td',/* width:'3',*/ valign:'top', id:this.getId('dragHandler')}); 125 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td',/* width:'3',*/ valign:'top', id:this.getId('dragHandler')});
129 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td',/* width:'50%',*/ valign:'top', children:[ 126 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td',/* width:'50%',*/ valign:'top', children:[
130 {tag:'div', cls:'Clipperz_recordFieldData', id:this.getId('value')} 127 {tag:'div', cls:'Clipperz_recordFieldData', id:this.getId('value')}
131 ]}); 128 ]});
132 129
133 130
134 this.setButtonComponent(new Clipperz.PM.Components.RecordDetail.FieldButtonComponent(this.getElement('button'), {fieldComponent:this})); 131 this.setButtonComponent(new Clipperz.PM.Components.RecordDetail.FieldButtonComponent(this.getElement('button'), {fieldComponent:this}));
135 this.setLabelComponent(new Clipperz.PM.Components.RecordDetail.FieldLabelComponent(this.getElement('label'), {fieldComponent:this})); 132 this.setLabelComponent(new Clipperz.PM.Components.RecordDetail.FieldLabelComponent(this.getElement('label'), {fieldComponent:this}));
136 this.setDragHandler(new Clipperz.PM.Components.RecordDetail.FieldDragHandler(this.getElement('dragHandler'), {fieldComponent:this})); 133 this.setDragHandler(new Clipperz.PM.Components.RecordDetail.FieldDragHandler(this.getElement('dragHandler'), {fieldComponent:this}));
137 this.setValueComponent(new Clipperz.PM.Components.RecordDetail.FieldValueComponent(this.getElement('value'), {fieldComponent:this})); 134 this.setValueComponent(new Clipperz.PM.Components.RecordDetail.FieldValueComponent(this.getElement('value'), {fieldComponent:this}));
138 135
139 if (this.editMode() == 'EDIT') { 136 if (this.editMode() == 'EDIT') {
140 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td',/* width:'60',*/ align:'left', cls:'fieldTypeTD', valign:'top', id:this.getId('type')}); 137 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td',/* width:'60',*/ align:'left', cls:'fieldTypeTD', valign:'top', id:this.getId('type')});
141 this.setTypeComponent(new Clipperz.PM.Components.RecordDetail.FieldTypeComponent(this.getElement('type'), {fieldComponent:this})); 138 this.setTypeComponent(new Clipperz.PM.Components.RecordDetail.FieldTypeComponent(this.getElement('type'), {fieldComponent:this}));
142 } 139 }
143 140
144 this.update(); 141 this.update();
145//MochiKit.Logging.logDebug("<<< RecordDetail.FieldComponent.render"); 142//MochiKit.Logging.logDebug("<<< RecordDetail.FieldComponent.render");
146 }, 143 },
147 144
148 //------------------------------------------------------------------------- 145 //-------------------------------------------------------------------------
149 146
150 'handleButtonClick': function() { 147 'handleButtonClick': function() {
151 this.mainComponent().record().removeField(this.recordField()); 148 this.mainComponent().record().removeField(this.recordField());
152 149
diff --git a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldDragHandler.js b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldDragHandler.js
index 13a08fc..f7c5e21 100644
--- a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldDragHandler.js
+++ b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldDragHandler.js
@@ -1,59 +1,56 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; } 29if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.RecordDetail.FieldDragHandler = function(anElement, args) { 33Clipperz.PM.Components.RecordDetail.FieldDragHandler = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 Clipperz.PM.Components.RecordDetail.FieldDragHandler.superclass.constructor.call(this, anElement, args); 36 Clipperz.PM.Components.RecordDetail.FieldDragHandler.superclass.constructor.call(this, anElement, args);
40 37
41 this._element = anElement; 38 this._element = anElement;
42 39
43 this.render(); 40 this.render();
44 41
45 return this; 42 return this;
46} 43}
47 44
48//============================================================================= 45//=============================================================================
49 46
50YAHOO.extendX(Clipperz.PM.Components.RecordDetail.FieldDragHandler, Clipperz.PM.Components.RecordDetail.AbstractFieldSubComponent, { 47YAHOO.extendX(Clipperz.PM.Components.RecordDetail.FieldDragHandler, Clipperz.PM.Components.RecordDetail.AbstractFieldSubComponent, {
51 48
52 'toString': function() { 49 'toString': function() {
53 return "Clipperz.PM.Components.RecordDetail.FieldDragHandler component"; 50 return "Clipperz.PM.Components.RecordDetail.FieldDragHandler component";
54 }, 51 },
55 52
56 //------------------------------------------------------------------------- 53 //-------------------------------------------------------------------------
57 __syntaxFix__: "syntax fix" 54 __syntaxFix__: "syntax fix"
58}); 55});
59 56
diff --git a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldLabelComponent.js b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldLabelComponent.js
index 3bbcd1d..c58a7e2 100644
--- a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldLabelComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldLabelComponent.js
@@ -1,141 +1,138 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; } 29if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.RecordDetail.FieldLabelComponent = function(anElement, args) { 33Clipperz.PM.Components.RecordDetail.FieldLabelComponent = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 Clipperz.PM.Components.RecordDetail.FieldLabelComponent.superclass.constructor.call(this, anElement, args); 36 Clipperz.PM.Components.RecordDetail.FieldLabelComponent.superclass.constructor.call(this, anElement, args);
40 37
41 this._inputElement = null; 38 this._inputElement = null;
42 39
43 this.render(); 40 this.render();
44 41
45 return this; 42 return this;
46} 43}
47 44
48//============================================================================= 45//=============================================================================
49 46
50YAHOO.extendX(Clipperz.PM.Components.RecordDetail.FieldLabelComponent, Clipperz.PM.Components.RecordDetail.AbstractFieldSubComponent, { 47YAHOO.extendX(Clipperz.PM.Components.RecordDetail.FieldLabelComponent, Clipperz.PM.Components.RecordDetail.AbstractFieldSubComponent, {
51 48
52 'toString': function() { 49 'toString': function() {
53 return "Clipperz.PM.Components.RecordDetail.FieldLabelComponent component"; 50 return "Clipperz.PM.Components.RecordDetail.FieldLabelComponent component";
54 }, 51 },
55 52
56 //------------------------------------------------------------------------- 53 //-------------------------------------------------------------------------
57 54
58 'value': function() { 55 'value': function() {
59 return this.recordField().label(); 56 return this.recordField().label();
60 }, 57 },
61 58
62 //------------------------------------------------------------------------- 59 //-------------------------------------------------------------------------
63 60
64 'inputElement': function() { 61 'inputElement': function() {
65 return this._inputElement; 62 return this._inputElement;
66 }, 63 },
67 64
68 'setInputElement': function(aValue) { 65 'setInputElement': function(aValue) {
69 this._inputElement = aValue; 66 this._inputElement = aValue;
70 }, 67 },
71 68
72 //------------------------------------------------------------------------- 69 //-------------------------------------------------------------------------
73 70
74 'render': function() { 71 'render': function() {
75 varnewTextFormField; 72 varnewTextFormField;
76 this.element().update(""); 73 this.element().update("");
77 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', cls:'Clipperz_recordFieldLabel', id:this.getId('label')}); 74 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', cls:'Clipperz_recordFieldLabel', id:this.getId('label')});
78 // Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', style:'font-size:8pt;', html:this.recordField().key()}); 75 // Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', style:'font-size:8pt;', html:this.recordField().key()});
79 76
80 // this.setInputElement(new Clipperz.PM.Components.TextFormField(this.getElement('label'), {editMode:this.editMode(), value:this.value()})); 77 // this.setInputElement(new Clipperz.PM.Components.TextFormField(this.getElement('label'), {editMode:this.editMode(), value:this.value()}));
81 newTextFormField = new Clipperz.PM.Components.TextFormField(this.getElement('label'), {editMode:this.editMode(), value:this.value()}); 78 newTextFormField = new Clipperz.PM.Components.TextFormField(this.getElement('label'), {editMode:this.editMode(), value:this.value()});
82 // newTextFormField.inputElement().setStyle({border:'3px solid cyan;'}); 79 // newTextFormField.inputElement().setStyle({border:'3px solid cyan;'});
83 newTextFormField.on('change', this.notifyChanges, this, true) 80 newTextFormField.on('change', this.notifyChanges, this, true)
84 // this.inputElement().on('change', function() {alert("CHANGE");}); 81 // this.inputElement().on('change', function() {alert("CHANGE");});
85 // this.inputElement().getElement('editComponent_input').on('change', function() {alert("CHANGE");}) 82 // this.inputElement().getElement('editComponent_input').on('change', function() {alert("CHANGE");})
86 // this.inputElement().on('blur', this.notifyChanges, this, true); 83 // this.inputElement().on('blur', this.notifyChanges, this, true);
87 84
88 this.setInputElement(newTextFormField); 85 this.setInputElement(newTextFormField);
89 this.update(); 86 this.update();
90 }, 87 },
91 88
92 'notifyChanges': function() { 89 'notifyChanges': function() {
93//MochiKit.Logging.logDebug(">>> FieldLabelComponent.notifyChanges - " + this); 90//MochiKit.Logging.logDebug(">>> FieldLabelComponent.notifyChanges - " + this);
94 this.synchronizeComponentValues(); 91 this.synchronizeComponentValues();
95 Clipperz.NotificationCenter.notify(this.recordField().recordVersion().record(), 'updatedFieldLabel'); 92 Clipperz.NotificationCenter.notify(this.recordField().recordVersion().record(), 'updatedFieldLabel');
96//MochiKit.Logging.logDebug("<<< FieldLabelComponent.notifyChanges"); 93//MochiKit.Logging.logDebug("<<< FieldLabelComponent.notifyChanges");
97 }, 94 },
98 95
99 //------------------------------------------------------------------------- 96 //-------------------------------------------------------------------------
100 97
101 'update': function() { 98 'update': function() {
102//MochiKit.Logging.logDebug(">>> FieldLabelComponent.update"); 99//MochiKit.Logging.logDebug(">>> FieldLabelComponent.update");
103 this.inputElement().update({editMode:this.editMode(), value:this.value()}); 100 this.inputElement().update({editMode:this.editMode(), value:this.value()});
104//MochiKit.Logging.logDebug("<<< FieldLabelComponent.update"); 101//MochiKit.Logging.logDebug("<<< FieldLabelComponent.update");
105 }, 102 },
106 103
107 //------------------------------------------------------------------------- 104 //-------------------------------------------------------------------------
108/* 105/*
109 'updateViewMode': function() { 106 'updateViewMode': function() {
110 varwidth; 107 varwidth;
111 varelement; 108 varelement;
112 109
113 this.element().update(""); 110 this.element().update("");
114 width = this.element().getWidth(); 111 width = this.element().getWidth();
115 element = Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', html:this.value()}, true); 112 element = Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', html:this.value()}, true);
116 element.setWidth(width-1); 113 element.setWidth(width-1);
117 }, 114 },
118 115
119 //------------------------------------------------------------------------- 116 //-------------------------------------------------------------------------
120 117
121 'updateEditMode': function() { 118 'updateEditMode': function() {
122 varwidth; 119 varwidth;
123 120
124 this.element().update(""); 121 this.element().update("");
125 width = this.element().getWidth(true); 122 width = this.element().getWidth(true);
126 this.setInputElement(Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'input', type:'text', value:this.value()}, true)); 123 this.setInputElement(Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'input', type:'text', value:this.value()}, true));
127 this.inputElement().setWidth(width-1); 124 this.inputElement().setWidth(width-1);
128 }, 125 },
129*/ 126*/
130 //------------------------------------------------------------------------- 127 //-------------------------------------------------------------------------
131 128
132 'synchronizeComponentValues': function() { 129 'synchronizeComponentValues': function() {
133 if (this.inputElement() != null) { 130 if (this.inputElement() != null) {
134 this.recordField().setLabel(this.inputElement().value()); 131 this.recordField().setLabel(this.inputElement().value());
135 } 132 }
136 }, 133 },
137 134
138 //------------------------------------------------------------------------- 135 //-------------------------------------------------------------------------
139 __syntaxFix__: "syntax fix" 136 __syntaxFix__: "syntax fix"
140}); 137});
141 138
diff --git a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldTypeComponent.js b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldTypeComponent.js
index 3bdd093..489258a 100644
--- a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldTypeComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldTypeComponent.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; } 29if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.RecordDetail.FieldTypeComponent = function(anElement, args) { 33Clipperz.PM.Components.RecordDetail.FieldTypeComponent = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 Clipperz.PM.Components.RecordDetail.FieldTypeComponent.superclass.constructor.call(this, anElement, args); 36 Clipperz.PM.Components.RecordDetail.FieldTypeComponent.superclass.constructor.call(this, anElement, args);
40 37
41 this._inputElement = null; 38 this._inputElement = null;
42 39
43 this.render(); 40 this.render();
44 41
45 return this; 42 return this;
46} 43}
47 44
48//============================================================================= 45//=============================================================================
49 46
50YAHOO.extendX(Clipperz.PM.Components.RecordDetail.FieldTypeComponent, Clipperz.PM.Components.RecordDetail.AbstractFieldSubComponent, { 47YAHOO.extendX(Clipperz.PM.Components.RecordDetail.FieldTypeComponent, Clipperz.PM.Components.RecordDetail.AbstractFieldSubComponent, {
51 48
52 'toString': function() { 49 'toString': function() {
53 return "Clipperz.PM.Components.RecordDetail.FieldTypeComponent component"; 50 return "Clipperz.PM.Components.RecordDetail.FieldTypeComponent component";
54 }, 51 },
55 52
56 //------------------------------------------------------------------------- 53 //-------------------------------------------------------------------------
57 54
58 'inputElement': function() { 55 'inputElement': function() {
59 return this._inputElement; 56 return this._inputElement;
60 }, 57 },
61 58
62 'setInputElement': function(aValue) { 59 'setInputElement': function(aValue) {
63 this._inputElement = aValue; 60 this._inputElement = aValue;
64 }, 61 },
65 62
66 //------------------------------------------------------------------------- 63 //-------------------------------------------------------------------------
67 64
68 'value': function() { 65 'value': function() {
69 return this.recordField().type(); 66 return this.recordField().type();
70 }, 67 },
71 68
72 'canChangeType': function() { 69 'canChangeType': function() {
73 var value; 70 var value;
74 var result; 71 var result;
75 72
76 value = this.value(); 73 value = this.value();
77 result = ((value == 'TXT') || (value == 'PWD') || (value == 'URL') || (value == 'DATE') || (value == 'ADDR')); 74 result = ((value == 'TXT') || (value == 'PWD') || (value == 'URL') || (value == 'DATE') || (value == 'ADDR'));
78 75
79 return result 76 return result
80 }, 77 },
81 78
82 //------------------------------------------------------------------------- 79 //-------------------------------------------------------------------------
83 80
84 'updateViewMode': function() { 81 'updateViewMode': function() {
85 this.element().update(""); 82 this.element().update("");
86 if (this.canChangeType()) { 83 if (this.canChangeType()) {
87 varwidth; 84 varwidth;
88 var element; 85 var element;
89 86
90 width = this.element().getWidth(true); 87 width = this.element().getWidth(true);
91 element = Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', html:this.recordField().typeShortDescription()}, true); 88 element = Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', html:this.recordField().typeShortDescription()}, true);
92 element.setWidth(width-1); 89 element.setWidth(width-1);
93 } 90 }
94 }, 91 },
95 92
96 //------------------------------------------------------------------------- 93 //-------------------------------------------------------------------------
97 94
98 'updateEditMode': function() { 95 'updateEditMode': function() {
99 this.element().update(""); 96 this.element().update("");
100 97
101 if (this.canChangeType()) { 98 if (this.canChangeType()) {
102 varwidth; 99 varwidth;
103 100
104 width = this.element().getWidth(true); 101 width = this.element().getWidth(true);
105 this.setInputElement(Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'select', children:[ 102 this.setInputElement(Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'select', children:[
106 {tag:'option', value:'TXT', htmlString:Clipperz.PM.Strings['recordFieldTypologies']['TXT']['shortDescription']}, 103 {tag:'option', value:'TXT', htmlString:Clipperz.PM.Strings['recordFieldTypologies']['TXT']['shortDescription']},
107 {tag:'option', value:'PWD', htmlString:Clipperz.PM.Strings['recordFieldTypologies']['PWD']['shortDescription']}, 104 {tag:'option', value:'PWD', htmlString:Clipperz.PM.Strings['recordFieldTypologies']['PWD']['shortDescription']},
108 {tag:'option', value:'URL', htmlString:Clipperz.PM.Strings['recordFieldTypologies']['URL']['shortDescription']}, 105 {tag:'option', value:'URL', htmlString:Clipperz.PM.Strings['recordFieldTypologies']['URL']['shortDescription']},
109 {tag:'option', value:'DATE', htmlString:Clipperz.PM.Strings['recordFieldTypologies']['DATE']['shortDescription']}, 106 {tag:'option', value:'DATE', htmlString:Clipperz.PM.Strings['recordFieldTypologies']['DATE']['shortDescription']},
110 {tag:'option', value:'ADDR', htmlString:Clipperz.PM.Strings['recordFieldTypologies']['ADDR']['shortDescription']} 107 {tag:'option', value:'ADDR', htmlString:Clipperz.PM.Strings['recordFieldTypologies']['ADDR']['shortDescription']}
111 108
112 // {tag:'option', value:'CHECK', html:Clipperz.PM.DataModel.RecordField.TypeDescriptions['CHECK']['shortDescription']}, 109 // {tag:'option', value:'CHECK', html:Clipperz.PM.DataModel.RecordField.TypeDescriptions['CHECK']['shortDescription']},
113 // {tag:'option', value:'RADIO', html:Clipperz.PM.DataModel.RecordField.TypeDescriptions['RADIO']['shortDescription']}, 110 // {tag:'option', value:'RADIO', html:Clipperz.PM.DataModel.RecordField.TypeDescriptions['RADIO']['shortDescription']},
114 // {tag:'option', value:'CHECK', html:Clipperz.PM.DataModel.RecordField.TypeDescriptions['SELECT']['shortDescription']} 111 // {tag:'option', value:'CHECK', html:Clipperz.PM.DataModel.RecordField.TypeDescriptions['SELECT']['shortDescription']}
115 // {tag:'option', value:'NOTE', html:Clipperz.PM.DataModel.RecordField.TypeDescriptions['NOTE']['shortDescription']} 112 // {tag:'option', value:'NOTE', html:Clipperz.PM.DataModel.RecordField.TypeDescriptions['NOTE']['shortDescription']}
116 ]}, true)); 113 ]}, true));
117 this.inputElement().setWidth(width-1); 114 this.inputElement().setWidth(width-1);
118 this.inputElement().addHandler('change', true, this.onChange, this, true); 115 this.inputElement().addHandler('change', true, this.onChange, this, true);
119 // this.selectCorrectOption(); 116 // this.selectCorrectOption();
120 Clipperz.DOM.selectOptionMatchingValue(this.inputElement().dom, this.value()); 117 Clipperz.DOM.selectOptionMatchingValue(this.inputElement().dom, this.value());
121 } 118 }
122 }, 119 },
123 120
124 //------------------------------------------------------------------------- 121 //-------------------------------------------------------------------------
125 122
126 'onChange': function() { 123 'onChange': function() {
127 this.synchronizeComponentValues(); 124 this.synchronizeComponentValues();
128 this.fieldComponent().valueComponent().handleTypeChange(); 125 this.fieldComponent().valueComponent().handleTypeChange();
129 }, 126 },
130 127
131 //------------------------------------------------------------------------- 128 //-------------------------------------------------------------------------
132/* 129/*
133 'selectCorrectOption': function() { 130 'selectCorrectOption': function() {
134 varoptions; 131 varoptions;
135 var i,c; 132 var i,c;
136 133
137 options = this.inputElement().getChildrenByTagName('option'); 134 options = this.inputElement().getChildrenByTagName('option');
138 c = options.length; 135 c = options.length;
139 for (i=0; i<c; i++) { 136 for (i=0; i<c; i++) {
140 if (options[i].dom.value == this.value()) { 137 if (options[i].dom.value == this.value()) {
141 options[i].dom.selected = true; 138 options[i].dom.selected = true;
142 } 139 }
143 } 140 }
144 }, 141 },
145 */ 142 */
146 //------------------------------------------------------------------------- 143 //-------------------------------------------------------------------------
147 144
148 'synchronizeComponentValues': function() { 145 'synchronizeComponentValues': function() {
149 if (this.inputElement() != null) { 146 if (this.inputElement() != null) {
150 this.recordField().setType(this.inputElement().dom.value); 147 this.recordField().setType(this.inputElement().dom.value);
151 } 148 }
152 }, 149 },
diff --git a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldValueComponent.js b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldValueComponent.js
index a30992a..8621397 100644
--- a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldValueComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/FieldValueComponent.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; } 29if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.RecordDetail.FieldValueComponent = function(anElement, args) { 33Clipperz.PM.Components.RecordDetail.FieldValueComponent = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 Clipperz.PM.Components.RecordDetail.FieldValueComponent.superclass.constructor.call(this, anElement, args); 36 Clipperz.PM.Components.RecordDetail.FieldValueComponent.superclass.constructor.call(this, anElement, args);
40 37
41 this._inputElement = null; 38 this._inputElement = null;
42 this._scrambledStatus = 'SCRAMBLED'; //'UNSCRAMBLED' 39 this._scrambledStatus = 'SCRAMBLED'; //'UNSCRAMBLED'
43 40
44 this.render(); 41 this.render();
45 42
46 return this; 43 return this;
47} 44}
48 45
49//============================================================================= 46//=============================================================================
50 47
51YAHOO.extendX(Clipperz.PM.Components.RecordDetail.FieldValueComponent, Clipperz.PM.Components.RecordDetail.AbstractFieldSubComponent, { 48YAHOO.extendX(Clipperz.PM.Components.RecordDetail.FieldValueComponent, Clipperz.PM.Components.RecordDetail.AbstractFieldSubComponent, {
52 49
53 'toString': function() { 50 'toString': function() {
54 return "Clipperz.PM.Components.RecordDetail.FieldValueComponent component"; 51 return "Clipperz.PM.Components.RecordDetail.FieldValueComponent component";
55 }, 52 },
56 53
57 //------------------------------------------------------------------------- 54 //-------------------------------------------------------------------------
58 55
59 'value': function() { 56 'value': function() {
60 return this.recordField().value(); 57 return this.recordField().value();
61 }, 58 },
62 59
63 'setValue': function(aValue) { 60 'setValue': function(aValue) {
64 this.recordField().setValue(aValue); 61 this.recordField().setValue(aValue);
65 }, 62 },
66 63
67 //------------------------------------------------------------------------- 64 //-------------------------------------------------------------------------
68 65
69 'inputElement': function() { 66 'inputElement': function() {
70 return this._inputElement; 67 return this._inputElement;
71 }, 68 },
72 69
73 'setInputElement': function(aValue) { 70 'setInputElement': function(aValue) {
74 this._inputElement = aValue; 71 this._inputElement = aValue;
75 }, 72 },
76 73
77 //------------------------------------------------------------------------- 74 //-------------------------------------------------------------------------
78 75
79 'scrambledStatus': function() { 76 'scrambledStatus': function() {
80 return this._scrambledStatus; 77 return this._scrambledStatus;
81 }, 78 },
82 79
83 'setScrambledStatus': function(aValue) { 80 'setScrambledStatus': function(aValue) {
84 this._scrambledStatus = aValue; 81 this._scrambledStatus = aValue;
85 }, 82 },
86 83
87 //------------------------------------------------------------------------- 84 //-------------------------------------------------------------------------
88 85
89 'handleTypeChange': function() { 86 'handleTypeChange': function() {
90//MochiKit.Logging.logDebug(">>> handling type change - " + this.recordField().type()); 87//MochiKit.Logging.logDebug(">>> handling type change - " + this.recordField().type());
91 this.synchronizeComponentValues(); 88 this.synchronizeComponentValues();
92 this.update(); 89 this.update();
93 }, 90 },
94 91
95 //------------------------------------------------------------------------- 92 //-------------------------------------------------------------------------
96 93
97 'addrUrl': function() { 94 'addrUrl': function() {
98 var result; 95 var result;
99 96
100 result = "http://maps.google.com/maps?q=" + this.value().split(' ').join('+'); 97 result = "http://maps.google.com/maps?q=" + this.value().split(' ').join('+');
101 98
102 return result; 99 return result;
103 }, 100 },
104 101
105 //------------------------------------------------------------------------- 102 //-------------------------------------------------------------------------
106 103
107 'updateViewMode': function() { 104 'updateViewMode': function() {
108 var scarmbledStatus; 105 var scarmbledStatus;
109 106
110 scrambledStatus = this.scrambledStatus() || 'SCRAMBLED'; 107 scrambledStatus = this.scrambledStatus() || 'SCRAMBLED';
111 108
112 this.element().update(""); 109 this.element().update("");
113 if (this.recordField().hidden() == false) { 110 if (this.recordField().hidden() == false) {
114 switch(this.recordField().type()) { 111 switch(this.recordField().type()) {
115 case 'TXT': 112 case 'TXT':
116 case 'PWD': 113 case 'PWD':
117 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'span', html:this.value()}); 114 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'span', html:this.value()});
118 break; 115 break;
119 case 'URL': 116 case 'URL':
120 varurlLocation; 117 varurlLocation;
121 118
122 urlLocation = Clipperz.Base.sanitizeString(this.value()); 119 urlLocation = Clipperz.Base.sanitizeString(this.value());
123 if (! (/^(https?|ftp|svn):\/\//.test(urlLocation))) { 120 if (! (/^(https?|ftp|svn):\/\//.test(urlLocation))) {
124 urlLocation = 'http://' + urlLocation; 121 urlLocation = 'http://' + urlLocation;
125 } 122 }
126 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'a', href:urlLocation, html:this.value(), target:'_blank'}); 123 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'a', href:urlLocation, html:this.value(), target:'_blank'});
127 break; 124 break;
128 case 'DATE': 125 case 'DATE':
129 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'span', html:this.value()}); 126 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'span', html:this.value()});
130 break; 127 break;
131 case 'ADDR': 128 case 'ADDR':
132 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'a', href:this.addrUrl(), html:this.value(), target:'_blank'}); 129 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'a', href:this.addrUrl(), html:this.value(), target:'_blank'});
133 break; 130 break;
134 } 131 }
135 } else { 132 } else {
136 var tableElement; 133 var tableElement;
137 var tdElement; 134 var tdElement;
138 var inputElement; 135 var inputElement;
139 var passwordElementConfiguration; 136 var passwordElementConfiguration;
140 137
141 if (scrambledStatus == 'SCRAMBLED') { 138 if (scrambledStatus == 'SCRAMBLED') {
142 varscrambledInputElement; 139 varscrambledInputElement;
143 140
144 if ((Clipperz_IEisBroken === true) && (Clipperz.PM.Proxy.defaultProxy.isReadOnly())) { 141 if ((Clipperz_IEisBroken === true) && (Clipperz.PM.Proxy.defaultProxy.isReadOnly())) {
145 scrambledInputElement = {tag:'input', type:'password', value:"this.value()"}; 142 scrambledInputElement = {tag:'input', type:'password', value:"this.value()"};
146 } else { 143 } else {
147 scrambledInputElement = {tag:'input', type:'text', cls:'scrambledField', title:Clipperz.PM.Strings['recordDetailPasswordFieldTooltipLabel'], value:"this.value()"}; 144 scrambledInputElement = {tag:'input', type:'text', cls:'scrambledField', title:Clipperz.PM.Strings['recordDetailPasswordFieldTooltipLabel'], value:"this.value()"};
148 } 145 }
149 146
150 passwordElementConfiguration = 147 passwordElementConfiguration =
151 {tag:'table', border:'0', cellspacing:'2', cellpadding:'0', children:[ 148 {tag:'table', border:'0', cellspacing:'2', cellpadding:'0', children:[
152 {tag:'tbody', children:[ 149 {tag:'tbody', children:[
diff --git a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/HeaderComponent.js b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/HeaderComponent.js
index 7aaca3e..46f456b 100644
--- a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/HeaderComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/HeaderComponent.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; } 29if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.RecordDetail.HeaderComponent = function(anElement, args) { 33Clipperz.PM.Components.RecordDetail.HeaderComponent = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 Clipperz.PM.Components.RecordDetail.HeaderComponent.superclass.constructor.call(this, anElement, args); 36 Clipperz.PM.Components.RecordDetail.HeaderComponent.superclass.constructor.call(this, anElement, args);
40 this.mainComponent().addEditComponent(this); 37 this.mainComponent().addEditComponent(this);
41 38
42 this._saveButton = null; 39 this._saveButton = null;
43 40
44 this.render(); 41 this.render();
45 42
46 return this; 43 return this;
47} 44}
48 45
49//============================================================================= 46//=============================================================================
50 47
51YAHOO.extendX(Clipperz.PM.Components.RecordDetail.HeaderComponent, Clipperz.PM.Components.RecordDetail.AbstractComponent, { 48YAHOO.extendX(Clipperz.PM.Components.RecordDetail.HeaderComponent, Clipperz.PM.Components.RecordDetail.AbstractComponent, {
52 49
53 'toString': function() { 50 'toString': function() {
54 return "Clipperz.PM.Components.RecordDetail.HeaderComponent component"; 51 return "Clipperz.PM.Components.RecordDetail.HeaderComponent component";
55 }, 52 },
56 53
57 //------------------------------------------------------------------------- 54 //-------------------------------------------------------------------------
58 55
59 'render': function() { 56 'render': function() {
60 var editButton; 57 var editButton;
61 58
62//MochiKit.Logging.logDebug(">>> RecordDetail.HeaderComponent.appendTo"); 59//MochiKit.Logging.logDebug(">>> RecordDetail.HeaderComponent.appendTo");
63 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', cls:'recordDetailButtonsBox', children:[ 60 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', cls:'recordDetailButtonsBox', children:[
64 {tag:'div', id:this.getId('editButtonBox'), children:[ 61 {tag:'div', id:this.getId('editButtonBox'), children:[
65 {tag:'table', cls:'recordDetailButtonsTABLE', border:'0', cellpadding:'0', cellspacing:'0', children:[ 62 {tag:'table', cls:'recordDetailButtonsTABLE', border:'0', cellpadding:'0', cellspacing:'0', children:[
66 {tag:'tbody', children:[ 63 {tag:'tbody', children:[
67 {tag:'tr', children:[ 64 {tag:'tr', children:[
68 {tag:'td', align:'center', children:[ 65 {tag:'td', align:'center', children:[
69 {tag:'div', id:this.getId('editButton')} 66 {tag:'div', id:this.getId('editButton')}
70 ]} 67 ]}
71 ]} 68 ]}
72 ]} 69 ]}
73 ]} 70 ]}
74 ]}, 71 ]},
75 {tag:'div', id:this.getId('saveCancelButtonBox'), children:[ 72 {tag:'div', id:this.getId('saveCancelButtonBox'), children:[
76 {tag:'table', cls:'recordDetailButtonsTABLE', border:'0', cellpadding:'0', cellspacing:'0', children:[ 73 {tag:'table', cls:'recordDetailButtonsTABLE', border:'0', cellpadding:'0', cellspacing:'0', children:[
77 {tag:'tbody', children:[ 74 {tag:'tbody', children:[
78 {tag:'tr', children:[ 75 {tag:'tr', children:[
79 {tag:'td', width:'49%', align:'right', children:[ 76 {tag:'td', width:'49%', align:'right', children:[
80 {tag:'div', id:this.getId('saveButton')} 77 {tag:'div', id:this.getId('saveButton')}
81 ]}, 78 ]},
82 {tag:'td', html:'&nbsp'}, 79 {tag:'td', html:'&nbsp'},
83 {tag:'td', width:'49%', align:'left', children:[ 80 {tag:'td', width:'49%', align:'left', children:[
84 {tag:'div', id:this.getId('cancelButton')} 81 {tag:'div', id:this.getId('cancelButton')}
85 ]} 82 ]}
86 ]} 83 ]}
87 ]} 84 ]}
88 ]} 85 ]}
89 ]} 86 ]}
90 ]}); 87 ]});
91 88
92 this.getElement('editButtonBox').setVisibilityMode(YAHOO.ext.Element.DISPLAY); 89 this.getElement('editButtonBox').setVisibilityMode(YAHOO.ext.Element.DISPLAY);
93 this.getElement('saveCancelButtonBox').setVisibilityMode(YAHOO.ext.Element.DISPLAY); 90 this.getElement('saveCancelButtonBox').setVisibilityMode(YAHOO.ext.Element.DISPLAY);
94 91
95 editButton = new YAHOO.ext.Button(this.getDom('editButton'), {text:Clipperz.PM.Strings['recordDetailEditButtonLabel'], handler:this.editButtonHandler, scope:this}); 92 editButton = new YAHOO.ext.Button(this.getDom('editButton'), {text:Clipperz.PM.Strings['recordDetailEditButtonLabel'], handler:this.editButtonHandler, scope:this});
96 this.setSaveButton(new YAHOO.ext.Button(this.getDom('saveButton'), {text:Clipperz.PM.Strings['recordDetailSaveButtonLabel'], handler:this.saveButtonHandler, scope:this})); 93 this.setSaveButton(new YAHOO.ext.Button(this.getDom('saveButton'), {text:Clipperz.PM.Strings['recordDetailSaveButtonLabel'], handler:this.saveButtonHandler, scope:this}));
97 new YAHOO.ext.Button(this.getDom('cancelButton'), {text:Clipperz.PM.Strings['recordDetailCancelButtonLabel'], handler:this.cancelButtonHandler, scope:this}); 94 new YAHOO.ext.Button(this.getDom('cancelButton'), {text:Clipperz.PM.Strings['recordDetailCancelButtonLabel'], handler:this.cancelButtonHandler, scope:this});
98 95
99 if (Clipperz.PM.Proxy.defaultProxy.isReadOnly()) { 96 if (Clipperz.PM.Proxy.defaultProxy.isReadOnly()) {
100 editButton.disable(); 97 editButton.disable();
101 } 98 }
102 99
103 this.update(); 100 this.update();
104//MochiKit.Logging.logDebug("<<< RecordDetail.HeaderComponent.appendTo"); 101//MochiKit.Logging.logDebug("<<< RecordDetail.HeaderComponent.appendTo");
105 }, 102 },
106 103
107 //------------------------------------------------------------------------- 104 //-------------------------------------------------------------------------
108 105
109 'updateViewMode': function() { 106 'updateViewMode': function() {
110//MochiKit.Logging.logDebug(">>> HeaderComponent.updateViewMode"); 107//MochiKit.Logging.logDebug(">>> HeaderComponent.updateViewMode");
111 this.getElement('editButtonBox').show(); 108 this.getElement('editButtonBox').show();
112 this.getElement('saveCancelButtonBox').hide(); 109 this.getElement('saveCancelButtonBox').hide();
113//MochiKit.Logging.logDebug("<<< HeaderComponent.updateViewMode"); 110//MochiKit.Logging.logDebug("<<< HeaderComponent.updateViewMode");
114 }, 111 },
115 112
116 //------------------------------------------------------------------------- 113 //-------------------------------------------------------------------------
117 114
118 'updateEditMode': function() { 115 'updateEditMode': function() {
119 this.getElement('editButtonBox').hide(); 116 this.getElement('editButtonBox').hide();
120 this.getElement('saveCancelButtonBox').show(); 117 this.getElement('saveCancelButtonBox').show();
121 if (this.mainComponent().enableSaveButton() == true) { 118 if (this.mainComponent().enableSaveButton() == true) {
122//MochiKit.Logging.logDebug("--- HeaderComponent.updateViewMode - ENABLE"); 119//MochiKit.Logging.logDebug("--- HeaderComponent.updateViewMode - ENABLE");
123 this.saveButton().enable(); 120 this.saveButton().enable();
124 } else { 121 } else {
125 this.saveButton().disable(); 122 this.saveButton().disable();
126 } 123 }
127 }, 124 },
128 125
129 //------------------------------------------------------------------------- 126 //-------------------------------------------------------------------------
130 127
131 'saveButton': function() { 128 'saveButton': function() {
132 return this._saveButton; 129 return this._saveButton;
133 }, 130 },
134 131
135 'setSaveButton': function(aValue) { 132 'setSaveButton': function(aValue) {
136 this._saveButton = aValue; 133 this._saveButton = aValue;
137 }, 134 },
138 135
139 //------------------------------------------------------------------------- 136 //-------------------------------------------------------------------------
140 137
141 'editButtonHandler': function(anEvent) { 138 'editButtonHandler': function(anEvent) {
142 this.mainComponent().setEditMode('EDIT'); 139 this.mainComponent().setEditMode('EDIT');
143 }, 140 },
144 141
145 //------------------------------------------------------------------------- 142 //-------------------------------------------------------------------------
146 143
147 'saveButtonHandler': function(anEvent) { 144 'saveButtonHandler': function(anEvent) {
148//MochiKit.Logging.logDebug(">>> RecordDetail.HeaderComponent.saveButtonHandler"); 145//MochiKit.Logging.logDebug(">>> RecordDetail.HeaderComponent.saveButtonHandler");
149 this.mainComponent().setEditMode('VIEW', this.getElement('saveButton')); 146 this.mainComponent().setEditMode('VIEW', this.getElement('saveButton'));
150//MochiKit.Logging.logDebug("<<< RecordDetail.HeaderComponent.saveButtonHandler"); 147//MochiKit.Logging.logDebug("<<< RecordDetail.HeaderComponent.saveButtonHandler");
151 }, 148 },
152 149
diff --git a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/MainComponent.js b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/MainComponent.js
index 53bf9c5..d6a03d7 100644
--- a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/MainComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/MainComponent.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; } 29if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.RecordDetail.MainComponent = function(anElement, args) { 33Clipperz.PM.Components.RecordDetail.MainComponent = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 Clipperz.PM.Components.RecordDetail.MainComponent.superclass.constructor.call(this, anElement, args); 36 Clipperz.PM.Components.RecordDetail.MainComponent.superclass.constructor.call(this, anElement, args);
40 37
41 //this._element = args.element; 38 //this._element = args.element;
42 this._user = args.user; 39 this._user = args.user;
43 this._editMode = args.editMode || 'VIEW'; //[ 'VIEW' | 'EDIT' ] 40 this._editMode = args.editMode || 'VIEW'; //[ 'VIEW' | 'EDIT' ]
44 this._mainPanel = args.mainPanel; 41 this._mainPanel = args.mainPanel;
45 42
46 this._record = null; 43 this._record = null;
47 this._editComponents = []; 44 this._editComponents = [];
48 this._addFieldButton = null; 45 this._addFieldButton = null;
49 46
50 this._enableSaveButton = true; 47 this._enableSaveButton = true;
51 this._shouldShowLoginInfo = (Clipperz.PM.Proxy.defaultProxy.isReadOnly() ? false : true); 48 this._shouldShowLoginInfo = (Clipperz.PM.Proxy.defaultProxy.isReadOnly() ? false : true);
52 49
53 //this._mainLayoutManager = null; 50 //this._mainLayoutManager = null;
54 //this._layoutRegion = null; 51 //this._layoutRegion = null;
55 52
56 Clipperz.NotificationCenter.register(null, 'loadingRecordData', this, 'render'); 53 Clipperz.NotificationCenter.register(null, 'loadingRecordData', this, 'render');
57 Clipperz.NotificationCenter.register(null, 'decryptingRecordData', this, 'render'); 54 Clipperz.NotificationCenter.register(null, 'decryptingRecordData', this, 'render');
58 Clipperz.NotificationCenter.register(null, 'loadingRecordVersionData', this, 'render'); 55 Clipperz.NotificationCenter.register(null, 'loadingRecordVersionData', this, 'render');
59 Clipperz.NotificationCenter.register(null, 'decryptingRecordVersionData', this, 'render'); 56 Clipperz.NotificationCenter.register(null, 'decryptingRecordVersionData', this, 'render');
60 Clipperz.NotificationCenter.register(null, 'setupDone', this, 'render'); 57 Clipperz.NotificationCenter.register(null, 'setupDone', this, 'render');
61 Clipperz.NotificationCenter.register(null, 'switchLanguage', this, 'render'); 58 Clipperz.NotificationCenter.register(null, 'switchLanguage', this, 'render');
62 59
63 this.render(); 60 this.render();
64 61
65 return this; 62 return this;
66} 63}
67 64
68//============================================================================= 65//=============================================================================
69 66
70YAHOO.extendX(Clipperz.PM.Components.RecordDetail.MainComponent, Clipperz.PM.Components.BaseComponent, { 67YAHOO.extendX(Clipperz.PM.Components.RecordDetail.MainComponent, Clipperz.PM.Components.BaseComponent, {
71 68
72 'toString': function() { 69 'toString': function() {
73 return "Clipperz.PM.Components.RecordDetail.MainComponent component"; 70 return "Clipperz.PM.Components.RecordDetail.MainComponent component";
74 }, 71 },
75 72
76 //------------------------------------------------------------------------- 73 //-------------------------------------------------------------------------
77 74
78 'editMode': function() { 75 'editMode': function() {
79 return this._editMode; 76 return this._editMode;
80 }, 77 },
81 78
82 'setEditMode': function(aValue, aButtonElement, shouldSkipComponentSynchronization) { 79 'setEditMode': function(aValue, aButtonElement, shouldSkipComponentSynchronization) {
83//MochiKit.Logging.logDebug(">>> MainComponent.setEditingMode"); 80//MochiKit.Logging.logDebug(">>> MainComponent.setEditingMode");
84 this.scrollToTop(); 81 this.scrollToTop();
85 82
86 if (aValue == 'VIEW') { 83 if (aValue == 'VIEW') {
87 if (shouldSkipComponentSynchronization == true) { 84 if (shouldSkipComponentSynchronization == true) {
88 this.exitModalView(); 85 this.exitModalView();
89 } else { 86 } else {
90 this.synchronizeComponentValues(); 87 this.synchronizeComponentValues();
91 if (this.record().hasPendingChanges()) { 88 if (this.record().hasPendingChanges()) {
92 if (this.record().isBrandNew()) { 89 if (this.record().isBrandNew()) {
93 this.record().removeEmptyFields(); 90 this.record().removeEmptyFields();
94 } 91 }
95 this.saveCurrentRecordChanges(aButtonElement); 92 this.saveCurrentRecordChanges(aButtonElement);
96 } else { 93 } else {
97 if (this.record().isBrandNew()) { 94 if (this.record().isBrandNew()) {
98 this.record().user().removeRecord(this.record()); 95 this.record().user().removeRecord(this.record());
99 } 96 }
100 this.exitModalView(); 97 this.exitModalView();
101 } 98 }
102 } 99 }
103 } else if (aValue == 'EDIT') { 100 } else if (aValue == 'EDIT') {
104 this.enterModalView(); 101 this.enterModalView();
105 } else { 102 } else {
106 //???? 103 //????
107 } 104 }
108 105
109 this._editMode = aValue; 106 this._editMode = aValue;
110 this.render(); 107 this.render();
111 }, 108 },
112 109
113 //------------------------------------------------------------------------- 110 //-------------------------------------------------------------------------
114 111
115 'user': function() { 112 'user': function() {
116 return this._user; 113 return this._user;
117 }, 114 },
118 115
119 //------------------------------------------------------------------------- 116 //-------------------------------------------------------------------------
120 117
121 'mainPanel': function() { 118 'mainPanel': function() {
122 return this._mainPanel; 119 return this._mainPanel;
123 }, 120 },
124 121
125 //------------------------------------------------------------------------- 122 //-------------------------------------------------------------------------
126 123
127 'render': function() { 124 'render': function() {
128//MochiKit.Logging.logDebug(">>> RecordDetail.MainComponent.render"); 125//MochiKit.Logging.logDebug(">>> RecordDetail.MainComponent.render");
129 this.setEnableSaveButton(true); 126 this.setEnableSaveButton(true);
130 this.element().update(""); 127 this.element().update("");
131 128
132 if (this.record() == null) { 129 if (this.record() == null) {
133 if (MochiKit.Base.keys(this.user().records()).length == 0) { 130 if (MochiKit.Base.keys(this.user().records()).length == 0) {
134 this.renderWithNoRecordAtAll(); 131 this.renderWithNoRecordAtAll();
135 } else { 132 } else {
136 this.renderWithNoSelectedRecord(); 133 this.renderWithNoSelectedRecord();
137 } 134 }
138 } else { 135 } else {
139 this.renderWithSelectedRecord(); 136 this.renderWithSelectedRecord();
140 } 137 }
141//MochiKit.Logging.logDebug("<<< RecordDetail.MainComponent.render"); 138//MochiKit.Logging.logDebug("<<< RecordDetail.MainComponent.render");
142 }, 139 },
143 140
144 //------------------------------------------------------------------------- 141 //-------------------------------------------------------------------------
145 142
146 'renderWithNoRecordAtAll': function() { 143 'renderWithNoRecordAtAll': function() {
147//MochiKit.Logging.logDebug(">>> RecordDetail.MainComponent.renderWithNoRecordAtAll"); 144//MochiKit.Logging.logDebug(">>> RecordDetail.MainComponent.renderWithNoRecordAtAll");
148 Clipperz.YUI.DomHelper.append(this.element().dom, 145 Clipperz.YUI.DomHelper.append(this.element().dom,
149 {tag:'form', cls:'noRecordAtAllFORM', children:[ 146 {tag:'form', cls:'noRecordAtAllFORM', children:[
150 {tag:'div', cls:'recordTitleBlock', children:[ 147 {tag:'div', cls:'recordTitleBlock', children:[
151 {tag:'h2', id:'recordTitle', htmlString:Clipperz.PM.Strings['recordDetailNoRecordAtAllTitle']} 148 {tag:'h2', id:'recordTitle', htmlString:Clipperz.PM.Strings['recordDetailNoRecordAtAllTitle']}
152 ]}, 149 ]},
diff --git a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/NotesComponent.js b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/NotesComponent.js
index 6f454fc..2066543 100644
--- a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/NotesComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/NotesComponent.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; } 29if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36 33
37 34
38Clipperz.PM.Components.RecordDetail.NotesComponent = function(anElement, args) { 35Clipperz.PM.Components.RecordDetail.NotesComponent = function(anElement, args) {
39//MochiKit.Logging.logDebug(">>> new NotesComponent"); 36//MochiKit.Logging.logDebug(">>> new NotesComponent");
40 args = args || {}; 37 args = args || {};
41 38
42 Clipperz.PM.Components.RecordDetail.NotesComponent.superclass.constructor.call(this, anElement, args); 39 Clipperz.PM.Components.RecordDetail.NotesComponent.superclass.constructor.call(this, anElement, args);
43 40
44 this.mainComponent().addEditComponent(this); 41 this.mainComponent().addEditComponent(this);
45 42
46 this._staticOffset = null; 43 this._staticOffset = null;
47 this._componentHeight = 50; 44 this._componentHeight = 50;
48 this._mouseMoveIdentifier = null; 45 this._mouseMoveIdentifier = null;
49 this._mouseUpIdentifier = null; 46 this._mouseUpIdentifier = null;
50 47
51 this.element().setVisibilityMode(YAHOO.ext.Element.DISPLAY); 48 this.element().setVisibilityMode(YAHOO.ext.Element.DISPLAY);
52 49
53 this.render(); 50 this.render();
54//MochiKit.Logging.logDebug("<<< new NotesComponent"); 51//MochiKit.Logging.logDebug("<<< new NotesComponent");
55 52
56 return this; 53 return this;
57} 54}
58 55
59//============================================================================= 56//=============================================================================
60 57
61YAHOO.extendX(Clipperz.PM.Components.RecordDetail.NotesComponent, Clipperz.PM.Components.RecordDetail.AbstractComponent, { 58YAHOO.extendX(Clipperz.PM.Components.RecordDetail.NotesComponent, Clipperz.PM.Components.RecordDetail.AbstractComponent, {
62 59
63 'toString': function() { 60 'toString': function() {
64 return "Clipperz.PM.Components.RecordDetail.NotesComponent component"; 61 return "Clipperz.PM.Components.RecordDetail.NotesComponent component";
65 }, 62 },
66 63
67 //------------------------------------------------------------------------- 64 //-------------------------------------------------------------------------
68 65
69 'value': function() { 66 'value': function() {
70 return this.record().notes(); 67 return this.record().notes();
71 }, 68 },
72 69
73 'setValue': function(aValue) { 70 'setValue': function(aValue) {
74 this.record().setNotes(aValue); 71 this.record().setNotes(aValue);
75 }, 72 },
76 73
77 //------------------------------------------------------------------------- 74 //-------------------------------------------------------------------------
78 75
79 'render': function() { 76 'render': function() {
80//MochiKit.Logging.logDebug(">>> NotesComponent.render"); 77//MochiKit.Logging.logDebug(">>> NotesComponent.render");
81/* 78/*
82 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td', colspan:'5', children:[ 79 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td', colspan:'5', children:[
83 {tag:'span', cls:'noteFieldLabel', htmlString:Clipperz.PM.Strings['recordDetailNotesLabel']}, 80 {tag:'span', cls:'noteFieldLabel', htmlString:Clipperz.PM.Strings['recordDetailNotesLabel']},
84 {tag:'div', cls:'noteFieldContent', id:this.getId('notes')} 81 {tag:'div', cls:'noteFieldContent', id:this.getId('notes')}
85 ]}); 82 ]});
86 */ 83 */
87 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'span', cls:'noteFieldLabel', htmlString:Clipperz.PM.Strings['recordDetailNotesLabel']}); 84 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'span', cls:'noteFieldLabel', htmlString:Clipperz.PM.Strings['recordDetailNotesLabel']});
88 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', cls:'noteFieldContent', id:this.getId('notes'), children:[ 85 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', cls:'noteFieldContent', id:this.getId('notes'), children:[
89 {tag:'div', id:this.getId('resizableDiv'), cls:'resizable-textarea', children:[ 86 {tag:'div', id:this.getId('resizableDiv'), cls:'resizable-textarea', children:[
90 {tag:'div', id:this.getId('contentView'), cls:'viewMode', html:""}, 87 {tag:'div', id:this.getId('contentView'), cls:'viewMode', html:""},
91 {tag:'div', id:this.getId('contentEdit'), children:[ 88 {tag:'div', id:this.getId('contentEdit'), children:[
92 {tag:'span', children:[ 89 {tag:'span', children:[
93 {tag:'textarea', id:this.getId('textarea'), html:""} 90 {tag:'textarea', id:this.getId('textarea'), html:""}
94 ]} 91 ]}
95 ]}, 92 ]},
96 {tag:'div', id:this.getId('grippie'), cls:'grippie'} 93 {tag:'div', id:this.getId('grippie'), cls:'grippie'}
97 ]} 94 ]}
98 ]}); 95 ]});
99 96
100 this.getElement('contentView').setVisibilityMode(YAHOO.ext.Element.DISPLAY); 97 this.getElement('contentView').setVisibilityMode(YAHOO.ext.Element.DISPLAY);
101 this.getElement('contentEdit').setVisibilityMode(YAHOO.ext.Element.DISPLAY); 98 this.getElement('contentEdit').setVisibilityMode(YAHOO.ext.Element.DISPLAY);
102 99
103 MochiKit.Signal.connect(this.getId('grippie'), 'onmousedown', this, 'startResize'); 100 MochiKit.Signal.connect(this.getId('grippie'), 'onmousedown', this, 'startResize');
104 101
105 this.update(); 102 this.update();
106//MochiKit.Logging.logDebug("<<< NotesComponent.render"); 103//MochiKit.Logging.logDebug("<<< NotesComponent.render");
107 }, 104 },
108 105
109 //------------------------------------------------------------------------- 106 //-------------------------------------------------------------------------
110 107
111 'updateViewMode': function() { 108 'updateViewMode': function() {
112//MochiKit.Logging.logDebug(">>> NotesComponent.updateViewMode"); 109//MochiKit.Logging.logDebug(">>> NotesComponent.updateViewMode");
113 // this.getElement('notes').update(this.value().replace(/\n/g, '<br>')); 110 // this.getElement('notes').update(this.value().replace(/\n/g, '<br>'));
114 111
115 this.getElement('contentView').update(Clipperz.Base.sanitizeString(this.value()).replace(/\n/g, '<br>')); 112 this.getElement('contentView').update(Clipperz.Base.sanitizeString(this.value()).replace(/\n/g, '<br>'));
116 113
117 if (this.isNoteEmpty()) { 114 if (this.isNoteEmpty()) {
118 this.element().hide(); 115 this.element().hide();
119 } else { 116 } else {
120 this.getElement('contentView').show(); 117 this.getElement('contentView').show();
121 this.getElement('contentView').setHeight(this.componentHeight()); 118 this.getElement('contentView').setHeight(this.componentHeight());
122 } 119 }
123 this.getElement('contentEdit').hide(); 120 this.getElement('contentEdit').hide();
124 121
125//MochiKit.Logging.logDebug("<<< NotesComponent.updateViewMode"); 122//MochiKit.Logging.logDebug("<<< NotesComponent.updateViewMode");
126 }, 123 },
127 124
128 //------------------------------------------------------------------------- 125 //-------------------------------------------------------------------------
129 126
130 'updateEditMode': function() { 127 'updateEditMode': function() {
131//MochiKit.Logging.logDebug(">>> NotesComponent.updateEditMode"); 128//MochiKit.Logging.logDebug(">>> NotesComponent.updateEditMode");
132 this.getDom('textarea').value = this.value().replace(/\n/g, Clipperz_normalizedNewLine); 129 this.getDom('textarea').value = this.value().replace(/\n/g, Clipperz_normalizedNewLine);
133 130
134 this.getElement('contentView').hide(); 131 this.getElement('contentView').hide();
135 this.getElement('contentEdit').show(); 132 this.getElement('contentEdit').show();
136 133
137 this.getElement('textarea').setHeight(this.componentHeight()); 134 this.getElement('textarea').setHeight(this.componentHeight());
138//MochiKit.Logging.logDebug("<<< NotesComponent.updateEditMode"); 135//MochiKit.Logging.logDebug("<<< NotesComponent.updateEditMode");
139 }, 136 },
140 137
141 //------------------------------------------------------------------------- 138 //-------------------------------------------------------------------------
142 139
143 'synchronizeComponentValues': function() { 140 'synchronizeComponentValues': function() {
144//MochiKit.Logging.logDebug(">>> NotesComponent.synchronizeComponentValues"); 141//MochiKit.Logging.logDebug(">>> NotesComponent.synchronizeComponentValues");
145 if (this.getElement('textarea') != null) { 142 if (this.getElement('textarea') != null) {
146 this.setValue(this.getDom('textarea').value.replace(/(\x0a\x0d|\x0d\x0a)/g,'\n')); 143 this.setValue(this.getDom('textarea').value.replace(/(\x0a\x0d|\x0d\x0a)/g,'\n'));
147 } 144 }
148//MochiKit.Logging.logDebug("<<< NotesComponent.synchronizeComponentValues"); 145//MochiKit.Logging.logDebug("<<< NotesComponent.synchronizeComponentValues");
149 }, 146 },
150 147
151 //------------------------------------------------------------------------- 148 //-------------------------------------------------------------------------
152 149
diff --git a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/TitleComponent.js b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/TitleComponent.js
index 52e718c..29fe972 100644
--- a/frontend/beta/js/Clipperz/PM/Components/RecordDetail/TitleComponent.js
+++ b/frontend/beta/js/Clipperz/PM/Components/RecordDetail/TitleComponent.js
@@ -1,137 +1,134 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; } 29if (typeof(Clipperz.PM.Components.RecordDetail) == 'undefined') { Clipperz.PM.Components.RecordDetail = {}; }
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Components.RecordDetail.TitleComponent = function(anElement, args) { 33Clipperz.PM.Components.RecordDetail.TitleComponent = function(anElement, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 Clipperz.PM.Components.RecordDetail.TitleComponent.superclass.constructor.call(this, anElement, args); 36 Clipperz.PM.Components.RecordDetail.TitleComponent.superclass.constructor.call(this, anElement, args);
40 37
41 //this._inputElement = null; 38 //this._inputElement = null;
42 39
43 this.mainComponent().addEditComponent(this); 40 this.mainComponent().addEditComponent(this);
44 41
45 this.render(); 42 this.render();
46 43
47 return this; 44 return this;
48} 45}
49 46
50//============================================================================= 47//=============================================================================
51 48
52YAHOO.extendX(Clipperz.PM.Components.RecordDetail.TitleComponent, Clipperz.PM.Components.RecordDetail.AbstractComponent, { 49YAHOO.extendX(Clipperz.PM.Components.RecordDetail.TitleComponent, Clipperz.PM.Components.RecordDetail.AbstractComponent, {
53 50
54 'toString': function() { 51 'toString': function() {
55 return "Clipperz.PM.Components.RecordDetail.TitleComponent component"; 52 return "Clipperz.PM.Components.RecordDetail.TitleComponent component";
56 }, 53 },
57 54
58 //------------------------------------------------------------------------- 55 //-------------------------------------------------------------------------
59 56
60 'value': function() { 57 'value': function() {
61 return this.record().label(); 58 return this.record().label();
62 }, 59 },
63 60
64 'setValue': function(aValue) { 61 'setValue': function(aValue) {
65 this.record().setLabel(aValue); 62 this.record().setLabel(aValue);
66 }, 63 },
67 64
68 //------------------------------------------------------------------------- 65 //-------------------------------------------------------------------------
69/* 66/*
70 'inputElement': function() { 67 'inputElement': function() {
71 return this._inputElement; 68 return this._inputElement;
72 }, 69 },
73 70
74 'setInputElement': function(aValue) { 71 'setInputElement': function(aValue) {
75 this._inputElement = aValue; 72 this._inputElement = aValue;
76 }, 73 },
77*/ 74*/
78 //------------------------------------------------------------------------- 75 //-------------------------------------------------------------------------
79 76
80 'render': function() { 77 'render': function() {
81 // Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td', html:'&#160'}); 78 // Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td', html:'&#160'});
82 // Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td', colspan:"3", html:'&#160', children:[ 79 // Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td', colspan:"3", html:'&#160', children:[
83 // {tag:'div', /*style:'border: 1px solid green;',*/ id:this.getId('title')} 80 // {tag:'div', /*style:'border: 1px solid green;',*/ id:this.getId('title')}
84 // ]}); 81 // ]});
85 // Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td', html:'&#160'}); 82 // Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'td', html:'&#160'});
86 // 83 //
87 // this.setInputElement(new Clipperz.PM.Components.TextFormField(this.getElement('title'), {editMode:this.editMode(), value:this.value()})); 84 // this.setInputElement(new Clipperz.PM.Components.TextFormField(this.getElement('title'), {editMode:this.editMode(), value:this.value()}));
88 85
89 this.update(); 86 this.update();
90 }, 87 },
91 88
92 //------------------------------------------------------------------------- 89 //-------------------------------------------------------------------------
93/* 90/*
94 'update': function() { 91 'update': function() {
95 this.inputElement().update({value:this.value(), editMode:this.editMode()}); 92 this.inputElement().update({value:this.value(), editMode:this.editMode()});
96 }, 93 },
97 */ 94 */
98 //------------------------------------------------------------------------- 95 //-------------------------------------------------------------------------
99 96
100 'updateViewMode': function() { 97 'updateViewMode': function() {
101 this.element().update(""); 98 this.element().update("");
102 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'h2', html:this.value()}); 99 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'h2', html:this.value()});
103 }, 100 },
104 101
105 //------------------------------------------------------------------------- 102 //-------------------------------------------------------------------------
106 103
107 'updateEditMode': function() { 104 'updateEditMode': function() {
108//MochiKit.Logging.logDebug(">>> TitleComponent.updateEditMode"); 105//MochiKit.Logging.logDebug(">>> TitleComponent.updateEditMode");
109 // this.getElement('title').update(""); 106 // this.getElement('title').update("");
110 // Clipperz.YUI.DomHelper.append(this.getDom('title'), {tag:'div', id:this.getId('title_input')}); 107 // Clipperz.YUI.DomHelper.append(this.getDom('title'), {tag:'div', id:this.getId('title_input')});
111 // this.setInputElement(Clipperz.YUI.DomHelper.append(this.getDom('title_input'), {tag:'input', type:'text', value:this.value()}, true)); 108 // this.setInputElement(Clipperz.YUI.DomHelper.append(this.getDom('title_input'), {tag:'input', type:'text', value:this.value()}, true));
112 109
113 this.element().update(""); 110 this.element().update("");
114 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'input', id:this.getId('titleField'), type:'text', value:"this.value()"}); 111 Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'input', id:this.getId('titleField'), type:'text', value:"this.value()"});
115 this.getElement('titleField').dom.value = this.value(); 112 this.getElement('titleField').dom.value = this.value();
116 113
117//MochiKit.Logging.logDebug("<<< TitleComponent.updateEditMode"); 114//MochiKit.Logging.logDebug("<<< TitleComponent.updateEditMode");
118 }, 115 },
119 116
120 //------------------------------------------------------------------------- 117 //-------------------------------------------------------------------------
121 118
122 'synchronizeComponentValues': function() { 119 'synchronizeComponentValues': function() {
123 var inputElement; 120 var inputElement;
124 121
125//MochiKit.Logging.logDebug(">>> TitleComponent.synchronizeComponentValues"); 122//MochiKit.Logging.logDebug(">>> TitleComponent.synchronizeComponentValues");
126 inputElement = this.element().getChildrenByTagName('input')[0]; 123 inputElement = this.element().getChildrenByTagName('input')[0];
127 124
128 if (inputElement != null) { 125 if (inputElement != null) {
129 this.setValue(inputElement.dom.value); 126 this.setValue(inputElement.dom.value);
130 } 127 }
131//MochiKit.Logging.logDebug("<<< TitleComponent.synchronizeComponentValues"); 128//MochiKit.Logging.logDebug("<<< TitleComponent.synchronizeComponentValues");
132 }, 129 },
133 130
134 //------------------------------------------------------------------------- 131 //-------------------------------------------------------------------------
135 __syntaxFix__: "syntax fix" 132 __syntaxFix__: "syntax fix"
136}); 133});
137 134
diff --git a/frontend/beta/js/Clipperz/PM/Components/TabPanel/TabPanelController.js b/frontend/beta/js/Clipperz/PM/Components/TabPanel/TabPanelController.js
index c872462..b300ba6 100644
--- a/frontend/beta/js/Clipperz/PM/Components/TabPanel/TabPanelController.js
+++ b/frontend/beta/js/Clipperz/PM/Components/TabPanel/TabPanelController.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32if (typeof(Clipperz.PM.Components.TabPanel) == 'undefined') { Clipperz.PM.Components.TabPanel = {}; } 29if (typeof(Clipperz.PM.Components.TabPanel) == 'undefined') { Clipperz.PM.Components.TabPanel = {}; }
33 30
34Clipperz.PM.Components.TabPanel.TabPanelController = function(args) { 31Clipperz.PM.Components.TabPanel.TabPanelController = function(args) {
35 args = args || {}; 32 args = args || {};
36 33
37 Clipperz.PM.Components.TabPanel.TabPanelController.superclass.constructor.call(this); 34 Clipperz.PM.Components.TabPanel.TabPanelController.superclass.constructor.call(this);
38 35
39 this._name = args.name || 'undefined'; 36 this._name = args.name || 'undefined';
40 this._config = args.config; 37 this._config = args.config;
41 this._selectedTab = args.selectedTab || ((MochiKit.Base.keys(args.config).length > 0) ? MochiKit.Base.keys(args.config)[0] : null); 38 this._selectedTab = args.selectedTab || ((MochiKit.Base.keys(args.config).length > 0) ? MochiKit.Base.keys(args.config)[0] : null);
42 39
43 this._tabs = {}; 40 this._tabs = {};
44 this._panels = {}; 41 this._panels = {};
45 42
46 Clipperz.NotificationCenter.register(null, 'selectTab', this, 'handleSelectTabNotification'); 43 Clipperz.NotificationCenter.register(null, 'selectTab', this, 'handleSelectTabNotification');
47 return this; 44 return this;
48} 45}
49 46
50//============================================================================= 47//=============================================================================
51 48
52YAHOO.extendX(Clipperz.PM.Components.TabPanel.TabPanelController, YAHOO.ext.util.Observable, { 49YAHOO.extendX(Clipperz.PM.Components.TabPanel.TabPanelController, YAHOO.ext.util.Observable, {
53 50
54 //------------------------------------------------------------------------- 51 //-------------------------------------------------------------------------
55 52
56 'name': function() { 53 'name': function() {
57 return this._name; 54 return this._name;
58 }, 55 },
59 56
60 //------------------------------------------------------------------------- 57 //-------------------------------------------------------------------------
61 58
62 'tabs': function() { 59 'tabs': function() {
63 return this._tabs; 60 return this._tabs;
64 }, 61 },
65 62
66 //------------------------------------------------------------------------- 63 //-------------------------------------------------------------------------
67 64
68 'panels': function() { 65 'panels': function() {
69 return this._panels; 66 return this._panels;
70 }, 67 },
71 68
72 //------------------------------------------------------------------------- 69 //-------------------------------------------------------------------------
73 70
74 'config': function() { 71 'config': function() {
75 return this._config; 72 return this._config;
76 }, 73 },
77 74
78 //------------------------------------------------------------------------- 75 //-------------------------------------------------------------------------
79 76
80 'selectedTab': function() { 77 'selectedTab': function() {
81 return this._selectedTab; 78 return this._selectedTab;
82 }, 79 },
83 80
84 'setSelectedTab': function(aValue) { 81 'setSelectedTab': function(aValue) {
85 this._selectedTab = aValue; 82 this._selectedTab = aValue;
86 }, 83 },
87 84
88 //------------------------------------------------------------------------- 85 //-------------------------------------------------------------------------
89 86
90 'setUp': function() { 87 'setUp': function() {
91 vartabId; 88 vartabId;
92 89
93//MochiKit.Logging.logDebug(">>> TabPanelController.setUp - config: " + Clipperz.Base.serializeJSON(this.config())); 90//MochiKit.Logging.logDebug(">>> TabPanelController.setUp - config: " + Clipperz.Base.serializeJSON(this.config()));
94 for (tabId in this.config()) { 91 for (tabId in this.config()) {
95 vartabElement; 92 vartabElement;
96 varpanelElement; 93 varpanelElement;
97 94
98//MochiKit.Logging.logDebug("--- TabPanelController.setUp - tabId: " + tabId); 95//MochiKit.Logging.logDebug("--- TabPanelController.setUp - tabId: " + tabId);
99//MochiKit.Logging.logDebug("--- TabPanelController.setUp - panelId: " + this.config()[tabId]); 96//MochiKit.Logging.logDebug("--- TabPanelController.setUp - panelId: " + this.config()[tabId]);
100 tabElement = YAHOO.ext.Element.get(tabId); 97 tabElement = YAHOO.ext.Element.get(tabId);
101 tabElement.addClassOnOver("hover"); 98 tabElement.addClassOnOver("hover");
102 MochiKit.Signal.connect(tabId, 'onclick', this, 'selectTabHandler'); 99 MochiKit.Signal.connect(tabId, 'onclick', this, 'selectTabHandler');
103 100
104 panelElement = YAHOO.ext.Element.get(this.config()[tabId]); 101 panelElement = YAHOO.ext.Element.get(this.config()[tabId]);
105 102
106 this._tabs[tabId] = tabElement; 103 this._tabs[tabId] = tabElement;
107 this._panels[tabId] = panelElement; 104 this._panels[tabId] = panelElement;
108 105
109 if (tabId == this.selectedTab()) { 106 if (tabId == this.selectedTab()) {
110 tabElement.addClass('selectedTab'); 107 tabElement.addClass('selectedTab');
111 panelElement.addClass('selectedPanel'); 108 panelElement.addClass('selectedPanel');
112 } else { 109 } else {
113 panelElement.addClass('hiddenPanel'); 110 panelElement.addClass('hiddenPanel');
114 } 111 }
115 } 112 }
116//MochiKit.Logging.logDebug("<<< TabPanelController.setUp"); 113//MochiKit.Logging.logDebug("<<< TabPanelController.setUp");
117 }, 114 },
118 115
119 //------------------------------------------------------------------------- 116 //-------------------------------------------------------------------------
120 117
121 'selectTab': function(aTab) { 118 'selectTab': function(aTab) {
122 if (aTab != this.selectedTab()) { 119 if (aTab != this.selectedTab()) {
123 this.tabs()[this.selectedTab()].removeClass('selectedTab'); 120 this.tabs()[this.selectedTab()].removeClass('selectedTab');
124 this.panels()[this.selectedTab()].removeClass('selectedPanel').addClass('hiddenPanel'); 121 this.panels()[this.selectedTab()].removeClass('selectedPanel').addClass('hiddenPanel');
125 122
126 this.tabs()[aTab].addClass('selectedTab'); 123 this.tabs()[aTab].addClass('selectedTab');
127 this.panels()[aTab].addClass('selectedPanel').removeClass('hiddenPanel'); 124 this.panels()[aTab].addClass('selectedPanel').removeClass('hiddenPanel');
128 125
129 this.setSelectedTab(aTab); 126 this.setSelectedTab(aTab);
130 127
131 Clipperz.NotificationCenter.notify(this, 'tabSelected', aTab); 128 Clipperz.NotificationCenter.notify(this, 'tabSelected', aTab);
132 } 129 }
133 }, 130 },
134 131
135 //------------------------------------------------------------------------- 132 //-------------------------------------------------------------------------
136 133
137 'selectTabHandler': function(anEvent) { 134 'selectTabHandler': function(anEvent) {
138 this.selectTab(anEvent.src().id); 135 this.selectTab(anEvent.src().id);
139 }, 136 },
140 137
141 //------------------------------------------------------------------------- 138 //-------------------------------------------------------------------------
142 139
143 'handleSelectTabNotification': function(aNotificationEvent) { 140 'handleSelectTabNotification': function(aNotificationEvent) {
144 var parameters; 141 var parameters;
145 var splittedParamters; 142 var splittedParamters;
146 vartargetTabPanel; 143 vartargetTabPanel;
147 144
148 parameters = aNotificationEvent.parameters(); 145 parameters = aNotificationEvent.parameters();
149 splittedParamters = parameters.split('.'); 146 splittedParamters = parameters.split('.');
150 targetTabPanel = splittedParamters[0]; 147 targetTabPanel = splittedParamters[0];
151 if (targetTabPanel == this.name()) { 148 if (targetTabPanel == this.name()) {
152 this.selectTab(splittedParamters[1]) 149 this.selectTab(splittedParamters[1])
diff --git a/frontend/beta/js/Clipperz/PM/Components/TextFormField.js b/frontend/beta/js/Clipperz/PM/Components/TextFormField.js
index cb4f06a..c6f0349 100644
--- a/frontend/beta/js/Clipperz/PM/Components/TextFormField.js
+++ b/frontend/beta/js/Clipperz/PM/Components/TextFormField.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } 28if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; }
32 29
33Clipperz.PM.Components.TextFormField = function(anElement, args) { 30Clipperz.PM.Components.TextFormField = function(anElement, args) {
34 args = args || {}; 31 args = args || {};
35 32
36//MochiKit.Logging.logDebug(">>> new TextFormField"); 33//MochiKit.Logging.logDebug(">>> new TextFormField");
37 Clipperz.PM.Components.TextFormField.superclass.constructor.call(this, args); 34 Clipperz.PM.Components.TextFormField.superclass.constructor.call(this, args);
38 35
39 this._element = anElement; 36 this._element = anElement;
40 this._editMode = args.editMode || 'VIEW'; 37 this._editMode = args.editMode || 'VIEW';
41 this._value = args.value || ""; 38 this._value = args.value || "";
42 this._inputElement = null; 39 this._inputElement = null;
43 this._wrapper = null; 40 this._wrapper = null;
44 this._multiline = args.multiline || false; 41 this._multiline = args.multiline || false;
45 42
46 //this.multiline = args.multiline || true; 43 //this.multiline = args.multiline || true;
47 //this.editing = true; 44 //this.editing = true;
48 //this.completeOnBlur = true; 45 //this.completeOnBlur = true;
49 //this.autoSizeTask = new YAHOO.ext.util.DelayedTask(this.autoSize, this); 46 //this.autoSizeTask = new YAHOO.ext.util.DelayedTask(this.autoSize, this);
50 //this.textSizeEl = Clipperz.YUI.DomHelper.append(document.body, { 47 //this.textSizeEl = Clipperz.YUI.DomHelper.append(document.body, {
51 // tag: 'div', 48 // tag: 'div',
52 // cls: 'yinline-editor-sizer ' + (this.cls || '') 49 // cls: 'yinline-editor-sizer ' + (this.cls || '')
53 //}); 50 //});
54 51
55 this.render(); 52 this.render();
56//MochiKit.Logging.logDebug("<<< new TextFormField"); 53//MochiKit.Logging.logDebug("<<< new TextFormField");
57 54
58 return this; 55 return this;
59}; 56};
60 57
61YAHOO.extendX(Clipperz.PM.Components.TextFormField, Clipperz.PM.Components.BaseComponent, { 58YAHOO.extendX(Clipperz.PM.Components.TextFormField, Clipperz.PM.Components.BaseComponent, {
62 59
63 'toString': function() { 60 'toString': function() {
64 return "Clipperz.PM.Components.TextFormField"; 61 return "Clipperz.PM.Components.TextFormField";
65 }, 62 },
66 63
67 //----------------------------------------------------- 64 //-----------------------------------------------------
68 65
69 'value': function() { 66 'value': function() {
70 if (this.inputElement() != null) { 67 if (this.inputElement() != null) {
71 this._value = this.inputElement().dom.value; 68 this._value = this.inputElement().dom.value;
72 } 69 }
73 70
74 return this._value; 71 return this._value;
75 // return this.inlineEditor().getValue(); 72 // return this.inlineEditor().getValue();
76 }, 73 },
77 74
78 'setValue': function(aValue) { 75 'setValue': function(aValue) {
79 this._value = aValue; 76 this._value = aValue;
80 // this.getElement('viewComponent_Content').update(aValue); 77 // this.getElement('viewComponent_Content').update(aValue);
81 // this.inlineEditor().setValue(aValue); 78 // this.inlineEditor().setValue(aValue);
82 }, 79 },
83 80
84 //----------------------------------------------------- 81 //-----------------------------------------------------
85 82
86 'multiline': function() { 83 'multiline': function() {
87 return this._multiline; 84 return this._multiline;
88 }, 85 },
89 86
90 //----------------------------------------------------- 87 //-----------------------------------------------------
91 88
92 'editMode': function() { 89 'editMode': function() {
93 return this._editMode; 90 return this._editMode;
94 }, 91 },
95 92
96 'setEditMode': function(aValue) { 93 'setEditMode': function(aValue) {
97 this._editMode = aValue; 94 this._editMode = aValue;
98 }, 95 },
99 96
100 //----------------------------------------------------- 97 //-----------------------------------------------------
101 98
102 'inputElement': function() { 99 'inputElement': function() {
103 return this._inputElement; 100 return this._inputElement;
104 }, 101 },
105 102
106 'setInputElement': function(aValue) { 103 'setInputElement': function(aValue) {
107 this._inputElement = aValue; 104 this._inputElement = aValue;
108 }, 105 },
109 106
110 //----------------------------------------------------- 107 //-----------------------------------------------------
111 108
112 'on': function(anEventName, anHandler, aScope, shouldOverride) { 109 'on': function(anEventName, anHandler, aScope, shouldOverride) {
113//MochiKit.Logging.logDebug(">>> TextFormField.on - inputElement: " + this.inputElement()); 110//MochiKit.Logging.logDebug(">>> TextFormField.on - inputElement: " + this.inputElement());
114 return this.inputElement().on(anEventName, anHandler, aScope, shouldOverride); 111 return this.inputElement().on(anEventName, anHandler, aScope, shouldOverride);
115//MochiKit.Logging.logDebug("<<< TextFormField.on - inputElement: " + this.inputElement()); 112//MochiKit.Logging.logDebug("<<< TextFormField.on - inputElement: " + this.inputElement());
116 }, 113 },
117 114
118 //----------------------------------------------------- 115 //-----------------------------------------------------
119 116
120 'wrapper': function() { 117 'wrapper': function() {
121 return this._wrapper; 118 return this._wrapper;
122 }, 119 },
123 120
124 //----------------------------------------------------- 121 //-----------------------------------------------------
125 122
126 'render': function() { 123 'render': function() {
127 var editModeConfiguration; 124 var editModeConfiguration;
128 var viewModeConfiguration; 125 var viewModeConfiguration;
129 126
130 editModeConfiguration = {tag:'div', id:this.getId('editComponent'), children:[]}; 127 editModeConfiguration = {tag:'div', id:this.getId('editComponent'), children:[]};
131 if (this.multiline() == false) { 128 if (this.multiline() == false) {
132 editModeConfiguration.children.push({tag:'input', type:'text', id:this.getId('editComponent_input'), value:"this.value(1)"}); 129 editModeConfiguration.children.push({tag:'input', type:'text', id:this.getId('editComponent_input'), value:"this.value(1)"});
133 } else { 130 } else {
134 editModeConfiguration.children.push({tag:'textarea', id:this.getId('editComponent_input'), html:"this.value(2)"}); 131 editModeConfiguration.children.push({tag:'textarea', id:this.getId('editComponent_input'), html:"this.value(2)"});
135 } 132 }
136 133
137 viewModeConfiguration = {tag:'div', id:this.getId('viewComponent'), /*style:'border: 1px solid blue;',*/ children:[ 134 viewModeConfiguration = {tag:'div', id:this.getId('viewComponent'), /*style:'border: 1px solid blue;',*/ children:[
138 {tag:'span', id:this.getId('viewComponent_Content'), html:this.value()} 135 {tag:'span', id:this.getId('viewComponent_Content'), html:this.value()}
139 ]} 136 ]}
140 137
141//MochiKit.Logging.logDebug(">>> TextFormField.render"); 138//MochiKit.Logging.logDebug(">>> TextFormField.render");
142 this._wrapper = Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', id:this.getId('wrapper'), children:[ 139 this._wrapper = Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'div', id:this.getId('wrapper'), children:[
143 {tag:'div', id:this.getId('editModeBox'), children:[editModeConfiguration]}, 140 {tag:'div', id:this.getId('editModeBox'), children:[editModeConfiguration]},
144 {tag:'div', id:this.getId('viewModeBox'), children:[viewModeConfiguration]} 141 {tag:'div', id:this.getId('viewModeBox'), children:[viewModeConfiguration]}
145 ]}, true); 142 ]}, true);
146 143
147 this.getElement('editModeBox').setVisibilityMode(YAHOO.ext.Element.DISPLAY); 144 this.getElement('editModeBox').setVisibilityMode(YAHOO.ext.Element.DISPLAY);
148 this.getElement('viewModeBox').setVisibilityMode(YAHOO.ext.Element.DISPLAY); 145 this.getElement('viewModeBox').setVisibilityMode(YAHOO.ext.Element.DISPLAY);
149 146
150 this.getElement('editComponent_input').dom.value = this.value(); 147 this.getElement('editComponent_input').dom.value = this.value();
151 this.setInputElement(this.getElement('editComponent_input')); 148 this.setInputElement(this.getElement('editComponent_input'));
152 149
diff --git a/frontend/beta/js/Clipperz/PM/Connection.js b/frontend/beta/js/Clipperz/PM/Connection.js
index cf37ccc..85aea21 100644
--- a/frontend/beta/js/Clipperz/PM/Connection.js
+++ b/frontend/beta/js/Clipperz/PM/Connection.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31 28
32//----------------------------------------------------------------------------- 29//-----------------------------------------------------------------------------
33// 30//
34 // Abstract C O N N E C T I O N class 31 // Abstract C O N N E C T I O N class
35// 32//
36//----------------------------------------------------------------------------- 33//-----------------------------------------------------------------------------
37 34
38Clipperz.PM.Connection = function (args) { 35Clipperz.PM.Connection = function (args) {
39 args = args || {}; 36 args = args || {};
40 37
41 this._user = args.user; 38 this._user = args.user;
42 this._clipperz_pm_crypto_version = null; 39 this._clipperz_pm_crypto_version = null;
43 this._connectionId = null; 40 this._connectionId = null;
44 this._oneTimePassword = null; 41 this._oneTimePassword = null;
45 42
46 return this; 43 return this;
47} 44}
48 45
49Clipperz.PM.Connection.prototype = MochiKit.Base.update(null, { 46Clipperz.PM.Connection.prototype = MochiKit.Base.update(null, {
50 47
51 'user': function() { 48 'user': function() {
52 return this._user; 49 return this._user;
53 }, 50 },
54 51
55 'toString': function() { 52 'toString': function() {
56 return "Connection [" + this.version() + "] - user: " + this.user(); 53 return "Connection [" + this.version() + "] - user: " + this.user();
57 }, 54 },
58 55
59 //========================================================================= 56 //=========================================================================
60 57
61 'version': function() { 58 'version': function() {
62 throw Clipperz.Base.exception.AbstractMethod; 59 throw Clipperz.Base.exception.AbstractMethod;
63 }, 60 },
64 61
65 'clipperz_pm_crypto_version': function() { 62 'clipperz_pm_crypto_version': function() {
66 if (this._clipperz_pm_crypto_version == null) { 63 if (this._clipperz_pm_crypto_version == null) {
67 var connectionVersions; 64 var connectionVersions;
68 varversions; 65 varversions;
69 varversion; 66 varversion;
70 var i, c; 67 var i, c;
71 68
72 version = null; 69 version = null;
73 connectionVersions = Clipperz.PM.Crypto.communicationProtocol.versions; 70 connectionVersions = Clipperz.PM.Crypto.communicationProtocol.versions;
74 versions = MochiKit.Base.keys(connectionVersions); 71 versions = MochiKit.Base.keys(connectionVersions);
75 c = versions.length; 72 c = versions.length;
76 for (i=0; i<c; i++) { 73 for (i=0; i<c; i++) {
77 if (! (versions[i] == 'current')) { 74 if (! (versions[i] == 'current')) {
78 if (this instanceof connectionVersions[versions[i]]) { 75 if (this instanceof connectionVersions[versions[i]]) {
79 version = versions[i]; 76 version = versions[i];
80 }; 77 };
81 } 78 }
82 } 79 }
83 80
84 this._clipperz_pm_crypto_version = version; 81 this._clipperz_pm_crypto_version = version;
85 } 82 }
86 83
87 return this._clipperz_pm_crypto_version; 84 return this._clipperz_pm_crypto_version;
88 }, 85 },
89 86
90 //------------------------------------------------------------------------- 87 //-------------------------------------------------------------------------
91 88
92 'defaultErrorHandler': function(anErrorString, anException) { 89 'defaultErrorHandler': function(anErrorString, anException) {
93MochiKit.Logging.logError("### Connection.defaultErrorHandler: " + anErrorString + " (" + anException + ")"); 90MochiKit.Logging.logError("### Connection.defaultErrorHandler: " + anErrorString + " (" + anException + ")");
94 }, 91 },
95 92
96 //------------------------------------------------------------------------- 93 //-------------------------------------------------------------------------
97 94
98 'login': function(someArguments, aCallback) { 95 'login': function(someArguments, aCallback) {
99 throw Clipperz.Base.exception.AbstractMethod; 96 throw Clipperz.Base.exception.AbstractMethod;
100 }, 97 },
101 98
102 //------------------------------------------------------------------------- 99 //-------------------------------------------------------------------------
103 100
104 'message': function(someArguments, aCallback) { 101 'message': function(someArguments, aCallback) {
105 throw Clipperz.Base.exception.AbstractMethod; 102 throw Clipperz.Base.exception.AbstractMethod;
106 }, 103 },
107 104
108 //------------------------------------------------------------------------- 105 //-------------------------------------------------------------------------
109 106
110 'sharedSecret': function() { 107 'sharedSecret': function() {
111 throw Clipperz.Base.exception.AbstractMethod; 108 throw Clipperz.Base.exception.AbstractMethod;
112 }, 109 },
113 110
114 'serverSideUserCredentials': function() { 111 'serverSideUserCredentials': function() {
115 throw Clipperz.Base.exception.AbstractMethod; 112 throw Clipperz.Base.exception.AbstractMethod;
116 }, 113 },
117 114
118 //========================================================================= 115 //=========================================================================
119 116
120 'connectionId': function() { 117 'connectionId': function() {
121 return this._connectionId; 118 return this._connectionId;
122 }, 119 },
123 120
124 'setConnectionId': function(aValue) { 121 'setConnectionId': function(aValue) {
125 this._connectionId = aValue; 122 this._connectionId = aValue;
126 }, 123 },
127 124
128 //========================================================================= 125 //=========================================================================
129 126
130 'oneTimePassword': function() { 127 'oneTimePassword': function() {
131 return this._oneTimePassword; 128 return this._oneTimePassword;
132 }, 129 },
133 130
134 'setOneTimePassword': function(aValue) { 131 'setOneTimePassword': function(aValue) {
135 this._oneTimePassword = aValue; 132 this._oneTimePassword = aValue;
136 }, 133 },
137 134
138 //========================================================================= 135 //=========================================================================
139 __syntaxFix__: "syntax fix" 136 __syntaxFix__: "syntax fix"
140 137
141} 138}
142); 139);
143 140
144 141
145if (typeof(Clipperz.PM.Connection.SRP) == 'undefined') { Clipperz.PM.Connection.SRP = {}; } 142if (typeof(Clipperz.PM.Connection.SRP) == 'undefined') { Clipperz.PM.Connection.SRP = {}; }
146//----------------------------------------------------------------------------- 143//-----------------------------------------------------------------------------
147// 144//
148 // S R P [ 1 . 0 ] C O N N E C T I O N class 145 // S R P [ 1 . 0 ] C O N N E C T I O N class
149// 146//
150//----------------------------------------------------------------------------- 147//-----------------------------------------------------------------------------
151 148
152Clipperz.PM.Connection.SRP['1.0'] = function (args) { 149Clipperz.PM.Connection.SRP['1.0'] = function (args) {
diff --git a/frontend/beta/js/Clipperz/PM/Crypto.js b/frontend/beta/js/Clipperz/PM/Crypto.js
index 7636822..6e9608c 100644
--- a/frontend/beta/js/Clipperz/PM/Crypto.js
+++ b/frontend/beta/js/Clipperz/PM/Crypto.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Crypto) == 'undefined') { Clipperz.PM.Crypto = {}; } 28if (typeof(Clipperz.PM.Crypto) == 'undefined') { Clipperz.PM.Crypto = {}; }
32 29
33Clipperz.PM.Crypto.VERSION = "0.2"; 30Clipperz.PM.Crypto.VERSION = "0.2";
34Clipperz.PM.Crypto.NAME = "Clipperz.PM.Crypto"; 31Clipperz.PM.Crypto.NAME = "Clipperz.PM.Crypto";
35 32
36MochiKit.Base.update(Clipperz.PM.Crypto, { 33MochiKit.Base.update(Clipperz.PM.Crypto, {
37 34
38 '__repr__': function () { 35 '__repr__': function () {
39 return "[" + this.NAME + " " + this.VERSION + "]"; 36 return "[" + this.NAME + " " + this.VERSION + "]";
40 }, 37 },
41 38
42 //------------------------------------------------------------------------- 39 //-------------------------------------------------------------------------
43 40
44 'toString': function () { 41 'toString': function () {
45 return this.__repr__(); 42 return this.__repr__();
46 }, 43 },
47 44
48 //------------------------------------------------------------------------- 45 //-------------------------------------------------------------------------
49 46
50 'communicationProtocol': { 47 'communicationProtocol': {
51 'currentVersion': '0.2', 48 'currentVersion': '0.2',
52 'versions': { 49 'versions': {
53 '0.1': Clipperz.PM.Connection.SRP['1.0'],//Clipperz.Crypto.SRP.versions['1.0'].Connection, 50 '0.1': Clipperz.PM.Connection.SRP['1.0'],//Clipperz.Crypto.SRP.versions['1.0'].Connection,
54 '0.2': Clipperz.PM.Connection.SRP['1.1']//Clipperz.Crypto.SRP.versions['1.1'].Connection, 51 '0.2': Clipperz.PM.Connection.SRP['1.1']//Clipperz.Crypto.SRP.versions['1.1'].Connection,
55 }, 52 },
56 'fallbackVersions': { 53 'fallbackVersions': {
57 'current':'0.1', 54 'current':'0.1',
58 '0.2': '0.1', 55 '0.2': '0.1',
59 '0.1': null 56 '0.1': null
60 } 57 }
61 }, 58 },
62 59
63 //------------------------------------------------------------------------- 60 //-------------------------------------------------------------------------
64 61
65 'encryptingFunctions': { 62 'encryptingFunctions': {
66 'currentVersion': '0.3', 63 'currentVersion': '0.3',
67 'versions': { 64 'versions': {
68 65
69 //##################################################################### 66 //#####################################################################
70 67
71 '0.1': { 68 '0.1': {
72 'encrypt': function(aKey, aValue) { 69 'encrypt': function(aKey, aValue) {
73 return Clipperz.Crypto.Base.encryptUsingSecretKey(aKey, Clipperz.Base.serializeJSON(aValue)); 70 return Clipperz.Crypto.Base.encryptUsingSecretKey(aKey, Clipperz.Base.serializeJSON(aValue));
74 }, 71 },
75 72
76 'deferredEncrypt': function(aKey, aValue) { 73 'deferredEncrypt': function(aKey, aValue) {
77 var deferredResult; 74 var deferredResult;
78 75
79 deferredResult = new MochiKit.Async.Deferred(); 76 deferredResult = new MochiKit.Async.Deferred();
80 deferredResult.addCallback(Clipperz.PM.Crypto.encryptingFunctions.versions['0.1'].encrypt, aKey, aValue); 77 deferredResult.addCallback(Clipperz.PM.Crypto.encryptingFunctions.versions['0.1'].encrypt, aKey, aValue);
81 deferredResult.callback(); 78 deferredResult.callback();
82 79
83 return deferredResult; 80 return deferredResult;
84 }, 81 },
85 82
86 'decrypt': function(aKey, aValue) { 83 'decrypt': function(aKey, aValue) {
87 var result; 84 var result;
88 85
89 if (aValue != null) { 86 if (aValue != null) {
90 result = Clipperz.Base.evalJSON(Clipperz.Crypto.Base.decryptUsingSecretKey(aKey, aValue)); 87 result = Clipperz.Base.evalJSON(Clipperz.Crypto.Base.decryptUsingSecretKey(aKey, aValue));
91 } else { 88 } else {
92 result = null; 89 result = null;
93 } 90 }
94 91
95 return result; 92 return result;
96 }, 93 },
97 94
98 'deferredDecrypt': function(aKey, aValue) { 95 'deferredDecrypt': function(aKey, aValue) {
99 var deferredResult; 96 var deferredResult;
100 97
101 deferredResult = new MochiKit.Async.Deferred(); 98 deferredResult = new MochiKit.Async.Deferred();
102 deferredResult.addCallback(Clipperz.PM.Crypto.encryptingFunctions.versions['0.1'].decrypt, aKey, aValue); 99 deferredResult.addCallback(Clipperz.PM.Crypto.encryptingFunctions.versions['0.1'].decrypt, aKey, aValue);
103 deferredResult.callback(); 100 deferredResult.callback();
104 101
105 return deferredResult; 102 return deferredResult;
106 }, 103 },
107 104
108 'hash': function(aValue) { 105 'hash': function(aValue) {
109 var result; 106 var result;
110 var strngResult; 107 var strngResult;
111 108
112 stringResult = Clipperz.Crypto.Base.computeHashValue(aValue.asString()); //!!!!!!! 109 stringResult = Clipperz.Crypto.Base.computeHashValue(aValue.asString()); //!!!!!!!
113 result = new Clipperz.ByteArray("0x" + stringResult); 110 result = new Clipperz.ByteArray("0x" + stringResult);
114 111
115 return result; 112 return result;
116 } 113 }
117 }, 114 },
118 115
119 //##################################################################### 116 //#####################################################################
120 117
121 '0.2': { 118 '0.2': {
122 'encrypt': function(aKey, aValue, aNonce) { 119 'encrypt': function(aKey, aValue, aNonce) {
123 var result; 120 var result;
124 varkey, value; 121 varkey, value;
125 var dataToEncrypt; 122 var dataToEncrypt;
126 var encryptedData; 123 var encryptedData;
127 124
128 key = Clipperz.Crypto.SHA.sha_d256(new Clipperz.ByteArray(aKey)); 125 key = Clipperz.Crypto.SHA.sha_d256(new Clipperz.ByteArray(aKey));
129 value = new Clipperz.ByteArray(Clipperz.Base.serializeJSON(aValue)); 126 value = new Clipperz.ByteArray(Clipperz.Base.serializeJSON(aValue));
130 dataToEncrypt = Clipperz.Crypto.SHA.sha_d256(value).appendBlock(value); 127 dataToEncrypt = Clipperz.Crypto.SHA.sha_d256(value).appendBlock(value);
131 encryptedData = Clipperz.Crypto.AES.encrypt(key, dataToEncrypt, aNonce); 128 encryptedData = Clipperz.Crypto.AES.encrypt(key, dataToEncrypt, aNonce);
132 result = encryptedData.toBase64String(); 129 result = encryptedData.toBase64String();
133 130
134 return result; 131 return result;
135 }, 132 },
136 133
137 'deferredEncrypt': function(aKey, aValue, aNonce) { 134 'deferredEncrypt': function(aKey, aValue, aNonce) {
138 var deferredResult; 135 var deferredResult;
139 varkey, value; 136 varkey, value;
140 var dataToEncrypt; 137 var dataToEncrypt;
141 var encryptedData; 138 var encryptedData;
142 139
143 key = Clipperz.Crypto.SHA.sha_d256(new Clipperz.ByteArray(aKey)); 140 key = Clipperz.Crypto.SHA.sha_d256(new Clipperz.ByteArray(aKey));
144 value = new Clipperz.ByteArray(Clipperz.Base.serializeJSON(aValue)); 141 value = new Clipperz.ByteArray(Clipperz.Base.serializeJSON(aValue));
145 dataToEncrypt = Clipperz.Crypto.SHA.sha_d256(value).appendBlock(value); 142 dataToEncrypt = Clipperz.Crypto.SHA.sha_d256(value).appendBlock(value);
146 143
147 deferredResult = new MochiKit.Async.Deferred() 144 deferredResult = new MochiKit.Async.Deferred()
148 deferredResult.addCallback(Clipperz.Crypto.AES.deferredEncrypt, key, dataToEncrypt, aNonce); 145 deferredResult.addCallback(Clipperz.Crypto.AES.deferredEncrypt, key, dataToEncrypt, aNonce);
149 deferredResult.addCallback(function(aResult) { 146 deferredResult.addCallback(function(aResult) {
150 return aResult.toBase64String(); 147 return aResult.toBase64String();
151 }) 148 })
152 deferredResult.callback(); 149 deferredResult.callback();
diff --git a/frontend/beta/js/Clipperz/PM/DataModel/DirectLogin.js b/frontend/beta/js/Clipperz/PM/DataModel/DirectLogin.js
index 3ebc208..aee5703 100644
--- a/frontend/beta/js/Clipperz/PM/DataModel/DirectLogin.js
+++ b/frontend/beta/js/Clipperz/PM/DataModel/DirectLogin.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; } 28if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; }
32 29
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.DataModel.DirectLogin = function(args) { 33Clipperz.PM.DataModel.DirectLogin = function(args) {
37//MochiKit.Logging.logDebug(">>> new Clipperz.PM.DataModel.DirectLogin"); 34//MochiKit.Logging.logDebug(">>> new Clipperz.PM.DataModel.DirectLogin");
38//console.log(">>> new Clipperz.PM.DataModel.DirectLogin - args: %o", args); 35//console.log(">>> new Clipperz.PM.DataModel.DirectLogin - args: %o", args);
39//console.log("--- formData: %s", Clipperz.Base.serializeJSON(args.formData)); 36//console.log("--- formData: %s", Clipperz.Base.serializeJSON(args.formData));
40 args = args || {}; 37 args = args || {};
41 38
42//MochiKit.Logging.logDebug("--- new Clipperz.PM.DataModel.DirectLogin - args: " + Clipperz.Base.serializeJSON(MochiKit.Base.keys(args))); 39//MochiKit.Logging.logDebug("--- new Clipperz.PM.DataModel.DirectLogin - args: " + Clipperz.Base.serializeJSON(MochiKit.Base.keys(args)));
43 this._record = args.record || null; 40 this._record = args.record || null;
44 this._label = args.label || "unnamed record" 41 this._label = args.label || "unnamed record"
45 this._reference = args.reference || Clipperz.PM.Crypto.randomKey(); 42 this._reference = args.reference || Clipperz.PM.Crypto.randomKey();
46 this._favicon = args.favicon || null; 43 this._favicon = args.favicon || null;
47 this._bookmarkletVersion = args.bookmarkletVersion || "0.1"; 44 this._bookmarkletVersion = args.bookmarkletVersion || "0.1";
48 45
49 this._directLoginInputs = null; 46 this._directLoginInputs = null;
50 47
51 this._formValues = args.formValues || {}; 48 this._formValues = args.formValues || {};
52 this.setFormData(args.formData || null); 49 this.setFormData(args.formData || null);
53//console.log("=== formData: %o", this.formData()); 50//console.log("=== formData: %o", this.formData());
54 51
55 if (args.legacyBindingData == null) { 52 if (args.legacyBindingData == null) {
56 this.setBindingData(args.bindingData || null); 53 this.setBindingData(args.bindingData || null);
57 } else { 54 } else {
58 this.setLegacyBindingData(args.legacyBindingData); 55 this.setLegacyBindingData(args.legacyBindingData);
59 } 56 }
60 57
61 this._fixedFavicon = null; 58 this._fixedFavicon = null;
62 59
63 //this._formValues = args.formValues || (this.hasValuesToSet() ? {} : null); 60 //this._formValues = args.formValues || (this.hasValuesToSet() ? {} : null);
64//MochiKit.Logging.logDebug("<<< new Clipperz.PM.DataModel.DirectLogin"); 61//MochiKit.Logging.logDebug("<<< new Clipperz.PM.DataModel.DirectLogin");
65 62
66 return this; 63 return this;
67} 64}
68 65
69Clipperz.PM.DataModel.DirectLogin.prototype = MochiKit.Base.update(null, { 66Clipperz.PM.DataModel.DirectLogin.prototype = MochiKit.Base.update(null, {
70 67
71 'remove': function() { 68 'remove': function() {
72 this.record().removeDirectLogin(this); 69 this.record().removeDirectLogin(this);
73 }, 70 },
74 71
75 //------------------------------------------------------------------------- 72 //-------------------------------------------------------------------------
76 73
77 'record': function() { 74 'record': function() {
78 return this._record; 75 return this._record;
79 }, 76 },
80 77
81 //------------------------------------------------------------------------- 78 //-------------------------------------------------------------------------
82 79
83 'user': function() { 80 'user': function() {
84 return this.record().user(); 81 return this.record().user();
85 }, 82 },
86 83
87 //------------------------------------------------------------------------- 84 //-------------------------------------------------------------------------
88 85
89 'reference': function() { 86 'reference': function() {
90 return this._reference; 87 return this._reference;
91 }, 88 },
92 89
93 //------------------------------------------------------------------------- 90 //-------------------------------------------------------------------------
94 91
95 'label': function() { 92 'label': function() {
96 return this._label; 93 return this._label;
97 }, 94 },
98 95
99 'setLabel': function(aValue) { 96 'setLabel': function(aValue) {
100 this._label = aValue; 97 this._label = aValue;
101 }, 98 },
102 99
103 //------------------------------------------------------------------------- 100 //-------------------------------------------------------------------------
104 101
105 'favicon': function() { 102 'favicon': function() {
106 if (this._favicon == null) { 103 if (this._favicon == null) {
107 varactionUrl; 104 varactionUrl;
108 var hostname; 105 var hostname;
109 106
110 actionUrl = this.formData()['attributes']['action']; 107 actionUrl = this.formData()['attributes']['action'];
111 hostname = actionUrl.replace(/^https?:\/\/([^\/]*)\/.*/, '$1'); 108 hostname = actionUrl.replace(/^https?:\/\/([^\/]*)\/.*/, '$1');
112 this._favicon = "http://" + hostname + "/favicon.ico"; 109 this._favicon = "http://" + hostname + "/favicon.ico";
113 } 110 }
114 111
115 return this._favicon; 112 return this._favicon;
116 }, 113 },
117 114
118 //------------------------------------------------------------------------- 115 //-------------------------------------------------------------------------
119 116
120 'fixedFavicon': function() { 117 'fixedFavicon': function() {
121 var result; 118 var result;
122 119
123 if (this._fixedFavicon == null) { 120 if (this._fixedFavicon == null) {
124 result = this.favicon(); 121 result = this.favicon();
125 122
126 if (Clipperz_IEisBroken) { 123 if (Clipperz_IEisBroken) {
127 if (this.user().preferences().disableUnsecureFaviconLoadingForIE()) { 124 if (this.user().preferences().disableUnsecureFaviconLoadingForIE()) {
128 if (result.indexOf('https://') != 0) { 125 if (result.indexOf('https://') != 0) {
129 result = Clipperz.PM.Strings['defaultFaviconUrl_IE']; 126 result = Clipperz.PM.Strings['defaultFaviconUrl_IE'];
130 this.setFixedFavicon(result); 127 this.setFixedFavicon(result);
131 } 128 }
132 } 129 }
133 } 130 }
134 } else { 131 } else {
135 result = this._fixedFavicon; 132 result = this._fixedFavicon;
136 } 133 }
137 134
138 return result; 135 return result;
139 }, 136 },
140 137
141 'setFixedFavicon': function(aValue) { 138 'setFixedFavicon': function(aValue) {
142 this._fixedFavicon = aValue; 139 this._fixedFavicon = aValue;
143 }, 140 },
144 141
145 //------------------------------------------------------------------------- 142 //-------------------------------------------------------------------------
146 143
147 'bookmarkletVersion': function() { 144 'bookmarkletVersion': function() {
148 return this._bookmarkletVersion; 145 return this._bookmarkletVersion;
149 }, 146 },
150 147
151 'setBookmarkletVersion': function(aValue) { 148 'setBookmarkletVersion': function(aValue) {
152 this._bookmarkletVersion = aValue; 149 this._bookmarkletVersion = aValue;
diff --git a/frontend/beta/js/Clipperz/PM/DataModel/DirectLoginBinding.js b/frontend/beta/js/Clipperz/PM/DataModel/DirectLoginBinding.js
index 19aa9cb..7f09bff 100644
--- a/frontend/beta/js/Clipperz/PM/DataModel/DirectLoginBinding.js
+++ b/frontend/beta/js/Clipperz/PM/DataModel/DirectLoginBinding.js
@@ -1,113 +1,110 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; } 28if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; }
32 29
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.DataModel.DirectLoginBinding = function(aDirectLogin, aKey, args) { 33Clipperz.PM.DataModel.DirectLoginBinding = function(aDirectLogin, aKey, args) {
37//MochiKit.Logging.logDebug(">>> new DirectLoginBinding") 34//MochiKit.Logging.logDebug(">>> new DirectLoginBinding")
38 args = args || {}; 35 args = args || {};
39//MochiKit.Logging.logDebug("--- new DirectLoginBinding - args: " + Clipperz.Base.serializeJSON(args)); 36//MochiKit.Logging.logDebug("--- new DirectLoginBinding - args: " + Clipperz.Base.serializeJSON(args));
40 37
41 this._directLogin = aDirectLogin || args.directLogin || null; 38 this._directLogin = aDirectLogin || args.directLogin || null;
42 this._key = aKey; 39 this._key = aKey;
43 40
44 this._fieldKey = args.fieldKey || null; 41 this._fieldKey = args.fieldKey || null;
45 this._fieldName = args.fieldName || null; 42 this._fieldName = args.fieldName || null;
46//MochiKit.Logging.logDebug("<<< new DirectLoginBinding") 43//MochiKit.Logging.logDebug("<<< new DirectLoginBinding")
47 44
48 return this; 45 return this;
49} 46}
50 47
51Clipperz.PM.DataModel.DirectLoginBinding.prototype = MochiKit.Base.update(null, { 48Clipperz.PM.DataModel.DirectLoginBinding.prototype = MochiKit.Base.update(null, {
52 49
53 'directLogin': function() { 50 'directLogin': function() {
54 return this._directLogin; 51 return this._directLogin;
55 }, 52 },
56 53
57 //------------------------------------------------------------------------- 54 //-------------------------------------------------------------------------
58 55
59 'key': function() { 56 'key': function() {
60 return this._key; 57 return this._key;
61 }, 58 },
62 59
63 //------------------------------------------------------------------------- 60 //-------------------------------------------------------------------------
64 61
65 'fieldKey': function() { 62 'fieldKey': function() {
66//MochiKit.Logging.logDebug("=== Clipperz.PM.DataModel.DirectLoginBinding.fieldKey"); 63//MochiKit.Logging.logDebug("=== Clipperz.PM.DataModel.DirectLoginBinding.fieldKey");
67//MochiKit.Logging.logDebug("=== Clipperz.PM.DataModel.DirectLoginBinding.fieldKey - " + this._fieldKey); 64//MochiKit.Logging.logDebug("=== Clipperz.PM.DataModel.DirectLoginBinding.fieldKey - " + this._fieldKey);
68 return this._fieldKey; 65 return this._fieldKey;
69 }, 66 },
70 67
71 'setFieldKey': function(aValue) { 68 'setFieldKey': function(aValue) {
72 this._fieldKey = aValue; 69 this._fieldKey = aValue;
73 }, 70 },
74 71
75 'fieldName': function() { 72 'fieldName': function() {
76 return this._fieldName; 73 return this._fieldName;
77 }, 74 },
78 75
79 //------------------------------------------------------------------------- 76 //-------------------------------------------------------------------------
80 77
81 'field': function() { 78 'field': function() {
82 var result; 79 var result;
83 80
84 //MochiKit.Logging.logDebug(">>> Clipperz.PM.DataModel.DirectLoginBinding.field") 81 //MochiKit.Logging.logDebug(">>> Clipperz.PM.DataModel.DirectLoginBinding.field")
85//MochiKit.Logging.logDebug("--- Clipperz.PM.DataModel.DirectLoginBinding.field - 1 - this.fieldKey(): " + this.fieldKey()); 82//MochiKit.Logging.logDebug("--- Clipperz.PM.DataModel.DirectLoginBinding.field - 1 - this.fieldKey(): " + this.fieldKey());
86//MochiKit.Logging.logDebug("--- Clipperz.PM.DataModel.DirectLoginBinding.field - 2 - this.fieldName(): " + this.fieldName()); 83//MochiKit.Logging.logDebug("--- Clipperz.PM.DataModel.DirectLoginBinding.field - 2 - this.fieldName(): " + this.fieldName());
87 if (this.fieldKey() != null) { 84 if (this.fieldKey() != null) {
88 result = this.directLogin().record().currentVersion().fields()[this.fieldKey()]; 85 result = this.directLogin().record().currentVersion().fields()[this.fieldKey()];
89//MochiKit.Logging.logDebug("--- Clipperz.PM.DataModel.DirectLoginBinding.field - 3 - result: " + result); 86//MochiKit.Logging.logDebug("--- Clipperz.PM.DataModel.DirectLoginBinding.field - 3 - result: " + result);
90 } else if (this.fieldName() != null) { 87 } else if (this.fieldName() != null) {
91 result = this.directLogin().record().currentVersion().fieldWithName(this.fieldName()); 88 result = this.directLogin().record().currentVersion().fieldWithName(this.fieldName());
92//MochiKit.Logging.logDebug("--- Clipperz.PM.DataModel.DirectLoginBinding.field - 4 - result: " + result); 89//MochiKit.Logging.logDebug("--- Clipperz.PM.DataModel.DirectLoginBinding.field - 4 - result: " + result);
93 90
94 this.setFieldKey(result.key()); 91 this.setFieldKey(result.key());
95 } else { 92 } else {
96 result = null; 93 result = null;
97 } 94 }
98 //MochiKit.Logging.logDebug("<<< Clipperz.PM.DataModel.DirectLoginBinding.field") 95 //MochiKit.Logging.logDebug("<<< Clipperz.PM.DataModel.DirectLoginBinding.field")
99 96
100 return result; 97 return result;
101 }, 98 },
102 99
103 //------------------------------------------------------------------------- 100 //-------------------------------------------------------------------------
104 101
105 'serializedData': function() { 102 'serializedData': function() {
106 return this.fieldKey(); 103 return this.fieldKey();
107 }, 104 },
108 105
109 //------------------------------------------------------------------------- 106 //-------------------------------------------------------------------------
110 __syntaxFix__: "syntax fix" 107 __syntaxFix__: "syntax fix"
111 108
112}); 109});
113 110
diff --git a/frontend/beta/js/Clipperz/PM/DataModel/DirectLoginInput.js b/frontend/beta/js/Clipperz/PM/DataModel/DirectLoginInput.js
index 3302ed6..0e2b7ad 100644
--- a/frontend/beta/js/Clipperz/PM/DataModel/DirectLoginInput.js
+++ b/frontend/beta/js/Clipperz/PM/DataModel/DirectLoginInput.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; } 28if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; }
32 29
33//############################################################################# 30//#############################################################################
34 31
35Clipperz.PM.DataModel.DirectLoginInput = function(aDirectLogin, args) { 32Clipperz.PM.DataModel.DirectLoginInput = function(aDirectLogin, args) {
36 args = args || {}; 33 args = args || {};
37 34
38//console.log(">>> new DirectLoginInput - args: %o" + args); 35//console.log(">>> new DirectLoginInput - args: %o" + args);
39 this._directLogin = aDirectLogin; 36 this._directLogin = aDirectLogin;
40 this._args = args; 37 this._args = args;
41 38
42 return this; 39 return this;
43} 40}
44 41
45Clipperz.PM.DataModel.DirectLoginInput.prototype = MochiKit.Base.update(null, { 42Clipperz.PM.DataModel.DirectLoginInput.prototype = MochiKit.Base.update(null, {
46 43
47 'directLogin': function() { 44 'directLogin': function() {
48 return this._directLogin; 45 return this._directLogin;
49 }, 46 },
50 47
51 //------------------------------------------------------------------------- 48 //-------------------------------------------------------------------------
52 49
53 'args': function() { 50 'args': function() {
54 return this._args; 51 return this._args;
55 }, 52 },
56 53
57 //------------------------------------------------------------------------- 54 //-------------------------------------------------------------------------
58 55
59 'name': function() { 56 'name': function() {
60 return this.args()['name']; 57 return this.args()['name'];
61 }, 58 },
62 59
63 //------------------------------------------------------------------------- 60 //-------------------------------------------------------------------------
64 61
65 'type': function() { 62 'type': function() {
66 var result; 63 var result;
67 64
68 result = this.args()['type']; 65 result = this.args()['type'];
69 66
70 if (result != null) { 67 if (result != null) {
71 result = result.toLowerCase(); 68 result = result.toLowerCase();
72 } 69 }
73 return result; 70 return result;
74 }, 71 },
75 72
76 //------------------------------------------------------------------------- 73 //-------------------------------------------------------------------------
77 74
78 'value': function() { 75 'value': function() {
79 return this.args()['value']; 76 return this.args()['value'];
80 }, 77 },
81 78
82 //------------------------------------------------------------------------- 79 //-------------------------------------------------------------------------
83 80
84 'formConfiguration': function() { 81 'formConfiguration': function() {
85 var result; 82 var result;
86 83
87//MochiKit.Logging.logDebug(">>> DirectLoginInput.formConfiguration - " + this.name()); 84//MochiKit.Logging.logDebug(">>> DirectLoginInput.formConfiguration - " + this.name());
88 if (this.shouldSetValue()) { 85 if (this.shouldSetValue()) {
89//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 1"); 86//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 1");
90 switch (this.type()) { 87 switch (this.type()) {
91 case 'select': 88 case 'select':
92 var currentValue; 89 var currentValue;
93 var options; 90 var options;
94 91
95//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 2"); 92//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 2");
96 currentValue = this.directLogin().formValues()[this.name()]; 93 currentValue = this.directLogin().formValues()[this.name()];
97//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 2.1"); 94//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 2.1");
98 options = this.args()['options']; 95 options = this.args()['options'];
99//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 2.2"); 96//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 2.2");
100 97
101 result = MochiKit.DOM.SELECT({name:this.name()}, 98 result = MochiKit.DOM.SELECT({name:this.name()},
102 MochiKit.Base.map(function(anOption) { 99 MochiKit.Base.map(function(anOption) {
103 var options; 100 var options;
104 101
105//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 2.3"); 102//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 2.3");
106 //TODO: remove the value: field and replace it with element.dom.value = <some value> 103 //TODO: remove the value: field and replace it with element.dom.value = <some value>
107 options = {value:anOption['value']}; 104 options = {value:anOption['value']};
108//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 2.4"); 105//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 2.4");
109 if (currentValue == anOption['value']) { 106 if (currentValue == anOption['value']) {
110//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 2.5"); 107//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 2.5");
111 options.selected = true; 108 options.selected = true;
112//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 2.6"); 109//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 2.6");
113 } 110 }
114//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 2.7"); 111//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 2.7");
115 112
116 return MochiKit.DOM.OPTION(options, anOption['label']) 113 return MochiKit.DOM.OPTION(options, anOption['label'])
117 }, options) 114 }, options)
118 ) 115 )
119//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 2.8"); 116//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 2.8");
120 break; 117 break;
121 case 'checkbox': 118 case 'checkbox':
122 var options; 119 var options;
123 120
124//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 3"); 121//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 3");
125 options = {type:'checkbox', name: this.name()}; 122 options = {type:'checkbox', name: this.name()};
126 if (this.directLogin().formValues()[this.name()] == true) { 123 if (this.directLogin().formValues()[this.name()] == true) {
127 options['checked'] = true; 124 options['checked'] = true;
128 }; 125 };
129 126
130 result = MochiKit.DOM.INPUT(options, null); 127 result = MochiKit.DOM.INPUT(options, null);
131 break; 128 break;
132 case 'radio': 129 case 'radio':
133 var currentName; 130 var currentName;
134 var currentValue; 131 var currentValue;
135 var options; 132 var options;
136 133
137//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 4"); 134//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 4");
138 currentName = this.name(); 135 currentName = this.name();
139//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 4.1"); 136//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 4.1");
140 currentValue = this.directLogin().formValues()[this.name()]; 137 currentValue = this.directLogin().formValues()[this.name()];
141//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 4.2"); 138//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 4.2");
142 options = this.args()['options']; 139 options = this.args()['options'];
143//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 4.3"); 140//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 4.3");
144 141
145 result = MochiKit.DOM.DIV(null, 142 result = MochiKit.DOM.DIV(null,
146 MochiKit.Base.map(function(anOption) { 143 MochiKit.Base.map(function(anOption) {
147 var options; 144 var options;
148 var isChecked; 145 var isChecked;
149 var inputNode; 146 var inputNode;
150 var divNode; 147 var divNode;
151 148
152//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 4.4"); 149//MochiKit.Logging.logDebug("--- DirectLoginInput.formConfiguration - 4.4");
diff --git a/frontend/beta/js/Clipperz/PM/DataModel/DirectLoginReference.js b/frontend/beta/js/Clipperz/PM/DataModel/DirectLoginReference.js
index b067a21..2be7d58 100644
--- a/frontend/beta/js/Clipperz/PM/DataModel/DirectLoginReference.js
+++ b/frontend/beta/js/Clipperz/PM/DataModel/DirectLoginReference.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; } 28if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; }
32 29
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.DataModel.DirectLoginReference = function(args) { 33Clipperz.PM.DataModel.DirectLoginReference = function(args) {
37 args = args || {}; 34 args = args || {};
38 35
39//MochiKit.Logging.logDebug(">>> new DirectLoginReference: " + Clipperz.Base.serializeJSON(MochiKit.Base.keys(args))); 36//MochiKit.Logging.logDebug(">>> new DirectLoginReference: " + Clipperz.Base.serializeJSON(MochiKit.Base.keys(args)));
40//MochiKit.Logging.logDebug(">>> new DirectLoginReference - record: " + args.record); 37//MochiKit.Logging.logDebug(">>> new DirectLoginReference - record: " + args.record);
41 this._user = args.user; 38 this._user = args.user;
42 39
43 if (args.directLogin != null) { 40 if (args.directLogin != null) {
44 this._reference = args.directLogin.reference(); 41 this._reference = args.directLogin.reference();
45 this._recordReference = args.directLogin.record().reference(); 42 this._recordReference = args.directLogin.record().reference();
46 this._label = args.directLogin.label(); 43 this._label = args.directLogin.label();
47 this._favicon = args.directLogin.favicon() || null; 44 this._favicon = args.directLogin.favicon() || null;
48 45
49 this._directLogin = args.directLogin; 46 this._directLogin = args.directLogin;
50 this._record = args.directLogin.record(); 47 this._record = args.directLogin.record();
51 } else { 48 } else {
52 this._reference = args.reference; 49 this._reference = args.reference;
53 this._recordReference = args.record; 50 this._recordReference = args.record;
54 this._label = args.label; 51 this._label = args.label;
55 this._favicon = args.favicon || null; 52 this._favicon = args.favicon || null;
56 53
57 this._directLogin = null; 54 this._directLogin = null;
58 this._record = null; 55 this._record = null;
59 } 56 }
60 57
61 this._fixedFavicon = null; 58 this._fixedFavicon = null;
62 59
63 return this; 60 return this;
64} 61}
65 62
66Clipperz.PM.DataModel.DirectLoginReference.prototype = MochiKit.Base.update(null, { 63Clipperz.PM.DataModel.DirectLoginReference.prototype = MochiKit.Base.update(null, {
67 64
68 'user': function() { 65 'user': function() {
69 return this._user; 66 return this._user;
70 }, 67 },
71 68
72 //------------------------------------------------------------------------- 69 //-------------------------------------------------------------------------
73 70
74 'reference': function() { 71 'reference': function() {
75 return this._reference; 72 return this._reference;
76 }, 73 },
77 74
78 //------------------------------------------------------------------------- 75 //-------------------------------------------------------------------------
79 76
80 'synchronizeValues': function(aDirectLogin) { 77 'synchronizeValues': function(aDirectLogin) {
81 this._label = aDirectLogin.label(); 78 this._label = aDirectLogin.label();
82 this._favicon = aDirectLogin.favicon(); 79 this._favicon = aDirectLogin.favicon();
83 }, 80 },
84 81
85 //------------------------------------------------------------------------- 82 //-------------------------------------------------------------------------
86 83
87 'label': function() { 84 'label': function() {
88 return this._label; 85 return this._label;
89 }, 86 },
90 87
91 //------------------------------------------------------------------------- 88 //-------------------------------------------------------------------------
92 89
93 'recordReference': function() { 90 'recordReference': function() {
94 return this._recordReference; 91 return this._recordReference;
95 }, 92 },
96 93
97 //------------------------------------------------------------------------- 94 //-------------------------------------------------------------------------
98 95
99 'record': function() { 96 'record': function() {
100//MochiKit.Logging.logDebug(">>> DirectLoginReference.record"); 97//MochiKit.Logging.logDebug(">>> DirectLoginReference.record");
101 if (this._record == null) { 98 if (this._record == null) {
102 this._record = this.user().records()[this.recordReference()]; 99 this._record = this.user().records()[this.recordReference()];
103 } 100 }
104 101
105//MochiKit.Logging.logDebug("<<< DirectLoginReference.record"); 102//MochiKit.Logging.logDebug("<<< DirectLoginReference.record");
106 return this._record; 103 return this._record;
107 }, 104 },
108 105
109 //------------------------------------------------------------------------- 106 //-------------------------------------------------------------------------
110 107
111 'favicon': function() { 108 'favicon': function() {
112 return this._favicon; 109 return this._favicon;
113 }, 110 },
114 111
115 //------------------------------------------------------------------------- 112 //-------------------------------------------------------------------------
116 113
117 'fixedFavicon': function() { 114 'fixedFavicon': function() {
118 var result; 115 var result;
119 116
120 if (this._fixedFavicon == null) { 117 if (this._fixedFavicon == null) {
121 result = this.favicon(); 118 result = this.favicon();
122 119
123 if (Clipperz_IEisBroken && (this.user().preferences().disableUnsecureFaviconLoadingForIE()) && (result.indexOf('https://') != 0)) { 120 if (Clipperz_IEisBroken && (this.user().preferences().disableUnsecureFaviconLoadingForIE()) && (result.indexOf('https://') != 0)) {
124 result = Clipperz.PM.Strings['defaultFaviconUrl_IE']; 121 result = Clipperz.PM.Strings['defaultFaviconUrl_IE'];
125 this.setFixedFavicon(result); 122 this.setFixedFavicon(result);
126 } 123 }
127 } else { 124 } else {
128 result = this._fixedFavicon; 125 result = this._fixedFavicon;
129 } 126 }
130 127
131 return result; 128 return result;
132 }, 129 },
133 130
134 'setFixedFavicon': function(aValue) { 131 'setFixedFavicon': function(aValue) {
135 this._fixedFavicon = aValue; 132 this._fixedFavicon = aValue;
136 }, 133 },
137 134
138 //------------------------------------------------------------------------- 135 //-------------------------------------------------------------------------
139 136
140 'setupJumpPageWindow': function(aWindow) { 137 'setupJumpPageWindow': function(aWindow) {
141//MochiKit.Logging.logDebug(">>> DirectLoginReference.setupJumpPageWindow - " + aWindow); 138//MochiKit.Logging.logDebug(">>> DirectLoginReference.setupJumpPageWindow - " + aWindow);
142 try { 139 try {
143 MochiKit.DOM.withWindow(aWindow, MochiKit.Base.bind(function() { 140 MochiKit.DOM.withWindow(aWindow, MochiKit.Base.bind(function() {
144 MochiKit.DOM.appendChildNodes(MochiKit.DOM.currentDocument().body, 141 MochiKit.DOM.appendChildNodes(MochiKit.DOM.currentDocument().body,
145 MochiKit.DOM.H1(null, "Loading " + this.label()) 142 MochiKit.DOM.H1(null, "Loading " + this.label())
146 ); 143 );
147 }, this)); 144 }, this));
148 } catch(e) { 145 } catch(e) {
149 MochiKit.Logging.logDebug("EXCEPTION: " + e); 146 MochiKit.Logging.logDebug("EXCEPTION: " + e);
150 } 147 }
151//MochiKit.Logging.logDebug("<<< DirectLoginReference.setupJumpPageWindow"); 148//MochiKit.Logging.logDebug("<<< DirectLoginReference.setupJumpPageWindow");
152 }, 149 },
diff --git a/frontend/beta/js/Clipperz/PM/DataModel/Header.js b/frontend/beta/js/Clipperz/PM/DataModel/Header.js
index ef34732..c780855 100644
--- a/frontend/beta/js/Clipperz/PM/DataModel/Header.js
+++ b/frontend/beta/js/Clipperz/PM/DataModel/Header.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; } 28if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; }
32 29
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.DataModel.Header = function(args) { 33Clipperz.PM.DataModel.Header = function(args) {
37 args = args || {}; 34 args = args || {};
38 35
39 this._user = args.user; 36 this._user = args.user;
40 37
41 this._serverData = null; 38 this._serverData = null;
42 this._serverDataVersion = null; 39 this._serverDataVersion = null;
43 this._jsonEvaledServerData = null; 40 this._jsonEvaledServerData = null;
44 41
45 this._decryptedLegacyServerData = null; 42 this._decryptedLegacyServerData = null;
46 this._isDecryptingLegacyServerData = false; 43 this._isDecryptingLegacyServerData = false;
47 this._decryptingLegacyServerDataPendingQueue = []; 44 this._decryptingLegacyServerDataPendingQueue = [];
48 45
49 this.resetUpdatedSections(); 46 this.resetUpdatedSections();
50 47
51 this._shouldLoadSections = {}; 48 this._shouldLoadSections = {};
52 49
53 Clipperz.NotificationCenter.register(this.user(), 'updatedSection', this, 'updatedSectionHandler'); 50 Clipperz.NotificationCenter.register(this.user(), 'updatedSection', this, 'updatedSectionHandler');
54 51
55 return this; 52 return this;
56} 53}
57 54
58Clipperz.PM.DataModel.Header.prototype = MochiKit.Base.update(null, { 55Clipperz.PM.DataModel.Header.prototype = MochiKit.Base.update(null, {
59 56
60 //------------------------------------------------------------------------- 57 //-------------------------------------------------------------------------
61 58
62 'user': function() { 59 'user': function() {
63 return this._user; 60 return this._user;
64 }, 61 },
65 62
66 //------------------------------------------------------------------------- 63 //-------------------------------------------------------------------------
67 //------------------------------------------------------------------------- 64 //-------------------------------------------------------------------------
68 //------------------------------------------------------------------------- 65 //-------------------------------------------------------------------------
69 //------------------------------------------------------------------------- 66 //-------------------------------------------------------------------------
70 //------------------------------------------------------------------------- 67 //-------------------------------------------------------------------------
71 //------------------------------------------------------------------------- 68 //-------------------------------------------------------------------------
72 //------------------------------------------------------------------------- 69 //-------------------------------------------------------------------------
73 //------------------------------------------------------------------------- 70 //-------------------------------------------------------------------------
74 //------------------------------------------------------------------------- 71 //-------------------------------------------------------------------------
75 72
76 'updatedSections': function() { 73 'updatedSections': function() {
77 return this._updatedSections; 74 return this._updatedSections;
78 }, 75 },
79 76
80 'markSectionAsUpdated': function(aSectionName) { 77 'markSectionAsUpdated': function(aSectionName) {
81 this.updatedSections().push(aSectionName); 78 this.updatedSections().push(aSectionName);
82 }, 79 },
83 80
84 'resetUpdatedSections': function() { 81 'resetUpdatedSections': function() {
85 this._updatedSections = [] 82 this._updatedSections = []
86 }, 83 },
87 84
88 'hasSectionBeenUpdated': function(aSectionName) { 85 'hasSectionBeenUpdated': function(aSectionName) {
89 return (this.updatedSections().join().indexOf(aSectionName) != -1); 86 return (this.updatedSections().join().indexOf(aSectionName) != -1);
90 }, 87 },
91 88
92 'cachedServerDataSection': function(aSectionName) { 89 'cachedServerDataSection': function(aSectionName) {
93 return (this.hasSectionBeenUpdated(aSectionName)) ? {} : this.jsonEvaledServerData()[aSectionName]; 90 return (this.hasSectionBeenUpdated(aSectionName)) ? {} : this.jsonEvaledServerData()[aSectionName];
94 }, 91 },
95 92
96 'updateAllSections': function() { 93 'updateAllSections': function() {
97 this.resetUpdatedSections(); 94 this.resetUpdatedSections();
98 this.markSectionAsUpdated('records'); 95 this.markSectionAsUpdated('records');
99 this.markSectionAsUpdated('directLogins'); 96 this.markSectionAsUpdated('directLogins');
100 this.markSectionAsUpdated('preferences'); 97 this.markSectionAsUpdated('preferences');
101 this.markSectionAsUpdated('oneTimePasswords'); 98 this.markSectionAsUpdated('oneTimePasswords');
102 99
103 return MochiKit.Async.succeed(this); 100 return MochiKit.Async.succeed(this);
104 }, 101 },
105 102
106 'updatedSectionHandler': function(anEvent) { 103 'updatedSectionHandler': function(anEvent) {
107 this.markSectionAsUpdated(anEvent.parameters()); 104 this.markSectionAsUpdated(anEvent.parameters());
108 }, 105 },
109 106
110 //------------------------------------------------------------------------- 107 //-------------------------------------------------------------------------
111 108
112 'getObjectKeyIndex': function(anObject) { 109 'getObjectKeyIndex': function(anObject) {
113 var result; 110 var result;
114 varitemReference; 111 varitemReference;
115 var index; 112 var index;
116 113
117 result = {}; 114 result = {};
118 index = 0; 115 index = 0;
119 116
120 for (itemReference in anObject) { 117 for (itemReference in anObject) {
121 result[itemReference] = index.toString(); 118 result[itemReference] = index.toString();
122 index ++; 119 index ++;
123 } 120 }
124 121
125 return result; 122 return result;
126 }, 123 },
127 124
128 //------------------------------------------------------------------------- 125 //-------------------------------------------------------------------------
129 126
130 'serializedDataWithRecordAndDirectLoginIndexes': function(aRecordIndexes, aDirectLoginIndexs) { 127 'serializedDataWithRecordAndDirectLoginIndexes': function(aRecordIndexes, aDirectLoginIndexs) {
131 var result; 128 var result;
132 var records; 129 var records;
133 var recordReference; 130 var recordReference;
134 131
135//MochiKit.Logging.logDebug(">>> Header.serializedData"); 132//MochiKit.Logging.logDebug(">>> Header.serializedData");
136 result = { 133 result = {
137 'records': {}, 134 'records': {},
138 'directLogins': {} 135 'directLogins': {}
139 }; 136 };
140 137
141 records = this.user().records(); 138 records = this.user().records();
142 for (recordReference in records) { 139 for (recordReference in records) {
143 result['records'][aRecordIndexes[recordReference]] = this.user().records()[recordReference].headerData(); 140 result['records'][aRecordIndexes[recordReference]] = this.user().records()[recordReference].headerData();
144 } 141 }
145 142
146 for (directLoginReference in this.user().directLoginReferences()) { 143 for (directLoginReference in this.user().directLoginReferences()) {
147 var currentDirectLogin; 144 var currentDirectLogin;
148 vardirectLoginData; 145 vardirectLoginData;
149 146
150 currentDirectLogin = this.user().directLoginReferences()[directLoginReference]; 147 currentDirectLogin = this.user().directLoginReferences()[directLoginReference];
151 if (aRecordIndexes[currentDirectLogin.recordReference()] != null) { 148 if (aRecordIndexes[currentDirectLogin.recordReference()] != null) {
152 directLoginData = { 149 directLoginData = {
diff --git a/frontend/beta/js/Clipperz/PM/DataModel/OneTimePassword.js b/frontend/beta/js/Clipperz/PM/DataModel/OneTimePassword.js
index dd8d5c9..88f383a 100644
--- a/frontend/beta/js/Clipperz/PM/DataModel/OneTimePassword.js
+++ b/frontend/beta/js/Clipperz/PM/DataModel/OneTimePassword.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; } 28if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; }
32 29
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.DataModel.OneTimePassword = function(args) { 33Clipperz.PM.DataModel.OneTimePassword = function(args) {
37 args = args || {}; 34 args = args || {};
38 35
39//console.log("new OneTimePassword", args); 36//console.log("new OneTimePassword", args);
40//MochiKit.Logging.logDebug("---"); 37//MochiKit.Logging.logDebug("---");
41 this._user = args['user']; 38 this._user = args['user'];
42 this._password = args['password']; 39 this._password = args['password'];
43 this._passwordValue = Clipperz.PM.DataModel.OneTimePassword.normalizedOneTimePassword(args['password']); 40 this._passwordValue = Clipperz.PM.DataModel.OneTimePassword.normalizedOneTimePassword(args['password']);
44 this._reference = args['reference'] || Clipperz.PM.Crypto.randomKey(); 41 this._reference = args['reference'] || Clipperz.PM.Crypto.randomKey();
45 this._creationDate = args['created'] ? Clipperz.PM.Date.parseDateWithUTCFormat(args['created']) : new Date(); 42 this._creationDate = args['created'] ? Clipperz.PM.Date.parseDateWithUTCFormat(args['created']) : new Date();
46 this._usageDate = args['used'] ? Clipperz.PM.Date.parseDateWithUTCFormat(args['used']) : null; 43 this._usageDate = args['used'] ? Clipperz.PM.Date.parseDateWithUTCFormat(args['used']) : null;
47 44
48 this._status = args['status'] || 'ACTIVE'; 45 this._status = args['status'] || 'ACTIVE';
49 this._connectionInfo = null; 46 this._connectionInfo = null;
50 47
51 this._key = null; 48 this._key = null;
52 this._keyChecksum = null; 49 this._keyChecksum = null;
53 50
54 return this; 51 return this;
55} 52}
56 53
57Clipperz.PM.DataModel.OneTimePassword.prototype = MochiKit.Base.update(null, { 54Clipperz.PM.DataModel.OneTimePassword.prototype = MochiKit.Base.update(null, {
58 55
59 'toString': function() { 56 'toString': function() {
60 return "Clipperz.PM.DataModel.OneTimePassword"; 57 return "Clipperz.PM.DataModel.OneTimePassword";
61 }, 58 },
62 59
63 //------------------------------------------------------------------------- 60 //-------------------------------------------------------------------------
64 61
65 'user': function() { 62 'user': function() {
66 return this._user; 63 return this._user;
67 }, 64 },
68 65
69 //------------------------------------------------------------------------- 66 //-------------------------------------------------------------------------
70 67
71 'password': function() { 68 'password': function() {
72 return this._password; 69 return this._password;
73 }, 70 },
74 71
75 //------------------------------------------------------------------------- 72 //-------------------------------------------------------------------------
76 73
77 'passwordValue': function() { 74 'passwordValue': function() {
78 return this._passwordValue; 75 return this._passwordValue;
79 }, 76 },
80 77
81 //------------------------------------------------------------------------- 78 //-------------------------------------------------------------------------
82 79
83 'creationDate': function() { 80 'creationDate': function() {
84 return this._creationDate; 81 return this._creationDate;
85 }, 82 },
86 83
87 //------------------------------------------------------------------------- 84 //-------------------------------------------------------------------------
88 85
89 'reference': function() { 86 'reference': function() {
90 return this._reference; 87 return this._reference;
91 }, 88 },
92 89
93 //------------------------------------------------------------------------- 90 //-------------------------------------------------------------------------
94 91
95 'key': function() { 92 'key': function() {
96 if (this._key == null) { 93 if (this._key == null) {
97 this._key = Clipperz.PM.DataModel.OneTimePassword.computeKeyWithUsernameAndPassword(this.user().username(), this.passwordValue()); 94 this._key = Clipperz.PM.DataModel.OneTimePassword.computeKeyWithUsernameAndPassword(this.user().username(), this.passwordValue());
98 } 95 }
99 96
100 return this._key; 97 return this._key;
101 }, 98 },
102 99
103 //------------------------------------------------------------------------- 100 //-------------------------------------------------------------------------
104 101
105 'keyChecksum': function() { 102 'keyChecksum': function() {
106 if (this._keyChecksum == null) { 103 if (this._keyChecksum == null) {
107 this._keyChecksum = Clipperz.PM.DataModel.OneTimePassword.computeKeyChecksumWithUsernameAndPassword(this.user().username(), this.passwordValue()); 104 this._keyChecksum = Clipperz.PM.DataModel.OneTimePassword.computeKeyChecksumWithUsernameAndPassword(this.user().username(), this.passwordValue());
108 } 105 }
109 106
110 return this._keyChecksum; 107 return this._keyChecksum;
111 }, 108 },
112 109
113 //------------------------------------------------------------------------- 110 //-------------------------------------------------------------------------
114 111
115 'status': function() { 112 'status': function() {
116 return this._status; 113 return this._status;
117 }, 114 },
118 115
119 'setStatus': function(aValue) { 116 'setStatus': function(aValue) {
120 this._status = aValue; 117 this._status = aValue;
121 }, 118 },
122 119
123 //------------------------------------------------------------------------- 120 //-------------------------------------------------------------------------
124 121
125 'serializedData': function() { 122 'serializedData': function() {
126 var result; 123 var result;
127 124
128 result = { 125 result = {
129 'password': this.password(), 126 'password': this.password(),
130 'created': this.creationDate() ? Clipperz.PM.Date.formatDateWithUTCFormat(this.creationDate()) : null, 127 'created': this.creationDate() ? Clipperz.PM.Date.formatDateWithUTCFormat(this.creationDate()) : null,
131 'used': this.usageDate() ? Clipperz.PM.Date.formatDateWithUTCFormat(this.usageDate()) : null, 128 'used': this.usageDate() ? Clipperz.PM.Date.formatDateWithUTCFormat(this.usageDate()) : null,
132 'status': this.status() 129 'status': this.status()
133 }; 130 };
134 131
135 return result; 132 return result;
136 }, 133 },
137 134
138 //------------------------------------------------------------------------- 135 //-------------------------------------------------------------------------
139 136
140 'packedPassphrase': function() { 137 'packedPassphrase': function() {
141 var result; 138 var result;
142 var packedPassphrase; 139 var packedPassphrase;
143 var encodedPassphrase; 140 var encodedPassphrase;
144 varprefixPadding; 141 varprefixPadding;
145 var suffixPadding; 142 var suffixPadding;
146 var getRandomBytes; 143 var getRandomBytes;
147 144
148 getRandomBytes = MochiKit.Base.method(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'getRandomBytes'); 145 getRandomBytes = MochiKit.Base.method(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'getRandomBytes');
149 146
150 encodedPassphrase = new Clipperz.ByteArray(this.user().passphrase()).toBase64String(); 147 encodedPassphrase = new Clipperz.ByteArray(this.user().passphrase()).toBase64String();
151//MochiKit.Logging.logDebug("--- encodedPassphrase.length: " + encodedPassphrase.length); 148//MochiKit.Logging.logDebug("--- encodedPassphrase.length: " + encodedPassphrase.length);
152 prefixPadding = getRandomBytes(getRandomBytes(1).byteAtIndex(0)).toBase64String(); 149 prefixPadding = getRandomBytes(getRandomBytes(1).byteAtIndex(0)).toBase64String();
diff --git a/frontend/beta/js/Clipperz/PM/DataModel/OneTimePasswordManager.js b/frontend/beta/js/Clipperz/PM/DataModel/OneTimePasswordManager.js
index d90100a..aa40aba 100644
--- a/frontend/beta/js/Clipperz/PM/DataModel/OneTimePasswordManager.js
+++ b/frontend/beta/js/Clipperz/PM/DataModel/OneTimePasswordManager.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; } 28if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; }
32 29
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.DataModel.OneTimePasswordManager = function(anUser, args) { 33Clipperz.PM.DataModel.OneTimePasswordManager = function(anUser, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 this._user = anUser; 36 this._user = anUser;
40 this._oneTimePasswords = {}; 37 this._oneTimePasswords = {};
41 38
42 this.updateWithData(args); 39 this.updateWithData(args);
43 40
44 Clipperz.NotificationCenter.notify(null, 'oneTimePasswordAdded', null, true); 41 Clipperz.NotificationCenter.notify(null, 'oneTimePasswordAdded', null, true);
45 42
46 return this; 43 return this;
47} 44}
48 45
49Clipperz.PM.DataModel.OneTimePasswordManager.prototype = MochiKit.Base.update(null, { 46Clipperz.PM.DataModel.OneTimePasswordManager.prototype = MochiKit.Base.update(null, {
50 47
51 'toString': function() { 48 'toString': function() {
52 return "Clipperz.PM.DataModel.OneTimePasswordManager"; 49 return "Clipperz.PM.DataModel.OneTimePasswordManager";
53 }, 50 },
54 51
55 //------------------------------------------------------------------------- 52 //-------------------------------------------------------------------------
56 53
57 'updateWithData': function(someValues) { 54 'updateWithData': function(someValues) {
58 varotpReference; 55 varotpReference;
59 56
60//console.log("OneTimePasswordManager.updateWithData", someValues); 57//console.log("OneTimePasswordManager.updateWithData", someValues);
61//MochiKit.Logging.logDebug("OneTimePasswordManager.updateWithData: " + Clipperz.Base.serializeJSON(someValues)); 58//MochiKit.Logging.logDebug("OneTimePasswordManager.updateWithData: " + Clipperz.Base.serializeJSON(someValues));
62 for (otpReference in someValues) { 59 for (otpReference in someValues) {
63 var otp; 60 var otp;
64 var otpConfiguration; 61 var otpConfiguration;
65 62
66 otpConfiguration = someValues[otpReference]; 63 otpConfiguration = someValues[otpReference];
67 otpConfiguration['user'] = this.user(); 64 otpConfiguration['user'] = this.user();
68 otpConfiguration['reference'] = otpReference; 65 otpConfiguration['reference'] = otpReference;
69 otp = new Clipperz.PM.DataModel.OneTimePassword(otpConfiguration); 66 otp = new Clipperz.PM.DataModel.OneTimePassword(otpConfiguration);
70 this._oneTimePasswords[otpReference] = otp; 67 this._oneTimePasswords[otpReference] = otp;
71 } 68 }
72 69
73 return this; 70 return this;
74 }, 71 },
75 72
76 //------------------------------------------------------------------------- 73 //-------------------------------------------------------------------------
77 74
78 'updateWithServerData': function(someValues) { 75 'updateWithServerData': function(someValues) {
79 var deferredResult; 76 var deferredResult;
80 varoneTimePasswordReference; 77 varoneTimePasswordReference;
81 var wereChangesApplied; 78 var wereChangesApplied;
82 79
83//MochiKit.Logging.logDebug(">>> OneTimePasswordManager.updateWithServerData"); 80//MochiKit.Logging.logDebug(">>> OneTimePasswordManager.updateWithServerData");
84 deferredResult = new MochiKit.Async.Deferred(); 81 deferredResult = new MochiKit.Async.Deferred();
85 wereChangesApplied = false; 82 wereChangesApplied = false;
86 83
87 for (oneTimePasswordReference in someValues) { 84 for (oneTimePasswordReference in someValues) {
88 var oneTimePassword; 85 var oneTimePassword;
89 86
90 oneTimePassword = this.oneTimePasswordWithReference(oneTimePasswordReference); 87 oneTimePassword = this.oneTimePasswordWithReference(oneTimePasswordReference);
91 if (oneTimePassword != null) { 88 if (oneTimePassword != null) {
92 var oneTimePasswordHasBeenUpdated; 89 var oneTimePasswordHasBeenUpdated;
93 90
94 oneTimePasswordHasBeenUpdated = oneTimePassword.updateStatusWithValues(someValues[oneTimePasswordReference]); 91 oneTimePasswordHasBeenUpdated = oneTimePassword.updateStatusWithValues(someValues[oneTimePasswordReference]);
95 wereChangesApplied = oneTimePasswordHasBeenUpdated || wereChangesApplied; 92 wereChangesApplied = oneTimePasswordHasBeenUpdated || wereChangesApplied;
96 } else { 93 } else {
97 94
98 } 95 }
99 } 96 }
100 97
101 if (wereChangesApplied == true) { 98 if (wereChangesApplied == true) {
102 this.user().header().markSectionAsUpdated('oneTimePasswords'); 99 this.user().header().markSectionAsUpdated('oneTimePasswords');
103 } 100 }
104 101
105 for (oneTimePasswordReference in this.oneTimePasswords()) { 102 for (oneTimePasswordReference in this.oneTimePasswords()) {
106 if (typeof(someValues[oneTimePasswordReference]) == 'undefind') { 103 if (typeof(someValues[oneTimePasswordReference]) == 'undefind') {
107 deferredResult.addCallback(MochiKit.Base.method(this.oneTimePasswordWithReference(oneTimePasswordReference), 'saveChanges')); 104 deferredResult.addCallback(MochiKit.Base.method(this.oneTimePasswordWithReference(oneTimePasswordReference), 'saveChanges'));
108 } 105 }
109 } 106 }
110 107
111 deferredResult.addCallback(MochiKit.Async.succeed, this); 108 deferredResult.addCallback(MochiKit.Async.succeed, this);
112 109
113 deferredResult.callback(); 110 deferredResult.callback();
114//MochiKit.Logging.logDebug("<<< OneTimePasswordManager.updateWithServerData"); 111//MochiKit.Logging.logDebug("<<< OneTimePasswordManager.updateWithServerData");
115 112
116 return deferredResult; 113 return deferredResult;
117 }, 114 },
118 115
119 //------------------------------------------------------------------------- 116 //-------------------------------------------------------------------------
120 117
121 'user': function() { 118 'user': function() {
122 return this._user; 119 return this._user;
123 }, 120 },
124 121
125 //------------------------------------------------------------------------- 122 //-------------------------------------------------------------------------
126 123
127 'addOneTimePassword': function(aOneTimePassword, isBatchUpdate) { 124 'addOneTimePassword': function(aOneTimePassword, isBatchUpdate) {
128 this.oneTimePasswords()[aOneTimePassword.reference()] = aOneTimePassword; 125 this.oneTimePasswords()[aOneTimePassword.reference()] = aOneTimePassword;
129 126
130 if (isBatchUpdate != true) { 127 if (isBatchUpdate != true) {
131 Clipperz.NotificationCenter.notify(aOneTimePassword, 'oneTimePasswordAdded'); 128 Clipperz.NotificationCenter.notify(aOneTimePassword, 'oneTimePasswordAdded');
132 Clipperz.NotificationCenter.notify(this.user(), 'updatedSection', 'oneTimePasswords', true); 129 Clipperz.NotificationCenter.notify(this.user(), 'updatedSection', 'oneTimePasswords', true);
133 } 130 }
134 }, 131 },
135 132
136 //------------------------------------------------------------------------- 133 //-------------------------------------------------------------------------
137 134
138 'archiveOneTimePassword': function(aOneTimePasswordReference) { 135 'archiveOneTimePassword': function(aOneTimePasswordReference) {
139 var deferredResult; 136 var deferredResult;
140 137
141//MochiKit.Logging.logDebug(">>> OneTimePasswordManager.archiveOneTimePassword"); 138//MochiKit.Logging.logDebug(">>> OneTimePasswordManager.archiveOneTimePassword");
142//MochiKit.Logging.logDebug("--- OneTimePasswordManager.archiveOneTimePassword - 0 otp.reference: " + aOneTimePasswordReference); 139//MochiKit.Logging.logDebug("--- OneTimePasswordManager.archiveOneTimePassword - 0 otp.reference: " + aOneTimePasswordReference);
143 deferredResult = new MochiKit.Async.Deferred(); 140 deferredResult = new MochiKit.Async.Deferred();
144 deferredResult.addCallback(MochiKit.Base.method(this.user(), 'loadOneTimePasswords')); 141 deferredResult.addCallback(MochiKit.Base.method(this.user(), 'loadOneTimePasswords'));
145 deferredResult.addCallback(MochiKit.Base.bind(function(aOneTimePasswordReference) { 142 deferredResult.addCallback(MochiKit.Base.bind(function(aOneTimePasswordReference) {
146 var oneTimePassword; 143 var oneTimePassword;
147 144
148//MochiKit.Logging.logDebug("--- OneTimePasswordManager.archiveOneTimePassword - 1 serializedData: " + Clipperz.Base.serializeJSON(this.serializedData())); 145//MochiKit.Logging.logDebug("--- OneTimePasswordManager.archiveOneTimePassword - 1 serializedData: " + Clipperz.Base.serializeJSON(this.serializedData()));
149 oneTimePassword = this.oneTimePasswords()[aOneTimePasswordReference]; 146 oneTimePassword = this.oneTimePasswords()[aOneTimePasswordReference];
150 147
151 if (oneTimePassword != null) { 148 if (oneTimePassword != null) {
152 oneTimePassword.setUsageDate(new Date()); 149 oneTimePassword.setUsageDate(new Date());
diff --git a/frontend/beta/js/Clipperz/PM/DataModel/Record.js b/frontend/beta/js/Clipperz/PM/DataModel/Record.js
index b4b5023..270f2ae 100644
--- a/frontend/beta/js/Clipperz/PM/DataModel/Record.js
+++ b/frontend/beta/js/Clipperz/PM/DataModel/Record.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; } 28if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; }
32 29
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.DataModel.Record = function(args) { 33Clipperz.PM.DataModel.Record = function(args) {
37 args = args || {}; 34 args = args || {};
38 35
39 this._user = args['user'] || null; 36 this._user = args['user'] || null;
40 this._reference = args['reference'] || Clipperz.PM.Crypto.randomKey(); 37 this._reference = args['reference'] || Clipperz.PM.Crypto.randomKey();
41 this._version = args['version'] || Clipperz.PM.Crypto.encryptingFunctions.currentVersion; 38 this._version = args['version'] || Clipperz.PM.Crypto.encryptingFunctions.currentVersion;
42 this._key = args['key'] || Clipperz.PM.Crypto.randomKey(); 39 this._key = args['key'] || Clipperz.PM.Crypto.randomKey();
43 40
44 this.setLabel(args['label'] || Clipperz.PM.Strings['newRecordTitleLabel']); 41 this.setLabel(args['label'] || Clipperz.PM.Strings['newRecordTitleLabel']);
45 42
46 this.setHeaderNotes(args['headerNotes'] || null); 43 this.setHeaderNotes(args['headerNotes'] || null);
47 this.setNotes(args['notes'] || args['headerNotes'] || ""); 44 this.setNotes(args['notes'] || args['headerNotes'] || "");
48//MochiKit.Logging.logDebug("--- new Record ('" + this._label + "')- _headerNotes: '" + this._headerNotes + "'"); 45//MochiKit.Logging.logDebug("--- new Record ('" + this._label + "')- _headerNotes: '" + this._headerNotes + "'");
49//MochiKit.Logging.logDebug("--- new Record ('" + this._label + "')- _notes: '" + this._notes + "'"); 46//MochiKit.Logging.logDebug("--- new Record ('" + this._label + "')- _notes: '" + this._notes + "'");
50 //this._notes = args.notes || ""; 47 //this._notes = args.notes || "";
51 48
52 this._versions = {}; 49 this._versions = {};
53 this._directLogins = {}; 50 this._directLogins = {};
54 this._removedDirectLogins = []; 51 this._removedDirectLogins = [];
55 52
56 this.setIsBrandNew(args['reference'] == null); 53 this.setIsBrandNew(args['reference'] == null);
57 54
58 this.setShouldLoadData(this.isBrandNew() ? false: true); 55 this.setShouldLoadData(this.isBrandNew() ? false: true);
59 this.setShouldDecryptData(this.isBrandNew() ? false: true); 56 this.setShouldDecryptData(this.isBrandNew() ? false: true);
60 this.setShouldProcessData(this.isBrandNew() ? false: true); 57 this.setShouldProcessData(this.isBrandNew() ? false: true);
61 58
62 this.setCurrentVersion(this.isBrandNew() ? new Clipperz.PM.DataModel.RecordVersion(this, null): null); 59 this.setCurrentVersion(this.isBrandNew() ? new Clipperz.PM.DataModel.RecordVersion(this, null): null);
63 this.setCurrentVersionKey(null); 60 this.setCurrentVersionKey(null);
64 61
65 this._serverData = null; 62 this._serverData = null;
66 this._decryptedData = null; 63 this._decryptedData = null;
67 this._cachedData = null; 64 this._cachedData = null;
68 65
69 return this; 66 return this;
70} 67}
71 68
72Clipperz.PM.DataModel.Record.prototype = MochiKit.Base.update(null, { 69Clipperz.PM.DataModel.Record.prototype = MochiKit.Base.update(null, {
73 70
74 'toString': function() { 71 'toString': function() {
75 return "Record (" + this.label() + ")"; 72 return "Record (" + this.label() + ")";
76 }, 73 },
77 74
78 //------------------------------------------------------------------------- 75 //-------------------------------------------------------------------------
79 76
80 'isBrandNew': function() { 77 'isBrandNew': function() {
81 return this._isBrandNew; 78 return this._isBrandNew;
82 }, 79 },
83 80
84 'setIsBrandNew': function(aValue) { 81 'setIsBrandNew': function(aValue) {
85 this._isBrandNew = aValue; 82 this._isBrandNew = aValue;
86 }, 83 },
87 84
88 //------------------------------------------------------------------------- 85 //-------------------------------------------------------------------------
89/* 86/*
90 'shouldRunTheRecordCreationWizard': function() { 87 'shouldRunTheRecordCreationWizard': function() {
91 return (this.isBrandNew() && (MochiKit.Base.keys(this.currentVersion().fields()).length == 0)); 88 return (this.isBrandNew() && (MochiKit.Base.keys(this.currentVersion().fields()).length == 0));
92 }, 89 },
93 */ 90 */
94 //------------------------------------------------------------------------- 91 //-------------------------------------------------------------------------
95 92
96 'user': function() { 93 'user': function() {
97 return this._user; 94 return this._user;
98 }, 95 },
99 96
100 //------------------------------------------------------------------------- 97 //-------------------------------------------------------------------------
101 98
102 'reference': function() { 99 'reference': function() {
103 return this._reference; 100 return this._reference;
104 }, 101 },
105 102
106 //------------------------------------------------------------------------- 103 //-------------------------------------------------------------------------
107 104
108 'key': function() { 105 'key': function() {
109 return this._key; 106 return this._key;
110 }, 107 },
111 108
112 'updateKey': function() { 109 'updateKey': function() {
113 this._key = Clipperz.PM.Crypto.randomKey(); 110 this._key = Clipperz.PM.Crypto.randomKey();
114 }, 111 },
115 112
116 //------------------------------------------------------------------------- 113 //-------------------------------------------------------------------------
117 114
118 'label': function() { 115 'label': function() {
119 return this._label; 116 return this._label;
120 }, 117 },
121 118
122 'setLabel': function(aValue) { 119 'setLabel': function(aValue) {
123 this._label = aValue; 120 this._label = aValue;
124 }, 121 },
125 122
126 'lowerCaseLabel': function() { 123 'lowerCaseLabel': function() {
127 return this.label().toLowerCase(); 124 return this.label().toLowerCase();
128 }, 125 },
129 126
130 //------------------------------------------------------------------------- 127 //-------------------------------------------------------------------------
131 128
132 'versions': function() { 129 'versions': function() {
133 return this._versions; 130 return this._versions;
134 }, 131 },
135 132
136 //------------------------------------------------------------------------- 133 //-------------------------------------------------------------------------
137 134
138 'currentVersion': function() { 135 'currentVersion': function() {
139 return this._currentVersion; 136 return this._currentVersion;
140 }, 137 },
141 138
142 'setCurrentVersion': function(aValue) { 139 'setCurrentVersion': function(aValue) {
143 this._currentVersion = aValue; 140 this._currentVersion = aValue;
144 }, 141 },
145 142
146 //------------------------------------------------------------------------- 143 //-------------------------------------------------------------------------
147 144
148 'currentVersionKey': function() { 145 'currentVersionKey': function() {
149 return this._currentVersionKey; 146 return this._currentVersionKey;
150 }, 147 },
151 148
152 'setCurrentVersionKey': function(aValue) { 149 'setCurrentVersionKey': function(aValue) {
diff --git a/frontend/beta/js/Clipperz/PM/DataModel/RecordField.js b/frontend/beta/js/Clipperz/PM/DataModel/RecordField.js
index 2063825..bca664d 100644
--- a/frontend/beta/js/Clipperz/PM/DataModel/RecordField.js
+++ b/frontend/beta/js/Clipperz/PM/DataModel/RecordField.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; } 28if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; }
32 29
33//############################################################################# 30//#############################################################################
34 31
35Clipperz.PM.DataModel.RecordField = function(args) { 32Clipperz.PM.DataModel.RecordField = function(args) {
36 args = args || {}; 33 args = args || {};
37 34
38 this._recordVersion = args.recordVersion || null; 35 this._recordVersion = args.recordVersion || null;
39 this._key = args.key || Clipperz.PM.Crypto.randomKey(); 36 this._key = args.key || Clipperz.PM.Crypto.randomKey();
40 this.setLabel(args.label || ''); 37 this.setLabel(args.label || '');
41 this.setValue(args.value || ''); 38 this.setValue(args.value || '');
42 this.setType(args.type || 'TXT'); //valid types: 'TXT', 'PWD', 'URL', 'DATE', 'ADDR', 'CHECK', 'RADIO', ('NOTE' probably not), ... 39 this.setType(args.type || 'TXT'); //valid types: 'TXT', 'PWD', 'URL', 'DATE', 'ADDR', 'CHECK', 'RADIO', ('NOTE' probably not), ...
43 this._hidden = args.hidden || (args.type == 'PWD') || false; 40 this._hidden = args.hidden || (args.type == 'PWD') || false;
44 41
45 return this; 42 return this;
46} 43}
47 44
48Clipperz.PM.DataModel.RecordField.prototype = MochiKit.Base.update(null, { 45Clipperz.PM.DataModel.RecordField.prototype = MochiKit.Base.update(null, {
49 46
50 'toString': function() { 47 'toString': function() {
51 return "Clipperz.PM.DataModel.RecordField - " + this.label() + " (" + this.key() + ")"; 48 return "Clipperz.PM.DataModel.RecordField - " + this.label() + " (" + this.key() + ")";
52 }, 49 },
53 50
54 //------------------------------------------------------------------------- 51 //-------------------------------------------------------------------------
55 52
56 'recordVersion': function() { 53 'recordVersion': function() {
57 return this._recordVersion; 54 return this._recordVersion;
58 }, 55 },
59 56
60 //------------------------------------------------------------------------- 57 //-------------------------------------------------------------------------
61 58
62 'key': function() { 59 'key': function() {
63 return this._key; 60 return this._key;
64 }, 61 },
65 62
66 //------------------------------------------------------------------------- 63 //-------------------------------------------------------------------------
67 64
68 'label': function() { 65 'label': function() {
69 return this._label; 66 return this._label;
70 }, 67 },
71 68
72 'setLabel': function(aValue) { 69 'setLabel': function(aValue) {
73 this._label = aValue; 70 this._label = aValue;
74 }, 71 },
75 72
76 //------------------------------------------------------------------------- 73 //-------------------------------------------------------------------------
77 74
78 'value': function() { 75 'value': function() {
79 return this._value; 76 return this._value;
80 }, 77 },
81 78
82 'setValue': function(aValue) { 79 'setValue': function(aValue) {
83 this._value = aValue; 80 this._value = aValue;
84 }, 81 },
85 82
86 //------------------------------------------------------------------------- 83 //-------------------------------------------------------------------------
87 84
88 'type': function() { 85 'type': function() {
89 return this._type; 86 return this._type;
90 }, 87 },
91 88
92 'setType': function(aValue) { 89 'setType': function(aValue) {
93 this._type = aValue; 90 this._type = aValue;
94 91
95 if (aValue == 'PWD') { 92 if (aValue == 'PWD') {
96 this.setHidden(true); 93 this.setHidden(true);
97 } else { 94 } else {
98 this.setHidden(false); 95 this.setHidden(false);
99 } 96 }
100 }, 97 },
101 98
102 //------------------------------------------------------------------------- 99 //-------------------------------------------------------------------------
103 100
104 'serializeData': function() { 101 'serializeData': function() {
105 var result; 102 var result;
106 103
107//MochiKit.Logging.logDebug(">>> RecordField.serializeData - " + this); 104//MochiKit.Logging.logDebug(">>> RecordField.serializeData - " + this);
108 result = { 105 result = {
109 label: this.label(), 106 label: this.label(),
110 value:this.value(), 107 value:this.value(),
111 type: this.type(), 108 type: this.type(),
112 hidden: this.hidden() 109 hidden: this.hidden()
113 }; 110 };
114//MochiKit.Logging.logDebug("<<< RecordField.serializeData"); 111//MochiKit.Logging.logDebug("<<< RecordField.serializeData");
115 112
116 return result; 113 return result;
117 }, 114 },
118 115
119 //------------------------------------------------------------------------- 116 //-------------------------------------------------------------------------
120 117
121 'typeShortDescription': function() { 118 'typeShortDescription': function() {
122 // return Clipperz.PM.DataModel.RecordField.TypeDescriptions[this.type()]['shortDescription']; 119 // return Clipperz.PM.DataModel.RecordField.TypeDescriptions[this.type()]['shortDescription'];
123 return Clipperz.PM.Strings['recordFieldTypologies'][this.type()]['shortDescription']; 120 return Clipperz.PM.Strings['recordFieldTypologies'][this.type()]['shortDescription'];
124 }, 121 },
125 122
126 //------------------------------------------------------------------------- 123 //-------------------------------------------------------------------------
127 124
128 'hidden': function() { 125 'hidden': function() {
129 return this._hidden; 126 return this._hidden;
130 }, 127 },
131 128
132 'setHidden': function(aValue) { 129 'setHidden': function(aValue) {
133 this._hidden = aValue; 130 this._hidden = aValue;
134 }, 131 },
135 132
136 //------------------------------------------------------------------------- 133 //-------------------------------------------------------------------------
137 134
138 'clone': function(aRecordVersion) { 135 'clone': function(aRecordVersion) {
139 var result; 136 var result;
140 137
141 result = new Clipperz.PM.DataModel.RecordField({ 138 result = new Clipperz.PM.DataModel.RecordField({
142 recordVersion:aRecordVersion, 139 recordVersion:aRecordVersion,
143 label:this.label(), 140 label:this.label(),
144 value:this.value(), 141 value:this.value(),
145 type:this.type(), 142 type:this.type(),
146 hidden:this.hidden() 143 hidden:this.hidden()
147 }); 144 });
148 145
149 return result; 146 return result;
150 }, 147 },
151 148
152 //------------------------------------------------------------------------- 149 //-------------------------------------------------------------------------
diff --git a/frontend/beta/js/Clipperz/PM/DataModel/RecordVersion.js b/frontend/beta/js/Clipperz/PM/DataModel/RecordVersion.js
index d2b3e12..fc4a45c 100644
--- a/frontend/beta/js/Clipperz/PM/DataModel/RecordVersion.js
+++ b/frontend/beta/js/Clipperz/PM/DataModel/RecordVersion.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; } 28if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; }
32 29
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.DataModel.RecordVersion = function(aRecord, args) { 33Clipperz.PM.DataModel.RecordVersion = function(aRecord, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 this._record = aRecord; 36 this._record = aRecord;
40 37
41 this._reference = args.reference || Clipperz.PM.Crypto.randomKey(); 38 this._reference = args.reference || Clipperz.PM.Crypto.randomKey();
42 this._version = args.version || Clipperz.PM.Crypto.encryptingFunctions.currentVersion; 39 this._version = args.version || Clipperz.PM.Crypto.encryptingFunctions.currentVersion;
43 this._key = args.key || Clipperz.PM.Crypto.randomKey();; 40 this._key = args.key || Clipperz.PM.Crypto.randomKey();;
44 41
45 this._previousVersion = args.previousVersion || null; 42 this._previousVersion = args.previousVersion || null;
46 this._previousVersionKey = args.previousVersionKey || null; 43 this._previousVersionKey = args.previousVersionKey || null;
47 44
48 this.setIsBrandNew(args.reference == null); 45 this.setIsBrandNew(args.reference == null);
49 46
50 if (this.isBrandNew()) { 47 if (this.isBrandNew()) {
51 this._fields = {}; 48 this._fields = {};
52 49
53 this.setShouldLoadData(false); 50 this.setShouldLoadData(false);
54 this.setShouldDecryptData(false); 51 this.setShouldDecryptData(false);
55 this.setShouldProcessData(false); 52 this.setShouldProcessData(false);
56 } else { 53 } else {
57 if (typeof(args.fields) != 'undefined') { 54 if (typeof(args.fields) != 'undefined') {
58 this.processFieldData(args.fields); 55 this.processFieldData(args.fields);
59 56
60 this.setShouldLoadData(false); 57 this.setShouldLoadData(false);
61 this.setShouldDecryptData(false); 58 this.setShouldDecryptData(false);
62 this.setShouldProcessData(false); 59 this.setShouldProcessData(false);
63 } else { 60 } else {
64 if (typeof(args.data) != 'undefined') { 61 if (typeof(args.data) != 'undefined') {
65 this.setShouldLoadData(false); 62 this.setShouldLoadData(false);
66 } else { 63 } else {
67 this.setShouldLoadData(true); 64 this.setShouldLoadData(true);
68 } 65 }
69 this.setShouldDecryptData(true); 66 this.setShouldDecryptData(true);
70 this.setShouldProcessData(true); 67 this.setShouldProcessData(true);
71 } 68 }
72 } 69 }
73 70
74 this._serverData = args.data; 71 this._serverData = args.data;
75 this._decryptedData = null; 72 this._decryptedData = null;
76 73
77 return this; 74 return this;
78} 75}
79 76
80Clipperz.PM.DataModel.RecordVersion.prototype = MochiKit.Base.update(null, { 77Clipperz.PM.DataModel.RecordVersion.prototype = MochiKit.Base.update(null, {
81 78
82 'toString': function() { 79 'toString': function() {
83 return "RecordVersion"; 80 return "RecordVersion";
84 }, 81 },
85 82
86 //------------------------------------------------------------------------- 83 //-------------------------------------------------------------------------
87 84
88 'record': function() { 85 'record': function() {
89 return this._record; 86 return this._record;
90 }, 87 },
91 88
92 //------------------------------------------------------------------------- 89 //-------------------------------------------------------------------------
93 90
94 'reference': function() { 91 'reference': function() {
95 return this._reference; 92 return this._reference;
96 }, 93 },
97 94
98 'setReference': function(aValue) { 95 'setReference': function(aValue) {
99 this._reference = aValue; 96 this._reference = aValue;
100 }, 97 },
101 98
102 //------------------------------------------------------------------------- 99 //-------------------------------------------------------------------------
103 100
104 'key': function() { 101 'key': function() {
105//MochiKit.Logging.logDebug(">>> RecordVersion.key"); 102//MochiKit.Logging.logDebug(">>> RecordVersion.key");
106//MochiKit.Logging.logDebug("--- RecordVersion.key - " + this._key); 103//MochiKit.Logging.logDebug("--- RecordVersion.key - " + this._key);
107 return this._key; 104 return this._key;
108 }, 105 },
109 106
110 'setKey': function(aValue) { 107 'setKey': function(aValue) {
111 this._key = aValue; 108 this._key = aValue;
112 }, 109 },
113 110
114 //------------------------------------------------------------------------- 111 //-------------------------------------------------------------------------
115 112
116 'serverData': function() { 113 'serverData': function() {
117 return this._serverData; 114 return this._serverData;
118 }, 115 },
119 116
120 'setServerData': function(aValue) { 117 'setServerData': function(aValue) {
121 this._serverData = aValue; 118 this._serverData = aValue;
122 this.setShouldLoadData(false); 119 this.setShouldLoadData(false);
123 return aValue; 120 return aValue;
124 }, 121 },
125 122
126 //------------------------------------------------------------------------- 123 //-------------------------------------------------------------------------
127 124
128 'decryptedData': function() { 125 'decryptedData': function() {
129//MochiKit.Logging.logDebug(">>> RecordVersion.decryptedData: " + (this._decryptedData ? Clipperz.Base.serializeJSON(aValue) : "null")); 126//MochiKit.Logging.logDebug(">>> RecordVersion.decryptedData: " + (this._decryptedData ? Clipperz.Base.serializeJSON(aValue) : "null"));
130 return this._decryptedData; 127 return this._decryptedData;
131 }, 128 },
132 129
133 'setDecryptedData': function(aValue) { 130 'setDecryptedData': function(aValue) {
134//MochiKit.Logging.logDebug(">>> RecordVersion.setDecryptedData: " + Clipperz.Base.serializeJSON(aValue)); 131//MochiKit.Logging.logDebug(">>> RecordVersion.setDecryptedData: " + Clipperz.Base.serializeJSON(aValue));
135 this._decryptedData = aValue; 132 this._decryptedData = aValue;
136 this.setShouldDecryptData(false); 133 this.setShouldDecryptData(false);
137 return aValue; 134 return aValue;
138 }, 135 },
139 136
140 //------------------------------------------------------------------------- 137 //-------------------------------------------------------------------------
141 138
142 'version': function() { 139 'version': function() {
143 return this._version; 140 return this._version;
144 }, 141 },
145 142
146 //------------------------------------------------------------------------- 143 //-------------------------------------------------------------------------
147 144
148 'isBrandNew': function() { 145 'isBrandNew': function() {
149 return this._isBrandNew; 146 return this._isBrandNew;
150 }, 147 },
151 148
152 'setIsBrandNew': function(aValue) { 149 'setIsBrandNew': function(aValue) {
diff --git a/frontend/beta/js/Clipperz/PM/DataModel/Statistics.js b/frontend/beta/js/Clipperz/PM/DataModel/Statistics.js
index fb5eb01..3d53adf 100644
--- a/frontend/beta/js/Clipperz/PM/DataModel/Statistics.js
+++ b/frontend/beta/js/Clipperz/PM/DataModel/Statistics.js
@@ -1,133 +1,130 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; } 28if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; }
32 29
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.DataModel.Statistics = function(args) { 33Clipperz.PM.DataModel.Statistics = function(args) {
37 args = args || {}; 34 args = args || {};
38 35
39 this._user = args.user; 36 this._user = args.user;
40 this._data = args.data || null; 37 this._data = args.data || null;
41 38
42 return this; 39 return this;
43} 40}
44 41
45Clipperz.PM.DataModel.Statistics.prototype = MochiKit.Base.update(null, { 42Clipperz.PM.DataModel.Statistics.prototype = MochiKit.Base.update(null, {
46 43
47 //------------------------------------------------------------------------- 44 //-------------------------------------------------------------------------
48 45
49 'decrypt': function(aVersion, someEncryptedData) { 46 'decrypt': function(aVersion, someEncryptedData) {
50 var deferredResult; 47 var deferredResult;
51 48
52//MochiKit.Logging.logDebug(">>> Statistics.decrypt"); 49//MochiKit.Logging.logDebug(">>> Statistics.decrypt");
53 if (someEncryptedData == Clipperz.PM.Crypto.nullValue) { 50 if (someEncryptedData == Clipperz.PM.Crypto.nullValue) {
54 this.setData({}); 51 this.setData({});
55 deferredResult = MochiKit.Async.succeed(this.data()); 52 deferredResult = MochiKit.Async.succeed(this.data());
56 } else { 53 } else {
57 varstatistic; 54 varstatistic;
58 var user; 55 var user;
59 56
60 statistic = this; 57 statistic = this;
61 user = this.user(); 58 user = this.user();
62 deferredResult = new MochiKit.Async.Deferred(); 59 deferredResult = new MochiKit.Async.Deferred();
63//deferredResult.addCallback(function() { console.time("Statistics.decrypt.deferredDecrypt")}); 60//deferredResult.addCallback(function() { console.time("Statistics.decrypt.deferredDecrypt")});
64 deferredResult.addCallback(Clipperz.PM.Crypto.deferredDecrypt, user.passphrase(), someEncryptedData, aVersion); 61 deferredResult.addCallback(Clipperz.PM.Crypto.deferredDecrypt, user.passphrase(), someEncryptedData, aVersion);
65//deferredResult.addCallback(function() { console.timeEnd("Statistics.decrypt.deferredDecrypt")}); 62//deferredResult.addCallback(function() { console.timeEnd("Statistics.decrypt.deferredDecrypt")});
66//deferredResult.addCallback(function() { console.time("Statistics.decrypt.setup")}); 63//deferredResult.addCallback(function() { console.time("Statistics.decrypt.setup")});
67 deferredResult.addCallbacks( 64 deferredResult.addCallbacks(
68 MochiKit.Base.partial(function (aStatistic, someData) { 65 MochiKit.Base.partial(function (aStatistic, someData) {
69 aStatistic.setData(someData); 66 aStatistic.setData(someData);
70 return aStatistic.data(); 67 return aStatistic.data();
71 }, statistic), 68 }, statistic),
72 MochiKit.Base.partial(function (aStatistic) { 69 MochiKit.Base.partial(function (aStatistic) {
73 MochiKit.Logging.logWarning("resetting user statistics due to an error while decrypting stored data"); 70 MochiKit.Logging.logWarning("resetting user statistics due to an error while decrypting stored data");
74 aStatistic.setData({}); 71 aStatistic.setData({});
75 return aStatistic.data(); 72 return aStatistic.data();
76 }, statistic) 73 }, statistic)
77 ); 74 );
78//deferredResult.addCallback(function() { console.timeEnd("Statistics.decrypt.setup")}); 75//deferredResult.addCallback(function() { console.timeEnd("Statistics.decrypt.setup")});
79 76
80 deferredResult.callback(); 77 deferredResult.callback();
81 } 78 }
82//MochiKit.Logging.logDebug("<<< Statistics.decrypt"); 79//MochiKit.Logging.logDebug("<<< Statistics.decrypt");
83 80
84 return deferredResult; 81 return deferredResult;
85 }, 82 },
86 83
87 //------------------------------------------------------------------------- 84 //-------------------------------------------------------------------------
88 85
89 'user': function() { 86 'user': function() {
90 return this._user; 87 return this._user;
91 }, 88 },
92 89
93 //------------------------------------------------------------------------- 90 //-------------------------------------------------------------------------
94 91
95 'data': function() { 92 'data': function() {
96 return this._data; 93 return this._data;
97 }, 94 },
98 95
99 'setData': function(aValue) { 96 'setData': function(aValue) {
100 this._data = aValue; 97 this._data = aValue;
101 98
102 this.extractInfoFromData(aValue); 99 this.extractInfoFromData(aValue);
103 }, 100 },
104 101
105 //------------------------------------------------------------------------- 102 //-------------------------------------------------------------------------
106 103
107 'extractInfoFromData': function(someValues) { 104 'extractInfoFromData': function(someValues) {
108 105
109 }, 106 },
110 107
111 //------------------------------------------------------------------------- 108 //-------------------------------------------------------------------------
112 109
113 'encryptedData': function() { 110 'encryptedData': function() {
114 return Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion(this.user().passphrase(), this.serializedData()); 111 return Clipperz.PM.Crypto.deferredEncryptWithCurrentVersion(this.user().passphrase(), this.serializedData());
115 }, 112 },
116 113
117 //------------------------------------------------------------------------- 114 //-------------------------------------------------------------------------
118 115
119 'serializedData': function() { 116 'serializedData': function() {
120 var result; 117 var result;
121 118
122//MochiKit.Logging.logDebug(">>> Statistics.serializedData"); 119//MochiKit.Logging.logDebug(">>> Statistics.serializedData");
123 result = {}; 120 result = {};
124//MochiKit.Logging.logDebug("<<< Statistics.serializedData"); 121//MochiKit.Logging.logDebug("<<< Statistics.serializedData");
125 122
126 return result; 123 return result;
127 }, 124 },
128 125
129 //------------------------------------------------------------------------- 126 //-------------------------------------------------------------------------
130 __syntaxFix__: "syntax fix" 127 __syntaxFix__: "syntax fix"
131 128
132}); 129});
133 130
diff --git a/frontend/beta/js/Clipperz/PM/DataModel/User.js b/frontend/beta/js/Clipperz/PM/DataModel/User.js
index 5aaaff7..dbbe9a0 100644
--- a/frontend/beta/js/Clipperz/PM/DataModel/User.js
+++ b/frontend/beta/js/Clipperz/PM/DataModel/User.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; } 28if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; }
32 29
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.DataModel.User = function(args) { 33Clipperz.PM.DataModel.User = function(args) {
37//MochiKit.Logging.logDebug(">>> new User"); 34//MochiKit.Logging.logDebug(">>> new User");
38 args = args || {}; 35 args = args || {};
39 36
40 this._username = args.username || null; 37 this._username = args.username || null;
41 this._passphrase = args.passphrase || null; 38 this._passphrase = args.passphrase || null;
42 39
43 this._connection = null; 40 this._connection = null;
44 this._connectionVersion = 'current'; 41 this._connectionVersion = 'current';
45 42
46 this._header = null; 43 this._header = null;
47 this._statistics = null; 44 this._statistics = null;
48 this._lock = 'new lock'; 45 this._lock = 'new lock';
49 46
50 this._preferences = null; 47 this._preferences = null;
51 this._records = {}; 48 this._records = {};
52 this._directLoginReferences = {}; 49 this._directLoginReferences = {};
53 this._oneTimePasswordManager = null; 50 this._oneTimePasswordManager = null;
54 51
55 this._isLoadingUserDetails = false; 52 this._isLoadingUserDetails = false;
56 this._loadingUserDetailsPendingQueue = []; 53 this._loadingUserDetailsPendingQueue = [];
57 54
58 this._maxNumberOfRecords = Number.MAX_VALUE; 55 this._maxNumberOfRecords = Number.MAX_VALUE;
59 56
60 this._shouldDownloadOfflineCopy = false; 57 this._shouldDownloadOfflineCopy = false;
61 58
62 this._loginInfo = null; 59 this._loginInfo = null;
63 this._loginHistory = null; 60 this._loginHistory = null;
64 61
65 this._serverData = null; 62 this._serverData = null;
66//MochiKit.Logging.logDebug("<<< new User"); 63//MochiKit.Logging.logDebug("<<< new User");
67 64
68 return this; 65 return this;
69} 66}
70 67
71Clipperz.PM.DataModel.User.prototype = MochiKit.Base.update(null, { 68Clipperz.PM.DataModel.User.prototype = MochiKit.Base.update(null, {
72 69
73 'toString': function() { 70 'toString': function() {
74 return "Clipperz.PM.DataModel.User - " + this.username(); 71 return "Clipperz.PM.DataModel.User - " + this.username();
75 }, 72 },
76 73
77 //------------------------------------------------------------------------- 74 //-------------------------------------------------------------------------
78 75
79 'username': function() { 76 'username': function() {
80 return this._username; 77 return this._username;
81 }, 78 },
82 79
83 'setUsername': function(aValue) { 80 'setUsername': function(aValue) {
84 this._username = aValue; 81 this._username = aValue;
85 }, 82 },
86 83
87 //------------------------------------------------------------------------- 84 //-------------------------------------------------------------------------
88 85
89 'passphrase': function() { 86 'passphrase': function() {
90 return this._passphrase; 87 return this._passphrase;
91 }, 88 },
92 89
93 'setPassphrase': function(aValue) { 90 'setPassphrase': function(aValue) {
94 this._passphrase = aValue; 91 this._passphrase = aValue;
95 }, 92 },
96 93
97 //------------------------------------------------------------------------- 94 //-------------------------------------------------------------------------
98 95
99 'maxNumberOfRecords': function() { 96 'maxNumberOfRecords': function() {
100 return this._maxNumberOfRecords; 97 return this._maxNumberOfRecords;
101 }, 98 },
102 99
103 'setMaxNumberOfRecords': function(aValue) { 100 'setMaxNumberOfRecords': function(aValue) {
104 this._maxNumberOfRecords = aValue; 101 this._maxNumberOfRecords = aValue;
105 }, 102 },
106 103
107 //------------------------------------------------------------------------- 104 //-------------------------------------------------------------------------
108 105
109 'errorHandler': function(anErrorString, anException) { 106 'errorHandler': function(anErrorString, anException) {
110MochiKit.Logging.logError("- User.errorHandler: " + anErrorString + " (" + anException + ")"); 107MochiKit.Logging.logError("- User.errorHandler: " + anErrorString + " (" + anException + ")");
111 }, 108 },
112 109
113 //------------------------------------------------------------------------- 110 //-------------------------------------------------------------------------
114 111
115 'connectionVersion': function() { 112 'connectionVersion': function() {
116 return this._connectionVersion; 113 return this._connectionVersion;
117 }, 114 },
118 115
119 'setConnectionVersion': function(aValue) { 116 'setConnectionVersion': function(aValue) {
120 this._connectionVersion = aValue; 117 this._connectionVersion = aValue;
121 }, 118 },
122 119
123 //------------------------------------------------------------------------- 120 //-------------------------------------------------------------------------
124 121
125 'connection': function() { 122 'connection': function() {
126 if ((this._connection == null) && (this.connectionVersion() != null) ){ 123 if ((this._connection == null) && (this.connectionVersion() != null) ){
127 this._connection = new Clipperz.PM.Crypto.communicationProtocol.versions[this.connectionVersion()]({user:this}); 124 this._connection = new Clipperz.PM.Crypto.communicationProtocol.versions[this.connectionVersion()]({user:this});
128 } 125 }
129 126
130 return this._connection; 127 return this._connection;
131 }, 128 },
132 129
133 'resetConnection': function(aValue) { 130 'resetConnection': function(aValue) {
134 this._connection = null; 131 this._connection = null;
135 }, 132 },
136 133
137 //========================================================================= 134 //=========================================================================
138 135
139 'register': function(anInvitationCode) { 136 'register': function(anInvitationCode) {
140 vardeferredResult; 137 vardeferredResult;
141 var prng; 138 var prng;
142 139
143//MochiKit.Logging.logError(">>> User.register: " + this); 140//MochiKit.Logging.logError(">>> User.register: " + this);
144 prng = Clipperz.Crypto.PRNG.defaultRandomGenerator(); 141 prng = Clipperz.Crypto.PRNG.defaultRandomGenerator();
145 142
146 deferredResult = new MochiKit.Async.Deferred() 143 deferredResult = new MochiKit.Async.Deferred()
147//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.register - 1: " + res); return res;}); 144//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.register - 1: " + res); return res;});
148 deferredResult.addCallback(MochiKit.Base.method(prng, 'deferredEntropyCollection')); 145 deferredResult.addCallback(MochiKit.Base.method(prng, 'deferredEntropyCollection'));
149//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.register - 2: " + res); return res;}); 146//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.register - 2: " + res); return res;});
150 deferredResult.addCallback(MochiKit.Base.method(this.header(), 'updateAllSections'), anInvitationCode); 147 deferredResult.addCallback(MochiKit.Base.method(this.header(), 'updateAllSections'), anInvitationCode);
151//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.register - 2.1: " + res); return res;}); 148//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("User.register - 2.1: " + res); return res;});
152 deferredResult.addCallback(MochiKit.Base.method(this.connection(), 'register'), anInvitationCode); 149 deferredResult.addCallback(MochiKit.Base.method(this.connection(), 'register'), anInvitationCode);
diff --git a/frontend/beta/js/Clipperz/PM/DataModel/UserPreferences.js b/frontend/beta/js/Clipperz/PM/DataModel/UserPreferences.js
index dc73ce1..9e80b3a 100644
--- a/frontend/beta/js/Clipperz/PM/DataModel/UserPreferences.js
+++ b/frontend/beta/js/Clipperz/PM/DataModel/UserPreferences.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; } 28if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; }
32 29
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.DataModel.UserPreferences = function(args) { 33Clipperz.PM.DataModel.UserPreferences = function(args) {
37 args = args || {}; 34 args = args || {};
38 35
39 this._user = args['user']; delete args['user']; 36 this._user = args['user']; delete args['user'];
40 this._config = args; 37 this._config = args;
41 38
42 return this; 39 return this;
43} 40}
44 41
45Clipperz.PM.DataModel.UserPreferences.prototype = MochiKit.Base.update(null, { 42Clipperz.PM.DataModel.UserPreferences.prototype = MochiKit.Base.update(null, {
46 43
47 //------------------------------------------------------------------------- 44 //-------------------------------------------------------------------------
48 45
49 'config': function() { 46 'config': function() {
50 return this._config; 47 return this._config;
51 }, 48 },
52 49
53 //------------------------------------------------------------------------- 50 //-------------------------------------------------------------------------
54 51
55 'user': function() { 52 'user': function() {
56 return this._user; 53 return this._user;
57 }, 54 },
58 55
59 //------------------------------------------------------------------------- 56 //-------------------------------------------------------------------------
60 57
61 'updateWithData': function(someValues) { 58 'updateWithData': function(someValues) {
62 var currentLanguage; 59 var currentLanguage;
63 60
64//MochiKit.Logging.logDebug(">>> Clipperz.PM.DataModel.UserPreferences.updateWithData: " + Clipperz.Base.serializeJSON(someValues)); 61//MochiKit.Logging.logDebug(">>> Clipperz.PM.DataModel.UserPreferences.updateWithData: " + Clipperz.Base.serializeJSON(someValues));
65 currentLanguage = this.preferredLanguage(); 62 currentLanguage = this.preferredLanguage();
66 63
67 MochiKit.Base.update(this._config, someValues); 64 MochiKit.Base.update(this._config, someValues);
68 65
69 if (this.preferredLanguage() != currentLanguage) { 66 if (this.preferredLanguage() != currentLanguage) {
70 Clipperz.PM.Strings.Languages.setSelectedLanguage(this.preferredLanguage()); 67 Clipperz.PM.Strings.Languages.setSelectedLanguage(this.preferredLanguage());
71 } else { 68 } else {
72//MochiKit.Logging.logDebug("### keepping the browser selected language: " + Clipperz.PM.Strings.selectedLanguage); 69//MochiKit.Logging.logDebug("### keepping the browser selected language: " + Clipperz.PM.Strings.selectedLanguage);
73 } 70 }
74 71
75 return this; 72 return this;
76 }, 73 },
77 74
78 //------------------------------------------------------------------------- 75 //-------------------------------------------------------------------------
79 76
80 'configValue': function(aConfigName, aDefaultValue) { 77 'configValue': function(aConfigName, aDefaultValue) {
81 var result; 78 var result;
82 79
83//MochiKit.Logging.logDebug(">>> UserPreferences.configValue - config: " + Clipperz.Base.serializeJSON(this.config())); 80//MochiKit.Logging.logDebug(">>> UserPreferences.configValue - config: " + Clipperz.Base.serializeJSON(this.config()));
84 if (typeof(this.config()[aConfigName]) == 'undefined') { 81 if (typeof(this.config()[aConfigName]) == 'undefined') {
85 result = aDefaultValue; 82 result = aDefaultValue;
86 } else { 83 } else {
87 result = this.config()[aConfigName]; 84 result = this.config()[aConfigName];
88 } 85 }
89//MochiKit.Logging.logDebug("<<< UserPreferences.configValue"); 86//MochiKit.Logging.logDebug("<<< UserPreferences.configValue");
90 87
91 return result; 88 return result;
92 }, 89 },
93 90
94 'setConfigValue': function(aConfigName, aValue) { 91 'setConfigValue': function(aConfigName, aValue) {
95 var result; 92 var result;
96 93
97 if (aValue != this.configValue(aConfigName)) { 94 if (aValue != this.configValue(aConfigName)) {
98 if (aValue == null) { 95 if (aValue == null) {
99 delete this.config()[aConfigName] 96 delete this.config()[aConfigName]
100 } else { 97 } else {
101 this.config()[aConfigName] = aValue; 98 this.config()[aConfigName] = aValue;
102 } 99 }
103 100
104 Clipperz.NotificationCenter.notify(this.user(), 'updatedSection', 'preferences', true); 101 Clipperz.NotificationCenter.notify(this.user(), 'updatedSection', 'preferences', true);
105 102
106 result = true; 103 result = true;
107 } else { 104 } else {
108 result = false; 105 result = false;
109 } 106 }
110 107
111 return result; 108 return result;
112 }, 109 },
113 110
114 //------------------------------------------------------------------------- 111 //-------------------------------------------------------------------------
115 112
116 'useSafeEditMode': function() { 113 'useSafeEditMode': function() {
117 return this.configValue('useSafeEditMode', true); 114 return this.configValue('useSafeEditMode', true);
118 }, 115 },
119 116
120 'setUseSafeEditMode': function(aValue) { 117 'setUseSafeEditMode': function(aValue) {
121 this.setConfigValue('useSafeEditMode', aValue); 118 this.setConfigValue('useSafeEditMode', aValue);
122 }, 119 },
123 120
124 //------------------------------------------------------------------------- 121 //-------------------------------------------------------------------------
125 122
126 'preferredLanguage': function() { 123 'preferredLanguage': function() {
127 return this.configValue('preferredLanguage', null); 124 return this.configValue('preferredLanguage', null);
128 }, 125 },
129 126
130 'setPreferredLanguage': function(aValue) { 127 'setPreferredLanguage': function(aValue) {
131 if (this.setConfigValue('preferredLanguage', aValue)) { 128 if (this.setConfigValue('preferredLanguage', aValue)) {
132 Clipperz.PM.Strings.Languages.setSelectedLanguage(this.preferredLanguage()); 129 Clipperz.PM.Strings.Languages.setSelectedLanguage(this.preferredLanguage());
133 } 130 }
134 }, 131 },
135 132
136 //------------------------------------------------------------------------- 133 //-------------------------------------------------------------------------
137 134
138 'shouldShowDonationPanel': function() { 135 'shouldShowDonationPanel': function() {
139 return this.configValue('shouldShowDonationPanel', true); 136 return this.configValue('shouldShowDonationPanel', true);
140 }, 137 },
141 138
142 'setShouldShowDonationPanel': function(aValue) { 139 'setShouldShowDonationPanel': function(aValue) {
143 this.setConfigValue('shouldShowDonationPanel', aValue); 140 this.setConfigValue('shouldShowDonationPanel', aValue);
144 }, 141 },
145 142
146 //------------------------------------------------------------------------- 143 //-------------------------------------------------------------------------
147 144
148 'disableUnsecureFaviconLoadingForIE': function() { 145 'disableUnsecureFaviconLoadingForIE': function() {
149 return this.configValue('disableUnsecureFaviconLoadingForIE', false); 146 return this.configValue('disableUnsecureFaviconLoadingForIE', false);
150 }, 147 },
151 148
152 'setDisableUnsecureFaviconLoadingForIE': function(aValue) { 149 'setDisableUnsecureFaviconLoadingForIE': function(aValue) {
diff --git a/frontend/beta/js/Clipperz/PM/Date.js b/frontend/beta/js/Clipperz/PM/Date.js
index 5e21340..13116e9 100644
--- a/frontend/beta/js/Clipperz/PM/Date.js
+++ b/frontend/beta/js/Clipperz/PM/Date.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Date) == 'undefined') { Clipperz.PM.Date = {}; } 28if (typeof(Clipperz.PM.Date) == 'undefined') { Clipperz.PM.Date = {}; }
32 29
33Clipperz.PM.Date.VERSION = "0.1"; 30Clipperz.PM.Date.VERSION = "0.1";
34Clipperz.PM.Date.NAME = "Clipperz.PM.Date"; 31Clipperz.PM.Date.NAME = "Clipperz.PM.Date";
35 32
36MochiKit.Base.update(Clipperz.PM.Date, { 33MochiKit.Base.update(Clipperz.PM.Date, {
37 34
38 '__repr__': function () { 35 '__repr__': function () {
39 return "[" + this.NAME + " " + this.VERSION + "]"; 36 return "[" + this.NAME + " " + this.VERSION + "]";
40 }, 37 },
41 38
42 //------------------------------------------------------------------------- 39 //-------------------------------------------------------------------------
43 40
44 'toString': function () { 41 'toString': function () {
45 return this.__repr__(); 42 return this.__repr__();
46 }, 43 },
47 44
48 //------------------------------------------------------------------------- 45 //-------------------------------------------------------------------------
49 46
50 'locale': function() { 47 'locale': function() {
51 return { 48 return {
52 'amDesignation':Clipperz.PM.Strings['calendarStrings']['amDesignation'], 49 'amDesignation':Clipperz.PM.Strings['calendarStrings']['amDesignation'],
53 'pmDesignation':Clipperz.PM.Strings['calendarStrings']['pmDesignation'], 50 'pmDesignation':Clipperz.PM.Strings['calendarStrings']['pmDesignation'],
54 'days': Clipperz.PM.Strings['calendarStrings']['days'], 51 'days': Clipperz.PM.Strings['calendarStrings']['days'],
55 'shortDays': Clipperz.PM.Strings['calendarStrings']['shortDays'], 52 'shortDays': Clipperz.PM.Strings['calendarStrings']['shortDays'],
56 'shortMonths': Clipperz.PM.Strings['calendarStrings']['shortMonths'], 53 'shortMonths': Clipperz.PM.Strings['calendarStrings']['shortMonths'],
57 'months': Clipperz.PM.Strings['calendarStrings']['months'] 54 'months': Clipperz.PM.Strings['calendarStrings']['months']
58 } 55 }
59 }, 56 },
60 57
61 //========================================================================= 58 //=========================================================================
62/* 59/*
63 'formatDateWithPHPLikeTemplate': function(aDate, aTemplate) { 60 'formatDateWithPHPLikeTemplate': function(aDate, aTemplate) {
64 return Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(aDate, aTemplate, Clipperz.PM.Date.locale()); 61 return Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(aDate, aTemplate, Clipperz.PM.Date.locale());
65 }, 62 },
66 63
67 'parseDateWithPHPLikeTemplate': function(aDate, aTemplate) { 64 'parseDateWithPHPLikeTemplate': function(aDate, aTemplate) {
68 return Clipperz.Date.parseDateWithPHPTemplateAndLocale(aDate, aTemplate, Clipperz.PM.Date.locale()); 65 return Clipperz.Date.parseDateWithPHPTemplateAndLocale(aDate, aTemplate, Clipperz.PM.Date.locale());
69 }, 66 },
70 67
71 //========================================================================= 68 //=========================================================================
72 69
73 'formatDateWithJavaLikeTemplate': function(aDate, aTemplate) { 70 'formatDateWithJavaLikeTemplate': function(aDate, aTemplate) {
74 return Clipperz.Date.formatDateWithJavaLikeTemplateAndLocale(aDate, aTemplate, Clipperz.PM.Date.locale()); 71 return Clipperz.Date.formatDateWithJavaLikeTemplateAndLocale(aDate, aTemplate, Clipperz.PM.Date.locale());
75 }, 72 },
76 73
77 'parseDateWithJavaLikeTemplate': function(aDate, aTemplate) { 74 'parseDateWithJavaLikeTemplate': function(aDate, aTemplate) {
78 return Clipperz.Date.parseDateWithJavaLikeTemplateAndLocale(aDate, aTemplate, Clipperz.PM.Date.locale()); 75 return Clipperz.Date.parseDateWithJavaLikeTemplateAndLocale(aDate, aTemplate, Clipperz.PM.Date.locale());
79 }, 76 },
80*/ 77*/
81 //========================================================================= 78 //=========================================================================
82 79
83 'formatDateWithTemplate': function(aDate, aTemplate) { 80 'formatDateWithTemplate': function(aDate, aTemplate) {
84 var result; 81 var result;
85 82
86 if (aDate == null) { 83 if (aDate == null) {
87 result = "" 84 result = ""
88 } else { 85 } else {
89 result = Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(aDate, aTemplate, Clipperz.PM.Date.locale()); 86 result = Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(aDate, aTemplate, Clipperz.PM.Date.locale());
90 }; 87 };
91 88
92 return result; 89 return result;
93 }, 90 },
94 91
95 'parseDateWithTemplate': function(aValue, aTemplate) { 92 'parseDateWithTemplate': function(aValue, aTemplate) {
96 return Clipperz.Date.parseDateWithPHPTemplateAndLocale(aValue, aTemplate, Clipperz.PM.Date.locale()); 93 return Clipperz.Date.parseDateWithPHPTemplateAndLocale(aValue, aTemplate, Clipperz.PM.Date.locale());
97 }, 94 },
98 95
99 //========================================================================= 96 //=========================================================================
100 97
101 'formatDateWithUTCFormat': function(aDate) { 98 'formatDateWithUTCFormat': function(aDate) {
102 return Clipperz.Date.formatDateWithUTCFormatAndLocale(aDate, Clipperz.PM.Date.locale()); 99 return Clipperz.Date.formatDateWithUTCFormatAndLocale(aDate, Clipperz.PM.Date.locale());
103 }, 100 },
104 101
105 'parseDateWithUTCFormat': function(aValue) { 102 'parseDateWithUTCFormat': function(aValue) {
106 var result; 103 var result;
107 104
108 if (aValue == null) { 105 if (aValue == null) {
109 result = null; 106 result = null;
110 } else { 107 } else {
111 result = Clipperz.Date.parseDateWithUTCFormatAndLocale(aValue, Clipperz.PM.Date.locale()); 108 result = Clipperz.Date.parseDateWithUTCFormatAndLocale(aValue, Clipperz.PM.Date.locale());
112 } 109 }
113 110
114 return result; 111 return result;
115 }, 112 },
116 113
117 //========================================================================= 114 //=========================================================================
118 115
119 'getElapsedTimeDescription': function(aDate) { 116 'getElapsedTimeDescription': function(aDate) {
120 var result; 117 var result;
121 118
122 result = "" 119 result = ""
123 120
124 if (aDate != null) { 121 if (aDate != null) {
125 var now; 122 var now;
126 var elapsedTime; 123 var elapsedTime;
127 124
128 var millisencondsInAMinute; 125 var millisencondsInAMinute;
129 var millisencondsInAnHour; 126 var millisencondsInAnHour;
130 var millisencondsInADay; 127 var millisencondsInADay;
131 var millisencondsInAWeek; 128 var millisencondsInAWeek;
132 var millisencondsInAMonth; 129 var millisencondsInAMonth;
133 130
134 now = new Date(); 131 now = new Date();
135 elapsedTime = now.getTime() - aDate.getTime(); 132 elapsedTime = now.getTime() - aDate.getTime();
136 133
137 millisencondsInAMinute = 60 * 1000; 134 millisencondsInAMinute = 60 * 1000;
138 millisencondsInAnHour = millisencondsInAMinute * 60; 135 millisencondsInAnHour = millisencondsInAMinute * 60;
139 millisencondsInADay = millisencondsInAnHour * 24; 136 millisencondsInADay = millisencondsInAnHour * 24;
140 millisencondsInAWeek = millisencondsInADay * 7; 137 millisencondsInAWeek = millisencondsInADay * 7;
141 millisencondsInAMonth = millisencondsInAWeek * 5; 138 millisencondsInAMonth = millisencondsInAWeek * 5;
142 139
143 if ((elapsedTime / millisencondsInAMonth) > 1) { 140 if ((elapsedTime / millisencondsInAMonth) > 1) {
144 result = Clipperz.PM.Strings['elapsedTimeDescriptions']['MORE_THAN_A_MONTH_AGO']; 141 result = Clipperz.PM.Strings['elapsedTimeDescriptions']['MORE_THAN_A_MONTH_AGO'];
145 } else if ((elapsedTime / millisencondsInAWeek) > 1) { 142 } else if ((elapsedTime / millisencondsInAWeek) > 1) {
146 var elapsedWeeks; 143 var elapsedWeeks;
147 144
148 elapsedWeeks = Math.floor((elapsedTime / millisencondsInAWeek)); 145 elapsedWeeks = Math.floor((elapsedTime / millisencondsInAWeek));
149 if (elapsedWeeks == 1) { 146 if (elapsedWeeks == 1) {
150 result = Clipperz.PM.Strings['elapsedTimeDescriptions']['MORE_THAN_A_WEEK_AGO']; 147 result = Clipperz.PM.Strings['elapsedTimeDescriptions']['MORE_THAN_A_WEEK_AGO'];
151 } else { 148 } else {
152 result = Clipprez.PM.Strings['elapsedTimeDescriptions']['MORE_THAN_*_WEEKS_AGO'].replace(/__elapsed__/, elapsedWeeks); 149 result = Clipprez.PM.Strings['elapsedTimeDescriptions']['MORE_THAN_*_WEEKS_AGO'].replace(/__elapsed__/, elapsedWeeks);
diff --git a/frontend/beta/js/Clipperz/PM/Main.js b/frontend/beta/js/Clipperz/PM/Main.js
index 9a068e1..989e0a4 100644
--- a/frontend/beta/js/Clipperz/PM/Main.js
+++ b/frontend/beta/js/Clipperz/PM/Main.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 26if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
30 27
31Clipperz.PM.VERSION = "0.1"; 28Clipperz.PM.VERSION = "0.1";
32Clipperz.PM.NAME = "Clipperz.PM"; 29Clipperz.PM.NAME = "Clipperz.PM";
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.PM.Main = function() { 33Clipperz.PM.Main = function() {
37 this._loginPanel = null; 34 this._loginPanel = null;
38 this._user = null; 35 this._user = null;
39 36
40 this._isRunningCompact = false; 37 this._isRunningCompact = false;
41 38
42 Clipperz.NotificationCenter.register(null, 'userConnected', this, 'userConnectedCallback'); 39 Clipperz.NotificationCenter.register(null, 'userConnected', this, 'userConnectedCallback');
43 Clipperz.NotificationCenter.register(null, 'switchLanguage', this, 'switchLanguageHandler'); 40 Clipperz.NotificationCenter.register(null, 'switchLanguage', this, 'switchLanguageHandler');
44 41
45 Clipperz.NotificationCenter.register(null, 'EXCEPTION', this, 'reportException'); 42 Clipperz.NotificationCenter.register(null, 'EXCEPTION', this, 'reportException');
46 43
47 return this; 44 return this;
48} 45}
49 46
50//============================================================================= 47//=============================================================================
51 48
52MochiKit.Base.update(Clipperz.PM.Main.prototype, { 49MochiKit.Base.update(Clipperz.PM.Main.prototype, {
53 'toString': function() { 50 'toString': function() {
54 return "Clipperz.PM.Main"; 51 return "Clipperz.PM.Main";
55 }, 52 },
56 53
57 'switchLanguageHandler': function() { 54 'switchLanguageHandler': function() {
58//MochiKit.Logging.logDebug(">>> main.switchLanguageHandler"); 55//MochiKit.Logging.logDebug(">>> main.switchLanguageHandler");
59 YAHOO.ext.Element.get('donateHeaderIconLink').dom.href = Clipperz.PM.Strings['donateHeaderLinkUrl']; 56 YAHOO.ext.Element.get('donateHeaderIconLink').dom.href = Clipperz.PM.Strings['donateHeaderLinkUrl'];
60 YAHOO.ext.Element.get('donateHeaderLink').update(Clipperz.PM.Strings['donateHeaderLinkLabel']).dom.href = Clipperz.PM.Strings['donateHeaderLinkUrl']; 57 YAHOO.ext.Element.get('donateHeaderLink').update(Clipperz.PM.Strings['donateHeaderLinkLabel']).dom.href = Clipperz.PM.Strings['donateHeaderLinkUrl'];
61 YAHOO.ext.Element.get('creditsHeaderLink').update(Clipperz.PM.Strings['creditsHeaderLinkLabel']).dom.href = Clipperz.PM.Strings['creditsHeaderLinkUrl']; 58 YAHOO.ext.Element.get('creditsHeaderLink').update(Clipperz.PM.Strings['creditsHeaderLinkLabel']).dom.href = Clipperz.PM.Strings['creditsHeaderLinkUrl'];
62 YAHOO.ext.Element.get('feedbackHeaderLink').update(Clipperz.PM.Strings['feedbackHeaderLinkLabel']).dom.href = Clipperz.PM.Strings['feedbackHeaderLinkUrl']; 59 YAHOO.ext.Element.get('feedbackHeaderLink').update(Clipperz.PM.Strings['feedbackHeaderLinkLabel']).dom.href = Clipperz.PM.Strings['feedbackHeaderLinkUrl'];
63 YAHOO.ext.Element.get('helpHeaderLink').update(Clipperz.PM.Strings['helpHeaderLinkLabel']).dom.href = Clipperz.PM.Strings['helpHeaderLinkUrl']; 60 YAHOO.ext.Element.get('helpHeaderLink').update(Clipperz.PM.Strings['helpHeaderLinkLabel']).dom.href = Clipperz.PM.Strings['helpHeaderLinkUrl'];
64 YAHOO.ext.Element.get('forumHeaderLink').update(Clipperz.PM.Strings['forumHeaderLinkLabel']).dom.href = Clipperz.PM.Strings['forumHeaderLinkUrl']; 61 YAHOO.ext.Element.get('forumHeaderLink').update(Clipperz.PM.Strings['forumHeaderLinkLabel']).dom.href = Clipperz.PM.Strings['forumHeaderLinkUrl'];
65 62
66 if (YAHOO.ext.Element.get('logout') != null) { 63 if (YAHOO.ext.Element.get('logout') != null) {
67 YAHOO.ext.Element.get('logout').update(Clipperz.PM.Strings['logoutMenuLabel']); 64 YAHOO.ext.Element.get('logout').update(Clipperz.PM.Strings['logoutMenuLabel']);
68 YAHOO.ext.Element.get('lock').update(Clipperz.PM.Strings['lockMenuLabel']); 65 YAHOO.ext.Element.get('lock').update(Clipperz.PM.Strings['lockMenuLabel']);
69 66
70 YAHOO.ext.Element.get('recordsTabAnchor').update(Clipperz.PM.Strings['recordMenuLabel']); 67 YAHOO.ext.Element.get('recordsTabAnchor').update(Clipperz.PM.Strings['recordMenuLabel']);
71 YAHOO.ext.Element.get('accountTabAnchor').update(Clipperz.PM.Strings['accountMenuLabel']); 68 YAHOO.ext.Element.get('accountTabAnchor').update(Clipperz.PM.Strings['accountMenuLabel']);
72 YAHOO.ext.Element.get('dataTabAnchor').update(Clipperz.PM.Strings['dataMenuLabel']); 69 YAHOO.ext.Element.get('dataTabAnchor').update(Clipperz.PM.Strings['dataMenuLabel']);
73 // YAHOO.ext.Element.get('contactsTabAnchor').update(Clipperz.PM.Strings['contactsMenuLabel']); 70 // YAHOO.ext.Element.get('contactsTabAnchor').update(Clipperz.PM.Strings['contactsMenuLabel']);
74 YAHOO.ext.Element.get('toolsTabAnchor').update(Clipperz.PM.Strings['toolsMenuLabel']); 71 YAHOO.ext.Element.get('toolsTabAnchor').update(Clipperz.PM.Strings['toolsMenuLabel']);
75 } 72 }
76//MochiKit.Logging.logDebug("<<< main.switchLanguageHandler"); 73//MochiKit.Logging.logDebug("<<< main.switchLanguageHandler");
77 }, 74 },
78 75
79 //------------------------------------------------------------------------- 76 //-------------------------------------------------------------------------
80 77
81 'fixToDrawTheMainTabsCorrectlyOnSafari': function() { 78 'fixToDrawTheMainTabsCorrectlyOnSafari': function() {
82 this.switchLanguageHandler(); 79 this.switchLanguageHandler();
83 }, 80 },
84 81
85 //------------------------------------------------------------------------- 82 //-------------------------------------------------------------------------
86 83
87 'run': function(shouldShowRegistrationForm) { 84 'run': function(shouldShowRegistrationForm) {
88 varmainElement; 85 varmainElement;
89 86
90 Clipperz.NotificationCenter.register(null, 'updatedProgressState', this, 'updateProgressDialogStatus'); 87 Clipperz.NotificationCenter.register(null, 'updatedProgressState', this, 'updateProgressDialogStatus');
91 88
92 YAHOO.ext.Element.get('recordDetailEditModeHeaderMask').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide().unmask(); 89 YAHOO.ext.Element.get('recordDetailEditModeHeaderMask').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide().unmask();
93 YAHOO.ext.Element.get('recordDetailEditModeVerticalMask').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide().unmask(); 90 YAHOO.ext.Element.get('recordDetailEditModeVerticalMask').setVisibilityMode(YAHOO.ext.Element.DISPLAY).hide().unmask();
94 91
95//MochiKit.Logging.logDebug(">>> Main.run"); 92//MochiKit.Logging.logDebug(">>> Main.run");
96 mainElement = YAHOO.ext.Element.get('main'); 93 mainElement = YAHOO.ext.Element.get('main');
97 if (Clipperz.PM.Proxy.defaultProxy.isReadOnly()) { 94 if (Clipperz.PM.Proxy.defaultProxy.isReadOnly()) {
98 YAHOO.ext.Element.get('applicationVersionType').dom.className = "readOnly"; 95 YAHOO.ext.Element.get('applicationVersionType').dom.className = "readOnly";
99 } 96 }
100 mainElement.update(""); 97 mainElement.update("");
101 98
102 Clipperz.YUI.DomHelper.append(mainElement.dom, {tag:'ul', cls:'clipperzTabPanels', children:[ 99 Clipperz.YUI.DomHelper.append(mainElement.dom, {tag:'ul', cls:'clipperzTabPanels', children:[
103 {tag:'li', id:'loginPanel'} 100 {tag:'li', id:'loginPanel'}
104 ]}) 101 ]})
105 102
106 this.setLoginPanel(new Clipperz.PM.Components.Panels.LoginPanel(YAHOO.ext.Element.get('loginPanel'))); 103 this.setLoginPanel(new Clipperz.PM.Components.Panels.LoginPanel(YAHOO.ext.Element.get('loginPanel')));
107 104
108//MochiKit.Logging.logDebug("--- Main.run - selecting active form to show ..."); 105//MochiKit.Logging.logDebug("--- Main.run - selecting active form to show ...");
109 if (shouldShowRegistrationForm == true) { 106 if (shouldShowRegistrationForm == true) {
110 this.loginPanel().showRegistrationForm(false); 107 this.loginPanel().showRegistrationForm(false);
111 } else { 108 } else {
112 this.loginPanel().showLoginForm(false); 109 this.loginPanel().showLoginForm(false);
113 } 110 }
114 111
115 this.switchLanguageHandler(); 112 this.switchLanguageHandler();
116//MochiKit.Logging.logDebug("--- Main.run - selecting active form to show. done."); 113//MochiKit.Logging.logDebug("--- Main.run - selecting active form to show. done.");
117//MochiKit.Logging.logDebug("<<< Main.run"); 114//MochiKit.Logging.logDebug("<<< Main.run");
118 }, 115 },
119 116
120 //------------------------------------------------------------------------- 117 //-------------------------------------------------------------------------
121 118
122 'runCompact': function() { 119 'runCompact': function() {
123 this.setIsRunningCompact(true); 120 this.setIsRunningCompact(true);
124 YAHOO.ext.Element.get(document.body).addClass("compact"); 121 YAHOO.ext.Element.get(document.body).addClass("compact");
125 new Clipperz.PM.Components.Compact.LoginForm(YAHOO.ext.Element.get('mainDiv')); 122 new Clipperz.PM.Components.Compact.LoginForm(YAHOO.ext.Element.get('mainDiv'));
126 }, 123 },
127 124
128 'showCompactInterface': function() { 125 'showCompactInterface': function() {
129//MochiKit.Logging.logDebug(">>> main.showCompactInterface"); 126//MochiKit.Logging.logDebug(">>> main.showCompactInterface");
130 new Clipperz.PM.Components.Compact.CompactInterface(YAHOO.ext.Element.get('compactBody'), {user:this.user()}); 127 new Clipperz.PM.Components.Compact.CompactInterface(YAHOO.ext.Element.get('compactBody'), {user:this.user()});
131//MochiKit.Logging.logDebug("<<< main.showCompactInterface"); 128//MochiKit.Logging.logDebug("<<< main.showCompactInterface");
132 }, 129 },
133 130
134 //------------------------------------------------------------------------- 131 //-------------------------------------------------------------------------
135 132
136 'mainPage': function() { 133 'mainPage': function() {
137 if (this._mainPage == null) { 134 if (this._mainPage == null) {
138 this._mainPage = new Clipperz.PM.Components.MainPage(); 135 this._mainPage = new Clipperz.PM.Components.MainPage();
139 } 136 }
140 137
141 return this._mainPage; 138 return this._mainPage;
142 }, 139 },
143 140
144 //------------------------------------------------------------------------- 141 //-------------------------------------------------------------------------
145 142
146 'loginPanel': function() { 143 'loginPanel': function() {
147 return this._loginPanel; 144 return this._loginPanel;
148 }, 145 },
149 146
150 'setLoginPanel': function(aValue) { 147 'setLoginPanel': function(aValue) {
151 this._loginPanel = aValue; 148 this._loginPanel = aValue;
152 }, 149 },
diff --git a/frontend/beta/js/Clipperz/PM/Proxy.js b/frontend/beta/js/Clipperz/PM/Proxy.js
index d05a5e0..f476196 100644
--- a/frontend/beta/js/Clipperz/PM/Proxy.js
+++ b/frontend/beta/js/Clipperz/PM/Proxy.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31 28
32//============================================================================= 29//=============================================================================
33 30
34Clipperz.PM.Proxy = function(args) { 31Clipperz.PM.Proxy = function(args) {
35 args = args || {}; 32 args = args || {};
36 33
37 this._shouldPayTolls = args.shouldPayTolls || false; 34 this._shouldPayTolls = args.shouldPayTolls || false;
38 35
39 this._tolls = { 36 this._tolls = {
40 'CONNECT':[], 37 'CONNECT':[],
41 'REGISTER':[], 38 'REGISTER':[],
42 'MESSAGE':[] 39 'MESSAGE':[]
43 }; 40 };
44 41
45 if (args.isDefault === true) { 42 if (args.isDefault === true) {
46 Clipperz.PM.Proxy.defaultProxy = this; 43 Clipperz.PM.Proxy.defaultProxy = this;
47 } 44 }
48 45
49 return this; 46 return this;
50} 47}
51 48
52Clipperz.PM.Proxy.prototype = MochiKit.Base.update(null, { 49Clipperz.PM.Proxy.prototype = MochiKit.Base.update(null, {
53 50
54 'toString': function() { 51 'toString': function() {
55 return "Clipperz.PM.Proxy"; 52 return "Clipperz.PM.Proxy";
56 }, 53 },
57 54
58 //========================================================================= 55 //=========================================================================
59 56
60 'shouldPayTolls': function() { 57 'shouldPayTolls': function() {
61 return this._shouldPayTolls; 58 return this._shouldPayTolls;
62 }, 59 },
63 60
64 //------------------------------------------------------------------------- 61 //-------------------------------------------------------------------------
65 62
66 'tolls': function() { 63 'tolls': function() {
67 return this._tolls; 64 return this._tolls;
68 }, 65 },
69 66
70 //------------------------------------------------------------------------- 67 //-------------------------------------------------------------------------
71 68
72 'payToll': function(aRequestType, someParameters) { 69 'payToll': function(aRequestType, someParameters) {
73 vardeferredResult; 70 vardeferredResult;
74 71
75//console.log(">>> Proxy.payToll", aRequestType, someParameters); 72//console.log(">>> Proxy.payToll", aRequestType, someParameters);
76 if (this.shouldPayTolls()) { 73 if (this.shouldPayTolls()) {
77 deferredResult = new MochiKit.Async.Deferred(); 74 deferredResult = new MochiKit.Async.Deferred();
78 75
79 if (this.tolls()[aRequestType].length == 0) { 76 if (this.tolls()[aRequestType].length == 0) {
80 deferredResult.addCallback(MochiKit.Base.method(this, 'sendMessage', 'knock', {requestType:aRequestType})); 77 deferredResult.addCallback(MochiKit.Base.method(this, 'sendMessage', 'knock', {requestType:aRequestType}));
81 deferredResult.addCallback(MochiKit.Base.method(this, 'setTollCallback')); 78 deferredResult.addCallback(MochiKit.Base.method(this, 'setTollCallback'));
82 } 79 }
83 deferredResult.addCallback(MochiKit.Base.method(this.tolls()[aRequestType], 'pop')); 80 deferredResult.addCallback(MochiKit.Base.method(this.tolls()[aRequestType], 'pop'));
84 deferredResult.addCallback(MochiKit.Base.methodcaller('deferredPay')); 81 deferredResult.addCallback(MochiKit.Base.methodcaller('deferredPay'));
85 deferredResult.addCallback(function(aToll) { 82 deferredResult.addCallback(function(aToll) {
86 var result; 83 var result;
87 84
88 result = { 85 result = {
89 parameters: someParameters, 86 parameters: someParameters,
90 toll: aToll 87 toll: aToll
91 } 88 }
92 89
93 return result; 90 return result;
94 }); 91 });
95 92
96 deferredResult.callback(); 93 deferredResult.callback();
97 } else { 94 } else {
98 deferredResult = MochiKit.Async.succeed({parameters:someParameters}); 95 deferredResult = MochiKit.Async.succeed({parameters:someParameters});
99 } 96 }
100//console.log("<<< Proxy.payToll"); 97//console.log("<<< Proxy.payToll");
101 98
102 return deferredResult; 99 return deferredResult;
103 }, 100 },
104 101
105 //------------------------------------------------------------------------- 102 //-------------------------------------------------------------------------
106 103
107 'addToll': function(aToll) { 104 'addToll': function(aToll) {
108//console.log(">>> Proxy.addToll", aToll); 105//console.log(">>> Proxy.addToll", aToll);
109 this.tolls()[aToll.requestType()].push(aToll); 106 this.tolls()[aToll.requestType()].push(aToll);
110//console.log("<<< Proxy.addToll"); 107//console.log("<<< Proxy.addToll");
111 }, 108 },
112 109
113 //========================================================================= 110 //=========================================================================
114 111
115 'setTollCallback': function(someParameters) { 112 'setTollCallback': function(someParameters) {
116//console.log(">>> Proxy.setTollCallback", someParameters); 113//console.log(">>> Proxy.setTollCallback", someParameters);
117 if (typeof(someParameters['toll']) != 'undefined') { 114 if (typeof(someParameters['toll']) != 'undefined') {
118//console.log("added a new toll", someParameters['toll']); 115//console.log("added a new toll", someParameters['toll']);
119 this.addToll(new Clipperz.PM.Toll(someParameters['toll'])); 116 this.addToll(new Clipperz.PM.Toll(someParameters['toll']));
120 } 117 }
121//console.log("<<< Proxy.setTallCallback", someParameters['result']); 118//console.log("<<< Proxy.setTallCallback", someParameters['result']);
122 //return someParameters['result']; 119 //return someParameters['result'];
123 return someParameters; 120 return someParameters;
124 }, 121 },
125 122
126 //========================================================================= 123 //=========================================================================
127 124
128 'registration': function (someParameters) { 125 'registration': function (someParameters) {
129 return this.processMessage('registration', someParameters, 'REGISTER'); 126 return this.processMessage('registration', someParameters, 'REGISTER');
130 }, 127 },
131 128
132 'handshake': function (someParameters) { 129 'handshake': function (someParameters) {
133 return this.processMessage('handshake', someParameters, 'CONNECT'); 130 return this.processMessage('handshake', someParameters, 'CONNECT');
134 }, 131 },
135 132
136 'message': function (someParameters) { 133 'message': function (someParameters) {
137 return this.processMessage('message', someParameters, 'MESSAGE'); 134 return this.processMessage('message', someParameters, 'MESSAGE');
138 }, 135 },
139 136
140 'logout': function (someParameters) { 137 'logout': function (someParameters) {
141 return this.processMessage('logout', someParameters, 'MESSAGE'); 138 return this.processMessage('logout', someParameters, 'MESSAGE');
142 }, 139 },
143 140
144 //========================================================================= 141 //=========================================================================
145 142
146 'processMessage': function (aFunctionName, someParameters, aRequestType) { 143 'processMessage': function (aFunctionName, someParameters, aRequestType) {
147 vardeferredResult; 144 vardeferredResult;
148 145
149 deferredResult = new MochiKit.Async.Deferred(); 146 deferredResult = new MochiKit.Async.Deferred();
150 deferredResult.addCallback(MochiKit.Base.method(this, 'payToll', aRequestType)); 147 deferredResult.addCallback(MochiKit.Base.method(this, 'payToll', aRequestType));
151 deferredResult.addCallback(MochiKit.Base.method(this, 'sendMessage', aFunctionName)); 148 deferredResult.addCallback(MochiKit.Base.method(this, 'sendMessage', aFunctionName));
152 deferredResult.addCallback(MochiKit.Base.method(this, 'setTollCallback')); 149 deferredResult.addCallback(MochiKit.Base.method(this, 'setTollCallback'));
diff --git a/frontend/beta/js/Clipperz/PM/Proxy/Proxy.JSON.js b/frontend/beta/js/Clipperz/PM/Proxy/Proxy.JSON.js
index 889e1f1..4f3b4b2 100755
--- a/frontend/beta/js/Clipperz/PM/Proxy/Proxy.JSON.js
+++ b/frontend/beta/js/Clipperz/PM/Proxy/Proxy.JSON.js
@@ -1,100 +1,97 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31 28
32//============================================================================= 29//=============================================================================
33 30
34Clipperz.PM.Proxy.JSON = function(args) { 31Clipperz.PM.Proxy.JSON = function(args) {
35 Clipperz.PM.Proxy.JSON.superclass.constructor.call(this, args); 32 Clipperz.PM.Proxy.JSON.superclass.constructor.call(this, args);
36 33
37 this._url = args.url || Clipperz.Base.exception.raise('MandatoryParameter'); 34 this._url = args.url || Clipperz.Base.exception.raise('MandatoryParameter');
38 35
39 return this; 36 return this;
40} 37}
41 38
42YAHOO.extendX(Clipperz.PM.Proxy.JSON, Clipperz.PM.Proxy, { 39YAHOO.extendX(Clipperz.PM.Proxy.JSON, Clipperz.PM.Proxy, {
43 40
44 'toString': function() { 41 'toString': function() {
45 return "Clipperz.PM.Proxy.JSON"; 42 return "Clipperz.PM.Proxy.JSON";
46 }, 43 },
47 44
48 //========================================================================= 45 //=========================================================================
49 46
50 'url': function () { 47 'url': function () {
51 return this._url; 48 return this._url;
52 }, 49 },
53 50
54 //========================================================================= 51 //=========================================================================
55 52
56 'sendMessage': function(aFunctionName, someParameters) { 53 'sendMessage': function(aFunctionName, someParameters) {
57 vardeferredResult; 54 vardeferredResult;
58 var parameters; 55 var parameters;
59 56
60 parameters = { 57 parameters = {
61 method: aFunctionName, 58 method: aFunctionName,
62 // version: someParameters['version'], 59 // version: someParameters['version'],
63 // message: someParameters['message'], 60 // message: someParameters['message'],
64 parameters: Clipperz.Base.serializeJSON(someParameters) 61 parameters: Clipperz.Base.serializeJSON(someParameters)
65 }; 62 };
66 63
67 deferredResult = new MochiKit.Async.Deferred(); 64 deferredResult = new MochiKit.Async.Deferred();
68 deferredResult.addCallback(function (aValue) { 65 deferredResult.addCallback(function (aValue) {
69 MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'remoteRequestSent'); 66 MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'remoteRequestSent');
70 return aValue; 67 return aValue;
71 }); 68 });
72 deferredResult.addCallback(MochiKit.Async.doXHR, this.url(), { 69 deferredResult.addCallback(MochiKit.Async.doXHR, this.url(), {
73 method:'POST', 70 method:'POST',
74 sendContent:MochiKit.Base.queryString(parameters), 71 sendContent:MochiKit.Base.queryString(parameters),
75 headers:{"Content-Type":"application/x-www-form-urlencoded"} 72 headers:{"Content-Type":"application/x-www-form-urlencoded"}
76 }); 73 });
77 deferredResult.addCallback(function (aValue) { 74 deferredResult.addCallback(function (aValue) {
78 MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'remoteRequestReceived'); 75 MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'remoteRequestReceived');
79 return aValue; 76 return aValue;
80 }); 77 });
81 // deferredResult.addCallback(MochiKit.Async.evalJSONRequest); 78 // deferredResult.addCallback(MochiKit.Async.evalJSONRequest);
82 deferredResult.addCallback(MochiKit.Base.itemgetter('responseText')); 79 deferredResult.addCallback(MochiKit.Base.itemgetter('responseText'));
83 deferredResult.addCallback(Clipperz.Base.evalJSON); 80 deferredResult.addCallback(Clipperz.Base.evalJSON);
84 deferredResult.addCallback(function (someValues) { 81 deferredResult.addCallback(function (someValues) {
85 if (someValues['result'] == 'EXCEPTION') { 82 if (someValues['result'] == 'EXCEPTION') {
86 throw someValues['message']; 83 throw someValues['message'];
87 } 84 }
88 85
89 return someValues; 86 return someValues;
90 }) 87 })
91 // return MochiKit.Base.evalJSON(req.responseText); 88 // return MochiKit.Base.evalJSON(req.responseText);
92 deferredResult.callback(); 89 deferredResult.callback();
93 90
94 return deferredResult; 91 return deferredResult;
95 }, 92 },
96 93
97 //========================================================================= 94 //=========================================================================
98 __syntaxFix__: "syntax fix" 95 __syntaxFix__: "syntax fix"
99 96
100}); 97});
diff --git a/frontend/beta/js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js b/frontend/beta/js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js
index 4d3ba08..d5336be 100644
--- a/frontend/beta/js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js
+++ b/frontend/beta/js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29try { if (typeof(Clipperz.PM.Proxy.Offline) == 'undefined') { throw ""; }} catch (e) { 26try { if (typeof(Clipperz.PM.Proxy.Offline) == 'undefined') { throw ""; }} catch (e) {
30 throw "Clipperz.PM.Proxy.Offline.DataStore depends on Clipperz.PM.Proxy.Offline!"; 27 throw "Clipperz.PM.Proxy.Offline.DataStore depends on Clipperz.PM.Proxy.Offline!";
31} 28}
32 29
33//============================================================================= 30//=============================================================================
34 31
35Clipperz.PM.Proxy.Offline.DataStore = function(args) { 32Clipperz.PM.Proxy.Offline.DataStore = function(args) {
36 args = args || {}; 33 args = args || {};
37 34
38 this._data = args.data || (typeof(_clipperz_dump_data_) != 'undefined' ? _clipperz_dump_data_ : null); 35 this._data = args.data || (typeof(_clipperz_dump_data_) != 'undefined' ? _clipperz_dump_data_ : null);
39 this._isReadOnly = (typeof(args.readOnly) == 'undefined' ? true : args.readOnly); 36 this._isReadOnly = (typeof(args.readOnly) == 'undefined' ? true : args.readOnly);
40 this._shouldPayTolls = args.shouldPayTolls || false; 37 this._shouldPayTolls = args.shouldPayTolls || false;
41 38
42 this._tolls = {}; 39 this._tolls = {};
43 this._connections = {}; 40 this._connections = {};
44 41
45 this._b = null; 42 this._b = null;
46 this._B = null; 43 this._B = null;
47 this._A = null; 44 this._A = null;
48 this._userData = null; 45 this._userData = null;
49 46
50 return this; 47 return this;
51} 48}
52 49
53//Clipperz.Base.extend(Clipperz.PM.Proxy.Offline.DataStore, Object, { 50//Clipperz.Base.extend(Clipperz.PM.Proxy.Offline.DataStore, Object, {
54Clipperz.PM.Proxy.Offline.DataStore.prototype = MochiKit.Base.update(null, { 51Clipperz.PM.Proxy.Offline.DataStore.prototype = MochiKit.Base.update(null, {
55 52
56 //------------------------------------------------------------------------- 53 //-------------------------------------------------------------------------
57 54
58 'isReadOnly': function () { 55 'isReadOnly': function () {
59 return this._isReadOnly; 56 return this._isReadOnly;
60 }, 57 },
61 58
62 //------------------------------------------------------------------------- 59 //-------------------------------------------------------------------------
63 60
64 'shouldPayTolls': function() { 61 'shouldPayTolls': function() {
65 return this._shouldPayTolls; 62 return this._shouldPayTolls;
66 }, 63 },
67 64
68 //------------------------------------------------------------------------- 65 //-------------------------------------------------------------------------
69 66
70 'data': function () { 67 'data': function () {
71 return this._data; 68 return this._data;
72 }, 69 },
73 70
74 //------------------------------------------------------------------------- 71 //-------------------------------------------------------------------------
75 72
76 'tolls': function () { 73 'tolls': function () {
77 return this._tolls; 74 return this._tolls;
78 }, 75 },
79 76
80 //------------------------------------------------------------------------- 77 //-------------------------------------------------------------------------
81 78
82 'connections': function () { 79 'connections': function () {
83 return this._connections; 80 return this._connections;
84 }, 81 },
85 82
86 //========================================================================= 83 //=========================================================================
87 84
88 'resetData': function() { 85 'resetData': function() {
89 this._data = { 86 this._data = {
90 'users': { 87 'users': {
91 'catchAllUser': { 88 'catchAllUser': {
92 __masterkey_test_value__: 'masterkey', 89 __masterkey_test_value__: 'masterkey',
93 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00', 90 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00',
94 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00' 91 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00'
95 } 92 }
96 } 93 }
97 }; 94 };
98 }, 95 },
99 96
100 //------------------------------------------------------------------------- 97 //-------------------------------------------------------------------------
101 98
102 'setupWithEncryptedData': function(someData) { 99 'setupWithEncryptedData': function(someData) {
103 this._data = Clipperz.Base.deepClone(someData); 100 this._data = Clipperz.Base.deepClone(someData);
104 }, 101 },
105 102
106 //------------------------------------------------------------------------- 103 //-------------------------------------------------------------------------
107 104
108 'setupWithData': function(someData) { 105 'setupWithData': function(someData) {
109 var deferredResult; 106 var deferredResult;
110 var resultData; 107 var resultData;
111 var i, c; 108 var i, c;
112 109
113//Clipperz.log(">>> Proxy.Test.setupWithData"); 110//Clipperz.log(">>> Proxy.Test.setupWithData");
114 resultData = this._data; 111 resultData = this._data;
115 112
116 deferredResult = new MochiKit.Async.Deferred(); 113 deferredResult = new MochiKit.Async.Deferred();
117 c = someData['users'].length; 114 c = someData['users'].length;
118 115
119 for (i=0; i<c; i++) { 116 for (i=0; i<c; i++) {
120 varnewConnection; 117 varnewConnection;
121 varrecordConfiguration; 118 varrecordConfiguration;
122 119
123 deferredResult.addCallback(MochiKit.Base.method(this, 'userSerializedEncryptedData', someData['users'][i])); 120 deferredResult.addCallback(MochiKit.Base.method(this, 'userSerializedEncryptedData', someData['users'][i]));
124 deferredResult.addCallback(MochiKit.Base.bind(function(aUserSerializationContext) { 121 deferredResult.addCallback(MochiKit.Base.bind(function(aUserSerializationContext) {
125//console.log("SERIALIZED USER", aUserSerializationContext); 122//console.log("SERIALIZED USER", aUserSerializationContext);
126 resultData['users'][aUserSerializationContext['credentials']['C']] = { 123 resultData['users'][aUserSerializationContext['credentials']['C']] = {
127 's': aUserSerializationContext['credentials']['s'], 124 's': aUserSerializationContext['credentials']['s'],
128 'v': aUserSerializationContext['credentials']['v'], 125 'v': aUserSerializationContext['credentials']['v'],
129 'version': aUserSerializationContext['data']['connectionVersion'], 126 'version': aUserSerializationContext['data']['connectionVersion'],
130 'userDetails': aUserSerializationContext['encryptedData']['user']['header'], 127 'userDetails': aUserSerializationContext['encryptedData']['user']['header'],
131 'userDetailsVersion':aUserSerializationContext['encryptedData']['user']['version'], 128 'userDetailsVersion':aUserSerializationContext['encryptedData']['user']['version'],
132 'statistics': aUserSerializationContext['encryptedData']['user']['statistics'], 129 'statistics': aUserSerializationContext['encryptedData']['user']['statistics'],
133 'lock': aUserSerializationContext['encryptedData']['user']['lock'], 130 'lock': aUserSerializationContext['encryptedData']['user']['lock'],
134 'records': this.rearrangeRecordsData(aUserSerializationContext['encryptedData']['records']) 131 'records': this.rearrangeRecordsData(aUserSerializationContext['encryptedData']['records'])
135 } 132 }
136 }, this)); 133 }, this));
137 } 134 }
138 135
139 deferredResult.addCallback(MochiKit.Base.bind(function() { 136 deferredResult.addCallback(MochiKit.Base.bind(function() {
140//console.log("this._data", resultData); 137//console.log("this._data", resultData);
141 this._data = resultData; 138 this._data = resultData;
142 }, this)); 139 }, this));
143 140
144 deferredResult.callback(); 141 deferredResult.callback();
145//Clipperz.log("<<< Proxy.Test.setupWithData"); 142//Clipperz.log("<<< Proxy.Test.setupWithData");
146 143
147 return deferredResult; 144 return deferredResult;
148 }, 145 },
149 146
150 //========================================================================= 147 //=========================================================================
151 148
152 'b': function() { 149 'b': function() {
diff --git a/frontend/beta/js/Clipperz/PM/Proxy/Proxy.Offline.js b/frontend/beta/js/Clipperz/PM/Proxy/Proxy.Offline.js
index 072f9bf..3cf499e 100644
--- a/frontend/beta/js/Clipperz/PM/Proxy/Proxy.Offline.js
+++ b/frontend/beta/js/Clipperz/PM/Proxy/Proxy.Offline.js
@@ -1,73 +1,70 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31 28
32//============================================================================= 29//=============================================================================
33 30
34Clipperz.PM.Proxy.Offline = function(args) { 31Clipperz.PM.Proxy.Offline = function(args) {
35 args = args || {}; 32 args = args || {};
36 33
37 Clipperz.PM.Proxy.Offline.superclass.constructor.call(this, args); 34 Clipperz.PM.Proxy.Offline.superclass.constructor.call(this, args);
38 35
39 this._dataStore = args.dataStore || new Clipperz.PM.Proxy.Offline.DataStore(args); 36 this._dataStore = args.dataStore || new Clipperz.PM.Proxy.Offline.DataStore(args);
40 37
41 return this; 38 return this;
42} 39}
43 40
44YAHOO.extendX(Clipperz.PM.Proxy.Offline, Clipperz.PM.Proxy, { 41YAHOO.extendX(Clipperz.PM.Proxy.Offline, Clipperz.PM.Proxy, {
45 42
46 'toString': function () { 43 'toString': function () {
47 return "Clipperz.PM.Proxy.Offline"; 44 return "Clipperz.PM.Proxy.Offline";
48 }, 45 },
49 46
50 //------------------------------------------------------------------------- 47 //-------------------------------------------------------------------------
51 48
52 'dataStore': function () { 49 'dataStore': function () {
53 return this._dataStore; 50 return this._dataStore;
54 }, 51 },
55 52
56 //------------------------------------------------------------------------- 53 //-------------------------------------------------------------------------
57 54
58 'sendMessage': function(aFunctionName, someParameters) { 55 'sendMessage': function(aFunctionName, someParameters) {
59 return this.dataStore().processMessage(aFunctionName, someParameters); 56 return this.dataStore().processMessage(aFunctionName, someParameters);
60 }, 57 },
61 58
62 //------------------------------------------------------------------------- 59 //-------------------------------------------------------------------------
63 60
64 'isReadOnly': function () { 61 'isReadOnly': function () {
65 return true; 62 return true;
66 }, 63 },
67 64
68 //------------------------------------------------------------------------- 65 //-------------------------------------------------------------------------
69 66
70 __syntaxFix__: "syntax fix" 67 __syntaxFix__: "syntax fix"
71 68
72}); 69});
73 70
diff --git a/frontend/beta/js/Clipperz/PM/Proxy/Proxy.PHP.js b/frontend/beta/js/Clipperz/PM/Proxy/Proxy.PHP.js
index 6185fd6..34a10c2 100755
--- a/frontend/beta/js/Clipperz/PM/Proxy/Proxy.PHP.js
+++ b/frontend/beta/js/Clipperz/PM/Proxy/Proxy.PHP.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31 28
32//============================================================================= 29//=============================================================================
33 30
34Clipperz.PM.Proxy.PHP = function(args) { 31Clipperz.PM.Proxy.PHP = function(args) {
35 Clipperz.PM.Proxy.PHP.superclass.constructor.call(this, args); 32 Clipperz.PM.Proxy.PHP.superclass.constructor.call(this, args);
36/* 33/*
37 this._tolls = { 34 this._tolls = {
38 'CONNECT':[], 35 'CONNECT':[],
39 'REGISTER':[], 36 'REGISTER':[],
40 'MESSAGE':[] 37 'MESSAGE':[]
41 }; 38 };
42 */ 39 */
43 return this; 40 return this;
44} 41}
45 42
46YAHOO.extendX(Clipperz.PM.Proxy.PHP, Clipperz.PM.Proxy, { 43YAHOO.extendX(Clipperz.PM.Proxy.PHP, Clipperz.PM.Proxy, {
47 44
48 'toString': function() { 45 'toString': function() {
49 return "Clipperz.PM.Proxy.PHP - " + this.args(); 46 return "Clipperz.PM.Proxy.PHP - " + this.args();
50 }, 47 },
51 48
52 //========================================================================= 49 //=========================================================================
53/* 50/*
54 'tolls': function() { 51 'tolls': function() {
55 return this._tolls; 52 return this._tolls;
56 }, 53 },
57*/ 54*/
58 //------------------------------------------------------------------------- 55 //-------------------------------------------------------------------------
59/* 56/*
60 'payToll': function(aRequestType, someParameters) { 57 'payToll': function(aRequestType, someParameters) {
61 vardeferredResult; 58 vardeferredResult;
62 59
63//MochiKit.Logging.logDebug(">>> Proxy.DWR.payToll: " + aRequestType); 60//MochiKit.Logging.logDebug(">>> Proxy.DWR.payToll: " + aRequestType);
64 if (this.tolls()[aRequestType].length > 0) { 61 if (this.tolls()[aRequestType].length > 0) {
65 deferredResult = MochiKit.Async.succeed(this.tolls()[aRequestType].pop()); 62 deferredResult = MochiKit.Async.succeed(this.tolls()[aRequestType].pop());
66 } else { 63 } else {
67//MochiKit.Logging.logDebug("### " + aRequestType + " toll NOT immediately available; request queued."); 64//MochiKit.Logging.logDebug("### " + aRequestType + " toll NOT immediately available; request queued.");
68 deferredResult = new MochiKit.Async.Deferred(); 65 deferredResult = new MochiKit.Async.Deferred();
69 deferredResult.addCallback(function(someParameters) { 66 deferredResult.addCallback(function(someParameters) {
70 return new Clipperz.PM.Toll(someParameters['toll']); 67 return new Clipperz.PM.Toll(someParameters['toll']);
71 }) 68 })
72 com_clipperz_pm_Proxy.knock(Clipperz.Base.serializeJSON({requestType:aRequestType}), { 69 com_clipperz_pm_Proxy.knock(Clipperz.Base.serializeJSON({requestType:aRequestType}), {
73 callback:MochiKit.Base.method(deferredResult, 'callback'), 70 callback:MochiKit.Base.method(deferredResult, 'callback'),
74 errorHandler:MochiKit.Base.method(deferredResult, 'errback') 71 errorHandler:MochiKit.Base.method(deferredResult, 'errback')
75 }); 72 });
76 } 73 }
77 74
78 deferredResult.addCallback(function(aToll) { 75 deferredResult.addCallback(function(aToll) {
79 return aToll.deferredPay(); 76 return aToll.deferredPay();
80 }); 77 });
81 deferredResult.addCallback(function(someParameters, aToll) { 78 deferredResult.addCallback(function(someParameters, aToll) {
82 var result; 79 var result;
83 80
84 result = { 81 result = {
85 parameters: someParameters, 82 parameters: someParameters,
86 toll: aToll 83 toll: aToll
87 } 84 }
88 85
89 return result; 86 return result;
90 }, someParameters); 87 }, someParameters);
91 88
92 return deferredResult; 89 return deferredResult;
93 }, 90 },
94*/ 91*/
95 //------------------------------------------------------------------------- 92 //-------------------------------------------------------------------------
96/* 93/*
97 'addToll': function(aToll) { 94 'addToll': function(aToll) {
98 this.tolls()[aToll.requestType()].push(aToll); 95 this.tolls()[aToll.requestType()].push(aToll);
99 }, 96 },
100*/ 97*/
101 //========================================================================= 98 //=========================================================================
102/* 99/*
103 'setTollCallback': function(someParameters) { 100 'setTollCallback': function(someParameters) {
104//MochiKit.Logging.logDebug(">>> Proxy.DWR.setTollCallback"); 101//MochiKit.Logging.logDebug(">>> Proxy.DWR.setTollCallback");
105//MochiKit.Logging.logDebug("--- Proxy.DWR.setTollCallback - " + Clipperz.Base.serializeJSON(someParameters)); 102//MochiKit.Logging.logDebug("--- Proxy.DWR.setTollCallback - " + Clipperz.Base.serializeJSON(someParameters));
106 if (typeof(someParameters['toll']) != 'undefined') { 103 if (typeof(someParameters['toll']) != 'undefined') {
107 this.addToll(new Clipperz.PM.Toll(someParameters['toll'])); 104 this.addToll(new Clipperz.PM.Toll(someParameters['toll']));
108 } 105 }
109 return someParameters['result']; 106 return someParameters['result'];
110 }, 107 },
111*/ 108*/
112 //========================================================================= 109 //=========================================================================
113 110
114 'registration': function(someParameters) { 111 'registration': function(someParameters) {
115 return this.sendMessage('registration', someParameters, 'REGISTER'); 112 return this.sendMessage('registration', someParameters, 'REGISTER');
116 }, 113 },
117 114
118 //------------------------------------------------------------------------- 115 //-------------------------------------------------------------------------
119 116
120 'handshake': function(someParameters) { 117 'handshake': function(someParameters) {
121/* 118/*
122 _s = "e8a2162f29aeaabb729f5625e9740edbf0cd80ac77c6b19ab951ed6c88443b8c"; 119 _s = "e8a2162f29aeaabb729f5625e9740edbf0cd80ac77c6b19ab951ed6c88443b8c";
123 _v = new Clipperz.Crypto.BigInt("955e2db0f7844aca372f5799e5f7e51b5866718493096908bd66abcf1d068108", 16); 120 _v = new Clipperz.Crypto.BigInt("955e2db0f7844aca372f5799e5f7e51b5866718493096908bd66abcf1d068108", 16);
124 _b = new Clipperz.Crypto.BigInt("5761e6c84d22ea3c5649de01702d60f674ccfe79238540eb34c61cd020230c53", 16); 121 _b = new Clipperz.Crypto.BigInt("5761e6c84d22ea3c5649de01702d60f674ccfe79238540eb34c61cd020230c53", 16);
125 122
126 _B = _v.add(Clipperz.Crypto.SRP.g().powerModule(_b, Clipperz.Crypto.SRP.n())); 123 _B = _v.add(Clipperz.Crypto.SRP.g().powerModule(_b, Clipperz.Crypto.SRP.n()));
127 _u = new Clipperz.Crypto.BigInt(Clipperz.PM.Crypto.encryptingFunctions.versions[someParameters.version].hash(new Clipperz.ByteArray(_B.asString(10))).toHexString(), 16); 124 _u = new Clipperz.Crypto.BigInt(Clipperz.PM.Crypto.encryptingFunctions.versions[someParameters.version].hash(new Clipperz.ByteArray(_B.asString(10))).toHexString(), 16);
128 _A = new Clipperz.Crypto.BigInt("3b3567ec33d73673552e960872eb154d091a2488915941038aef759236a27e64", 16); 125 _A = new Clipperz.Crypto.BigInt("3b3567ec33d73673552e960872eb154d091a2488915941038aef759236a27e64", 16);
129 _S = (_A.multiply(_v.powerModule(_u, Clipperz.Crypto.SRP.n()))).powerModule(_b, Clipperz.Crypto.SRP.n()); 126 _S = (_A.multiply(_v.powerModule(_u, Clipperz.Crypto.SRP.n()))).powerModule(_b, Clipperz.Crypto.SRP.n());
130 _K = Clipperz.PM.Crypto.encryptingFunctions.versions[someParameters.version].hash(new Clipperz.ByteArray(_S.asString(10))).toHexString().slice(2); 127 _K = Clipperz.PM.Crypto.encryptingFunctions.versions[someParameters.version].hash(new Clipperz.ByteArray(_S.asString(10))).toHexString().slice(2);
131 _M1 = Clipperz.PM.Crypto.encryptingFunctions.versions[someParameters.version].hash(new Clipperz.ByteArray(_A.asString(10) + _B.asString(10) + _K)).toHexString().slice(2); 128 _M1 = Clipperz.PM.Crypto.encryptingFunctions.versions[someParameters.version].hash(new Clipperz.ByteArray(_A.asString(10) + _B.asString(10) + _K)).toHexString().slice(2);
132 _M2 = Clipperz.PM.Crypto.encryptingFunctions.versions[someParameters.version].hash(new Clipperz.ByteArray(_A.asString(10) + _M1 + _K)).toHexString().slice(2); 129 _M2 = Clipperz.PM.Crypto.encryptingFunctions.versions[someParameters.version].hash(new Clipperz.ByteArray(_A.asString(10) + _M1 + _K)).toHexString().slice(2);
133 130
134 // MochiKit.Logging.logDebug("b = " + _b.asString(16)); 131 // MochiKit.Logging.logDebug("b = " + _b.asString(16));
135 // MochiKit.Logging.logDebug("v = " + _v.asString(16)); 132 // MochiKit.Logging.logDebug("v = " + _v.asString(16));
136 MochiKit.Logging.logDebug("B = " + _B.asString(16)); 133 MochiKit.Logging.logDebug("B = " + _B.asString(16));
137 MochiKit.Logging.logDebug("u = " + _u.asString(16)); 134 MochiKit.Logging.logDebug("u = " + _u.asString(16));
138 MochiKit.Logging.logDebug("S = " + _S.asString(16)); 135 MochiKit.Logging.logDebug("S = " + _S.asString(16));
139 MochiKit.Logging.logDebug("K = " + _K); 136 MochiKit.Logging.logDebug("K = " + _K);
140 MochiKit.Logging.logDebug("M1 = " + _M1); 137 MochiKit.Logging.logDebug("M1 = " + _M1);
141 MochiKit.Logging.logDebug("M2 = " + _M2); 138 MochiKit.Logging.logDebug("M2 = " + _M2);
142 // MochiKit.Logging.logDebug("someParameters.version: " + someParameters.version); 139 // MochiKit.Logging.logDebug("someParameters.version: " + someParameters.version);
143 */ 140 */
144 return this.sendMessage('handshake', someParameters, 'CONNECT'); 141 return this.sendMessage('handshake', someParameters, 'CONNECT');
145 }, 142 },
146 143
147 //------------------------------------------------------------------------- 144 //-------------------------------------------------------------------------
148 145
149 'message': function(someParameters) { 146 'message': function(someParameters) {
150 return this.sendMessage('message', someParameters, 'MESSAGE'); 147 return this.sendMessage('message', someParameters, 'MESSAGE');
151 }, 148 },
152 149
diff --git a/frontend/beta/js/Clipperz/PM/Proxy/Proxy.Test.js b/frontend/beta/js/Clipperz/PM/Proxy/Proxy.Test.js
index fd5bf8a..ce6e6d8 100644
--- a/frontend/beta/js/Clipperz/PM/Proxy/Proxy.Test.js
+++ b/frontend/beta/js/Clipperz/PM/Proxy/Proxy.Test.js
@@ -1,94 +1,91 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Proxy) == 'undefined') { Clipperz.PM.Proxy = {}; } 28if (typeof(Clipperz.PM.Proxy) == 'undefined') { Clipperz.PM.Proxy = {}; }
32 29
33//============================================================================= 30//=============================================================================
34 31
35Clipperz.PM.Proxy.Test = function(args) { 32Clipperz.PM.Proxy.Test = function(args) {
36 args = args || {}; 33 args = args || {};
37 34
38 Clipperz.PM.Proxy.Offline.call(this, args); 35 Clipperz.PM.Proxy.Offline.call(this, args);
39 36
40 37
41 38
42 return this; 39 return this;
43} 40}
44 41
45Clipperz.PM.Proxy.Test.prototype = MochiKit.Base.update(new Clipperz.PM.Proxy.Offline(), { 42Clipperz.PM.Proxy.Test.prototype = MochiKit.Base.update(new Clipperz.PM.Proxy.Offline(), {
46 43
47 'toString': function() { 44 'toString': function() {
48 return "Clipperz.PM.Proxy.Test"; 45 return "Clipperz.PM.Proxy.Test";
49 }, 46 },
50 47
51 //------------------------------------------------------------------------- 48 //-------------------------------------------------------------------------
52 49
53 'isTestData': function() { 50 'isTestData': function() {
54 return typeof(this.userData()['__masterkey_test_value__'] != 'undefined'); 51 return typeof(this.userData()['__masterkey_test_value__'] != 'undefined');
55 }, 52 },
56 53
57 //------------------------------------------------------------------------- 54 //-------------------------------------------------------------------------
58 55
59 'userDetails': function() { 56 'userDetails': function() {
60 var result; 57 var result;
61 58
62 if (this.isTestData()) { 59 if (this.isTestData()) {
63 var serializedHeader; 60 var serializedHeader;
64 var version; 61 var version;
65 62
66 version = this.userData()['version']; 63 version = this.userData()['version'];
67 serializedHeader = Clipperz.Base.serializeJSON(this.userData()['userDetails']); 64 serializedHeader = Clipperz.Base.serializeJSON(this.userData()['userDetails']);
68 result = Clipperz.PM.Crypto.encryptingFunctions.versions[version].encrypt(this.userData()['__masterkey_test_value__'], serializedHeader); 65 result = Clipperz.PM.Crypto.encryptingFunctions.versions[version].encrypt(this.userData()['__masterkey_test_value__'], serializedHeader);
69 } else { 66 } else {
70 result = Clipperz.PM.Proxy.Offline.prototype.userDetails.call(this); 67 result = Clipperz.PM.Proxy.Offline.prototype.userDetails.call(this);
71 } 68 }
72 69
73 return result; 70 return result;
74 }, 71 },
75 72
76 //------------------------------------------------------------------------- 73 //-------------------------------------------------------------------------
77 74
78 'statistics': function() { 75 'statistics': function() {
79 var result; 76 var result;
80 var serializedStatistics; 77 var serializedStatistics;
81 var version; 78 var version;
82 79
83 version = this.userData()['version']; 80 version = this.userData()['version'];
84 serializedStatistics = Clipperz.Base.serializeJSON(this.userData()['statistics']); 81 serializedStatistics = Clipperz.Base.serializeJSON(this.userData()['statistics']);
85 result = Clipperz.PM.Crypto.encryptingFunctions.versions[version].encrypt(this.userData()['__masterkey_test_value__'], serializedStatistics); 82 result = Clipperz.PM.Crypto.encryptingFunctions.versions[version].encrypt(this.userData()['__masterkey_test_value__'], serializedStatistics);
86 83
87 return result; 84 return result;
88 }, 85 },
89 86
90 //------------------------------------------------------------------------- 87 //-------------------------------------------------------------------------
91 __syntaxFix__: "syntax fix" 88 __syntaxFix__: "syntax fix"
92 89
93}); 90});
94 91
diff --git a/frontend/beta/js/Clipperz/PM/Strings.js b/frontend/beta/js/Clipperz/PM/Strings.js
index c935c7f..24ef0ce 100644
--- a/frontend/beta/js/Clipperz/PM/Strings.js
+++ b/frontend/beta/js/Clipperz/PM/Strings.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Strings) == 'undefined') { Clipperz.PM.Strings = {}; } 28if (typeof(Clipperz.PM.Strings) == 'undefined') { Clipperz.PM.Strings = {}; }
32if (typeof(Clipperz.PM.Strings.Languages) == 'undefined') { Clipperz.PM.Strings.Languages = {}; } 29if (typeof(Clipperz.PM.Strings.Languages) == 'undefined') { Clipperz.PM.Strings.Languages = {}; }
33 30
34Clipperz.PM.Strings.standardStrings = { 31Clipperz.PM.Strings.standardStrings = {
35 32
36 'loginPanelSwitchLanguageSelectOptions':[ 33 'loginPanelSwitchLanguageSelectOptions':[
37/* 34/*
38 {tag:'option', html:"Arabic (Oman) (العربية)", value:'ar-OM', disabled:true}, 35 {tag:'option', html:"Arabic (Oman) (العربية)", value:'ar-OM', disabled:true},
39 {tag:'option', html:"Arabic (Syria) (العربية)", value:'ar-SY', disabled:true}, 36 {tag:'option', html:"Arabic (Syria) (العربية)", value:'ar-SY', disabled:true},
40 {tag:'option', html:"Bahasa Indonesia", value:'id-ID', disabled:true}, 37 {tag:'option', html:"Bahasa Indonesia", value:'id-ID', disabled:true},
41 {tag:'option', html:"Bulgarian (Български)", value:'bg-BG', disabled:true}, 38 {tag:'option', html:"Bulgarian (Български)", value:'bg-BG', disabled:true},
42 {tag:'option', html:"Català", value:'ca-ES', disabled:true}, 39 {tag:'option', html:"Català", value:'ca-ES', disabled:true},
43 {tag:'option', html:"Chinese (Simplified) (简体中文)", value:'zh-CN', disabled:true}, 40 {tag:'option', html:"Chinese (Simplified) (简体中文)", value:'zh-CN', disabled:true},
44 {tag:'option', html:"Chinese (Traditional) (正體中文)", value:'zh-TW', disabled:true}, 41 {tag:'option', html:"Chinese (Traditional) (正體中文)", value:'zh-TW', disabled:true},
45 {tag:'option', html:"Czech (Česky)", value:'cs-CZ', disabled:true}, 42 {tag:'option', html:"Czech (Česky)", value:'cs-CZ', disabled:true},
46 {tag:'option', html:"Dansk", value:'da-DK', disabled:true}, 43 {tag:'option', html:"Dansk", value:'da-DK', disabled:true},
47 {tag:'option', html:"Deutsch", value:'de-DE'/ *, disabled:true* /}, 44 {tag:'option', html:"Deutsch", value:'de-DE'/ *, disabled:true* /},
48 {tag:'option', html:"English (American)", value:'en-US'/ *, disabled:true* /}, 45 {tag:'option', html:"English (American)", value:'en-US'/ *, disabled:true* /},
49 {tag:'option', html:"English (British)", value:'en-GB'/ *, disabled:true* /}, 46 {tag:'option', html:"English (British)", value:'en-GB'/ *, disabled:true* /},
50 {tag:'option', html:"English (Canadian)", value:'en-CA'/ *, disabled:true* /}, 47 {tag:'option', html:"English (Canadian)", value:'en-CA'/ *, disabled:true* /},
51 {tag:'option', html:"Español", value:'es-ES', disabled:true}, 48 {tag:'option', html:"Español", value:'es-ES', disabled:true},
52 {tag:'option', html:"Eesti", value:'et-EE', disabled:true}, 49 {tag:'option', html:"Eesti", value:'et-EE', disabled:true},
53 {tag:'option', html:"Français", value:'fr-FR', disabled:true}, 50 {tag:'option', html:"Français", value:'fr-FR', disabled:true},
54 {tag:'option', html:"Galego", value:'gl-ES', disabled:true}, 51 {tag:'option', html:"Galego", value:'gl-ES', disabled:true},
55 {tag:'option', html:"Greek (Ελληνικά)", value:'el-GR', disabled:true}, 52 {tag:'option', html:"Greek (Ελληνικά)", value:'el-GR', disabled:true},
56 {tag:'option', html:"Íslenska", value:'is-IS', disabled:true}, 53 {tag:'option', html:"Íslenska", value:'is-IS', disabled:true},
57 {tag:'option', html:"Italiano", value:'it-IT'/ *, disabled:true* /}, 54 {tag:'option', html:"Italiano", value:'it-IT'/ *, disabled:true* /},
58 {tag:'option', html:"Japanese (日本語)", value:'ja-JP', disabled:true}, 55 {tag:'option', html:"Japanese (日本語)", value:'ja-JP', disabled:true},
59 {tag:'option', html:"Korean (한국어)", value:'ko-KR', disabled:true}, 56 {tag:'option', html:"Korean (한국어)", value:'ko-KR', disabled:true},
60 {tag:'option', html:"Latviešu", value:'lv-LV', disabled:true}, 57 {tag:'option', html:"Latviešu", value:'lv-LV', disabled:true},
61 {tag:'option', html:"Lietuvių", value:'lt-LT', disabled:true}, 58 {tag:'option', html:"Lietuvių", value:'lt-LT', disabled:true},
62 {tag:'option', html:"Macedonian (Македонски)", value:'mk-MK', disabled:true}, 59 {tag:'option', html:"Macedonian (Македонски)", value:'mk-MK', disabled:true},
63 {tag:'option', html:"Magyar", value:'hu-HU', disabled:true}, 60 {tag:'option', html:"Magyar", value:'hu-HU', disabled:true},
64 {tag:'option', html:"Nederlands", value:'nl-NL', disabled:true}, 61 {tag:'option', html:"Nederlands", value:'nl-NL', disabled:true},
65 {tag:'option', html:"Norsk bokmål", value:'nb-NO', disabled:true}, 62 {tag:'option', html:"Norsk bokmål", value:'nb-NO', disabled:true},
66 {tag:'option', html:"Norsk nynorsk", value:'nn-NO', disabled:true}, 63 {tag:'option', html:"Norsk nynorsk", value:'nn-NO', disabled:true},
67 {tag:'option', html:"Persian (Western) (فارسى)", value:'fa-IR', disabled:true}, 64 {tag:'option', html:"Persian (Western) (فارسى)", value:'fa-IR', disabled:true},
68 {tag:'option', html:"Polski", value:'pl-PL', disabled:true}, 65 {tag:'option', html:"Polski", value:'pl-PL', disabled:true},
69 {tag:'option', html:"Português", value:'pt-PT'/ *, disabled:true* /}, 66 {tag:'option', html:"Português", value:'pt-PT'/ *, disabled:true* /},
70 {tag:'option', html:"Português Brasileiro", value:'pt-BR'/ *, disabled:true* /}, 67 {tag:'option', html:"Português Brasileiro", value:'pt-BR'/ *, disabled:true* /},
71 {tag:'option', html:"Românä", value:'ro-RO', disabled:true}, 68 {tag:'option', html:"Românä", value:'ro-RO', disabled:true},
72 {tag:'option', html:"Russian (Русский)", value:'ru-RU', disabled:true}, 69 {tag:'option', html:"Russian (Русский)", value:'ru-RU', disabled:true},
73 {tag:'option', html:"Slovak (Slovenčina)", value:'sk-SK', disabled:true}, 70 {tag:'option', html:"Slovak (Slovenčina)", value:'sk-SK', disabled:true},
74 {tag:'option', html:"Slovenian (Slovenščina)", value:'sl-SI', disabled:true}, 71 {tag:'option', html:"Slovenian (Slovenščina)", value:'sl-SI', disabled:true},
75 {tag:'option', html:"Suomi", value:'fi-FI', disabled:true}, 72 {tag:'option', html:"Suomi", value:'fi-FI', disabled:true},
76 {tag:'option', html:"Svenska", value:'sv-SE', disabled:true}, 73 {tag:'option', html:"Svenska", value:'sv-SE', disabled:true},
77 {tag:'option', html:"Thai (ไทย)", value:'th-TH', disabled:true}, 74 {tag:'option', html:"Thai (ไทย)", value:'th-TH', disabled:true},
78 {tag:'option', html:"Türkçe", value:'tr-TR', disabled:true}, 75 {tag:'option', html:"Türkçe", value:'tr-TR', disabled:true},
79 {tag:'option', html:"Ukrainian (Українська)", value:'uk-UA', disabled:true} 76 {tag:'option', html:"Ukrainian (Українська)", value:'uk-UA', disabled:true}
80*/ 77*/
81 {tag:'option', html:"Arabic (العربية)", value:"ar", disabled:true, cls:'disabledOption'}, 78 {tag:'option', html:"Arabic (العربية)", value:"ar", disabled:true, cls:'disabledOption'},
82 // {tag:'option', html:"Chinese (中文)", value:"zh", disabled:true}, 79 // {tag:'option', html:"Chinese (中文)", value:"zh", disabled:true},
83 {tag:'option', html:"Chinese (Simplified) (简体中文)", value:'zh-CN'}, 80 {tag:'option', html:"Chinese (Simplified) (简体中文)", value:'zh-CN'},
84 {tag:'option', html:"Dutch (Nederlands)", value:"nl-NL", disabled:true, cls:'disabledOption'}, 81 {tag:'option', html:"Dutch (Nederlands)", value:"nl-NL", disabled:true, cls:'disabledOption'},
85 {tag:'option', html:"English", value:"en-US"}, 82 {tag:'option', html:"English", value:"en-US"},
86 {tag:'option', html:"French (Français)", value:"fr-FR"}, 83 {tag:'option', html:"French (Français)", value:"fr-FR"},
87 {tag:'option', html:"German (Deutsch)", value:"de-DE"/* -- */, disabled:true, cls:'disabledOption' /* */}, 84 {tag:'option', html:"German (Deutsch)", value:"de-DE"/* -- */, disabled:true, cls:'disabledOption' /* */},
88 {tag:'option', html:"Greek (Ελληνικά)", value:"el-GR"/* -- */, disabled:true, cls:'disabledOption' /* */}, 85 {tag:'option', html:"Greek (Ελληνικά)", value:"el-GR"/* -- */, disabled:true, cls:'disabledOption' /* */},
89 {tag:'option', html:"Hebrew (עברית)", value:"he-IL"/* -- */, disabled:true, cls:'disabledOption' /* */}, 86 {tag:'option', html:"Hebrew (עברית)", value:"he-IL"/* -- */, disabled:true, cls:'disabledOption' /* */},
90 {tag:'option', html:"Italian (Italiano)", value:"it-IT"}, 87 {tag:'option', html:"Italian (Italiano)", value:"it-IT"},
91 {tag:'option', html:"Japanese (日本語)", value:"ja-JP"}, 88 {tag:'option', html:"Japanese (日本語)", value:"ja-JP"},
92 {tag:'option', html:"Korean (한국어)", value:"ko-KR", disabled:true, cls:'disabledOption'}, 89 {tag:'option', html:"Korean (한국어)", value:"ko-KR", disabled:true, cls:'disabledOption'},
93 {tag:'option', html:"Norwegian (Norsk)", value:"no", disabled:true, cls:'disabledOption'}, 90 {tag:'option', html:"Norwegian (Norsk)", value:"no", disabled:true, cls:'disabledOption'},
94 {tag:'option', html:"Persian (فارسی)", value:"fa-IR", disabled:true, cls:'disabledOption'}, 91 {tag:'option', html:"Persian (فارسی)", value:"fa-IR", disabled:true, cls:'disabledOption'},
95 {tag:'option', html:"Polish (Polski)", value:"pl-PL", disabled:true, cls:'disabledOption'}, 92 {tag:'option', html:"Polish (Polski)", value:"pl-PL", disabled:true, cls:'disabledOption'},
96 {tag:'option', html:"Portuguese (Português)", value:"pt-BR"}, 93 {tag:'option', html:"Portuguese (Português)", value:"pt-BR"},
97 {tag:'option', html:"Russian (Русский)", value:"ru-RU"}, 94 {tag:'option', html:"Russian (Русский)", value:"ru-RU"},
98 {tag:'option', html:"Spanish (Español)", value:"es-ES"}, 95 {tag:'option', html:"Spanish (Español)", value:"es-ES"},
99 {tag:'option', html:"Swedish (Svenska)", value:"sv-SE", disabled:true, cls:'disabledOption'}, 96 {tag:'option', html:"Swedish (Svenska)", value:"sv-SE", disabled:true, cls:'disabledOption'},
100 {tag:'option', html:"Turkish (Türkçe)", value:"tr-TR", disabled:true, cls:'disabledOption'}, 97 {tag:'option', html:"Turkish (Türkçe)", value:"tr-TR", disabled:true, cls:'disabledOption'},
101 {tag:'option', html:"Vietnamese (Tiếng Việt)", value:"vi-VN", disabled:true, cls:'disabledOption'} 98 {tag:'option', html:"Vietnamese (Tiếng Việt)", value:"vi-VN", disabled:true, cls:'disabledOption'}
102 ] 99 ]
103} 100}
104 101
105Clipperz.PM.Strings.GeneralSettings = { 102Clipperz.PM.Strings.GeneralSettings = {
106 'en-us': { 103 'en-us': {
107 'loginFormAarghThatsBadUrl':"http://www.clipperz.com/support/faq/account_faq", 104 'loginFormAarghThatsBadUrl':"http://www.clipperz.com/support/faq/account_faq",
108 'loginFormVerifyTheCodeUrl':"http://www.clipperz.com/learn_more/reviewing_the_code", 105 'loginFormVerifyTheCodeUrl':"http://www.clipperz.com/learn_more/reviewing_the_code",
109 106
110 'donateHeaderLinkUrl': "http://www.clipperz.com/donations", 107 'donateHeaderLinkUrl': "http://www.clipperz.com/donations",
111 'creditsHeaderLinkUrl': "http://www.clipperz.com/credits", 108 'creditsHeaderLinkUrl': "http://www.clipperz.com/credits",
112 'feedbackHeaderLinkUrl': "http://www.clipperz.com/contact", 109 'feedbackHeaderLinkUrl': "http://www.clipperz.com/contact",
113 'helpHeaderLinkUrl': "http://www.clipperz.com/support/user_guide", 110 'helpHeaderLinkUrl': "http://www.clipperz.com/support/user_guide",
114 'forumHeaderLinkUrl': "http://www.clipperz.com/forum", 111 'forumHeaderLinkUrl': "http://www.clipperz.com/forum",
115 112
116 'httpAuthBookmarkletConfiguration':{tag:'textarea', id:'httpAuthDefaultConfiguration', html:"" + 113 'httpAuthBookmarkletConfiguration':{tag:'textarea', id:'httpAuthDefaultConfiguration', html:"" +
117 "{ \"page\":{\"title\":\"HTTP authentication\"}," + "\n" + 114 "{ \"page\":{\"title\":\"HTTP authentication\"}," + "\n" +
118 " \"form\":{\"attributes\": {" + "\n" + 115 " \"form\":{\"attributes\": {" + "\n" +
119 " \"action\":\"\"," + "\n" + 116 " \"action\":\"\"," + "\n" +
120 " \"type\":\"http_auth\"" + "\n" + 117 " \"type\":\"http_auth\"" + "\n" +
121 " }, \"inputs\": [" + "\n" + 118 " }, \"inputs\": [" + "\n" +
122 " {\"type\":\"text\",\"name\":\"url\",\"value\":\"\"}," + "\n" + 119 " {\"type\":\"text\",\"name\":\"url\",\"value\":\"\"}," + "\n" +
123 " {\"type\":\"text\",\"name\":\"username\",\"value\":\"\"}," + "\n" + 120 " {\"type\":\"text\",\"name\":\"username\",\"value\":\"\"}," + "\n" +
124 " {\"type\":\"password\",\"name\":\"password\",\"value\":\"\"}" + "\n" + 121 " {\"type\":\"password\",\"name\":\"password\",\"value\":\"\"}" + "\n" +
125 " ]}, \"version\":\"0.2.3\"}" 122 " ]}, \"version\":\"0.2.3\"}"
126 }, 123 },
127 124
128 'directLoginJumpPageUrl':"", 125 'directLoginJumpPageUrl':"",
129 'defaultFaviconUrl': "data:application/octet-stream;charset=utf-8;base64,AAABAAEAFxcAAAEAGAD8BgAAFgAAACgAAAAXAAAALgAAAAEAGAAAAAAAAAAAABIXAAASFwAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////////////////9zAC////////////////////////////////////////////////////////////////////////////////////////////9pAG////////////////////////////////////////////////////////////////////////////////////////////9rAC////////////////////////////////////////////////////////////////////////////////////////////9yAHP////////////////////////IyMizs7O6urrq6ur////////////Ozs6zs7Ozs7Pq6ur///////////////////////8AAAD////////////////////V1dWXl5eXl5eXl5elpaX4+Pj////Ozs6Xl5eXl5eXl5eenp7///////////////////////8AAAD////////////////////Ozs6Xl5eXl5eXl5eXl5fBwcHq6uqenp6Xl5eXl5eXl5eXl5f///////////////////////8AAAD////////////////////j4+OXl5eXl5eXl5eXl5eXl5elpaWXl5eXl5eXl5eXl5ezs7P///////////////////////8AAAD////////////////////////IyMiXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eenp7x8fH////////////////////////////////////////////////////4+PilpaWXl5eXl5eXl5eXl5eXl5eXl5eXl5fOzs7////////////////////////////////////////////////////////q6uq6urqXl5eXl5eXl5eXl5eXl5eXl5eenp7V1dX4+Pj///////////////////////8AAAD////////////4+PjOzs6lpaWXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e6urrj4+P///////////////8AAAD////////////BwcGXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5fx8fH///////////8AAAD///////////+zs7OXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5fj4+P///////////8AAAD////////////IyMiXl5eXl5eXl5eXl5e6urqXl5eXl5eXl5eXl5esrKylpaWXl5eXl5eXl5eenp7x8fH///////////8AAAD////////////////Ozs7Ozs7V1dX4+Pj///+Xl5eXl5eXl5eXl5fOzs7////q6urOzs7Ozs7q6ur///////////////8AAAD///////////////////////////////////+Xl5eXl5eXl5eXl5fOzs7///////////////////////////////////8AAAD///////////////////////////////////+Xl5eXl5eXl5eXl5fOzs7///////////////////////////////////8AAAD///////////////////////////////////+Xl5eXl5eXl5eXl5fOzs7///////////////////////////////////8AAAD////////////////////////////////////IyMiXl5eXl5eenp7x8fH///////////////////////////////////8AAAD////////////////////////////////////////j4+Pj4+Px8fH///////////////////////////////////////8AAAD///////////////////////////////////////////////////////////////////////////////////////////8AAAD///////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo=", 126 'defaultFaviconUrl': "data:application/octet-stream;charset=utf-8;base64,AAABAAEAFxcAAAEAGAD8BgAAFgAAACgAAAAXAAAALgAAAAEAGAAAAAAAAAAAABIXAAASFwAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////////////////9zAC////////////////////////////////////////////////////////////////////////////////////////////9pAG////////////////////////////////////////////////////////////////////////////////////////////9rAC////////////////////////////////////////////////////////////////////////////////////////////9yAHP////////////////////////IyMizs7O6urrq6ur////////////Ozs6zs7Ozs7Pq6ur///////////////////////8AAAD////////////////////V1dWXl5eXl5eXl5elpaX4+Pj////Ozs6Xl5eXl5eXl5eenp7///////////////////////8AAAD////////////////////Ozs6Xl5eXl5eXl5eXl5fBwcHq6uqenp6Xl5eXl5eXl5eXl5f///////////////////////8AAAD////////////////////j4+OXl5eXl5eXl5eXl5eXl5elpaWXl5eXl5eXl5eXl5ezs7P///////////////////////8AAAD////////////////////////IyMiXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eenp7x8fH////////////////////////////////////////////////////4+PilpaWXl5eXl5eXl5eXl5eXl5eXl5eXl5fOzs7////////////////////////////////////////////////////////q6uq6urqXl5eXl5eXl5eXl5eXl5eXl5eenp7V1dX4+Pj///////////////////////8AAAD////////////4+PjOzs6lpaWXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e6urrj4+P///////////////8AAAD////////////BwcGXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5fx8fH///////////8AAAD///////////+zs7OXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5fj4+P///////////8AAAD////////////IyMiXl5eXl5eXl5eXl5e6urqXl5eXl5eXl5eXl5esrKylpaWXl5eXl5eXl5eenp7x8fH///////////8AAAD////////////////Ozs7Ozs7V1dX4+Pj///+Xl5eXl5eXl5eXl5fOzs7////q6urOzs7Ozs7q6ur///////////////8AAAD///////////////////////////////////+Xl5eXl5eXl5eXl5fOzs7///////////////////////////////////8AAAD///////////////////////////////////+Xl5eXl5eXl5eXl5fOzs7///////////////////////////////////8AAAD///////////////////////////////////+Xl5eXl5eXl5eXl5fOzs7///////////////////////////////////8AAAD////////////////////////////////////IyMiXl5eXl5eenp7x8fH///////////////////////////////////8AAAD////////////////////////////////////////j4+Pj4+Px8fH///////////////////////////////////////8AAAD///////////////////////////////////////////////////////////////////////////////////////////8AAAD///////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo=",
130 'defaultFaviconUrl_IE': "https://www.clipperz.com/images/icons/misc/favicon.ico", 127 'defaultFaviconUrl_IE': "https://www.clipperz.com/images/icons/misc/favicon.ico",
131 128
132 'donateSplashPanelIconUrl':"./images/smiles_big.gif", 129 'donateSplashPanelIconUrl':"./images/smiles_big.gif",
133 130
134 'icons_baseUrl':"https://www.clipperz.com/images/icons", 131 'icons_baseUrl':"https://www.clipperz.com/images/icons",
135 132
136 'passwordGeneratorLowercaseCharset':"abcdefghijklmnopqrstuvwxyz", 133 'passwordGeneratorLowercaseCharset':"abcdefghijklmnopqrstuvwxyz",
137 'passwordGeneratorUppercaseCharset':"ABCDEFGHIJKLMNOPQRSTUVWXYZ", 134 'passwordGeneratorUppercaseCharset':"ABCDEFGHIJKLMNOPQRSTUVWXYZ",
138 'passwordGeneratorNumberCharset': "0123456789", 135 'passwordGeneratorNumberCharset': "0123456789",
139 'passwordGeneratorSymbolCharset': "!@#$%^&*+?[]{}/|\\<>,.;:~=-_", 136 'passwordGeneratorSymbolCharset': "!@#$%^&*+?[]{}/|\\<>,.;:~=-_",
140 137
141 '_': "" 138 '_': ""
142 } 139 }
143} 140}
144 141
145Clipperz.PM.Strings.defaultLanguages = { 142Clipperz.PM.Strings.defaultLanguages = {
146 'default':"en-us", 143 'default':"en-us",
147 144
148 // 'de':"de-de", 145 // 'de':"de-de",
149 // 'el':"el-gr", 146 // 'el':"el-gr",
150 // 'he':"he-il", 147 // 'he':"he-il",
151 // 'ru':"ru-ru", 148 // 'ru':"ru-ru",
152 149
diff --git a/frontend/beta/js/Clipperz/PM/Strings/MessagePanelConfigurations.js b/frontend/beta/js/Clipperz/PM/Strings/MessagePanelConfigurations.js
index 446e96c..7f6c52f 100644
--- a/frontend/beta/js/Clipperz/PM/Strings/MessagePanelConfigurations.js
+++ b/frontend/beta/js/Clipperz/PM/Strings/MessagePanelConfigurations.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Strings) == 'undefined') { Clipperz.PM.Strings = {}; } 28if (typeof(Clipperz.PM.Strings) == 'undefined') { Clipperz.PM.Strings = {}; }
32 29
33Clipperz.PM.Strings.messagePanelConfigurations = { 30Clipperz.PM.Strings.messagePanelConfigurations = {
34 31
35 32
36 //------------------------------------------------------------------------- 33 //-------------------------------------------------------------------------
37 // 34 //
38 // Registration - connection 35 // Registration - connection
39 // 36 //
40 'registration_verify': function() { 37 'registration_verify': function() {
41 return { 38 return {
42 'title': null, 39 'title': null,
43 'text': Clipperz.PM.Strings['connectionRegistrationSendingRequestMessageText'] 40 'text': Clipperz.PM.Strings['connectionRegistrationSendingRequestMessageText']
44 } 41 }
45 }, 42 },
46 43
47 'registration_sendingCredentials': function() { 44 'registration_sendingCredentials': function() {
48 return { 45 return {
49 'title': null, 46 'title': null,
50 'text': Clipperz.PM.Strings['connectionRegistrationSendingCredentialsMessageText'] 47 'text': Clipperz.PM.Strings['connectionRegistrationSendingCredentialsMessageText']
51 } 48 }
52 }, 49 },
53 50
54 //------------------------------------------------------------------------- 51 //-------------------------------------------------------------------------
55 // 52 //
56 // One Time Password login message panel 53 // One Time Password login message panel
57 // 54 //
58 55
59 'OTP_login_start': function() { 56 'OTP_login_start': function() {
60 return { 57 return {
61 'title': Clipperz.PM.Strings['OTPloginMessagePanelInitialTitle'], 58 'title': Clipperz.PM.Strings['OTPloginMessagePanelInitialTitle'],
62 'text': Clipperz.PM.Strings['OTPloginMessagePanelInitialText'], 59 'text': Clipperz.PM.Strings['OTPloginMessagePanelInitialText'],
63 'steps': '+3', 60 'steps': '+3',
64 'buttons': {} 61 'buttons': {}
65 } 62 }
66 }, 63 },
67 64
68 'OTP_login_loadingOTP': function() { 65 'OTP_login_loadingOTP': function() {
69 return { 66 return {
70 'title': Clipperz.PM.Strings['OTPloginMessagePanelLoadingTitle'], 67 'title': Clipperz.PM.Strings['OTPloginMessagePanelLoadingTitle'],
71 'text': Clipperz.PM.Strings['OTPloginMessagePanelLoadingText'] 68 'text': Clipperz.PM.Strings['OTPloginMessagePanelLoadingText']
72 } 69 }
73 }, 70 },
74 71
75 'OTP_login_extractingPassphrase': function() { 72 'OTP_login_extractingPassphrase': function() {
76 return { 73 return {
77 'title': Clipperz.PM.Strings['OTPloginMessagePanelProcessingTitle'], 74 'title': Clipperz.PM.Strings['OTPloginMessagePanelProcessingTitle'],
78 'text': Clipperz.PM.Strings['OTPloginMessagePanelProcessingText'] 75 'text': Clipperz.PM.Strings['OTPloginMessagePanelProcessingText']
79 } 76 }
80 }, 77 },
81 78
82 79
83 //------------------------------------------------------------------------- 80 //-------------------------------------------------------------------------
84 // 81 //
85 // Login message panel 82 // Login message panel
86 // 83 //
87 'login_start': function() { 84 'login_start': function() {
88 return { 85 return {
89 'title': Clipperz.PM.Strings['loginMessagePanelInitialTitle'], 86 'title': Clipperz.PM.Strings['loginMessagePanelInitialTitle'],
90 'text': Clipperz.PM.Strings['loginMessagePanelInitialText'], 87 'text': Clipperz.PM.Strings['loginMessagePanelInitialText'],
91 'steps': '+7', 88 'steps': '+7',
92 'buttons': { 89 'buttons': {
93 'ok': Clipperz.PM.Strings['loginMessagePanelInitialButtonLabel'] 90 'ok': Clipperz.PM.Strings['loginMessagePanelInitialButtonLabel']
94 } 91 }
95 } 92 }
96 }, 93 },
97 94
98 'login_connected': function() { 95 'login_connected': function() {
99 return { 96 return {
100 'title': Clipperz.PM.Strings['loginMessagePanelConnectedTitle'], 97 'title': Clipperz.PM.Strings['loginMessagePanelConnectedTitle'],
101 'text': Clipperz.PM.Strings['loginMessagePanelConnectedText'], 98 'text': Clipperz.PM.Strings['loginMessagePanelConnectedText'],
102 'buttons': {} 99 'buttons': {}
103 } 100 }
104 }, 101 },
105 102
106 'login_failed':function() { 103 'login_failed':function() {
107 return { 104 return {
108 'title': Clipperz.PM.Strings['loginMessagePanelFailureTitle'], 105 'title': Clipperz.PM.Strings['loginMessagePanelFailureTitle'],
109 'text': Clipperz.PM.Strings['loginMessagePanelFailureText'], 106 'text': Clipperz.PM.Strings['loginMessagePanelFailureText'],
110 'button': Clipperz.PM.Strings['loginMessagePanelFailureButtonLabel'] 107 'button': Clipperz.PM.Strings['loginMessagePanelFailureButtonLabel']
111 } 108 }
112 }, 109 },
113 110
114 //------------------------------------------------------------------------- 111 //-------------------------------------------------------------------------
115 // 112 //
116 // Login message panel - connection 113 // Login message panel - connection
117 // 114 //
118 'connection_sendingCredentials': function() { 115 'connection_sendingCredentials': function() {
119 return { 116 return {
120 'title': Clipperz.PM.Strings['connectionLoginSendingCredentialsMessageTitle'], 117 'title': Clipperz.PM.Strings['connectionLoginSendingCredentialsMessageTitle'],
121 'text': Clipperz.PM.Strings['connectionLoginSendingCredentialsMessageText'] 118 'text': Clipperz.PM.Strings['connectionLoginSendingCredentialsMessageText']
122 } 119 }
123 }, 120 },
124 121
125 'connection_credentialVerification': function() { 122 'connection_credentialVerification': function() {
126 return { 123 return {
127 'title': Clipperz.PM.Strings['connectionLoginCredentialsVerificationMessageTitle'], 124 'title': Clipperz.PM.Strings['connectionLoginCredentialsVerificationMessageTitle'],
128 'text': Clipperz.PM.Strings['connectionLoginCredentialsVerificationMessageText'] 125 'text': Clipperz.PM.Strings['connectionLoginCredentialsVerificationMessageText']
129 } 126 }
130 }, 127 },
131 128
132 'connection_loggedIn': function() { 129 'connection_loggedIn': function() {
133 return { 130 return {
134 'title': Clipperz.PM.Strings['connectionLoginDoneMessageTitle'], 131 'title': Clipperz.PM.Strings['connectionLoginDoneMessageTitle'],
135 'text': Clipperz.PM.Strings['connectionLoginDoneMessageText'] 132 'text': Clipperz.PM.Strings['connectionLoginDoneMessageText']
136 } 133 }
137 }, 134 },
138 135
139 //------------------------------------------------------------------------- 136 //-------------------------------------------------------------------------
140 // 137 //
141 //Login message panel - user 138 //Login message panel - user
142 // 139 //
143 'connection_upgrading': function() { 140 'connection_upgrading': function() {
144 return { 141 return {
145 'title': Clipperz.PM.Strings['userLoginPanelUpgradingUserCredentialsMessageTitle'], 142 'title': Clipperz.PM.Strings['userLoginPanelUpgradingUserCredentialsMessageTitle'],
146 'text': Clipperz.PM.Strings['userLoginPanelUpgradingUserCredentialsMessageText'], 143 'text': Clipperz.PM.Strings['userLoginPanelUpgradingUserCredentialsMessageText'],
147 'steps': '+1' 144 'steps': '+1'
148 } 145 }
149 }, 146 },
150 147
151 'connection_done': function() { 148 'connection_done': function() {
152 return { 149 return {
diff --git a/frontend/beta/js/Clipperz/PM/Strings/Strings_de-DE.js b/frontend/beta/js/Clipperz/PM/Strings/Strings_de-DE.js
index ecc8a36..6ccffa8 100644
--- a/frontend/beta/js/Clipperz/PM/Strings/Strings_de-DE.js
+++ b/frontend/beta/js/Clipperz/PM/Strings/Strings_de-DE.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29Clipperz.PM.Strings.Languages['de-DE'.toLowerCase()] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], { 26Clipperz.PM.Strings.Languages['de-DE'.toLowerCase()] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], {
30 'clipperzServiceDescription':"<h2>Privatsphäre für Deine Daten</h2> <ul> <li> <h3>Clipperz heißt:</h3> <ul> <li> <p>sichere und einfache zu bedienene Passwortverwaltung</p> </li> <li> <p>eine effektive Lösung des einmaligen Anmeldens</p> </li> <li> <p>eine digitale Brieftasche für Deine vertraulichen Daten</p> </li> </ul> </li> <li> <h3>Clipperz bietet Dir:</h3> <ul> <li> <p>einfaches Speichern und Verwalten von Passwörtern und Webzugangsdaten</p> </li> <li> <p>schnelles unkompliziertes einloggen, ohne Eingabe des Benutzernamen und Passworts, bei Webdiensten</p> </li> <li> <p>Schutz aller Deiner persönlichen Daten: Zutrittscodes, PINs, Benutzernamen, Passwörter, Kreditkartennummern, &hellip;</p> </li> <li> <p>Deine Geheimnisse mit Familienmitgliedern und Freunden zu teilen (mehr dazu in Kürze)</p> </li> </ul> </li> <li> <h3>Clipperz ist:</h3> <ul> <li> <p>kostenlos und absolut anonym</p> </li> <li> <p>unkomplizierter Zugriff zu jeder Zeit von jedem Rechner</p> </li> <li> <p>ohne Download und Installation verwendbar</p> </li> <li> <p>ein Schutz gegen das Speichern von Passwörtern auf Deinem PC oder das Notieren auf Papier</p> </li> </ul> </li> <li> <h3>Clipperz Sicherheit:</h3> <ul> <li> <p>Deine sensiblen persönlichen Informationen werden lokal durch Deinen Browser verschlüsselt, bevor sie an Clipperz über das Internet gesendet werden</p> </li> <li> <p>Der Schlüssel für diese Daten ist der Sicherheitssatz, den nur Du kennst</p> </li> <li> <p>Clipperz speichert Deine sensiblen Daten nur in verschlüsselter Form und kann zu keinem Zeitpunkt diese entschlüssel und in ihrer ursprünglichen Klartextform zugänglich machen</p> </li> <li> <p>Clipperz basiert auf standart Verschlüsselungsverfahren. Nichts ausergewöhnliches – oder hand gestricktes</p> </li> <li> <p>Du kannst den Quellcode zu jeder Zeit anschauen, aber Du brauchst nichts von Kryptographie zu verstehen um ein glücklicher Anwender zu sein!</p> </li> </ul> </li> <li> <a href=\"http://www.clipperz.com\" target=\"_blank\">Weitere Informationen</a> </li> </ul> ", 27 'clipperzServiceDescription':"<h2>Privatsphäre für Deine Daten</h2> <ul> <li> <h3>Clipperz heißt:</h3> <ul> <li> <p>sichere und einfache zu bedienene Passwortverwaltung</p> </li> <li> <p>eine effektive Lösung des einmaligen Anmeldens</p> </li> <li> <p>eine digitale Brieftasche für Deine vertraulichen Daten</p> </li> </ul> </li> <li> <h3>Clipperz bietet Dir:</h3> <ul> <li> <p>einfaches Speichern und Verwalten von Passwörtern und Webzugangsdaten</p> </li> <li> <p>schnelles unkompliziertes einloggen, ohne Eingabe des Benutzernamen und Passworts, bei Webdiensten</p> </li> <li> <p>Schutz aller Deiner persönlichen Daten: Zutrittscodes, PINs, Benutzernamen, Passwörter, Kreditkartennummern, &hellip;</p> </li> <li> <p>Deine Geheimnisse mit Familienmitgliedern und Freunden zu teilen (mehr dazu in Kürze)</p> </li> </ul> </li> <li> <h3>Clipperz ist:</h3> <ul> <li> <p>kostenlos und absolut anonym</p> </li> <li> <p>unkomplizierter Zugriff zu jeder Zeit von jedem Rechner</p> </li> <li> <p>ohne Download und Installation verwendbar</p> </li> <li> <p>ein Schutz gegen das Speichern von Passwörtern auf Deinem PC oder das Notieren auf Papier</p> </li> </ul> </li> <li> <h3>Clipperz Sicherheit:</h3> <ul> <li> <p>Deine sensiblen persönlichen Informationen werden lokal durch Deinen Browser verschlüsselt, bevor sie an Clipperz über das Internet gesendet werden</p> </li> <li> <p>Der Schlüssel für diese Daten ist der Sicherheitssatz, den nur Du kennst</p> </li> <li> <p>Clipperz speichert Deine sensiblen Daten nur in verschlüsselter Form und kann zu keinem Zeitpunkt diese entschlüssel und in ihrer ursprünglichen Klartextform zugänglich machen</p> </li> <li> <p>Clipperz basiert auf standart Verschlüsselungsverfahren. Nichts ausergewöhnliches – oder hand gestricktes</p> </li> <li> <p>Du kannst den Quellcode zu jeder Zeit anschauen, aber Du brauchst nichts von Kryptographie zu verstehen um ein glücklicher Anwender zu sein!</p> </li> </ul> </li> <li> <a href=\"http://www.clipperz.com\" target=\"_blank\">Weitere Informationen</a> </li> </ul> ",
31 'loginFormTitle':"Login zu Deinem Clipperz Konto", 28 'loginFormTitle':"Login zu Deinem Clipperz Konto",
32 'loginFormUsernameLabel':"Benutzernamen", 29 'loginFormUsernameLabel':"Benutzernamen",
33 'loginFormPassphraseLabel':"Sicherheitssatz", 30 'loginFormPassphraseLabel':"Sicherheitssatz",
34 'loginFormDontHaveAnAccountLabel':"Du hast noch kein Clipperz Konto?", 31 'loginFormDontHaveAnAccountLabel':"Du hast noch kein Clipperz Konto?",
35 'loginFormCreateOneLabel':"Konto erstellen", 32 'loginFormCreateOneLabel':"Konto erstellen",
36 'loginFormForgotYourCredentialsLabel':"Zugangsdaten vergessen?", 33 'loginFormForgotYourCredentialsLabel':"Zugangsdaten vergessen?",
37 'loginFormAarghThatsBadLabel':"Misst! Dass ist schlecht!", 34 'loginFormAarghThatsBadLabel':"Misst! Dass ist schlecht!",
38 'loginFormAfraidOfMaliciousScriptsLabel':"verängstigt von bösartigen Scripts?", 35 'loginFormAfraidOfMaliciousScriptsLabel':"verängstigt von bösartigen Scripts?",
39 'loginFormVerifyTheCodeLabel':"begutachte den Quellcode", 36 'loginFormVerifyTheCodeLabel':"begutachte den Quellcode",
40 'loginFormButtonLabel':"Einloggen", 37 'loginFormButtonLabel':"Einloggen",
41 'loginPanelSwithLanguageDescription':"<h5>Wechsel zu Deiner vervorzugten Sprache</h5> ", 38 'loginPanelSwithLanguageDescription':"<h5>Wechsel zu Deiner vervorzugten Sprache</h5> ",
42 'browserCompatibilityDescription':"<p>Bessere und sicherere Clipperz-Erfahrung mit Firefox. Clipperz funktioniert auch mit Safari, Opera und MS Internet Explorer!</p> ", 39 'browserCompatibilityDescription':"<p>Bessere und sicherere Clipperz-Erfahrung mit Firefox. Clipperz funktioniert auch mit Safari, Opera und MS Internet Explorer!</p> ",
43 'loginMessagePanelInitialTitle':"Du wirst eingeloggt…", 40 'loginMessagePanelInitialTitle':"Du wirst eingeloggt…",
44 'loginMessagePanelInitialButtonLabel':"Abbruch", 41 'loginMessagePanelInitialButtonLabel':"Abbruch",
45 'loginMessagePanelConnectedTitle':"Verbunden", 42 'loginMessagePanelConnectedTitle':"Verbunden",
46 'loginMessagePanelConnectedText':"Fertig", 43 'loginMessagePanelConnectedText':"Fertig",
47 'loginMessagePanelFailureTitle':"Fehler", 44 'loginMessagePanelFailureTitle':"Fehler",
48 'loginMessagePanelFailureText':"Login fehlgeschlagen", 45 'loginMessagePanelFailureText':"Login fehlgeschlagen",
49 'loginMessagePanelFailureButtonLabel':"Schließen", 46 'loginMessagePanelFailureButtonLabel':"Schließen",
50 'connectionLoginSendingCredentialsMessageTitle':"Prüfe Zugangsdaten", 47 'connectionLoginSendingCredentialsMessageTitle':"Prüfe Zugangsdaten",
51 'connectionLoginSendingCredentialsMessageText':"Sende Zugangsdaten", 48 'connectionLoginSendingCredentialsMessageText':"Sende Zugangsdaten",
52 'connectionLoginCredentialsVerificationMessageTitle':"Prüfe Zugangsdaten", 49 'connectionLoginCredentialsVerificationMessageTitle':"Prüfe Zugangsdaten",
53 'connectionLoginCredentialsVerificationMessageText':"Führe SRP Authentifizierung durch", 50 'connectionLoginCredentialsVerificationMessageText':"Führe SRP Authentifizierung durch",
54 'connectionLoginDoneMessageTitle':"Prüfe Zugangsdaten", 51 'connectionLoginDoneMessageTitle':"Prüfe Zugangsdaten",
55 'connectionLoginDoneMessageText':"Verbunden", 52 'connectionLoginDoneMessageText':"Verbunden",
56 'userLoginPanelUpgradingUserCredentialsMessageTitle':"Prüfe Zugangsdaten", 53 'userLoginPanelUpgradingUserCredentialsMessageTitle':"Prüfe Zugangsdaten",
57 'userLoginPanelUpgradingUserCredentialsMessageText':"Aktualisierung Deiner Zugangsdaten auf ein neues Authentifizierungsschema", 54 'userLoginPanelUpgradingUserCredentialsMessageText':"Aktualisierung Deiner Zugangsdaten auf ein neues Authentifizierungsschema",
58 'userLoginPanelConnectedMessageTitle':"Benutzer authentifiziert", 55 'userLoginPanelConnectedMessageTitle':"Benutzer authentifiziert",
59 'userLoginPanelConnectedMessageText':"Login erfolgreich", 56 'userLoginPanelConnectedMessageText':"Login erfolgreich",
60 'userLoginPanelTryingAnOlderConnectionSchemaMessageTitle':"Prüfe Zugangsdaten", 57 'userLoginPanelTryingAnOlderConnectionSchemaMessageTitle':"Prüfe Zugangsdaten",
61 'userLoginPanelTryingAnOlderConnectionSchemaMessageText':"Probiere älteres Authentifizierungsschema", 58 'userLoginPanelTryingAnOlderConnectionSchemaMessageText':"Probiere älteres Authentifizierungsschema",
62 'userLoginPanelLoadingUserDataMessageTitle':"Benutzer authentifiziert", 59 'userLoginPanelLoadingUserDataMessageTitle':"Benutzer authentifiziert",
63 'userLoginPanelLoadingUserDataMessageText':"Lade verschlüsselte Kartendaten von Clipperz", 60 'userLoginPanelLoadingUserDataMessageText':"Lade verschlüsselte Kartendaten von Clipperz",
64 'userLoginPanelDecryptingUserDataMessageTitle':"Benutzer authentifiziert", 61 'userLoginPanelDecryptingUserDataMessageTitle':"Benutzer authentifiziert",
65 'userLoginPanelDecryptingUserDataMessageText':"Lokale Entschlüsselung der Kartendaten", 62 'userLoginPanelDecryptingUserDataMessageText':"Lokale Entschlüsselung der Kartendaten",
66 'userLoginPanelDecryptingUserStatisticsMessageTitle':"Benutzer authentifiziert", 63 'userLoginPanelDecryptingUserStatisticsMessageTitle':"Benutzer authentifiziert",
67 'userLoginPanelDecryptingUserStatisticsMessageText':"Lokale Entschlüsselung der Benutzerstatisik", 64 'userLoginPanelDecryptingUserStatisticsMessageText':"Lokale Entschlüsselung der Benutzerstatisik",
68 'splashAlertTitle':"Willkommen bei Clipperz!", 65 'splashAlertTitle':"Willkommen bei Clipperz!",
69 'splashAlertText':"<p>Sicherheitshinweis</p> <ul> <li> <p>Die Speicherung von Informationen bei Clipperz ist so sicher, wie der Sicherheitssatz den Du zum Schutz gewählt hast. Ist der Sicherheitssatz nicht bekannt, können keine Informationen abgefragt werden.</p> </li> <li> <p>Solltest Du Clipperz nutzen, um sensible und kritische persönliche Daten abzuspeichern, so empfehlen wir in jedem Fall die Nutzung eines langen Sicherheitssatzes als Passwort und die Nutzung von Sonderzeichen, Zahlen, Groß- und Kleinbuchstaben.</p> </li> <li> <p>Clipperz kann einen verlorenen Sicherheitssatz nicht wiederherstellen!</p> </li> </ul> <p>Weitere Informationen findest Du bei <a href=\"http://www.clipperz.com\" target=\"_blank\">Clipperz</a>.</p> ", 66 'splashAlertText':"<p>Sicherheitshinweis</p> <ul> <li> <p>Die Speicherung von Informationen bei Clipperz ist so sicher, wie der Sicherheitssatz den Du zum Schutz gewählt hast. Ist der Sicherheitssatz nicht bekannt, können keine Informationen abgefragt werden.</p> </li> <li> <p>Solltest Du Clipperz nutzen, um sensible und kritische persönliche Daten abzuspeichern, so empfehlen wir in jedem Fall die Nutzung eines langen Sicherheitssatzes als Passwort und die Nutzung von Sonderzeichen, Zahlen, Groß- und Kleinbuchstaben.</p> </li> <li> <p>Clipperz kann einen verlorenen Sicherheitssatz nicht wiederherstellen!</p> </li> </ul> <p>Weitere Informationen findest Du bei <a href=\"http://www.clipperz.com\" target=\"_blank\">Clipperz</a>.</p> ",
70 'splashAlertCloseButtonLabel':"Ok", 67 'splashAlertCloseButtonLabel':"Ok",
71 'registrationFormTitle':"Erstelle Dein Konto", 68 'registrationFormTitle':"Erstelle Dein Konto",
72 'registrationFormUsernameLabel':"Benutzernamen", 69 'registrationFormUsernameLabel':"Benutzernamen",
73 'registrationFormPassphraseLabel':"Sicherheitssatz", 70 'registrationFormPassphraseLabel':"Sicherheitssatz",
74 'registrationFormRetypePassphraseLabel':"Wiederhole Sicherheitssatz", 71 'registrationFormRetypePassphraseLabel':"Wiederhole Sicherheitssatz",
75 'registrationFormSafetyCheckLabel':"Ich akzeptiere dass es Clipperz nicht möglich ist, einen verlorenen Sicherheitssatz wiederherzustellen.", 72 'registrationFormSafetyCheckLabel':"Ich akzeptiere dass es Clipperz nicht möglich ist, einen verlorenen Sicherheitssatz wiederherzustellen.",
76 'registrationFormTermsOfServiceCheckLabel':"Ich habe die <a href='http://www.clipperz.com/terms_of_service' target='_blank'>Nutzungsbedingungen</a> gelesen, verstanden und akzeptiere diese.", 73 'registrationFormTermsOfServiceCheckLabel':"Ich habe die <a href='http://www.clipperz.com/terms_of_service' target='_blank'>Nutzungsbedingungen</a> gelesen, verstanden und akzeptiere diese.",
77 'registrationFormDoYouAlreadyHaveAnAccountLabel':"Hast Du bereits einen Zugang?", 74 'registrationFormDoYouAlreadyHaveAnAccountLabel':"Hast Du bereits einen Zugang?",
78 'registrationFormSimplyLoginLabel':"Einloggen", 75 'registrationFormSimplyLoginLabel':"Einloggen",
79 'registrationFormButtonLabel':"Anmelden", 76 'registrationFormButtonLabel':"Anmelden",
80 'registrationFormWarningMessageNotMatchingPassphrases':"Deine Sicherheitssätze stimmen nicht überein. Bitte erneut eingeben.", 77 'registrationFormWarningMessageNotMatchingPassphrases':"Deine Sicherheitssätze stimmen nicht überein. Bitte erneut eingeben.",
81 'registrationFormWarningMessageSafetyCheckNotSelected':"Bitte lese die Bedingungen und akzeptiere die Auswahlboxen weiter unten.", 78 'registrationFormWarningMessageSafetyCheckNotSelected':"Bitte lese die Bedingungen und akzeptiere die Auswahlboxen weiter unten.",
82 'registrationFormWarningMessageTermsOfServiceCheckNotSelected':"Du musst die Nutzungsbedingungen akzeptieren.", 79 'registrationFormWarningMessageTermsOfServiceCheckNotSelected':"Du musst die Nutzungsbedingungen akzeptieren.",
83 'registrationMessagePanelInitialTitle':"Benutzer wird angelegt…", 80 'registrationMessagePanelInitialTitle':"Benutzer wird angelegt…",
84 'registrationMessagePanelInitialButtonLabel':"Abbruch", 81 'registrationMessagePanelInitialButtonLabel':"Abbruch",
85 'registrationMessagePanelRegistrationDoneTitle':"Anmeldung", 82 'registrationMessagePanelRegistrationDoneTitle':"Anmeldung",
86 'registrationMessagePanelRegistrationDoneText':"Fertig", 83 'registrationMessagePanelRegistrationDoneText':"Fertig",
87 'registrationMessagePanelFailureTitle':"Anmerldung fehlgeschlagen", 84 'registrationMessagePanelFailureTitle':"Anmerldung fehlgeschlagen",
88 'registrationMessagePanelFailureButtonLabel':"Schließen", 85 'registrationMessagePanelFailureButtonLabel':"Schließen",
89 'connectionRegistrationSendingRequestMessageText':"Zugangsdaten werden geprüft", 86 'connectionRegistrationSendingRequestMessageText':"Zugangsdaten werden geprüft",
90 'connectionRegistrationSendingCredentialsMessageText':"Sende Zugangsdaten", 87 'connectionRegistrationSendingCredentialsMessageText':"Sende Zugangsdaten",
91 'registrationSplashPanelTitle':"Sicherheitshinweis", 88 'registrationSplashPanelTitle':"Sicherheitshinweis",
92 'registrationSplashPanelDescription':"<p>Dies sind Deine Clipperz Zugangsdaten, pass sehr gut auf sie auf. Clipperz wird diese kein zweites und weiteres mal anzeigen!</p> ", 89 'registrationSplashPanelDescription':"<p>Dies sind Deine Clipperz Zugangsdaten, pass sehr gut auf sie auf. Clipperz wird diese kein zweites und weiteres mal anzeigen!</p> ",
93 'registrationSplashPanelUsernameLabel':"Benutzernamen", 90 'registrationSplashPanelUsernameLabel':"Benutzernamen",
94 'registrationSplashPanelPassphraseLabel':"Schlüsselsatz", 91 'registrationSplashPanelPassphraseLabel':"Schlüsselsatz",
95 'donateHeaderLinkLabel':"spende", 92 'donateHeaderLinkLabel':"spende",
96 'creditsHeaderLinkLabel':"credits", 93 'creditsHeaderLinkLabel':"credits",
97 'feedbackHeaderLinkLabel':"feedback", 94 'feedbackHeaderLinkLabel':"feedback",
98 'helpHeaderLinkLabel':"hilfe", 95 'helpHeaderLinkLabel':"hilfe",
99 'forumHeaderLinkLabel':"forum", 96 'forumHeaderLinkLabel':"forum",
100 'recordMenuLabel':"Karten", 97 'recordMenuLabel':"Karten",
101 'accountMenuLabel':"Benutzer", 98 'accountMenuLabel':"Benutzer",
102 'dataMenuLabel':"Daten", 99 'dataMenuLabel':"Daten",
103 'contactsMenuLabel':"Kontakt", 100 'contactsMenuLabel':"Kontakt",
104 'bookmarkletMenuLabel':"Bookmarklet", 101 'bookmarkletMenuLabel':"Bookmarklet",
105 'logoutMenuLabel':"Ausloggen", 102 'logoutMenuLabel':"Ausloggen",
106 'lockMenuLabel':"Sperren", 103 'lockMenuLabel':"Sperren",
107 'lockTitle':"Dieses Konto ist gesperrt", 104 'lockTitle':"Dieses Konto ist gesperrt",
108 'lockDescription':"<p>Bitte gebe Deinen Sicherheitssatz ein, um das Clipperz-Konto zu entsperren.</p> ", 105 'lockDescription':"<p>Bitte gebe Deinen Sicherheitssatz ein, um das Clipperz-Konto zu entsperren.</p> ",
109 'unlockButtonLabel':"Entsperren", 106 'unlockButtonLabel':"Entsperren",
110 'changePasswordTabLabel':"Sicherheitssatz ändern", 107 'changePasswordTabLabel':"Sicherheitssatz ändern",
111 'changePasswordTabTitle':"Sicherheitssatz ändern", 108 'changePasswordTabTitle':"Sicherheitssatz ändern",
112 'changePasswordFormUsernameLabel':"Benutzername", 109 'changePasswordFormUsernameLabel':"Benutzername",
113 'changePasswordFormOldPassphraseLabel':"Alter Sicherheitssatz", 110 'changePasswordFormOldPassphraseLabel':"Alter Sicherheitssatz",
114 'changePasswordFormNewPassphraseLabel':"Neuer Sicherheitssatz", 111 'changePasswordFormNewPassphraseLabel':"Neuer Sicherheitssatz",
115 'changePasswordFormRetypePassphraseLabel':"Wiederholdung neuen Sicherheitssatz", 112 'changePasswordFormRetypePassphraseLabel':"Wiederholdung neuen Sicherheitssatz",
116 'changePasswordFormSafetyCheckboxLabel':"Ich akzeptiere dass es Clipperz nicht möglich ist, einen verlorenen Sicherheitssatz wiederherzustellen.", 113 'changePasswordFormSafetyCheckboxLabel':"Ich akzeptiere dass es Clipperz nicht möglich ist, einen verlorenen Sicherheitssatz wiederherzustellen.",
117 'changePasswordFormSubmitLabel':"Sicherheitssatz ändern", 114 'changePasswordFormSubmitLabel':"Sicherheitssatz ändern",
118 'changePasswordFormWrongUsernameWarning':"Falscher Benutzername", 115 'changePasswordFormWrongUsernameWarning':"Falscher Benutzername",
119 'changePasswordFormWrongPassphraseWarning':"Falscher Sicherheitssatz", 116 'changePasswordFormWrongPassphraseWarning':"Falscher Sicherheitssatz",
120 'changePasswordFormWrongRetypePassphraseWarning':"Deine Sicherheitssätze stimmen nicht überein. Bitte erneut eingeben.", 117 'changePasswordFormWrongRetypePassphraseWarning':"Deine Sicherheitssätze stimmen nicht überein. Bitte erneut eingeben.",
121 'changePasswordFormSafetyCheckWarning':"Bitte ließ die folgenden Hinweise und akzeptiere diese.", 118 'changePasswordFormSafetyCheckWarning':"Bitte ließ die folgenden Hinweise und akzeptiere diese.",
122 'changePasswordFormProgressDialogTitle':"Ändere Zugangsdaten", 119 'changePasswordFormProgressDialogTitle':"Ändere Zugangsdaten",
123 'changePasswordFormProgressDialogConnectedMessageTitle':"Verbunden", 120 'changePasswordFormProgressDialogConnectedMessageTitle':"Verbunden",
124 'changePasswordFormProgressDialogConnectedMessageText':"Fertig", 121 'changePasswordFormProgressDialogConnectedMessageText':"Fertig",
125 'changePasswordFormProgressDialogErrorMessageTitle':"Fehler", 122 'changePasswordFormProgressDialogErrorMessageTitle':"Fehler",
126 'changePasswordFormProgressDialogErrorMessageText':"Ändern der Zugangsdaten fehlgeschlagen!", 123 'changePasswordFormProgressDialogErrorMessageText':"Ändern der Zugangsdaten fehlgeschlagen!",
127 'changeCredentialsPanelEncryptingDataMessageTitle':"Ändere Sicherheitssatz", 124 'changeCredentialsPanelEncryptingDataMessageTitle':"Ändere Sicherheitssatz",
128 'changeCredentialsPanelEncryptingDataMessageText':"Lokale Verschlüsselung der Kartendaten", 125 'changeCredentialsPanelEncryptingDataMessageText':"Lokale Verschlüsselung der Kartendaten",
129 'changeCredentialsPanelCreatingNewCredentialsMessageTitle':"Ändere Sicherheitssatz", 126 'changeCredentialsPanelCreatingNewCredentialsMessageTitle':"Ändere Sicherheitssatz",
130 'changeCredentialsPanelCreatingNewCredentialsMessageText':"Aktualisiere Zugangsdaten", 127 'changeCredentialsPanelCreatingNewCredentialsMessageText':"Aktualisiere Zugangsdaten",
131 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageTitle':"Ändere Sicherheitssatz", 128 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageTitle':"Ändere Sicherheitssatz",
132 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageText':"Sende verschlüsselte Zugangsdaten zu Clipperz", 129 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageText':"Sende verschlüsselte Zugangsdaten zu Clipperz",
133 'changeCredentialsPanelDoneMessageTitle':"Ändere Sicherheitssatz", 130 'changeCredentialsPanelDoneMessageTitle':"Ändere Sicherheitssatz",
134 'changeCredentialsPanelDoneMessageText':"Fertig", 131 'changeCredentialsPanelDoneMessageText':"Fertig",
135 'manageOTPTabLabel':"Verwaltung des Sicheitssatzes für einmaliges Anmelden", 132 'manageOTPTabLabel':"Verwaltung des Sicheitssatzes für einmaliges Anmelden",
136 'manageOTPTabTitle':"Verwaltung des Sicheitssatzes für einmaliges Anmelden", 133 'manageOTPTabTitle':"Verwaltung des Sicheitssatzes für einmaliges Anmelden",
137 'manageOTPTabDescription':"<p>Der Sicherheitssatz für einmaliges Anmelden funktoniert wie Dein regulärer Sicherheitssatz, nur dass er nur einmal verwendet werden kann.</p> <p>Sollte der gleiche Sicherheitssatz zu einem späteren Zeitpunkt nocheinmal genutzt werden, wird dieser automatisch zurückgewießen und der Einlogvorgang scheitert.</p> <p>Sofort nach einem erfolgreichen Login wird der Sicherheitssatz für einmaliges Anmelden gelöscht und somit verhindert dass er ungewollt verwendet wird.</p> <p>Die Nutzung von Sicherheitssätzen für einmaliges Anmelden sind eine ideale Möglichkeit wenn Du verunsichert bist ob Trojaner, Spyware oder ähnliches auf Deinem Rechner vorhanden ist.</p> <p> <b>Es wird empfohlen Sicherheitssätze für einmaliges Anmelden beim Zugiff auf Clipperz zu verwenden, wenn man sich an öffentlichen Rechnern befindet, wie in Internet Cafes oder Bücherreien.</b> </p> <p> </p> <p> <b>Mehr dazu in Kürze ...</b> </p> ", 134 'manageOTPTabDescription':"<p>Der Sicherheitssatz für einmaliges Anmelden funktoniert wie Dein regulärer Sicherheitssatz, nur dass er nur einmal verwendet werden kann.</p> <p>Sollte der gleiche Sicherheitssatz zu einem späteren Zeitpunkt nocheinmal genutzt werden, wird dieser automatisch zurückgewießen und der Einlogvorgang scheitert.</p> <p>Sofort nach einem erfolgreichen Login wird der Sicherheitssatz für einmaliges Anmelden gelöscht und somit verhindert dass er ungewollt verwendet wird.</p> <p>Die Nutzung von Sicherheitssätzen für einmaliges Anmelden sind eine ideale Möglichkeit wenn Du verunsichert bist ob Trojaner, Spyware oder ähnliches auf Deinem Rechner vorhanden ist.</p> <p> <b>Es wird empfohlen Sicherheitssätze für einmaliges Anmelden beim Zugiff auf Clipperz zu verwenden, wenn man sich an öffentlichen Rechnern befindet, wie in Internet Cafes oder Bücherreien.</b> </p> <p> </p> <p> <b>Mehr dazu in Kürze ...</b> </p> ",
138 'accountPreferencesLabel':"Einstellungen", 135 'accountPreferencesLabel':"Einstellungen",
139 'accountPreferencesTabTitle':"Einstellungen", 136 'accountPreferencesTabTitle':"Einstellungen",
140 'accountPreferencesLanguageTitle':"Sprachenauswahl", 137 'accountPreferencesLanguageTitle':"Sprachenauswahl",
141 'accountPreferencesLanguageDescription':"<p>Wähle Deine bevorzugte Sprache, aus der unten stehenden Liste.</p> ", 138 'accountPreferencesLanguageDescription':"<p>Wähle Deine bevorzugte Sprache, aus der unten stehenden Liste.</p> ",
142 'accountPreferencesInterfaceTitle':"Personalisiere Dein persönliches Clipperz-Erscheinungsbild", 139 'accountPreferencesInterfaceTitle':"Personalisiere Dein persönliches Clipperz-Erscheinungsbild",
143 'accountPreferencesInterfaceDescription':"<p>Passe dass Clipperz-Erscheinungsbild an Deine Wünsche an.</p> ", 140 'accountPreferencesInterfaceDescription':"<p>Passe dass Clipperz-Erscheinungsbild an Deine Wünsche an.</p> ",
144 'saveUserPreferencesFormSubmitLabel':"Speichern", 141 'saveUserPreferencesFormSubmitLabel':"Speichern",
145 'cancelUserPreferencesFormSubmitLabel':"Abbruch", 142 'cancelUserPreferencesFormSubmitLabel':"Abbruch",
146 'accountPreferencesSavingPanelTitle_Step1':"Speichere Einstellungen", 143 'accountPreferencesSavingPanelTitle_Step1':"Speichere Einstellungen",
147 'accountPreferencesSavingPanelText_Step1':"Lokale Verschlüsselung der Einstellungen", 144 'accountPreferencesSavingPanelText_Step1':"Lokale Verschlüsselung der Einstellungen",
148 'accountPreferencesSavingPanelTitle_Step2':"Speichere Einstellungen", 145 'accountPreferencesSavingPanelTitle_Step2':"Speichere Einstellungen",
149 'accountPreferencesSavingPanelText_Step2':"Sende verschlüsselte Einstellungen", 146 'accountPreferencesSavingPanelText_Step2':"Sende verschlüsselte Einstellungen",
150 'deleteAccountTabLabel':"Konto löschen", 147 'deleteAccountTabLabel':"Konto löschen",
151 'deleteAccountTabTitle':"Konto löschen", 148 'deleteAccountTabTitle':"Konto löschen",
152 'deleteAccountFormUsernameLabel':"Benutzername", 149 'deleteAccountFormUsernameLabel':"Benutzername",
diff --git a/frontend/beta/js/Clipperz/PM/Strings/Strings_el-GR.js b/frontend/beta/js/Clipperz/PM/Strings/Strings_el-GR.js
index 37e0a96..fc610d6 100644
--- a/frontend/beta/js/Clipperz/PM/Strings/Strings_el-GR.js
+++ b/frontend/beta/js/Clipperz/PM/Strings/Strings_el-GR.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29//============================================================================= 26//=============================================================================
30// 27//
31 // G R E E K (el_GR) 28 // G R E E K (el_GR)
32// 29//
33//============================================================================= 30//=============================================================================
34 31
35Clipperz.PM.Strings.Languages['el-gr'] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], { 32Clipperz.PM.Strings.Languages['el-gr'] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], {
36 33
37//----------------------------------------------------- 34//-----------------------------------------------------
38 //Login page - description 35 //Login page - description
39 'clipperzServiceDescriptionConfig': [ 36 'clipperzServiceDescriptionConfig': [
40 {tag:'h2', html:'Κρατήστε το για τον Εαυτό Σας'}, 37 {tag:'h2', html:'Κρατήστε το για τον Εαυτό Σας'},
41 {tag:'ul', children:[ 38 {tag:'ul', children:[
42 {tag:'li', children:[ 39 {tag:'li', children:[
43 {tag:'h3', html:'Το Clipperz είναι:'}, 40 {tag:'h3', html:'Το Clipperz είναι:'},
44 {tag:'ul', children:[ 41 {tag:'ul', children:[
45 {tag:'li', children:[{tag:'span', html:'Ένας ασφαλής και απλός τρόπος διαχείρησης όλων των κωδικών πρόσβασης σας'}]}, 42 {tag:'li', children:[{tag:'span', html:'Ένας ασφαλής και απλός τρόπος διαχείρησης όλων των κωδικών πρόσβασης σας'}]},
46 {tag:'li', children:[{tag:'span', html:'Μια αποτελεσματική λύση πρόσβασης σε δεδομένα/εφαρμογές με μοναδικό κωδικό'}]}, 43 {tag:'li', children:[{tag:'span', html:'Μια αποτελεσματική λύση πρόσβασης σε δεδομένα/εφαρμογές με μοναδικό κωδικό'}]},
47 {tag:'li', children:[{tag:'span', html:'Μια ψηφιακή θυρίδα για τα απόρρητα δεδομένα σας'}]} 44 {tag:'li', children:[{tag:'span', html:'Μια ψηφιακή θυρίδα για τα απόρρητα δεδομένα σας'}]}
48 ]} 45 ]}
49 ]}, 46 ]},
50 {tag:'li', children:[ 47 {tag:'li', children:[
51 {tag:'h3', html:'Με το Clipperz μπορείτε:'}, 48 {tag:'h3', html:'Με το Clipperz μπορείτε:'},
52 {tag:'ul', children:[ 49 {tag:'ul', children:[
53 {tag:'li', children:[{tag:'span', html:'Να αποθηκεύσετε και να διαχειριστείτε όλους τους κωδικούς πρόσβασης και τα online πιστοποιητικά/διαπιστευτήρια σας'}]}, 50 {tag:'li', children:[{tag:'span', html:'Να αποθηκεύσετε και να διαχειριστείτε όλους τους κωδικούς πρόσβασης και τα online πιστοποιητικά/διαπιστευτήρια σας'}]},
54 {tag:'li', children:[{tag:'span', html:'Να έχετε πρόσβαση (login) στις υπηρεσίες διαδικτύου χωρίς την εισαγωγή oνομάτων λογαρισμών χρήστη (username),ή, κωδικών πρόσβασης (passwords)'}]}, 51 {tag:'li', children:[{tag:'span', html:'Να έχετε πρόσβαση (login) στις υπηρεσίες διαδικτύου χωρίς την εισαγωγή oνομάτων λογαρισμών χρήστη (username),ή, κωδικών πρόσβασης (passwords)'}]},
55 {tag:'li', children:[{tag:'span', html:'Να προστατεύσετε όλα τα προσωπικά δεδομένα σας: κωδικούς συναγερμών, PINs, αριθμούς πιστωτικών καρτών, ...'}]}, 52 {tag:'li', children:[{tag:'span', html:'Να προστατεύσετε όλα τα προσωπικά δεδομένα σας: κωδικούς συναγερμών, PINs, αριθμούς πιστωτικών καρτών, ...'}]},
56 {tag:'li', children:[{tag:'span', html:'Να μοιραστείτε δεδομένα με μέλη της οικογένεια σας και τους συνεργάτες σας (σύντομα στην διάθεση σας)'}]} 53 {tag:'li', children:[{tag:'span', html:'Να μοιραστείτε δεδομένα με μέλη της οικογένεια σας και τους συνεργάτες σας (σύντομα στην διάθεση σας)'}]}
57 ]} 54 ]}
58 ]}, 55 ]},
59 {tag:'li', children:[ 56 {tag:'li', children:[
60 {tag:'h3', html:'Τα πλεονεκτήματα του Clipperz είναι:'}, 57 {tag:'h3', html:'Τα πλεονεκτήματα του Clipperz είναι:'},
61 {tag:'ul', children:[ 58 {tag:'ul', children:[
62 {tag:'li', children:[{tag:'span', html:'Είναι δωρεάν και προσφέρει πρόσβαση ανώνυμα'}]}, 59 {tag:'li', children:[{tag:'span', html:'Είναι δωρεάν και προσφέρει πρόσβαση ανώνυμα'}]},
63 {tag:'li', children:[{tag:'span', html:'Μπορεί να χρησιμοποιηθεί οποαδήποτε ώρα και από οποιοδήποτε τερματικό'}]}, 60 {tag:'li', children:[{tag:'span', html:'Μπορεί να χρησιμοποιηθεί οποαδήποτε ώρα και από οποιοδήποτε τερματικό'}]},
64 {tag:'li', children:[{tag:'span', html:'Δεν απαιτεί την φόρτωση και εγκατάσταση οποιουδήποτε λογισμικού'}]}, 61 {tag:'li', children:[{tag:'span', html:'Δεν απαιτεί την φόρτωση και εγκατάσταση οποιουδήποτε λογισμικού'}]},
65 {tag:'li', children:[{tag:'span', html:'Αποφεύγετε την διατήριση απορρήτων στον υπολογιστή σας ή σε έντυπη μορφή'}]} 62 {tag:'li', children:[{tag:'span', html:'Αποφεύγετε την διατήριση απορρήτων στον υπολογιστή σας ή σε έντυπη μορφή'}]}
66 ]} 63 ]}
67 ]}, 64 ]},
68 {tag:'li', children:[ 65 {tag:'li', children:[
69 {tag:'h3', html:'Η ασφάλεια που παρέχει το Clipperz:'}, 66 {tag:'h3', html:'Η ασφάλεια που παρέχει το Clipperz:'},
70 {tag:'ul', children:[ 67 {tag:'ul', children:[
71 {tag:'li', children:[{tag:'span', html:'Τα απόρρητα δεδομένα σας κωδικοποιούνται τοπικά από τον διακομιστή σας (browser) πρίν να φορτωθούν στο Clipperz'}]}, 68 {tag:'li', children:[{tag:'span', html:'Τα απόρρητα δεδομένα σας κωδικοποιούνται τοπικά από τον διακομιστή σας (browser) πρίν να φορτωθούν στο Clipperz'}]},
72 {tag:'li', children:[{tag:'span', html:'Το κλειδί της κωδικοποίησης είναι μία φράση-κωδικός γνωστή μόνο σε εσάς'}]}, 69 {tag:'li', children:[{tag:'span', html:'Το κλειδί της κωδικοποίησης είναι μία φράση-κωδικός γνωστή μόνο σε εσάς'}]},
73 {tag:'li', children:[{tag:'span', html:'Το Clipperz φυλάσσει τα προσωπικά σας δεδομένα σε κωδικοποιημένη μορφή, και δεν μπορεί να έχει πρόσβαση σε αυτά στην αρχική τους μορφή'}]}, 70 {tag:'li', children:[{tag:'span', html:'Το Clipperz φυλάσσει τα προσωπικά σας δεδομένα σε κωδικοποιημένη μορφή, και δεν μπορεί να έχει πρόσβαση σε αυτά στην αρχική τους μορφή'}]},
74 {tag:'li', children:[{tag:'span', html:'Το Clipperz χρησιμοποιεί επίσημες /πρότυπες μεθόδους κωδικοποίησης, και όχι αόριστα και εφάνταστα μοντέλα'}]}, 71 {tag:'li', children:[{tag:'span', html:'Το Clipperz χρησιμοποιεί επίσημες /πρότυπες μεθόδους κωδικοποίησης, και όχι αόριστα και εφάνταστα μοντέλα'}]},
75 {tag:'li', children:[{tag:'span', html:'Έχετε πρόσβαση στον πηγαίο κώδικα οποτεδήποτε το θελήσετε, και δεν χρειάζετε να γνωρίζετε τίποτα από κρυπτογράφηση για να είστε ένας ευχαριστημένος χρήστης!'}]} 72 {tag:'li', children:[{tag:'span', html:'Έχετε πρόσβαση στον πηγαίο κώδικα οποτεδήποτε το θελήσετε, και δεν χρειάζετε να γνωρίζετε τίποτα από κρυπτογράφηση για να είστε ένας ευχαριστημένος χρήστης!'}]}
76 ]} 73 ]}
77 ]}, 74 ]},
78 {tag:'li', children:[ 75 {tag:'li', children:[
79 {tag:'a', href:"http://www.clipperz.com", target:'_blank', html:'Μάθετε περισσότερα'} 76 {tag:'a', href:"http://www.clipperz.com", target:'_blank', html:'Μάθετε περισσότερα'}
80 ]} 77 ]}
81 ]} 78 ]}
82 ], 79 ],
83 80
84 // Login page - form 81 // Login page - form
85 'loginFormTitle': "Συνδεθείτε με τον Clipperz λογαριασμό σας", 82 'loginFormTitle': "Συνδεθείτε με τον Clipperz λογαριασμό σας",
86 'loginFormUsernameLabel': "Όνομα χρήστη", 83 'loginFormUsernameLabel': "Όνομα χρήστη",
87 'loginFormPassphraseLabel': "Κωδική φράση", 84 'loginFormPassphraseLabel': "Κωδική φράση",
88 'loginFormDontHaveAnAccountLabel': "Δεν έχετε δημιουργήσει λογαριασμό?", 85 'loginFormDontHaveAnAccountLabel': "Δεν έχετε δημιουργήσει λογαριασμό?",
89 'loginFormCreateOneLabel': "Δημιουργήστε έναν", 86 'loginFormCreateOneLabel': "Δημιουργήστε έναν",
90 'loginFormForgotYourCredentialsLabel': "Ξεχάσατε τα διαπιστευτήριά σας?", 87 'loginFormForgotYourCredentialsLabel': "Ξεχάσατε τα διαπιστευτήριά σας?",
91 'loginFormAarghThatsBadLabel': "Ααααργκ! Αυτό είναι κακό!", 88 'loginFormAarghThatsBadLabel': "Ααααργκ! Αυτό είναι κακό!",
92 'loginFormAfraidOfMaliciousScriptsLabel':"φοβάστε κακόβουλα προγράμματα (scripts)?", 89 'loginFormAfraidOfMaliciousScriptsLabel':"φοβάστε κακόβουλα προγράμματα (scripts)?",
93 'loginFormVerifyTheCodeLabel': "Επαληθεύστε τον κωδικό", 90 'loginFormVerifyTheCodeLabel': "Επαληθεύστε τον κωδικό",
94 'loginFormButtonLabel': "Σύνδεση", 91 'loginFormButtonLabel': "Σύνδεση",
95 92
96// Login page - language selection 93// Login page - language selection
97 'loginPanelSwithLanguageDescriptionConfig':[ 94 'loginPanelSwithLanguageDescriptionConfig':[
98 {tag:'h5', html:"Αλλάξτε στην γλώσσα προτήμησης σας"} 95 {tag:'h5', html:"Αλλάξτε στην γλώσσα προτήμησης σας"}
99 ], 96 ],
100 97
101// Login page - browser compatibility 98// Login page - browser compatibility
102 'browserCompatibilityDescriptionConfig':[ 99 'browserCompatibilityDescriptionConfig':[
103 {tag:'p', html:"Έχετε μία καλύτερη και πιό ασφαλή Clipperz εμπειρία χρησιμοποιόντας τον Firefox. Ωστόσο το Clipperz συνεργάζετε άψογα με Opera και MS Internet Explorer!"} 100 {tag:'p', html:"Έχετε μία καλύτερη και πιό ασφαλή Clipperz εμπειρία χρησιμοποιόντας τον Firefox. Ωστόσο το Clipperz συνεργάζετε άψογα με Opera και MS Internet Explorer!"}
104 ], 101 ],
105 102
106// Login message panel 103// Login message panel
107 'loginMessagePanelInitialTitle': "Γίνεται σύνδεση ...", 104 'loginMessagePanelInitialTitle': "Γίνεται σύνδεση ...",
108 'loginMessagePanelInitialButtonLabel': "Ακύρωση", 105 'loginMessagePanelInitialButtonLabel': "Ακύρωση",
109 'loginMessagePanelConnectedTitle': "Συνδεθήκατε", 106 'loginMessagePanelConnectedTitle': "Συνδεθήκατε",
110 'loginMessagePanelConnectedText': "Ολοκληρώθηκε", 107 'loginMessagePanelConnectedText': "Ολοκληρώθηκε",
111 'loginMessagePanelFailureTitle': "Λάθος", 108 'loginMessagePanelFailureTitle': "Λάθος",
112 'loginMessagePanelFailureText': "Η σύνδεση χρήστη απέτυχε", 109 'loginMessagePanelFailureText': "Η σύνδεση χρήστη απέτυχε",
113 'loginMessagePanelFailureButtonLabel': "Κλείσιμο", 110 'loginMessagePanelFailureButtonLabel': "Κλείσιμο",
114 111
115// Login message panel - connection 112// Login message panel - connection
116 'connectionLoginSendingCredentialsMessageTitle': "Γίνεται επαλήθευση διαπιστευτηρίων", 113 'connectionLoginSendingCredentialsMessageTitle': "Γίνεται επαλήθευση διαπιστευτηρίων",
117 'connectionLoginSendingCredentialsMessageText': "Αποστέλλονται διαπιστευτήρια", 114 'connectionLoginSendingCredentialsMessageText': "Αποστέλλονται διαπιστευτήρια",
118 'connectionLoginCredentialsVerificationMessageTitle':"Γίνεται επαλήθευση διαπιστευτηρίων", 115 'connectionLoginCredentialsVerificationMessageTitle':"Γίνεται επαλήθευση διαπιστευτηρίων",
119 'connectionLoginCredentialsVerificationMessageText':"Εκτέλεση πιστοποίησης SRP ", 116 'connectionLoginCredentialsVerificationMessageText':"Εκτέλεση πιστοποίησης SRP ",
120 'connectionLoginDoneMessageTitle': "Γίνεται επαλήθευση διαπιστευτηρίων", 117 'connectionLoginDoneMessageTitle': "Γίνεται επαλήθευση διαπιστευτηρίων",
121 'connectionLoginDoneMessageText': "Συνδεδεμένος", 118 'connectionLoginDoneMessageText': "Συνδεδεμένος",
122 119
123 //Login message panel - user 120 //Login message panel - user
124 'userLoginPanelUpgradingUserCredentialsMessageTitle': "Γίνεται επαλήθευση διαπιστευτηρίων", 121 'userLoginPanelUpgradingUserCredentialsMessageTitle': "Γίνεται επαλήθευση διαπιστευτηρίων",
125 'userLoginPanelUpgradingUserCredentialsMessageText': "Αναβάθμηση των διαπιστευτηρίων σας σε ένα νέο σζήμα πιστοποίησης", 122 'userLoginPanelUpgradingUserCredentialsMessageText': "Αναβάθμηση των διαπιστευτηρίων σας σε ένα νέο σζήμα πιστοποίησης",
126 'userLoginPanelConnectedMessageTitle': "Χρήστης πιστοποιήθηκε ", 123 'userLoginPanelConnectedMessageTitle': "Χρήστης πιστοποιήθηκε ",
127 'userLoginPanelConnectedMessageText': "Συνδεθήκατε με επιτυχία", 124 'userLoginPanelConnectedMessageText': "Συνδεθήκατε με επιτυχία",
128 'userLoginPanelTryingAnOlderConnectionSchemaMessageTitle': "Γίνεται επαλήθευση διαπιστευτηρίων", 125 'userLoginPanelTryingAnOlderConnectionSchemaMessageTitle': "Γίνεται επαλήθευση διαπιστευτηρίων",
129 'userLoginPanelTryingAnOlderConnectionSchemaMessageText': "Trying an older authentication schema", 126 'userLoginPanelTryingAnOlderConnectionSchemaMessageText': "Trying an older authentication schema",
130 'userLoginPanelLoadingUserDataMessageTitle': "Χρήστης πιστοποιήθηκε ", 127 'userLoginPanelLoadingUserDataMessageTitle': "Χρήστης πιστοποιήθηκε ",
131 'userLoginPanelLoadingUserDataMessageText': "Downloading encrypted card headers from Clipperz", 128 'userLoginPanelLoadingUserDataMessageText': "Downloading encrypted card headers from Clipperz",
132 'userLoginPanelDecryptingUserDataMessageTitle': "Χρήστης πιστοποιήθηκε ", 129 'userLoginPanelDecryptingUserDataMessageTitle': "Χρήστης πιστοποιήθηκε ",
133 'userLoginPanelDecryptingUserDataMessageText': "Local decryption of card headers", 130 'userLoginPanelDecryptingUserDataMessageText': "Local decryption of card headers",
134 'userLoginPanelDecryptingUserStatisticsMessageTitle': "Χρήστης πιστοποιήθηκε ", 131 'userLoginPanelDecryptingUserStatisticsMessageTitle': "Χρήστης πιστοποιήθηκε ",
135 'userLoginPanelDecryptingUserStatisticsMessageText': "Local decryption of usage statistics", 132 'userLoginPanelDecryptingUserStatisticsMessageText': "Local decryption of usage statistics",
136 133
137 //----------------------------------------------------- 134 //-----------------------------------------------------
138 //Registration page - splash alert 135 //Registration page - splash alert
139 'splashAlertTitle':"Καλώς ήλθατε στο Clipperz!", 136 'splashAlertTitle':"Καλώς ήλθατε στο Clipperz!",
140 'splashAlertTextConfig': [ 137 'splashAlertTextConfig': [
141 {tag:'p', html:'Μερικές συμβουλές ασφαλείας'}, 138 {tag:'p', html:'Μερικές συμβουλές ασφαλείας'},
142 {tag:'ul', children:[ 139 {tag:'ul', children:[
143 {tag:'li', children:[{tag:'span', html:'Η αποθήκευση των δεδομένων σας στο Clipperz είναι τόσο ασφαλής, όσο η κωδική φράση που επιλέγετε για να τα προστατεύσετε. Κανένας δεν θα έχει πρόσβαση σε αυτά, εκτός αν γνωρίζει την κωδική φράση σας.'}]}, 140 {tag:'li', children:[{tag:'span', html:'Η αποθήκευση των δεδομένων σας στο Clipperz είναι τόσο ασφαλής, όσο η κωδική φράση που επιλέγετε για να τα προστατεύσετε. Κανένας δεν θα έχει πρόσβαση σε αυτά, εκτός αν γνωρίζει την κωδική φράση σας.'}]},
144 {tag:'li', children:[{tag:'span', html:'Αν πρόκειται να χρησιμοποιήσετε το Clipperz για ασφαλή προστασία ευαίσθητων ή σημαντικών πληροφοριών, βεβαιωθείτε ότι θα χρησιμοποιήσετε μία “γερή” κωδική φράση. Όσο μεγαλύτερη, τόσο καλύτερη!'}]}, 141 {tag:'li', children:[{tag:'span', html:'Αν πρόκειται να χρησιμοποιήσετε το Clipperz για ασφαλή προστασία ευαίσθητων ή σημαντικών πληροφοριών, βεβαιωθείτε ότι θα χρησιμοποιήσετε μία “γερή” κωδική φράση. Όσο μεγαλύτερη, τόσο καλύτερη!'}]},
145 {tag:'li', children:[{tag:'span', html:'Το Clipperz δεν θα έχει τη δυνατότητα να ανακτήσει μία χαμένη κωδική φράση!'}]} 142 {tag:'li', children:[{tag:'span', html:'Το Clipperz δεν θα έχει τη δυνατότητα να ανακτήσει μία χαμένη κωδική φράση!'}]}
146 ]}, 143 ]},
147 {tag:'p', html:'Για περισσότερες πληροφορίες, παρακαλώ ανατρέξτε στο <a href=\"http://www.clipperz.com\" target=\"_blank\">Clipperz</a>.'} 144 {tag:'p', html:'Για περισσότερες πληροφορίες, παρακαλώ ανατρέξτε στο <a href=\"http://www.clipperz.com\" target=\"_blank\">Clipperz</a>.'}
148 ], 145 ],
149 'splashAlertCloseButtonLabel':"Εντάξει", 146 'splashAlertCloseButtonLabel':"Εντάξει",
150 147
151 // Registration page - form 148 // Registration page - form
152 'registrationFormTitle': "Δημιουργήστε λογαριασμό", 149 'registrationFormTitle': "Δημιουργήστε λογαριασμό",
diff --git a/frontend/beta/js/Clipperz/PM/Strings/Strings_en-CA.js b/frontend/beta/js/Clipperz/PM/Strings/Strings_en-CA.js
index 50fa7e5..6879c60 100644
--- a/frontend/beta/js/Clipperz/PM/Strings/Strings_en-CA.js
+++ b/frontend/beta/js/Clipperz/PM/Strings/Strings_en-CA.js
@@ -1,43 +1,40 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29//============================================================================= 26//=============================================================================
30// 27//
31 // E N G L I S H C A N A D I A N ( en_CA ) 28 // E N G L I S H C A N A D I A N ( en_CA )
32// 29//
33//============================================================================= 30//=============================================================================
34 31
35Clipperz.PM.Strings.Languages['en-ca'] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], { 32Clipperz.PM.Strings.Languages['en-ca'] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], {
36 33
37 // 'forumHeaderLinkLabel': "forum-CA", 34 // 'forumHeaderLinkLabel': "forum-CA",
38 35
39 // 'recordMenuLabel': "cards-CA", 36 // 'recordMenuLabel': "cards-CA",
40 37
41 //------------------------------------------------------------------------- 38 //-------------------------------------------------------------------------
42 __syntaxFix__: "syntax fix" 39 __syntaxFix__: "syntax fix"
43}); \ No newline at end of file 40}); \ No newline at end of file
diff --git a/frontend/beta/js/Clipperz/PM/Strings/Strings_en-GB.js b/frontend/beta/js/Clipperz/PM/Strings/Strings_en-GB.js
index ea55650..f734c8e 100644
--- a/frontend/beta/js/Clipperz/PM/Strings/Strings_en-GB.js
+++ b/frontend/beta/js/Clipperz/PM/Strings/Strings_en-GB.js
@@ -1,43 +1,40 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29//============================================================================= 26//=============================================================================
30// 27//
31 // E N G L I S H B R I T I S H ( en_GB ) 28 // E N G L I S H B R I T I S H ( en_GB )
32// 29//
33//============================================================================= 30//=============================================================================
34 31
35Clipperz.PM.Strings.Languages['en-gb'] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], { 32Clipperz.PM.Strings.Languages['en-gb'] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], {
36 33
37 // 'forumHeaderLinkLabel': "forum-GB", 34 // 'forumHeaderLinkLabel': "forum-GB",
38 35
39 // 'recordMenuLabel': "cards-GB", 36 // 'recordMenuLabel': "cards-GB",
40 37
41 //------------------------------------------------------------------------- 38 //-------------------------------------------------------------------------
42 __syntaxFix__: "syntax fix" 39 __syntaxFix__: "syntax fix"
43}); \ No newline at end of file 40}); \ No newline at end of file
diff --git a/frontend/beta/js/Clipperz/PM/Strings/Strings_en-US.js b/frontend/beta/js/Clipperz/PM/Strings/Strings_en-US.js
index c0dd6d0..9fa95e9 100644
--- a/frontend/beta/js/Clipperz/PM/Strings/Strings_en-US.js
+++ b/frontend/beta/js/Clipperz/PM/Strings/Strings_en-US.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31if (typeof(Clipperz.PM.Strings) == 'undefined') { Clipperz.PM.Strings = {}; } 28if (typeof(Clipperz.PM.Strings) == 'undefined') { Clipperz.PM.Strings = {}; }
32if (typeof(Clipperz.PM.Strings.Languages) == 'undefined') { Clipperz.PM.Strings.Languages = {}; } 29if (typeof(Clipperz.PM.Strings.Languages) == 'undefined') { Clipperz.PM.Strings.Languages = {}; }
33 30
34//============================================================================= 31//=============================================================================
35// 32//
36 // E N G L I S H A M E R I C A N ( en_US ) 33 // E N G L I S H A M E R I C A N ( en_US )
37// 34//
38//============================================================================= 35//=============================================================================
39 36
40Clipperz.PM.Strings.Languages['en-us'] = { 37Clipperz.PM.Strings.Languages['en-us'] = {
41 38
42 //Login page - description 39 //Login page - description
43'clipperzServiceDescription': "\ 40'clipperzServiceDescription': "\
44 <!-- FIX CSS DONE -->\ 41 <!-- FIX CSS DONE -->\
45 <h2>Keep it to yourself!</h2>\ 42 <h2>Keep it to yourself!</h2>\
46 <ul>\ 43 <ul>\
47 <li>\ 44 <li>\
48 <h3>Clipperz is:</h3>\ 45 <h3>Clipperz is:</h3>\
49 <ul>\ 46 <ul>\
50 <li><p>a secure and simple password manager</p></li>\ 47 <li><p>a secure and simple password manager</p></li>\
51 <li><p>an effective single sign-on solution</p></li>\ 48 <li><p>an effective single sign-on solution</p></li>\
52 <li><p>a digital vault for your personal data</p></li>\ 49 <li><p>a digital vault for your personal data</p></li>\
53 </ul>\ 50 </ul>\
54 </li>\ 51 </li>\
55 <li>\ 52 <li>\
56 <h3>With Clipperz you can:</h3>\ 53 <h3>With Clipperz you can:</h3>\
57 <ul>\ 54 <ul>\
58 <li><p>store and manage your passwords and online credentials</p></li>\ 55 <li><p>store and manage your passwords and online credentials</p></li>\
59 <li><p>login to your web services without entering any username or password</p></li>\ 56 <li><p>login to your web services without entering any username or password</p></li>\
60 <li><p>protect all your sensitive data: codes for burglar alarms, PINs, credit card numbers, …</p></li>\ 57 <li><p>protect all your sensitive data: codes for burglar alarms, PINs, credit card numbers, …</p></li>\
61 <li><p>share secrets with family members and associates (coming soon)</p></li>\ 58 <li><p>share secrets with family members and associates (coming soon)</p></li>\
62 </ul>\ 59 </ul>\
63 </li>\ 60 </li>\
64 <li>\ 61 <li>\
65 <h3>Clipperz benefits:</h3>\ 62 <h3>Clipperz benefits:</h3>\
66 <ul>\ 63 <ul>\
67 <li><p>free and completely anonymous</p></li>\ 64 <li><p>free and completely anonymous</p></li>\
68 <li><p>access it any time from any computer</p></li>\ 65 <li><p>access it any time from any computer</p></li>\
69 <li><p>no software to download and nothing to install</p></li>\ 66 <li><p>no software to download and nothing to install</p></li>\
70 <li><p>avoid keeping secrets on your PC or on paper</p></li>\ 67 <li><p>avoid keeping secrets on your PC or on paper</p></li>\
71 </ul>\ 68 </ul>\
72 </li>\ 69 </li>\
73 <li>\ 70 <li>\
74 <h3>Clipperz security:</h3>\ 71 <h3>Clipperz security:</h3>\
75 <ul>\ 72 <ul>\
76 <li><p>your secrets are locally encrypted by your browser before being uploaded to Clipperz</p></li>\ 73 <li><p>your secrets are locally encrypted by your browser before being uploaded to Clipperz</p></li>\
77 <li><p>the encryption key is a passphrase known only to you</p></li>\ 74 <li><p>the encryption key is a passphrase known only to you</p></li>\
78 <li><p>Clipperz hosts your sensitive data in encrypted form and could never actually access the data in its plain form</p></li>\ 75 <li><p>Clipperz hosts your sensitive data in encrypted form and could never actually access the data in its plain form</p></li>\
79 <li><p>Clipperz is built upon standard encryption schemes, nothing fancies or homemade</p></li>\ 76 <li><p>Clipperz is built upon standard encryption schemes, nothing fancies or homemade</p></li>\
80 <li><p>you can review the source code anytime you like, but you need to know nothing about cryptography to be an happy user!</p></li>\ 77 <li><p>you can review the source code anytime you like, but you need to know nothing about cryptography to be an happy user!</p></li>\
81 </ul>\ 78 </ul>\
82 </li>\ 79 </li>\
83 <li>\ 80 <li>\
84 <a href=\"http://www.clipperz.com\" target=\"_blank\">Learn more</a>\ 81 <a href=\"http://www.clipperz.com\" target=\"_blank\">Learn more</a>\
85 </li>\ 82 </li>\
86 </ul>", 83 </ul>",
87 84
88 85
89 'loginFormTitle': "login with your Clipperz account", 86 'loginFormTitle': "login with your Clipperz account",
90 'loginFormUsernameLabel': "username", 87 'loginFormUsernameLabel': "username",
91 'loginFormPassphraseLabel': "passphrase", 88 'loginFormPassphraseLabel': "passphrase",
92 'loginFormDontHaveAnAccountLabel': "don\'t have an account?", 89 'loginFormDontHaveAnAccountLabel': "don\'t have an account?",
93 'loginFormCreateOneLabel': "create one", 90 'loginFormCreateOneLabel': "create one",
94 'loginFormForgotYourCredentialsLabel': "forgot your credentials?", 91 'loginFormForgotYourCredentialsLabel': "forgot your credentials?",
95 'loginFormAarghThatsBadLabel': "aargh! that\'s bad!", 92 'loginFormAarghThatsBadLabel': "aargh! that\'s bad!",
96 'loginFormAfraidOfMaliciousScriptsLabel': "afraid of malicious scripts?", 93 'loginFormAfraidOfMaliciousScriptsLabel': "afraid of malicious scripts?",
97 'loginFormVerifyTheCodeLabel': "verify the code", 94 'loginFormVerifyTheCodeLabel': "verify the code",
98 'loginFormButtonLabel': "Login", 95 'loginFormButtonLabel': "Login",
99 'loginFormOneTimePasswordCheckboxLabel': "use a one-time passphrase", 96 'loginFormOneTimePasswordCheckboxLabel': "use a one-time passphrase",
100'loginFormOneTimePasswordCheckboxDescription': "", 97'loginFormOneTimePasswordCheckboxDescription': "",
101 98
102// Login page - language selection 99// Login page - language selection
103 'loginPanelSwithLanguageDescription': "<h5>Switch to your preferred language</h5>", 100 'loginPanelSwithLanguageDescription': "<h5>Switch to your preferred language</h5>",
104 101
105// Login page - browser compatibility 102// Login page - browser compatibility
106 'browserCompatibilityDescription': "<p>Have a better and safer Clipperz experience with Firefox. However Clipperz works just fine also with Opera, Safari and MS Internet Explorer!</p>", 103 'browserCompatibilityDescription': "<p>Have a better and safer Clipperz experience with Firefox. However Clipperz works just fine also with Opera, Safari and MS Internet Explorer!</p>",
107 104
108// Login with OTP - message panel 105// Login with OTP - message panel
109 'OTPloginMessagePanelInitialTitle': "Logging in using a one-time passphrase", 106 'OTPloginMessagePanelInitialTitle': "Logging in using a one-time passphrase",
110 'OTPloginMessagePanelInitialText': "Sending OTP credentials …", 107 'OTPloginMessagePanelInitialText': "Sending OTP credentials …",
111 'OTPloginMessagePanelLoadingTitle': "Logging in using a one-time passphrase", 108 'OTPloginMessagePanelLoadingTitle': "Logging in using a one-time passphrase",
112 'OTPloginMessagePanelLoadingText': "Fetching encrypted authentication data from the server …", 109 'OTPloginMessagePanelLoadingText': "Fetching encrypted authentication data from the server …",
113 'OTPloginMessagePanelProcessingTitle': "Logging in using a one-time passphrase", 110 'OTPloginMessagePanelProcessingTitle': "Logging in using a one-time passphrase",
114 'OTPloginMessagePanelProcessingText': "Local decryption of authentication data", 111 'OTPloginMessagePanelProcessingText': "Local decryption of authentication data",
115 112
116// Regular login - message panel 113// Regular login - message panel
117 'loginMessagePanelInitialTitle': "Logging in …", 114 'loginMessagePanelInitialTitle': "Logging in …",
118 'loginMessagePanelInitialText': "---", 115 'loginMessagePanelInitialText': "---",
119 'loginMessagePanelInitialButtonLabel': "Cancel", 116 'loginMessagePanelInitialButtonLabel': "Cancel",
120 'loginMessagePanelConnectedTitle': "Connected", 117 'loginMessagePanelConnectedTitle': "Connected",
121 'loginMessagePanelConnectedText': "Done", 118 'loginMessagePanelConnectedText': "Done",
122 'loginMessagePanelFailureTitle': "Error", 119 'loginMessagePanelFailureTitle': "Error",
123 'loginMessagePanelFailureText': "Login failed", 120 'loginMessagePanelFailureText': "Login failed",
124 'loginMessagePanelFailureButtonLabel': "Close", 121 'loginMessagePanelFailureButtonLabel': "Close",
125 122
126// Regular login - message panel - connection 123// Regular login - message panel - connection
127 'connectionLoginSendingCredentialsMessageTitle': "Verifying credentials", 124 'connectionLoginSendingCredentialsMessageTitle': "Verifying credentials",
128 'connectionLoginSendingCredentialsMessageText': "Sending credentials", 125 'connectionLoginSendingCredentialsMessageText': "Sending credentials",
129 'connectionLoginCredentialsVerificationMessageTitle':"Verifying credentials", 126 'connectionLoginCredentialsVerificationMessageTitle':"Verifying credentials",
130 'connectionLoginCredentialsVerificationMessageText':"Performing SRP authentication", 127 'connectionLoginCredentialsVerificationMessageText':"Performing SRP authentication",
131 'connectionLoginDoneMessageTitle': "Verifying credentials", 128 'connectionLoginDoneMessageTitle': "Verifying credentials",
132 'connectionLoginDoneMessageText': "Connected", 129 'connectionLoginDoneMessageText': "Connected",
133 130
134 //Regular login - message panel - user 131 //Regular login - message panel - user
135 'userLoginPanelUpgradingUserCredentialsMessageTitle': "Verifying credentials", 132 'userLoginPanelUpgradingUserCredentialsMessageTitle': "Verifying credentials",
136 'userLoginPanelUpgradingUserCredentialsMessageText': "Upgrading your credentials to a new authentication schema", 133 'userLoginPanelUpgradingUserCredentialsMessageText': "Upgrading your credentials to a new authentication schema",
137 'userLoginPanelConnectedMessageTitle': "User authenticated", 134 'userLoginPanelConnectedMessageTitle': "User authenticated",
138 'userLoginPanelConnectedMessageText': "Successfully logged in", 135 'userLoginPanelConnectedMessageText': "Successfully logged in",
139 'userLoginPanelTryingAnOlderConnectionSchemaMessageTitle': "Verifying credentials", 136 'userLoginPanelTryingAnOlderConnectionSchemaMessageTitle': "Verifying credentials",
140 'userLoginPanelTryingAnOlderConnectionSchemaMessageText': "Trying an older authentication schema", 137 'userLoginPanelTryingAnOlderConnectionSchemaMessageText': "Trying an older authentication schema",
141 'userLoginPanelLoadingUserDataMessageTitle': "User authenticated", 138 'userLoginPanelLoadingUserDataMessageTitle': "User authenticated",
142 'userLoginPanelLoadingUserDataMessageText': "Downloading encrypted card headers from Clipperz", 139 'userLoginPanelLoadingUserDataMessageText': "Downloading encrypted card headers from Clipperz",
143 'userLoginPanelDecryptingUserDataMessageTitle': "User authenticated", 140 'userLoginPanelDecryptingUserDataMessageTitle': "User authenticated",
144 'userLoginPanelDecryptingUserDataMessageText': "Local decryption of card headers", 141 'userLoginPanelDecryptingUserDataMessageText': "Local decryption of card headers",
145 'userLoginPanelDecryptingUserStatisticsMessageTitle': "User authenticated", 142 'userLoginPanelDecryptingUserStatisticsMessageTitle': "User authenticated",
146 'userLoginPanelDecryptingUserStatisticsMessageText': "Local decryption of usage statistics", 143 'userLoginPanelDecryptingUserStatisticsMessageText': "Local decryption of usage statistics",
147 144
148 //Registration page - splash alert 145 //Registration page - splash alert
149 'splashAlertTitle':"Welcome to Clipperz!", 146 'splashAlertTitle':"Welcome to Clipperz!",
150'splashAlertText': "\ 147'splashAlertText': "\
151 <!-- FIX CSS DONE! -->\ 148 <!-- FIX CSS DONE! -->\
152 <p>Some security advice</p>\ 149 <p>Some security advice</p>\
diff --git a/frontend/beta/js/Clipperz/PM/Strings/Strings_es-ES.js b/frontend/beta/js/Clipperz/PM/Strings/Strings_es-ES.js
index 1541d5f..57286fe 100644
--- a/frontend/beta/js/Clipperz/PM/Strings/Strings_es-ES.js
+++ b/frontend/beta/js/Clipperz/PM/Strings/Strings_es-ES.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29Clipperz.PM.Strings.Languages['es-ES'.toLowerCase()] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], { 26Clipperz.PM.Strings.Languages['es-ES'.toLowerCase()] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], {
30 'clipperzServiceDescription':"<h2>Guárdelo usted mismo!</h2> <ul> <li> <h3>Clipperz es:</h3> <ul> <li> <p>un simple y seguro administrador de contraseñas</p> </li> <li> <p>una efectiva y simple solución de logueo</p> </li> <li> <p>un maletín digital para sus datos confidenciales</p> </li> </ul> </li> <li> <h3>Con Clipperz usted puede:</h3> <ul> <li> <p>administrar y almacenar en línea sus contraseñas y credenciales digitales</p> </li> <li> <p>ingresar en sus servicios web sin ningún nombre de usuario o contraseña</p> </li> <li> <p>protejer todos sus datos sensibles: códigos de alarmas, PINs y números de tarjetas de crédito, &hellip;</p> </li> <li> <p>compartir secretos con sus familiares y socios</p> </li> </ul> </li> <li> <h3>Beneficios de Clipperz:</h3> <ul> <li> <p>es gratis y completamente anónimo</p> </li> <li> <p>con acceso en cualquier momento y desde cualquier ordenador</p> </li> <li> <p>no necesita instalar o descargar ningún programa</p> </li> <li> <p>no necesita guardar secretos en papel o en el ordenador</p> </li> </ul> </li> <li> <h3>Seguridad de Clipperz:</h3> <ul> <li> <p>sus secretos son localmente encriptados por su navegador antes de ser almacenados en Clipperz</p> </li> <li> <p>la llave de encriptación es una frase clave conocida solo por usted</p> </li> <li> <p>Clipperz almacena sus datos de manera encriptada y nunca accede a ellos en forma de texto plano</p> </li> <li> <p>Clipperz esta basado en esquemas estándares de encriptación, no hemos inventado nada</p> </li> <li> <p>usted puede revisar el código todas las veces que lo desee, ¡ pero no necesita conocer algo de encriptación para ser un usuario feliz!</p> </li> </ul> </li> <li> <a href=\"http://www.clipperz.com\" target=\"_blank\">Aprender más</a> </li> </ul> ", 27 'clipperzServiceDescription':"<h2>Guárdelo usted mismo!</h2> <ul> <li> <h3>Clipperz es:</h3> <ul> <li> <p>un simple y seguro administrador de contraseñas</p> </li> <li> <p>una efectiva y simple solución de logueo</p> </li> <li> <p>un maletín digital para sus datos confidenciales</p> </li> </ul> </li> <li> <h3>Con Clipperz usted puede:</h3> <ul> <li> <p>administrar y almacenar en línea sus contraseñas y credenciales digitales</p> </li> <li> <p>ingresar en sus servicios web sin ningún nombre de usuario o contraseña</p> </li> <li> <p>protejer todos sus datos sensibles: códigos de alarmas, PINs y números de tarjetas de crédito, &hellip;</p> </li> <li> <p>compartir secretos con sus familiares y socios</p> </li> </ul> </li> <li> <h3>Beneficios de Clipperz:</h3> <ul> <li> <p>es gratis y completamente anónimo</p> </li> <li> <p>con acceso en cualquier momento y desde cualquier ordenador</p> </li> <li> <p>no necesita instalar o descargar ningún programa</p> </li> <li> <p>no necesita guardar secretos en papel o en el ordenador</p> </li> </ul> </li> <li> <h3>Seguridad de Clipperz:</h3> <ul> <li> <p>sus secretos son localmente encriptados por su navegador antes de ser almacenados en Clipperz</p> </li> <li> <p>la llave de encriptación es una frase clave conocida solo por usted</p> </li> <li> <p>Clipperz almacena sus datos de manera encriptada y nunca accede a ellos en forma de texto plano</p> </li> <li> <p>Clipperz esta basado en esquemas estándares de encriptación, no hemos inventado nada</p> </li> <li> <p>usted puede revisar el código todas las veces que lo desee, ¡ pero no necesita conocer algo de encriptación para ser un usuario feliz!</p> </li> </ul> </li> <li> <a href=\"http://www.clipperz.com\" target=\"_blank\">Aprender más</a> </li> </ul> ",
31 'loginFormTitle':"ingrese con su usuario Clipperz", 28 'loginFormTitle':"ingrese con su usuario Clipperz",
32 'loginFormUsernameLabel':"usuario", 29 'loginFormUsernameLabel':"usuario",
33 'loginFormPassphraseLabel':"frase clave", 30 'loginFormPassphraseLabel':"frase clave",
34 'loginFormDontHaveAnAccountLabel':"¿no tiene una cuenta?", 31 'loginFormDontHaveAnAccountLabel':"¿no tiene una cuenta?",
35 'loginFormCreateOneLabel':"crear una", 32 'loginFormCreateOneLabel':"crear una",
36 'loginFormForgotYourCredentialsLabel':"¿perdió sus credenciales?", 33 'loginFormForgotYourCredentialsLabel':"¿perdió sus credenciales?",
37 'loginFormAarghThatsBadLabel':"¡Ahhh! ¡eso es malo!", 34 'loginFormAarghThatsBadLabel':"¡Ahhh! ¡eso es malo!",
38 'loginFormAfraidOfMaliciousScriptsLabel':"¿evitar scripts maliciosos?", 35 'loginFormAfraidOfMaliciousScriptsLabel':"¿evitar scripts maliciosos?",
39 'loginFormVerifyTheCodeLabel':"verificar el código", 36 'loginFormVerifyTheCodeLabel':"verificar el código",
40 'loginFormButtonLabel':"Ingresar", 37 'loginFormButtonLabel':"Ingresar",
41 'loginFormOneTimePasswordCheckboxLabel':"usar una frase clave desechable", 38 'loginFormOneTimePasswordCheckboxLabel':"usar una frase clave desechable",
42 'loginPanelSwithLanguageDescription':"<h5>Cambiar a su lenguaje preferido</h5> ", 39 'loginPanelSwithLanguageDescription':"<h5>Cambiar a su lenguaje preferido</h5> ",
43 'browserCompatibilityDescription':"<p>Obtenga una mejor y más segura experiencia con Firefox. De todas maneras Clipperz funciona también con Opera y MS Explorer!</p> ", 40 'browserCompatibilityDescription':"<p>Obtenga una mejor y más segura experiencia con Firefox. De todas maneras Clipperz funciona también con Opera y MS Explorer!</p> ",
44 'OTPloginMessagePanelInitialTitle':"Ingresar usando una frase clave desechable", 41 'OTPloginMessagePanelInitialTitle':"Ingresar usando una frase clave desechable",
45 'OTPloginMessagePanelInitialText':"Enviando credenciales OTP ...", 42 'OTPloginMessagePanelInitialText':"Enviando credenciales OTP ...",
46 'OTPloginMessagePanelLoadingTitle':"Ingresar usando una frase clave desechable", 43 'OTPloginMessagePanelLoadingTitle':"Ingresar usando una frase clave desechable",
47 'OTPloginMessagePanelLoadingText':"Descargando datos de autenticación encriptados desde el servidor ...", 44 'OTPloginMessagePanelLoadingText':"Descargando datos de autenticación encriptados desde el servidor ...",
48 'OTPloginMessagePanelProcessingTitle':"Ingresar usando una frase clave desechable", 45 'OTPloginMessagePanelProcessingTitle':"Ingresar usando una frase clave desechable",
49 'OTPloginMessagePanelProcessingText':"Desencriptación local de datos de autenticación ...", 46 'OTPloginMessagePanelProcessingText':"Desencriptación local de datos de autenticación ...",
50 'loginMessagePanelInitialTitle':"Ingresando ...", 47 'loginMessagePanelInitialTitle':"Ingresando ...",
51 'loginMessagePanelInitialButtonLabel':"Cancelar", 48 'loginMessagePanelInitialButtonLabel':"Cancelar",
52 'loginMessagePanelConnectedTitle':"Conectado", 49 'loginMessagePanelConnectedTitle':"Conectado",
53 'loginMessagePanelConnectedText':"Hecho", 50 'loginMessagePanelConnectedText':"Hecho",
54 'loginMessagePanelFailureTitle':"Error", 51 'loginMessagePanelFailureTitle':"Error",
55 'loginMessagePanelFailureText':"Ingreso fallido", 52 'loginMessagePanelFailureText':"Ingreso fallido",
56 'loginMessagePanelFailureButtonLabel':"Cerrar", 53 'loginMessagePanelFailureButtonLabel':"Cerrar",
57 'connectionLoginSendingCredentialsMessageTitle':"Verificando credenciales", 54 'connectionLoginSendingCredentialsMessageTitle':"Verificando credenciales",
58 'connectionLoginSendingCredentialsMessageText':"Enviando credenciales", 55 'connectionLoginSendingCredentialsMessageText':"Enviando credenciales",
59 'connectionLoginCredentialsVerificationMessageTitle':"Verificando credenciales", 56 'connectionLoginCredentialsVerificationMessageTitle':"Verificando credenciales",
60 'connectionLoginCredentialsVerificationMessageText':"Realizando una autenticación SRP", 57 'connectionLoginCredentialsVerificationMessageText':"Realizando una autenticación SRP",
61 'connectionLoginDoneMessageTitle':"Verificando credenciales", 58 'connectionLoginDoneMessageTitle':"Verificando credenciales",
62 'connectionLoginDoneMessageText':"Conectado", 59 'connectionLoginDoneMessageText':"Conectado",
63 'userLoginPanelUpgradingUserCredentialsMessageTitle':"Verificando credenciales", 60 'userLoginPanelUpgradingUserCredentialsMessageTitle':"Verificando credenciales",
64 'userLoginPanelUpgradingUserCredentialsMessageText':"Actualizando sus credenciales al nuevo esquema de autenticación", 61 'userLoginPanelUpgradingUserCredentialsMessageText':"Actualizando sus credenciales al nuevo esquema de autenticación",
65 'userLoginPanelConnectedMessageTitle':"Usuario autenticado", 62 'userLoginPanelConnectedMessageTitle':"Usuario autenticado",
66 'userLoginPanelConnectedMessageText':"Exitosamente logueado", 63 'userLoginPanelConnectedMessageText':"Exitosamente logueado",
67 'userLoginPanelTryingAnOlderConnectionSchemaMessageTitle':"Verifying credentials", 64 'userLoginPanelTryingAnOlderConnectionSchemaMessageTitle':"Verifying credentials",
68 'userLoginPanelTryingAnOlderConnectionSchemaMessageText':"Probando un esquema de autenticación antiguo", 65 'userLoginPanelTryingAnOlderConnectionSchemaMessageText':"Probando un esquema de autenticación antiguo",
69 'userLoginPanelLoadingUserDataMessageTitle':"Usuario autenticado", 66 'userLoginPanelLoadingUserDataMessageTitle':"Usuario autenticado",
70 'userLoginPanelLoadingUserDataMessageText':"Descargando encabezamientos encriptados desde Clipperz", 67 'userLoginPanelLoadingUserDataMessageText':"Descargando encabezamientos encriptados desde Clipperz",
71 'userLoginPanelDecryptingUserDataMessageTitle':"Usuario autenticado", 68 'userLoginPanelDecryptingUserDataMessageTitle':"Usuario autenticado",
72 'userLoginPanelDecryptingUserDataMessageText':"Desencriptación local de datos", 69 'userLoginPanelDecryptingUserDataMessageText':"Desencriptación local de datos",
73 'userLoginPanelDecryptingUserStatisticsMessageTitle':"Usuario autenticado", 70 'userLoginPanelDecryptingUserStatisticsMessageTitle':"Usuario autenticado",
74 'userLoginPanelDecryptingUserStatisticsMessageText':"Desencriptación local de estadísticas de uso", 71 'userLoginPanelDecryptingUserStatisticsMessageText':"Desencriptación local de estadísticas de uso",
75 'splashAlertTitle':"¡Bienvenido a Clipperz!", 72 'splashAlertTitle':"¡Bienvenido a Clipperz!",
76 'splashAlertText':"<p>Algunas advertencias sobre seguridad</p> <ul> <li> <p>Almacenar sus datos en Clipperz es tan seguro como la frase clave que usted elija para protegerlos. Nadie puede acceder a ellos a no ser que conozca la frase clave.</p> </li> <li> <p>Si usted va a usar Clipperz para guardar información sensible y crítica, esté seguro de elegir una frase clave fuerte. ¡Cuanto más larga mejor!</p> </li> <li> <p>Clipperz no le permitirá recuperar una frase clave perdida.</p> </li> </ul> <p>Si necesita más información, por favor visite el sitio de <a href=\"http://www.clipperz.com\" target=\"_blank\">Clipperz</a>.</p> ", 73 'splashAlertText':"<p>Algunas advertencias sobre seguridad</p> <ul> <li> <p>Almacenar sus datos en Clipperz es tan seguro como la frase clave que usted elija para protegerlos. Nadie puede acceder a ellos a no ser que conozca la frase clave.</p> </li> <li> <p>Si usted va a usar Clipperz para guardar información sensible y crítica, esté seguro de elegir una frase clave fuerte. ¡Cuanto más larga mejor!</p> </li> <li> <p>Clipperz no le permitirá recuperar una frase clave perdida.</p> </li> </ul> <p>Si necesita más información, por favor visite el sitio de <a href=\"http://www.clipperz.com\" target=\"_blank\">Clipperz</a>.</p> ",
77 'splashAlertCloseButtonLabel':"Aceptar", 74 'splashAlertCloseButtonLabel':"Aceptar",
78 'registrationFormTitle':"Abrir su cuenta", 75 'registrationFormTitle':"Abrir su cuenta",
79 'registrationFormUsernameLabel':"usuario", 76 'registrationFormUsernameLabel':"usuario",
80 'registrationFormPassphraseLabel':"frase clave", 77 'registrationFormPassphraseLabel':"frase clave",
81 'registrationFormRetypePassphraseLabel':"reingrese la frase clave", 78 'registrationFormRetypePassphraseLabel':"reingrese la frase clave",
82 'registrationFormSafetyCheckLabel':"Yo entiendo que Clipperz no me permite recuperar frases clave perdidas", 79 'registrationFormSafetyCheckLabel':"Yo entiendo que Clipperz no me permite recuperar frases clave perdidas",
83 'registrationFormTermsOfServiceCheckLabel':"He leído y estoy de acuerdo con los <a href='http://www.clipperz.com/terms_of_service' target='_blank'>Términos de Servicio</a>.", 80 'registrationFormTermsOfServiceCheckLabel':"He leído y estoy de acuerdo con los <a href='http://www.clipperz.com/terms_of_service' target='_blank'>Términos de Servicio</a>.",
84 'registrationFormDoYouAlreadyHaveAnAccountLabel':"¿usted ya tiene una cuenta?", 81 'registrationFormDoYouAlreadyHaveAnAccountLabel':"¿usted ya tiene una cuenta?",
85 'registrationFormSimplyLoginLabel':"ingreso simple", 82 'registrationFormSimplyLoginLabel':"ingreso simple",
86 'registrationFormButtonLabel':"Registrarse", 83 'registrationFormButtonLabel':"Registrarse",
87 'registrationFormWarningMessageNotMatchingPassphrases':"Su frase clave no coincide, por favor reescríbala.", 84 'registrationFormWarningMessageNotMatchingPassphrases':"Su frase clave no coincide, por favor reescríbala.",
88 'registrationFormWarningMessageSafetyCheckNotSelected':"Por favor, lea y chequee todas las casillas debajo.", 85 'registrationFormWarningMessageSafetyCheckNotSelected':"Por favor, lea y chequee todas las casillas debajo.",
89 'registrationFormWarningMessageTermsOfServiceCheckNotSelected':"Usted necesita estar de acuerdo con los Términos de Servicio.", 86 'registrationFormWarningMessageTermsOfServiceCheckNotSelected':"Usted necesita estar de acuerdo con los Términos de Servicio.",
90 'registrationMessagePanelInitialTitle':"Creando cuenta ...", 87 'registrationMessagePanelInitialTitle':"Creando cuenta ...",
91 'registrationMessagePanelInitialButtonLabel':"Cancelar", 88 'registrationMessagePanelInitialButtonLabel':"Cancelar",
92 'registrationMessagePanelRegistrationDoneTitle':"Registración", 89 'registrationMessagePanelRegistrationDoneTitle':"Registración",
93 'registrationMessagePanelRegistrationDoneText':"Hecho", 90 'registrationMessagePanelRegistrationDoneText':"Hecho",
94 'registrationMessagePanelFailureTitle':"Registración fallada", 91 'registrationMessagePanelFailureTitle':"Registración fallada",
95 'registrationMessagePanelFailureButtonLabel':"Cerrar", 92 'registrationMessagePanelFailureButtonLabel':"Cerrar",
96 'connectionRegistrationSendingRequestMessageText':"Verificando credenciales", 93 'connectionRegistrationSendingRequestMessageText':"Verificando credenciales",
97 'connectionRegistrationSendingCredentialsMessageText':"Enviando credenciales", 94 'connectionRegistrationSendingCredentialsMessageText':"Enviando credenciales",
98 'registrationSplashPanelTitle':"Aviso de seguridad", 95 'registrationSplashPanelTitle':"Aviso de seguridad",
99 'registrationSplashPanelDescriptionConfig':"<p>Estas son sus credenciales de Clipperz, cuídelas. ¡Clipperz nunca más le mostrará su cuenta y frase clave por segunda vez!</p> ", 96 'registrationSplashPanelDescriptionConfig':"<p>Estas son sus credenciales de Clipperz, cuídelas. ¡Clipperz nunca más le mostrará su cuenta y frase clave por segunda vez!</p> ",
100 'registrationSplashPanelUsernameLabel':"usuario", 97 'registrationSplashPanelUsernameLabel':"usuario",
101 'registrationSplashPanelPassphraseLabel':"frase clave", 98 'registrationSplashPanelPassphraseLabel':"frase clave",
102 'registrationSplashPanelShowPassphraseButtonLabel':" mostrar frase clave", 99 'registrationSplashPanelShowPassphraseButtonLabel':" mostrar frase clave",
103 'donateHeaderLinkLabel':"donaciones", 100 'donateHeaderLinkLabel':"donaciones",
104 'creditsHeaderLinkLabel':"créditos", 101 'creditsHeaderLinkLabel':"créditos",
105 'feedbackHeaderLinkLabel':"contacto", 102 'feedbackHeaderLinkLabel':"contacto",
106 'helpHeaderLinkLabel':"ayuda", 103 'helpHeaderLinkLabel':"ayuda",
107 'forumHeaderLinkLabel':"foro", 104 'forumHeaderLinkLabel':"foro",
108 'recordMenuLabel':"tarjetas", 105 'recordMenuLabel':"tarjetas",
109 'accountMenuLabel':"cuenta", 106 'accountMenuLabel':"cuenta",
110 'dataMenuLabel':"datos", 107 'dataMenuLabel':"datos",
111 'contactsMenuLabel':"contactos", 108 'contactsMenuLabel':"contactos",
112 'toolsMenuLabel':"herramientas", 109 'toolsMenuLabel':"herramientas",
113 'logoutMenuLabel':"salir", 110 'logoutMenuLabel':"salir",
114 'lockMenuLabel':"bloquear", 111 'lockMenuLabel':"bloquear",
115 'lockTitle':"La cuenta está bloqueada", 112 'lockTitle':"La cuenta está bloqueada",
116 'lockDescriptionConfig':"<p>Para desbloquear su cuenta, por favor ingrese su frase clave</p> ", 113 'lockDescriptionConfig':"<p>Para desbloquear su cuenta, por favor ingrese su frase clave</p> ",
117 'unlockButtonLabel':"desbloquear", 114 'unlockButtonLabel':"desbloquear",
118 'changePasswordTabLabel':"Cambiar su frase clave", 115 'changePasswordTabLabel':"Cambiar su frase clave",
119 'changePasswordTabTitle':"Cambiar su frase clave", 116 'changePasswordTabTitle':"Cambiar su frase clave",
120 'changePasswordFormUsernameLabel':"usuario", 117 'changePasswordFormUsernameLabel':"usuario",
121 'changePasswordFormOldPassphraseLabel':"frase clave anterior", 118 'changePasswordFormOldPassphraseLabel':"frase clave anterior",
122 'changePasswordFormNewPassphraseLabel':"nueva frase clave", 119 'changePasswordFormNewPassphraseLabel':"nueva frase clave",
123 'changePasswordFormRetypePassphraseLabel':"reingrese su nueva frase clave", 120 'changePasswordFormRetypePassphraseLabel':"reingrese su nueva frase clave",
124 'changePasswordFormSafetyCheckboxLabel':"Yo entiendo que Clipperz no me permite recuperar una frase clave perdida.", 121 'changePasswordFormSafetyCheckboxLabel':"Yo entiendo que Clipperz no me permite recuperar una frase clave perdida.",
125 'changePasswordFormSubmitLabel':"Cambiar", 122 'changePasswordFormSubmitLabel':"Cambiar",
126 'changePasswordFormWrongUsernameWarning':"Usuario incorrecto", 123 'changePasswordFormWrongUsernameWarning':"Usuario incorrecto",
127 'changePasswordFormWrongPassphraseWarning':"Frase clave incorrecta", 124 'changePasswordFormWrongPassphraseWarning':"Frase clave incorrecta",
128 'changePasswordFormWrongRetypePassphraseWarning':"Sus frases claves no coinciden, por favor reescríbalas.", 125 'changePasswordFormWrongRetypePassphraseWarning':"Sus frases claves no coinciden, por favor reescríbalas.",
129 'changePasswordFormSafetyCheckWarning':"Por favor lea y seleccione la casilla de abajo.", 126 'changePasswordFormSafetyCheckWarning':"Por favor lea y seleccione la casilla de abajo.",
130 'changePasswordFormProgressDialogTitle':"Cambiando credenciales de usuario", 127 'changePasswordFormProgressDialogTitle':"Cambiando credenciales de usuario",
131 'changePasswordFormProgressDialogConnectedMessageTitle':"Conectado", 128 'changePasswordFormProgressDialogConnectedMessageTitle':"Conectado",
132 'changePasswordFormProgressDialogConnectedMessageText':"Hecho", 129 'changePasswordFormProgressDialogConnectedMessageText':"Hecho",
133 'changePasswordFormProgressDialogErrorMessageTitle':"Error", 130 'changePasswordFormProgressDialogErrorMessageTitle':"Error",
134 'changePasswordFormProgressDialogErrorMessageText':"¡Cambio de credenciales fallado!", 131 'changePasswordFormProgressDialogErrorMessageText':"¡Cambio de credenciales fallado!",
135 'changeCredentialsPanelEncryptingDataMessageTitle':"Cambiando su frase clave", 132 'changeCredentialsPanelEncryptingDataMessageTitle':"Cambiando su frase clave",
136 'changeCredentialsPanelEncryptingDataMessageText':"Encriptación local de encabezados de tarjetas", 133 'changeCredentialsPanelEncryptingDataMessageText':"Encriptación local de encabezados de tarjetas",
137 'changeCredentialsPanelCreatingNewCredentialsMessageTitle':"Cambiando su frase clave", 134 'changeCredentialsPanelCreatingNewCredentialsMessageTitle':"Cambiando su frase clave",
138 'changeCredentialsPanelCreatingNewCredentialsMessageText':"Actualizando su credenciales", 135 'changeCredentialsPanelCreatingNewCredentialsMessageText':"Actualizando su credenciales",
139 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageTitle':"Cambiando su frase clave", 136 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageTitle':"Cambiando su frase clave",
140 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageText':"Subiendo sus credenciales encriptadas a Clipperz", 137 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageText':"Subiendo sus credenciales encriptadas a Clipperz",
141 'changeCredentialsPanelDoneMessageTitle':"Cambiando su frase clave", 138 'changeCredentialsPanelDoneMessageTitle':"Cambiando su frase clave",
142 'changeCredentialsPanelDoneMessageText':"Hecho", 139 'changeCredentialsPanelDoneMessageText':"Hecho",
143 'manageOTPTabLabel':"Administrar su frases clave desechables", 140 'manageOTPTabLabel':"Administrar su frases clave desechables",
144 'manageOTPTabTitle':"Administrar su frases clave desechables", 141 'manageOTPTabTitle':"Administrar su frases clave desechables",
145 'manageOTPTabDescription':"<p>Una frase clave desechable uso funciona como una frase clave regular, pero puede ser usada solo una vez.</p> <p>Si las misma frase clave es usada nuevamente en un segundo intento de acceso, esta será rechazada y el proceso de acceso fallará.</p> <p>Inmediatamente después de un acceso exitoso, su on-time frase clave será borrada previniendo accesos fraudulentos.</p> <p>Frases claves desechables son una excelente elección para protegerse de keyloggers y spywares, que pueden recolectar datos desde máquinas comprometidas.</p> <p> <b>Le recomendamos muy fuertemente que use frases claves desechables uso cuando acceda a Clipperz desde terminales públicas, como Internet Cafés, Cybercafés y bibliotecas.</b> </p> ", 142 'manageOTPTabDescription':"<p>Una frase clave desechable uso funciona como una frase clave regular, pero puede ser usada solo una vez.</p> <p>Si las misma frase clave es usada nuevamente en un segundo intento de acceso, esta será rechazada y el proceso de acceso fallará.</p> <p>Inmediatamente después de un acceso exitoso, su on-time frase clave será borrada previniendo accesos fraudulentos.</p> <p>Frases claves desechables son una excelente elección para protegerse de keyloggers y spywares, que pueden recolectar datos desde máquinas comprometidas.</p> <p> <b>Le recomendamos muy fuertemente que use frases claves desechables uso cuando acceda a Clipperz desde terminales públicas, como Internet Cafés, Cybercafés y bibliotecas.</b> </p> ",
146 'oneTimePasswordReadOnlyMessage':"<h6>¡Disculpe!</h6> <p>Usted no puede usar su frases clave desechables mientras usa la versión fuera de línea de Clipperz.</p> ", 143 'oneTimePasswordReadOnlyMessage':"<h6>¡Disculpe!</h6> <p>Usted no puede usar su frases clave desechables mientras usa la versión fuera de línea de Clipperz.</p> ",
147 'oneTimePasswordLoadingMessage':"<h6>Cargando datos</h6> <p>Por favor espere ...</p> ", 144 'oneTimePasswordLoadingMessage':"<h6>Cargando datos</h6> <p>Por favor espere ...</p> ",
148 'oneTimePasswordNoPasswordAvailable':"<h6>No hay frase clave desechables disponible</h6> <p>Haga click en el botón “Nueva” para agregar una frase clave desechables a su cuenta.</p> ", 145 'oneTimePasswordNoPasswordAvailable':"<h6>No hay frase clave desechables disponible</h6> <p>Haga click en el botón “Nueva” para agregar una frase clave desechables a su cuenta.</p> ",
149 'createNewOTPButtonLabel':"Nueva", 146 'createNewOTPButtonLabel':"Nueva",
150 'deleteOTPButtonLabel':"Borrar", 147 'deleteOTPButtonLabel':"Borrar",
151 'printOTPButtonLabel':"Imprimir", 148 'printOTPButtonLabel':"Imprimir",
152 'disabledOneTimePassword_warning':"desabilitado", 149 'disabledOneTimePassword_warning':"desabilitado",
diff --git a/frontend/beta/js/Clipperz/PM/Strings/Strings_fr-FR.js b/frontend/beta/js/Clipperz/PM/Strings/Strings_fr-FR.js
index c137fb8..34467e9 100644
--- a/frontend/beta/js/Clipperz/PM/Strings/Strings_fr-FR.js
+++ b/frontend/beta/js/Clipperz/PM/Strings/Strings_fr-FR.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29Clipperz.PM.Strings.Languages['fr-FR'.toLowerCase()] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], { 26Clipperz.PM.Strings.Languages['fr-FR'.toLowerCase()] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], {
30 'clipperzServiceDescription':"<h2>Gardez le pour vous!</h2> <ul> <li> <h3>Clipperz est:</h3> <ul> <li> <p>un gestionnaire de mots de passe sécurisé</p> </li> <li> <p>une solution fiable d’authentification unique</p> </li> <li> <p>une chambre forte numérique pour vos données confidentielles</p> </li> </ul> </li> <li> <h3>Avec Clipperz vous pouvez:</h3> <ul> <li> <p>enregistrer et gérer vos mots de passe et autres informations d'identification en ligne</p> </li> <li> <p>vous identifier sur vos sites web sans avoir besoin de saisir votre nom d’utilisateur ou votre mot de passe</p> </li> <li> <p>protéger toutes vos données sensibles: codes d’alarmes, PINs (téléphone portable), carte de crédits, &hellip;</p> </li> <li> <p>partager certaines données confidentielles avec vos proches et vos associés (bientôt disponible!)</p> </li> </ul> </li> <li> <h3>Les avantages de Clipperz:</h3> <ul> <li> <p>c'est gratuit et totalement anonyme</p> </li> <li> <p>accéder à vos données depuis n’importe quel ordinateur</p> </li> <li> <p>vous n'avez besoin d'aucun logiciel et rien n'est à installer sur votre poste</p> </li> <li> <p>cela vous évite de garder des mots de passe sur votre PC ou sur des bouts de papier</p> </li> </ul> </li> <li> <h3>La sécurité de Clipperz:</h3> <ul> <li> <p>vos mots de passe sont localement chiffrés par votre navigateur avant d’être téléchargé à Clipperz</p> </li> <li> <p>la clé de cryptage est une phrase secrète détenue uniquement par vous même</p> </li> <li> <p>héberge vos données sensibles dans des formulaires cryptés et ne peuvent être consultées directement en clair</p> </li> <li> <p>est développé sur des standard de cryptage réputé sans aucune fantaisie ni de bricolage fait maison</p> </li> <li> <p>vous pouvez consulter le code source autant que vous le souhaitez</p> </li> </ul> </li> <li> <a href=\"http://www.clipperz.com\" target=\"_blank\">Plus d’informations</a> </li> </ul> ", 27 'clipperzServiceDescription':"<h2>Gardez le pour vous!</h2> <ul> <li> <h3>Clipperz est:</h3> <ul> <li> <p>un gestionnaire de mots de passe sécurisé</p> </li> <li> <p>une solution fiable d’authentification unique</p> </li> <li> <p>une chambre forte numérique pour vos données confidentielles</p> </li> </ul> </li> <li> <h3>Avec Clipperz vous pouvez:</h3> <ul> <li> <p>enregistrer et gérer vos mots de passe et autres informations d'identification en ligne</p> </li> <li> <p>vous identifier sur vos sites web sans avoir besoin de saisir votre nom d’utilisateur ou votre mot de passe</p> </li> <li> <p>protéger toutes vos données sensibles: codes d’alarmes, PINs (téléphone portable), carte de crédits, &hellip;</p> </li> <li> <p>partager certaines données confidentielles avec vos proches et vos associés (bientôt disponible!)</p> </li> </ul> </li> <li> <h3>Les avantages de Clipperz:</h3> <ul> <li> <p>c'est gratuit et totalement anonyme</p> </li> <li> <p>accéder à vos données depuis n’importe quel ordinateur</p> </li> <li> <p>vous n'avez besoin d'aucun logiciel et rien n'est à installer sur votre poste</p> </li> <li> <p>cela vous évite de garder des mots de passe sur votre PC ou sur des bouts de papier</p> </li> </ul> </li> <li> <h3>La sécurité de Clipperz:</h3> <ul> <li> <p>vos mots de passe sont localement chiffrés par votre navigateur avant d’être téléchargé à Clipperz</p> </li> <li> <p>la clé de cryptage est une phrase secrète détenue uniquement par vous même</p> </li> <li> <p>héberge vos données sensibles dans des formulaires cryptés et ne peuvent être consultées directement en clair</p> </li> <li> <p>est développé sur des standard de cryptage réputé sans aucune fantaisie ni de bricolage fait maison</p> </li> <li> <p>vous pouvez consulter le code source autant que vous le souhaitez</p> </li> </ul> </li> <li> <a href=\"http://www.clipperz.com\" target=\"_blank\">Plus d’informations</a> </li> </ul> ",
31 'loginFormTitle':"identifiez-vous avec votre compte Clipperz", 28 'loginFormTitle':"identifiez-vous avec votre compte Clipperz",
32 'loginFormUsernameLabel':"nom d’utilisateur", 29 'loginFormUsernameLabel':"nom d’utilisateur",
33 'loginFormPassphraseLabel':"phrase secrète", 30 'loginFormPassphraseLabel':"phrase secrète",
34 'loginFormDontHaveAnAccountLabel':"vous n’avez pas de compte?", 31 'loginFormDontHaveAnAccountLabel':"vous n’avez pas de compte?",
35 'loginFormCreateOneLabel':"créez votre compte", 32 'loginFormCreateOneLabel':"créez votre compte",
36 'loginFormForgotYourCredentialsLabel':"vous avez oublié votre certificat?", 33 'loginFormForgotYourCredentialsLabel':"vous avez oublié votre certificat?",
37 'loginFormAarghThatsBadLabel':"c’est fort dommage pour vous!", 34 'loginFormAarghThatsBadLabel':"c’est fort dommage pour vous!",
38 'loginFormAfraidOfMaliciousScriptsLabel':"vous avez peur des script malicieux?", 35 'loginFormAfraidOfMaliciousScriptsLabel':"vous avez peur des script malicieux?",
39 'loginFormVerifyTheCodeLabel':"vérifiez le code", 36 'loginFormVerifyTheCodeLabel':"vérifiez le code",
40 'loginFormButtonLabel':"S’identifer", 37 'loginFormButtonLabel':"S’identifer",
41 'loginPanelSwithLanguageDescription':"<p>Sélectionnez votre langue préféré</p> ", 38 'loginPanelSwithLanguageDescription':"<p>Sélectionnez votre langue préféré</p> ",
42 'browserCompatibilityDescription':"<p>Have a better and safer Clipperz experience with Firefox. However Clipperz works just fine also with Opera and MS Internet Explorer!</p> ", 39 'browserCompatibilityDescription':"<p>Have a better and safer Clipperz experience with Firefox. However Clipperz works just fine also with Opera and MS Internet Explorer!</p> ",
43 'loginMessagePanelInitialTitle':"En cours d’identification ...", 40 'loginMessagePanelInitialTitle':"En cours d’identification ...",
44 'loginMessagePanelInitialButtonLabel':"Annuler", 41 'loginMessagePanelInitialButtonLabel':"Annuler",
45 'loginMessagePanelConnectedTitle':"Connecté", 42 'loginMessagePanelConnectedTitle':"Connecté",
46 'loginMessagePanelConnectedText':"Terminé", 43 'loginMessagePanelConnectedText':"Terminé",
47 'loginMessagePanelFailureTitle':"Erreur", 44 'loginMessagePanelFailureTitle':"Erreur",
48 'loginMessagePanelFailureText':"Identification échoué", 45 'loginMessagePanelFailureText':"Identification échoué",
49 'loginMessagePanelFailureButtonLabel':"Fermer", 46 'loginMessagePanelFailureButtonLabel':"Fermer",
50 'connectionLoginSendingCredentialsMessageTitle':"Vérification des identifiants", 47 'connectionLoginSendingCredentialsMessageTitle':"Vérification des identifiants",
51 'connectionLoginSendingCredentialsMessageText':"Envoi des identifiants", 48 'connectionLoginSendingCredentialsMessageText':"Envoi des identifiants",
52 'connectionLoginCredentialsVerificationMessageTitle':"Vérification des identifiants", 49 'connectionLoginCredentialsVerificationMessageTitle':"Vérification des identifiants",
53 'connectionLoginCredentialsVerificationMessageText':"Authentification SRP en cours", 50 'connectionLoginCredentialsVerificationMessageText':"Authentification SRP en cours",
54 'connectionLoginDoneMessageTitle':"Vérification des identifiants", 51 'connectionLoginDoneMessageTitle':"Vérification des identifiants",
55 'connectionLoginDoneMessageText':"Connecté", 52 'connectionLoginDoneMessageText':"Connecté",
56 'userLoginPanelUpgradingUserCredentialsMessageTitle':"Vérification des identifiants", 53 'userLoginPanelUpgradingUserCredentialsMessageTitle':"Vérification des identifiants",
57 'userLoginPanelUpgradingUserCredentialsMessageText':"Mise à jour de vos identifiants à un nouveau schéma d’authentification", 54 'userLoginPanelUpgradingUserCredentialsMessageText':"Mise à jour de vos identifiants à un nouveau schéma d’authentification",
58 'userLoginPanelConnectedMessageTitle':"Utilisateur identifié", 55 'userLoginPanelConnectedMessageTitle':"Utilisateur identifié",
59 'userLoginPanelConnectedMessageText':"Vous vous êtes identifié avec succès", 56 'userLoginPanelConnectedMessageText':"Vous vous êtes identifié avec succès",
60 'userLoginPanelTryingAnOlderConnectionSchemaMessageTitle':"Vérification des identifiants", 57 'userLoginPanelTryingAnOlderConnectionSchemaMessageTitle':"Vérification des identifiants",
61 'userLoginPanelTryingAnOlderConnectionSchemaMessageText':"Nous essayons un ancien schéma d’authentification", 58 'userLoginPanelTryingAnOlderConnectionSchemaMessageText':"Nous essayons un ancien schéma d’authentification",
62 'userLoginPanelLoadingUserDataMessageTitle':"Utilisateur identifié", 59 'userLoginPanelLoadingUserDataMessageTitle':"Utilisateur identifié",
63 'userLoginPanelLoadingUserDataMessageText':"Téléchargement des cartes d’en-têtes chiffrés depuis Clipperz", 60 'userLoginPanelLoadingUserDataMessageText':"Téléchargement des cartes d’en-têtes chiffrés depuis Clipperz",
64 'userLoginPanelDecryptingUserDataMessageTitle':"Utilisateur identifié", 61 'userLoginPanelDecryptingUserDataMessageTitle':"Utilisateur identifié",
65 'userLoginPanelDecryptingUserDataMessageText':"Décryptage local des en-têtes chiffrés", 62 'userLoginPanelDecryptingUserDataMessageText':"Décryptage local des en-têtes chiffrés",
66 'userLoginPanelDecryptingUserStatisticsMessageTitle':"Utilisateur identifié", 63 'userLoginPanelDecryptingUserStatisticsMessageTitle':"Utilisateur identifié",
67 'userLoginPanelDecryptingUserStatisticsMessageText':"Décryptage local des statistiques", 64 'userLoginPanelDecryptingUserStatisticsMessageText':"Décryptage local des statistiques",
68 'splashAlertTitle':"Bienvenue sur Clipperz!", 65 'splashAlertTitle':"Bienvenue sur Clipperz!",
69 'splashAlertText':"<p>Conseils de sécurité</p> <ul> <li> <p>Le stockage de vos mots de passe sur Clipperz est aussi sécurisé que la phrase que vous avez sélectionnée pour les protéger. Personne ne peux y accéder tant que personne ne connait votre phrase secrète.</p> </li> <li> <p>Si vous allez utiliser Clipperz pour sauvegarder des informations sensibles et critiques assurez-vous d’utiliser une phrase secrète compliquée. Plus elle sera longue mieux ce sera!</p> </li> <li> <p>Clipperz ne sera pas capable de récupérer votre phrase secrète!</p> </li> </ul> <p>Pour toute autre information, veuillez vous référer au site <a href=\"http://www.clipperz.com\" target=\"_blank\">Clipperz</a>.</p> ", 66 'splashAlertText':"<p>Conseils de sécurité</p> <ul> <li> <p>Le stockage de vos mots de passe sur Clipperz est aussi sécurisé que la phrase que vous avez sélectionnée pour les protéger. Personne ne peux y accéder tant que personne ne connait votre phrase secrète.</p> </li> <li> <p>Si vous allez utiliser Clipperz pour sauvegarder des informations sensibles et critiques assurez-vous d’utiliser une phrase secrète compliquée. Plus elle sera longue mieux ce sera!</p> </li> <li> <p>Clipperz ne sera pas capable de récupérer votre phrase secrète!</p> </li> </ul> <p>Pour toute autre information, veuillez vous référer au site <a href=\"http://www.clipperz.com\" target=\"_blank\">Clipperz</a>.</p> ",
70 'splashAlertCloseButtonLabel':"Ok", 67 'splashAlertCloseButtonLabel':"Ok",
71 'registrationFormTitle':"créer votre compte", 68 'registrationFormTitle':"créer votre compte",
72 'registrationFormUsernameLabel':"nom d’utilisateur", 69 'registrationFormUsernameLabel':"nom d’utilisateur",
73 'registrationFormPassphraseLabel':"phrase secrète", 70 'registrationFormPassphraseLabel':"phrase secrète",
74 'registrationFormRetypePassphraseLabel':"re-saisissez votre phrase secrète", 71 'registrationFormRetypePassphraseLabel':"re-saisissez votre phrase secrète",
75 'registrationFormSafetyCheckLabel':"J’accepte que Clipperz ne pourra pas récupérer ma phrase secrète.", 72 'registrationFormSafetyCheckLabel':"J’accepte que Clipperz ne pourra pas récupérer ma phrase secrète.",
76 'registrationFormTermsOfServiceCheckLabel':"J’ai lu et j’accepte les <a href='http://www.clipperz.com/terms_of_service' target='_blank'>Conditions d’Utilisation du Service</a>.", 73 'registrationFormTermsOfServiceCheckLabel':"J’ai lu et j’accepte les <a href='http://www.clipperz.com/terms_of_service' target='_blank'>Conditions d’Utilisation du Service</a>.",
77 'registrationFormDoYouAlreadyHaveAnAccountLabel':"avez-vous déjà un compte?", 74 'registrationFormDoYouAlreadyHaveAnAccountLabel':"avez-vous déjà un compte?",
78 'registrationFormSimplyLoginLabel':"identifiez-vous", 75 'registrationFormSimplyLoginLabel':"identifiez-vous",
79 'registrationFormButtonLabel':"S’inscrire", 76 'registrationFormButtonLabel':"S’inscrire",
80 'registrationFormWarningMessageNotMatchingPassphrases':"Vos phrases secrètes ne correspondent pas, veuillez les saisir à nouveau.", 77 'registrationFormWarningMessageNotMatchingPassphrases':"Vos phrases secrètes ne correspondent pas, veuillez les saisir à nouveau.",
81 'registrationFormWarningMessageSafetyCheckNotSelected':"Veuillez lire et cocher les cases-à-cocher ci-dessous.", 78 'registrationFormWarningMessageSafetyCheckNotSelected':"Veuillez lire et cocher les cases-à-cocher ci-dessous.",
82 'registrationFormWarningMessageTermsOfServiceCheckNotSelected':"Vous devez accepter les “Conditions d’Utilisation du Service”.", 79 'registrationFormWarningMessageTermsOfServiceCheckNotSelected':"Vous devez accepter les “Conditions d’Utilisation du Service”.",
83 'registrationMessagePanelInitialTitle':"Création du compte en cours ...", 80 'registrationMessagePanelInitialTitle':"Création du compte en cours ...",
84 'registrationMessagePanelInitialButtonLabel':"Annuler", 81 'registrationMessagePanelInitialButtonLabel':"Annuler",
85 'registrationMessagePanelRegistrationDoneTitle':"Enregistrement", 82 'registrationMessagePanelRegistrationDoneTitle':"Enregistrement",
86 'registrationMessagePanelRegistrationDoneText':"Terminé", 83 'registrationMessagePanelRegistrationDoneText':"Terminé",
87 'registrationMessagePanelFailureTitle':"Enregistrement échoué", 84 'registrationMessagePanelFailureTitle':"Enregistrement échoué",
88 'registrationMessagePanelFailureButtonLabel':"Fermer", 85 'registrationMessagePanelFailureButtonLabel':"Fermer",
89 'connectionRegistrationSendingRequestMessageText':"Vérification en cours des identifiants", 86 'connectionRegistrationSendingRequestMessageText':"Vérification en cours des identifiants",
90 'connectionRegistrationSendingCredentialsMessageText':"Envoi des identifiants", 87 'connectionRegistrationSendingCredentialsMessageText':"Envoi des identifiants",
91 'registrationSplashPanelTitle':"Conseils de sécurité", 88 'registrationSplashPanelTitle':"Conseils de sécurité",
92 'registrationSplashPanelDescription':"<p>Ce sont vos identifiants Clipperz, gardez les biens. Clipperz ne va plus jamais vous montrer votre nom d’utilisateur et votre phrase secrète!</p> ", 89 'registrationSplashPanelDescription':"<p>Ce sont vos identifiants Clipperz, gardez les biens. Clipperz ne va plus jamais vous montrer votre nom d’utilisateur et votre phrase secrète!</p> ",
93 'registrationSplashPanelUsernameLabel':"nom d’utilisateur", 90 'registrationSplashPanelUsernameLabel':"nom d’utilisateur",
94 'registrationSplashPanelPassphraseLabel':"phrase secrète", 91 'registrationSplashPanelPassphraseLabel':"phrase secrète",
95 'registrationSplashPanelShowPassphraseButtonLabel':"afficher la phrase secrète", 92 'registrationSplashPanelShowPassphraseButtonLabel':"afficher la phrase secrète",
96 'donateHeaderLinkLabel':"faites un don", 93 'donateHeaderLinkLabel':"faites un don",
97 'creditsHeaderLinkLabel':"crédits", 94 'creditsHeaderLinkLabel':"crédits",
98 'feedbackHeaderLinkLabel':"votre avis", 95 'feedbackHeaderLinkLabel':"votre avis",
99 'helpHeaderLinkLabel':"aide", 96 'helpHeaderLinkLabel':"aide",
100 'forumHeaderLinkLabel':"forum", 97 'forumHeaderLinkLabel':"forum",
101 'recordMenuLabel':"cartes", 98 'recordMenuLabel':"cartes",
102 'accountMenuLabel':"compte", 99 'accountMenuLabel':"compte",
103 'dataMenuLabel':"données", 100 'dataMenuLabel':"données",
104 'contactsMenuLabel':"contacts", 101 'contactsMenuLabel':"contacts",
105 'toolsMenuLabel':"outils", 102 'toolsMenuLabel':"outils",
106 'logoutMenuLabel':"déconnexion", 103 'logoutMenuLabel':"déconnexion",
107 'lockMenuLabel':"verrouiller", 104 'lockMenuLabel':"verrouiller",
108 'lockTitle':"Le compte est verrouillé", 105 'lockTitle':"Le compte est verrouillé",
109 'lockDescription':"<p>Pour déverrouiller votre compte, veuillez saisir votre phrase secrète</p> ", 106 'lockDescription':"<p>Pour déverrouiller votre compte, veuillez saisir votre phrase secrète</p> ",
110 'unlockButtonLabel':"Déverrouiller", 107 'unlockButtonLabel':"Déverrouiller",
111 'changePasswordTabLabel':"Changer votre phrase secrète", 108 'changePasswordTabLabel':"Changer votre phrase secrète",
112 'changePasswordTabTitle':"Changer votre phrase secrète", 109 'changePasswordTabTitle':"Changer votre phrase secrète",
113 'changePasswordFormUsernameLabel':"nom d’utilisateur", 110 'changePasswordFormUsernameLabel':"nom d’utilisateur",
114 'changePasswordFormOldPassphraseLabel':"ancienne phrase secrète", 111 'changePasswordFormOldPassphraseLabel':"ancienne phrase secrète",
115 'changePasswordFormNewPassphraseLabel':"nouvelle phrase secrète", 112 'changePasswordFormNewPassphraseLabel':"nouvelle phrase secrète",
116 'changePasswordFormRetypePassphraseLabel':"re-saisissez phrase secrète", 113 'changePasswordFormRetypePassphraseLabel':"re-saisissez phrase secrète",
117 'changePasswordFormSafetyCheckboxLabel':"Je sais que Clipperz ne pourra pas récupérer ma phrase secrète.", 114 'changePasswordFormSafetyCheckboxLabel':"Je sais que Clipperz ne pourra pas récupérer ma phrase secrète.",
118 'changePasswordFormSubmitLabel':"Changer ma phrase secrète", 115 'changePasswordFormSubmitLabel':"Changer ma phrase secrète",
119 'changePasswordFormWrongUsernameWarning':"Nom d’utilisateur incorrect", 116 'changePasswordFormWrongUsernameWarning':"Nom d’utilisateur incorrect",
120 'changePasswordFormWrongPassphraseWarning':"Phrase secrète incorrect", 117 'changePasswordFormWrongPassphraseWarning':"Phrase secrète incorrect",
121 'changePasswordFormWrongRetypePassphraseWarning':"Votre phrase secrète ne correspond pas, veuillez la saisir à nouveau", 118 'changePasswordFormWrongRetypePassphraseWarning':"Votre phrase secrète ne correspond pas, veuillez la saisir à nouveau",
122 'changePasswordFormSafetyCheckWarning':"Veuillez lire et cocher la case-à-cocher ci-dessous", 119 'changePasswordFormSafetyCheckWarning':"Veuillez lire et cocher la case-à-cocher ci-dessous",
123 'changePasswordFormProgressDialogTitle':"Changement des identifiants utilisateurs", 120 'changePasswordFormProgressDialogTitle':"Changement des identifiants utilisateurs",
124 'changePasswordFormProgressDialogConnectedMessageTitle':"Connecté", 121 'changePasswordFormProgressDialogConnectedMessageTitle':"Connecté",
125 'changePasswordFormProgressDialogConnectedMessageText':"Terminé", 122 'changePasswordFormProgressDialogConnectedMessageText':"Terminé",
126 'changePasswordFormProgressDialogErrorMessageTitle':"Erreur", 123 'changePasswordFormProgressDialogErrorMessageTitle':"Erreur",
127 'changePasswordFormProgressDialogErrorMessageText':"Changement de identifiants échoué!", 124 'changePasswordFormProgressDialogErrorMessageText':"Changement de identifiants échoué!",
128 'changeCredentialsPanelEncryptingDataMessageTitle':"Changement de votre phrase secrète", 125 'changeCredentialsPanelEncryptingDataMessageTitle':"Changement de votre phrase secrète",
129 'changeCredentialsPanelEncryptingDataMessageText':"Cryptage local des identifiants", 126 'changeCredentialsPanelEncryptingDataMessageText':"Cryptage local des identifiants",
130 'changeCredentialsPanelCreatingNewCredentialsMessageTitle':"Modifier votre phrase secrète", 127 'changeCredentialsPanelCreatingNewCredentialsMessageTitle':"Modifier votre phrase secrète",
131 'changeCredentialsPanelCreatingNewCredentialsMessageText':"Mettre à jour vos identifiants", 128 'changeCredentialsPanelCreatingNewCredentialsMessageText':"Mettre à jour vos identifiants",
132 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageTitle':"Modifier votre phrase secrète", 129 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageTitle':"Modifier votre phrase secrète",
133 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageText':"Téléchargement de vos identifiants sur Clipperz.com", 130 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageText':"Téléchargement de vos identifiants sur Clipperz.com",
134 'changeCredentialsPanelDoneMessageTitle':"Modifier votre phrase secrète", 131 'changeCredentialsPanelDoneMessageTitle':"Modifier votre phrase secrète",
135 'changeCredentialsPanelDoneMessageText':"Terminé", 132 'changeCredentialsPanelDoneMessageText':"Terminé",
136 'manageOTPTabLabel':"Mettre à jour votre phrase secrète à usage unique", 133 'manageOTPTabLabel':"Mettre à jour votre phrase secrète à usage unique",
137 'manageOTPTabTitle':"Mettre à jour votre phrase secrète à usage unique", 134 'manageOTPTabTitle':"Mettre à jour votre phrase secrète à usage unique",
138 'manageOTPTabDescription':"<p>Une phrase secrète à usage unique fonctionne comme votre phrase secrète habituelle, mais elle ne peut être utilisé qu'une seule fois.</p> <p>Si la phrase secrète est utilisé de nouveau et que vous tenté de vous identifier à nouveau, vous serez rejeté et le processus d'identification échouera.</p> <p>Juste après une identification correcte, votre phrase secrète à usage unique sera effacée pour interdire tout accès frauduleux.</p> <p>Les phrases secrètes à usage unique sont un excellent choix si vous craignez qu'un logiciel espion ne vole vos données après avoir infecté votre machine.</p> <p> <b>Il est fortement recommandé d'utiliser des phrases secrètes à usage unique lorsque vous accédez à Clipperz depuis un terminal public, comme un cybercafé ou une borne Internet.</b> </p> ", 135 'manageOTPTabDescription':"<p>Une phrase secrète à usage unique fonctionne comme votre phrase secrète habituelle, mais elle ne peut être utilisé qu'une seule fois.</p> <p>Si la phrase secrète est utilisé de nouveau et que vous tenté de vous identifier à nouveau, vous serez rejeté et le processus d'identification échouera.</p> <p>Juste après une identification correcte, votre phrase secrète à usage unique sera effacée pour interdire tout accès frauduleux.</p> <p>Les phrases secrètes à usage unique sont un excellent choix si vous craignez qu'un logiciel espion ne vole vos données après avoir infecté votre machine.</p> <p> <b>Il est fortement recommandé d'utiliser des phrases secrètes à usage unique lorsque vous accédez à Clipperz depuis un terminal public, comme un cybercafé ou une borne Internet.</b> </p> ",
139 'accountPreferencesLabel':"Préférences", 136 'accountPreferencesLabel':"Préférences",
140 'accountPreferencesTabTitle':"Préférences", 137 'accountPreferencesTabTitle':"Préférences",
141 'accountPreferencesLanguageTitle':"Choix de la langue", 138 'accountPreferencesLanguageTitle':"Choix de la langue",
142 'accountPreferencesLanguageDescription':"<p>Choisissez la langue d'affichage de Clipperz dans la liste suivante.</p> ", 139 'accountPreferencesLanguageDescription':"<p>Choisissez la langue d'affichage de Clipperz dans la liste suivante.</p> ",
143 'accountPreferencesInterfaceTitle':"Personnalisation de l'interface", 140 'accountPreferencesInterfaceTitle':"Personnalisation de l'interface",
144 'accountPreferencesInterfaceDescription':"<p>Ajustez l'interface de Clipperz à vos besoins.</p> ", 141 'accountPreferencesInterfaceDescription':"<p>Ajustez l'interface de Clipperz à vos besoins.</p> ",
145 'saveUserPreferencesFormSubmitLabel':"Enregistrer", 142 'saveUserPreferencesFormSubmitLabel':"Enregistrer",
146 'cancelUserPreferencesFormSubmitLabel':"Annuler", 143 'cancelUserPreferencesFormSubmitLabel':"Annuler",
147 'accountPreferencesSavingPanelTitle_Step1':"Enregistrement des préférences", 144 'accountPreferencesSavingPanelTitle_Step1':"Enregistrement des préférences",
148 'accountPreferencesSavingPanelText_Step1':"Chiffrement local de vos préférences", 145 'accountPreferencesSavingPanelText_Step1':"Chiffrement local de vos préférences",
149 'accountPreferencesSavingPanelTitle_Step2':"Enregistrement des préférences", 146 'accountPreferencesSavingPanelTitle_Step2':"Enregistrement des préférences",
150 'accountPreferencesSavingPanelText_Step2':"Transmission des préférences chiffrées au serveur", 147 'accountPreferencesSavingPanelText_Step2':"Transmission des préférences chiffrées au serveur",
151 'deleteAccountTabLabel':"Supprimer votre compte", 148 'deleteAccountTabLabel':"Supprimer votre compte",
152 'deleteAccountTabTitle':"Supprimer votre compte", 149 'deleteAccountTabTitle':"Supprimer votre compte",
diff --git a/frontend/beta/js/Clipperz/PM/Strings/Strings_he-IL.js b/frontend/beta/js/Clipperz/PM/Strings/Strings_he-IL.js
index 3bdfe19..70a59c8 100644
--- a/frontend/beta/js/Clipperz/PM/Strings/Strings_he-IL.js
+++ b/frontend/beta/js/Clipperz/PM/Strings/Strings_he-IL.js
@@ -1,40 +1,37 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29//============================================================================= 26//=============================================================================
30// 27//
31 // H E B R E W (he_IL) 28 // H E B R E W (he_IL)
32// 29//
33//============================================================================= 30//=============================================================================
34 31
35Clipperz.PM.Strings.Languages['he-il'] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], { 32Clipperz.PM.Strings.Languages['he-il'] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], {
36 33
37 //------------------------------------------------------------------------- 34 //-------------------------------------------------------------------------
38 __syntaxFix__: "syntax fix" 35 __syntaxFix__: "syntax fix"
39}); 36});
40 37
diff --git a/frontend/beta/js/Clipperz/PM/Strings/Strings_it-IT.js b/frontend/beta/js/Clipperz/PM/Strings/Strings_it-IT.js
index 51c0d03..acf6acd 100644
--- a/frontend/beta/js/Clipperz/PM/Strings/Strings_it-IT.js
+++ b/frontend/beta/js/Clipperz/PM/Strings/Strings_it-IT.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29Clipperz.PM.Strings.Languages['it-IT'.toLowerCase()] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], { 26Clipperz.PM.Strings.Languages['it-IT'.toLowerCase()] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], {
30 'clipperzServiceDescription':"<h2>Tienilo per te!</h2> <ul> <li> <h3>Clipperz è:</h3> <ul> <li> <p>un archivio semplice e sicuro per le tue password</p> </li> <li> <p>un canale di accesso unificato a tutti i tuoi servizi online</p> </li> <li> <p>una cassaforte digitale per tutti i tuoi dati riservati</p> </li> </ul> </li> <li> <h3>Con Clipperz puoi:</h3> <ul> <li> <p>memorizzare e gestire le password e le credenziali di accesso dei tuoi servizi online</p> </li> <li> <p>accedere ai tuoi servizi online con un solo click senza bisogno di inserire username o password</p> </li> <li> <p>proteggere tutte le tue informazioni confidenziali: codice dell&#x27;allarme di casa, dati delle carte di credito, …</p> </li> <li> <p>condividere dati riservati con i tuoi familiari o colleghi (disponibile a breve)</p> </li> </ul> </li> <li> <h3>I vantaggi di Clipperz:</h3> <ul> <li> <p>gratuito e completamente anonimo</p> </li> <li> <p>accessibile da qualsiasi computer</p> </li> <li> <p>nessun software da scaricare e niente da installare</p> </li> <li> <p>mai più informazioni riservate sul tuo PC o sulla carta!</p> </li> </ul> </li> <li> <h3>La sicurezza di Clipperz:</h3> <ul> <li> <p>i dati sono criptati dal tuo browser prima di essere inviati a Clipperz</p> </li> <li> <p>la chiave per decriptare i dati è conosciuta soltanto da te</p> </li> <li> <p>Clipperz riceve e memorizza solo i tuoi dati criptati e non ha nessuna possibilità di accedere alla versione in chiaro</p> </li> <li> <p>Clipperz utilizza solo sistemi crittografici standard, senza nessuna velleità di inventare e proporre nuovi algoritmi non validati dalla comunità scientifica</p> </li> <li> <p>tutto il codice di Clipperz è disponibile e può essere analizzato in qualsiasi momento, ma non serve essere un esperto di crittografia per apprezzare la sicurezza e la comodità di Clipperz!</p> </li> </ul> </li> <li><a href=\"http://www.clipperz.com\" target=\"_blank\">Maggiori informazioni su Clipperz (in inglese)</a> </li> </ul> ", 27 'clipperzServiceDescription':"<h2>Tienilo per te!</h2> <ul> <li> <h3>Clipperz è:</h3> <ul> <li> <p>un archivio semplice e sicuro per le tue password</p> </li> <li> <p>un canale di accesso unificato a tutti i tuoi servizi online</p> </li> <li> <p>una cassaforte digitale per tutti i tuoi dati riservati</p> </li> </ul> </li> <li> <h3>Con Clipperz puoi:</h3> <ul> <li> <p>memorizzare e gestire le password e le credenziali di accesso dei tuoi servizi online</p> </li> <li> <p>accedere ai tuoi servizi online con un solo click senza bisogno di inserire username o password</p> </li> <li> <p>proteggere tutte le tue informazioni confidenziali: codice dell&#x27;allarme di casa, dati delle carte di credito, …</p> </li> <li> <p>condividere dati riservati con i tuoi familiari o colleghi (disponibile a breve)</p> </li> </ul> </li> <li> <h3>I vantaggi di Clipperz:</h3> <ul> <li> <p>gratuito e completamente anonimo</p> </li> <li> <p>accessibile da qualsiasi computer</p> </li> <li> <p>nessun software da scaricare e niente da installare</p> </li> <li> <p>mai più informazioni riservate sul tuo PC o sulla carta!</p> </li> </ul> </li> <li> <h3>La sicurezza di Clipperz:</h3> <ul> <li> <p>i dati sono criptati dal tuo browser prima di essere inviati a Clipperz</p> </li> <li> <p>la chiave per decriptare i dati è conosciuta soltanto da te</p> </li> <li> <p>Clipperz riceve e memorizza solo i tuoi dati criptati e non ha nessuna possibilità di accedere alla versione in chiaro</p> </li> <li> <p>Clipperz utilizza solo sistemi crittografici standard, senza nessuna velleità di inventare e proporre nuovi algoritmi non validati dalla comunità scientifica</p> </li> <li> <p>tutto il codice di Clipperz è disponibile e può essere analizzato in qualsiasi momento, ma non serve essere un esperto di crittografia per apprezzare la sicurezza e la comodità di Clipperz!</p> </li> </ul> </li> <li><a href=\"http://www.clipperz.com\" target=\"_blank\">Maggiori informazioni su Clipperz (in inglese)</a> </li> </ul> ",
31 'loginFormTitle':"accedi a Clipperz", 28 'loginFormTitle':"accedi a Clipperz",
32 'loginFormUsernameLabel':"Utente", 29 'loginFormUsernameLabel':"Utente",
33 'loginFormPassphraseLabel':"frase segreta", 30 'loginFormPassphraseLabel':"frase segreta",
34 'loginFormDontHaveAnAccountLabel':"non ti sei ancora registrato?", 31 'loginFormDontHaveAnAccountLabel':"non ti sei ancora registrato?",
35 'loginFormCreateOneLabel':"registrati adesso", 32 'loginFormCreateOneLabel':"registrati adesso",
36 'loginFormForgotYourCredentialsLabel':"hai perso i dati di accesso?", 33 'loginFormForgotYourCredentialsLabel':"hai perso i dati di accesso?",
37 'loginFormAarghThatsBadLabel':"aargh! questo non è bello!", 34 'loginFormAarghThatsBadLabel':"aargh! questo non è bello!",
38 'loginFormAfraidOfMaliciousScriptsLabel':"non ti fidi?", 35 'loginFormAfraidOfMaliciousScriptsLabel':"non ti fidi?",
39 'loginFormVerifyTheCodeLabel':"controlla il codice", 36 'loginFormVerifyTheCodeLabel':"controlla il codice",
40 'loginFormButtonLabel':"Accedi", 37 'loginFormButtonLabel':"Accedi",
41 'loginFormOneTimePasswordCheckboxLabel':"usa un codice “usa e getta”", 38 'loginFormOneTimePasswordCheckboxLabel':"usa un codice “usa e getta”",
42 'loginFormOneTimePasswordCheckboxDescription':"", 39 'loginFormOneTimePasswordCheckboxDescription':"",
43 'loginPanelSwithLanguageDescription':"<h5>Seleziona la tua lingua preferita</h5> ", 40 'loginPanelSwithLanguageDescription':"<h5>Seleziona la tua lingua preferita</h5> ",
44 'browserCompatibilityDescription':"<p>Clipperz consiglia Firefox per una maggiore sicurezza. Clipperz supporta anche Opera ed Internet Explorer.</p> ", 41 'browserCompatibilityDescription':"<p>Clipperz consiglia Firefox per una maggiore sicurezza. Clipperz supporta anche Opera ed Internet Explorer.</p> ",
45 'OTPloginMessagePanelInitialTitle':"Accesso con codice “usa e getta”", 42 'OTPloginMessagePanelInitialTitle':"Accesso con codice “usa e getta”",
46 'OTPloginMessagePanelInitialText':"Invio delle credenziali OTP ...", 43 'OTPloginMessagePanelInitialText':"Invio delle credenziali OTP ...",
47 'OTPloginMessagePanelLoadingTitle':"Accesso con codice “usa e getta”", 44 'OTPloginMessagePanelLoadingTitle':"Accesso con codice “usa e getta”",
48 'OTPloginMessagePanelLoadingText':"Caricamento dei dati di autenticazione criptati ...", 45 'OTPloginMessagePanelLoadingText':"Caricamento dei dati di autenticazione criptati ...",
49 'OTPloginMessagePanelProcessingTitle':"Accesso con codice “usa e getta”", 46 'OTPloginMessagePanelProcessingTitle':"Accesso con codice “usa e getta”",
50 'OTPloginMessagePanelProcessingText':"Decodifica locale dei dati di autenticazione ...", 47 'OTPloginMessagePanelProcessingText':"Decodifica locale dei dati di autenticazione ...",
51 'loginMessagePanelInitialTitle':"Connessione in corso ...", 48 'loginMessagePanelInitialTitle':"Connessione in corso ...",
52 'loginMessagePanelInitialText':"---", 49 'loginMessagePanelInitialText':"---",
53 'loginMessagePanelInitialButtonLabel':"Annulla", 50 'loginMessagePanelInitialButtonLabel':"Annulla",
54 'loginMessagePanelConnectedTitle':"Connesso", 51 'loginMessagePanelConnectedTitle':"Connesso",
55 'loginMessagePanelConnectedText':"Fatto", 52 'loginMessagePanelConnectedText':"Fatto",
56 'loginMessagePanelFailureTitle':"Errore", 53 'loginMessagePanelFailureTitle':"Errore",
57 'loginMessagePanelFailureText':"Connessione fallita", 54 'loginMessagePanelFailureText':"Connessione fallita",
58 'loginMessagePanelFailureButtonLabel':"Chiudi", 55 'loginMessagePanelFailureButtonLabel':"Chiudi",
59 'connectionLoginSendingCredentialsMessageTitle':"Verifica delle credenziali", 56 'connectionLoginSendingCredentialsMessageTitle':"Verifica delle credenziali",
60 'connectionLoginSendingCredentialsMessageText':"Invio delle credenziali", 57 'connectionLoginSendingCredentialsMessageText':"Invio delle credenziali",
61 'connectionLoginCredentialsVerificationMessageTitle':"Verifica delle credenziali", 58 'connectionLoginCredentialsVerificationMessageTitle':"Verifica delle credenziali",
62 'connectionLoginCredentialsVerificationMessageText':"Esecuzione dell&#x27;autenticazione SRP ...", 59 'connectionLoginCredentialsVerificationMessageText':"Esecuzione dell&#x27;autenticazione SRP ...",
63 'connectionLoginDoneMessageTitle':"Verifica delle credenziali", 60 'connectionLoginDoneMessageTitle':"Verifica delle credenziali",
64 'connectionLoginDoneMessageText':"Connesso", 61 'connectionLoginDoneMessageText':"Connesso",
65 'userLoginPanelUpgradingUserCredentialsMessageTitle':"Verifica delle credenziali", 62 'userLoginPanelUpgradingUserCredentialsMessageTitle':"Verifica delle credenziali",
66 'userLoginPanelUpgradingUserCredentialsMessageText':"Aggiornamento delle credenziali ad un nuovo schema di autenticazione", 63 'userLoginPanelUpgradingUserCredentialsMessageText':"Aggiornamento delle credenziali ad un nuovo schema di autenticazione",
67 'userLoginPanelConnectedMessageTitle':"Utente autenticato", 64 'userLoginPanelConnectedMessageTitle':"Utente autenticato",
68 'userLoginPanelConnectedMessageText':"Autenticazione eseguita con successo", 65 'userLoginPanelConnectedMessageText':"Autenticazione eseguita con successo",
69 'userLoginPanelTryingAnOlderConnectionSchemaMessageTitle':"Verifica delle credenziali", 66 'userLoginPanelTryingAnOlderConnectionSchemaMessageTitle':"Verifica delle credenziali",
70 'userLoginPanelTryingAnOlderConnectionSchemaMessageText':"Tentativo con vecchio schema di autenticazione", 67 'userLoginPanelTryingAnOlderConnectionSchemaMessageText':"Tentativo con vecchio schema di autenticazione",
71 'userLoginPanelLoadingUserDataMessageTitle':"Utente autenticato", 68 'userLoginPanelLoadingUserDataMessageTitle':"Utente autenticato",
72 'userLoginPanelLoadingUserDataMessageText':"Scarica le intestazioni criptate delle schede da Clipperz", 69 'userLoginPanelLoadingUserDataMessageText':"Scarica le intestazioni criptate delle schede da Clipperz",
73 'userLoginPanelDecryptingUserDataMessageTitle':"Utente autenticato", 70 'userLoginPanelDecryptingUserDataMessageTitle':"Utente autenticato",
74 'userLoginPanelDecryptingUserDataMessageText':"Decodifica locale dell&#x27;intestazione delle schede", 71 'userLoginPanelDecryptingUserDataMessageText':"Decodifica locale dell&#x27;intestazione delle schede",
75 'userLoginPanelDecryptingUserStatisticsMessageTitle':"Utente autenticato", 72 'userLoginPanelDecryptingUserStatisticsMessageTitle':"Utente autenticato",
76 'userLoginPanelDecryptingUserStatisticsMessageText':"Decodifica locale delle statistiche d&#x27;uso", 73 'userLoginPanelDecryptingUserStatisticsMessageText':"Decodifica locale delle statistiche d&#x27;uso",
77 'splashAlertTitle':"Benvenuto a Clipperz!", 74 'splashAlertTitle':"Benvenuto a Clipperz!",
78 'splashAlertText':"<p>Alcuni consigli per la sicurezza</p> <ul> <li> <p>La sicurezza dei tuoi dati dipende da quanto è sicura la frase segreta che usi per proteggerli. Nessuno può accedervi a meno che non conosca la frase segreta.</p> </li> <li> <p>Se hai intenzione di usare Clipperz per conservare informazioni sensibili e riservate, scegli attentamente una frase segreta complessa. Più è lunga, maggiore è la sicurezza!</p> </li> <li> <p>E non dimenticare che Clipperz non è in grado di recuperare la tua frase segreta in caso di smarrimento!</p> </li> </ul> <p>Per maggiori informazioni sulla sicurezza, consulta il sito <a href=\"http://www.clipperz.com\" target=\"_blank\">Clipperz</a> (in lingua inglese).</p> ", 75 'splashAlertText':"<p>Alcuni consigli per la sicurezza</p> <ul> <li> <p>La sicurezza dei tuoi dati dipende da quanto è sicura la frase segreta che usi per proteggerli. Nessuno può accedervi a meno che non conosca la frase segreta.</p> </li> <li> <p>Se hai intenzione di usare Clipperz per conservare informazioni sensibili e riservate, scegli attentamente una frase segreta complessa. Più è lunga, maggiore è la sicurezza!</p> </li> <li> <p>E non dimenticare che Clipperz non è in grado di recuperare la tua frase segreta in caso di smarrimento!</p> </li> </ul> <p>Per maggiori informazioni sulla sicurezza, consulta il sito <a href=\"http://www.clipperz.com\" target=\"_blank\">Clipperz</a> (in lingua inglese).</p> ",
79 'splashAlertCloseButtonLabel':"Ok", 76 'splashAlertCloseButtonLabel':"Ok",
80 'registrationFormTitle':"crea il tuo utente", 77 'registrationFormTitle':"crea il tuo utente",
81 'registrationFormUsernameLabel':"Utente", 78 'registrationFormUsernameLabel':"Utente",
82 'registrationFormPassphraseLabel':"frase segreta", 79 'registrationFormPassphraseLabel':"frase segreta",
83 'registrationFormRetypePassphraseLabel':"ripeti frase segreta", 80 'registrationFormRetypePassphraseLabel':"ripeti frase segreta",
84 'registrationFormSafetyCheckLabel':"Sono consapevole che Clipperz non è in grado di recuperare una frase segreta dimenticata.", 81 'registrationFormSafetyCheckLabel':"Sono consapevole che Clipperz non è in grado di recuperare una frase segreta dimenticata.",
85 'registrationFormTermsOfServiceCheckLabel':"Dichiaro di aver letto e di accettare i <a href=\"http://www.clipperz.com/terms_of_service\" target=\"_blank\">Termini del Servizio</a> .", 82 'registrationFormTermsOfServiceCheckLabel':"Dichiaro di aver letto e di accettare i <a href=\"http://www.clipperz.com/terms_of_service\" target=\"_blank\">Termini del Servizio</a> .",
86 'registrationFormDoYouAlreadyHaveAnAccountLabel':"sei già un utente registrato?", 83 'registrationFormDoYouAlreadyHaveAnAccountLabel':"sei già un utente registrato?",
87 'registrationFormSimplyLoginLabel':"accedi subito", 84 'registrationFormSimplyLoginLabel':"accedi subito",
88 'registrationFormButtonLabel':"Registrati", 85 'registrationFormButtonLabel':"Registrati",
89 'registrationFormWarningMessageNotMatchingPassphrases':"Le frasi segrete non corrispondono, ripeti l&#x27;inserimento.", 86 'registrationFormWarningMessageNotMatchingPassphrases':"Le frasi segrete non corrispondono, ripeti l&#x27;inserimento.",
90 'registrationFormWarningMessageSafetyCheckNotSelected':"Leggi e spunta le condizioni sotto riportate.", 87 'registrationFormWarningMessageSafetyCheckNotSelected':"Leggi e spunta le condizioni sotto riportate.",
91 'registrationFormWarningMessageTermsOfServiceCheckNotSelected':"Per procedere devi accettare i Termini del Servizio.", 88 'registrationFormWarningMessageTermsOfServiceCheckNotSelected':"Per procedere devi accettare i Termini del Servizio.",
92 'registrationMessagePanelInitialTitle':"Registrazione in corso ...", 89 'registrationMessagePanelInitialTitle':"Registrazione in corso ...",
93 'registrationMessagePanelInitialText':"---", 90 'registrationMessagePanelInitialText':"---",
94 'registrationMessagePanelInitialButtonLabel':"Annulla", 91 'registrationMessagePanelInitialButtonLabel':"Annulla",
95 'registrationMessagePanelRegistrationDoneTitle':"Registrazione", 92 'registrationMessagePanelRegistrationDoneTitle':"Registrazione",
96 'registrationMessagePanelRegistrationDoneText':"Fatto", 93 'registrationMessagePanelRegistrationDoneText':"Fatto",
97 'registrationMessagePanelFailureTitle':"Registrazione fallita", 94 'registrationMessagePanelFailureTitle':"Registrazione fallita",
98 'registrationMessagePanelFailureButtonLabel':"Chiudi", 95 'registrationMessagePanelFailureButtonLabel':"Chiudi",
99 'connectionRegistrationSendingRequestMessageText':"Verifica delle credenziali", 96 'connectionRegistrationSendingRequestMessageText':"Verifica delle credenziali",
100 'connectionRegistrationSendingCredentialsMessageText':"Invio delle credenziali", 97 'connectionRegistrationSendingCredentialsMessageText':"Invio delle credenziali",
101 'registrationSplashPanelTitle':"Avviso di sicurezza", 98 'registrationSplashPanelTitle':"Avviso di sicurezza",
102 'registrationSplashPanelDescription':"<p>Queste sono le tue credenziali di accesso a Clipperz, conservale con cura. Il tuo utente ed la tua frase segreta non ti verranno mostrati una seconda volta!</p> ", 99 'registrationSplashPanelDescription':"<p>Queste sono le tue credenziali di accesso a Clipperz, conservale con cura. Il tuo utente ed la tua frase segreta non ti verranno mostrati una seconda volta!</p> ",
103 'registrationSplashPanelUsernameLabel':"Utente", 100 'registrationSplashPanelUsernameLabel':"Utente",
104 'registrationSplashPanelPassphraseLabel':"frase segreta", 101 'registrationSplashPanelPassphraseLabel':"frase segreta",
105 'registrationSplashPanelShowPassphraseButtonLabel':"mostra la frase segreta", 102 'registrationSplashPanelShowPassphraseButtonLabel':"mostra la frase segreta",
106 'donateHeaderLinkLabel':"donazioni", 103 'donateHeaderLinkLabel':"donazioni",
107 'creditsHeaderLinkLabel':"credits", 104 'creditsHeaderLinkLabel':"credits",
108 'feedbackHeaderLinkLabel':"scrivici", 105 'feedbackHeaderLinkLabel':"scrivici",
109 'helpHeaderLinkLabel':"aiuto", 106 'helpHeaderLinkLabel':"aiuto",
110 'forumHeaderLinkLabel':"forum", 107 'forumHeaderLinkLabel':"forum",
111 'recordMenuLabel':"Schede", 108 'recordMenuLabel':"Schede",
112 'accountMenuLabel':"profilo", 109 'accountMenuLabel':"profilo",
113 'dataMenuLabel':"dati", 110 'dataMenuLabel':"dati",
114 'contactsMenuLabel':"Contatti", 111 'contactsMenuLabel':"Contatti",
115 'toolsMenuLabel':"strumenti", 112 'toolsMenuLabel':"strumenti",
116 'logoutMenuLabel':"esci", 113 'logoutMenuLabel':"esci",
117 'lockMenuLabel':"blocca", 114 'lockMenuLabel':"blocca",
118 'lockTitle':"Utente bloccato", 115 'lockTitle':"Utente bloccato",
119 'lockDescription':"<p>Per sbloccare il tuo utente inserisci la frase segreta</p> ", 116 'lockDescription':"<p>Per sbloccare il tuo utente inserisci la frase segreta</p> ",
120 'unlockButtonLabel':"Sblocca", 117 'unlockButtonLabel':"Sblocca",
121 'changePasswordTabLabel':"Cambia la tua frase segreta", 118 'changePasswordTabLabel':"Cambia la tua frase segreta",
122 'changePasswordTabTitle':"Cambia la tua frase segreta", 119 'changePasswordTabTitle':"Cambia la tua frase segreta",
123 'changePasswordFormUsernameLabel':"Utente", 120 'changePasswordFormUsernameLabel':"Utente",
124 'changePasswordFormOldPassphraseLabel':"attuale frase segreta", 121 'changePasswordFormOldPassphraseLabel':"attuale frase segreta",
125 'changePasswordFormNewPassphraseLabel':"nuova frase segreta", 122 'changePasswordFormNewPassphraseLabel':"nuova frase segreta",
126 'changePasswordFormRetypePassphraseLabel':"ripeti nuova frase segreta", 123 'changePasswordFormRetypePassphraseLabel':"ripeti nuova frase segreta",
127 'changePasswordFormSafetyCheckboxLabel':"Sono consapevole che Clipperz non è in grado di recuperare una frase segreta dimenticata.", 124 'changePasswordFormSafetyCheckboxLabel':"Sono consapevole che Clipperz non è in grado di recuperare una frase segreta dimenticata.",
128 'changePasswordFormSubmitLabel':"Cambia frase segreta", 125 'changePasswordFormSubmitLabel':"Cambia frase segreta",
129 'changePasswordFormWrongUsernameWarning':"Utente errato", 126 'changePasswordFormWrongUsernameWarning':"Utente errato",
130 'changePasswordFormWrongPassphraseWarning':"Frase segreta errata", 127 'changePasswordFormWrongPassphraseWarning':"Frase segreta errata",
131 'changePasswordFormWrongRetypePassphraseWarning':"Le frasi segrete non corrispondono, ripeti l&#x27;inserimento.", 128 'changePasswordFormWrongRetypePassphraseWarning':"Le frasi segrete non corrispondono, ripeti l&#x27;inserimento.",
132 'changePasswordFormSafetyCheckWarning':"Leggi e spunta le condizioni sotto riportate.", 129 'changePasswordFormSafetyCheckWarning':"Leggi e spunta le condizioni sotto riportate.",
133 'changePasswordFormProgressDialogTitle':"Aggiornamento credenziali", 130 'changePasswordFormProgressDialogTitle':"Aggiornamento credenziali",
134 'changePasswordFormProgressDialogEmptyText':"---", 131 'changePasswordFormProgressDialogEmptyText':"---",
135 'changePasswordFormProgressDialogConnectedMessageTitle':"Connesso", 132 'changePasswordFormProgressDialogConnectedMessageTitle':"Connesso",
136 'changePasswordFormProgressDialogConnectedMessageText':"Fatto", 133 'changePasswordFormProgressDialogConnectedMessageText':"Fatto",
137 'changePasswordFormProgressDialogErrorMessageTitle':"Errore", 134 'changePasswordFormProgressDialogErrorMessageTitle':"Errore",
138 'changePasswordFormProgressDialogErrorMessageText':"Aggiornamento credenziali fallito!", 135 'changePasswordFormProgressDialogErrorMessageText':"Aggiornamento credenziali fallito!",
139 'changeCredentialsPanelEncryptingDataMessageTitle':"Cambio della frase segreta", 136 'changeCredentialsPanelEncryptingDataMessageTitle':"Cambio della frase segreta",
140 'changeCredentialsPanelEncryptingDataMessageText':"Cripta localmente l&#x27;intestazione delle schede", 137 'changeCredentialsPanelEncryptingDataMessageText':"Cripta localmente l&#x27;intestazione delle schede",
141 'changeCredentialsPanelCreatingNewCredentialsMessageTitle':"Cambio della frase segreta", 138 'changeCredentialsPanelCreatingNewCredentialsMessageTitle':"Cambio della frase segreta",
142 'changeCredentialsPanelCreatingNewCredentialsMessageText':"Aggiornamento delle credenziali", 139 'changeCredentialsPanelCreatingNewCredentialsMessageText':"Aggiornamento delle credenziali",
143 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageTitle':"Cambio della frase segreta", 140 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageTitle':"Cambio della frase segreta",
144 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageText':"Carica le intestazioni criptate delle schede su Clipperz", 141 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageText':"Carica le intestazioni criptate delle schede su Clipperz",
145 'changeCredentialsPanelDoneMessageTitle':"Cambio della frase segreta", 142 'changeCredentialsPanelDoneMessageTitle':"Cambio della frase segreta",
146 'changeCredentialsPanelDoneMessageText':"Fatto", 143 'changeCredentialsPanelDoneMessageText':"Fatto",
147 'manageOTPTabLabel':"Codici di accesso “usa e getta”", 144 'manageOTPTabLabel':"Codici di accesso “usa e getta”",
148 'manageOTPTabTitle':"Codici di accesso “usa e getta”", 145 'manageOTPTabTitle':"Codici di accesso “usa e getta”",
149 'manageOTPTabDescription':"<p>I codici di accesso e “usa e getta” funzionano come la tua normale frase segreta, ma possono essere utilizzate una sola volta.</p> <p>Se lo stesso codice “usa e getta” viene utilizzato per tentare ulteriori accessi il processo di autenticazione fallirà.</p> <p>Infatti, dopo il primo utilizzo, il codice “usa e getta” verrà immediatamente disattivato e cancellato prevenendo così eventuali accessi non autorizzati.</p> <p>L&#x27;utilizzo di codici “usa e getta” è una scelta consigliata per chi teme che il computer dal quale sta accedendo a Clipperz non sia sicuro a causa di software quali keyloggers e spyware che potrebbero registrare le proprie credenziali di accesso.</p> <p><b>E&#x27; caldamente consigliato l&#x27;utilizzo di codici “usa e getta” quando ci si collega a Clipperz da terminali pubblici quali Internet Cafe e biblioteche.</b> </p> ", 146 'manageOTPTabDescription':"<p>I codici di accesso e “usa e getta” funzionano come la tua normale frase segreta, ma possono essere utilizzate una sola volta.</p> <p>Se lo stesso codice “usa e getta” viene utilizzato per tentare ulteriori accessi il processo di autenticazione fallirà.</p> <p>Infatti, dopo il primo utilizzo, il codice “usa e getta” verrà immediatamente disattivato e cancellato prevenendo così eventuali accessi non autorizzati.</p> <p>L&#x27;utilizzo di codici “usa e getta” è una scelta consigliata per chi teme che il computer dal quale sta accedendo a Clipperz non sia sicuro a causa di software quali keyloggers e spyware che potrebbero registrare le proprie credenziali di accesso.</p> <p><b>E&#x27; caldamente consigliato l&#x27;utilizzo di codici “usa e getta” quando ci si collega a Clipperz da terminali pubblici quali Internet Cafe e biblioteche.</b> </p> ",
150 'oneTimePasswordReadOnlyMessage':"<h6>Attenzione!</h6> <p>Non è possibilie accedere ai propri codici “usa e getta” quando si utilizza la versione offline di Clipperz.</p> ", 147 'oneTimePasswordReadOnlyMessage':"<h6>Attenzione!</h6> <p>Non è possibilie accedere ai propri codici “usa e getta” quando si utilizza la versione offline di Clipperz.</p> ",
151 'oneTimePasswordLoadingMessage':"<h6>Caricamento dati</h6> <p>Si prega di attendere ...</p> ", 148 'oneTimePasswordLoadingMessage':"<h6>Caricamento dati</h6> <p>Si prega di attendere ...</p> ",
152 'oneTimePasswordNoPasswordAvailable':"<h6>Nessun codice “usa e getta” disponibile</h6> <p>Per creare codici “usa e getta” clicca sul pulsante “Nuovo” che trovi qui sopra.</p> ", 149 'oneTimePasswordNoPasswordAvailable':"<h6>Nessun codice “usa e getta” disponibile</h6> <p>Per creare codici “usa e getta” clicca sul pulsante “Nuovo” che trovi qui sopra.</p> ",
diff --git a/frontend/beta/js/Clipperz/PM/Strings/Strings_ja-JP.js b/frontend/beta/js/Clipperz/PM/Strings/Strings_ja-JP.js
index 2b571b7..42993b3 100644
--- a/frontend/beta/js/Clipperz/PM/Strings/Strings_ja-JP.js
+++ b/frontend/beta/js/Clipperz/PM/Strings/Strings_ja-JP.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29Clipperz.PM.Strings.Languages['ja-JP'.toLowerCase()] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], { 26Clipperz.PM.Strings.Languages['ja-JP'.toLowerCase()] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], {
30 'clipperzServiceDescription':"<h2>自分で管理しよう!</h2> <ul> <li> <h3>Clipperz は</h3> <ul> <li> <p>安全でシンプルなパスワードマネージャです</p> </li> <li> <p>シングルサインオンを提供します</p> </li> <li> <p>機密情報のデジタル格納庫です</p> </li> </ul> </li> <li> <h3>Clipperz でできること</h3> <ul> <li> <p>パスワードを保管して管理できます</p> </li> <li> <p>ユーザー名やパスワードを入力せずに登録したウェブサービスにログインできます</p> </li> <li> <p>暗証番号やクレジットカード番号などあらゆる機密情報を守ります</p> </li> <li> <p>家族や信用できる相手と機密情報を共有できます(提供予定)</p> </li> </ul> </li> <li> <h3>Clipperz のよいところ</h3> <ul> <li> <p>無料で匿名利用できます</p> </li> <li> <p>いつでもどのコンピュータからでもアクセスできます</p> </li> <li> <p>ソフトウェアのダウンロードやインストールは不要です</p> </li> <li> <p>PC や紙に機密情報を残す必要がありません</p> </li> </ul> </li> <li> <h3>Clipperz のセキュリティ</h3> <ul> <li> <p>データはブラウザで暗号化されてから Clipprez に送信されます</p> </li> <li> <p>暗号化のキーはあなただけが知っているパスフレーズです</p> </li> <li> <p>保管したデータは暗号化されていて、保管中には決して中身を見ることができません</p> </li> <li> <p>標準が確立された暗号化手順を採用しています</p> </li> <li> <p>ソースコードはいつでも参照できますが、暗号化について何も知らなくても使えます</p> </li> </ul> </li> <li><a href=\"http://www.clipperz.com\" target=\"_blank\">もっと見る</a> </li> </ul> ", 27 'clipperzServiceDescription':"<h2>自分で管理しよう!</h2> <ul> <li> <h3>Clipperz は</h3> <ul> <li> <p>安全でシンプルなパスワードマネージャです</p> </li> <li> <p>シングルサインオンを提供します</p> </li> <li> <p>機密情報のデジタル格納庫です</p> </li> </ul> </li> <li> <h3>Clipperz でできること</h3> <ul> <li> <p>パスワードを保管して管理できます</p> </li> <li> <p>ユーザー名やパスワードを入力せずに登録したウェブサービスにログインできます</p> </li> <li> <p>暗証番号やクレジットカード番号などあらゆる機密情報を守ります</p> </li> <li> <p>家族や信用できる相手と機密情報を共有できます(提供予定)</p> </li> </ul> </li> <li> <h3>Clipperz のよいところ</h3> <ul> <li> <p>無料で匿名利用できます</p> </li> <li> <p>いつでもどのコンピュータからでもアクセスできます</p> </li> <li> <p>ソフトウェアのダウンロードやインストールは不要です</p> </li> <li> <p>PC や紙に機密情報を残す必要がありません</p> </li> </ul> </li> <li> <h3>Clipperz のセキュリティ</h3> <ul> <li> <p>データはブラウザで暗号化されてから Clipprez に送信されます</p> </li> <li> <p>暗号化のキーはあなただけが知っているパスフレーズです</p> </li> <li> <p>保管したデータは暗号化されていて、保管中には決して中身を見ることができません</p> </li> <li> <p>標準が確立された暗号化手順を採用しています</p> </li> <li> <p>ソースコードはいつでも参照できますが、暗号化について何も知らなくても使えます</p> </li> </ul> </li> <li><a href=\"http://www.clipperz.com\" target=\"_blank\">もっと見る</a> </li> </ul> ",
31 'loginFormTitle':"Clipperz のアカウントでログイン", 28 'loginFormTitle':"Clipperz のアカウントでログイン",
32 'loginFormUsernameLabel':"ユーザー名", 29 'loginFormUsernameLabel':"ユーザー名",
33 'loginFormPassphraseLabel':"パスフレーズ", 30 'loginFormPassphraseLabel':"パスフレーズ",
34 'loginFormDontHaveAnAccountLabel':"アカウントを持っていない?", 31 'loginFormDontHaveAnAccountLabel':"アカウントを持っていない?",
35 'loginFormCreateOneLabel':"新規作成", 32 'loginFormCreateOneLabel':"新規作成",
36 'loginFormForgotYourCredentialsLabel':"パスフレーズを忘れた?", 33 'loginFormForgotYourCredentialsLabel':"パスフレーズを忘れた?",
37 'loginFormAarghThatsBadLabel':"それは困った!", 34 'loginFormAarghThatsBadLabel':"それは困った!",
38 'loginFormAfraidOfMaliciousScriptsLabel':"偽サイトかも?", 35 'loginFormAfraidOfMaliciousScriptsLabel':"偽サイトかも?",
39 'loginFormVerifyTheCodeLabel':"確認する", 36 'loginFormVerifyTheCodeLabel':"確認する",
40 'loginFormButtonLabel':"ログイン", 37 'loginFormButtonLabel':"ログイン",
41 'loginFormOneTimePasswordCheckboxLabel':"ワンタイムパスフレーズ使用", 38 'loginFormOneTimePasswordCheckboxLabel':"ワンタイムパスフレーズ使用",
42 'loginFormOneTimePasswordCheckboxDescription':"", 39 'loginFormOneTimePasswordCheckboxDescription':"",
43 'loginPanelSwithLanguageDescription':"<h5>言語設定の変更</h5> ", 40 'loginPanelSwithLanguageDescription':"<h5>言語設定の変更</h5> ",
44 'browserCompatibilityDescription':"<p>Clipperz は Firefox に最適化されています。 しかし Clipperz は Opera や Safari そしてインターネットエクスプローラでも十分動作します。</p> ", 41 'browserCompatibilityDescription':"<p>Clipperz は Firefox に最適化されています。 しかし Clipperz は Opera や Safari そしてインターネットエクスプローラでも十分動作します。</p> ",
45 'OTPloginMessagePanelInitialTitle':"ワンタイムパスフレーズでログイン中", 42 'OTPloginMessagePanelInitialTitle':"ワンタイムパスフレーズでログイン中",
46 'OTPloginMessagePanelInitialText':"OTP 情報送信中 ...", 43 'OTPloginMessagePanelInitialText':"OTP 情報送信中 ...",
47 'OTPloginMessagePanelLoadingTitle':"ワンタイムパスフレーズでログイン中", 44 'OTPloginMessagePanelLoadingTitle':"ワンタイムパスフレーズでログイン中",
48 'OTPloginMessagePanelLoadingText':"認証情報を取得中 ...", 45 'OTPloginMessagePanelLoadingText':"認証情報を取得中 ...",
49 'OTPloginMessagePanelProcessingTitle':"ワンタイムパスフレーズでログイン中", 46 'OTPloginMessagePanelProcessingTitle':"ワンタイムパスフレーズでログイン中",
50 'OTPloginMessagePanelProcessingText':"認証情報を復号中 ...", 47 'OTPloginMessagePanelProcessingText':"認証情報を復号中 ...",
51 'loginMessagePanelInitialTitle':"ログイン中 ...", 48 'loginMessagePanelInitialTitle':"ログイン中 ...",
52 'loginMessagePanelInitialText':"---", 49 'loginMessagePanelInitialText':"---",
53 'loginMessagePanelInitialButtonLabel':"キャンセル", 50 'loginMessagePanelInitialButtonLabel':"キャンセル",
54 'loginMessagePanelConnectedTitle':"接続完了", 51 'loginMessagePanelConnectedTitle':"接続完了",
55 'loginMessagePanelConnectedText':"完了", 52 'loginMessagePanelConnectedText':"完了",
56 'loginMessagePanelFailureTitle':"エラー", 53 'loginMessagePanelFailureTitle':"エラー",
57 'loginMessagePanelFailureText':"ログインに失敗しました", 54 'loginMessagePanelFailureText':"ログインに失敗しました",
58 'loginMessagePanelFailureButtonLabel':"閉じる", 55 'loginMessagePanelFailureButtonLabel':"閉じる",
59 'connectionLoginSendingCredentialsMessageTitle':"認証確認中", 56 'connectionLoginSendingCredentialsMessageTitle':"認証確認中",
60 'connectionLoginSendingCredentialsMessageText':"認証送信中", 57 'connectionLoginSendingCredentialsMessageText':"認証送信中",
61 'connectionLoginCredentialsVerificationMessageTitle':"認証確認中", 58 'connectionLoginCredentialsVerificationMessageTitle':"認証確認中",
62 'connectionLoginCredentialsVerificationMessageText':"SRP 認証中", 59 'connectionLoginCredentialsVerificationMessageText':"SRP 認証中",
63 'connectionLoginDoneMessageTitle':"認証確認中", 60 'connectionLoginDoneMessageTitle':"認証確認中",
64 'connectionLoginDoneMessageText':"接続完了", 61 'connectionLoginDoneMessageText':"接続完了",
65 'userLoginPanelUpgradingUserCredentialsMessageTitle':"認証確認中", 62 'userLoginPanelUpgradingUserCredentialsMessageTitle':"認証確認中",
66 'userLoginPanelUpgradingUserCredentialsMessageText':"認証更新中", 63 'userLoginPanelUpgradingUserCredentialsMessageText':"認証更新中",
67 'userLoginPanelConnectedMessageTitle':"認証完了", 64 'userLoginPanelConnectedMessageTitle':"認証完了",
68 'userLoginPanelConnectedMessageText':"ログイン完了", 65 'userLoginPanelConnectedMessageText':"ログイン完了",
69 'userLoginPanelTryingAnOlderConnectionSchemaMessageTitle':"認証確認中", 66 'userLoginPanelTryingAnOlderConnectionSchemaMessageTitle':"認証確認中",
70 'userLoginPanelTryingAnOlderConnectionSchemaMessageText':"認証復元中", 67 'userLoginPanelTryingAnOlderConnectionSchemaMessageText':"認証復元中",
71 'userLoginPanelLoadingUserDataMessageTitle':"認証完了", 68 'userLoginPanelLoadingUserDataMessageTitle':"認証完了",
72 'userLoginPanelLoadingUserDataMessageText':"暗号化データを受信中", 69 'userLoginPanelLoadingUserDataMessageText':"暗号化データを受信中",
73 'userLoginPanelDecryptingUserDataMessageTitle':"認証完了", 70 'userLoginPanelDecryptingUserDataMessageTitle':"認証完了",
74 'userLoginPanelDecryptingUserDataMessageText':"復号中", 71 'userLoginPanelDecryptingUserDataMessageText':"復号中",
75 'userLoginPanelDecryptingUserStatisticsMessageTitle':"認証完了", 72 'userLoginPanelDecryptingUserStatisticsMessageTitle':"認証完了",
76 'userLoginPanelDecryptingUserStatisticsMessageText':"復号中", 73 'userLoginPanelDecryptingUserStatisticsMessageText':"復号中",
77 'splashAlertTitle':"Clipperz へようこそ", 74 'splashAlertTitle':"Clipperz へようこそ",
78 'splashAlertText':"<p>セキュリティアドバイス</p> <ul> <li> <p>Clipperz に保管したデータはパスフレーズによって保護されます。 パスフレーズを知らない人はデータにアクセスできません。</p> </li> <li> <p>Clipperz に重要なデータを保管するためにパスフレーズを類推されにくいものにしてください。 長いほど安全です。</p> </li> <li> <p>パスフレーズを忘れてしまったら Clipperz ではデータを復元できません。</p> </li> </ul> <p>さらに詳しくは Clipperz のサイトをごらんください。</p> ", 75 'splashAlertText':"<p>セキュリティアドバイス</p> <ul> <li> <p>Clipperz に保管したデータはパスフレーズによって保護されます。 パスフレーズを知らない人はデータにアクセスできません。</p> </li> <li> <p>Clipperz に重要なデータを保管するためにパスフレーズを類推されにくいものにしてください。 長いほど安全です。</p> </li> <li> <p>パスフレーズを忘れてしまったら Clipperz ではデータを復元できません。</p> </li> </ul> <p>さらに詳しくは Clipperz のサイトをごらんください。</p> ",
79 'splashAlertCloseButtonLabel':"OK", 76 'splashAlertCloseButtonLabel':"OK",
80 'registrationFormTitle':"新規アカウント作成", 77 'registrationFormTitle':"新規アカウント作成",
81 'registrationFormUsernameLabel':"ユーザー名", 78 'registrationFormUsernameLabel':"ユーザー名",
82 'registrationFormPassphraseLabel':"パスフレーズ", 79 'registrationFormPassphraseLabel':"パスフレーズ",
83 'registrationFormRetypePassphraseLabel':"パスフレーズをもう一度", 80 'registrationFormRetypePassphraseLabel':"パスフレーズをもう一度",
84 'registrationFormSafetyCheckLabel':"パスフレーズを忘れたら復活できないことを了承します。", 81 'registrationFormSafetyCheckLabel':"パスフレーズを忘れたら復活できないことを了承します。",
85 'registrationFormTermsOfServiceCheckLabel':"利用許諾に同意します 。", 82 'registrationFormTermsOfServiceCheckLabel':"利用許諾に同意します 。",
86 'registrationFormDoYouAlreadyHaveAnAccountLabel':"アカウントを持っている?", 83 'registrationFormDoYouAlreadyHaveAnAccountLabel':"アカウントを持っている?",
87 'registrationFormSimplyLoginLabel':"すぐにログイン", 84 'registrationFormSimplyLoginLabel':"すぐにログイン",
88 'registrationFormButtonLabel':"登録", 85 'registrationFormButtonLabel':"登録",
89 'registrationFormWarningMessageNotMatchingPassphrases':"パスフレーズの入力に誤りがあります。 再入力してください。", 86 'registrationFormWarningMessageNotMatchingPassphrases':"パスフレーズの入力に誤りがあります。 再入力してください。",
90 'registrationFormWarningMessageSafetyCheckNotSelected':"説明を読んで下のボックスを全てチェックしてください。", 87 'registrationFormWarningMessageSafetyCheckNotSelected':"説明を読んで下のボックスを全てチェックしてください。",
91 'registrationFormWarningMessageTermsOfServiceCheckNotSelected':"利用許諾に同意してください。", 88 'registrationFormWarningMessageTermsOfServiceCheckNotSelected':"利用許諾に同意してください。",
92 'registrationMessagePanelInitialTitle':"アカウント作成中 ...", 89 'registrationMessagePanelInitialTitle':"アカウント作成中 ...",
93 'registrationMessagePanelInitialText':"---", 90 'registrationMessagePanelInitialText':"---",
94 'registrationMessagePanelInitialButtonLabel':"キャンセル", 91 'registrationMessagePanelInitialButtonLabel':"キャンセル",
95 'registrationMessagePanelRegistrationDoneTitle':"登録", 92 'registrationMessagePanelRegistrationDoneTitle':"登録",
96 'registrationMessagePanelRegistrationDoneText':"完了", 93 'registrationMessagePanelRegistrationDoneText':"完了",
97 'registrationMessagePanelFailureTitle':"登録失敗", 94 'registrationMessagePanelFailureTitle':"登録失敗",
98 'registrationMessagePanelFailureButtonLabel':"閉じる", 95 'registrationMessagePanelFailureButtonLabel':"閉じる",
99 'connectionRegistrationSendingRequestMessageText':"認証確認中", 96 'connectionRegistrationSendingRequestMessageText':"認証確認中",
100 'connectionRegistrationSendingCredentialsMessageText':"認証送信中", 97 'connectionRegistrationSendingCredentialsMessageText':"認証送信中",
101 'registrationSplashPanelTitle':"セキュリティアドバイス", 98 'registrationSplashPanelTitle':"セキュリティアドバイス",
102 'registrationSplashPanelDescription':"<p>Clipperz の認証情報です。 大切に保管してください。 ユーザー名とパスフレーズは二度と表示されません。</p> ", 99 'registrationSplashPanelDescription':"<p>Clipperz の認証情報です。 大切に保管してください。 ユーザー名とパスフレーズは二度と表示されません。</p> ",
103 'registrationSplashPanelUsernameLabel':"ユーザー名", 100 'registrationSplashPanelUsernameLabel':"ユーザー名",
104 'registrationSplashPanelPassphraseLabel':"パスフレーズ", 101 'registrationSplashPanelPassphraseLabel':"パスフレーズ",
105 'registrationSplashPanelShowPassphraseButtonLabel':"パスフレーズを表示", 102 'registrationSplashPanelShowPassphraseButtonLabel':"パスフレーズを表示",
106 'donateHeaderLinkLabel':"寄付", 103 'donateHeaderLinkLabel':"寄付",
107 'creditsHeaderLinkLabel':"クレジット", 104 'creditsHeaderLinkLabel':"クレジット",
108 'feedbackHeaderLinkLabel':"フィードバック", 105 'feedbackHeaderLinkLabel':"フィードバック",
109 'helpHeaderLinkLabel':"ヘルプ", 106 'helpHeaderLinkLabel':"ヘルプ",
110 'forumHeaderLinkLabel':"フォーラム", 107 'forumHeaderLinkLabel':"フォーラム",
111 'recordMenuLabel':"カード", 108 'recordMenuLabel':"カード",
112 'accountMenuLabel':"アカウント", 109 'accountMenuLabel':"アカウント",
113 'dataMenuLabel':"データ", 110 'dataMenuLabel':"データ",
114 'contactsMenuLabel':"コンタクト", 111 'contactsMenuLabel':"コンタクト",
115 'toolsMenuLabel':"ツール", 112 'toolsMenuLabel':"ツール",
116 'logoutMenuLabel':"ログアウト", 113 'logoutMenuLabel':"ログアウト",
117 'lockMenuLabel':"ロック", 114 'lockMenuLabel':"ロック",
118 'lockTitle':"アカウントはロックされました", 115 'lockTitle':"アカウントはロックされました",
119 'lockDescription':"<p>ロックを解除するにはパスフレーズを入力してください。</p> ", 116 'lockDescription':"<p>ロックを解除するにはパスフレーズを入力してください。</p> ",
120 'unlockButtonLabel':"解除", 117 'unlockButtonLabel':"解除",
121 'changePasswordTabLabel':"パスフレーズの変更", 118 'changePasswordTabLabel':"パスフレーズの変更",
122 'changePasswordTabTitle':"パスフレーズの変更", 119 'changePasswordTabTitle':"パスフレーズの変更",
123 'changePasswordFormUsernameLabel':"ユーザー名", 120 'changePasswordFormUsernameLabel':"ユーザー名",
124 'changePasswordFormOldPassphraseLabel':"今のパスフレーズ", 121 'changePasswordFormOldPassphraseLabel':"今のパスフレーズ",
125 'changePasswordFormNewPassphraseLabel':"新しいパスフレーズ", 122 'changePasswordFormNewPassphraseLabel':"新しいパスフレーズ",
126 'changePasswordFormRetypePassphraseLabel':"パスフレーズをもう一度", 123 'changePasswordFormRetypePassphraseLabel':"パスフレーズをもう一度",
127 'changePasswordFormSafetyCheckboxLabel':"パスフレーズを忘れたら復活できないことを了承します。", 124 'changePasswordFormSafetyCheckboxLabel':"パスフレーズを忘れたら復活できないことを了承します。",
128 'changePasswordFormSubmitLabel':"変更", 125 'changePasswordFormSubmitLabel':"変更",
129 'changePasswordFormWrongUsernameWarning':"ユーザー名が違います", 126 'changePasswordFormWrongUsernameWarning':"ユーザー名が違います",
130 'changePasswordFormWrongPassphraseWarning':"パスフレーズが違います", 127 'changePasswordFormWrongPassphraseWarning':"パスフレーズが違います",
131 'changePasswordFormWrongRetypePassphraseWarning':"パスフレーズの入力に誤りがあります。 再入力してください。", 128 'changePasswordFormWrongRetypePassphraseWarning':"パスフレーズの入力に誤りがあります。 再入力してください。",
132 'changePasswordFormSafetyCheckWarning':"説明を読んでボックスをチェックしてください。", 129 'changePasswordFormSafetyCheckWarning':"説明を読んでボックスをチェックしてください。",
133 'changePasswordFormProgressDialogTitle':"認証情報を変更中", 130 'changePasswordFormProgressDialogTitle':"認証情報を変更中",
134 'changePasswordFormProgressDialogEmptyText':"---", 131 'changePasswordFormProgressDialogEmptyText':"---",
135 'changePasswordFormProgressDialogConnectedMessageTitle':"接続完了", 132 'changePasswordFormProgressDialogConnectedMessageTitle':"接続完了",
136 'changePasswordFormProgressDialogConnectedMessageText':"完了", 133 'changePasswordFormProgressDialogConnectedMessageText':"完了",
137 'changePasswordFormProgressDialogErrorMessageTitle':"エラー", 134 'changePasswordFormProgressDialogErrorMessageTitle':"エラー",
138 'changePasswordFormProgressDialogErrorMessageText':"変更に失敗しました", 135 'changePasswordFormProgressDialogErrorMessageText':"変更に失敗しました",
139 'changeCredentialsPanelEncryptingDataMessageTitle':"パスフレーズを変更中", 136 'changeCredentialsPanelEncryptingDataMessageTitle':"パスフレーズを変更中",
140 'changeCredentialsPanelEncryptingDataMessageText':"カードヘッダ暗号化", 137 'changeCredentialsPanelEncryptingDataMessageText':"カードヘッダ暗号化",
141 'changeCredentialsPanelCreatingNewCredentialsMessageTitle':"パスフレーズを変更中", 138 'changeCredentialsPanelCreatingNewCredentialsMessageTitle':"パスフレーズを変更中",
142 'changeCredentialsPanelCreatingNewCredentialsMessageText':"認証情報を送信中", 139 'changeCredentialsPanelCreatingNewCredentialsMessageText':"認証情報を送信中",
143 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageTitle':"パスフレーズを変更中", 140 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageTitle':"パスフレーズを変更中",
144 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageText':"暗号化データを送信中", 141 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageText':"暗号化データを送信中",
145 'changeCredentialsPanelDoneMessageTitle':"パスフレーズを変更中", 142 'changeCredentialsPanelDoneMessageTitle':"パスフレーズを変更中",
146 'changeCredentialsPanelDoneMessageText':"完了", 143 'changeCredentialsPanelDoneMessageText':"完了",
147 'manageOTPTabLabel':"ワンタイムパスフレーズ管理", 144 'manageOTPTabLabel':"ワンタイムパスフレーズ管理",
148 'manageOTPTabTitle':"ワンタイムパスフレーズ管理", 145 'manageOTPTabTitle':"ワンタイムパスフレーズ管理",
149 'manageOTPTabDescription':"<p>ワンタイムパスフレーズは通常のパスフレームと同様に機能しますが、一回限りの使い捨てパスフレーズです。</p> <p>同じパスフレーズで再度ログインすることはできません。</p> <p>不正アクセス防止のためにログインに成功したら直ちにワンタイムパスフレーズは削除されます</p> <p>ワンタイムパスフレーズはキーロガーやスパイウェアからパスフレーズを守るすばらしい機能です</p> <p><b>インターネットカフェや図書館などから Clipperz にアクセする場合にはワンタイムパスフレーズを利用することを強くお薦めします。</b> </p> ", 146 'manageOTPTabDescription':"<p>ワンタイムパスフレーズは通常のパスフレームと同様に機能しますが、一回限りの使い捨てパスフレーズです。</p> <p>同じパスフレーズで再度ログインすることはできません。</p> <p>不正アクセス防止のためにログインに成功したら直ちにワンタイムパスフレーズは削除されます</p> <p>ワンタイムパスフレーズはキーロガーやスパイウェアからパスフレーズを守るすばらしい機能です</p> <p><b>インターネットカフェや図書館などから Clipperz にアクセする場合にはワンタイムパスフレーズを利用することを強くお薦めします。</b> </p> ",
150 'oneTimePasswordReadOnlyMessage':"<h6>ごめんなさい</h6> <p>ローカルコピー使用中はワンタイムパスフレーズを利用できません。</p> ", 147 'oneTimePasswordReadOnlyMessage':"<h6>ごめんなさい</h6> <p>ローカルコピー使用中はワンタイムパスフレーズを利用できません。</p> ",
151 'oneTimePasswordLoadingMessage':"<h6>ロード中</h6> <p>お待ちください ...</p> ", 148 'oneTimePasswordLoadingMessage':"<h6>ロード中</h6> <p>お待ちください ...</p> ",
152 'oneTimePasswordNoPasswordAvailable':"<h6>有効なワンタイムパスフレーズがありません</h6> <p>「新規」ボタンをクリックしてワンタイムパスフレーズを作成してください。</p> ", 149 'oneTimePasswordNoPasswordAvailable':"<h6>有効なワンタイムパスフレーズがありません</h6> <p>「新規」ボタンをクリックしてワンタイムパスフレーズを作成してください。</p> ",
diff --git a/frontend/beta/js/Clipperz/PM/Strings/Strings_pt-BR.js b/frontend/beta/js/Clipperz/PM/Strings/Strings_pt-BR.js
index db6c2f6..8fde63f 100644
--- a/frontend/beta/js/Clipperz/PM/Strings/Strings_pt-BR.js
+++ b/frontend/beta/js/Clipperz/PM/Strings/Strings_pt-BR.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29Clipperz.PM.Strings.Languages['pt-BR'.toLowerCase()] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], { 26Clipperz.PM.Strings.Languages['pt-BR'.toLowerCase()] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], {
30 'clipperzServiceDescriptionConfig':"<h2>Guarde com você!</h2> <ul> <li> <h3>Clipperz é:</h3> <ul> <li> <p>um simples e seguro gerenciador de senhas</p> </li> <li> <p>uma efetiva solução com uma única assinatura</p> </li> <li> <p>um cofre digital para suas informações confidenciais</p> </li> </ul> </li> <li> <h3>Com Clipperz você pode:</h3> <ul> <li> <p>guardar e gerenciar suas senhas e credenciais online</p> </li> <li> <p>logar em seus serviços web sem precisar entrar com nenhum nome de usuário ou senha</p> </li> <li> <p>proteger todos os seus dados sensíveis: códigos de alarme, PINs, números de cartão de crédito, &hellip;</p> </li> <li> <p>compartilhar segredos com membros da família e associados (em breve)</p> </li> </ul> </li> <li> <h3>Clipperz proporciona:</h3> <ul> <li> <p>anonimato completo e gratuito</p> </li> <li> <p>acesso a qualquer hora em qualquer computador</p> </li> <li> <p>sem software ou download e nada que instalar</p> </li> <li> <p>evite guardar seus segredos em seu PC ou papel</p> </li> </ul> </li> <li> <h3>Segurança Clipperz:</h3> <ul> <li> <p>seus segredos são codificados localmente por seu navegador antes de ser enviado para Clipperz</p> </li> <li> <p>a chave de codificação é uma senha que só você conhece</p> </li> <li> <p>Clipperz armazena apenas seus dados confidenciais codificados, nunca acessando os dados originais</p> </li> <li> <p>Clipperz é construído a partir de esquemas de codificação padrão, ou seja, nada é exclusivo ou caseiro</p> </li> <li> <p>você pode revisar o código a qualquer momento, mas você não precisa conhecer nada sobre criptograia para ser um usuário feliz!</p> </li> </ul> </li> <li> <a href=\"http://www.clipperz.com\" target=\"_blank\">Saiba mais</a> </li> </ul> ", 27 'clipperzServiceDescriptionConfig':"<h2>Guarde com você!</h2> <ul> <li> <h3>Clipperz é:</h3> <ul> <li> <p>um simples e seguro gerenciador de senhas</p> </li> <li> <p>uma efetiva solução com uma única assinatura</p> </li> <li> <p>um cofre digital para suas informações confidenciais</p> </li> </ul> </li> <li> <h3>Com Clipperz você pode:</h3> <ul> <li> <p>guardar e gerenciar suas senhas e credenciais online</p> </li> <li> <p>logar em seus serviços web sem precisar entrar com nenhum nome de usuário ou senha</p> </li> <li> <p>proteger todos os seus dados sensíveis: códigos de alarme, PINs, números de cartão de crédito, &hellip;</p> </li> <li> <p>compartilhar segredos com membros da família e associados (em breve)</p> </li> </ul> </li> <li> <h3>Clipperz proporciona:</h3> <ul> <li> <p>anonimato completo e gratuito</p> </li> <li> <p>acesso a qualquer hora em qualquer computador</p> </li> <li> <p>sem software ou download e nada que instalar</p> </li> <li> <p>evite guardar seus segredos em seu PC ou papel</p> </li> </ul> </li> <li> <h3>Segurança Clipperz:</h3> <ul> <li> <p>seus segredos são codificados localmente por seu navegador antes de ser enviado para Clipperz</p> </li> <li> <p>a chave de codificação é uma senha que só você conhece</p> </li> <li> <p>Clipperz armazena apenas seus dados confidenciais codificados, nunca acessando os dados originais</p> </li> <li> <p>Clipperz é construído a partir de esquemas de codificação padrão, ou seja, nada é exclusivo ou caseiro</p> </li> <li> <p>você pode revisar o código a qualquer momento, mas você não precisa conhecer nada sobre criptograia para ser um usuário feliz!</p> </li> </ul> </li> <li> <a href=\"http://www.clipperz.com\" target=\"_blank\">Saiba mais</a> </li> </ul> ",
31 'loginFormTitle':"entre sua conta Clipperz", 28 'loginFormTitle':"entre sua conta Clipperz",
32 'loginFormUsernameLabel':"nome do usuário", 29 'loginFormUsernameLabel':"nome do usuário",
33 'loginFormPassphraseLabel':"frase chave", 30 'loginFormPassphraseLabel':"frase chave",
34 'loginFormDontHaveAnAccountLabel':"não tem uma conta?", 31 'loginFormDontHaveAnAccountLabel':"não tem uma conta?",
35 'loginFormCreateOneLabel':"criar uma", 32 'loginFormCreateOneLabel':"criar uma",
36 'loginFormForgotYourCredentialsLabel':"esqueceu suas credenciais?", 33 'loginFormForgotYourCredentialsLabel':"esqueceu suas credenciais?",
37 'loginFormAarghThatsBadLabel':"xiiiii! isso é não é bom!", 34 'loginFormAarghThatsBadLabel':"xiiiii! isso é não é bom!",
38 'loginFormAfraidOfMaliciousScriptsLabel':"medo de scripts maliciosos?", 35 'loginFormAfraidOfMaliciousScriptsLabel':"medo de scripts maliciosos?",
39 'loginFormVerifyTheCodeLabel':"verifique o código", 36 'loginFormVerifyTheCodeLabel':"verifique o código",
40 'loginFormButtonLabel':"Entrar", 37 'loginFormButtonLabel':"Entrar",
41 'loginFormOneTimePasswordCheckboxLabel':"use uma frase chave descartável", 38 'loginFormOneTimePasswordCheckboxLabel':"use uma frase chave descartável",
42 'loginPanelSwithLanguageDescription':"<h5>Mudar para sua linguagem preferida</h5> ", 39 'loginPanelSwithLanguageDescription':"<h5>Mudar para sua linguagem preferida</h5> ",
43 'browserCompatibilityDescription':"<p>Tenha uma experiência melhor e mais segura com Clipperz, utilizando o Firefox. No entanto, Clipperz funciona bem também em Opera e MS Internet Explorer!</p> ", 40 'browserCompatibilityDescription':"<p>Tenha uma experiência melhor e mais segura com Clipperz, utilizando o Firefox. No entanto, Clipperz funciona bem também em Opera e MS Internet Explorer!</p> ",
44 'OTPloginMessagePanelInitialTitle':"Acessando usando a frase chave descartável", 41 'OTPloginMessagePanelInitialTitle':"Acessando usando a frase chave descartável",
45 'OTPloginMessagePanelInitialText':"Enviando credenciais descartáveis ...", 42 'OTPloginMessagePanelInitialText':"Enviando credenciais descartáveis ...",
46 'OTPloginMessagePanelLoadingTitle':"Acessando usando a frase chave descartável", 43 'OTPloginMessagePanelLoadingTitle':"Acessando usando a frase chave descartável",
47 'OTPloginMessagePanelLoadingText':"Buscando informação de autenticação codificada no servidor ...", 44 'OTPloginMessagePanelLoadingText':"Buscando informação de autenticação codificada no servidor ...",
48 'OTPloginMessagePanelProcessingTitle':"Acessando usando a frase chave descartável", 45 'OTPloginMessagePanelProcessingTitle':"Acessando usando a frase chave descartável",
49 'OTPloginMessagePanelProcessingText':"Decodificação local da informação de autenticação ...", 46 'OTPloginMessagePanelProcessingText':"Decodificação local da informação de autenticação ...",
50 'loginMessagePanelInitialTitle':"Entrando ...", 47 'loginMessagePanelInitialTitle':"Entrando ...",
51 'loginMessagePanelInitialButtonLabel':"Cancelar", 48 'loginMessagePanelInitialButtonLabel':"Cancelar",
52 'loginMessagePanelConnectedTitle':"Conectado", 49 'loginMessagePanelConnectedTitle':"Conectado",
53 'loginMessagePanelConnectedText':"Concluído", 50 'loginMessagePanelConnectedText':"Concluído",
54 'loginMessagePanelFailureTitle':"Erro", 51 'loginMessagePanelFailureTitle':"Erro",
55 'loginMessagePanelFailureText':"Ocorreu uma falha", 52 'loginMessagePanelFailureText':"Ocorreu uma falha",
56 'loginMessagePanelFailureButtonLabel':"Fechar", 53 'loginMessagePanelFailureButtonLabel':"Fechar",
57 'connectionLoginSendingCredentialsMessageTitle':"Verificando credenciais", 54 'connectionLoginSendingCredentialsMessageTitle':"Verificando credenciais",
58 'connectionLoginSendingCredentialsMessageText':"Enviando credenciais", 55 'connectionLoginSendingCredentialsMessageText':"Enviando credenciais",
59 'connectionLoginCredentialsVerificationMessageTitle':"Verificando credenciais", 56 'connectionLoginCredentialsVerificationMessageTitle':"Verificando credenciais",
60 'connectionLoginCredentialsVerificationMessageText':"Realizando autenticação SRP", 57 'connectionLoginCredentialsVerificationMessageText':"Realizando autenticação SRP",
61 'connectionLoginDoneMessageTitle':"Verificando credenciais", 58 'connectionLoginDoneMessageTitle':"Verificando credenciais",
62 'connectionLoginDoneMessageText':"Conectado", 59 'connectionLoginDoneMessageText':"Conectado",
63 'userLoginPanelUpgradingUserCredentialsMessageTitle':"Verificando credenciais", 60 'userLoginPanelUpgradingUserCredentialsMessageTitle':"Verificando credenciais",
64 'userLoginPanelUpgradingUserCredentialsMessageText':"Upgrade de suas credenciais para um novo esquema de autenticação", 61 'userLoginPanelUpgradingUserCredentialsMessageText':"Upgrade de suas credenciais para um novo esquema de autenticação",
65 'userLoginPanelConnectedMessageTitle':"Usuário autenticado", 62 'userLoginPanelConnectedMessageTitle':"Usuário autenticado",
66 'userLoginPanelConnectedMessageText':"Logado com sucesso em", 63 'userLoginPanelConnectedMessageText':"Logado com sucesso em",
67 'userLoginPanelTryingAnOlderConnectionSchemaMessageTitle':"Verificando credenciais", 64 'userLoginPanelTryingAnOlderConnectionSchemaMessageTitle':"Verificando credenciais",
68 'userLoginPanelTryingAnOlderConnectionSchemaMessageText':"Tentando esquema antigo de autenticação", 65 'userLoginPanelTryingAnOlderConnectionSchemaMessageText':"Tentando esquema antigo de autenticação",
69 'userLoginPanelLoadingUserDataMessageTitle':"Usuário autenticado", 66 'userLoginPanelLoadingUserDataMessageTitle':"Usuário autenticado",
70 'userLoginPanelLoadingUserDataMessageText':"Baixando cabeçalhos de cartão codificados de Clipperz", 67 'userLoginPanelLoadingUserDataMessageText':"Baixando cabeçalhos de cartão codificados de Clipperz",
71 'userLoginPanelDecryptingUserDataMessageTitle':"Usuário autenticado", 68 'userLoginPanelDecryptingUserDataMessageTitle':"Usuário autenticado",
72 'userLoginPanelDecryptingUserDataMessageText':"Descrição local de cabeçalhos dos cartões", 69 'userLoginPanelDecryptingUserDataMessageText':"Descrição local de cabeçalhos dos cartões",
73 'userLoginPanelDecryptingUserStatisticsMessageTitle':"Usuário autenticado", 70 'userLoginPanelDecryptingUserStatisticsMessageTitle':"Usuário autenticado",
74 'userLoginPanelDecryptingUserStatisticsMessageText':"Descrição local de estatísticas de uso", 71 'userLoginPanelDecryptingUserStatisticsMessageText':"Descrição local de estatísticas de uso",
75 'splashAlertTitle':"Bem-vindo ao Clipperz!", 72 'splashAlertTitle':"Bem-vindo ao Clipperz!",
76 'splashAlertText':"<p>Alguns avisos de segurança</p> <ul> <li> <p>Guardar suas informações no Clipperz é tão seguro quanto a frase chave que você escolher para protege-los. Ninguém pode acessá-los sem essa frase chave.</p> </li> <li> <p>Se você vai utlizar Clipperz para armazenar suas informações confidenciais e críticas, escolha uma frase chave difícil de ser descoberta. Quanto mais longa, melhor!</p> </li> <li> <p>Clipperz não será capaz de recuperar frase chave perdidas!</p> </li> </ul> <p>Para mais informações, por favor vá até <a href=\"http://www.clipperz.com\" target=\"_blank\">Clipperz</a> website.</p> ", 73 'splashAlertText':"<p>Alguns avisos de segurança</p> <ul> <li> <p>Guardar suas informações no Clipperz é tão seguro quanto a frase chave que você escolher para protege-los. Ninguém pode acessá-los sem essa frase chave.</p> </li> <li> <p>Se você vai utlizar Clipperz para armazenar suas informações confidenciais e críticas, escolha uma frase chave difícil de ser descoberta. Quanto mais longa, melhor!</p> </li> <li> <p>Clipperz não será capaz de recuperar frase chave perdidas!</p> </li> </ul> <p>Para mais informações, por favor vá até <a href=\"http://www.clipperz.com\" target=\"_blank\">Clipperz</a> website.</p> ",
77 'splashAlertCloseButtonLabel':"Ok", 74 'splashAlertCloseButtonLabel':"Ok",
78 'registrationFormTitle':"crie sua conta", 75 'registrationFormTitle':"crie sua conta",
79 'registrationFormUsernameLabel':"nome do usuário", 76 'registrationFormUsernameLabel':"nome do usuário",
80 'registrationFormPassphraseLabel':"frase chave", 77 'registrationFormPassphraseLabel':"frase chave",
81 'registrationFormRetypePassphraseLabel':"entre novamente sua frase chave", 78 'registrationFormRetypePassphraseLabel':"entre novamente sua frase chave",
82 'registrationFormSafetyCheckLabel':"Eu compreendo que Clipperz não será capaz de recuperar senhas perdidas.", 79 'registrationFormSafetyCheckLabel':"Eu compreendo que Clipperz não será capaz de recuperar senhas perdidas.",
83 'registrationFormTermsOfServiceCheckLabel':"Eu li e concordo com os <a href='http://www.clipperz.com/terms_of_service' target='_blank'>Termos do Serviço</a>.", 80 'registrationFormTermsOfServiceCheckLabel':"Eu li e concordo com os <a href='http://www.clipperz.com/terms_of_service' target='_blank'>Termos do Serviço</a>.",
84 'registrationFormDoYouAlreadyHaveAnAccountLabel':"você já tem uma conta?", 81 'registrationFormDoYouAlreadyHaveAnAccountLabel':"você já tem uma conta?",
85 'registrationFormSimplyLoginLabel':"login simples", 82 'registrationFormSimplyLoginLabel':"login simples",
86 'registrationFormButtonLabel':"Registrar", 83 'registrationFormButtonLabel':"Registrar",
87 'registrationFormWarningMessageNotMatchingPassphrases':"Suas frases chaves não conferem, por favor tente novamente.", 84 'registrationFormWarningMessageNotMatchingPassphrases':"Suas frases chaves não conferem, por favor tente novamente.",
88 'registrationFormWarningMessageSafetyCheckNotSelected':"Por favor leia e confira todos os campos abaixo.", 85 'registrationFormWarningMessageSafetyCheckNotSelected':"Por favor leia e confira todos os campos abaixo.",
89 'registrationFormWarningMessageTermsOfServiceCheckNotSelected':"Você precisa concordar com os Termos do Serviço.", 86 'registrationFormWarningMessageTermsOfServiceCheckNotSelected':"Você precisa concordar com os Termos do Serviço.",
90 'registrationMessagePanelInitialTitle':"Criando conta ...", 87 'registrationMessagePanelInitialTitle':"Criando conta ...",
91 'registrationMessagePanelInitialText':"---", 88 'registrationMessagePanelInitialText':"---",
92 'registrationMessagePanelInitialButtonLabel':"Cancelar", 89 'registrationMessagePanelInitialButtonLabel':"Cancelar",
93 'registrationMessagePanelRegistrationDoneTitle':"Registro", 90 'registrationMessagePanelRegistrationDoneTitle':"Registro",
94 'registrationMessagePanelRegistrationDoneText':"Concluído", 91 'registrationMessagePanelRegistrationDoneText':"Concluído",
95 'registrationMessagePanelFailureTitle':"Registrou falhou", 92 'registrationMessagePanelFailureTitle':"Registrou falhou",
96 'registrationMessagePanelFailureButtonLabel':"Fechar", 93 'registrationMessagePanelFailureButtonLabel':"Fechar",
97 'connectionRegistrationSendingRequestMessageText':"Verificando credenciais", 94 'connectionRegistrationSendingRequestMessageText':"Verificando credenciais",
98 'connectionRegistrationSendingCredentialsMessageText':"Enviando credenciais", 95 'connectionRegistrationSendingCredentialsMessageText':"Enviando credenciais",
99 'registrationSplashPanelTitle':"Informe de segurança", 96 'registrationSplashPanelTitle':"Informe de segurança",
100 'registrationSplashPanelDescription':"<p>Essas são suas credenciais Clipperz, cuide delas com cuidado. Clipperz nunca vai mostrar seu nome de usuário e frase chave uma outra vez!</p> ", 97 'registrationSplashPanelDescription':"<p>Essas são suas credenciais Clipperz, cuide delas com cuidado. Clipperz nunca vai mostrar seu nome de usuário e frase chave uma outra vez!</p> ",
101 'registrationSplashPanelUsernameLabel':"nome de usuário", 98 'registrationSplashPanelUsernameLabel':"nome de usuário",
102 'registrationSplashPanelPassphraseLabel':"frase chave", 99 'registrationSplashPanelPassphraseLabel':"frase chave",
103 'registrationSplashPanelShowPassphraseButtonLabel':"mostrar frase chave", 100 'registrationSplashPanelShowPassphraseButtonLabel':"mostrar frase chave",
104 'donateHeaderLinkLabel':"doar", 101 'donateHeaderLinkLabel':"doar",
105 'creditsHeaderLinkLabel':"créditos", 102 'creditsHeaderLinkLabel':"créditos",
106 'feedbackHeaderLinkLabel':"feedback", 103 'feedbackHeaderLinkLabel':"feedback",
107 'helpHeaderLinkLabel':"ajuda", 104 'helpHeaderLinkLabel':"ajuda",
108 'forumHeaderLinkLabel':"fórum", 105 'forumHeaderLinkLabel':"fórum",
109 'recordMenuLabel':"cartões", 106 'recordMenuLabel':"cartões",
110 'accountMenuLabel':"conta", 107 'accountMenuLabel':"conta",
111 'dataMenuLabel':"dados", 108 'dataMenuLabel':"dados",
112 'contactsMenuLabel':"contatos", 109 'contactsMenuLabel':"contatos",
113 'toolsMenuLabel':"ferramentas", 110 'toolsMenuLabel':"ferramentas",
114 'logoutMenuLabel':"sair", 111 'logoutMenuLabel':"sair",
115 'lockMenuLabel':"bloquear", 112 'lockMenuLabel':"bloquear",
116 'lockTitle':"A conta está bloqueada", 113 'lockTitle':"A conta está bloqueada",
117 'lockDescription':"<p>Para desbloquear sua conta, por favor, entre com a frase chave</p> ", 114 'lockDescription':"<p>Para desbloquear sua conta, por favor, entre com a frase chave</p> ",
118 'unlockButtonLabel':"desbloquear", 115 'unlockButtonLabel':"desbloquear",
119 'changePasswordTabLabel':"Alterar sua frase chave", 116 'changePasswordTabLabel':"Alterar sua frase chave",
120 'changePasswordTabTitle':"Alterar sua frase chave", 117 'changePasswordTabTitle':"Alterar sua frase chave",
121 'changePasswordFormUsernameLabel':"nome de usuário", 118 'changePasswordFormUsernameLabel':"nome de usuário",
122 'changePasswordFormOldPassphraseLabel':"frase chave antiga", 119 'changePasswordFormOldPassphraseLabel':"frase chave antiga",
123 'changePasswordFormNewPassphraseLabel':"frase chave nova", 120 'changePasswordFormNewPassphraseLabel':"frase chave nova",
124 'changePasswordFormRetypePassphraseLabel':"re-inserir frase chave nova", 121 'changePasswordFormRetypePassphraseLabel':"re-inserir frase chave nova",
125 'changePasswordFormSafetyCheckboxLabel':"Eu compreendo que Clipperz não poderá recuperar a frase chave perdida.", 122 'changePasswordFormSafetyCheckboxLabel':"Eu compreendo que Clipperz não poderá recuperar a frase chave perdida.",
126 'changePasswordFormSubmitLabel':"Alterar frase chave", 123 'changePasswordFormSubmitLabel':"Alterar frase chave",
127 'changePasswordFormWrongUsernameWarning':"Nome de usuário errado", 124 'changePasswordFormWrongUsernameWarning':"Nome de usuário errado",
128 'changePasswordFormWrongPassphraseWarning':"Frase chave errada", 125 'changePasswordFormWrongPassphraseWarning':"Frase chave errada",
129 'changePasswordFormWrongRetypePassphraseWarning':"Suas frases chaves não conferem, por favor tente novamente.", 126 'changePasswordFormWrongRetypePassphraseWarning':"Suas frases chaves não conferem, por favor tente novamente.",
130 'changePasswordFormSafetyCheckWarning':"Por favor leia e confira todos os campos abaixo.", 127 'changePasswordFormSafetyCheckWarning':"Por favor leia e confira todos os campos abaixo.",
131 'changePasswordFormProgressDialogTitle':"Alterando credenciais do usuário", 128 'changePasswordFormProgressDialogTitle':"Alterando credenciais do usuário",
132 'changePasswordFormProgressDialogConnectedMessageTitle':"Conectado", 129 'changePasswordFormProgressDialogConnectedMessageTitle':"Conectado",
133 'changePasswordFormProgressDialogConnectedMessageText':"Concluído", 130 'changePasswordFormProgressDialogConnectedMessageText':"Concluído",
134 'changePasswordFormProgressDialogErrorMessageTitle':"Erro", 131 'changePasswordFormProgressDialogErrorMessageTitle':"Erro",
135 'changePasswordFormProgressDialogErrorMessageText':"Mudança de credenciais falhou!", 132 'changePasswordFormProgressDialogErrorMessageText':"Mudança de credenciais falhou!",
136 'changeCredentialsPanelEncryptingDataMessageTitle':"Alterando sua frase chave", 133 'changeCredentialsPanelEncryptingDataMessageTitle':"Alterando sua frase chave",
137 'changeCredentialsPanelEncryptingDataMessageText':"Codificação local de cabeçalho de cartões", 134 'changeCredentialsPanelEncryptingDataMessageText':"Codificação local de cabeçalho de cartões",
138 'changeCredentialsPanelCreatingNewCredentialsMessageTitle':"Alterando sua frase chave", 135 'changeCredentialsPanelCreatingNewCredentialsMessageTitle':"Alterando sua frase chave",
139 'changeCredentialsPanelCreatingNewCredentialsMessageText':"Atualizando suas credenciais", 136 'changeCredentialsPanelCreatingNewCredentialsMessageText':"Atualizando suas credenciais",
140 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageTitle':"Alterando sua frase chave", 137 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageTitle':"Alterando sua frase chave",
141 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageText':"Enviando suas credenciais codificadas para Clipperz", 138 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageText':"Enviando suas credenciais codificadas para Clipperz",
142 'changeCredentialsPanelDoneMessageTitle':"Alterando sua frase chave", 139 'changeCredentialsPanelDoneMessageTitle':"Alterando sua frase chave",
143 'changeCredentialsPanelDoneMessageText':"Concluído", 140 'changeCredentialsPanelDoneMessageText':"Concluído",
144 'manageOTPTabLabel':"Gerenciar suas frases chaves descartáveis", 141 'manageOTPTabLabel':"Gerenciar suas frases chaves descartáveis",
145 'manageOTPTabTitle':"Gerenciar suas frases chaves descartáveis", 142 'manageOTPTabTitle':"Gerenciar suas frases chaves descartáveis",
146 'manageOTPTabDescription':"<p>Uma frase chave descartável funciona como uma frase chave normal, mas só pode ser utilizada uma única vez.</p> <p>Se a mesma frase chave for utilizada novamente num próximo login, ela será rejeitada e o login não irá ocorrer.</p> <p>Imediatamente após um login com sucesso, sua frase chave descartável será apagada para evitar logins fraudulentos.</p> <p>Frases chaves descartáveis são uma excelente opção se você está preocupado com keyloggers ou spywares que podem estar coletando seus dados em determinadas máquinas.</p> <p> <b>É recomendável que você utilize frases chaves descartáveis sempre que utilizar terminais públicos como Internet cafés e bibliotecas.</b> </p> ", 143 'manageOTPTabDescription':"<p>Uma frase chave descartável funciona como uma frase chave normal, mas só pode ser utilizada uma única vez.</p> <p>Se a mesma frase chave for utilizada novamente num próximo login, ela será rejeitada e o login não irá ocorrer.</p> <p>Imediatamente após um login com sucesso, sua frase chave descartável será apagada para evitar logins fraudulentos.</p> <p>Frases chaves descartáveis são uma excelente opção se você está preocupado com keyloggers ou spywares que podem estar coletando seus dados em determinadas máquinas.</p> <p> <b>É recomendável que você utilize frases chaves descartáveis sempre que utilizar terminais públicos como Internet cafés e bibliotecas.</b> </p> ",
147 'oneTimePasswordReadOnlyMessage':"<h6>Desculpe!</h6> <p>Você não pode gerenciar sua frase chave descartável quando usando a versão offline do Clipperz.</p> ", 144 'oneTimePasswordReadOnlyMessage':"<h6>Desculpe!</h6> <p>Você não pode gerenciar sua frase chave descartável quando usando a versão offline do Clipperz.</p> ",
148 'oneTimePasswordLoadingMessage':"<h6>Carregando informação</h6> <p>Por favor, aguarde ...</p> ", 145 'oneTimePasswordLoadingMessage':"<h6>Carregando informação</h6> <p>Por favor, aguarde ...</p> ",
149 'oneTimePasswordNoPasswordAvailable':"<h6>Nenhuma frase chave descartável disponível</h6> <p>Clique o botão “Novo” acima para adicionar uma frase chave descartável em sua conta.</p> ", 146 'oneTimePasswordNoPasswordAvailable':"<h6>Nenhuma frase chave descartável disponível</h6> <p>Clique o botão “Novo” acima para adicionar uma frase chave descartável em sua conta.</p> ",
150 'createNewOTPButtonLabel':"Novo", 147 'createNewOTPButtonLabel':"Novo",
151 'deleteOTPButtonLabel':"Apagar", 148 'deleteOTPButtonLabel':"Apagar",
152 'printOTPButtonLabel':"Imprimir", 149 'printOTPButtonLabel':"Imprimir",
diff --git a/frontend/beta/js/Clipperz/PM/Strings/Strings_pt-PT.js b/frontend/beta/js/Clipperz/PM/Strings/Strings_pt-PT.js
index 5284683..7930852 100644
--- a/frontend/beta/js/Clipperz/PM/Strings/Strings_pt-PT.js
+++ b/frontend/beta/js/Clipperz/PM/Strings/Strings_pt-PT.js
@@ -1,42 +1,39 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29//============================================================================= 26//=============================================================================
30// 27//
31 // P O R T U G U Ê S ( pt_PT ) 28 // P O R T U G U Ê S ( pt_PT )
32// 29//
33//============================================================================= 30//=============================================================================
34 31
35Clipperz.PM.Strings.Languages['pt-pt'] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['pt-br'], { 32Clipperz.PM.Strings.Languages['pt-pt'] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['pt-br'], {
36 33
37 34
38 35
39 //------------------------------------------------------------------------- 36 //-------------------------------------------------------------------------
40 __syntaxFix__: "syntax fix" 37 __syntaxFix__: "syntax fix"
41}); 38});
42 39
diff --git a/frontend/beta/js/Clipperz/PM/Strings/Strings_ru-RU.js b/frontend/beta/js/Clipperz/PM/Strings/Strings_ru-RU.js
index 36975d3..547dcc8 100644
--- a/frontend/beta/js/Clipperz/PM/Strings/Strings_ru-RU.js
+++ b/frontend/beta/js/Clipperz/PM/Strings/Strings_ru-RU.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29Clipperz.PM.Strings.Languages['ru-RU'.toLowerCase()] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], { 26Clipperz.PM.Strings.Languages['ru-RU'.toLowerCase()] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], {
30 'clipperzServiceDescription':"<h2>Держи всегда при себе!</h2> <ul> <li> <h3>Clipperz - это:</h3> <ul> <li> <p>безопасный и простой менеджер паролей</p> </li> <li> <p>эффективное решение для единой регистрации</p> </li> <li> <p>цифровое хранилище ваших конфиденциальных данных</p> </li> </ul> </li> <li>\ 27 'clipperzServiceDescription':"<h2>Держи всегда при себе!</h2> <ul> <li> <h3>Clipperz - это:</h3> <ul> <li> <p>безопасный и простой менеджер паролей</p> </li> <li> <p>эффективное решение для единой регистрации</p> </li> <li> <p>цифровое хранилище ваших конфиденциальных данных</p> </li> </ul> </li> <li>\
31 <h3>C помощью Clipperz вы можете:</h3> <ul>\ 28 <h3>C помощью Clipperz вы можете:</h3> <ul>\
32 <li> <p>хранить и управлять вашими паролями</p> </li> <li> <p>входить в любые веб-сервисы без ввода логина и пароля</p> </li> <li> <p>защитить все важные данные: коды охранной сигнализации, PINы, номера кредитных карт, и пр.</p> </li> <li> <p>открыть доступ к паролям вашим членам семьи, друзьям, коллегам</p> </li> </ul> </li> <li>\ 29 <li> <p>хранить и управлять вашими паролями</p> </li> <li> <p>входить в любые веб-сервисы без ввода логина и пароля</p> </li> <li> <p>защитить все важные данные: коды охранной сигнализации, PINы, номера кредитных карт, и пр.</p> </li> <li> <p>открыть доступ к паролям вашим членам семьи, друзьям, коллегам</p> </li> </ul> </li> <li>\
33 <h3>Преимущества Clipperz:</h3> <ul>\ 30 <h3>Преимущества Clipperz:</h3> <ul>\
34 <li> <p>бесплатный и абсолютно анонимный</p> </li> <li> <p>доступен в любое время и с любого компьютера</p> </li> <li> <p>не нужно ничего устанавливать</p> </li> <li> <p>не надо хранить секреты на компьютере или бумаге</p> </li> </ul> </li> <li>\ 31 <li> <p>бесплатный и абсолютно анонимный</p> </li> <li> <p>доступен в любое время и с любого компьютера</p> </li> <li> <p>не нужно ничего устанавливать</p> </li> <li> <p>не надо хранить секреты на компьютере или бумаге</p> </li> </ul> </li> <li>\
35 <h3>Безопасность Clipperz:</h3> <ul>\ 32 <h3>Безопасность Clipperz:</h3> <ul>\
36 <li> <p>все данные перед отправкой в Clipperz шифруются в браузере</p> </li> <li> <p>пароль знаете только вы</p> </li> <li> <p>Clipperz управляет важными данными в зашифрованном виде и никогда не получит доступ к ним в открытом виде</p> </li> <li> <p>Clipperz основан на стандартных криптографических протоколах: без каких-либо самоделок</p> </li> <li> <p>вы можете просмотреть исходный код, но вам ничего не надо знать о криптографии, чтобы просто использовать его!</p> </li> </ul> </li> <li>\ 33 <li> <p>все данные перед отправкой в Clipperz шифруются в браузере</p> </li> <li> <p>пароль знаете только вы</p> </li> <li> <p>Clipperz управляет важными данными в зашифрованном виде и никогда не получит доступ к ним в открытом виде</p> </li> <li> <p>Clipperz основан на стандартных криптографических протоколах: без каких-либо самоделок</p> </li> <li> <p>вы можете просмотреть исходный код, но вам ничего не надо знать о криптографии, чтобы просто использовать его!</p> </li> </ul> </li> <li>\
37 <a href=\"http://www.clipperz.com\" target=\"_blank\">Подробнее</a> </li> </ul> ", 34 <a href=\"http://www.clipperz.com\" target=\"_blank\">Подробнее</a> </li> </ul> ",
38 'loginFormTitle':"войти в аккаунт Clipperz", 35 'loginFormTitle':"войти в аккаунт Clipperz",
39 'loginFormUsernameLabel':"логин", 36 'loginFormUsernameLabel':"логин",
40 'loginFormPassphraseLabel':"пароль", 37 'loginFormPassphraseLabel':"пароль",
41 'loginFormDontHaveAnAccountLabel':"у вас еще нет аккаунта?", 38 'loginFormDontHaveAnAccountLabel':"у вас еще нет аккаунта?",
42 'loginFormCreateOneLabel':"создать сейчас", 39 'loginFormCreateOneLabel':"создать сейчас",
43 'loginFormForgotYourCredentialsLabel':"забыли пароль?", 40 'loginFormForgotYourCredentialsLabel':"забыли пароль?",
44 'loginFormAarghThatsBadLabel':"это плохо!", 41 'loginFormAarghThatsBadLabel':"это плохо!",
45 'loginFormAfraidOfMaliciousScriptsLabel':"опасаетесь вредоносных скриптов?", 42 'loginFormAfraidOfMaliciousScriptsLabel':"опасаетесь вредоносных скриптов?",
46 'loginFormVerifyTheCodeLabel':"проверить", 43 'loginFormVerifyTheCodeLabel':"проверить",
47 'loginFormButtonLabel':"Войти", 44 'loginFormButtonLabel':"Войти",
48 'loginFormOneTimePasswordCheckboxLabel':"использовать одноразовый пароль", 45 'loginFormOneTimePasswordCheckboxLabel':"использовать одноразовый пароль",
49 'loginPanelSwithLanguageDescription':"<h5>Переключить язык</h5> ", 46 'loginPanelSwithLanguageDescription':"<h5>Переключить язык</h5> ",
50 'browserCompatibilityDescription':"<p>Clipperz адаптирован для Firefox. Но также совместим с Opera и MS Internet Explorer!</p> ", 47 'browserCompatibilityDescription':"<p>Clipperz адаптирован для Firefox. Но также совместим с Opera и MS Internet Explorer!</p> ",
51 'OTPloginMessagePanelInitialTitle':"Вход", 48 'OTPloginMessagePanelInitialTitle':"Вход",
52 'OTPloginMessagePanelInitialText':"Передача данных учетной записи ...", 49 'OTPloginMessagePanelInitialText':"Передача данных учетной записи ...",
53 'OTPloginMessagePanelLoadingTitle':"Вход", 50 'OTPloginMessagePanelLoadingTitle':"Вход",
54 'OTPloginMessagePanelLoadingText':"Запрос аутентификационных данных с сервера ...", 51 'OTPloginMessagePanelLoadingText':"Запрос аутентификационных данных с сервера ...",
55 'OTPloginMessagePanelProcessingTitle':"Вход", 52 'OTPloginMessagePanelProcessingTitle':"Вход",
56 'OTPloginMessagePanelProcessingText':"Расшифровка аутентификационных данных", 53 'OTPloginMessagePanelProcessingText':"Расшифровка аутентификационных данных",
57 'loginMessagePanelInitialTitle':"Вход ...", 54 'loginMessagePanelInitialTitle':"Вход ...",
58 'loginMessagePanelInitialButtonLabel':"Отмена", 55 'loginMessagePanelInitialButtonLabel':"Отмена",
59 'loginMessagePanelConnectedTitle':"Соединен", 56 'loginMessagePanelConnectedTitle':"Соединен",
60 'loginMessagePanelConnectedText':"Выполнен", 57 'loginMessagePanelConnectedText':"Выполнен",
61 'loginMessagePanelFailureTitle':"Ошибка", 58 'loginMessagePanelFailureTitle':"Ошибка",
62 'loginMessagePanelFailureText':"Ошибка при попытке входа", 59 'loginMessagePanelFailureText':"Ошибка при попытке входа",
63 'loginMessagePanelFailureButtonLabel':"Закрыть", 60 'loginMessagePanelFailureButtonLabel':"Закрыть",
64 'connectionLoginSendingCredentialsMessageTitle':"Проверка учетной записи", 61 'connectionLoginSendingCredentialsMessageTitle':"Проверка учетной записи",
65 'connectionLoginSendingCredentialsMessageText':"Передача данных ...", 62 'connectionLoginSendingCredentialsMessageText':"Передача данных ...",
66 'connectionLoginCredentialsVerificationMessageTitle':"Проверка учетной записи", 63 'connectionLoginCredentialsVerificationMessageTitle':"Проверка учетной записи",
67 'connectionLoginCredentialsVerificationMessageText':"Выполняем SRP-аутентификацию ...", 64 'connectionLoginCredentialsVerificationMessageText':"Выполняем SRP-аутентификацию ...",
68 'connectionLoginDoneMessageTitle':"Проверка учетной записи", 65 'connectionLoginDoneMessageTitle':"Проверка учетной записи",
69 'connectionLoginDoneMessageText':"Соединено", 66 'connectionLoginDoneMessageText':"Соединено",
70 'userLoginPanelUpgradingUserCredentialsMessageTitle':"Проверка учетной записи", 67 'userLoginPanelUpgradingUserCredentialsMessageTitle':"Проверка учетной записи",
71 'userLoginPanelUpgradingUserCredentialsMessageText':"Обновляем полномочия к новой схеме аутентификации", 68 'userLoginPanelUpgradingUserCredentialsMessageText':"Обновляем полномочия к новой схеме аутентификации",
72 'userLoginPanelConnectedMessageTitle':"Пользователь аутентифицирован", 69 'userLoginPanelConnectedMessageTitle':"Пользователь аутентифицирован",
73 'userLoginPanelConnectedMessageText':"Успешный вход", 70 'userLoginPanelConnectedMessageText':"Успешный вход",
74 'userLoginPanelTryingAnOlderConnectionSchemaMessageTitle':"Проверка учетной записи", 71 'userLoginPanelTryingAnOlderConnectionSchemaMessageTitle':"Проверка учетной записи",
75 'userLoginPanelTryingAnOlderConnectionSchemaMessageText':"Пробуем войти по старой схеме", 72 'userLoginPanelTryingAnOlderConnectionSchemaMessageText':"Пробуем войти по старой схеме",
76 'userLoginPanelLoadingUserDataMessageTitle':"Пользователь аутентифицирован", 73 'userLoginPanelLoadingUserDataMessageTitle':"Пользователь аутентифицирован",
77 'userLoginPanelLoadingUserDataMessageText':"Загрузка зашифрованных заголовков карточек", 74 'userLoginPanelLoadingUserDataMessageText':"Загрузка зашифрованных заголовков карточек",
78 'userLoginPanelDecryptingUserDataMessageTitle':"Пользователь аутентифицирован", 75 'userLoginPanelDecryptingUserDataMessageTitle':"Пользователь аутентифицирован",
79 'userLoginPanelDecryptingUserDataMessageText':"Расшифровка заголовков карточек", 76 'userLoginPanelDecryptingUserDataMessageText':"Расшифровка заголовков карточек",
80 'userLoginPanelDecryptingUserStatisticsMessageTitle':"Пользователь аутентифицирован", 77 'userLoginPanelDecryptingUserStatisticsMessageTitle':"Пользователь аутентифицирован",
81 'userLoginPanelDecryptingUserStatisticsMessageText':"Расшифровка статистики", 78 'userLoginPanelDecryptingUserStatisticsMessageText':"Расшифровка статистики",
82 'splashAlertTitle':"Добро пожаловать в Clipperz!", 79 'splashAlertTitle':"Добро пожаловать в Clipperz!",
83 'splashAlertText':"<p>Несколько советов по безопасности:</p> <ul> <li> <p>Хранение данных в Clipperz зависит от того, насколько безопасен выбранный вами пароль</p> </li> <li> <p>Если собираетесь использовать Clipperz для защиты важных или критических данных, то убедитесь, что выбрали сложный пароль</p> </li> <li> <p>Clipperz не сможет восстановить забытый пароль</p> </li> </ul> <p>За дополнительной информацией обратитесь на <a href=\"http://www.clipperz.com\" target=\"_blank\">сайт</a> Clipperz.</p> ", 80 'splashAlertText':"<p>Несколько советов по безопасности:</p> <ul> <li> <p>Хранение данных в Clipperz зависит от того, насколько безопасен выбранный вами пароль</p> </li> <li> <p>Если собираетесь использовать Clipperz для защиты важных или критических данных, то убедитесь, что выбрали сложный пароль</p> </li> <li> <p>Clipperz не сможет восстановить забытый пароль</p> </li> </ul> <p>За дополнительной информацией обратитесь на <a href=\"http://www.clipperz.com\" target=\"_blank\">сайт</a> Clipperz.</p> ",
84 'splashAlertCloseButtonLabel':"OK", 81 'splashAlertCloseButtonLabel':"OK",
85 'registrationFormTitle':"создать аккаунт", 82 'registrationFormTitle':"создать аккаунт",
86 'registrationFormUsernameLabel':"имя пользователя", 83 'registrationFormUsernameLabel':"имя пользователя",
87 'registrationFormPassphraseLabel':"пароль", 84 'registrationFormPassphraseLabel':"пароль",
88 'registrationFormRetypePassphraseLabel':"повторите пароль", 85 'registrationFormRetypePassphraseLabel':"повторите пароль",
89 'registrationFormSafetyCheckLabel':"Я понимаю, что Clipperz не сможет восстановить забытый пароль", 86 'registrationFormSafetyCheckLabel':"Я понимаю, что Clipperz не сможет восстановить забытый пароль",
90 'registrationFormTermsOfServiceCheckLabel':"Я прочитал и согласен с <a href='http://www.clipperz.com/terms_of_service' target='_blank'>Условиями предоставления услуг</a>.", 87 'registrationFormTermsOfServiceCheckLabel':"Я прочитал и согласен с <a href='http://www.clipperz.com/terms_of_service' target='_blank'>Условиями предоставления услуг</a>.",
91 'registrationFormDoYouAlreadyHaveAnAccountLabel':"у вас уже есть аккаунт?", 88 'registrationFormDoYouAlreadyHaveAnAccountLabel':"у вас уже есть аккаунт?",
92 'registrationFormSimplyLoginLabel':"просто авторизируйтесь", 89 'registrationFormSimplyLoginLabel':"просто авторизируйтесь",
93 'registrationFormButtonLabel':"Зарегистрировать", 90 'registrationFormButtonLabel':"Зарегистрировать",
94 'registrationFormWarningMessageNotMatchingPassphrases':"Пароли не совпадают, пожайлуста, повторите ввод", 91 'registrationFormWarningMessageNotMatchingPassphrases':"Пароли не совпадают, пожайлуста, повторите ввод",
95 'registrationFormWarningMessageSafetyCheckNotSelected':"Прочитайте и проверьте все поля ниже", 92 'registrationFormWarningMessageSafetyCheckNotSelected':"Прочитайте и проверьте все поля ниже",
96 'registrationFormWarningMessageTermsOfServiceCheckNotSelected':"Вы должны принять Условия предоставления услуг", 93 'registrationFormWarningMessageTermsOfServiceCheckNotSelected':"Вы должны принять Условия предоставления услуг",
97 'registrationMessagePanelInitialTitle':"Создание аккаунта", 94 'registrationMessagePanelInitialTitle':"Создание аккаунта",
98 'registrationMessagePanelInitialButtonLabel':"Отмена", 95 'registrationMessagePanelInitialButtonLabel':"Отмена",
99 'registrationMessagePanelRegistrationDoneTitle':"Регистрация", 96 'registrationMessagePanelRegistrationDoneTitle':"Регистрация",
100 'registrationMessagePanelRegistrationDoneText':"Выполнено", 97 'registrationMessagePanelRegistrationDoneText':"Выполнено",
101 'registrationMessagePanelFailureTitle':"Ошибка регистрации", 98 'registrationMessagePanelFailureTitle':"Ошибка регистрации",
102 'registrationMessagePanelFailureButtonLabel':"Закрыть", 99 'registrationMessagePanelFailureButtonLabel':"Закрыть",
103 'connectionRegistrationSendingRequestMessageText':"Проверка учетной записи", 100 'connectionRegistrationSendingRequestMessageText':"Проверка учетной записи",
104 'connectionRegistrationSendingCredentialsMessageText':"Передача данных", 101 'connectionRegistrationSendingCredentialsMessageText':"Передача данных",
105 'registrationSplashPanelTitle':"Совет", 102 'registrationSplashPanelTitle':"Совет",
106 'registrationSplashPanelDescription':"<p>Это ваши данные учетной записи, позаботесь об их безопасности. Clipperz никогда больше не покажет ваш логин и пароль!</p> ", 103 'registrationSplashPanelDescription':"<p>Это ваши данные учетной записи, позаботесь об их безопасности. Clipperz никогда больше не покажет ваш логин и пароль!</p> ",
107 'registrationSplashPanelUsernameLabel':"имя пользователя", 104 'registrationSplashPanelUsernameLabel':"имя пользователя",
108 'registrationSplashPanelPassphraseLabel':"пароль", 105 'registrationSplashPanelPassphraseLabel':"пароль",
109 'registrationSplashPanelShowPassphraseButtonLabel':"показать пароль", 106 'registrationSplashPanelShowPassphraseButtonLabel':"показать пароль",
110 'donateHeaderLinkLabel':"помочь проекту", 107 'donateHeaderLinkLabel':"помочь проекту",
111 'creditsHeaderLinkLabel':"авторы", 108 'creditsHeaderLinkLabel':"авторы",
112 'feedbackHeaderLinkLabel':"обратная связь", 109 'feedbackHeaderLinkLabel':"обратная связь",
113 'helpHeaderLinkLabel':"помощь", 110 'helpHeaderLinkLabel':"помощь",
114 'forumHeaderLinkLabel':"форум", 111 'forumHeaderLinkLabel':"форум",
115 'recordMenuLabel':"карточки", 112 'recordMenuLabel':"карточки",
116 'accountMenuLabel':"аккаунт", 113 'accountMenuLabel':"аккаунт",
117 'dataMenuLabel':"данные", 114 'dataMenuLabel':"данные",
118 'contactsMenuLabel':"контакты", 115 'contactsMenuLabel':"контакты",
119 'toolsMenuLabel':"инструменты", 116 'toolsMenuLabel':"инструменты",
120 'logoutMenuLabel':"выход", 117 'logoutMenuLabel':"выход",
121 'lockMenuLabel':"заблокировать", 118 'lockMenuLabel':"заблокировать",
122 'lockTitle':"Аккаунт заблокирован", 119 'lockTitle':"Аккаунт заблокирован",
123 'lockDescription':"<p>Введите пароль для разблокировки</p> ", 120 'lockDescription':"<p>Введите пароль для разблокировки</p> ",
124 'unlockButtonLabel':"разблокировать", 121 'unlockButtonLabel':"разблокировать",
125 'changePasswordTabLabel':"Изменить пароль", 122 'changePasswordTabLabel':"Изменить пароль",
126 'changePasswordTabTitle':"Изменить пароль", 123 'changePasswordTabTitle':"Изменить пароль",
127 'changePasswordFormUsernameLabel':"логин", 124 'changePasswordFormUsernameLabel':"логин",
128 'changePasswordFormOldPassphraseLabel':"старый пароль", 125 'changePasswordFormOldPassphraseLabel':"старый пароль",
129 'changePasswordFormNewPassphraseLabel':"новый пароль", 126 'changePasswordFormNewPassphraseLabel':"новый пароль",
130 'changePasswordFormRetypePassphraseLabel':"повторите пароль", 127 'changePasswordFormRetypePassphraseLabel':"повторите пароль",
131 'changePasswordFormSafetyCheckboxLabel':"Я понимаю, что Clipperz не сможет восстановить забытый пароль.", 128 'changePasswordFormSafetyCheckboxLabel':"Я понимаю, что Clipperz не сможет восстановить забытый пароль.",
132 'changePasswordFormSubmitLabel':"Изменить", 129 'changePasswordFormSubmitLabel':"Изменить",
133 'changePasswordFormWrongUsernameWarning':"Неправильный логин", 130 'changePasswordFormWrongUsernameWarning':"Неправильный логин",
134 'changePasswordFormWrongPassphraseWarning':"Неверный пароль", 131 'changePasswordFormWrongPassphraseWarning':"Неверный пароль",
135 'changePasswordFormWrongRetypePassphraseWarning':"Пароли не совпадают, пожайлуста, повторите ввод.", 132 'changePasswordFormWrongRetypePassphraseWarning':"Пароли не совпадают, пожайлуста, повторите ввод.",
136 'changePasswordFormSafetyCheckWarning':"Прочитайте и проверьте все поля ниже.", 133 'changePasswordFormSafetyCheckWarning':"Прочитайте и проверьте все поля ниже.",
137 'changePasswordFormProgressDialogTitle':"Изменение учетной записи", 134 'changePasswordFormProgressDialogTitle':"Изменение учетной записи",
138 'changePasswordFormProgressDialogConnectedMessageTitle':"Соединено", 135 'changePasswordFormProgressDialogConnectedMessageTitle':"Соединено",
139 'changePasswordFormProgressDialogConnectedMessageText':"Выполнено", 136 'changePasswordFormProgressDialogConnectedMessageText':"Выполнено",
140 'changePasswordFormProgressDialogErrorMessageTitle':"Ошибка", 137 'changePasswordFormProgressDialogErrorMessageTitle':"Ошибка",
141 'changePasswordFormProgressDialogErrorMessageText':"Ошибка изменения учетной записи!", 138 'changePasswordFormProgressDialogErrorMessageText':"Ошибка изменения учетной записи!",
142 'changeCredentialsPanelEncryptingDataMessageTitle':"Изменение пароля", 139 'changeCredentialsPanelEncryptingDataMessageTitle':"Изменение пароля",
143 'changeCredentialsPanelEncryptingDataMessageText':"Шифрование заголовков карточек", 140 'changeCredentialsPanelEncryptingDataMessageText':"Шифрование заголовков карточек",
144 'changeCredentialsPanelCreatingNewCredentialsMessageTitle':"Изменение пароля", 141 'changeCredentialsPanelCreatingNewCredentialsMessageTitle':"Изменение пароля",
145 'changeCredentialsPanelCreatingNewCredentialsMessageText':"Обновление учетной записи", 142 'changeCredentialsPanelCreatingNewCredentialsMessageText':"Обновление учетной записи",
146 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageTitle':"Изменение пароля", 143 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageTitle':"Изменение пароля",
147 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageText':"Загрузка данных учетной записи в Clipperz", 144 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageText':"Загрузка данных учетной записи в Clipperz",
148 'changeCredentialsPanelDoneMessageTitle':"Изменение пароля", 145 'changeCredentialsPanelDoneMessageTitle':"Изменение пароля",
149 'changeCredentialsPanelDoneMessageText':"Выполнено", 146 'changeCredentialsPanelDoneMessageText':"Выполнено",
150 'manageOTPTabLabel':"Управление одноразовыми паролями", 147 'manageOTPTabLabel':"Управление одноразовыми паролями",
151 'manageOTPTabTitle':"Управление одноразовыми паролями", 148 'manageOTPTabTitle':"Управление одноразовыми паролями",
152 'manageOTPTabDescription':"<p>Одноразовый пароль работает так же, как ваш обычный пароль, но может быть использован только один раз.</p> <p>Если один и тот же пароль будет использоваться снова, он будет отклонен при попытке войти.</p> <p>Сразу после входа одноразовый пароль будет удален, чтобы предотвратить любую несанкционированную попытку доступа.</p> <p>Одноразовые пароли - удачный выбор для тех, кто обеспокоен кейлоггерами или spyware, которые могут украсть пароль.</p> <p> <b>Строго рекомендуется использовать одноразовые пароли для доступа к Clipperz с чужих компьютеров, интернет-кафе и компьютеров общего пользования.</b> </p> ", 149 'manageOTPTabDescription':"<p>Одноразовый пароль работает так же, как ваш обычный пароль, но может быть использован только один раз.</p> <p>Если один и тот же пароль будет использоваться снова, он будет отклонен при попытке войти.</p> <p>Сразу после входа одноразовый пароль будет удален, чтобы предотвратить любую несанкционированную попытку доступа.</p> <p>Одноразовые пароли - удачный выбор для тех, кто обеспокоен кейлоггерами или spyware, которые могут украсть пароль.</p> <p> <b>Строго рекомендуется использовать одноразовые пароли для доступа к Clipperz с чужих компьютеров, интернет-кафе и компьютеров общего пользования.</b> </p> ",
diff --git a/frontend/beta/js/Clipperz/PM/Strings/Strings_zh-CN.js b/frontend/beta/js/Clipperz/PM/Strings/Strings_zh-CN.js
index a1d09f1..1a9caed 100644
--- a/frontend/beta/js/Clipperz/PM/Strings/Strings_zh-CN.js
+++ b/frontend/beta/js/Clipperz/PM/Strings/Strings_zh-CN.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29Clipperz.PM.Strings.Languages['zh-CN'.toLowerCase()] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], { 26Clipperz.PM.Strings.Languages['zh-CN'.toLowerCase()] = MochiKit.Base.merge(Clipperz.PM.Strings.Languages['en-us'], {
30 'clipperzServiceDescription':"<h2>只有你知道</h2> <ul> <li> <h3>Clipperz 是:</h3> <ul> <li> <p>一个简单而又安全的密码管理员</p> </li> <li> <p>一个有效的单一登录解决方案</p> </li> <li> <p>一个您保密的资料数据库</p> </li> </ul> </li> <li> <h3> 使用 Clipperz 你能:</h3> <ul> <li> <p>储存和管理你的密码和网上证书</p> </li> <li> <p>无需输入密码自动帮助你登录网站服务</p> </li> <li> <p>保护你的敏感数据:通讯录,口令,信用卡号码, ...</p> </li> <li> <p>与家人和伙伴分享秘密(将要上线)</p> </li> </ul> </li> <li> <h3>Clipperz 的特点:</h3> <ul> <li> <p>免费,彻底匿名</p> </li> <li> <p>在任何时间 任何电脑都可以轻松获取你的密码</p> </li> <li> <p>无需下载和安装任何软件</p> </li> <li> <p>再也无需在电脑或者纸上记录密码了</p> </li> </ul> </li> <li> <h3>Clipperz 的安全性:</h3> <ul> <li> <p>密码将在本地浏览器加密,然后上传至 Clipperz</p> </li> <li> <p>加密密钥是一个只有你知道的密码短语</p> </li> <li> <p>Clipperz 服务会加密你的敏感数据,并不会出现数据的原始形式</p> </li> <li> <p>Clipperz 基于加密标准,没有任何的花哨</p> </li> <li> <p>只要你愿意,你随时都可以查看源代码,但是做为一个使用者来说完全没有去必要去了解那些繁琐的加密原理</p> </li> </ul> </li> <li> <a href=\"http://www.clipperz.com\" target=\"_blank\">更多</a> </li> </ul> ", 27 'clipperzServiceDescription':"<h2>只有你知道</h2> <ul> <li> <h3>Clipperz 是:</h3> <ul> <li> <p>一个简单而又安全的密码管理员</p> </li> <li> <p>一个有效的单一登录解决方案</p> </li> <li> <p>一个您保密的资料数据库</p> </li> </ul> </li> <li> <h3> 使用 Clipperz 你能:</h3> <ul> <li> <p>储存和管理你的密码和网上证书</p> </li> <li> <p>无需输入密码自动帮助你登录网站服务</p> </li> <li> <p>保护你的敏感数据:通讯录,口令,信用卡号码, ...</p> </li> <li> <p>与家人和伙伴分享秘密(将要上线)</p> </li> </ul> </li> <li> <h3>Clipperz 的特点:</h3> <ul> <li> <p>免费,彻底匿名</p> </li> <li> <p>在任何时间 任何电脑都可以轻松获取你的密码</p> </li> <li> <p>无需下载和安装任何软件</p> </li> <li> <p>再也无需在电脑或者纸上记录密码了</p> </li> </ul> </li> <li> <h3>Clipperz 的安全性:</h3> <ul> <li> <p>密码将在本地浏览器加密,然后上传至 Clipperz</p> </li> <li> <p>加密密钥是一个只有你知道的密码短语</p> </li> <li> <p>Clipperz 服务会加密你的敏感数据,并不会出现数据的原始形式</p> </li> <li> <p>Clipperz 基于加密标准,没有任何的花哨</p> </li> <li> <p>只要你愿意,你随时都可以查看源代码,但是做为一个使用者来说完全没有去必要去了解那些繁琐的加密原理</p> </li> </ul> </li> <li> <a href=\"http://www.clipperz.com\" target=\"_blank\">更多</a> </li> </ul> ",
31 'loginFormTitle':"用你的 Clipperz 帐户登录", 28 'loginFormTitle':"用你的 Clipperz 帐户登录",
32 'loginFormUsernameLabel':"用户名", 29 'loginFormUsernameLabel':"用户名",
33 'loginFormPassphraseLabel':"密码短语", 30 'loginFormPassphraseLabel':"密码短语",
34 'loginFormDontHaveAnAccountLabel':"还未建立帐户?", 31 'loginFormDontHaveAnAccountLabel':"还未建立帐户?",
35 'loginFormCreateOneLabel':"创建一个新帐户", 32 'loginFormCreateOneLabel':"创建一个新帐户",
36 'loginFormForgotYourCredentialsLabel':"忘记你的证书?", 33 'loginFormForgotYourCredentialsLabel':"忘记你的证书?",
37 'loginFormAarghThatsBadLabel':"呃?这下糟糕了", 34 'loginFormAarghThatsBadLabel':"呃?这下糟糕了",
38 'loginFormAfraidOfMaliciousScriptsLabel':"害怕有恶意脚本?", 35 'loginFormAfraidOfMaliciousScriptsLabel':"害怕有恶意脚本?",
39 'loginFormVerifyTheCodeLabel':"验证代码", 36 'loginFormVerifyTheCodeLabel':"验证代码",
40 'loginFormButtonLabel':"登录", 37 'loginFormButtonLabel':"登录",
41 'loginFormOneTimePasswordCheckboxLabel':"使用一次性密码短语", 38 'loginFormOneTimePasswordCheckboxLabel':"使用一次性密码短语",
42 'loginPanelSwithLanguageDescription':"<h5>选择你的第一语言</h5> ", 39 'loginPanelSwithLanguageDescription':"<h5>选择你的第一语言</h5> ",
43 'browserCompatibilityDescription':"<p>使用 Firefox 将得到更快更安全的 Clipperz 服务。不过 Clipperz 同样可以很好的工作在 Opera 和 微软的 IE 中。</p> ", 40 'browserCompatibilityDescription':"<p>使用 Firefox 将得到更快更安全的 Clipperz 服务。不过 Clipperz 同样可以很好的工作在 Opera 和 微软的 IE 中。</p> ",
44 'OTPloginMessagePanelInitialTitle':"用一次性密码短语登录", 41 'OTPloginMessagePanelInitialTitle':"用一次性密码短语登录",
45 'OTPloginMessagePanelInitialText':"发送 OTP 证书 ...", 42 'OTPloginMessagePanelInitialText':"发送 OTP 证书 ...",
46 'OTPloginMessagePanelLoadingTitle':"用一次性密码短语登录", 43 'OTPloginMessagePanelLoadingTitle':"用一次性密码短语登录",
47 'OTPloginMessagePanelLoadingText':"从服务器读取加密认证数据 ...", 44 'OTPloginMessagePanelLoadingText':"从服务器读取加密认证数据 ...",
48 'OTPloginMessagePanelProcessingTitle':"用一次性密码短语登录", 45 'OTPloginMessagePanelProcessingTitle':"用一次性密码短语登录",
49 'OTPloginMessagePanelProcessingText':"本地解密认证数据", 46 'OTPloginMessagePanelProcessingText':"本地解密认证数据",
50 'loginMessagePanelInitialTitle':"登录中...", 47 'loginMessagePanelInitialTitle':"登录中...",
51 'loginMessagePanelInitialButtonLabel':"取消", 48 'loginMessagePanelInitialButtonLabel':"取消",
52 'loginMessagePanelConnectedTitle':"连接成功", 49 'loginMessagePanelConnectedTitle':"连接成功",
53 'loginMessagePanelConnectedText':"完成", 50 'loginMessagePanelConnectedText':"完成",
54 'loginMessagePanelFailureTitle':"错误", 51 'loginMessagePanelFailureTitle':"错误",
55 'loginMessagePanelFailureText':"登录失败", 52 'loginMessagePanelFailureText':"登录失败",
56 'loginMessagePanelFailureButtonLabel':"取消", 53 'loginMessagePanelFailureButtonLabel':"取消",
57 'connectionLoginSendingCredentialsMessageTitle':"验证证书", 54 'connectionLoginSendingCredentialsMessageTitle':"验证证书",
58 'connectionLoginSendingCredentialsMessageText':"传送证书", 55 'connectionLoginSendingCredentialsMessageText':"传送证书",
59 'connectionLoginCredentialsVerificationMessageTitle':"验证证书", 56 'connectionLoginCredentialsVerificationMessageTitle':"验证证书",
60 'connectionLoginCredentialsVerificationMessageText':"进行 SRP 认证", 57 'connectionLoginCredentialsVerificationMessageText':"进行 SRP 认证",
61 'connectionLoginDoneMessageTitle':"验证证书", 58 'connectionLoginDoneMessageTitle':"验证证书",
62 'connectionLoginDoneMessageText':"已连接", 59 'connectionLoginDoneMessageText':"已连接",
63 'userLoginPanelUpgradingUserCredentialsMessageTitle':"验证证书", 60 'userLoginPanelUpgradingUserCredentialsMessageTitle':"验证证书",
64 'userLoginPanelUpgradingUserCredentialsMessageText':"升级证书到新的认证模式", 61 'userLoginPanelUpgradingUserCredentialsMessageText':"升级证书到新的认证模式",
65 'userLoginPanelConnectedMessageTitle':"用户识别", 62 'userLoginPanelConnectedMessageTitle':"用户识别",
66 'userLoginPanelConnectedMessageText':"成功登录", 63 'userLoginPanelConnectedMessageText':"成功登录",
67 'userLoginPanelTryingAnOlderConnectionSchemaMessageTitle':"验证证书", 64 'userLoginPanelTryingAnOlderConnectionSchemaMessageTitle':"验证证书",
68 'userLoginPanelTryingAnOlderConnectionSchemaMessageText':"旧认证模式失效", 65 'userLoginPanelTryingAnOlderConnectionSchemaMessageText':"旧认证模式失效",
69 'userLoginPanelLoadingUserDataMessageTitle':"用户识别", 66 'userLoginPanelLoadingUserDataMessageTitle':"用户识别",
70 'userLoginPanelLoadingUserDataMessageText':"正在从 Clipperz 下载加密卡报头", 67 'userLoginPanelLoadingUserDataMessageText':"正在从 Clipperz 下载加密卡报头",
71 'userLoginPanelDecryptingUserDataMessageTitle':"用户识别", 68 'userLoginPanelDecryptingUserDataMessageTitle':"用户识别",
72 'userLoginPanelDecryptingUserDataMessageText':"加密卡报头本地解密", 69 'userLoginPanelDecryptingUserDataMessageText':"加密卡报头本地解密",
73 'userLoginPanelDecryptingUserStatisticsMessageTitle':"用户识别", 70 'userLoginPanelDecryptingUserStatisticsMessageTitle':"用户识别",
74 'userLoginPanelDecryptingUserStatisticsMessageText':"本地解密使用统计", 71 'userLoginPanelDecryptingUserStatisticsMessageText':"本地解密使用统计",
75 'splashAlertTitle':"Clipperz 欢迎您", 72 'splashAlertTitle':"Clipperz 欢迎您",
76 'splashAlertText':"<p>安全忠告</p> <ul> <li> <p>在 Clipperz ,用你选择的密码短语保存数据是安全的。没有人能够得到这些数据,除非他们有你的密码。</p> </li> <li> <p> 如果你决定使用 Clipperz 保护敏感数据和关键资料,请务必选用一个复杂的密码短语。越长越好</p> </li> <li> <p>注意:Clipperz将无法找回忘记的密码码短语!</p> </li> </ul> <p>获得更多的说明,请前往 <a href=\"http://www.clipperz.com\" target=\"_blank\">Clipperz</a> 网站.</p> ", 73 'splashAlertText':"<p>安全忠告</p> <ul> <li> <p>在 Clipperz ,用你选择的密码短语保存数据是安全的。没有人能够得到这些数据,除非他们有你的密码。</p> </li> <li> <p> 如果你决定使用 Clipperz 保护敏感数据和关键资料,请务必选用一个复杂的密码短语。越长越好</p> </li> <li> <p>注意:Clipperz将无法找回忘记的密码码短语!</p> </li> </ul> <p>获得更多的说明,请前往 <a href=\"http://www.clipperz.com\" target=\"_blank\">Clipperz</a> 网站.</p> ",
77 'splashAlertCloseButtonLabel':"确定", 74 'splashAlertCloseButtonLabel':"确定",
78 'registrationFormTitle':"创建你的帐户", 75 'registrationFormTitle':"创建你的帐户",
79 'registrationFormUsernameLabel':"用户名", 76 'registrationFormUsernameLabel':"用户名",
80 'registrationFormPassphraseLabel':"密码短语", 77 'registrationFormPassphraseLabel':"密码短语",
81 'registrationFormRetypePassphraseLabel':"确认密码短语", 78 'registrationFormRetypePassphraseLabel':"确认密码短语",
82 'registrationFormSafetyCheckLabel':"我明白 Clipperz 无法找回忘记的密码短语.", 79 'registrationFormSafetyCheckLabel':"我明白 Clipperz 无法找回忘记的密码短语.",
83 'registrationFormTermsOfServiceCheckLabel':"我同意接受 <a href='http://www.clipperz.com/terms_of_service' target='_blank'>服务条款</a> 款.", 80 'registrationFormTermsOfServiceCheckLabel':"我同意接受 <a href='http://www.clipperz.com/terms_of_service' target='_blank'>服务条款</a> 款.",
84 'registrationFormDoYouAlreadyHaveAnAccountLabel':"如果已有一个 Clipperz 帐户", 81 'registrationFormDoYouAlreadyHaveAnAccountLabel':"如果已有一个 Clipperz 帐户",
85 'registrationFormSimplyLoginLabel':"在此登录", 82 'registrationFormSimplyLoginLabel':"在此登录",
86 'registrationFormButtonLabel':"注册", 83 'registrationFormButtonLabel':"注册",
87 'registrationFormWarningMessageNotMatchingPassphrases':"两次密码短语不同,请重新输入", 84 'registrationFormWarningMessageNotMatchingPassphrases':"两次密码短语不同,请重新输入",
88 'registrationFormWarningMessageSafetyCheckNotSelected':"请阅读并检查下面的选项框", 85 'registrationFormWarningMessageSafetyCheckNotSelected':"请阅读并检查下面的选项框",
89 'registrationFormWarningMessageTermsOfServiceCheckNotSelected':"您需要同意服务条款", 86 'registrationFormWarningMessageTermsOfServiceCheckNotSelected':"您需要同意服务条款",
90 'registrationMessagePanelInitialTitle':"创建账户...", 87 'registrationMessagePanelInitialTitle':"创建账户...",
91 'registrationMessagePanelInitialButtonLabel':"取消", 88 'registrationMessagePanelInitialButtonLabel':"取消",
92 'registrationMessagePanelRegistrationDoneTitle':"注册", 89 'registrationMessagePanelRegistrationDoneTitle':"注册",
93 'registrationMessagePanelRegistrationDoneText':"完成", 90 'registrationMessagePanelRegistrationDoneText':"完成",
94 'registrationMessagePanelFailureTitle':"注册失败", 91 'registrationMessagePanelFailureTitle':"注册失败",
95 'registrationMessagePanelFailureButtonLabel':"关闭", 92 'registrationMessagePanelFailureButtonLabel':"关闭",
96 'connectionRegistrationSendingRequestMessageText':"验证证书", 93 'connectionRegistrationSendingRequestMessageText':"验证证书",
97 'connectionRegistrationSendingCredentialsMessageText':"传送证书", 94 'connectionRegistrationSendingCredentialsMessageText':"传送证书",
98 'registrationSplashPanelTitle':"安全忠告", 95 'registrationSplashPanelTitle':"安全忠告",
99 'registrationSplashPanelDescription':"<p>这是你的 Clipperz 证书,请保存好。Clipperz 永远不会第二次显示你的用户名和密码短语</p> ", 96 'registrationSplashPanelDescription':"<p>这是你的 Clipperz 证书,请保存好。Clipperz 永远不会第二次显示你的用户名和密码短语</p> ",
100 'registrationSplashPanelUsernameLabel':"用户名", 97 'registrationSplashPanelUsernameLabel':"用户名",
101 'registrationSplashPanelPassphraseLabel':"密码短语", 98 'registrationSplashPanelPassphraseLabel':"密码短语",
102 'registrationSplashPanelShowPassphraseButtonLabel':"显示密码短语", 99 'registrationSplashPanelShowPassphraseButtonLabel':"显示密码短语",
103 'donateHeaderLinkLabel':"捐赠", 100 'donateHeaderLinkLabel':"捐赠",
104 'creditsHeaderLinkLabel':"致谢", 101 'creditsHeaderLinkLabel':"致谢",
105 'feedbackHeaderLinkLabel':"反馈", 102 'feedbackHeaderLinkLabel':"反馈",
106 'helpHeaderLinkLabel':"帮助", 103 'helpHeaderLinkLabel':"帮助",
107 'forumHeaderLinkLabel':"论坛", 104 'forumHeaderLinkLabel':"论坛",
108 'recordMenuLabel':"密码卡片", 105 'recordMenuLabel':"密码卡片",
109 'accountMenuLabel':"账户", 106 'accountMenuLabel':"账户",
110 'dataMenuLabel':"资料", 107 'dataMenuLabel':"资料",
111 'contactsMenuLabel':"联系", 108 'contactsMenuLabel':"联系",
112 'toolsMenuLabel':"工具", 109 'toolsMenuLabel':"工具",
113 'logoutMenuLabel':"暂时离开", 110 'logoutMenuLabel':"暂时离开",
114 'lockMenuLabel':"安全锁", 111 'lockMenuLabel':"安全锁",
115 'lockTitle':"账户被锁定", 112 'lockTitle':"账户被锁定",
116 'lockDescription':"<p>请输入你的密码短语解开账户</p> ", 113 'lockDescription':"<p>请输入你的密码短语解开账户</p> ",
117 'unlockButtonLabel':"解锁", 114 'unlockButtonLabel':"解锁",
118 'changePasswordTabLabel':"修改密码短语", 115 'changePasswordTabLabel':"修改密码短语",
119 'changePasswordTabTitle':"修改密码短语", 116 'changePasswordTabTitle':"修改密码短语",
120 'changePasswordFormUsernameLabel':"用户名", 117 'changePasswordFormUsernameLabel':"用户名",
121 'changePasswordFormOldPassphraseLabel':"旧密码短语", 118 'changePasswordFormOldPassphraseLabel':"旧密码短语",
122 'changePasswordFormNewPassphraseLabel':"新密码短语", 119 'changePasswordFormNewPassphraseLabel':"新密码短语",
123 'changePasswordFormRetypePassphraseLabel':"确认密码短语", 120 'changePasswordFormRetypePassphraseLabel':"确认密码短语",
124 'changePasswordFormSafetyCheckboxLabel':"我知道 Clipperz 不能找回丢失的密码短语", 121 'changePasswordFormSafetyCheckboxLabel':"我知道 Clipperz 不能找回丢失的密码短语",
125 'changePasswordFormSubmitLabel':"修改密码短语", 122 'changePasswordFormSubmitLabel':"修改密码短语",
126 'changePasswordFormWrongUsernameWarning':"用户名错误", 123 'changePasswordFormWrongUsernameWarning':"用户名错误",
127 'changePasswordFormWrongPassphraseWarning':"旧密码短语错误", 124 'changePasswordFormWrongPassphraseWarning':"旧密码短语错误",
128 'changePasswordFormWrongRetypePassphraseWarning':"两次密码短语不同,请重新输入", 125 'changePasswordFormWrongRetypePassphraseWarning':"两次密码短语不同,请重新输入",
129 'changePasswordFormSafetyCheckWarning':"请阅读并检查下面的选项框", 126 'changePasswordFormSafetyCheckWarning':"请阅读并检查下面的选项框",
130 'changePasswordFormProgressDialogTitle':"正在修改密码短语", 127 'changePasswordFormProgressDialogTitle':"正在修改密码短语",
131 'changePasswordFormProgressDialogConnectedMessageTitle':"连接", 128 'changePasswordFormProgressDialogConnectedMessageTitle':"连接",
132 'changePasswordFormProgressDialogConnectedMessageText':"完成", 129 'changePasswordFormProgressDialogConnectedMessageText':"完成",
133 'changePasswordFormProgressDialogErrorMessageTitle':"错误", 130 'changePasswordFormProgressDialogErrorMessageTitle':"错误",
134 'changePasswordFormProgressDialogErrorMessageText':"证书修改失败", 131 'changePasswordFormProgressDialogErrorMessageText':"证书修改失败",
135 'changeCredentialsPanelEncryptingDataMessageTitle':"正在修改你的密码短语", 132 'changeCredentialsPanelEncryptingDataMessageTitle':"正在修改你的密码短语",
136 'changeCredentialsPanelEncryptingDataMessageText':"加密卡报头本地解密", 133 'changeCredentialsPanelEncryptingDataMessageText':"加密卡报头本地解密",
137 'changeCredentialsPanelCreatingNewCredentialsMessageTitle':"正在修改你的密码短语", 134 'changeCredentialsPanelCreatingNewCredentialsMessageTitle':"正在修改你的密码短语",
138 'changeCredentialsPanelCreatingNewCredentialsMessageText':"更新你的证书", 135 'changeCredentialsPanelCreatingNewCredentialsMessageText':"更新你的证书",
139 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageTitle':"正在修改你的密码短语", 136 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageTitle':"正在修改你的密码短语",
140 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageText':"正在上传本地证书到 Clipperz", 137 'changeCredentialsPanelSendingNewCredentialsToTheServerMessageText':"正在上传本地证书到 Clipperz",
141 'changeCredentialsPanelDoneMessageTitle':"正在修改你的密码短语", 138 'changeCredentialsPanelDoneMessageTitle':"正在修改你的密码短语",
142 'changeCredentialsPanelDoneMessageText':"完成", 139 'changeCredentialsPanelDoneMessageText':"完成",
143 'manageOTPTabLabel':"管理你的一次性密码短语", 140 'manageOTPTabLabel':"管理你的一次性密码短语",
144 'manageOTPTabTitle':"管理你的一次性密码短语", 141 'manageOTPTabTitle':"管理你的一次性密码短语",
145 'manageOTPTabDescription':"<p>一次性密码短语工作起来和一般的密码短语一样,但是只可以使用一次</p> <p>如果同样的密码短语在一段时间以内再次登录,会被拒绝。登录进程将会失败。</p> <p>为了防止任何欺诈登录,在成功登陆之后,你的一次性密码将会立即被删除,</p> <p>如果一次性密码被键盘记录程序或者间谍软件得到,可能会从被感染的机器上收集数据,这样的话,一次性密码绝对是个很好的选择。</p> <p> <b>强烈建议在公共场合登录 Clipperz 时,使用一次性密码。比如公关计算机,网吧,图书馆等</b> </p> ", 142 'manageOTPTabDescription':"<p>一次性密码短语工作起来和一般的密码短语一样,但是只可以使用一次</p> <p>如果同样的密码短语在一段时间以内再次登录,会被拒绝。登录进程将会失败。</p> <p>为了防止任何欺诈登录,在成功登陆之后,你的一次性密码将会立即被删除,</p> <p>如果一次性密码被键盘记录程序或者间谍软件得到,可能会从被感染的机器上收集数据,这样的话,一次性密码绝对是个很好的选择。</p> <p> <b>强烈建议在公共场合登录 Clipperz 时,使用一次性密码。比如公关计算机,网吧,图书馆等</b> </p> ",
146 'oneTimePasswordReadOnlyMessage':"<h6>对不起!</h6> <p>你不能从离线版本管理你的一次性密码短语</p> ", 143 'oneTimePasswordReadOnlyMessage':"<h6>对不起!</h6> <p>你不能从离线版本管理你的一次性密码短语</p> ",
147 'oneTimePasswordLoadingMessage':"<h6>加载数据</h6> <p>请等待 ...</p> ", 144 'oneTimePasswordLoadingMessage':"<h6>加载数据</h6> <p>请等待 ...</p> ",
148 'oneTimePasswordNoPasswordAvailable':"<h6>一次性密码短语没有激活</h6> <p>点击“新建”按钮添加一次性密码短语到你的帐户</p> ", 145 'oneTimePasswordNoPasswordAvailable':"<h6>一次性密码短语没有激活</h6> <p>点击“新建”按钮添加一次性密码短语到你的帐户</p> ",
149 'createNewOTPButtonLabel':"新建", 146 'createNewOTPButtonLabel':"新建",
150 'deleteOTPButtonLabel':"删除", 147 'deleteOTPButtonLabel':"删除",
151 'printOTPButtonLabel':"打印", 148 'printOTPButtonLabel':"打印",
152 'disabledOneTimePassword_warning':"禁用", 149 'disabledOneTimePassword_warning':"禁用",
diff --git a/frontend/beta/js/Clipperz/PM/Toll.js b/frontend/beta/js/Clipperz/PM/Toll.js
index 6d412c1..3a9b48f 100644
--- a/frontend/beta/js/Clipperz/PM/Toll.js
+++ b/frontend/beta/js/Clipperz/PM/Toll.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 27if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
31 28
32//============================================================================= 29//=============================================================================
33 30
34Clipperz.PM.Toll = function(args) { 31Clipperz.PM.Toll = function(args) {
35 this._requestType = args.requestType; 32 this._requestType = args.requestType;
36 this._targetValue = args.targetValue; 33 this._targetValue = args.targetValue;
37 this._cost = args.cost; 34 this._cost = args.cost;
38 this._toll = null; 35 this._toll = null;
39 36
40 return this; 37 return this;
41} 38}
42 39
43Clipperz.PM.Toll.prototype = MochiKit.Base.update(null, { 40Clipperz.PM.Toll.prototype = MochiKit.Base.update(null, {
44 41
45 'toString': function() { 42 'toString': function() {
46 return "Clipperz.PM.Toll (" + this.requestType() + ": " + this.cost() + " - " + ((this.toll() == null)? 'UNPAID' : 'PAID') + ")"; 43 return "Clipperz.PM.Toll (" + this.requestType() + ": " + this.cost() + " - " + ((this.toll() == null)? 'UNPAID' : 'PAID') + ")";
47 }, 44 },
48 45
49 //------------------------------------------------------------------------- 46 //-------------------------------------------------------------------------
50 47
51 'requestType': function() { 48 'requestType': function() {
52 return this._requestType; 49 return this._requestType;
53 }, 50 },
54 51
55 //------------------------------------------------------------------------- 52 //-------------------------------------------------------------------------
56 53
57 'targetValue': function() { 54 'targetValue': function() {
58 return this._targetValue; 55 return this._targetValue;
59 }, 56 },
60 57
61 //------------------------------------------------------------------------- 58 //-------------------------------------------------------------------------
62 59
63 'cost': function() { 60 'cost': function() {
64 return this._cost; 61 return this._cost;
65 }, 62 },
66 63
67 //------------------------------------------------------------------------- 64 //-------------------------------------------------------------------------
68 65
69 'toll': function() { 66 'toll': function() {
70 return this._toll; 67 return this._toll;
71 }, 68 },
72 69
73 //========================================================================= 70 //=========================================================================
74 71
75 'prefixMatchingBits': function(aValue1, aValue2) { 72 'prefixMatchingBits': function(aValue1, aValue2) {
76 varresult; 73 varresult;
77 var i,c; 74 var i,c;
78 75
79 result = 0; 76 result = 0;
80 77
81 c = Math.min(aValue1.length(), aValue2.length()); 78 c = Math.min(aValue1.length(), aValue2.length());
82 i = 0; 79 i = 0;
83 while (i<c && (aValue1.byteAtIndex(i) == aValue2.byteAtIndex(i))) { 80 while (i<c && (aValue1.byteAtIndex(i) == aValue2.byteAtIndex(i))) {
84 result += 8; 81 result += 8;
85 i++; 82 i++;
86 } 83 }
87 84
88 if (i<c) { 85 if (i<c) {
89 varxorValue; 86 varxorValue;
90 87
91 xorValue = (aValue1.byteAtIndex(i) ^ aValue2.byteAtIndex(i)); 88 xorValue = (aValue1.byteAtIndex(i) ^ aValue2.byteAtIndex(i));
92 89
93 if (xorValue >= 128) { 90 if (xorValue >= 128) {
94 result += 0; 91 result += 0;
95 } else if (xorValue >= 64) { 92 } else if (xorValue >= 64) {
96 result += 1; 93 result += 1;
97 } else if (xorValue >= 32) { 94 } else if (xorValue >= 32) {
98 result += 2; 95 result += 2;
99 } else if (xorValue >= 16) { 96 } else if (xorValue >= 16) {
100 result += 3; 97 result += 3;
101 } else if (xorValue >= 8) { 98 } else if (xorValue >= 8) {
102 result += 4; 99 result += 4;
103 } else if (xorValue >= 4) { 100 } else if (xorValue >= 4) {
104 result += 5; 101 result += 5;
105 } else if (xorValue >= 2) { 102 } else if (xorValue >= 2) {
106 result += 6; 103 result += 6;
107 } else if (xorValue >= 1) { 104 } else if (xorValue >= 1) {
108 result += 7; 105 result += 7;
109 } 106 }
110 } 107 }
111 108
112 return result; 109 return result;
113 }, 110 },
114 111
115 //========================================================================= 112 //=========================================================================
116 113
117 'pay': function() { 114 'pay': function() {
118 varresult; 115 varresult;
119 vartargetData; 116 vartargetData;
120 vartargetMatchSize; 117 vartargetMatchSize;
121 var prefixMatchingBits; 118 var prefixMatchingBits;
122 varpayment; 119 varpayment;
123 var i; 120 var i;
124 121
125//MochiKit.Logging.logDebug(">>> Toll.pay"); 122//MochiKit.Logging.logDebug(">>> Toll.pay");
126 if (this.toll() == null) { 123 if (this.toll() == null) {
127 i = 0; 124 i = 0;
128//MochiKit.Logging.logDebug("--- Proxy.payToll - 1"); 125//MochiKit.Logging.logDebug("--- Proxy.payToll - 1");
129 targetData = new Clipperz.ByteArray("0x" + this.targetValue()); 126 targetData = new Clipperz.ByteArray("0x" + this.targetValue());
130//MochiKit.Logging.logDebug("--- Proxy.payToll - 2"); 127//MochiKit.Logging.logDebug("--- Proxy.payToll - 2");
131 targetMatchSize = this.cost(); 128 targetMatchSize = this.cost();
132//MochiKit.Logging.logDebug("--- Proxy.payToll - 3"); 129//MochiKit.Logging.logDebug("--- Proxy.payToll - 3");
133 130
134 payment = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32); 131 payment = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32);
135//MochiKit.Logging.logDebug("--- Proxy.payToll - 4"); 132//MochiKit.Logging.logDebug("--- Proxy.payToll - 4");
136 133
137 do { 134 do {
138 varpaymentData; 135 varpaymentData;
139 136
140//MochiKit.Logging.logDebug("--- Proxy.payToll - 5"); 137//MochiKit.Logging.logDebug("--- Proxy.payToll - 5");
141 //payment = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32); 138 //payment = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32);
142 payment.increment(); 139 payment.increment();
143//MochiKit.Logging.logDebug("--- Proxy.payToll - 6"); 140//MochiKit.Logging.logDebug("--- Proxy.payToll - 6");
144 paymentData = Clipperz.Crypto.SHA.sha256(payment); 141 paymentData = Clipperz.Crypto.SHA.sha256(payment);
145//MochiKit.Logging.logDebug("--- Proxy.payToll - 7"); 142//MochiKit.Logging.logDebug("--- Proxy.payToll - 7");
146 prefixMatchingBits = this.prefixMatchingBits(targetData, paymentData); 143 prefixMatchingBits = this.prefixMatchingBits(targetData, paymentData);
147//MochiKit.Logging.logDebug("--- Proxy.payToll - 8"); 144//MochiKit.Logging.logDebug("--- Proxy.payToll - 8");
148 i++; 145 i++;
149//MochiKit.Logging.logDebug("--- Proxy.payToll - 9"); 146//MochiKit.Logging.logDebug("--- Proxy.payToll - 9");
150 } while (prefixMatchingBits < targetMatchSize); 147 } while (prefixMatchingBits < targetMatchSize);
151//MochiKit.Logging.logDebug("--- Proxy.payToll - 10"); 148//MochiKit.Logging.logDebug("--- Proxy.payToll - 10");
152 149
diff --git a/frontend/beta/js/Clipperz/Profile.js b/frontend/beta/js/Clipperz/Profile.js
index 31888a9..fb12417 100644
--- a/frontend/beta/js/Clipperz/Profile.js
+++ b/frontend/beta/js/Clipperz/Profile.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29addEvent(window, "load", sortables_init); 26addEvent(window, "load", sortables_init);
30 27
31var SORT_COLUMN_INDEX; 28var SORT_COLUMN_INDEX;
32 29
33function sortables_init() { 30function sortables_init() {
34 // Find all tables with class sortable and make them sortable 31 // Find all tables with class sortable and make them sortable
35 if (!document.getElementsByTagName) return; 32 if (!document.getElementsByTagName) return;
36 tbls = document.getElementsByTagName("table"); 33 tbls = document.getElementsByTagName("table");
37 for (ti=0;ti<tbls.length;ti++) { 34 for (ti=0;ti<tbls.length;ti++) {
38 thisTbl = tbls[ti]; 35 thisTbl = tbls[ti];
39 if (((' '+thisTbl.className+' ').indexOf("sortable") != -1) && (thisTbl.id)) { 36 if (((' '+thisTbl.className+' ').indexOf("sortable") != -1) && (thisTbl.id)) {
40 //initTable(thisTbl.id); 37 //initTable(thisTbl.id);
41 ts_makeSortable(thisTbl); 38 ts_makeSortable(thisTbl);
42 } 39 }
43 } 40 }
44} 41}
45 42
46function ts_makeSortable(table) { 43function ts_makeSortable(table) {
47 if (table.rows && table.rows.length > 0) { 44 if (table.rows && table.rows.length > 0) {
48 var firstRow = table.rows[0]; 45 var firstRow = table.rows[0];
49 } 46 }
50 if (!firstRow) return; 47 if (!firstRow) return;
51 48
52 // We have a first row: assume it's the header, and make its contents clickable links 49 // We have a first row: assume it's the header, and make its contents clickable links
53 for (var i=0;i<firstRow.cells.length;i++) { 50 for (var i=0;i<firstRow.cells.length;i++) {
54 var cell = firstRow.cells[i]; 51 var cell = firstRow.cells[i];
55 var txt = ts_getInnerText(cell); 52 var txt = ts_getInnerText(cell);
56 cell.innerHTML = '<a href="#" class="sortheader" '+ 53 cell.innerHTML = '<a href="#" class="sortheader" '+
57 'onclick="ts_resortTable(this, '+i+');return false;">' + 54 'onclick="ts_resortTable(this, '+i+');return false;">' +
58 txt+'<span class="sortarrow">&nbsp;&nbsp;&nbsp;</span></a>'; 55 txt+'<span class="sortarrow">&nbsp;&nbsp;&nbsp;</span></a>';
59 } 56 }
60} 57}
61 58
62function ts_getInnerText(el) { 59function ts_getInnerText(el) {
63 if (typeof el == "string") return el; 60 if (typeof el == "string") return el;
64 if (typeof el == "undefined") { return el }; 61 if (typeof el == "undefined") { return el };
65 if (el.innerText) return el.innerText;//Not needed but it is faster 62 if (el.innerText) return el.innerText;//Not needed but it is faster
66 var str = ""; 63 var str = "";
67 64
68 var cs = el.childNodes; 65 var cs = el.childNodes;
69 var l = cs.length; 66 var l = cs.length;
70 for (var i = 0; i < l; i++) { 67 for (var i = 0; i < l; i++) {
71 switch (cs[i].nodeType) { 68 switch (cs[i].nodeType) {
72 case 1: //ELEMENT_NODE 69 case 1: //ELEMENT_NODE
73 str += ts_getInnerText(cs[i]); 70 str += ts_getInnerText(cs[i]);
74 break; 71 break;
75 case 3://TEXT_NODE 72 case 3://TEXT_NODE
76 str += cs[i].nodeValue; 73 str += cs[i].nodeValue;
77 break; 74 break;
78 } 75 }
79 } 76 }
80 return str; 77 return str;
81} 78}
82 79
83function ts_resortTable(lnk,clid) { 80function ts_resortTable(lnk,clid) {
84 // get the span 81 // get the span
85 var span; 82 var span;
86 for (var ci=0;ci<lnk.childNodes.length;ci++) { 83 for (var ci=0;ci<lnk.childNodes.length;ci++) {
87 if (lnk.childNodes[ci].tagName && lnk.childNodes[ci].tagName.toLowerCase() == 'span') span = lnk.childNodes[ci]; 84 if (lnk.childNodes[ci].tagName && lnk.childNodes[ci].tagName.toLowerCase() == 'span') span = lnk.childNodes[ci];
88 } 85 }
89 var spantext = ts_getInnerText(span); 86 var spantext = ts_getInnerText(span);
90 var td = lnk.parentNode; 87 var td = lnk.parentNode;
91 var column = clid || td.cellIndex; 88 var column = clid || td.cellIndex;
92 var table = getParent(td,'TABLE'); 89 var table = getParent(td,'TABLE');
93 90
94 // Work out a type for the column 91 // Work out a type for the column
95 if (table.rows.length <= 1) return; 92 if (table.rows.length <= 1) return;
96 var itm = ts_getInnerText(table.rows[1].cells[column]); 93 var itm = ts_getInnerText(table.rows[1].cells[column]);
97 sortfn = ts_sort_caseinsensitive; 94 sortfn = ts_sort_caseinsensitive;
98 if (itm.match(/^\d\d[\/-]\d\d[\/-]\d\d\d\d$/)) { 95 if (itm.match(/^\d\d[\/-]\d\d[\/-]\d\d\d\d$/)) {
99 sortfn = ts_sort_date; 96 sortfn = ts_sort_date;
100 } 97 }
101 if (itm.match(/^\d\d[\/-]\d\d[\/-]\d\d$/)) { 98 if (itm.match(/^\d\d[\/-]\d\d[\/-]\d\d$/)) {
102 sortfn = ts_sort_date; 99 sortfn = ts_sort_date;
103 } 100 }
104 if (itm.match(/^[£$]/)) { 101 if (itm.match(/^[£$]/)) {
105 sortfn = ts_sort_currency; 102 sortfn = ts_sort_currency;
106 } 103 }
107 if (itm.match(/^[\d\.]+$/)) { 104 if (itm.match(/^[\d\.]+$/)) {
108 sortfn = ts_sort_numeric; 105 sortfn = ts_sort_numeric;
109 } 106 }
110 SORT_COLUMN_INDEX = column; 107 SORT_COLUMN_INDEX = column;
111 var firstRow = new Array(); 108 var firstRow = new Array();
112 var newRows = new Array(); 109 var newRows = new Array();
113 for (i=0;i<table.rows[0].length;i++) { 110 for (i=0;i<table.rows[0].length;i++) {
114 firstRow[i] = table.rows[0][i]; 111 firstRow[i] = table.rows[0][i];
115 } 112 }
116 113
117 for (j=1;j<table.rows.length;j++) { 114 for (j=1;j<table.rows.length;j++) {
118 newRows[j-1] = table.rows[j]; 115 newRows[j-1] = table.rows[j];
119 } 116 }
120 newRows.sort(sortfn); 117 newRows.sort(sortfn);
121 118
122 if (span.getAttribute("sortdir") == 'down') { 119 if (span.getAttribute("sortdir") == 'down') {
123 ARROW = '&nbsp;&nbsp;&uarr;'; 120 ARROW = '&nbsp;&nbsp;&uarr;';
124 newRows.reverse(); 121 newRows.reverse();
125 span.setAttribute('sortdir','up'); 122 span.setAttribute('sortdir','up');
126 } else { 123 } else {
127 ARROW = '&nbsp;&nbsp;&darr;'; 124 ARROW = '&nbsp;&nbsp;&darr;';
128 span.setAttribute('sortdir','down'); 125 span.setAttribute('sortdir','down');
129 } 126 }
130 127
131 // We appendChild rows that already exist to the tbody, so it moves them rather than creating new ones 128 // We appendChild rows that already exist to the tbody, so it moves them rather than creating new ones
132 // don't do sortbottom rows 129 // don't do sortbottom rows
133 for (i=0;i<newRows.length;i++) { 130 for (i=0;i<newRows.length;i++) {
134 if (!newRows[i].className || (newRows[i].className && (newRows[i].className.indexOf('sortbottom') == -1))) { 131 if (!newRows[i].className || (newRows[i].className && (newRows[i].className.indexOf('sortbottom') == -1))) {
135 table.tBodies[0].appendChild(newRows[i]); 132 table.tBodies[0].appendChild(newRows[i]);
136 } 133 }
137 } 134 }
138 // do sortbottom rows only 135 // do sortbottom rows only
139 for (i=0;i<newRows.length;i++) { 136 for (i=0;i<newRows.length;i++) {
140 if (newRows[i].className && (newRows[i].className.indexOf('sortbottom') != -1)) { 137 if (newRows[i].className && (newRows[i].className.indexOf('sortbottom') != -1)) {
141 table.tBodies[0].appendChild(newRows[i]); 138 table.tBodies[0].appendChild(newRows[i]);
142 } 139 }
143 } 140 }
144 141
145 // Delete any other arrows there may be showing 142 // Delete any other arrows there may be showing
146 var allspans = document.getElementsByTagName("span"); 143 var allspans = document.getElementsByTagName("span");
147 for (var ci=0;ci<allspans.length;ci++) { 144 for (var ci=0;ci<allspans.length;ci++) {
148 if (allspans[ci].className == 'sortarrow') { 145 if (allspans[ci].className == 'sortarrow') {
149 if (getParent(allspans[ci],"table") == getParent(lnk,"table")) { // in the same table as us? 146 if (getParent(allspans[ci],"table") == getParent(lnk,"table")) { // in the same table as us?
150 allspans[ci].innerHTML = '&nbsp;&nbsp;&nbsp;'; 147 allspans[ci].innerHTML = '&nbsp;&nbsp;&nbsp;';
151 } 148 }
152 } 149 }
diff --git a/frontend/beta/js/Clipperz/Set.js b/frontend/beta/js/Clipperz/Set.js
index 61e0769..7023888 100644
--- a/frontend/beta/js/Clipperz/Set.js
+++ b/frontend/beta/js/Clipperz/Set.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29 26
30if (typeof(Clipperz) == 'undefined') { 27if (typeof(Clipperz) == 'undefined') {
31 Clipperz = {}; 28 Clipperz = {};
32} 29}
33 30
34//############################################################################# 31//#############################################################################
35 32
36Clipperz.Set = function(args) { 33Clipperz.Set = function(args) {
37 args = args || {}; 34 args = args || {};
38 //MochiKit.Base.bindMethods(this); 35 //MochiKit.Base.bindMethods(this);
39 36
40 if (args.items != null) { 37 if (args.items != null) {
41 this._items = args.items.slice(); 38 this._items = args.items.slice();
42 } else { 39 } else {
43 this._items = []; 40 this._items = [];
44 } 41 }
45 42
46 return this; 43 return this;
47} 44}
48 45
49//============================================================================= 46//=============================================================================
50 47
51Clipperz.Set.prototype = MochiKit.Base.update(null, { 48Clipperz.Set.prototype = MochiKit.Base.update(null, {
52 49
53 //------------------------------------------------------------------------- 50 //-------------------------------------------------------------------------
54 51
55 'toString': function() { 52 'toString': function() {
56 return "Clipperz.Set"; 53 return "Clipperz.Set";
57 }, 54 },
58 55
59 //------------------------------------------------------------------------- 56 //-------------------------------------------------------------------------
60 57
61 'items': function() { 58 'items': function() {
62 return this._items; 59 return this._items;
63 }, 60 },
64 61
65 //------------------------------------------------------------------------- 62 //-------------------------------------------------------------------------
66 63
67 'popAnItem': function() { 64 'popAnItem': function() {
68 var result; 65 var result;
69 66
70 if (this.size() > 0) { 67 if (this.size() > 0) {
71 result = this.items().pop(); 68 result = this.items().pop();
72 } else { 69 } else {
73 result = null; 70 result = null;
74 } 71 }
75 72
76 return result; 73 return result;
77 }, 74 },
78 75
79 //------------------------------------------------------------------------- 76 //-------------------------------------------------------------------------
80 77
81 'allItems': function() { 78 'allItems': function() {
82 return this.items(); 79 return this.items();
83 }, 80 },
84 81
85 //------------------------------------------------------------------------- 82 //-------------------------------------------------------------------------
86 83
87 'contains': function(anItem) { 84 'contains': function(anItem) {
88 return (this.indexOf(anItem) != -1); 85 return (this.indexOf(anItem) != -1);
89 }, 86 },
90 87
91 //------------------------------------------------------------------------- 88 //-------------------------------------------------------------------------
92 89
93 'indexOf': function(anItem) { 90 'indexOf': function(anItem) {
94 varresult; 91 varresult;
95 vari, c; 92 vari, c;
96 93
97 result = -1; 94 result = -1;
98 95
99 c = this.items().length; 96 c = this.items().length;
100 for (i=0; (i<c) && (result == -1); i++) { 97 for (i=0; (i<c) && (result == -1); i++) {
101 if (this.items()[i] === anItem) { 98 if (this.items()[i] === anItem) {
102 result = i; 99 result = i;
103 } 100 }
104 } 101 }
105 102
106 return result; 103 return result;
107 }, 104 },
108 105
109 //------------------------------------------------------------------------- 106 //-------------------------------------------------------------------------
110 107
111 'add': function(anItem) { 108 'add': function(anItem) {
112 if (anItem.constructor == Array) { 109 if (anItem.constructor == Array) {
113 MochiKit.Base.map(MochiKit.Base.bind(this,add, this), anItem); 110 MochiKit.Base.map(MochiKit.Base.bind(this,add, this), anItem);
114 } else { 111 } else {
115 if (! this.contains(anItem)) { 112 if (! this.contains(anItem)) {
116 this.items().push(anItem); 113 this.items().push(anItem);
117 } 114 }
118 } 115 }
119 }, 116 },
120 117
121 //------------------------------------------------------------------------- 118 //-------------------------------------------------------------------------
122 119
123 'debug': function() { 120 'debug': function() {
124 vari, c; 121 vari, c;
125 122
126 result = -1; 123 result = -1;
127 124
128 c = this.items().length; 125 c = this.items().length;
129 for (i=0; i<c; i++) { 126 for (i=0; i<c; i++) {
130 alert("[" + i + "] " + this.items()[i].label); 127 alert("[" + i + "] " + this.items()[i].label);
131 } 128 }
132 }, 129 },
133 130
134 //------------------------------------------------------------------------- 131 //-------------------------------------------------------------------------
135 132
136 'remove': function(anItem) { 133 'remove': function(anItem) {
137 if (anItem.constructor == Array) { 134 if (anItem.constructor == Array) {
138 MochiKit.Base.map(MochiKit.Base.bind(this.remove, this), anItem); 135 MochiKit.Base.map(MochiKit.Base.bind(this.remove, this), anItem);
139 } else { 136 } else {
140 varitemIndex; 137 varitemIndex;
141 138
142 itemIndex = this.indexOf(anItem); 139 itemIndex = this.indexOf(anItem);
143 if (itemIndex != -1) { 140 if (itemIndex != -1) {
144 this.items().splice(itemIndex, 1); 141 this.items().splice(itemIndex, 1);
145 } 142 }
146 } 143 }
147 }, 144 },
148 145
149 //------------------------------------------------------------------------- 146 //-------------------------------------------------------------------------
150 147
151 'size': function() { 148 'size': function() {
152 return this.items().length; 149 return this.items().length;
diff --git a/frontend/beta/js/Clipperz/Signal.js b/frontend/beta/js/Clipperz/Signal.js
index 1d3c9eb..8ed37cc 100644
--- a/frontend/beta/js/Clipperz/Signal.js
+++ b/frontend/beta/js/Clipperz/Signal.js
@@ -1,71 +1,68 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.Signal) == 'undefined') { Clipperz.Signal = {}; } 27if (typeof(Clipperz.Signal) == 'undefined') { Clipperz.Signal = {}; }
31 28
32Clipperz.Signal.VERSION = "0.1"; 29Clipperz.Signal.VERSION = "0.1";
33Clipperz.Signal.NAME = "Clipperz.Signal"; 30Clipperz.Signal.NAME = "Clipperz.Signal";
34 31
35MochiKit.Base.update(Clipperz.Signal, { 32MochiKit.Base.update(Clipperz.Signal, {
36 33
37 //------------------------------------------------------------------------- 34 //-------------------------------------------------------------------------
38 35
39 '__repr__': function () { 36 '__repr__': function () {
40 return "[" + this.NAME + " " + this.VERSION + "]"; 37 return "[" + this.NAME + " " + this.VERSION + "]";
41 }, 38 },
42 39
43 //------------------------------------------------------------------------- 40 //-------------------------------------------------------------------------
44 41
45 'toString': function () { 42 'toString': function () {
46 return this.__repr__(); 43 return this.__repr__();
47 }, 44 },
48 45
49 //------------------------------------------------------------------------- 46 //-------------------------------------------------------------------------
50 47
51 'fireNativeEvent': function(element, eventName) { 48 'fireNativeEvent': function(element, eventName) {
52 if (element.fireEvent) { 49 if (element.fireEvent) {
53 // MSIE 50 // MSIE
54 element.fireEvent(eventName); 51 element.fireEvent(eventName);
55 } else { 52 } else {
56 // W3C 53 // W3C
57 var event; 54 var event;
58 55
59 event = document.createEvent("HTMLEvents"); 56 event = document.createEvent("HTMLEvents");
60 event.initEvent(eventName.replace(/^on/, ""), true, true); 57 event.initEvent(eventName.replace(/^on/, ""), true, true);
61 element.dispatchEvent(event); 58 element.dispatchEvent(event);
62 } 59 }
63 }, 60 },
64 61
65 //------------------------------------------------------------------------- 62 //-------------------------------------------------------------------------
66 __syntaxFix__: "syntax fix" 63 __syntaxFix__: "syntax fix"
67 64
68}); 65});
69 66
70 67
71 68
diff --git a/frontend/beta/js/Clipperz/Style.js b/frontend/beta/js/Clipperz/Style.js
index 9762b1c..1eecdd1 100644
--- a/frontend/beta/js/Clipperz/Style.js
+++ b/frontend/beta/js/Clipperz/Style.js
@@ -1,73 +1,70 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.Style) == 'undefined') { Clipperz.Style = {}; } 27if (typeof(Clipperz.Style) == 'undefined') { Clipperz.Style = {}; }
31 28
32Clipperz.Style.VERSION = "0.1"; 29Clipperz.Style.VERSION = "0.1";
33Clipperz.Style.NAME = "Clipperz.DOM"; 30Clipperz.Style.NAME = "Clipperz.DOM";
34 31
35MochiKit.Base.update(Clipperz.Style, { 32MochiKit.Base.update(Clipperz.Style, {
36 33
37 //------------------------------------------------------------------------- 34 //-------------------------------------------------------------------------
38 35
39 '__repr__': function () { 36 '__repr__': function () {
40 return "[" + this.NAME + " " + this.VERSION + "]"; 37 return "[" + this.NAME + " " + this.VERSION + "]";
41 }, 38 },
42 39
43 //------------------------------------------------------------------------- 40 //-------------------------------------------------------------------------
44 41
45 'toString': function () { 42 'toString': function () {
46 return this.__repr__(); 43 return this.__repr__();
47 }, 44 },
48 45
49 //------------------------------------------------------------------------- 46 //-------------------------------------------------------------------------
50 47
51 'applyZebraStylesToTable': function(aTable) { 48 'applyZebraStylesToTable': function(aTable) {
52 var tbody; 49 var tbody;
53 var tbodyRows; 50 var tbodyRows;
54 var i,c; 51 var i,c;
55 52
56 tbody = MochiKit.DOM.getFirstElementByTagAndClassName('tbody', null, aTable); 53 tbody = MochiKit.DOM.getFirstElementByTagAndClassName('tbody', null, aTable);
57 tbodyRows = tbody.childNodes; 54 tbodyRows = tbody.childNodes;
58 // tbodyRows = MochiKit.DOM.getElementsByTagAndClassName('tr', null, tbody) 55 // tbodyRows = MochiKit.DOM.getElementsByTagAndClassName('tr', null, tbody)
59 c = tbodyRows.length; 56 c = tbodyRows.length;
60 for (i=0; i<c; i++) { 57 for (i=0; i<c; i++) {
61 var element; 58 var element;
62 59
63 element = YAHOO.ext.Element.get(tbodyRows[i]); 60 element = YAHOO.ext.Element.get(tbodyRows[i]);
64 element.addClass(((i%2 == 0) ? "zebra_odd": "zebra_even")); 61 element.addClass(((i%2 == 0) ? "zebra_odd": "zebra_even"));
65 element.removeClass(((i%2 == 1) ? "zebra_odd": "zebra_even")); 62 element.removeClass(((i%2 == 1) ? "zebra_odd": "zebra_even"));
66 } 63 }
67 }, 64 },
68 65
69 //------------------------------------------------------------------------- 66 //-------------------------------------------------------------------------
70 __syntaxFix__: "syntax fix" 67 __syntaxFix__: "syntax fix"
71 68
72}); 69});
73 70
diff --git a/frontend/beta/js/Clipperz/YUI/Collapser.js b/frontend/beta/js/Clipperz/YUI/Collapser.js
index 5c0ac0f..b104877 100644
--- a/frontend/beta/js/Clipperz/YUI/Collapser.js
+++ b/frontend/beta/js/Clipperz/YUI/Collapser.js
@@ -1,73 +1,70 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.YUI) == 'undefined') { Clipperz.YUI = {}; } 27if (typeof(Clipperz.YUI) == 'undefined') { Clipperz.YUI = {}; }
31 28
32 //found on YUI-EXT forum (http://www.yui-ext.com/forum/viewtopic.php?t=683&highlight=accordion) 29 //found on YUI-EXT forum (http://www.yui-ext.com/forum/viewtopic.php?t=683&highlight=accordion)
33Clipperz.YUI.Collapser = function(clickEl, collapseEl, initiallyCollapsed) { 30Clipperz.YUI.Collapser = function(clickEl, collapseEl, initiallyCollapsed) {
34 this.clickEl = getEl(clickEl); 31 this.clickEl = getEl(clickEl);
35 this.collapseEl = getEl(collapseEl); 32 this.collapseEl = getEl(collapseEl);
36 this.clickEl.addClass('collapser-expanded'); 33 this.clickEl.addClass('collapser-expanded');
37 if (initiallyCollapsed == true) { 34 if (initiallyCollapsed == true) {
38 this.afterCollapse(); 35 this.afterCollapse();
39 } 36 }
40 this.clickEl.mon('click', function(){ 37 this.clickEl.mon('click', function(){
41 this.collapsed === true ? this.expand() : this.collapse(); 38 this.collapsed === true ? this.expand() : this.collapse();
42 }, this, true); 39 }, this, true);
43}; 40};
44 41
45Clipperz.YUI.Collapser.prototype = { 42Clipperz.YUI.Collapser.prototype = {
46 'collapse': function(){ 43 'collapse': function(){
47 this.collapseEl.clip(); 44 this.collapseEl.clip();
48 this.collapseEl.setHeight(1, true, .35, this.afterCollapse.createDelegate(this), YAHOO.util.Easing.easeOut); 45 this.collapseEl.setHeight(1, true, .35, this.afterCollapse.createDelegate(this), YAHOO.util.Easing.easeOut);
49 this.clickEl.replaceClass('collapser-expanded','collapser-collapsed'); 46 this.clickEl.replaceClass('collapser-expanded','collapser-collapsed');
50 }, 47 },
51 48
52 'afterCollapse': function(){ 49 'afterCollapse': function(){
53 this.collapsed = true; 50 this.collapsed = true;
54 this.collapseEl.setDisplayed(false); 51 this.collapseEl.setDisplayed(false);
55 this.clickEl.replaceClass('collapser-expanded','collapser-collapsed'); 52 this.clickEl.replaceClass('collapser-expanded','collapser-collapsed');
56 }, 53 },
57 54
58 'expand': function(){ 55 'expand': function(){
59 this.collapseEl.setDisplayed(true); 56 this.collapseEl.setDisplayed(true);
60 this.collapseEl.autoHeight(true, .35, this.afterExpand.createDelegate(this), YAHOO.util.Easing.easeOut); 57 this.collapseEl.autoHeight(true, .35, this.afterExpand.createDelegate(this), YAHOO.util.Easing.easeOut);
61 this.clickEl.replaceClass('collapser-collapsed','collapser-expanded'); 58 this.clickEl.replaceClass('collapser-collapsed','collapser-expanded');
62 }, 59 },
63 60
64 'afterExpand': function(){ 61 'afterExpand': function(){
65 this.collapsed = false; 62 this.collapsed = false;
66 this.collapseEl.unclip(); 63 this.collapseEl.unclip();
67 this.collapseEl.setStyle('height', ''); 64 this.collapseEl.setStyle('height', '');
68 this.clickEl.replaceClass('collapser-collapsed','collapser-expanded'); 65 this.clickEl.replaceClass('collapser-collapsed','collapser-expanded');
69 }, 66 },
70 67
71 //----------------------------------------------------- 68 //-----------------------------------------------------
72 __syntaxFix__: '__syntaxFix__' 69 __syntaxFix__: '__syntaxFix__'
73}; 70};
diff --git a/frontend/beta/js/Clipperz/YUI/DomHelper.js b/frontend/beta/js/Clipperz/YUI/DomHelper.js
index 4f8acde..05edc49 100644
--- a/frontend/beta/js/Clipperz/YUI/DomHelper.js
+++ b/frontend/beta/js/Clipperz/YUI/DomHelper.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.ext) == 'undefined') { Clipperz.ext = {}; } 27if (typeof(Clipperz.ext) == 'undefined') { Clipperz.ext = {}; }
31 28
32/** 29/**
33 * @class Clipperz.YUI.DomHelper 30 * @class Clipperz.YUI.DomHelper
34 * Utility class for working with DOM and/or Templates. It transparently supports using HTML fragments or DOM. 31 * Utility class for working with DOM and/or Templates. It transparently supports using HTML fragments or DOM.
35 * For more information see <a href="http://www.jackslocum.com/yui/2006/10/06/domhelper-create-elements-using-dom-html-fragments-or-templates/">this blog post with examples</a>. 32 * For more information see <a href="http://www.jackslocum.com/yui/2006/10/06/domhelper-create-elements-using-dom-html-fragments-or-templates/">this blog post with examples</a>.
36 * @singleton 33 * @singleton
37 */ 34 */
38Clipperz.YUI.DomHelper = new function(){ 35Clipperz.YUI.DomHelper = new function(){
39 /**@private*/ 36 /**@private*/
40 var d = document; 37 var d = document;
41 var tempTableEl = null; 38 var tempTableEl = null;
42 /** True to force the use of DOM instead of html fragments @type Boolean */ 39 /** True to force the use of DOM instead of html fragments @type Boolean */
43 this.useDom = false; 40 this.useDom = false;
44 var emptyTags = /^(?:base|basefont|br|frame|hr|img|input|isindex|link|meta|nextid|range|spacer|wbr|audioscope|area|param|keygen|col|limittext|spot|tab|over|right|left|choose|atop|of)$/i; 41 var emptyTags = /^(?:base|basefont|br|frame|hr|img|input|isindex|link|meta|nextid|range|spacer|wbr|audioscope|area|param|keygen|col|limittext|spot|tab|over|right|left|choose|atop|of)$/i;
45 /** 42 /**
46 * Applies a style specification to an element 43 * Applies a style specification to an element
47 * @param {String/HTMLElement} el The element to apply styles to 44 * @param {String/HTMLElement} el The element to apply styles to
48 * @param {String/Object/Function} styles A style specification string eg "width:100px", or object in the form {width:"100px"}, or 45 * @param {String/Object/Function} styles A style specification string eg "width:100px", or object in the form {width:"100px"}, or
49 * a function which returns such a specification. 46 * a function which returns such a specification.
50 */ 47 */
51 this.applyStyles = function(el, styles){ 48 this.applyStyles = function(el, styles){
52 if(styles){ 49 if(styles){
53 var D = YAHOO.util.Dom; 50 var D = YAHOO.util.Dom;
54 if (typeof styles == "string"){ 51 if (typeof styles == "string"){
55 var re = /\s?([a-z\-]*)\:([^;]*);?/gi; 52 var re = /\s?([a-z\-]*)\:([^;]*);?/gi;
56 var matches; 53 var matches;
57 while ((matches = re.exec(styles)) != null){ 54 while ((matches = re.exec(styles)) != null){
58 D.setStyle(el, matches[1], matches[2]); 55 D.setStyle(el, matches[1], matches[2]);
59 } 56 }
60 }else if (typeof styles == "object"){ 57 }else if (typeof styles == "object"){
61 for (var style in styles){ 58 for (var style in styles){
62 D.setStyle(el, style, styles[style]); 59 D.setStyle(el, style, styles[style]);
63 } 60 }
64 }else if (typeof styles == "function"){ 61 }else if (typeof styles == "function"){
65 Clipperz.YUI.DomHelper.applyStyles(el, styles.call()); 62 Clipperz.YUI.DomHelper.applyStyles(el, styles.call());
66 } 63 }
67 } 64 }
68 }; 65 };
69 66
70 // build as innerHTML where available 67 // build as innerHTML where available
71 /** @ignore */ 68 /** @ignore */
72 var createHtml = function(o){ 69 var createHtml = function(o){
73 var b = ''; 70 var b = '';
74 71
75 if(typeof(o['html']) != 'undefined') { 72 if(typeof(o['html']) != 'undefined') {
76 o['html'] = Clipperz.Base.sanitizeString(o['html']); 73 o['html'] = Clipperz.Base.sanitizeString(o['html']);
77 } else if (typeof(o['htmlString']) != 'undefined') { 74 } else if (typeof(o['htmlString']) != 'undefined') {
78 o['html'] = o['htmlString']; 75 o['html'] = o['htmlString'];
79 delete o.htmlString; 76 delete o.htmlString;
80 } 77 }
81 78
82 b += '<' + o.tag; 79 b += '<' + o.tag;
83 for(var attr in o){ 80 for(var attr in o){
84 if(attr == 'tag' || attr == 'children' || attr == 'html' || typeof o[attr] == 'function') continue; 81 if(attr == 'tag' || attr == 'children' || attr == 'html' || typeof o[attr] == 'function') continue;
85 if(attr == 'style'){ 82 if(attr == 'style'){
86 var s = o['style']; 83 var s = o['style'];
87 if(typeof s == 'function'){ 84 if(typeof s == 'function'){
88 s = s.call(); 85 s = s.call();
89 } 86 }
90 if(typeof s == 'string'){ 87 if(typeof s == 'string'){
91 b += ' style="' + s + '"'; 88 b += ' style="' + s + '"';
92 }else if(typeof s == 'object'){ 89 }else if(typeof s == 'object'){
93 b += ' style="'; 90 b += ' style="';
94 for(var key in s){ 91 for(var key in s){
95 if(typeof s[key] != 'function'){ 92 if(typeof s[key] != 'function'){
96 b += key + ':' + s[key] + ';'; 93 b += key + ':' + s[key] + ';';
97 } 94 }
98 } 95 }
99 b += '"'; 96 b += '"';
100 } 97 }
101 }else{ 98 }else{
102 if(attr == 'cls'){ 99 if(attr == 'cls'){
103 b += ' class="' + o['cls'] + '"'; 100 b += ' class="' + o['cls'] + '"';
104 }else if(attr == 'htmlFor'){ 101 }else if(attr == 'htmlFor'){
105 b += ' for="' + o['htmlFor'] + '"'; 102 b += ' for="' + o['htmlFor'] + '"';
106 }else{ 103 }else{
107 b += ' ' + attr + '="' + o[attr] + '"'; 104 b += ' ' + attr + '="' + o[attr] + '"';
108 } 105 }
109 } 106 }
110 } 107 }
111 if(emptyTags.test(o.tag)){ 108 if(emptyTags.test(o.tag)){
112 b += ' />'; 109 b += ' />';
113 }else{ 110 }else{
114 b += '>'; 111 b += '>';
115 if(o.children){ 112 if(o.children){
116 for(var i = 0, len = o.children.length; i < len; i++) { 113 for(var i = 0, len = o.children.length; i < len; i++) {
117 b += createHtml(o.children[i], b); 114 b += createHtml(o.children[i], b);
118 } 115 }
119 } 116 }
120 if(o.html){ 117 if(o.html){
121 b += o.html; 118 b += o.html;
122 } 119 }
123 b += '</' + o.tag + '>'; 120 b += '</' + o.tag + '>';
124 } 121 }
125 return b; 122 return b;
126 } 123 }
127 124
128 // build as dom 125 // build as dom
129 /** @ignore */ 126 /** @ignore */
130 var createDom = function(o, parentNode){ 127 var createDom = function(o, parentNode){
131 var el = d.createElement(o.tag); 128 var el = d.createElement(o.tag);
132 var useSet = el.setAttribute ? true : false; // In IE some elements don't have setAttribute 129 var useSet = el.setAttribute ? true : false; // In IE some elements don't have setAttribute
133 for(var attr in o){ 130 for(var attr in o){
134 if(attr == 'tag' || attr == 'children' || attr == 'html' || attr == 'style' || typeof o[attr] == 'function') continue; 131 if(attr == 'tag' || attr == 'children' || attr == 'html' || attr == 'style' || typeof o[attr] == 'function') continue;
135 if(attr=='cls'){ 132 if(attr=='cls'){
136 el.className = o['cls']; 133 el.className = o['cls'];
137 }else{ 134 }else{
138 if(useSet) el.setAttribute(attr, o[attr]); 135 if(useSet) el.setAttribute(attr, o[attr]);
139 else el[attr] = o[attr]; 136 else el[attr] = o[attr];
140 } 137 }
141 } 138 }
142 Clipperz.YUI.DomHelper.applyStyles(el, o.style); 139 Clipperz.YUI.DomHelper.applyStyles(el, o.style);
143 if(o.children){ 140 if(o.children){
144 for(var i = 0, len = o.children.length; i < len; i++) { 141 for(var i = 0, len = o.children.length; i < len; i++) {
145 createDom(o.children[i], el); 142 createDom(o.children[i], el);
146 } 143 }
147 } 144 }
148 if(o.html){ 145 if(o.html){
149 el.innerHTML = o.html; 146 el.innerHTML = o.html;
150 } 147 }
151 if(parentNode){ 148 if(parentNode){
152 parentNode.appendChild(el); 149 parentNode.appendChild(el);
diff --git a/frontend/beta/js/Clipperz/YUI/DomQuery.js b/frontend/beta/js/Clipperz/YUI/DomQuery.js
index 84aac08..4ad4193 100644
--- a/frontend/beta/js/Clipperz/YUI/DomQuery.js
+++ b/frontend/beta/js/Clipperz/YUI/DomQuery.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29/* 26/*
30 * yui-ext 0.40 27 * yui-ext 0.40
31 * Copyright(c) 2006, Jack Slocum. 28 * Copyright(c) 2006, Jack Slocum.
32 */ 29 */
33 30
34/** 31/**
35 * @class Ext.DomQuery 32 * @class Ext.DomQuery
36 * Provides high performance selector/xpath processing by compiling queries into reusable functions. 33 * Provides high performance selector/xpath processing by compiling queries into reusable functions.
37 * New pseudo classes and matchers can be plugged. It works on HTML and XML documents (if a content node is passed in). 34 * New pseudo classes and matchers can be plugged. It works on HTML and XML documents (if a content node is passed in).
38 * @singleton 35 * @singleton
39 */ 36 */
40Ext.DomQuery = function(){ 37Ext.DomQuery = function(){
41 var cache = {}, simpleCache = {}, valueCache = {}; 38 var cache = {}, simpleCache = {}, valueCache = {};
42 var nonSpace = /\S/; 39 var nonSpace = /\S/;
43 var trimRe = /^\s*(.*?)\s*$/; 40 var trimRe = /^\s*(.*?)\s*$/;
44 var tplRe = /\{(\d+)\}/g; 41 var tplRe = /\{(\d+)\}/g;
45 var modeRe = /^(\s?[\/>]\s?|\s|$)/; 42 var modeRe = /^(\s?[\/>]\s?|\s|$)/;
46 var clsRes = {}; 43 var clsRes = {};
47 44
48 function child(p, index){ 45 function child(p, index){
49 var i = 0; 46 var i = 0;
50 var n = p.firstChild; 47 var n = p.firstChild;
51 while(n){ 48 while(n){
52 if(n.nodeType == 1){ 49 if(n.nodeType == 1){
53 i++; 50 i++;
54 if(i == index){ 51 if(i == index){
55 return n; 52 return n;
56 } 53 }
57 } 54 }
58 n = n.nextSibling; 55 n = n.nextSibling;
59 } 56 }
60 return null; 57 return null;
61 }; 58 };
62 59
63 function next(d){ 60 function next(d){
64 var n = d.nextSibling; 61 var n = d.nextSibling;
65 while(n && n.nodeType != 1){ 62 while(n && n.nodeType != 1){
66 n = n.nextSibling; 63 n = n.nextSibling;
67 } 64 }
68 return n; 65 return n;
69 }; 66 };
70 67
71 function prev(d){ 68 function prev(d){
72 var n = d.previousSibling; 69 var n = d.previousSibling;
73 while(n && n.nodeType != 1){ 70 while(n && n.nodeType != 1){
74 n = n.previousSibling; 71 n = n.previousSibling;
75 } 72 }
76 return n; 73 return n;
77 }; 74 };
78 75
79 function clean(d){ 76 function clean(d){
80 var n = d.firstChild, ni = -1; 77 var n = d.firstChild, ni = -1;
81 while(n){ 78 while(n){
82 var nx = n.nextSibling; 79 var nx = n.nextSibling;
83 if(n.nodeType == 3 && !nonSpace.test(n.nodeValue)){ 80 if(n.nodeType == 3 && !nonSpace.test(n.nodeValue)){
84 d.removeChild(n); 81 d.removeChild(n);
85 }else{ 82 }else{
86 n.nodeIndex = ++ni; 83 n.nodeIndex = ++ni;
87 } 84 }
88 n = nx; 85 n = nx;
89 } 86 }
90 return this; 87 return this;
91 }; 88 };
92 89
93 function byClassName(c, a, v){ 90 function byClassName(c, a, v){
94 if(!v){ 91 if(!v){
95 return c; 92 return c;
96 } 93 }
97 var re = clsRes[v]; 94 var re = clsRes[v];
98 if(!re){ 95 if(!re){
99 re = new RegExp('(?:^|\\s)(?:' + v + ')(?:\\s|$)'); 96 re = new RegExp('(?:^|\\s)(?:' + v + ')(?:\\s|$)');
100 clsRes[v] = re; 97 clsRes[v] = re;
101 } 98 }
102 var r = []; 99 var r = [];
103 for(var i = 0, ci; ci = c[i]; i++){ 100 for(var i = 0, ci; ci = c[i]; i++){
104 if(re.test(ci.className)){ 101 if(re.test(ci.className)){
105 r[r.length] = ci; 102 r[r.length] = ci;
106 } 103 }
107 } 104 }
108 return r; 105 return r;
109 }; 106 };
110 107
111 function convert(c){ 108 function convert(c){
112 if(c.slice){ 109 if(c.slice){
113 return c; 110 return c;
114 } 111 }
115 var r = []; 112 var r = [];
116 for(var i = 0, l = c.length; i < l; i++){ 113 for(var i = 0, l = c.length; i < l; i++){
117 r[r.length] = c[i]; 114 r[r.length] = c[i];
118 } 115 }
119 return r; 116 return r;
120 }; 117 };
121 118
122 function attrValue(n, attr){ 119 function attrValue(n, attr){
123 if(!n.tagName && typeof n.length != 'undefined'){ 120 if(!n.tagName && typeof n.length != 'undefined'){
124 n = n[0]; 121 n = n[0];
125 } 122 }
126 if(!n){ 123 if(!n){
127 return null; 124 return null;
128 } 125 }
129 if(attr == 'for'){ 126 if(attr == 'for'){
130 return n.htmlFor; 127 return n.htmlFor;
131 } 128 }
132 if(attr == 'class' || attr == 'className'){ 129 if(attr == 'class' || attr == 'className'){
133 return n.className; 130 return n.className;
134 } 131 }
135 return n.getAttribute(attr) || n[attr]; 132 return n.getAttribute(attr) || n[attr];
136 133
137 }; 134 };
138 135
139 function getNodes(ns, mode, tagName){ 136 function getNodes(ns, mode, tagName){
140 var result = [], cs; 137 var result = [], cs;
141 if(!ns){ 138 if(!ns){
142 return result; 139 return result;
143 } 140 }
144 mode = mode ? mode.replace(trimRe, '$1') : ''; 141 mode = mode ? mode.replace(trimRe, '$1') : '';
145 tagName = tagName || '*'; 142 tagName = tagName || '*';
146 if(ns.tagName || ns == document){ 143 if(ns.tagName || ns == document){
147 ns = [ns]; 144 ns = [ns];
148 } 145 }
149 if(mode != '/' && mode != '>'){ 146 if(mode != '/' && mode != '>'){
150 for(var i = 0, ni; ni = ns[i]; i++){ 147 for(var i = 0, ni; ni = ns[i]; i++){
151 cs = ni.getElementsByTagName(tagName); 148 cs = ni.getElementsByTagName(tagName);
152 result = concat(result, cs); 149 result = concat(result, cs);
diff --git a/frontend/beta/js/Clipperz/YUI/Drawer.js b/frontend/beta/js/Clipperz/YUI/Drawer.js
index 394912e..508bfe5 100644
--- a/frontend/beta/js/Clipperz/YUI/Drawer.js
+++ b/frontend/beta/js/Clipperz/YUI/Drawer.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.YUI) == 'undefined') { Clipperz.YUI = {}; } 27if (typeof(Clipperz.YUI) == 'undefined') { Clipperz.YUI = {}; }
31 28
32 29
33Clipperz.YUI.Drawer = function(anElement, aRegion) { 30Clipperz.YUI.Drawer = function(anElement, aRegion) {
34 this._status = 'slideIn'; 31 this._status = 'slideIn';
35 32
36 this._element = YAHOO.ext.Element.get(anElement); 33 this._element = YAHOO.ext.Element.get(anElement);
37 this._region = aRegion || null; 34 this._region = aRegion || null;
38 35
39 this._collapsedElement = this.element().getChildrenByClassName("drawer-collapsed")[0]; 36 this._collapsedElement = this.element().getChildrenByClassName("drawer-collapsed")[0];
40 this._contentElement = this.element().getChildrenByClassName("drawer-content")[0]; 37 this._contentElement = this.element().getChildrenByClassName("drawer-content")[0];
41 38
42 39
43 this._wholeCollapedElement = this.enhanceCollapsedElement(); 40 this._wholeCollapedElement = this.enhanceCollapsedElement();
44 this._wholeCollapedElement.setWidth(this.region().element().getWidth()); 41 this._wholeCollapedElement.setWidth(this.region().element().getWidth());
45 this._wholeCollapedElement.setHeight(this.region().element().getHeight()); 42 this._wholeCollapedElement.setHeight(this.region().element().getHeight());
46 43
47 this._contentWrapper = this.enhanceContentElement(); 44 this._contentWrapper = this.enhanceContentElement();
48 this._contentElementActor = new YAHOO.ext.Actor(this.contentWrapper().dom); 45 this._contentElementActor = new YAHOO.ext.Actor(this.contentWrapper().dom);
49 this.contentElementActor().hide(); 46 this.contentElementActor().hide();
50 47
51 this._contentWidth = 200; 48 this._contentWidth = 200;
52}; 49};
53 50
54YAHOO.extendX(Clipperz.YUI.Drawer, YAHOO.ext.util.Observable, { 51YAHOO.extendX(Clipperz.YUI.Drawer, YAHOO.ext.util.Observable, {
55 52
56 'element': function() { 53 'element': function() {
57 return this._element; 54 return this._element;
58 }, 55 },
59 56
60 //----------------------------------------------------- 57 //-----------------------------------------------------
61 58
62 'status': function() { 59 'status': function() {
63 return this._status; 60 return this._status;
64 }, 61 },
65 62
66 'setStatus': function(aValue) { 63 'setStatus': function(aValue) {
67 this._status = aValue; 64 this._status = aValue;
68 }, 65 },
69 66
70 //----------------------------------------------------- 67 //-----------------------------------------------------
71 68
72 'collapsedElement': function() { 69 'collapsedElement': function() {
73 return this._collapsedElement; 70 return this._collapsedElement;
74 }, 71 },
75 72
76 //----------------------------------------------------- 73 //-----------------------------------------------------
77 74
78 'contentElement': function() { 75 'contentElement': function() {
79 return this._contentElement; 76 return this._contentElement;
80 }, 77 },
81 78
82 //----------------------------------------------------- 79 //-----------------------------------------------------
83 80
84 'contentElementActor': function() { 81 'contentElementActor': function() {
85 return this._contentElementActor; 82 return this._contentElementActor;
86 }, 83 },
87 84
88 //----------------------------------------------------- 85 //-----------------------------------------------------
89 86
90 'contentWrapper': function() { 87 'contentWrapper': function() {
91 return this._contentWrapper; 88 return this._contentWrapper;
92 }, 89 },
93 90
94 //----------------------------------------------------- 91 //-----------------------------------------------------
95 92
96 'contentWidth': function() { 93 'contentWidth': function() {
97 return this._contentWidth; 94 return this._contentWidth;
98 }, 95 },
99 96
100 //----------------------------------------------------- 97 //-----------------------------------------------------
101 98
102 'region': function() { 99 'region': function() {
103 return this._region; 100 return this._region;
104 }, 101 },
105 102
106 //----------------------------------------------------- 103 //-----------------------------------------------------
107 104
108 'enhanceCollapsedElement': function() { 105 'enhanceCollapsedElement': function() {
109 varwrapper; 106 varwrapper;
110 var link; 107 var link;
111 108
112 wrapper = this.collapsedElement().wrap({tag:'div', cls:'drawer-collapsedElement-wrapper', children:[ 109 wrapper = this.collapsedElement().wrap({tag:'div', cls:'drawer-collapsedElement-wrapper', children:[
113 {tag:'div', cls:'drawer-pin-button', children:[ 110 {tag:'div', cls:'drawer-pin-button', children:[
114 {tag:'a', cls:'drawer-pin-button', href:"#", children:[ 111 {tag:'a', cls:'drawer-pin-button', href:"#", children:[
115 {tag:'img', src:'./images/directLogins/drawer/mm-expand.gif'} 112 {tag:'img', src:'./images/directLogins/drawer/mm-expand.gif'}
116 ]} 113 ]}
117 ]} 114 ]}
118 ]}); 115 ]});
119 116
120 link = wrapper.getChildrenByClassName('drawer-pin-button', 'a')[0]; 117 link = wrapper.getChildrenByClassName('drawer-pin-button', 'a')[0];
121 MochiKit.Signal.connect(link.dom, 'onclick', this, 'pinDrawer'); 118 MochiKit.Signal.connect(link.dom, 'onclick', this, 'pinDrawer');
122 119
123 this.collapsedElement().setHeight('100%'); 120 this.collapsedElement().setHeight('100%');
124 this.collapsedElement().setStyle('cursor', 'pointer'); 121 this.collapsedElement().setStyle('cursor', 'pointer');
125 MochiKit.Signal.connect(this.collapsedElement().dom, 'onclick', this, 'showDrawer'); 122 MochiKit.Signal.connect(this.collapsedElement().dom, 'onclick', this, 'showDrawer');
126 123
127 return wrapper; 124 return wrapper;
128 }, 125 },
129 126
130 //----------------------------------------------------- 127 //-----------------------------------------------------
131 128
132 'enhanceContentElement': function() { 129 'enhanceContentElement': function() {
133 var wrapper; 130 var wrapper;
134 131
135 wrapper = this.contentElement().wrap({tag:'div', cls:'drawer-content-wrapper', children:[ 132 wrapper = this.contentElement().wrap({tag:'div', cls:'drawer-content-wrapper', children:[
136 {tag:'div', cls:'drawer-content-header', html:'direct login', style:'width:100%;'} 133 {tag:'div', cls:'drawer-content-header', html:'direct login', style:'width:100%;'}
137 ]}); 134 ]});
138 135
139 MochiKit.Signal.connect(wrapper.dom, 'onclick', this, 'hideDrawer'); 136 MochiKit.Signal.connect(wrapper.dom, 'onclick', this, 'hideDrawer');
140 return wrapper; 137 return wrapper;
141 }, 138 },
142 139
143 //----------------------------------------------------- 140 //-----------------------------------------------------
144 141
145 'pinDrawer': function() { 142 'pinDrawer': function() {
146 alert("pin drawer"); 143 alert("pin drawer");
147 }, 144 },
148 145
149 //----------------------------------------------------- 146 //-----------------------------------------------------
150 147
151 'showDrawer': function() { 148 'showDrawer': function() {
152 if (this.status() == 'slideIn') { 149 if (this.status() == 'slideIn') {
diff --git a/frontend/beta/js/Clipperz/YUI/IBLayoutManager.js b/frontend/beta/js/Clipperz/YUI/IBLayoutManager.js
index 626b699..6e2138e 100644
--- a/frontend/beta/js/Clipperz/YUI/IBLayoutManager.js
+++ b/frontend/beta/js/Clipperz/YUI/IBLayoutManager.js
@@ -1,114 +1,111 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.YUI) == 'undefined') { Clipperz.YUI = {}; } 27if (typeof(Clipperz.YUI) == 'undefined') { Clipperz.YUI = {}; }
31 28
32 29
33Clipperz.YUI.IBLayoutManager = function(container, config) { 30Clipperz.YUI.IBLayoutManager = function(container, config) {
34 var regionName; 31 var regionName;
35 varelement; 32 varelement;
36 33
37 config = config || {}; 34 config = config || {};
38 35
39 Clipperz.YUI.IBLayoutManager.superclass.constructor.call(this, container); 36 Clipperz.YUI.IBLayoutManager.superclass.constructor.call(this, container);
40 this.hideOnLayout = config.hideOnLayout || false; 37 this.hideOnLayout = config.hideOnLayout || false;
41 38
42 element = YAHOO.ext.Element.get(container); 39 element = YAHOO.ext.Element.get(container);
43 element.setStyle('position', 'absolute'); 40 element.setStyle('position', 'absolute');
44 element.setStyle('overflow', 'hidden'); 41 element.setStyle('overflow', 'hidden');
45 42
46 for (regionName in config.regions) { 43 for (regionName in config.regions) {
47 var newRegion; 44 var newRegion;
48 45
49 newRegion = new new Clipperz.YUI.IBLayoutRegion(this, regionName, config.regions[regionName]); 46 newRegion = new new Clipperz.YUI.IBLayoutRegion(this, regionName, config.regions[regionName]);
50 this.addRegion(regionName, newRegion); 47 this.addRegion(regionName, newRegion);
51 } 48 }
52 49
53 this.layout(); 50 this.layout();
54}; 51};
55 52
56YAHOO.extendX(Clipperz.YUI.IBLayoutManager, YAHOO.ext.LayoutManager, { 53YAHOO.extendX(Clipperz.YUI.IBLayoutManager, YAHOO.ext.LayoutManager, {
57 54
58 'toString': function() { 55 'toString': function() {
59 return "IBLayoutManager (" + this.el.id + ")"; 56 return "IBLayoutManager (" + this.el.id + ")";
60 }, 57 },
61 58
62 //----------------------------------------------------- 59 //-----------------------------------------------------
63 60
64 'add': function(aName, aPanel) { 61 'add': function(aName, aPanel) {
65 var regionName; 62 var regionName;
66 63
67 regionName = aName.toLowerCase(); 64 regionName = aName.toLowerCase();
68 return this.regions[regionName].add(aPanel); 65 return this.regions[regionName].add(aPanel);
69 }, 66 },
70 67
71 //----------------------------------------------------- 68 //-----------------------------------------------------
72 69
73 'addRegion': function(aRegion) { 70 'addRegion': function(aRegion) {
74 var regionName; 71 var regionName;
75 72
76 regionName = aRegion.name().toLowerCase(); 73 regionName = aRegion.name().toLowerCase();
77 if (!this.regions[regionName]) { 74 if (!this.regions[regionName]) {
78//MochiKit.Logging.logDebug("--- adding region with name: " + aRegion.name()); 75//MochiKit.Logging.logDebug("--- adding region with name: " + aRegion.name());
79 this.regions[regionName] = aRegion; 76 this.regions[regionName] = aRegion;
80 } else { 77 } else {
81 // ???? 78 // ????
82 } 79 }
83 80
84 return aRegion; 81 return aRegion;
85 }, 82 },
86 83
87 //----------------------------------------------------- 84 //-----------------------------------------------------
88 85
89 'getRegion': function(target){ 86 'getRegion': function(target){
90 return this.regions[target.toLowerCase()]; 87 return this.regions[target.toLowerCase()];
91 }, 88 },
92 89
93 //----------------------------------------------------- 90 //-----------------------------------------------------
94 91
95 'layout': function(){ 92 'layout': function(){
96 varregion; 93 varregion;
97 94
98//MochiKit.Logging.logDebug(">>> IBLayoutManager.layout - regions: " + Clipperz.Base.serializeJSON(MochiKit.Base.keys(this.regions))); 95//MochiKit.Logging.logDebug(">>> IBLayoutManager.layout - regions: " + Clipperz.Base.serializeJSON(MochiKit.Base.keys(this.regions)));
99 for (region in this.regions) { 96 for (region in this.regions) {
100//MochiKit.Logging.logDebug("--- IBLayoutManager.layout - region: " + region); 97//MochiKit.Logging.logDebug("--- IBLayoutManager.layout - region: " + region);
101 this.regions[region].layout(); 98 this.regions[region].layout();
102 } 99 }
103//MochiKit.Logging.logDebug("<<< IBLayoutManager.layout"); 100//MochiKit.Logging.logDebug("<<< IBLayoutManager.layout");
104 }, 101 },
105 102
106 //----------------------------------------------------- 103 //-----------------------------------------------------
107 104
108 'getSize': function() { 105 'getSize': function() {
109 return this.el.getSize(); 106 return this.el.getSize();
110 }, 107 },
111 108
112 //----------------------------------------------------- 109 //-----------------------------------------------------
113 __syntaxFix__: '__syntaxFix__' 110 __syntaxFix__: '__syntaxFix__'
114}); 111});
diff --git a/frontend/beta/js/Clipperz/YUI/IBLayoutRegion.js b/frontend/beta/js/Clipperz/YUI/IBLayoutRegion.js
index 2fd4377..f8e0cb1 100644
--- a/frontend/beta/js/Clipperz/YUI/IBLayoutRegion.js
+++ b/frontend/beta/js/Clipperz/YUI/IBLayoutRegion.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 26if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
30if (typeof(Clipperz.YUI) == 'undefined') { Clipperz.YUI = {}; } 27if (typeof(Clipperz.YUI) == 'undefined') { Clipperz.YUI = {}; }
31 28
32 29
33Clipperz.YUI.IBLayoutRegion = function(aManager, aName, aConfig) { 30Clipperz.YUI.IBLayoutRegion = function(aManager, aName, aConfig) {
34 this._configuration = aConfig; 31 this._configuration = aConfig;
35 32
36 //Clipperz.YUI.IBLayoutRegion.superclass.constructor.call(); 33 //Clipperz.YUI.IBLayoutRegion.superclass.constructor.call();
37 Clipperz.YUI.IBLayoutRegion.superclass.constructor.call(this, aManager, aConfig, aName); 34 Clipperz.YUI.IBLayoutRegion.superclass.constructor.call(this, aManager, aConfig, aName);
38}; 35};
39 36
40YAHOO.extendX(Clipperz.YUI.IBLayoutRegion, YAHOO.ext.LayoutRegion, { 37YAHOO.extendX(Clipperz.YUI.IBLayoutRegion, YAHOO.ext.LayoutRegion, {
41 38
42 'toString': function() { 39 'toString': function() {
43 return "IBLayoutRegion (" + this.name() + ")"; 40 return "IBLayoutRegion (" + this.name() + ")";
44 }, 41 },
45 42
46 //----------------------------------------------------- 43 //-----------------------------------------------------
47 44
48 'name': function() { 45 'name': function() {
49 return this.position; 46 return this.position;
50 }, 47 },
51 48
52 //----------------------------------------------------- 49 //-----------------------------------------------------
53 50
54 'manager': function() { 51 'manager': function() {
55 return this.mgr; 52 return this.mgr;
56 }, 53 },
57 54
58 'configuration': function() { 55 'configuration': function() {
59 return this._configuration; 56 return this._configuration;
60 }, 57 },
61 58
62 //----------------------------------------------------- 59 //-----------------------------------------------------
63 60
64 'getAttributeValue': function(anAttribute) { 61 'getAttributeValue': function(anAttribute) {
65 var result; 62 var result;
66 63
67 switch(anAttribute) { 64 switch(anAttribute) {
68 case "top": 65 case "top":
69 result = this.element().getTop(); 66 result = this.element().getTop();
70 break; 67 break;
71 case "left": 68 case "left":
72 result = this.element().getLeft(); 69 result = this.element().getLeft();
73 break; 70 break;
74 case "bottom": 71 case "bottom":
75 result = this.element().getBottom(); 72 result = this.element().getBottom();
76 break; 73 break;
77 case "right": 74 case "right":
78 result = this.element().getRight(); 75 result = this.element().getRight();
79 break; 76 break;
80 case "height": 77 case "height":
81 result = this.element().getHeight(); 78 result = this.element().getHeight();
82 break; 79 break;
83 case "width": 80 case "width":
84 result = this.element().getWidth(); 81 result = this.element().getWidth();
85 break; 82 break;
86 } 83 }
87//MochiKit.Logging.logDebug("--- " + this.name() + " [" + anAttribute + "] = " + result); 84//MochiKit.Logging.logDebug("--- " + this.name() + " [" + anAttribute + "] = " + result);
88 85
89 return result; 86 return result;
90 }, 87 },
91 88
92 //----------------------------------------------------- 89 //-----------------------------------------------------
93 90
94 'normalizeConfigureValue': function(aConfigurationValue) { 91 'normalizeConfigureValue': function(aConfigurationValue) {
95 var result; 92 var result;
96 93
97//MochiKit.Logging.logDebug("--- normalizeConfigureValue - " + aConfigurationValue); 94//MochiKit.Logging.logDebug("--- normalizeConfigureValue - " + aConfigurationValue);
98 if (typeof(aConfigurationValue) == 'number') { 95 if (typeof(aConfigurationValue) == 'number') {
99 result = aConfigurationValue; 96 result = aConfigurationValue;
100 } else if (aConfigurationValue == 'auto') { 97 } else if (aConfigurationValue == 'auto') {
101 result = aConfigurationValue; 98 result = aConfigurationValue;
102 } else { 99 } else {
103 var splitValues; 100 var splitValues;
104 var referenceValue; 101 var referenceValue;
105 var deltaValue; 102 var deltaValue;
106 var targetRegion; 103 var targetRegion;
107 var targetAttribute; 104 var targetAttribute;
108 105
109 splitValues = aConfigurationValue.split('+'); 106 splitValues = aConfigurationValue.split('+');
110 referenceValue = Clipperz.Base.trim(splitValues[0]); 107 referenceValue = Clipperz.Base.trim(splitValues[0]);
111 deltaValue = Clipperz.Base.trim(splitValues[1] || ""); 108 deltaValue = Clipperz.Base.trim(splitValues[1] || "");
112 109
113 splitValues = referenceValue.split('.'); 110 splitValues = referenceValue.split('.');
114 targetRegion = splitValues[0]; 111 targetRegion = splitValues[0];
115 targetAttribute = splitValues[1]; 112 targetAttribute = splitValues[1];
116 113
117//MochiKit.Logging.logDebug("> " + aConfigurationValue); 114//MochiKit.Logging.logDebug("> " + aConfigurationValue);
118//MochiKit.Logging.logDebug(">> manager: " + this.manager()); 115//MochiKit.Logging.logDebug(">> manager: " + this.manager());
119//MochiKit.Logging.logDebug(">> targetRegion: " + targetRegion); 116//MochiKit.Logging.logDebug(">> targetRegion: " + targetRegion);
120//MochiKit.Logging.logDebug(">>> " + this.manager().getRegion(targetRegion)); 117//MochiKit.Logging.logDebug(">>> " + this.manager().getRegion(targetRegion));
121 targetValue = this.manager().getRegion(targetRegion).getAttributeValue(targetAttribute); 118 targetValue = this.manager().getRegion(targetRegion).getAttributeValue(targetAttribute);
122//MochiKit.Logging.logDebug(">>>> " + targetRegion + "." + targetAttribute + " + " + deltaValue + " = " + targetValue); 119//MochiKit.Logging.logDebug(">>>> " + targetRegion + "." + targetAttribute + " + " + deltaValue + " = " + targetValue);
123 120
124 result = targetValue + (deltaValue - 0); 121 result = targetValue + (deltaValue - 0);
125 122
126//MochiKit.Logging.logDebug("<<< " + aConfigurationValue + " = " + result); 123//MochiKit.Logging.logDebug("<<< " + aConfigurationValue + " = " + result);
127 } 124 }
128 125
129 return result; 126 return result;
130 }, 127 },
131 128
132 'normalizedConfiguration': function(aConfiguration) { 129 'normalizedConfiguration': function(aConfiguration) {
133 varresult; 130 varresult;
134 varkey; 131 varkey;
135 132
136 result = {}; 133 result = {};
137 134
138//MochiKit.Logging.logDebug("--- normalizedConfiguration - keys: " + Clipperz.Base.serializeJSON(MochiKit.Base.keys(aConfiguration))); 135//MochiKit.Logging.logDebug("--- normalizedConfiguration - keys: " + Clipperz.Base.serializeJSON(MochiKit.Base.keys(aConfiguration)));
139 for (key in aConfiguration) { 136 for (key in aConfiguration) {
140 if ((key == 'top') || (key == 'bottom') || (key == 'left') || (key == 'rigth') || (key == 'width') || (key == 'height')) { 137 if ((key == 'top') || (key == 'bottom') || (key == 'left') || (key == 'rigth') || (key == 'width') || (key == 'height')) {
141 result[key] = this.normalizeConfigureValue(aConfiguration[key]); 138 result[key] = this.normalizeConfigureValue(aConfiguration[key]);
142 } else { 139 } else {
143 result[key] = aConfiguration[key]; 140 result[key] = aConfiguration[key];
144 } 141 }
145 } 142 }
146 143
147 return result; 144 return result;
148 }, 145 },
149 146
150 //----------------------------------------------------- 147 //-----------------------------------------------------
151 148
152 'element': function() { 149 'element': function() {
diff --git a/frontend/beta/js/Clipperz/YUI/MessageBox.js b/frontend/beta/js/Clipperz/YUI/MessageBox.js
index ec33d7d..c7b4702 100644
--- a/frontend/beta/js/Clipperz/YUI/MessageBox.js
+++ b/frontend/beta/js/Clipperz/YUI/MessageBox.js
@@ -1,152 +1,149 @@
1/* 1/*
2 2
3Copyright 2008-2011 Clipperz Srl 3Copyright 2008-2011 Clipperz Srl
4 4
5This file is part of Clipperz's Javascript Crypto Library. 5This file is part of Clipperz Community Edition.
6Javascript Crypto Library provides web developers with an extensive 6Clipperz Community Edition is an online password manager.
7and efficient set of cryptographic functions. The library aims to
8obtain maximum execution speed while preserving modularity and
9reusability.
10For further information about its features and functionalities please 7For further information about its features and functionalities please
11refer to http://www.clipperz.com 8refer to http://www.clipperz.com.
12 9
13* Javascript Crypto Library is free software: you can redistribute 10* Clipperz Community Edition is free software: you can redistribute
14 it and/or modify it under the terms of the GNU Affero General Public 11 it and/or modify it under the terms of the GNU Affero General Public
15 License as published by the Free Software Foundation, either version 12 License as published by the Free Software Foundation, either version
16 3 of the License, or (at your option) any later version. 13 3 of the License, or (at your option) any later version.
17 14
18* Javascript Crypto Library is distributed in the hope that it will 15* Clipperz Community Edition is distributed in the hope that it will
19 be useful, but WITHOUT ANY WARRANTY; without even the implied 16 be useful, but WITHOUT ANY WARRANTY; without even the implied
20 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 See the GNU Affero General Public License for more details. 18 See the GNU Affero General Public License for more details.
22 19
23* You should have received a copy of the GNU Affero General Public 20* You should have received a copy of the GNU Affero General Public
24 License along with Javascript Crypto Library. If not, see 21 License along with Clipperz Community Edition. If not, see
25 <http://www.gnu.org/licenses/>. 22 <http://www.gnu.org/licenses/>.
26 23
27*/ 24*/
28 25
29Clipperz.YUI.MessageBox = function(){ 26Clipperz.YUI.MessageBox = function(){
30 var dlg, opt, mask; 27 var dlg, opt, mask;
31 var bodyEl, msgEl, textboxEl, textareaEl, progressEl, pp; 28 var bodyEl, msgEl, textboxEl, textareaEl, progressEl, pp;
32 var buttons, activeTextEl, bwidth; 29 var buttons, activeTextEl, bwidth;
33 30
34 var handleButton = function(button){ 31 var handleButton = function(button){
35 if(typeof opt.fn == 'function'){ 32 if(typeof opt.fn == 'function'){
36 if(opt.fn.call(opt.scope||window, button, activeTextEl.dom.value) !== false){ 33 if(opt.fn.call(opt.scope||window, button, activeTextEl.dom.value) !== false){
37 dlg.hide(); 34 dlg.hide();
38 } 35 }
39 }else{ 36 }else{
40 dlg.hide(); 37 dlg.hide();
41 } 38 }
42 }; 39 };
43 40
44 return { 41 return {
45 updateButtons: function(b){ 42 updateButtons: function(b){
46 var width = 0; 43 var width = 0;
47 if(!b){ 44 if(!b){
48 buttons['ok'].hide(); 45 buttons['ok'].hide();
49 buttons['cancel'].hide(); 46 buttons['cancel'].hide();
50 buttons['yes'].hide(); 47 buttons['yes'].hide();
51 buttons['no'].hide(); 48 buttons['no'].hide();
52 return width; 49 return width;
53 } 50 }
54 for(var k in buttons){ 51 for(var k in buttons){
55 if(typeof buttons[k] != 'function'){ 52 if(typeof buttons[k] != 'function'){
56 if(b[k]){ 53 if(b[k]){
57 buttons[k].show(); 54 buttons[k].show();
58 buttons[k].setText(typeof b[k] == 'string' ? b[k] : YAHOO.ext.MessageBox.buttonText[k]); 55 buttons[k].setText(typeof b[k] == 'string' ? b[k] : YAHOO.ext.MessageBox.buttonText[k]);
59 width += buttons[k].el.getWidth()+15; 56 width += buttons[k].el.getWidth()+15;
60 }else{ 57 }else{
61 buttons[k].hide(); 58 buttons[k].hide();
62 } 59 }
63 } 60 }
64 } 61 }
65 return width; 62 return width;
66 }, 63 },
67 64
68 getDialog : function(){ 65 getDialog : function(){
69 if(!dlg){ 66 if(!dlg){
70 dlg = new YAHOO.ext.BasicDialog('mb-dlg', { 67 dlg = new YAHOO.ext.BasicDialog('mb-dlg', {
71 autoCreate:true, 68 autoCreate:true,
72 shadow:true, 69 shadow:true,
73 draggable:true, 70 draggable:true,
74 resizable:false, 71 resizable:false,
75 constraintoviewport:true, 72 constraintoviewport:true,
76 fixedcenter:true, 73 fixedcenter:true,
77 shim:true, 74 shim:true,
78 modal:true, 75 modal:true,
79 width:400, height:100, 76 width:400, height:100,
80 buttonAlign:'center', 77 buttonAlign:'center',
81 closeClick : function(){ 78 closeClick : function(){
82 if(opt && opt.buttons && opt.buttons.no && !opt.buttons.cancel){ 79 if(opt && opt.buttons && opt.buttons.no && !opt.buttons.cancel){
83 handleButton('no'); 80 handleButton('no');
84 }else{ 81 }else{
85 handleButton('cancel'); 82 handleButton('cancel');
86 } 83 }
87 } 84 }
88 }); 85 });
89 dlg.closeClick = function(){ 86 dlg.closeClick = function(){
90 alert('wtf'); 87 alert('wtf');
91 }; 88 };
92 mask = dlg.mask; 89 mask = dlg.mask;
93 dlg.addKeyListener(27, dlg.hide, dlg); 90 dlg.addKeyListener(27, dlg.hide, dlg);
94 buttons = {}; 91 buttons = {};
95 buttons['ok'] = dlg.addButton(this.buttonText['ok'], handleButton.createCallback('ok')); 92 buttons['ok'] = dlg.addButton(this.buttonText['ok'], handleButton.createCallback('ok'));
96 buttons['yes'] = dlg.addButton(this.buttonText['yes'], handleButton.createCallback('yes')); 93 buttons['yes'] = dlg.addButton(this.buttonText['yes'], handleButton.createCallback('yes'));
97 buttons['no'] = dlg.addButton(this.buttonText['no'], handleButton.createCallback('no')); 94 buttons['no'] = dlg.addButton(this.buttonText['no'], handleButton.createCallback('no'));
98 buttons['cancel'] = dlg.addButton(this.buttonText['cancel'], handleButton.createCallback('cancel')); 95 buttons['cancel'] = dlg.addButton(this.buttonText['cancel'], handleButton.createCallback('cancel'));
99 bodyEl = dlg.body.createChild({ 96 bodyEl = dlg.body.createChild({
100 tag:'div', 97 tag:'div',
101 html:'<span class="ext-mb-text"></span><br /><input type="text" class="ext-mb-input"><textarea class="ext-mb-textarea"></textarea><div class="ext-mb-progress-wrap"><div class="ext-mb-progress"><div class="ext-mb-progress-bar">&#160;</div></div></div>' 98 html:'<span class="ext-mb-text"></span><br /><input type="text" class="ext-mb-input"><textarea class="ext-mb-textarea"></textarea><div class="ext-mb-progress-wrap"><div class="ext-mb-progress"><div class="ext-mb-progress-bar">&#160;</div></div></div>'
102 }); 99 });
103 msgEl = bodyEl.dom.firstChild; 100 msgEl = bodyEl.dom.firstChild;
104 textboxEl = getEl(bodyEl.dom.childNodes[2]); 101 textboxEl = getEl(bodyEl.dom.childNodes[2]);
105 textboxEl.enableDisplayMode(); 102 textboxEl.enableDisplayMode();
106 textboxEl.addKeyListener([10,13], function(){ 103 textboxEl.addKeyListener([10,13], function(){
107 if(dlg.isVisible() && opt && opt.buttons){ 104 if(dlg.isVisible() && opt && opt.buttons){
108 if(opt.buttons.ok){ 105 if(opt.buttons.ok){
109 handleButton('ok'); 106 handleButton('ok');
110 }else if(opt.buttons.yes){ 107 }else if(opt.buttons.yes){
111 handleButton('yes'); 108 handleButton('yes');
112 } 109 }
113 } 110 }
114 }); 111 });
115 textareaEl = getEl(bodyEl.dom.childNodes[3]); 112 textareaEl = getEl(bodyEl.dom.childNodes[3]);
116 textareaEl.enableDisplayMode(); 113 textareaEl.enableDisplayMode();
117 progressEl = getEl(bodyEl.dom.childNodes[4]); 114 progressEl = getEl(bodyEl.dom.childNodes[4]);
118 progressEl.enableDisplayMode(); 115 progressEl.enableDisplayMode();
119 pp = getEl(progressEl.dom.firstChild.firstChild); 116 pp = getEl(progressEl.dom.firstChild.firstChild);
120 } 117 }
121 return dlg; 118 return dlg;
122 }, 119 },
123 120
124 updateText : function(text){ 121 updateText : function(text){
125 if(!dlg.isVisible() && !opt.width){ 122 if(!dlg.isVisible() && !opt.width){
126 dlg.resizeTo(this.maxWidth, 100); // resize first so content is never clipped from previous shows 123 dlg.resizeTo(this.maxWidth, 100); // resize first so content is never clipped from previous shows
127 } 124 }
128 msgEl.innerHTML = text; 125 msgEl.innerHTML = text;
129 var w = Math.max(Math.min(opt.width || msgEl.offsetWidth, this.maxWidth), 126 var w = Math.max(Math.min(opt.width || msgEl.offsetWidth, this.maxWidth),
130 Math.max(opt.minWidth || this.minWidth, bwidth)); 127 Math.max(opt.minWidth || this.minWidth, bwidth));
131 if(opt.prompt){ 128 if(opt.prompt){
132 activeTextEl.setWidth(w); 129 activeTextEl.setWidth(w);
133 } 130 }
134 dlg.setContentSize(w, bodyEl.getHeight()); 131 dlg.setContentSize(w, bodyEl.getHeight());
135 }, 132 },
136 133
137 updateProgress : function(value, text){ 134 updateProgress : function(value, text){
138 if(text){ 135 if(text){
139 this.updateText(text); 136 this.updateText(text);
140 } 137 }
141 pp.setWidth(value*progressEl.dom.firstChild.offsetWidth); 138 pp.setWidth(value*progressEl.dom.firstChild.offsetWidth);
142 }, 139 },
143 140
144 isVisible : function(){ 141 isVisible : function(){
145 return dlg && dlg.isVisible(); 142 return dlg && dlg.isVisible();
146 }, 143 },
147 144
148 hide : function(){ 145 hide : function(){
149 if(this.isVisible()){ 146 if(this.isVisible()){
150 dlg.hide(); 147 dlg.hide();
151 } 148 }
152 }, 149 },