summaryrefslogtreecommitdiff
path: root/frontend
Unidiff
Diffstat (limited to 'frontend') (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
-rw-r--r--frontend/gamma/css/clipperz/clipperz.css15
-rw-r--r--frontend/gamma/css/clipperz/compact.css15
-rw-r--r--frontend/gamma/css/clipperz/iPhone.css15
-rw-r--r--frontend/gamma/css/clipperz/ie.css15
-rw-r--r--frontend/gamma/html/exitPage_template.html15
-rw-r--r--frontend/gamma/html/mobile_template.html15
-rw-r--r--frontend/gamma/js/Bookmarklet.js15
-rw-r--r--frontend/gamma/js/BookmarkletHash.js15
-rw-r--r--frontend/gamma/js/Bookmarklet_1.js15
-rw-r--r--frontend/gamma/js/Bookmarklet_2.js15
-rw-r--r--frontend/gamma/js/Clipperz/Async.js15
-rw-r--r--frontend/gamma/js/Clipperz/Base.js15
-rw-r--r--frontend/gamma/js/Clipperz/ByteArray.js15
-rw-r--r--frontend/gamma/js/Clipperz/CSVProcessor.js15
-rw-r--r--frontend/gamma/js/Clipperz/Crypto/AES.js15
-rw-r--r--frontend/gamma/js/Clipperz/Crypto/Base.js15
-rw-r--r--frontend/gamma/js/Clipperz/Crypto/BigInt.js15
-rw-r--r--frontend/gamma/js/Clipperz/Crypto/BigInt_scoped.js15
-rw-r--r--frontend/gamma/js/Clipperz/Crypto/ECC/BinaryField/Curve.js15
-rw-r--r--frontend/gamma/js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js15
-rw-r--r--frontend/gamma/js/Clipperz/Crypto/ECC/BinaryField/Point.js15
-rw-r--r--frontend/gamma/js/Clipperz/Crypto/ECC/BinaryField/Value.js15
-rw-r--r--frontend/gamma/js/Clipperz/Crypto/ECC/StandardCurves.js15
-rw-r--r--frontend/gamma/js/Clipperz/Crypto/PRNG.js15
-rw-r--r--frontend/gamma/js/Clipperz/Crypto/RSA.js15
-rw-r--r--frontend/gamma/js/Clipperz/Crypto/SHA.js15
-rw-r--r--frontend/gamma/js/Clipperz/Crypto/SRP.js15
-rw-r--r--frontend/gamma/js/Clipperz/DOM.js15
-rw-r--r--frontend/gamma/js/Clipperz/Date.js15
-rw-r--r--frontend/gamma/js/Clipperz/KeePassExportProcessor.js15
-rw-r--r--frontend/gamma/js/Clipperz/KeyValueObjectStore.js15
-rw-r--r--frontend/gamma/js/Clipperz/Logging.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/BookmarkletProcessor.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/Connection.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/Crypto.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/DirectLogin.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginBinding.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginFormValue.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginInput.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/EncryptedRemoteObject.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/OneTimePassword.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/Record.Version.Field.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/Record.Version.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/Record.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/User.Header.Legacy.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/User.Header.Preferences.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/User.Header.RecordIndex.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/DataModel/User.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/Date.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/Proxy.js15
-rwxr-xr-xfrontend/gamma/js/Clipperz/PM/Proxy/Proxy.JSON.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Offline.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Test.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/Strings.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/Strings/MessagePanelConfigurations.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/Strings/Strings_defaults.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/Strings/Strings_en-US.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/Toll.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/CoverActions/download.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/CoverActions/look.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/directLogin.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/protect.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/share.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/store.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/GraphicFunctions.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/Logo/normal.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/exclamationMark.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/info.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/questionMark.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/RegisterButton/normal.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/Star/normal.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/Tips/close.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Canvas/Tips/open.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/BaseComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/Button.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/ComponentSlot.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/FaviconComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/MessagePanelWithProgressBar.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/ProgressBar.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/Tooltip.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/ProgressBarController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/WizardController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Compact/MainController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/AccountPanel.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/AppPage.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/BookmarkletComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogRecordDirectLoginComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/ColumnManager.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/CreateNewCardSplashComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/DataPanel.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/DateColumnManager.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/DeleteObjectColumnManager.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginColumnManager.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingBindingComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingFormValueComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginsColumnManager.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/FaviconColumnManager.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/GridComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/ImageColumnManager.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/LinkColumnManager.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginForm.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginPage.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginProgress.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/NewUserCreationComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/Page.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageFooter.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageHeader.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/PasswordTooltip.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/RulerComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/TabSidePanel.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/TextColumnManager.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/ToolsPanel.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/UnlockPasswordComponent.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Components/UserInfoBox.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/AppController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/CardDialogController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/CardsController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/DirectLoginWizardController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/DirectLoginsController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/FilterController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/GridController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/LoginController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/MainController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/NewUserWizardController.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardDetail.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardList.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/LoginForm.js15
-rw-r--r--frontend/gamma/js/Clipperz/PM/UI/iPhone/Controllers/MainController.js15
-rw-r--r--frontend/gamma/js/Clipperz/Set.js15
-rw-r--r--frontend/gamma/js/Clipperz/Signal.js15
-rw-r--r--frontend/gamma/js/Clipperz/Style.js15
-rw-r--r--frontend/gamma/js/Clipperz/Visual.js15
-rw-r--r--frontend/gamma/js/Clipperz/YUI/DomHelper.js15
-rw-r--r--frontend/gamma/js/Clipperz/YUI/DomQuery.js15
-rw-r--r--frontend/gamma/js/Clipperz/YUI/Utils.js15
-rw-r--r--frontend/gamma/js/main.js15
-rw-r--r--frontend/gamma/js/main_iPhone.js15
-rw-r--r--frontend/gamma/tests/SimpleTest/SimpleTest.Async.js15
-rwxr-xr-xfrontend/gamma/tests/index.html15
-rw-r--r--frontend/gamma/tests/tests/Bookmarklet/Bookmarklet.css15
-rw-r--r--frontend/gamma/tests/tests/Bookmarklet/Fail.html15
-rw-r--r--frontend/gamma/tests/tests/Bookmarklet/Twitter.html15
-rw-r--r--frontend/gamma/tests/tests/Bookmarklet/index.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Async.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Async.test.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Base.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Base.test.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/ByteArray.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/ByteArray.test.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/AES.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/AES.performance.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/Base.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/BigInt.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/ECC.B283.deferred.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.B283.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.Value.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/ECC.K283.deferred.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/JSCrypto_vs_Clipperz.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/JSCrypto_vs_Clipperz.test.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/PRNG.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/RSA.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/SHA.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/SHA.test.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/SRP.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/Usage.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/index.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Crypto/jscrypto.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/DOM.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/DOM.test.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Date.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Date.test.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.data.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.test.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/KeyValueObjectStore.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/KeyValueObjectStore.test.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/BookmarkletProcessor.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/BookmarkletProcessor.test.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Connection.data.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Connection.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Connection.test.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Crypto.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Crypto_performanceEvaluation.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Crypto_test.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLogin.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLogin.test.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLoginConfigurations.data.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.test.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/OneTimePassword.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/OneTimePassword.test.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.test.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.data.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.data.old.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.test.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/DataModel/index.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Date.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Date.test.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Proxy.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Proxy.test.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Toll.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/Toll.test.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/MainController.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/MainController.test.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/index.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/UI/Web/index.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/UI/index.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/PM/index.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/RoboFormExportProcessor.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Set.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/Set.test.js15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/index.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/index_googleCode.html15
-rw-r--r--frontend/gamma/tests/tests/Clipperz/index_testECC.html15
-rw-r--r--frontend/gamma/tests/tests/Components/CardDialogEditing/CardDialogEditing_test.js15
-rw-r--r--frontend/gamma/tests/tests/Components/CardDialogEditing/User.data.js15
-rw-r--r--frontend/gamma/tests/tests/Components/CardDialogEditing/dragAndDrop_test.js15
-rw-r--r--frontend/gamma/tests/tests/Components/CardDialogEditing/index.html15
-rw-r--r--frontend/gamma/tests/tests/Components/CardDialogNew/User.data.js15
-rw-r--r--frontend/gamma/tests/tests/Components/CardDialogNew/cardDialogNew_test.js15
-rw-r--r--frontend/gamma/tests/tests/Components/CardDialogNew/index.html15
-rw-r--r--frontend/gamma/tests/tests/Components/FullApp/User.data.js15
-rw-r--r--frontend/gamma/tests/tests/Components/FullApp/index.html15
-rw-r--r--frontend/gamma/tests/tests/Components/FullApp/main_test.js15
-rw-r--r--frontend/gamma/tests/tests/Components/GridLayout/GridLayout_test.js15
-rw-r--r--frontend/gamma/tests/tests/Components/GridLayout/TestPageComponent.js15
-rw-r--r--frontend/gamma/tests/tests/Components/GridLayout/User.data.js15
-rw-r--r--frontend/gamma/tests/tests/Components/GridLayout/index.html15
-rw-r--r--frontend/gamma/tests/tests/Components/GridLayout/test.css15
-rw-r--r--frontend/gamma/tests/tests/Components/ProgressBar/index.html15
-rw-r--r--frontend/gamma/tests/tests/Components/ProgressBar/progressBar_test.js15
-rw-r--r--frontend/gamma/tests/tests/Components/SimpleMessagePanel/index.html15
-rw-r--r--frontend/gamma/tests/tests/Components/SimpleMessagePanel/simpleMessagePanel_test.js15
-rw-r--r--frontend/gamma/tests/tests/Components/Tooltips/index.html15
-rw-r--r--frontend/gamma/tests/tests/Components/Tooltips/tooltips_test.js15
-rw-r--r--frontend/gamma/tests/tests/Components/UnlockPassword/User.data.js15
-rw-r--r--frontend/gamma/tests/tests/Components/UnlockPassword/index.html15
-rw-r--r--frontend/gamma/tests/tests/Components/UnlockPassword/unlockPassword_test.js15
-rw-r--r--frontend/gamma/tests/tests/Components/crossWindowsBookmarklet/CrossWindowsBookmarklet_test.js15
-rw-r--r--frontend/gamma/tests/tests/Components/crossWindowsBookmarklet/index.html15
-rw-r--r--frontend/gamma/tests/tests/index.html15
408 files changed, 2448 insertions, 3672 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,120 +1,117 @@
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}
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,120 +1,117 @@
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 {
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,120 +1,117 @@
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,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) 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;
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,120 +1,117 @@
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
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,120 +1,117 @@
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}
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,120 +1,117 @@
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;
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,120 +1,117 @@
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;
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,120 +1,117 @@
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);
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,120 +1,117 @@
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;
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,120 +1,117 @@
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;
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,120 +1,117 @@
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);
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,120 +1,117 @@
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;
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,120 +1,117 @@
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);
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,120 +1,117 @@
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;
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,120 +1,117 @@
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;
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,120 +1,117 @@
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;
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,120 +1,117 @@
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
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,120 +1,117 @@
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;
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,120 +1,117 @@
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);
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,120 +1,117 @@
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
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,120 +1,117 @@
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 + "'");
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,120 +1,117 @@
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;
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,120 +1,117 @@
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
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,120 +1,117 @@
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//
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,120 +1,117 @@
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.
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,120 +1,117 @@
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) {
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,120 +1,117 @@
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");
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,120 +1,117 @@
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) {
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,120 +1,117 @@
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));
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,120 +1,117 @@
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;
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,120 +1,117 @@
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 {
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,120 +1,117 @@
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;
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,120 +1,117 @@
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
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,120 +1,117 @@
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;
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,120 +1,117 @@
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))
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,120 +1,117 @@
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);
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,120 +1,117 @@
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";
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,120 +1,117 @@
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 },
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,120 +1,117 @@
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
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,120 +1,117 @@
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 })
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,120 +1,117 @@
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 = "";
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,120 +1,117 @@
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("");
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,120 +1,117 @@
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))) {
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,120 +1,117 @@
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');
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,120 +1,117 @@
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');
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,120 +1,117 @@
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 //-------------------------------------------------------------------------
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,120 +1,117 @@
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 ]},
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,120 +1,117 @@
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 }
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,120 +1,117 @@
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 //-------------------------------------------------------------------------
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,120 +1,117 @@
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
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,120 +1,117 @@
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*/}]},
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,120 +1,117 @@
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
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,120 +1,117 @@
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 }
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,120 +1,117 @@
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 }
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,120 +1,117 @@
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);
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,120 +1,117 @@
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:[
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,120 +1,117 @@
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:[
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,120 +1,117 @@
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 ]}
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,120 +1,117 @@
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']},
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,120 +1,117 @@
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 ]},
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,120 +1,117 @@
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 ]}
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,120 +1,117 @@
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 ]},
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,120 +1,117 @@
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 ]}
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,120 +1,117 @@
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
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,120 +1,117 @@
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;
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,120 +1,117 @@
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':
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,120 +1,117 @@
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 }));
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,120 +1,117 @@
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 },
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,120 +1,117 @@
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
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,120 +1,117 @@
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());
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,120 +1,117 @@
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;
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,120 +1,117 @@
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();
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,120 +1,117 @@
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
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,120 +1,117 @@
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();
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,120 +1,117 @@
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 //-------------------------------------------------------------------------
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,120 +1,117 @@
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
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,120 +1,117 @@
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() {
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,120 +1,117 @@
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() {
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,120 +1,117 @@
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
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,120 +1,117 @@
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() {
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,120 +1,117 @@
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;
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,120 +1,117 @@
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) {
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,120 +1,117 @@
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) {
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,120 +1,117 @@
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;
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,120 +1,117 @@
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
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,120 +1,117 @@
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 },
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,120 +1,117 @@
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
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,120 +1,117 @@
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) {
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,120 +1,117 @@
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;
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,120 +1,117 @@
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;
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,120 +1,117 @@
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) {
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,120 +1,117 @@
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;
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,120 +1,117 @@
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 //-------------------------------------------------------------------------
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,120 +1,117 @@
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 }
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,120 +1,117 @@
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;
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,120 +1,117 @@
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) {
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,120 +1,117 @@
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" +
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,120 +1,117 @@
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'],
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,120 +1,117 @@
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.",
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,120 +1,117 @@
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': "Γίνεται επαλήθευση διαπιστευτηρίων",
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,120 +1,117 @@
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",
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,120 +1,117 @@
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",
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,120 +1,117 @@
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",
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,120 +1,117 @@
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",
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,120 +1,117 @@
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':"解除",
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,120 +1,117 @@
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",
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,120 +1,117 @@
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':"выход",
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,120 +1,117 @@
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':"用户名",
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,120 +1,117 @@
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;
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,120 +1,117 @@
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);
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,120 +1,117 @@
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
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,120 +1,117 @@
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){
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,120 +1,117 @@
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 };
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,120 +1,117 @@
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];
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,120 +1,117 @@
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));
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,120 +1,117 @@
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 }
diff --git a/frontend/gamma/css/clipperz/clipperz.css b/frontend/gamma/css/clipperz/clipperz.css
index dba4d57..68d9942 100644
--- a/frontend/gamma/css/clipperz/clipperz.css
+++ b/frontend/gamma/css/clipperz/clipperz.css
@@ -1,120 +1,117 @@
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/DEVELOPMENT/css/clipperz.css 27 https://www.example.com/DEVELOPMENT/css/clipperz.css
31 http://www.example.com/DEVELOPMENT/css/clipperz.css 28 http://www.example.com/DEVELOPMENT/css/clipperz.css
32 https://www.clipperz.com/gamma/css/clipperz.css 29 https://www.clipperz.com/gamma/css/clipperz.css
33 https://www.example.com/iPHONE/css/clipperz.css 30 https://www.example.com/iPHONE/css/clipperz.css
34*/ 31*/
35 32
36/* 33/*
37Color list: 34Color list:
38- login box: 35- login box:
39 light#ff9955 36 light#ff9955
40 dark#ff6622 37 dark#ff6622
41- login button: 38- login button:
42 regular#dd5500 39 regular#dd5500
43 hover#773311 40 hover#773311
44- login translations: 41- login translations:
45 box: #cc6622; 42 box: #cc6622;
46 not-selected: 43 not-selected:
47 color: #ddaa99 44 color: #ddaa99
48 background:#994422 45 background:#994422
49 selected: #772211; 46 selected: #772211;
50 47
51*/ 48*/
52 49
53html { 50html {
54 height: 100%; 51 height: 100%;
55} 52}
56 53
57body { 54body {
58 /*margin-left: 15px; margin-right: 15px;*/ 55 /*margin-left: 15px; margin-right: 15px;*/
59 font-family: Helvetica, Arial, Geneva, sans-serif; 56 font-family: Helvetica, Arial, Geneva, sans-serif;
60 margin: 0px; 57 margin: 0px;
61/* 58/*
62 min-width: 600px; 59 min-width: 600px;
63*/ 60*/
64 height: 100%; 61 height: 100%;
65} 62}
66 63
67img.favicon { 64img.favicon {
68 height: 16px; 65 height: 16px;
69 width: 16px; 66 width: 16px;
70} 67}
71 68
72/* @group Misc */ 69/* @group Misc */
73 70
74.clear { 71.clear {
75 clear: both; 72 clear: both;
76} 73}
77 74
78.hidden_none { 75.hidden_none {
79 display: none; 76 display: none;
80 visibility: hidden; 77 visibility: hidden;
81} 78}
82 79
83.keepTogether { 80.keepTogether {
84 display: inline-block; 81 display: inline-block;
85 white-space: nowrap; 82 white-space: nowrap;
86} 83}
87 84
88body.ext-gecko .keepTogether { 85body.ext-gecko .keepTogether {
89 display: -moz-inline-box; 86 display: -moz-inline-box;
90 } 87 }
91 88
92/* @end */ 89/* @end */
93 90
94/* @group Loading */ 91/* @group Loading */
95 92
96div#loading { 93div#loading {
97 margin-left: auto; 94 margin-left: auto;
98 margin-right: auto; 95 margin-right: auto;
99 text-align: center; 96 text-align: center;
100 margin-top: 60px; 97 margin-top: 60px;
101 width: 200px; 98 width: 200px;
102} 99}
103 100
104div#loading img { 101div#loading img {
105 border: 0px; 102 border: 0px;
106} 103}
107 104
108div#loading h5 { 105div#loading h5 {
109 font-size: 16pt; 106 font-size: 16pt;
110 padding: 0px; 107 padding: 0px;
111 color: #333366; 108 color: #333366;
112} 109}
113 110
114div#loading h2 { 111div#loading h2 {
115 padding-left: 20px; 112 padding-left: 20px;
116 color: #ff9200; 113 color: #ff9200;
117} 114}
118 115
119 116
120/* @end */ 117/* @end */
diff --git a/frontend/gamma/css/clipperz/compact.css b/frontend/gamma/css/clipperz/compact.css
index 7c9252a..c6e8661 100644
--- a/frontend/gamma/css/clipperz/compact.css
+++ b/frontend/gamma/css/clipperz/compact.css
@@ -1,120 +1,117 @@
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 {
diff --git a/frontend/gamma/css/clipperz/iPhone.css b/frontend/gamma/css/clipperz/iPhone.css
index a15f22f..ee1d795 100644
--- a/frontend/gamma/css/clipperz/iPhone.css
+++ b/frontend/gamma/css/clipperz/iPhone.css
@@ -1,120 +1,117 @@
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/iPHONE/css/iPhone.css 27 https://www.example.com/iPHONE/css/iPhone.css
31 https://www.example.com/DEVELOPMENT/css/iPhone.css 28 https://www.example.com/DEVELOPMENT/css/iPhone.css
32 https://www.example.com/WIZARD/css/iPhone.css 29 https://www.example.com/WIZARD/css/iPhone.css
33*/ 30*/
34 31
35/* ---------------------------------------- */ 32/* ---------------------------------------- */
36 33
37body { 34body {
38 margin: 0; 35 margin: 0;
39 font-family: Helvetica; 36 font-family: Helvetica;
40 background: #FFFFFF; 37 background: #FFFFFF;
41 color: #000000; 38 color: #000000;
42 overflow-x: hidden; 39 overflow-x: hidden;
43 -webkit-user-select: none; 40 -webkit-user-select: none;
44 -webkit-text-size-adjust: none; 41 -webkit-text-size-adjust: none;
45} 42}
46 43
47 44
48div.toolbar { 45div.toolbar {
49 box-sizing: border-box; 46 box-sizing: border-box;
50 -moz-box-sizing: border-box; 47 -moz-box-sizing: border-box;
51 -webkit-box-sizing: border-box; 48 -webkit-box-sizing: border-box;
52 border-bottom: 1px solid #2d3642; 49 border-bottom: 1px solid #2d3642;
53 border-top: 1px solid #6d84a2; 50 border-top: 1px solid #6d84a2;
54 padding: 10px; 51 padding: 10px;
55 height: 45px; 52 height: 45px;
56 /* background: url(../images/old/iPhone/toolbar.png) #6d84a2 repeat-x;*/ 53 /* background: url(../images/old/iPhone/toolbar.png) #6d84a2 repeat-x;*/
57 background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAArCAIAAAA2QHWOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE1JREFUCNddjDEOgEAQAgn//5qltYWFnb1GB4vdSy4WBAYStKyb9+O0FJMYyjMyMWCC35lJM71r6vF1P07/lFSfPx6ZxNLcy1HtihzpA/RWcOj0zlDhAAAAAElFTkSuQmCCCg==) #6d84a2 repeat-x; 54 background: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAArCAIAAAA2QHWOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE1JREFUCNddjDEOgEAQAgn//5qltYWFnb1GB4vdSy4WBAYStKyb9+O0FJMYyjMyMWCC35lJM71r6vF1P07/lFSfPx6ZxNLcy1HtihzpA/RWcOj0zlDhAAAAAElFTkSuQmCCCg==) #6d84a2 repeat-x;
58} 55}
59 56
60div.toolbar h1#pageTitle { 57div.toolbar h1#pageTitle {
61 overflow: hidden; 58 overflow: hidden;
62 margin-top: 1px; 59 margin-top: 1px;
63 margin-bottom: 0px; 60 margin-bottom: 0px;
64 margin-left: auto; 61 margin-left: auto;
65 margin-right: auto; 62 margin-right: auto;
66 width: 150px; 63 width: 150px;
67 height: 25px; /* 45px*/ 64 height: 25px; /* 45px*/
68 font-size: 20px; 65 font-size: 20px;
69 width: 150px; 66 width: 150px;
70 font-weight: bold; 67 font-weight: bold;
71 text-shadow: rgba(0, 0, 0, 0.4) 0px -1px 0; 68 text-shadow: rgba(0, 0, 0, 0.4) 0px -1px 0;
72 text-align: center; 69 text-align: center;
73 text-overflow: ellipsis; 70 text-overflow: ellipsis;
74 white-space: nowrap; 71 white-space: nowrap;
75 color: #FFFFFF; 72 color: #FFFFFF;
76} 73}
77 74
78div.toolbar a.button { 75div.toolbar a.button {
79 position: absolute; 76 position: absolute;
80 overflow: hidden; 77 overflow: hidden;
81 top: 8px; 78 top: 8px;
82 right: 6px; 79 right: 6px;
83 margin: 0; 80 margin: 0;
84 border-width: 0 5px; 81 border-width: 0 5px;
85 padding: 0 3px; 82 padding: 0 3px;
86 width: auto; 83 width: auto;
87 height: 30px; 84 height: 30px;
88 line-height: 30px; 85 line-height: 30px;
89 font-family: inherit; 86 font-family: inherit;
90 font-size: 12px; 87 font-size: 12px;
91 font-weight: bold; 88 font-weight: bold;
92 color: #FFFFFF; 89 color: #FFFFFF;
93 text-shadow: rgba(0, 0, 0, 0.6) 0px -1px 0; 90 text-shadow: rgba(0, 0, 0, 0.6) 0px -1px 0;
94 text-overflow: ellipsis; 91 text-overflow: ellipsis;
95 text-decoration: none; 92 text-decoration: none;
96 white-space: nowrap; 93 white-space: nowrap;
97 background: none; 94 background: none;
98 /* -webkit-border-image: url(../images/old/iPhone/toolButton.png) 0 5 0 5;*/ 95 /* -webkit-border-image: url(../images/old/iPhone/toolButton.png) 0 5 0 5;*/
99} 96}
100 97
101div.toolbar a#backButton { 98div.toolbar a#backButton {
102 /* display: none;*/ 99 /* display: none;*/
103 left: 6px; 100 left: 6px;
104 right: auto; 101 right: auto;
105 padding: 0px; 102 padding: 0px;
106 max-width: 55px; 103 max-width: 55px;
107 border-width: 0 8px 0 14px; 104 border-width: 0 8px 0 14px;
108 /* -webkit-border-image: url(../images/old/iPhone/backButton.png) 0 8 0 14;*/ 105 /* -webkit-border-image: url(../images/old/iPhone/backButton.png) 0 8 0 14;*/
109 -webkit-border-image: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAACsAAAAeCAIAAAA6iHCJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAtJJREFUeNrEV21P01AYbbtubNExBnXDbYjjZYI4BMdgEANDQoTElw/+Rw0mBs0UiSGaoJFEQEPwjRhFCW/JxrZ2Xdu1fe71bpAhCHzqupPnS5ObPOeec+5zb+lHLxao05HPiwvzr3/++J7N7FFGgaaDLe034+O+wCXyxSKET1u5+Wc98XTK39zeOzjudLmNIoAR2tlaf/Zkqm9gKNI/RBigE9dtb23MJKZj8fvuC16b3WGxsJRxOFfHeQOtH+ZnOI+XRfgEBoLAzz6fjo7ebfD4GYYhMiEdDGRAW6xOt6d7YGzl4xIL/7mgyPL044edkVt19T4EFAJEVQYud+MvOCkHc7MJ3+VrXGOzXrHeZS1s9trjOVj7tiqpONTWBRgD6BVmQFls9iMaSHnx/bu3ffEHgC2gVVqAIojKR3Iw9zLRcjVmtTnA0NydxQDg0IWvq59kYIOeZtWs9gQkagcMcgK/vLjYNXQHcEkas0AcYPdNIPr7Q/0M69B089ofavB5ZVm3OJ2cTwegzAUgxGbSe8tLS52xewjRZGabzAABZt+8mvGHBsiYNF+AAw1cXEBGNUiQqWpAlArM5MSYBXgEOl0NkLcCkxak28MRKbuDMa6KDAwAUnU8HO2Q+N0SJ3OLMCA7V1S9vt7d3tSg5LNV0ACXwOekcGfreVbVVYUqMjOvyPsH71cqkxsZ7NHFJIXBTCMONMAlEryoxAfDucyOmaOpmINyaTowrK23IyDxKbNzUIYoKU3+i37OXpCESvfGCOw11uMMcCkQke4rDlrS1coOSk2VOXftERfKtZsURmLXQUqBVqiUABgrQirc0Xp4Fv4t8kxN8dLkaJQupOVcGnTN0PuQHHlRSG1Eu9tUTLOnxZ5clclsfmK078va7/WN7axomCN2e42Xc/VEIoiiM0KePeM20DTY3M22BZtuhENW1rC/NrI3WVGTmZxSKEr7V4ABAJ+53J1I3nPjAAAAAElFTkSuQmCCCg==) 0 8 0 14; 106 -webkit-border-image: url(data:image/png;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAACsAAAAeCAIAAAA6iHCJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAtJJREFUeNrEV21P01AYbbtubNExBnXDbYjjZYI4BMdgEANDQoTElw/+Rw0mBs0UiSGaoJFEQEPwjRhFCW/JxrZ2Xdu1fe71bpAhCHzqupPnS5ObPOeec+5zb+lHLxao05HPiwvzr3/++J7N7FFGgaaDLe034+O+wCXyxSKET1u5+Wc98XTK39zeOzjudLmNIoAR2tlaf/Zkqm9gKNI/RBigE9dtb23MJKZj8fvuC16b3WGxsJRxOFfHeQOtH+ZnOI+XRfgEBoLAzz6fjo7ebfD4GYYhMiEdDGRAW6xOt6d7YGzl4xIL/7mgyPL044edkVt19T4EFAJEVQYud+MvOCkHc7MJ3+VrXGOzXrHeZS1s9trjOVj7tiqpONTWBRgD6BVmQFls9iMaSHnx/bu3ffEHgC2gVVqAIojKR3Iw9zLRcjVmtTnA0NydxQDg0IWvq59kYIOeZtWs9gQkagcMcgK/vLjYNXQHcEkas0AcYPdNIPr7Q/0M69B089ofavB5ZVm3OJ2cTwegzAUgxGbSe8tLS52xewjRZGabzAABZt+8mvGHBsiYNF+AAw1cXEBGNUiQqWpAlArM5MSYBXgEOl0NkLcCkxak28MRKbuDMa6KDAwAUnU8HO2Q+N0SJ3OLMCA7V1S9vt7d3tSg5LNV0ACXwOekcGfreVbVVYUqMjOvyPsH71cqkxsZ7NHFJIXBTCMONMAlEryoxAfDucyOmaOpmINyaTowrK23IyDxKbNzUIYoKU3+i37OXpCESvfGCOw11uMMcCkQke4rDlrS1coOSk2VOXftERfKtZsURmLXQUqBVqiUABgrQirc0Xp4Fv4t8kxN8dLkaJQupOVcGnTN0PuQHHlRSG1Eu9tUTLOnxZ5clclsfmK078va7/WN7axomCN2e42Xc/VEIoiiM0KePeM20DTY3M22BZtuhENW1rC/NrI3WVGTmZxSKEr7V4ABAJ+53J1I3nPjAAAAAElFTkSuQmCCCg==) 0 8 0 14;
110} 107}
111 108
112/* ------------------------------------------- */ 109/* ------------------------------------------- */
113 110
114body.iPhone form.loginForm { 111body.iPhone form.loginForm {
115 min-height: 372px; 112 min-height: 372px;
116 113
117 box-sizing: border-box; 114 box-sizing: border-box;
118 -moz-box-sizing: border-box; 115 -moz-box-sizing: border-box;
119 -webkit-box-sizing: border-box; 116 -webkit-box-sizing: border-box;
120 padding: 10px; 117 padding: 10px;
diff --git a/frontend/gamma/css/clipperz/ie.css b/frontend/gamma/css/clipperz/ie.css
index 5148ada..3c2d59a 100644
--- a/frontend/gamma/css/clipperz/ie.css
+++ b/frontend/gamma/css/clipperz/ie.css
@@ -1,120 +1,117 @@
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#logo { 38div#logo {
42 /* padding-left: 15px;*/ 39 /* padding-left: 15px;*/
43 background: url(../images/old/logo_blue.png); 40 background: url(../images/old/logo_blue.png);
44} 41}
45 42
46div.clipperzLoginForm div.loginForm form { 43div.clipperzLoginForm div.loginForm form {
47 padding-left: 20px; 44 padding-left: 20px;
48} 45}
49 46
50div.clipperzLoginForm div.registrationForm form { 47div.clipperzLoginForm div.registrationForm form {
51 padding-left: 20px; 48 padding-left: 20px;
52} 49}
53 50
54div#newRecordInnerPanel { 51div#newRecordInnerPanel {
55 width: 350px; 52 width: 350px;
56 height: 160px; 53 height: 160px;
57 background: url(../images/old/newRecordPanelBackground.png) no-repeat 0 -165px; 54 background: url(../images/old/newRecordPanelBackground.png) no-repeat 0 -165px;
58 /*background: url(data:image/png;charset=utf-8;base64,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) no-repeat 0 -165px; */ 55 /*background: url(data:image/png;charset=utf-8;base64,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) no-repeat 0 -165px; */
59} 56}
60 57
61img#donateHeaderIcon { 58img#donateHeaderIcon {
62 padding-top: 0px; 59 padding-top: 0px;
63 margin-bottom: 0px; 60 margin-bottom: 0px;
64} 61}
65 62
66/* ========================================================== */ 63/* ========================================================== */
67 64
68div#applicationVersionType { 65div#applicationVersionType {
69 position: absolute; 66 position: absolute;
70} 67}
71 68
72div#applicationVersionType.readOnly { 69div#applicationVersionType.readOnly {
73 background: url(../images/old/read-only.png) no-repeat fixed -5px -8px; 70 background: url(../images/old/read-only.png) no-repeat fixed -5px -8px;
74} 71}
75 72
76div#applicationVersionType.TEST { 73div#applicationVersionType.TEST {
77 background: url(../images/old/test-database.png) no-repeat fixed -5px -8px; 74 background: url(../images/old/test-database.png) no-repeat fixed -5px -8px;
78} 75}
79 76
80div#mainTabs { 77div#mainTabs {
81 background: #ff9400 url(../images/old/menubarSprite.gif) repeat-x; 78 background: #ff9400 url(../images/old/menubarSprite.gif) repeat-x;
82} 79}
83 80
84div#menus { 81div#menus {
85 background: url(../images/old/menubarSprite.gif) no-repeat right -26px; 82 background: url(../images/old/menubarSprite.gif) no-repeat right -26px;
86} 83}
87 84
88div#menus table { 85div#menus table {
89 background: url(../images/old/menubarSprite.gif) no-repeat 0 -52px; 86 background: url(../images/old/menubarSprite.gif) no-repeat 0 -52px;
90} 87}
91 88
92div#menus table tbody tr td div { 89div#menus table tbody tr td div {
93 background: url(../images/old/menubarSprite.gif) no-repeat right -52px; 90 background: url(../images/old/menubarSprite.gif) no-repeat right -52px;
94} 91}
95 92
96div#menus table tbody tr td div a { 93div#menus table tbody tr td div a {
97 background: url(../images/old/menubarSprite.gif) no-repeat left -26px; 94 background: url(../images/old/menubarSprite.gif) no-repeat left -26px;
98} 95}
99 96
100div#menus table tbody tr td.selectedTab { 97div#menus table tbody tr td.selectedTab {
101 background: url(../images/old/menubarSprite.gif) repeat-x right -78px; 98 background: url(../images/old/menubarSprite.gif) repeat-x right -78px;
102} 99}
103 100
104div#menus table tbody tr td.selectedTab div { 101div#menus table tbody tr td.selectedTab div {
105 background: url(../images/old/menubarSprite.gif) no-repeat right -130px; 102 background: url(../images/old/menubarSprite.gif) no-repeat right -130px;
106} 103}
107 104
108div#menus table tbody tr td.selectedTab div a { 105div#menus table tbody tr td.selectedTab div a {
109 background: url(../images/old/menubarSprite.gif) no-repeat left -104px; 106 background: url(../images/old/menubarSprite.gif) no-repeat left -104px;
110} 107}
111 108
112div.clipperzLoginForm div.loginFormHeaderBox { 109div.clipperzLoginForm div.loginFormHeaderBox {
113 background: url(../images/old/loginFormBox.png) no-repeat -3px top; 110 background: url(../images/old/loginFormBox.png) no-repeat -3px top;
114} 111}
115 112
116div.clipperzLoginForm div.loginForm { 113div.clipperzLoginForm div.loginForm {
117 background: url(../images/old/loginFormBox.png) repeat-y -408px; 114 background: url(../images/old/loginFormBox.png) repeat-y -408px;
118} 115}
119 116
120div.loginForm div.loginFormFooterBox { 117div.loginForm div.loginFormFooterBox {
diff --git a/frontend/gamma/html/exitPage_template.html b/frontend/gamma/html/exitPage_template.html
index 7056320..b46f9f6 100644
--- a/frontend/gamma/html/exitPage_template.html
+++ b/frontend/gamma/html/exitPage_template.html
@@ -1,120 +1,117 @@
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<html> 26<html>
30<head> 27<head>
31 <title>clipperz</title> 28 <title>clipperz</title>
32 <link rel="stylesheet" type="text/css" href="./static.css" /> 29 <link rel="stylesheet" type="text/css" href="./static.css" />
33 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 30 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
34</head> 31</head>
35<body> 32<body>
36 33
37<!-- h1>clipper<span class="logo_z">z</span></h1 --> 34<!-- h1>clipper<span class="logo_z">z</span></h1 -->
38<div class="header"> 35<div class="header">
39 <div id="logo"></div> 36 <div id="logo"></div>
40 <h5 class="clipperzPayoff">keep it to yourself!</h5> 37 <h5 class="clipperzPayoff">keep it to yourself!</h5>
41</div> 38</div>
42 39
43 40
44<div class="contentWrapper"> 41<div class="contentWrapper">
45 <div class="block1"> 42 <div class="block1">
46 <div class="languageBlock en-us"> 43 <div class="languageBlock en-us">
47 <div class="flags"></div> 44 <div class="flags"></div>
48 <div class="content"> 45 <div class="content">
49 <h3>Goodbye! Thanks for using Clipperz.</h3> 46 <h3>Goodbye! Thanks for using Clipperz.</h3>
50 47
51 <p>You just logged out from your Clipperz account. We hope to see you again soon!</p> 48 <p>You just logged out from your Clipperz account. We hope to see you again soon!</p>
52 </div> 49 </div>
53 </div> 50 </div>
54 51
55 52
56 <div class="languageBlock zh-cn"> 53 <div class="languageBlock zh-cn">
57 <div class="flags"></div> 54 <div class="flags"></div>
58 <div class="content"> 55 <div class="content">
59 <h3>下次再见!感谢您使用 Clipperz。</h3> 56 <h3>下次再见!感谢您使用 Clipperz。</h3>
60 57
61 <p>您仅仅是从您的 Clipperz 账户登出,我们希望很快再次见到您!</p> 58 <p>您仅仅是从您的 Clipperz 账户登出,我们希望很快再次见到您!</p>
62 </div> 59 </div>
63 </div> 60 </div>
64 61
65 62
66 <!-- 63 <!--
67 <div class="languageBlock fr-fr"> 64 <div class="languageBlock fr-fr">
68 <div class="flags"></div> 65 <div class="flags"></div>
69 <div class="content"> 66 <div class="content">
70 <h3></h3> 67 <h3></h3>
71 68
72 <p></p> 69 <p></p>
73 </div> 70 </div>
74 </div> 71 </div>
75 --> 72 -->
76 73
77 74
78 <div class="languageBlock it-it"> 75 <div class="languageBlock it-it">
79 <div class="flags"></div> 76 <div class="flags"></div>
80 <div class="content"> 77 <div class="content">
81 <h3>Arrivederci! Grazie per aver scelto Clipperz.</h3> 78 <h3>Arrivederci! Grazie per aver scelto Clipperz.</h3>
82 79
83 <p>Sei uscito da Clipperz. Speriamo di rivederti presto.</p> 80 <p>Sei uscito da Clipperz. Speriamo di rivederti presto.</p>
84 </div> 81 </div>
85 </div> 82 </div>
86 83
87 84
88 <div class="languageBlock ja-jp"> 85 <div class="languageBlock ja-jp">
89 <div class="flags"></div> 86 <div class="flags"></div>
90 <div class="content"> 87 <div class="content">
91 <h3>Clipperz をご利用いただきありがとうございました。</h3> 88 <h3>Clipperz をご利用いただきありがとうございました。</h3>
92 89
93 <p>Clipperz から正常にログアウトしました。またのご利用をお待ちしています。</p> 90 <p>Clipperz から正常にログアウトしました。またのご利用をお待ちしています。</p>
94 </div> 91 </div>
95 </div> 92 </div>
96 </div> 93 </div>
97 94
98 <div class="block2"> 95 <div class="block2">
99 <div class="languageBlock pt-br"> 96 <div class="languageBlock pt-br">
100 <div class="flags"></div> 97 <div class="flags"></div>
101 <div class="content"> 98 <div class="content">
102 <h3>Até logo! Obrigado por utilizar Clipperz.</h3> 99 <h3>Até logo! Obrigado por utilizar Clipperz.</h3>
103 100
104 <p>Você acaba de sair de sua conta Clipperz. Esperamos ve-lo de volta em breve!</p> 101 <p>Você acaba de sair de sua conta Clipperz. Esperamos ve-lo de volta em breve!</p>
105 </div> 102 </div>
106 </div> 103 </div>
107 104
108 105
109 <div class="languageBlock es-es"> 106 <div class="languageBlock es-es">
110 <div class="flags"></div> 107 <div class="flags"></div>
111 <div class="content"> 108 <div class="content">
112 <h3>¡Hasta luego! Gracias por usar Clipperz</h3> 109 <h3>¡Hasta luego! Gracias por usar Clipperz</h3>
113 110
114 <p>Se acaba cerrar su sesión Clipperz. ¡Esperamos verlo nuevamente pronto!</p> 111 <p>Se acaba cerrar su sesión Clipperz. ¡Esperamos verlo nuevamente pronto!</p>
115 </div> 112 </div>
116 </div> 113 </div>
117 114
118 <div class="languageBlock ru-ru"> 115 <div class="languageBlock ru-ru">
119 <div class="flags"></div> 116 <div class="flags"></div>
120 <div class="content"> 117 <div class="content">
diff --git a/frontend/gamma/html/mobile_template.html b/frontend/gamma/html/mobile_template.html
index adc36e9..0a1b54c 100644
--- a/frontend/gamma/html/mobile_template.html
+++ b/frontend/gamma/html/mobile_template.html
@@ -1,87 +1,84 @@
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<html> 26<html>
30<head> 27<head>
31 <title>@page.title@</title> 28 <title>@page.title@</title>
32 <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 29 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
33@copyright@ 30@copyright@
34@css@ 31@css@
35 32
36 <link rel="shortcut icon" href="./clipperz.ico" /> 33 <link rel="shortcut icon" href="./clipperz.ico" />
37 34
38 <meta name="description" content="Login to your web accounts with just one click. Never type a password again! Use multiple complex passwords and forget them. A password manager that enhances your online security." /> 35 <meta name="description" content="Login to your web accounts with just one click. Never type a password again! Use multiple complex passwords and forget them. A password manager that enhances your online security." />
39 <meta name="keywords" content="password manager,gestor de contraseñas,gerenciador de senhas,Kennwortmanager,passwords,security,privacy,cryptography" /> 36 <meta name="keywords" content="password manager,gestor de contraseñas,gerenciador de senhas,Kennwortmanager,passwords,security,privacy,cryptography" />
40<script> 37<script>
41 Clipperz_IEisBroken = false; 38 Clipperz_IEisBroken = false;
42 Clipperz_normalizedNewLine = '\n'; 39 Clipperz_normalizedNewLine = '\n';
43 Clipperz_dumpUrl = "/dump/"; 40 Clipperz_dumpUrl = "/dump/";
44</script> 41</script>
45 42
46<!--[if IE]><script> 43<!--[if IE]><script>
47Clipperz_IEisBroken = true; 44Clipperz_IEisBroken = true;
48Clipperz_normalizedNewLine = '\x0d\x0a'; 45Clipperz_normalizedNewLine = '\x0d\x0a';
49</script><![endif]--> 46</script><![endif]-->
50 47
51@CLIPPERZ_DEBUG_VERSION@ 48@CLIPPERZ_DEBUG_VERSION@
52 49
53</head> 50</head>
54<body> 51<body>
55<div id="mainDiv"> 52<div id="mainDiv">
56 <div id="loading"> 53 <div id="loading">
57 <a href="http://www.clipperz.com" target="_blank"><div id="logo"></div></a> 54 <a href="http://www.clipperz.com" target="_blank"><div id="logo"></div></a>
58 <h5 class="clipperzPayoff">keep it to yourself!</h5> 55 <h5 class="clipperzPayoff">keep it to yourself!</h5>
59 <h2>loading ...</h2> 56 <h2>loading ...</h2>
60 </div> 57 </div>
61 58
62@CLIPPERZ_INSTALLED_VERSION@ 59@CLIPPERZ_INSTALLED_VERSION@
63 60
64</div> 61</div>
65<div id="applicationVersionType" class="@application.version.type@"></div> 62<div id="applicationVersionType" class="@application.version.type@"></div>
66 63
67<!-- --> 64<!-- -->
68<div id="javaScriptAlert"> 65<div id="javaScriptAlert">
69 <div class="mask"></div> 66 <div class="mask"></div>
70 <div class="message"> 67 <div class="message">
71 <div class="header"></div> 68 <div class="header"></div>
72 <div class="body"> 69 <div class="body">
73 <div class="alertLogo"></div> 70 <div class="alertLogo"></div>
74 <div class="alert"> 71 <div class="alert">
75 <h1>Attention!</h1> 72 <h1>Attention!</h1>
76 <p>If you can read this message, the chances are that your browser does not properly support JavaScript? or you have disabled this functionality yourself.</p> 73 <p>If you can read this message, the chances are that your browser does not properly support JavaScript? or you have disabled this functionality yourself.</p>
77 <h3>Javascript is required to access Clipperz.</h3> 74 <h3>Javascript is required to access Clipperz.</h3>
78 <h5>Please enable scripting or upgrade your browser.</h5> 75 <h5>Please enable scripting or upgrade your browser.</h5>
79 </div> 76 </div>
80 </div> 77 </div>
81 <div class="footer"></div> 78 <div class="footer"></div>
82 </div> 79 </div>
83</div> 80</div>
84<!-- --> 81<!-- -->
85 82
86</body> 83</body>
87</html> 84</html>
diff --git a/frontend/gamma/js/Bookmarklet.js b/frontend/gamma/js/Bookmarklet.js
index a8e3e69..bcdcc46 100644
--- a/frontend/gamma/js/Bookmarklet.js
+++ b/frontend/gamma/js/Bookmarklet.js
@@ -1,120 +1,117 @@
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_copiedContentToClipboard = false; 26clipperz_copiedContentToClipboard = false;
30 27
31//############################################################################# 28//#############################################################################
32 29
33// Simple Set Clipboard System 30// Simple Set Clipboard System
34// Author: Joseph Huckaby 31// Author: Joseph Huckaby
35 32
36var ZeroClipboard = { 33var ZeroClipboard = {
37 34
38 version: "1.0.4", 35 version: "1.0.4",
39 clients: {}, // registered upload clients on page, indexed by id 36 clients: {}, // registered upload clients on page, indexed by id
40 //moviePath: 'ZeroClipboard.swf', // URL to movie 37 //moviePath: 'ZeroClipboard.swf', // URL to movie
41 //moviePath: 'data:application/octet-stream;charset=utf-8;base64,Q1dTCYgGAAB4nH1V61LbRhTeXV2OJNsYczFgIEC4JCGABSRpSy+B2JDQQtWJocl0BqK1tUZqhOSRZAj/8ih9hz5AXsGZTl+ndHUhxU2nO56z3/l05uye7+wc6xr6DeUxqpcUhFCNXF9ffxjNcYhRo8U8NruO0IeRLTkm+BpEa4i8/+t3GRGUrRf5tktDe41dMC8Kpd14Q/DM911GPfHCd6zCLyzwa67Tafo0sAppuOWEHZdeyY1O4ERMbnajyPcKIYteUM+qdYPQD/It12m9jX2XBcSx5EYUON6ZwunOEXsXAY+O94HsAu8iFnjULe1mYN/je5u2WLnvAsnRNGrZ6rnfDZlxwQKxRV1XSd1ulPJ1/9KDBB13pDCiZ2ygEdsGj2WHvsXU3dc7taM3e/tHanjDZVqEV2HEzpUGa3V5dVd4Ocfz+5d1/5w6nnbgU4sF+17bFwPfjzT3k691aEDPGb92KBvNX1krmrOjqLNVrVLLb7K1ln9e3WlsVjd0/Um12XXcyPFy6ZHdyHHDkT5tt1JtF/rJerqn6Wu+F/ErsWCmPyiRjrYi54KlgZP/k2Tq9gPYSh5APZOYBVra2VicAtfyn+4qZwHt2E4rVJvszPH2HNcVD2lkS5eOxW3b9f1AtplzZkeKFdDLl/wkibodmyrUsmq241raYdye5ECpdrBf+2GQf0ncA4c3gJelHRrHjd03xs+7L9UMHh9lZN149aOSwuOfcnFO3qQmbb0V44aoSVEXlHeikXQzz1/bpzek8E50XN6o4r/KLfQpU/pMx/J/yz9cxmWhDOOyhMqD5SkJjQnKYnmpIlfuVe5XHlSWKw8rC6QoEayoWk7MFwaKg6Whx4AJEBGIBEQGQQFJBaKBlAMpD6QA0gCQIsglICNAxkGYAFIBMgkwDWQGhFkgc0DuApkHsqDmMZAVIKtA1oBUgejqOmc21E1uHwF5DOQJ4C+AfAnkKyBbQL4G8g2Qb4F8B+o2wA6QZ4DrIOyCsAfCcw0lUwR/ZvgiOP3IhwgWcDZIsCipIpJkPmskBBiBgpGiIqQJOJdYPqbiOaRiUcRIQ5hrIfT055ySiKYVzMLKkKmuDM8aAyInyW1yNCOF22Q5I8Xb5FhGSjLR8n/gnv5q+U+9t4/MojnYLtEhc3jljjGCGT4Z7bXL7bG9Udwefz9xjk9Vhl3crtjqqXwifS8hWzblJToZmylTbk+vYuMOjsECWjZnkuDZvTmcwbscGvOiKVcxXThZNGVjkQebS+17pmLcJwl8sI1v4PI2uYEPt4UbuLItxrCwoplgrMagaOZTENf2NK0NryE8gWRCVE3p6ae5j3aOFwyZb8of6RT3FYn7Y9yvmjlDx1mKGncSfVTC9Z/v6QyZE7q5rpsburmpm490U+K/12g6WXYc+nR4CKX/H31zGG1z5m9Pt5okCg==', 38 //moviePath: 'data:application/octet-stream;charset=utf-8;base64,Q1dTCYgGAAB4nH1V61LbRhTeXV2OJNsYczFgIEC4JCGABSRpSy+B2JDQQtWJocl0BqK1tUZqhOSRZAj/8ih9hz5AXsGZTl+ndHUhxU2nO56z3/l05uye7+wc6xr6DeUxqpcUhFCNXF9ffxjNcYhRo8U8NruO0IeRLTkm+BpEa4i8/+t3GRGUrRf5tktDe41dMC8Kpd14Q/DM911GPfHCd6zCLyzwa67Tafo0sAppuOWEHZdeyY1O4ERMbnajyPcKIYteUM+qdYPQD/It12m9jX2XBcSx5EYUON6ZwunOEXsXAY+O94HsAu8iFnjULe1mYN/je5u2WLnvAsnRNGrZ6rnfDZlxwQKxRV1XSd1ulPJ1/9KDBB13pDCiZ2ygEdsGj2WHvsXU3dc7taM3e/tHanjDZVqEV2HEzpUGa3V5dVd4Ocfz+5d1/5w6nnbgU4sF+17bFwPfjzT3k691aEDPGb92KBvNX1krmrOjqLNVrVLLb7K1ln9e3WlsVjd0/Um12XXcyPFy6ZHdyHHDkT5tt1JtF/rJerqn6Wu+F/ErsWCmPyiRjrYi54KlgZP/k2Tq9gPYSh5APZOYBVra2VicAtfyn+4qZwHt2E4rVJvszPH2HNcVD2lkS5eOxW3b9f1AtplzZkeKFdDLl/wkibodmyrUsmq241raYdye5ECpdrBf+2GQf0ncA4c3gJelHRrHjd03xs+7L9UMHh9lZN149aOSwuOfcnFO3qQmbb0V44aoSVEXlHeikXQzz1/bpzek8E50XN6o4r/KLfQpU/pMx/J/yz9cxmWhDOOyhMqD5SkJjQnKYnmpIlfuVe5XHlSWKw8rC6QoEayoWk7MFwaKg6Whx4AJEBGIBEQGQQFJBaKBlAMpD6QA0gCQIsglICNAxkGYAFIBMgkwDWQGhFkgc0DuApkHsqDmMZAVIKtA1oBUgejqOmc21E1uHwF5DOQJ4C+AfAnkKyBbQL4G8g2Qb4F8B+o2wA6QZ4DrIOyCsAfCcw0lUwR/ZvgiOP3IhwgWcDZIsCipIpJkPmskBBiBgpGiIqQJOJdYPqbiOaRiUcRIQ5hrIfT055ySiKYVzMLKkKmuDM8aAyInyW1yNCOF22Q5I8Xb5FhGSjLR8n/gnv5q+U+9t4/MojnYLtEhc3jljjGCGT4Z7bXL7bG9Udwefz9xjk9Vhl3crtjqqXwifS8hWzblJToZmylTbk+vYuMOjsECWjZnkuDZvTmcwbscGvOiKVcxXThZNGVjkQebS+17pmLcJwl8sI1v4PI2uYEPt4UbuLItxrCwoplgrMagaOZTENf2NK0NryE8gWRCVE3p6ae5j3aOFwyZb8of6RT3FYn7Y9yvmjlDx1mKGncSfVTC9Z/v6QyZE7q5rpsburmpm490U+K/12g6WXYc+nR4CKX/H31zGG1z5m9Pt5okCg==',
42 //moviePath: 'http://localhost:8000/tests/js/tests/Bookmarklet/ZeroClipboard.swf', 39 //moviePath: 'http://localhost:8000/tests/js/tests/Bookmarklet/ZeroClipboard.swf',
43 moviePath: 'http://www.clipperz.com/files/clipperz.com/bookmarklet/0.3.0/ZeroClipboard_1.0.4.swf', 40 moviePath: 'http://www.clipperz.com/files/clipperz.com/bookmarklet/0.3.0/ZeroClipboard_1.0.4.swf',
44 //moviePath: './ZeroClipboard.swf', 41 //moviePath: './ZeroClipboard.swf',
45 nextId: 1, // ID of next movie 42 nextId: 1, // ID of next movie
46 43
47 $: function(thingy) { 44 $: function(thingy) {
48 // simple DOM lookup utility function 45 // simple DOM lookup utility function
49 if (typeof(thingy) == 'string') thingy = document.getElementById(thingy); 46 if (typeof(thingy) == 'string') thingy = document.getElementById(thingy);
50 if (!thingy.addClass) { 47 if (!thingy.addClass) {
51 // extend element with a few useful methods 48 // extend element with a few useful methods
52 thingy.hide = function() { this.style.display = 'none'; }; 49 thingy.hide = function() { this.style.display = 'none'; };
53 thingy.show = function() { this.style.display = ''; }; 50 thingy.show = function() { this.style.display = ''; };
54 thingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; }; 51 thingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; };
55 thingy.removeClass = function(name) { 52 thingy.removeClass = function(name) {
56 this.className = this.className.replace( new RegExp("\\s*" + name + "\\s*"), " ").replace(/^\s+/, '').replace(/\s+$/, ''); 53 this.className = this.className.replace( new RegExp("\\s*" + name + "\\s*"), " ").replace(/^\s+/, '').replace(/\s+$/, '');
57 }; 54 };
58 thingy.hasClass = function(name) { 55 thingy.hasClass = function(name) {
59 return !!this.className.match( new RegExp("\\s*" + name + "\\s*") ); 56 return !!this.className.match( new RegExp("\\s*" + name + "\\s*") );
60 } 57 }
61 } 58 }
62 return thingy; 59 return thingy;
63 }, 60 },
64 61
65 setMoviePath: function(path) { 62 setMoviePath: function(path) {
66 // set path to ZeroClipboard.swf 63 // set path to ZeroClipboard.swf
67 this.moviePath = path; 64 this.moviePath = path;
68 }, 65 },
69 66
70 dispatch: function(id, eventName, args) { 67 dispatch: function(id, eventName, args) {
71 // receive event from flash movie, send to client 68 // receive event from flash movie, send to client
72 var client = this.clients[id]; 69 var client = this.clients[id];
73 if (client) { 70 if (client) {
74 client.receiveEvent(eventName, args); 71 client.receiveEvent(eventName, args);
75 } 72 }
76 }, 73 },
77 74
78 register: function(id, client) { 75 register: function(id, client) {
79 // register new client to receive events 76 // register new client to receive events
80 this.clients[id] = client; 77 this.clients[id] = client;
81 }, 78 },
82 79
83 getDOMObjectPosition: function(obj) { 80 getDOMObjectPosition: function(obj) {
84 // get absolute coordinates for dom element 81 // get absolute coordinates for dom element
85 var info = { 82 var info = {
86 left: 0, 83 left: 0,
87 top: 0, 84 top: 0,
88 width: obj.width ? obj.width : obj.offsetWidth, 85 width: obj.width ? obj.width : obj.offsetWidth,
89 height: obj.height ? obj.height : obj.offsetHeight 86 height: obj.height ? obj.height : obj.offsetHeight
90 }; 87 };
91 88
92 while (obj) { 89 while (obj) {
93 info.left += obj.offsetLeft; 90 info.left += obj.offsetLeft;
94 info.top += obj.offsetTop; 91 info.top += obj.offsetTop;
95 obj = obj.offsetParent; 92 obj = obj.offsetParent;
96 } 93 }
97 94
98 return info; 95 return info;
99 }, 96 },
100 97
101 Client: function(elem) { 98 Client: function(elem) {
102 // constructor for new simple upload client 99 // constructor for new simple upload client
103 this.handlers = {}; 100 this.handlers = {};
104 101
105 // unique ID 102 // unique ID
106 this.id = ZeroClipboard.nextId++; 103 this.id = ZeroClipboard.nextId++;
107 this.movieId = 'ZeroClipboardMovie_' + this.id; 104 this.movieId = 'ZeroClipboardMovie_' + this.id;
108 105
109 // register client with singleton to receive flash events 106 // register client with singleton to receive flash events
110 ZeroClipboard.register(this.id, this); 107 ZeroClipboard.register(this.id, this);
111 108
112 // create movie 109 // create movie
113 if (elem) this.glue(elem); 110 if (elem) this.glue(elem);
114 } 111 }
115}; 112};
116 113
117ZeroClipboard.Client.prototype = { 114ZeroClipboard.Client.prototype = {
118 115
119 id: 0, // unique ID for us 116 id: 0, // unique ID for us
120 ready: false, // whether movie is ready to receive events or not 117 ready: false, // whether movie is ready to receive events or not
diff --git a/frontend/gamma/js/BookmarkletHash.js b/frontend/gamma/js/BookmarkletHash.js
index 2e0714c..c3039f5 100644
--- a/frontend/gamma/js/BookmarkletHash.js
+++ b/frontend/gamma/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
47//console.log(documentText); \ No newline at end of file 44//console.log(documentText); \ No newline at end of file
diff --git a/frontend/gamma/js/Bookmarklet_1.js b/frontend/gamma/js/Bookmarklet_1.js
index d117479..c7c7ae6 100644
--- a/frontend/gamma/js/Bookmarklet_1.js
+++ b/frontend/gamma/js/Bookmarklet_1.js
@@ -1,120 +1,117 @@
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;
diff --git a/frontend/gamma/js/Bookmarklet_2.js b/frontend/gamma/js/Bookmarklet_2.js
index f9c40a9..02f7de8 100644
--- a/frontend/gamma/js/Bookmarklet_2.js
+++ b/frontend/gamma/js/Bookmarklet_2.js
@@ -1,120 +1,117 @@
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_copiedContentToClipboard = false; 26clipperz_copiedContentToClipboard = false;
30 27
31//############################################################################# 28//#############################################################################
32 29
33// Simple Set Clipboard System 30// Simple Set Clipboard System
34// Author: Joseph Huckaby 31// Author: Joseph Huckaby
35 32
36var ZeroClipboard = { 33var ZeroClipboard = {
37 34
38 version: "1.0.4", 35 version: "1.0.4",
39 clients: {}, // registered upload clients on page, indexed by id 36 clients: {}, // registered upload clients on page, indexed by id
40 //moviePath: 'ZeroClipboard.swf', // URL to movie 37 //moviePath: 'ZeroClipboard.swf', // URL to movie
41 //moviePath: 'data:application/octet-stream;charset=utf-8;base64,Q1dTCYgGAAB4nH1V61LbRhTeXV2OJNsYczFgIEC4JCGABSRpSy+B2JDQQtWJocl0BqK1tUZqhOSRZAj/8ih9hz5AXsGZTl+ndHUhxU2nO56z3/l05uye7+wc6xr6DeUxqpcUhFCNXF9ffxjNcYhRo8U8NruO0IeRLTkm+BpEa4i8/+t3GRGUrRf5tktDe41dMC8Kpd14Q/DM911GPfHCd6zCLyzwa67Tafo0sAppuOWEHZdeyY1O4ERMbnajyPcKIYteUM+qdYPQD/It12m9jX2XBcSx5EYUON6ZwunOEXsXAY+O94HsAu8iFnjULe1mYN/je5u2WLnvAsnRNGrZ6rnfDZlxwQKxRV1XSd1ulPJ1/9KDBB13pDCiZ2ygEdsGj2WHvsXU3dc7taM3e/tHanjDZVqEV2HEzpUGa3V5dVd4Ocfz+5d1/5w6nnbgU4sF+17bFwPfjzT3k691aEDPGb92KBvNX1krmrOjqLNVrVLLb7K1ln9e3WlsVjd0/Um12XXcyPFy6ZHdyHHDkT5tt1JtF/rJerqn6Wu+F/ErsWCmPyiRjrYi54KlgZP/k2Tq9gPYSh5APZOYBVra2VicAtfyn+4qZwHt2E4rVJvszPH2HNcVD2lkS5eOxW3b9f1AtplzZkeKFdDLl/wkibodmyrUsmq241raYdye5ECpdrBf+2GQf0ncA4c3gJelHRrHjd03xs+7L9UMHh9lZN149aOSwuOfcnFO3qQmbb0V44aoSVEXlHeikXQzz1/bpzek8E50XN6o4r/KLfQpU/pMx/J/yz9cxmWhDOOyhMqD5SkJjQnKYnmpIlfuVe5XHlSWKw8rC6QoEayoWk7MFwaKg6Whx4AJEBGIBEQGQQFJBaKBlAMpD6QA0gCQIsglICNAxkGYAFIBMgkwDWQGhFkgc0DuApkHsqDmMZAVIKtA1oBUgejqOmc21E1uHwF5DOQJ4C+AfAnkKyBbQL4G8g2Qb4F8B+o2wA6QZ4DrIOyCsAfCcw0lUwR/ZvgiOP3IhwgWcDZIsCipIpJkPmskBBiBgpGiIqQJOJdYPqbiOaRiUcRIQ5hrIfT055ySiKYVzMLKkKmuDM8aAyInyW1yNCOF22Q5I8Xb5FhGSjLR8n/gnv5q+U+9t4/MojnYLtEhc3jljjGCGT4Z7bXL7bG9Udwefz9xjk9Vhl3crtjqqXwifS8hWzblJToZmylTbk+vYuMOjsECWjZnkuDZvTmcwbscGvOiKVcxXThZNGVjkQebS+17pmLcJwl8sI1v4PI2uYEPt4UbuLItxrCwoplgrMagaOZTENf2NK0NryE8gWRCVE3p6ae5j3aOFwyZb8of6RT3FYn7Y9yvmjlDx1mKGncSfVTC9Z/v6QyZE7q5rpsburmpm490U+K/12g6WXYc+nR4CKX/H31zGG1z5m9Pt5okCg==', 38 //moviePath: 'data:application/octet-stream;charset=utf-8;base64,Q1dTCYgGAAB4nH1V61LbRhTeXV2OJNsYczFgIEC4JCGABSRpSy+B2JDQQtWJocl0BqK1tUZqhOSRZAj/8ih9hz5AXsGZTl+ndHUhxU2nO56z3/l05uye7+wc6xr6DeUxqpcUhFCNXF9ffxjNcYhRo8U8NruO0IeRLTkm+BpEa4i8/+t3GRGUrRf5tktDe41dMC8Kpd14Q/DM911GPfHCd6zCLyzwa67Tafo0sAppuOWEHZdeyY1O4ERMbnajyPcKIYteUM+qdYPQD/It12m9jX2XBcSx5EYUON6ZwunOEXsXAY+O94HsAu8iFnjULe1mYN/je5u2WLnvAsnRNGrZ6rnfDZlxwQKxRV1XSd1ulPJ1/9KDBB13pDCiZ2ygEdsGj2WHvsXU3dc7taM3e/tHanjDZVqEV2HEzpUGa3V5dVd4Ocfz+5d1/5w6nnbgU4sF+17bFwPfjzT3k691aEDPGb92KBvNX1krmrOjqLNVrVLLb7K1ln9e3WlsVjd0/Um12XXcyPFy6ZHdyHHDkT5tt1JtF/rJerqn6Wu+F/ErsWCmPyiRjrYi54KlgZP/k2Tq9gPYSh5APZOYBVra2VicAtfyn+4qZwHt2E4rVJvszPH2HNcVD2lkS5eOxW3b9f1AtplzZkeKFdDLl/wkibodmyrUsmq241raYdye5ECpdrBf+2GQf0ncA4c3gJelHRrHjd03xs+7L9UMHh9lZN149aOSwuOfcnFO3qQmbb0V44aoSVEXlHeikXQzz1/bpzek8E50XN6o4r/KLfQpU/pMx/J/yz9cxmWhDOOyhMqD5SkJjQnKYnmpIlfuVe5XHlSWKw8rC6QoEayoWk7MFwaKg6Whx4AJEBGIBEQGQQFJBaKBlAMpD6QA0gCQIsglICNAxkGYAFIBMgkwDWQGhFkgc0DuApkHsqDmMZAVIKtA1oBUgejqOmc21E1uHwF5DOQJ4C+AfAnkKyBbQL4G8g2Qb4F8B+o2wA6QZ4DrIOyCsAfCcw0lUwR/ZvgiOP3IhwgWcDZIsCipIpJkPmskBBiBgpGiIqQJOJdYPqbiOaRiUcRIQ5hrIfT055ySiKYVzMLKkKmuDM8aAyInyW1yNCOF22Q5I8Xb5FhGSjLR8n/gnv5q+U+9t4/MojnYLtEhc3jljjGCGT4Z7bXL7bG9Udwefz9xjk9Vhl3crtjqqXwifS8hWzblJToZmylTbk+vYuMOjsECWjZnkuDZvTmcwbscGvOiKVcxXThZNGVjkQebS+17pmLcJwl8sI1v4PI2uYEPt4UbuLItxrCwoplgrMagaOZTENf2NK0NryE8gWRCVE3p6ae5j3aOFwyZb8of6RT3FYn7Y9yvmjlDx1mKGncSfVTC9Z/v6QyZE7q5rpsburmpm490U+K/12g6WXYc+nR4CKX/H31zGG1z5m9Pt5okCg==',
42 //moviePath: 'http://localhost:8000/tests/js/tests/Bookmarklet/ZeroClipboard.swf', 39 //moviePath: 'http://localhost:8000/tests/js/tests/Bookmarklet/ZeroClipboard.swf',
43 moviePath: 'http://www.clipperz.com/files/clipperz.com/bookmarklet/0.3.0/ZeroClipboard_1.0.4.swf', 40 moviePath: 'http://www.clipperz.com/files/clipperz.com/bookmarklet/0.3.0/ZeroClipboard_1.0.4.swf',
44 nextId: 1, // ID of next movie 41 nextId: 1, // ID of next movie
45 42
46 $: function(thingy) { 43 $: function(thingy) {
47 // simple DOM lookup utility function 44 // simple DOM lookup utility function
48 if (typeof(thingy) == 'string') thingy = document.getElementById(thingy); 45 if (typeof(thingy) == 'string') thingy = document.getElementById(thingy);
49 if (!thingy.addClass) { 46 if (!thingy.addClass) {
50 // extend element with a few useful methods 47 // extend element with a few useful methods
51 thingy.hide = function() { this.style.display = 'none'; }; 48 thingy.hide = function() { this.style.display = 'none'; };
52 thingy.show = function() { this.style.display = ''; }; 49 thingy.show = function() { this.style.display = ''; };
53 thingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; }; 50 thingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; };
54 thingy.removeClass = function(name) { 51 thingy.removeClass = function(name) {
55 this.className = this.className.replace( new RegExp("\\s*" + name + "\\s*"), " ").replace(/^\s+/, '').replace(/\s+$/, ''); 52 this.className = this.className.replace( new RegExp("\\s*" + name + "\\s*"), " ").replace(/^\s+/, '').replace(/\s+$/, '');
56 }; 53 };
57 thingy.hasClass = function(name) { 54 thingy.hasClass = function(name) {
58 return !!this.className.match( new RegExp("\\s*" + name + "\\s*") ); 55 return !!this.className.match( new RegExp("\\s*" + name + "\\s*") );
59 } 56 }
60 } 57 }
61 return thingy; 58 return thingy;
62 }, 59 },
63 60
64 setMoviePath: function(path) { 61 setMoviePath: function(path) {
65 // set path to ZeroClipboard.swf 62 // set path to ZeroClipboard.swf
66 this.moviePath = path; 63 this.moviePath = path;
67 }, 64 },
68 65
69 dispatch: function(id, eventName, args) { 66 dispatch: function(id, eventName, args) {
70 // receive event from flash movie, send to client 67 // receive event from flash movie, send to client
71 var client = this.clients[id]; 68 var client = this.clients[id];
72 if (client) { 69 if (client) {
73 client.receiveEvent(eventName, args); 70 client.receiveEvent(eventName, args);
74 } 71 }
75 }, 72 },
76 73
77 register: function(id, client) { 74 register: function(id, client) {
78 // register new client to receive events 75 // register new client to receive events
79 this.clients[id] = client; 76 this.clients[id] = client;
80 }, 77 },
81 78
82 getDOMObjectPosition: function(obj) { 79 getDOMObjectPosition: function(obj) {
83 // get absolute coordinates for dom element 80 // get absolute coordinates for dom element
84 var info = { 81 var info = {
85 left: 0, 82 left: 0,
86 top: 0, 83 top: 0,
87 width: obj.width ? obj.width : obj.offsetWidth, 84 width: obj.width ? obj.width : obj.offsetWidth,
88 height: obj.height ? obj.height : obj.offsetHeight 85 height: obj.height ? obj.height : obj.offsetHeight
89 }; 86 };
90 87
91 while (obj) { 88 while (obj) {
92 info.left += obj.offsetLeft; 89 info.left += obj.offsetLeft;
93 info.top += obj.offsetTop; 90 info.top += obj.offsetTop;
94 obj = obj.offsetParent; 91 obj = obj.offsetParent;
95 } 92 }
96 93
97 return info; 94 return info;
98 }, 95 },
99 96
100 Client: function(elem) { 97 Client: function(elem) {
101 // constructor for new simple upload client 98 // constructor for new simple upload client
102 this.handlers = {}; 99 this.handlers = {};
103 100
104 // unique ID 101 // unique ID
105 this.id = ZeroClipboard.nextId++; 102 this.id = ZeroClipboard.nextId++;
106 this.movieId = 'ZeroClipboardMovie_' + this.id; 103 this.movieId = 'ZeroClipboardMovie_' + this.id;
107 104
108 // register client with singleton to receive flash events 105 // register client with singleton to receive flash events
109 ZeroClipboard.register(this.id, this); 106 ZeroClipboard.register(this.id, this);
110 107
111 // create movie 108 // create movie
112 if (elem) this.glue(elem); 109 if (elem) this.glue(elem);
113 } 110 }
114}; 111};
115 112
116ZeroClipboard.Client.prototype = { 113ZeroClipboard.Client.prototype = {
117 114
118 id: 0, // unique ID for us 115 id: 0, // unique ID for us
119 ready: false, // whether movie is ready to receive events or not 116 ready: false, // whether movie is ready to receive events or not
120 movie: null, // reference to movie object 117 movie: null, // reference to movie object
diff --git a/frontend/gamma/js/Clipperz/Async.js b/frontend/gamma/js/Clipperz/Async.js
index e80c3a2..7c9d783 100644
--- a/frontend/gamma/js/Clipperz/Async.js
+++ b/frontend/gamma/js/Clipperz/Async.js
@@ -1,120 +1,117 @@
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//Clipperz.Async = MochiKit.Async; 26//Clipperz.Async = MochiKit.Async;
30 27
31 28
32if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } 29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
33if (typeof(Clipperz.Async) == 'undefined') { Clipperz.Async = {}; } 30if (typeof(Clipperz.Async) == 'undefined') { Clipperz.Async = {}; }
34 31
35Clipperz.Async.VERSION = "0.1"; 32Clipperz.Async.VERSION = "0.1";
36Clipperz.Async.NAME = "Clipperz.Async"; 33Clipperz.Async.NAME = "Clipperz.Async";
37 34
38Clipperz.Async.Deferred = function(aName, args) { 35Clipperz.Async.Deferred = function(aName, args) {
39 args = args || {}; 36 args = args || {};
40 37
41 Clipperz.Async.Deferred.superclass.constructor.call(this, args.canceller); 38 Clipperz.Async.Deferred.superclass.constructor.call(this, args.canceller);
42 39
43 this._args = args; 40 this._args = args;
44 this._name = aName || "Anonymous deferred"; 41 this._name = aName || "Anonymous deferred";
45 this._count = 0; 42 this._count = 0;
46 this._shouldTrace = ((CLIPPERZ_DEFERRED_TRACING_ENABLED === true) || (args.trace === true)); 43 this._shouldTrace = ((CLIPPERZ_DEFERRED_TRACING_ENABLED === true) || (args.trace === true));
47 this._vars = null; 44 this._vars = null;
48 45
49 return this; 46 return this;
50} 47}
51 48
52//============================================================================= 49//=============================================================================
53 50
54Clipperz.Base.extend(Clipperz.Async.Deferred, MochiKit.Async.Deferred, { 51Clipperz.Base.extend(Clipperz.Async.Deferred, MochiKit.Async.Deferred, {
55 52
56 'name': function () { 53 'name': function () {
57 return this._name; 54 return this._name;
58 }, 55 },
59 56
60 'args': function () { 57 'args': function () {
61 return this._args; 58 return this._args;
62 }, 59 },
63 60
64 //----------------------------------------------------------------------------- 61 //-----------------------------------------------------------------------------
65 62
66 'callback': function (aValue) { 63 'callback': function (aValue) {
67 if (this._shouldTrace) { 64 if (this._shouldTrace) {
68 Clipperz.log("CALLBACK " + this._name, aValue); 65 Clipperz.log("CALLBACK " + this._name, aValue);
69 } 66 }
70 67
71 if (this.chained == false) { 68 if (this.chained == false) {
72 var message; 69 var message;
73 70
74 message = "ERROR [" + this._name + "]"; 71 message = "ERROR [" + this._name + "]";
75 this.addErrback(function(aResult) { 72 this.addErrback(function(aResult) {
76 if (! (aResult instanceof MochiKit.Async.CancelledError)) { 73 if (! (aResult instanceof MochiKit.Async.CancelledError)) {
77 Clipperz.log(message, aResult); 74 Clipperz.log(message, aResult);
78 } 75 }
79 return aResult; 76 return aResult;
80 }); 77 });
81 78
82 if (this._shouldTrace) { 79 if (this._shouldTrace) {
83 var resultMessage; 80 var resultMessage;
84 81
85 resultMessage = "RESULT " + this._name + " <=="; 82 resultMessage = "RESULT " + this._name + " <==";
86 // this.addCallback(function(aResult) { 83 // this.addCallback(function(aResult) {
87 Clipperz.Async.Deferred.superclass.addCallback.call(this, function(aResult) { 84 Clipperz.Async.Deferred.superclass.addCallback.call(this, function(aResult) {
88 Clipperz.log(resultMessage, aResult); 85 Clipperz.log(resultMessage, aResult);
89 86
90 return aResult; 87 return aResult;
91 }); 88 });
92 } 89 }
93 } 90 }
94 91
95 if (CLIPPERZ_DEFERRED_CALL_LOGGING_ENABLED === true) { 92 if (CLIPPERZ_DEFERRED_CALL_LOGGING_ENABLED === true) {
96 Clipperz.log("callback " + this._name, this); 93 Clipperz.log("callback " + this._name, this);
97 } 94 }
98 95
99 return Clipperz.Async.Deferred.superclass.callback.apply(this, arguments); 96 return Clipperz.Async.Deferred.superclass.callback.apply(this, arguments);
100 }, 97 },
101 98
102 //----------------------------------------------------------------------------- 99 //-----------------------------------------------------------------------------
103 100
104 'addCallback': function () { 101 'addCallback': function () {
105 var message; 102 var message;
106 103
107 if (this._shouldTrace) { 104 if (this._shouldTrace) {
108 this._count ++; 105 this._count ++;
109 message = "[" + this._count + "] " + this._name + " "; 106 message = "[" + this._count + "] " + this._name + " ";
110 // this.addBoth(function(aResult) {Clipperz.log(message + "-->", aResult); return aResult;}); 107 // this.addBoth(function(aResult) {Clipperz.log(message + "-->", aResult); return aResult;});
111 this.addCallbacks( 108 this.addCallbacks(
112 function(aResult) {Clipperz.log("-OK- " + message + "-->"/*, aResult*/); return aResult;}, 109 function(aResult) {Clipperz.log("-OK- " + message + "-->"/*, aResult*/); return aResult;},
113 function(aResult) {Clipperz.log("FAIL " + message + "-->"/*, aResult*/); return aResult;} 110 function(aResult) {Clipperz.log("FAIL " + message + "-->"/*, aResult*/); return aResult;}
114 ); 111 );
115 } 112 }
116 113
117 Clipperz.Async.Deferred.superclass.addCallback.apply(this, arguments); 114 Clipperz.Async.Deferred.superclass.addCallback.apply(this, arguments);
118 115
119 if (this._shouldTrace) { 116 if (this._shouldTrace) {
120 // this.addBoth(function(aResult) {Clipperz.log(message + "<--", aResult); return aResult;}); 117 // this.addBoth(function(aResult) {Clipperz.log(message + "<--", aResult); return aResult;});
diff --git a/frontend/gamma/js/Clipperz/Base.js b/frontend/gamma/js/Clipperz/Base.js
index 7f321ef..76b2c3f 100644
--- a/frontend/gamma/js/Clipperz/Base.js
+++ b/frontend/gamma/js/Clipperz/Base.js
@@ -1,120 +1,117 @@
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.2"; 29Clipperz.Base.VERSION = "0.2";
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 'itemgetter': function (aKeyPath) { 48 'itemgetter': function (aKeyPath) {
52 // return MochiKit.Base.compose.apply(null, [MochiKit.Base.itemgetter('key3')]); 49 // return MochiKit.Base.compose.apply(null, [MochiKit.Base.itemgetter('key3')]);
53 return MochiKit.Base.compose.apply(null, 50 return MochiKit.Base.compose.apply(null,
54 MochiKit.Base.map( 51 MochiKit.Base.map(
55 MochiKit.Base.itemgetter, 52 MochiKit.Base.itemgetter,
56 MochiKit.Iter.reversed( 53 MochiKit.Iter.reversed(
57 aKeyPath.split('.') 54 aKeyPath.split('.')
58 ) 55 )
59 ) 56 )
60 ); 57 );
61 }, 58 },
62 59
63 //------------------------------------------------------------------------- 60 //-------------------------------------------------------------------------
64 61
65 'isUrl': function (aValue) { 62 'isUrl': function (aValue) {
66 return (MochiKit.Base.urlRegExp.test(aValue)); 63 return (MochiKit.Base.urlRegExp.test(aValue));
67 }, 64 },
68 65
69 'isEmail': function (aValue) { 66 'isEmail': function (aValue) {
70 return (MochiKit.Base.emailRegExp.test(aValue)); 67 return (MochiKit.Base.emailRegExp.test(aValue));
71 }, 68 },
72 69
73 //------------------------------------------------------------------------- 70 //-------------------------------------------------------------------------
74 71
75 'caseInsensitiveCompare': function (a, b) { 72 'caseInsensitiveCompare': function (a, b) {
76 return MochiKit.Base.compare(a.toLowerCase(), b.toLowerCase()); 73 return MochiKit.Base.compare(a.toLowerCase(), b.toLowerCase());
77 }, 74 },
78 75
79 'reverseComparator': function (aComparator) { 76 'reverseComparator': function (aComparator) {
80 return MochiKit.Base.compose(function(aResult) { return -aResult; }, aComparator); 77 return MochiKit.Base.compose(function(aResult) { return -aResult; }, aComparator);
81 }, 78 },
82 79
83 //------------------------------------------------------------------------- 80 //-------------------------------------------------------------------------
84/* 81/*
85 'dependsOn': function(module, deps) { 82 'dependsOn': function(module, deps) {
86 if (!(module in Clipperz)) { 83 if (!(module in Clipperz)) {
87 MochiKit[module] = {}; 84 MochiKit[module] = {};
88 } 85 }
89 86
90 if (typeof(dojo) != 'undefined') { 87 if (typeof(dojo) != 'undefined') {
91 dojo.provide('Clipperz.' + module); 88 dojo.provide('Clipperz.' + module);
92 } 89 }
93 for (var i = 0; i < deps.length; i++) { 90 for (var i = 0; i < deps.length; i++) {
94 if (typeof(dojo) != 'undefined') { 91 if (typeof(dojo) != 'undefined') {
95 dojo.require('Clipperz.' + deps[i]); 92 dojo.require('Clipperz.' + deps[i]);
96 } 93 }
97 if (typeof(JSAN) != 'undefined') { 94 if (typeof(JSAN) != 'undefined') {
98 JSAN.use('Clipperz.' + deps[i], []); 95 JSAN.use('Clipperz.' + deps[i], []);
99 } 96 }
100 if (!(deps[i] in Clipperz)) { 97 if (!(deps[i] in Clipperz)) {
101 throw 'Clipperz.' + module + ' depends on Clipperz.' + deps[i] + '!' 98 throw 'Clipperz.' + module + ' depends on Clipperz.' + deps[i] + '!'
102 } 99 }
103 } 100 }
104 }, 101 },
105*/ 102*/
106 //------------------------------------------------------------------------- 103 //-------------------------------------------------------------------------
107 104
108 'trim': function (aValue) { 105 'trim': function (aValue) {
109 return aValue.replace(/^\s+|\s+$/g, ""); 106 return aValue.replace(/^\s+|\s+$/g, "");
110 }, 107 },
111 108
112 //------------------------------------------------------------------------- 109 //-------------------------------------------------------------------------
113 110
114 'stringToByteArray': function (aValue) { 111 'stringToByteArray': function (aValue) {
115 varresult; 112 varresult;
116 var i, c; 113 var i, c;
117 114
118 result = []; 115 result = [];
119 116
120 c = aValue.length; 117 c = aValue.length;
diff --git a/frontend/gamma/js/Clipperz/ByteArray.js b/frontend/gamma/js/Clipperz/ByteArray.js
index 86136c8..ae586e7 100644
--- a/frontend/gamma/js/Clipperz/ByteArray.js
+++ b/frontend/gamma/js/Clipperz/ByteArray.js
@@ -1,120 +1,117 @@
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 'checkByteValue': function(aValue) { 91 'checkByteValue': function(aValue) {
95//Clipperz.log("aValue", aValue.toString(16)); 92//Clipperz.log("aValue", aValue.toString(16));
96//Clipperz.log("(aValue & 0xff)", (aValue & 0xff).toString(16)); 93//Clipperz.log("(aValue & 0xff)", (aValue & 0xff).toString(16));
97 94
98 if ((aValue & 0xff) != aValue) { 95 if ((aValue & 0xff) != aValue) {
99 MochiKit.Logging.logError("Clipperz.ByteArray.appendByte: the provided value (0x" + aValue.toString(16) + ") is not a byte value."); 96 MochiKit.Logging.logError("Clipperz.ByteArray.appendByte: the provided value (0x" + aValue.toString(16) + ") is not a byte value.");
100 throw Clipperz.ByteArray.exception.InvalidValue; 97 throw Clipperz.ByteArray.exception.InvalidValue;
101 } 98 }
102 }, 99 },
103 100
104 //------------------------------------------------------------------------- 101 //-------------------------------------------------------------------------
105 102
106 'xorMergeWithBlock': function(aBlock, anAllignment, paddingMode) { 103 'xorMergeWithBlock': function(aBlock, anAllignment, paddingMode) {
107 var result; 104 var result;
108 var a, b; 105 var a, b;
109 var aLength; 106 var aLength;
110 var bLength; 107 var bLength;
111 var i, c; 108 var i, c;
112 109
113 if (this.length() > aBlock.length()) { 110 if (this.length() > aBlock.length()) {
114 a = this; 111 a = this;
115 b = aBlock; 112 b = aBlock;
116 } else { 113 } else {
117 a = aBlock; 114 a = aBlock;
118 b = this; 115 b = this;
119 } 116 }
120 117
diff --git a/frontend/gamma/js/Clipperz/CSVProcessor.js b/frontend/gamma/js/Clipperz/CSVProcessor.js
index d481ba2..0b18731 100644
--- a/frontend/gamma/js/Clipperz/CSVProcessor.js
+++ b/frontend/gamma/js/Clipperz/CSVProcessor.js
@@ -1,120 +1,117 @@
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 + "'");
diff --git a/frontend/gamma/js/Clipperz/Crypto/AES.js b/frontend/gamma/js/Clipperz/Crypto/AES.js
index 36fc731..c811f1c 100644
--- a/frontend/gamma/js/Clipperz/Crypto/AES.js
+++ b/frontend/gamma/js/Clipperz/Crypto/AES.js
@@ -1,120 +1,117 @@
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 // this._elaborationChunkSize = 1024; // 4096; // 16384; //4096; 54 // this._elaborationChunkSize = 1024; // 4096; // 16384; //4096;
58 this._elaborationChunks = 10; 55 this._elaborationChunks = 10;
59 this._pauseTime = 0.02; // 0.02 //0.2; 56 this._pauseTime = 0.02; // 0.02 //0.2;
60 57
61 return this; 58 return this;
62} 59}
63 60
64Clipperz.Crypto.AES.DeferredExecutionContext.prototype = MochiKit.Base.update(null, { 61Clipperz.Crypto.AES.DeferredExecutionContext.prototype = MochiKit.Base.update(null, {
65 62
66 'key': function() { 63 'key': function() {
67 return this._key; 64 return this._key;
68 }, 65 },
69 66
70 'message': function() { 67 'message': function() {
71 return this._message; 68 return this._message;
72 }, 69 },
73 70
74 'messageLength': function() { 71 'messageLength': function() {
75 return this._messageLength; 72 return this._messageLength;
76 }, 73 },
77 74
78 'result': function() { 75 'result': function() {
79 return new Clipperz.ByteArray(this.resultArray()); 76 return new Clipperz.ByteArray(this.resultArray());
80 }, 77 },
81 78
82 'nonce': function() { 79 'nonce': function() {
83 return this._nonce; 80 return this._nonce;
84 }, 81 },
85 82
86 'messageArray': function() { 83 'messageArray': function() {
87 return this._messageArray; 84 return this._messageArray;
88 }, 85 },
89 86
90 'resultArray': function() { 87 'resultArray': function() {
91 return this._resultArray; 88 return this._resultArray;
92 }, 89 },
93 90
94 'nonceArray': function() { 91 'nonceArray': function() {
95 return this._nonceArray; 92 return this._nonceArray;
96 }, 93 },
97 94
98 'elaborationChunkSize': function() { 95 'elaborationChunkSize': function() {
99 // return Clipperz.Crypto.AES.DeferredExecution.chunkSize; 96 // return Clipperz.Crypto.AES.DeferredExecution.chunkSize;
100 // return this._elaborationChunkSize; 97 // return this._elaborationChunkSize;
101 return (this._elaborationChunks * 1024); 98 return (this._elaborationChunks * 1024);
102 }, 99 },
103 100
104 'executionStep': function() { 101 'executionStep': function() {
105 return this._executionStep; 102 return this._executionStep;
106 }, 103 },
107 104
108 'setExecutionStep': function(aValue) { 105 'setExecutionStep': function(aValue) {
109 this._executionStep = aValue; 106 this._executionStep = aValue;
110 }, 107 },
111 108
112 'tuneExecutionParameters': function (anElapsedTime) { 109 'tuneExecutionParameters': function (anElapsedTime) {
113//var originalChunks = this._elaborationChunks; 110//var originalChunks = this._elaborationChunks;
114 if (anElapsedTime > 0) { 111 if (anElapsedTime > 0) {
115 this._elaborationChunks = Math.round(this._elaborationChunks * ((anElapsedTime + 1000)/(anElapsedTime * 2))); 112 this._elaborationChunks = Math.round(this._elaborationChunks * ((anElapsedTime + 1000)/(anElapsedTime * 2)));
116 } 113 }
117//Clipperz.log("tuneExecutionParameters - elapsedTime: " + anElapsedTime + /*originalChunks,*/ " chunks # " + this._elaborationChunks + " [" + this._executionStep + " / " + this._messageLength + "]"); 114//Clipperz.log("tuneExecutionParameters - elapsedTime: " + anElapsedTime + /*originalChunks,*/ " chunks # " + this._elaborationChunks + " [" + this._executionStep + " / " + this._messageLength + "]");
118 }, 115 },
119 116
120 'pause': function(aValue) { 117 'pause': function(aValue) {
diff --git a/frontend/gamma/js/Clipperz/Crypto/Base.js b/frontend/gamma/js/Clipperz/Crypto/Base.js
index b69dcc8..d3a8e36 100644
--- a/frontend/gamma/js/Clipperz/Crypto/Base.js
+++ b/frontend/gamma/js/Clipperz/Crypto/Base.js
@@ -1,120 +1,117 @@
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
diff --git a/frontend/gamma/js/Clipperz/Crypto/BigInt.js b/frontend/gamma/js/Clipperz/Crypto/BigInt.js
index d4d05d2..41483a3 100644
--- a/frontend/gamma/js/Clipperz/Crypto/BigInt.js
+++ b/frontend/gamma/js/Clipperz/Crypto/BigInt.js
@@ -1,120 +1,117 @@
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//
diff --git a/frontend/gamma/js/Clipperz/Crypto/BigInt_scoped.js b/frontend/gamma/js/Clipperz/Crypto/BigInt_scoped.js
index e91e823..f91c7e9 100644
--- a/frontend/gamma/js/Clipperz/Crypto/BigInt_scoped.js
+++ b/frontend/gamma/js/Clipperz/Crypto/BigInt_scoped.js
@@ -1,120 +1,117 @@
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.
diff --git a/frontend/gamma/js/Clipperz/Crypto/ECC/BinaryField/Curve.js b/frontend/gamma/js/Clipperz/Crypto/ECC/BinaryField/Curve.js
index 2033eb4..19f19c2 100644
--- a/frontend/gamma/js/Clipperz/Crypto/ECC/BinaryField/Curve.js
+++ b/frontend/gamma/js/Clipperz/Crypto/ECC/BinaryField/Curve.js
@@ -1,120 +1,117 @@
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//try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) { 26//try { 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");
diff --git a/frontend/gamma/js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js b/frontend/gamma/js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js
index a649c9f..56f257a 100644
--- a/frontend/gamma/js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js
+++ b/frontend/gamma/js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js
@@ -1,120 +1,117 @@
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//try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) { 26//try { 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) {
diff --git a/frontend/gamma/js/Clipperz/Crypto/ECC/BinaryField/Point.js b/frontend/gamma/js/Clipperz/Crypto/ECC/BinaryField/Point.js
index b7a5537..ffe287b 100644
--- a/frontend/gamma/js/Clipperz/Crypto/ECC/BinaryField/Point.js
+++ b/frontend/gamma/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
29//try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) { 26//try { 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/gamma/js/Clipperz/Crypto/ECC/BinaryField/Value.js b/frontend/gamma/js/Clipperz/Crypto/ECC/BinaryField/Value.js
index 5a430d1..b705a20 100644
--- a/frontend/gamma/js/Clipperz/Crypto/ECC/BinaryField/Value.js
+++ b/frontend/gamma/js/Clipperz/Crypto/ECC/BinaryField/Value.js
@@ -1,120 +1,117 @@
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//try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) { 26//try { 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) == 'undefined') { Clipperz = {}; } 29if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
33if (typeof(Clipperz.Crypto) == 'undefined') { Clipperz.Crypto = {}; } 30if (typeof(Clipperz.Crypto) == 'undefined') { Clipperz.Crypto = {}; }
34if (typeof(Clipperz.Crypto.ECC) == 'undefined') { Clipperz.Crypto.ECC = {}; } 31if (typeof(Clipperz.Crypto.ECC) == 'undefined') { Clipperz.Crypto.ECC = {}; }
35if (typeof(Clipperz.Crypto.ECC.BinaryField) == 'undefined') { Clipperz.Crypto.ECC.BinaryField = {}; } 32if (typeof(Clipperz.Crypto.ECC.BinaryField) == 'undefined') { Clipperz.Crypto.ECC.BinaryField = {}; }
36 33
37Clipperz.Crypto.ECC.BinaryField.Value = function(aValue, aBase, aBitSize) { 34Clipperz.Crypto.ECC.BinaryField.Value = function(aValue, aBase, aBitSize) {
38 if (aValue.constructor == String) { 35 if (aValue.constructor == String) {
39 varvalue; 36 varvalue;
40 varstringLength; 37 varstringLength;
41 var numberOfWords; 38 var numberOfWords;
42 vari,c; 39 vari,c;
43 40
44 if (aBase != 16) { 41 if (aBase != 16) {
45 throw Clipperz.Crypto.ECC.BinaryField.Value.exception.UnsupportedBase; 42 throw Clipperz.Crypto.ECC.BinaryField.Value.exception.UnsupportedBase;
46 } 43 }
47 44
48 value = aValue.replace(/ /g, ''); 45 value = aValue.replace(/ /g, '');
49 stringLength = value.length; 46 stringLength = value.length;
50 numberOfWords = Math.ceil(stringLength / 8); 47 numberOfWords = Math.ceil(stringLength / 8);
51 this._value = new Array(numberOfWords); 48 this._value = new Array(numberOfWords);
52 49
53 c = numberOfWords; 50 c = numberOfWords;
54 for (i=0; i<c; i++) { 51 for (i=0; i<c; i++) {
55 varword; 52 varword;
56 53
57 if (i < (c-1)) { 54 if (i < (c-1)) {
58 word = parseInt(value.substr(stringLength-((i+1)*8), 8), 16); 55 word = parseInt(value.substr(stringLength-((i+1)*8), 8), 16);
59 } else { 56 } else {
60 word = parseInt(value.substr(0, stringLength-(i*8)), 16); 57 word = parseInt(value.substr(0, stringLength-(i*8)), 16);
61 } 58 }
62 59
63 this._value[i] = word; 60 this._value[i] = word;
64 } 61 }
65 } else if (aValue.constructor == Array) { 62 } else if (aValue.constructor == Array) {
66 var itemsToCopy; 63 var itemsToCopy;
67 64
68 itemsToCopy = aValue.length; 65 itemsToCopy = aValue.length;
69 while (aValue[itemsToCopy - 1] == 0) { 66 while (aValue[itemsToCopy - 1] == 0) {
70 itemsToCopy --; 67 itemsToCopy --;
71 } 68 }
72 69
73 this._value = aValue.slice(0, itemsToCopy); 70 this._value = aValue.slice(0, itemsToCopy);
74 } else if (aValue.constructor == Number) { 71 } else if (aValue.constructor == Number) {
75 this._value = [aValue]; 72 this._value = [aValue];
76 } else { 73 } else {
77 // throw Clipperz.Crypto.ECC.BinaryField.Value.exception.UnsupportedConstructorValueType; 74 // throw Clipperz.Crypto.ECC.BinaryField.Value.exception.UnsupportedConstructorValueType;
78 } 75 }
79 76
80 this._bitSize == aBitSize || null; 77 this._bitSize == aBitSize || null;
81 78
82 return this; 79 return this;
83} 80}
84 81
85Clipperz.Crypto.ECC.BinaryField.Value.prototype = MochiKit.Base.update(null, { 82Clipperz.Crypto.ECC.BinaryField.Value.prototype = MochiKit.Base.update(null, {
86 83
87 'value': function() { 84 'value': function() {
88 return this._value; 85 return this._value;
89 }, 86 },
90 87
91 //----------------------------------------------------------------------------- 88 //-----------------------------------------------------------------------------
92 89
93 'wordSize': function() { 90 'wordSize': function() {
94 return this._value.length 91 return this._value.length
95 }, 92 },
96 93
97 //----------------------------------------------------------------------------- 94 //-----------------------------------------------------------------------------
98 95
99 'clone': function() { 96 'clone': function() {
100 return new Clipperz.Crypto.ECC.BinaryField.Value(this._value.slice(0), null, this._bitSize); 97 return new Clipperz.Crypto.ECC.BinaryField.Value(this._value.slice(0), null, this._bitSize);
101 }, 98 },
102 99
103 //----------------------------------------------------------------------------- 100 //-----------------------------------------------------------------------------
104 101
105 'isZero': function() { 102 'isZero': function() {
106 return (this.compare(Clipperz.Crypto.ECC.BinaryField.Value.O) == 0); 103 return (this.compare(Clipperz.Crypto.ECC.BinaryField.Value.O) == 0);
107 }, 104 },
108 105
109 //----------------------------------------------------------------------------- 106 //-----------------------------------------------------------------------------
110 107
111 'asString': function(aBase) { 108 'asString': function(aBase) {
112 varresult; 109 varresult;
113 var i,c; 110 var i,c;
114 111
115 if (aBase != 16) { 112 if (aBase != 16) {
116 throw Clipperz.Crypto.ECC.BinaryField.Value.exception.UnsupportedBase; 113 throw Clipperz.Crypto.ECC.BinaryField.Value.exception.UnsupportedBase;
117 } 114 }
118 115
119 result = ""; 116 result = "";
120 c = this.wordSize(); 117 c = this.wordSize();
diff --git a/frontend/gamma/js/Clipperz/Crypto/ECC/StandardCurves.js b/frontend/gamma/js/Clipperz/Crypto/ECC/StandardCurves.js
index ae2b8fb..be197e3 100644
--- a/frontend/gamma/js/Clipperz/Crypto/ECC/StandardCurves.js
+++ b/frontend/gamma/js/Clipperz/Crypto/ECC/StandardCurves.js
@@ -1,120 +1,117 @@
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//try { if (typeof(Clipperz.Crypto.ECC.BinaryField.Curve) == 'undefined') { throw ""; }} catch (e) { 26//try { if (typeof(Clipperz.Crypto.ECC.BinaryField.Curve) == 'undefined') { throw ""; }} catch (e) {
30 //throw "Clipperz.Crypto.ECC depends on Clipperz.Crypto.ECC.BinaryField.Curve!"; 27 //throw "Clipperz.Crypto.ECC depends on Clipperz.Crypto.ECC.BinaryField.Curve!";
31//} 28//}
32//try { if (typeof(Clipperz.Crypto.ECC.Koblitz.Curve) == 'undefined') { throw ""; }} catch (e) { 29//try { if (typeof(Clipperz.Crypto.ECC.Koblitz.Curve) == 'undefined') { throw ""; }} catch (e) {
33 //throw "Clipperz.Crypto.ECC depends on Clipperz.Crypto.ECC.Koblitz.Curve!"; 30 //throw "Clipperz.Crypto.ECC depends on Clipperz.Crypto.ECC.Koblitz.Curve!";
34//} 31//}
35 32
36Clipperz.Crypto.ECC.StandardCurves = {}; 33Clipperz.Crypto.ECC.StandardCurves = {};
37 34
38MochiKit.Base.update(Clipperz.Crypto.ECC.StandardCurves, { 35MochiKit.Base.update(Clipperz.Crypto.ECC.StandardCurves, {
39 36
40 //============================================================================== 37 //==============================================================================
41 38
42 '_K571': null, 39 '_K571': null,
43 'K571': function() { //f(z) = z^571 + z^10 + z^5 + z^2 + 1 40 'K571': function() { //f(z) = z^571 + z^10 + z^5 + z^2 + 1
44 if ((Clipperz.Crypto.ECC.StandardCurves._K571 == null) && (typeof(Clipperz.Crypto.ECC.Koblitz.Curve) != 'undefined')) { 41 if ((Clipperz.Crypto.ECC.StandardCurves._K571 == null) && (typeof(Clipperz.Crypto.ECC.Koblitz.Curve) != 'undefined')) {
45 Clipperz.Crypto.ECC.StandardCurves._K571 = new Clipperz.Crypto.ECC.Koblitz.Curve({ 42 Clipperz.Crypto.ECC.StandardCurves._K571 = new Clipperz.Crypto.ECC.Koblitz.Curve({
46 modulus: new Clipperz.Crypto.ECC.Koblitz.Value('08000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000425', 16), 43 modulus: new Clipperz.Crypto.ECC.Koblitz.Value('08000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000425', 16),
47 a: new Clipperz.Crypto.ECC.Koblitz.Value('0', 16), 44 a: new Clipperz.Crypto.ECC.Koblitz.Value('0', 16),
48 b: new Clipperz.Crypto.ECC.Koblitz.Value('1', 16), 45 b: new Clipperz.Crypto.ECC.Koblitz.Value('1', 16),
49 G: new Clipperz.Crypto.ECC.Koblitz.Point({ 46 G: new Clipperz.Crypto.ECC.Koblitz.Point({
50 x: new Clipperz.Crypto.ECC.Koblitz.Value('026eb7a8 59923fbc 82189631 f8103fe4 ac9ca297 0012d5d4 60248048 01841ca4 43709584 93b205e6 47da304d b4ceb08c bbd1ba39 494776fb 988b4717 4dca88c7 e2945283 a01c8972', 16), 47 x: new Clipperz.Crypto.ECC.Koblitz.Value('026eb7a8 59923fbc 82189631 f8103fe4 ac9ca297 0012d5d4 60248048 01841ca4 43709584 93b205e6 47da304d b4ceb08c bbd1ba39 494776fb 988b4717 4dca88c7 e2945283 a01c8972', 16),
51 y: new Clipperz.Crypto.ECC.Koblitz.Value('0349dc80 7f4fbf37 4f4aeade 3bca9531 4dd58cec 9f307a54 ffc61efc 006d8a2c 9d4979c0 ac44aea7 4fbebbb9 f772aedc b620b01a 7ba7af1b 320430c8 591984f6 01cd4c14 3ef1c7a3', 16) 48 y: new Clipperz.Crypto.ECC.Koblitz.Value('0349dc80 7f4fbf37 4f4aeade 3bca9531 4dd58cec 9f307a54 ffc61efc 006d8a2c 9d4979c0 ac44aea7 4fbebbb9 f772aedc b620b01a 7ba7af1b 320430c8 591984f6 01cd4c14 3ef1c7a3', 16)
52 }), 49 }),
53 r: new Clipperz.Crypto.ECC.Koblitz.Value('02000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 131850e1 f19a63e4 b391a8db 917f4138 b630d84b e5d63938 1e91deb4 5cfe778f 637c1001', 16), 50 r: new Clipperz.Crypto.ECC.Koblitz.Value('02000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 131850e1 f19a63e4 b391a8db 917f4138 b630d84b e5d63938 1e91deb4 5cfe778f 637c1001', 16),
54 h: new Clipperz.Crypto.ECC.Koblitz.Value('4', 16), 51 h: new Clipperz.Crypto.ECC.Koblitz.Value('4', 16),
55 primeFactor: new Clipperz.Crypto.ECC.Koblitz.Value('02000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 131850e1 f19a63e4 b391a8db 917f4138 b630d84b e5d63938 1e91deb4 5cfe778f 637c1001', 16) 52 primeFactor: new Clipperz.Crypto.ECC.Koblitz.Value('02000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 131850e1 f19a63e4 b391a8db 917f4138 b630d84b e5d63938 1e91deb4 5cfe778f 637c1001', 16)
56 }); 53 });
57 } 54 }
58 55
59 return Clipperz.Crypto.ECC.StandardCurves._K571; 56 return Clipperz.Crypto.ECC.StandardCurves._K571;
60 }, 57 },
61 58
62 //----------------------------------------------------------------------------- 59 //-----------------------------------------------------------------------------
63 60
64 '_K283': null, 61 '_K283': null,
65 'K283': function() { //f(z) = z^283 + z^12 + z^7 + z^5 + 1 62 'K283': function() { //f(z) = z^283 + z^12 + z^7 + z^5 + 1
66 if ((Clipperz.Crypto.ECC.StandardCurves._K283 == null) && (typeof(Clipperz.Crypto.ECC.Koblitz.Curve) != 'undefined')) { 63 if ((Clipperz.Crypto.ECC.StandardCurves._K283 == null) && (typeof(Clipperz.Crypto.ECC.Koblitz.Curve) != 'undefined')) {
67 Clipperz.Crypto.ECC.StandardCurves._K283 = new Clipperz.Crypto.ECC.Koblitz.Curve({ 64 Clipperz.Crypto.ECC.StandardCurves._K283 = new Clipperz.Crypto.ECC.Koblitz.Curve({
68 modulus: new Clipperz.Crypto.ECC.Koblitz.Value('08000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 000010a1', 16), 65 modulus: new Clipperz.Crypto.ECC.Koblitz.Value('08000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 000010a1', 16),
69 a: new Clipperz.Crypto.ECC.Koblitz.Value('0', 16), 66 a: new Clipperz.Crypto.ECC.Koblitz.Value('0', 16),
70 b: new Clipperz.Crypto.ECC.Koblitz.Value('1', 16), 67 b: new Clipperz.Crypto.ECC.Koblitz.Value('1', 16),
71 G: new Clipperz.Crypto.ECC.Koblitz.Point({ 68 G: new Clipperz.Crypto.ECC.Koblitz.Point({
72 x: new Clipperz.Crypto.ECC.Koblitz.Value('0503213f 78ca4488 3f1a3b81 62f188e5 53cd265f 23c1567a 16876913 b0c2ac24 58492836', 16), 69 x: new Clipperz.Crypto.ECC.Koblitz.Value('0503213f 78ca4488 3f1a3b81 62f188e5 53cd265f 23c1567a 16876913 b0c2ac24 58492836', 16),
73 y: new Clipperz.Crypto.ECC.Koblitz.Value('01ccda38 0f1c9e31 8d90f95d 07e5426f e87e45c0 e8184698 e4596236 4e341161 77dd2259', 16) 70 y: new Clipperz.Crypto.ECC.Koblitz.Value('01ccda38 0f1c9e31 8d90f95d 07e5426f e87e45c0 e8184698 e4596236 4e341161 77dd2259', 16)
74 }), 71 }),
75 r: new Clipperz.Crypto.ECC.Koblitz.Value('01ffffff ffffffff ffffffff ffffffff ffffe9ae 2ed07577 265dff7f 94451e06 1e163c61', 16), 72 r: new Clipperz.Crypto.ECC.Koblitz.Value('01ffffff ffffffff ffffffff ffffffff ffffe9ae 2ed07577 265dff7f 94451e06 1e163c61', 16),
76 h: new Clipperz.Crypto.ECC.Koblitz.Value('4', 16), 73 h: new Clipperz.Crypto.ECC.Koblitz.Value('4', 16),
77 primeFactor: new Clipperz.Crypto.ECC.Koblitz.Value('01ffffff ffffffff ffffffff ffffffff ffffe9ae 2ed07577 265dff7f 94451e06 1e163c61', 16) 74 primeFactor: new Clipperz.Crypto.ECC.Koblitz.Value('01ffffff ffffffff ffffffff ffffffff ffffe9ae 2ed07577 265dff7f 94451e06 1e163c61', 16)
78 }); 75 });
79 } 76 }
80 77
81 return Clipperz.Crypto.ECC.StandardCurves._K283; 78 return Clipperz.Crypto.ECC.StandardCurves._K283;
82 }, 79 },
83 80
84 //============================================================================== 81 //==============================================================================
85 82
86 '_B571': null, 83 '_B571': null,
87 'B571': function() { //f(z) = z^571 + z^10 + z^5 + z^2 + 1 84 'B571': function() { //f(z) = z^571 + z^10 + z^5 + z^2 + 1
88 if ((Clipperz.Crypto.ECC.StandardCurves._B571 == null) && (typeof(Clipperz.Crypto.ECC.BinaryField.Curve) != 'undefined')) { 85 if ((Clipperz.Crypto.ECC.StandardCurves._B571 == null) && (typeof(Clipperz.Crypto.ECC.BinaryField.Curve) != 'undefined')) {
89 Clipperz.Crypto.ECC.StandardCurves._B571 = new Clipperz.Crypto.ECC.BinaryField.Curve({ 86 Clipperz.Crypto.ECC.StandardCurves._B571 = new Clipperz.Crypto.ECC.BinaryField.Curve({
90 modulus: new Clipperz.Crypto.ECC.BinaryField.Value('08000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000425', 16), 87 modulus: new Clipperz.Crypto.ECC.BinaryField.Value('08000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000425', 16),
91 a: new Clipperz.Crypto.ECC.BinaryField.Value('1', 16), 88 a: new Clipperz.Crypto.ECC.BinaryField.Value('1', 16),
92 b: new Clipperz.Crypto.ECC.BinaryField.Value('02f40e7e 2221f295 de297117 b7f3d62f 5c6a97ff cb8ceff1 cd6ba8ce 4a9a18ad 84ffabbd 8efa5933 2be7ad67 56a66e29 4afd185a 78ff12aa 520e4de7 39baca0c 7ffeff7f 2955727a', 16), 89 b: new Clipperz.Crypto.ECC.BinaryField.Value('02f40e7e 2221f295 de297117 b7f3d62f 5c6a97ff cb8ceff1 cd6ba8ce 4a9a18ad 84ffabbd 8efa5933 2be7ad67 56a66e29 4afd185a 78ff12aa 520e4de7 39baca0c 7ffeff7f 2955727a', 16),
93 G: new Clipperz.Crypto.ECC.BinaryField.Point({ 90 G: new Clipperz.Crypto.ECC.BinaryField.Point({
94 x: new Clipperz.Crypto.ECC.BinaryField.Value('0303001d 34b85629 6c16c0d4 0d3cd775 0a93d1d2 955fa80a a5f40fc8 db7b2abd bde53950 f4c0d293 cdd711a3 5b67fb14 99ae6003 8614f139 4abfa3b4 c850d927 e1e7769c 8eec2d19', 16), 91 x: new Clipperz.Crypto.ECC.BinaryField.Value('0303001d 34b85629 6c16c0d4 0d3cd775 0a93d1d2 955fa80a a5f40fc8 db7b2abd bde53950 f4c0d293 cdd711a3 5b67fb14 99ae6003 8614f139 4abfa3b4 c850d927 e1e7769c 8eec2d19', 16),
95 y: new Clipperz.Crypto.ECC.BinaryField.Value('037bf273 42da639b 6dccfffe b73d69d7 8c6c27a6 009cbbca 1980f853 3921e8a6 84423e43 bab08a57 6291af8f 461bb2a8 b3531d2f 0485c19b 16e2f151 6e23dd3c 1a4827af 1b8ac15b', 16) 92 y: new Clipperz.Crypto.ECC.BinaryField.Value('037bf273 42da639b 6dccfffe b73d69d7 8c6c27a6 009cbbca 1980f853 3921e8a6 84423e43 bab08a57 6291af8f 461bb2a8 b3531d2f 0485c19b 16e2f151 6e23dd3c 1a4827af 1b8ac15b', 16)
96 }), 93 }),
97 r: new Clipperz.Crypto.ECC.BinaryField.Value('03ffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff e661ce18 ff559873 08059b18 6823851e c7dd9ca1 161de93d 5174d66e 8382e9bb 2fe84e47', 16), 94 r: new Clipperz.Crypto.ECC.BinaryField.Value('03ffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff e661ce18 ff559873 08059b18 6823851e c7dd9ca1 161de93d 5174d66e 8382e9bb 2fe84e47', 16),
98 h: new Clipperz.Crypto.ECC.BinaryField.Value('2', 16) 95 h: new Clipperz.Crypto.ECC.BinaryField.Value('2', 16)
99 96
100 // S: new Clipperz.Crypto.ECC.BinaryField.Value('2aa058f73a0e33ab486b0f610410c53a7f132310', 10), 97 // S: new Clipperz.Crypto.ECC.BinaryField.Value('2aa058f73a0e33ab486b0f610410c53a7f132310', 10),
101 // n: new Clipperz.Crypto.ECC.BinaryField.Value('03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe661ce18ff55987308059b186823851ec7dd9ca1161de93d5174d66e8382e9bb2fe84e47', 16) 98 // n: new Clipperz.Crypto.ECC.BinaryField.Value('03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe661ce18ff55987308059b186823851ec7dd9ca1161de93d5174d66e8382e9bb2fe84e47', 16)
102 }); 99 });
103 100
104 //----------------------------------------------------------------------------- 101 //-----------------------------------------------------------------------------
105 // 102 //
106 //Guide to Elliptic Curve Cryptography 103 //Guide to Elliptic Curve Cryptography
107 //Darrel Hankerson, Alfred Menezes, Scott Vanstone 104 //Darrel Hankerson, Alfred Menezes, Scott Vanstone
108 //- Pag: 56, Alorithm 2.45 (with a typo!!!) 105 //- Pag: 56, Alorithm 2.45 (with a typo!!!)
109 // 106 //
110 //----------------------------------------------------------------------------- 107 //-----------------------------------------------------------------------------
111 // 108 //
112 // http://www.milw0rm.com/papers/136 109 // http://www.milw0rm.com/papers/136
113 // 110 //
114 // ------------------------------------------------------------------------- 111 // -------------------------------------------------------------------------
115 // Polynomial Reduction Algorithm Modulo f571 112 // Polynomial Reduction Algorithm Modulo f571
116 // ------------------------------------------------------------------------- 113 // -------------------------------------------------------------------------
117 // 114 //
118 // Input: Polynomial p(x) of degree 1140 or less, stored as 115 // Input: Polynomial p(x) of degree 1140 or less, stored as
119 // an array of 2T machinewords. 116 // an array of 2T machinewords.
120 // Output: p(x) mod f571(x) 117 // Output: p(x) mod f571(x)
diff --git a/frontend/gamma/js/Clipperz/Crypto/PRNG.js b/frontend/gamma/js/Clipperz/Crypto/PRNG.js
index 266b909..adfdb16 100644
--- a/frontend/gamma/js/Clipperz/Crypto/PRNG.js
+++ b/frontend/gamma/js/Clipperz/Crypto/PRNG.js
@@ -1,120 +1,117 @@
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;
diff --git a/frontend/gamma/js/Clipperz/Crypto/RSA.js b/frontend/gamma/js/Clipperz/Crypto/RSA.js
index 4dad8f7..6844dba 100644
--- a/frontend/gamma/js/Clipperz/Crypto/RSA.js
+++ b/frontend/gamma/js/Clipperz/Crypto/RSA.js
@@ -1,120 +1,117 @@
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 {
diff --git a/frontend/gamma/js/Clipperz/Crypto/SHA.js b/frontend/gamma/js/Clipperz/Crypto/SHA.js
index 3cf8559..b07fa85 100644
--- a/frontend/gamma/js/Clipperz/Crypto/SHA.js
+++ b/frontend/gamma/js/Clipperz/Crypto/SHA.js
@@ -1,120 +1,117 @@
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;
diff --git a/frontend/gamma/js/Clipperz/Crypto/SRP.js b/frontend/gamma/js/Clipperz/Crypto/SRP.js
index 0eef6ec..3b25275 100644
--- a/frontend/gamma/js/Clipperz/Crypto/SRP.js
+++ b/frontend/gamma/js/Clipperz/Crypto/SRP.js
@@ -1,120 +1,117 @@
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
diff --git a/frontend/gamma/js/Clipperz/DOM.js b/frontend/gamma/js/Clipperz/DOM.js
index 40720d8..8f24653 100644
--- a/frontend/gamma/js/Clipperz/DOM.js
+++ b/frontend/gamma/js/Clipperz/DOM.js
@@ -1,120 +1,117 @@
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;
diff --git a/frontend/gamma/js/Clipperz/Date.js b/frontend/gamma/js/Clipperz/Date.js
index 4103b88..020d77b 100644
--- a/frontend/gamma/js/Clipperz/Date.js
+++ b/frontend/gamma/js/Clipperz/Date.js
@@ -1,120 +1,117 @@
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))
diff --git a/frontend/gamma/js/Clipperz/KeePassExportProcessor.js b/frontend/gamma/js/Clipperz/KeePassExportProcessor.js
index 06ab5a8..a3c10c8 100644
--- a/frontend/gamma/js/Clipperz/KeePassExportProcessor.js
+++ b/frontend/gamma/js/Clipperz/KeePassExportProcessor.js
@@ -1,120 +1,117 @@
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 'deferredParse_core': function(aContext) { 41 'deferredParse_core': function(aContext) {
45 var deferredResult; 42 var deferredResult;
46 43
47 if (aContext.line == "") { 44 if (aContext.line == "") {
48 deferredResult = MochiKit.Async.succeed(aContext.result); 45 deferredResult = MochiKit.Async.succeed(aContext.result);
49 } else { 46 } else {
50 var record; 47 var record;
51 48
52 record = this.parseRecord(aContext); 49 record = this.parseRecord(aContext);
53 if (record != null) { 50 if (record != null) {
54 aContext.result.push(record); 51 aContext.result.push(record);
55 } 52 }
56 53
57 aContext.line = aContext.line.replace(/^\n*/g, "").replace(/\n$/g, ""); 54 aContext.line = aContext.line.replace(/^\n*/g, "").replace(/\n$/g, "");
58 55
59 deferredResult = new Clipperz.Async.Deferred("KeePassExportProcessor.deferredParse_core"); 56 deferredResult = new Clipperz.Async.Deferred("KeePassExportProcessor.deferredParse_core");
60 deferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'importProcessorProgressUpdate', {status:'processing', size:aContext.size, progress:(aContext.size - aContext.line.length)}); 57 deferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'importProcessorProgressUpdate', {status:'processing', size:aContext.size, progress:(aContext.size - aContext.line.length)});
61 deferredResult.addCallback(MochiKit.Async.wait, 0.2); 58 deferredResult.addCallback(MochiKit.Async.wait, 0.2);
62 deferredResult.addMethod(this, 'deferredParse_core'); 59 deferredResult.addMethod(this, 'deferredParse_core');
63 deferredResult.callback(aContext); 60 deferredResult.callback(aContext);
64 } 61 }
65 62
66 return deferredResult; 63 return deferredResult;
67 }, 64 },
68 65
69 //......................................................................... 66 //.........................................................................
70 67
71 'deferredParse': function(aValue) { 68 'deferredParse': function(aValue) {
72 var deferredResult; 69 var deferredResult;
73 var lines; 70 var lines;
74 var context; 71 var context;
75 72
76 lines = aValue.replace(/\r?\n/g, "\n"); 73 lines = aValue.replace(/\r?\n/g, "\n");
77 context = { 74 context = {
78 line: lines, 75 line: lines,
79 size: lines.length, 76 size: lines.length,
80 result: [] 77 result: []
81 } 78 }
82 79
83 deferredResult = new Clipperz.Async.Deferred("KeePassExportProcessor.deferredResult"); 80 deferredResult = new Clipperz.Async.Deferred("KeePassExportProcessor.deferredResult");
84 deferredResult.addMethod(this, 'deferredParse_core'); 81 deferredResult.addMethod(this, 'deferredParse_core');
85 deferredResult.callback(context); 82 deferredResult.callback(context);
86 83
87 return deferredResult; 84 return deferredResult;
88 }, 85 },
89 86
90 //------------------------------------------------------------------------- 87 //-------------------------------------------------------------------------
91 88
92 'parseRecord': function(aContext) { 89 'parseRecord': function(aContext) {
93 var result; 90 var result;
94 var recordLabelRegexp; 91 var recordLabelRegexp;
95 varfieldLabelRegexp; 92 varfieldLabelRegexp;
96 var fieldValueRegexp; 93 var fieldValueRegexp;
97 var fullLineRegexp; 94 var fullLineRegexp;
98/* 95/*
99[Record name] 96[Record name]
100Group Tree: 97Group Tree:
101UserName: 98UserName:
102URL: 99URL:
103Password: 100Password:
104Notes: test 101Notes: test
105UUID: 525f62430079bae48b79ed2961924b05 102UUID: 525f62430079bae48b79ed2961924b05
106Icon: 0 103Icon: 0
107Creation Time: 2007-06-26 17:56:03 104Creation Time: 2007-06-26 17:56:03
108Last Access: 2007-10-25 16:23:51 105Last Access: 2007-10-25 16:23:51
109Last Modification: 2007-10-25 16:23:51 106Last Modification: 2007-10-25 16:23:51
110Expires: 2999-12-28 23:59:59 107Expires: 2999-12-28 23:59:59
111 108
112 [Record name] ==> Title 109 [Record name] ==> Title
113 Group: General ==> Group 110 Group: General ==> Group
114 Group Tree: ==> Group Tree 111 Group Tree: ==> Group Tree
115 UserName: ==> UserName 112 UserName: ==> UserName
116 URL: ==>URL 113 URL: ==>URL
117 Password: ==>Password 114 Password: ==>Password
118 Notes: test ==>Notes 115 Notes: test ==>Notes
119 UUID: 525f62430079bae48b79ed2961924b05 ==>UUID 116 UUID: 525f62430079bae48b79ed2961924b05 ==>UUID
120 Icon: 0 ==>Icon 117 Icon: 0 ==>Icon
diff --git a/frontend/gamma/js/Clipperz/KeyValueObjectStore.js b/frontend/gamma/js/Clipperz/KeyValueObjectStore.js
index 04beb85..36cda88 100644
--- a/frontend/gamma/js/Clipperz/KeyValueObjectStore.js
+++ b/frontend/gamma/js/Clipperz/KeyValueObjectStore.js
@@ -1,120 +1,117 @@
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.KeyValueObjectStore = function(args) { 30Clipperz.KeyValueObjectStore = function(args) {
34 args = args || {}; 31 args = args || {};
35 32
36 //this._name = args['name'] || "unnamed KeyValueObjectStore"; 33 //this._name = args['name'] || "unnamed KeyValueObjectStore";
37 this._values = args['values'] || {}; 34 this._values = args['values'] || {};
38 //this._referenceObjectStore = null; 35 //this._referenceObjectStore = null;
39//console.log("new KeyValueObjectStore", args, this._values); 36//console.log("new KeyValueObjectStore", args, this._values);
40 37
41 return this; 38 return this;
42} 39}
43 40
44Clipperz.KeyValueObjectStore.prototype = MochiKit.Base.update(null, { 41Clipperz.KeyValueObjectStore.prototype = MochiKit.Base.update(null, {
45 42
46 'values': function() { 43 'values': function() {
47 return this._values; 44 return this._values;
48 }, 45 },
49 46
50 'initWithValues': function (someValues) { 47 'initWithValues': function (someValues) {
51 this._values = Clipperz.Base.deepClone(someValues) || {}; 48 this._values = Clipperz.Base.deepClone(someValues) || {};
52 return this; 49 return this;
53 }, 50 },
54 51
55 'setValues': function (someValues) { 52 'setValues': function (someValues) {
56//console.log("KeyValueObjectStore.setValues", someValues); 53//console.log("KeyValueObjectStore.setValues", someValues);
57 this._values = someValues; 54 this._values = someValues;
58 return this; 55 return this;
59 }, 56 },
60 57
61 //'initWithObjectStore': function (anObjectStore) { 58 //'initWithObjectStore': function (anObjectStore) {
62 // this._referenceObjectStore = anObjectStore; 59 // this._referenceObjectStore = anObjectStore;
63 //}, 60 //},
64 61
65 'removeAllData': function () { 62 'removeAllData': function () {
66 this._values = {}; 63 this._values = {};
67 }, 64 },
68 65
69 //------------------------------------------------------------------------- 66 //-------------------------------------------------------------------------
70 67
71 'getValue': function(aKeyPath) { 68 'getValue': function(aKeyPath) {
72 var result; 69 var result;
73 var keys; 70 var keys;
74 var i,c; 71 var i,c;
75 72
76 result = this.values(); 73 result = this.values();
77 74
78 keys = (aKeyPath + '').split('.'); 75 keys = (aKeyPath + '').split('.');
79 c = keys.length; 76 c = keys.length;
80 i = 0; 77 i = 0;
81 78
82 while ((i<c) && (result != null)) { 79 while ((i<c) && (result != null)) {
83 if (typeof result[keys[i]] != 'undefined') { 80 if (typeof result[keys[i]] != 'undefined') {
84 result = result[keys[i]]; 81 result = result[keys[i]];
85 } else { 82 } else {
86 result = null; 83 result = null;
87 } 84 }
88 85
89 i++; 86 i++;
90 } 87 }
91 88
92 return result; 89 return result;
93 }, 90 },
94 91
95 //------------------------------------------------------------------------- 92 //-------------------------------------------------------------------------
96 93
97 'setValue': function(aKeyPath, aValue) { 94 'setValue': function(aKeyPath, aValue) {
98 var targetObject; 95 var targetObject;
99 var keys; 96 var keys;
100 var i,c; 97 var i,c;
101 98
102//console.log(">>> KeyValueObjectStore.setValue", this, this.values(), aKeyPath, aValue); 99//console.log(">>> KeyValueObjectStore.setValue", this, this.values(), aKeyPath, aValue);
103 targetObject = this.values(); 100 targetObject = this.values();
104 keys = (aKeyPath + '').split('.'); 101 keys = (aKeyPath + '').split('.');
105 c = keys.length - 1; 102 c = keys.length - 1;
106 for (i=0; i<c; i++) { 103 for (i=0; i<c; i++) {
107//console.log("--- KeyValueObjectStore.setValue", i, targetObject, keys[i]); 104//console.log("--- KeyValueObjectStore.setValue", i, targetObject, keys[i]);
108 if (typeof targetObject[keys[i]] == 'undefined') { 105 if (typeof targetObject[keys[i]] == 'undefined') {
109 targetObject[keys[i]] = {} 106 targetObject[keys[i]] = {}
110 } 107 }
111 108
112 targetObject = targetObject[keys[i]]; 109 targetObject = targetObject[keys[i]];
113 } 110 }
114 111
115 targetObject[keys[c]] = aValue; 112 targetObject[keys[c]] = aValue;
116//console.log("<<< KeyValueObjectStore.setValue"); 113//console.log("<<< KeyValueObjectStore.setValue");
117 114
118 return aValue; 115 return aValue;
119 }, 116 },
120 117
diff --git a/frontend/gamma/js/Clipperz/Logging.js b/frontend/gamma/js/Clipperz/Logging.js
index d6c107e..77a0896 100644
--- a/frontend/gamma/js/Clipperz/Logging.js
+++ b/frontend/gamma/js/Clipperz/Logging.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
29Clipperz.Base.module('Clipperz'); 26Clipperz.Base.module('Clipperz');
30 27
31if (typeof console == 'undefined') { 28if (typeof console == 'undefined') {
32 Clipperz.log = MochiKit.Logging.logDebug; 29 Clipperz.log = MochiKit.Logging.logDebug;
33// Safari/WebKit 4 30// Safari/WebKit 4
34} else if (navigator.userAgent.match(/WebKit/)) { 31} else if (navigator.userAgent.match(/WebKit/)) {
35 //Clipperz.log = console.log; 32 //Clipperz.log = console.log;
36 Clipperz.log = MochiKit.Logging.logDebug; 33 Clipperz.log = MochiKit.Logging.logDebug;
37} else if (navigator.userAgent.match(/Gecko/)) { 34} else if (navigator.userAgent.match(/Gecko/)) {
38 Clipperz.log = function () { 35 Clipperz.log = function () {
39 // firebug 1.3 bug see http://code.google.com/p/fbug/issues/detail?id=1347 36 // firebug 1.3 bug see http://code.google.com/p/fbug/issues/detail?id=1347
40 console.log.apply(window._firebug, arguments); 37 console.log.apply(window._firebug, arguments);
41 }; 38 };
42} \ No newline at end of file 39} \ No newline at end of file
diff --git a/frontend/gamma/js/Clipperz/PM/BookmarkletProcessor.js b/frontend/gamma/js/Clipperz/PM/BookmarkletProcessor.js
index 789d6b8..897beed 100644
--- a/frontend/gamma/js/Clipperz/PM/BookmarkletProcessor.js
+++ b/frontend/gamma/js/Clipperz/PM/BookmarkletProcessor.js
@@ -1,120 +1,117 @@
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') { Clipperz = {}; } 27if (typeof(Clipperz) == 'undefined') { Clipperz = {}; }
31if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 28if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
32 29
33Clipperz.PM.BookmarkletProcessor = function(aConfiguration) { 30Clipperz.PM.BookmarkletProcessor = function(aConfiguration) {
34 this._configuration = aConfiguration; 31 this._configuration = aConfiguration;
35 32
36 this._editableFields = null; 33 this._editableFields = null;
37 this._favicon = null; 34 this._favicon = null;
38 35
39 return this; 36 return this;
40} 37}
41 38
42Clipperz.PM.BookmarkletProcessor.prototype = MochiKit.Base.update(null, { 39Clipperz.PM.BookmarkletProcessor.prototype = MochiKit.Base.update(null, {
43 40
44 'toString': function() { 41 'toString': function() {
45 return "Clipperz.PM.BookmarkletProcessor"; 42 return "Clipperz.PM.BookmarkletProcessor";
46 }, 43 },
47 44
48 //------------------------------------------------------------------------- 45 //-------------------------------------------------------------------------
49 46
50 'configuration': function() { 47 'configuration': function() {
51 return this._configuration; 48 return this._configuration;
52 }, 49 },
53 50
54 //------------------------------------------------------------------------- 51 //-------------------------------------------------------------------------
55 52
56 'pageTitle': function() { 53 'pageTitle': function() {
57 return this.configuration().page.title; 54 return this.configuration().page.title;
58 }, 55 },
59 56
60 //------------------------------------------------------------------------- 57 //-------------------------------------------------------------------------
61 58
62 'fields': function() { 59 'fields': function() {
63 return this.configuration().form.inputs; 60 return this.configuration().form.inputs;
64 }, 61 },
65 62
66 //------------------------------------------------------------------------- 63 //-------------------------------------------------------------------------
67 64
68 'editableFields': function() { 65 'editableFields': function() {
69 if (this._editableFields == null) { 66 if (this._editableFields == null) {
70 this._editableFields = MochiKit.Base.filter(function(aField) { 67 this._editableFields = MochiKit.Base.filter(function(aField) {
71 var result; 68 var result;
72 var type; 69 var type;
73 70
74 type = aField['type'].toLowerCase(); 71 type = aField['type'].toLowerCase();
75 result = ((type != 'hidden') && (type != 'submit') && (type != 'checkbox') && (type != 'radio') && (type != 'select')); 72 result = ((type != 'hidden') && (type != 'submit') && (type != 'checkbox') && (type != 'radio') && (type != 'select'));
76 73
77 return result; 74 return result;
78 }, this.fields()) 75 }, this.fields())
79 } 76 }
80 77
81 return this._editableFields; 78 return this._editableFields;
82 }, 79 },
83 80
84 //------------------------------------------------------------------------- 81 //-------------------------------------------------------------------------
85 82
86 'hostname': function() { 83 'hostname': function() {
87 if (this._hostname == null) { 84 if (this._hostname == null) {
88 var actionUrl; 85 var actionUrl;
89 86
90 actionUrl = this.configuration()['form']['attributes']['action']; 87 actionUrl = this.configuration()['form']['attributes']['action'];
91 this._hostname = actionUrl.replace(/ ^ h t t p s ? : \ / \ / ( [ ^ \ / ] * ) \ / . * /, '$1'); 88 this._hostname = actionUrl.replace(/ ^ h t t p s ? : \ / \ / ( [ ^ \ / ] * ) \ / . * /, '$1');
92 } 89 }
93 90
94 return this._hostname; 91 return this._hostname;
95 }, 92 },
96 93
97 'favicon': function() { 94 'favicon': function() {
98 if (this._favicon == null) { 95 if (this._favicon == null) {
99 this._favicon = "http://" + this.hostname() + "/favicon.ico"; 96 this._favicon = "http://" + this.hostname() + "/favicon.ico";
100 } 97 }
101 98
102 return this._favicon; 99 return this._favicon;
103 }, 100 },
104 101
105 //------------------------------------------------------------------------- 102 //-------------------------------------------------------------------------
106 __syntaxFix__: "syntax fix" 103 __syntaxFix__: "syntax fix"
107}); 104});
108 105
109//############################################################################# 106//#############################################################################
110/ * 107/ *
111Clipperz.PM.BookmarkletProcessor.createRecordFromBookmarkletConfiguration = function(anUser, aConfiguration) { 108Clipperz.PM.BookmarkletProcessor.createRecordFromBookmarkletConfiguration = function(anUser, aConfiguration) {
112 var processor; 109 var processor;
113 var record; 110 var record;
114 var recordVersion; 111 var recordVersion;
115 var directLogin; 112 var directLogin;
116 var bindings; 113 var bindings;
117 var i,c; 114 var i,c;
118 115
119 processor = new Clipperz.PM.BookmarkletProcessor(aConfiguration); 116 processor = new Clipperz.PM.BookmarkletProcessor(aConfiguration);
120 117
diff --git a/frontend/gamma/js/Clipperz/PM/Connection.js b/frontend/gamma/js/Clipperz/PM/Connection.js
index 6e58c60..b4e8aaa 100644
--- a/frontend/gamma/js/Clipperz/PM/Connection.js
+++ b/frontend/gamma/js/Clipperz/PM/Connection.js
@@ -1,120 +1,117 @@
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._proxy = args.proxy || Clipperz.PM.Proxy.defaultProxy; 38 this._proxy = args.proxy || Clipperz.PM.Proxy.defaultProxy;
42 this._getCredentialsFunction = args.getCredentialsFunction; 39 this._getCredentialsFunction = args.getCredentialsFunction;
43 40
44 this._clipperz_pm_crypto_version = null; 41 this._clipperz_pm_crypto_version = null;
45 this._connectionId = null; 42 this._connectionId = null;
46 this._sharedSecret = null; 43 this._sharedSecret = null;
47 44
48 return this; 45 return this;
49} 46}
50 47
51Clipperz.PM.Connection.prototype = MochiKit.Base.update(null, { 48Clipperz.PM.Connection.prototype = MochiKit.Base.update(null, {
52 49
53 'toString': function() { 50 'toString': function() {
54 return "Connection [" + this.version() + "]"; 51 return "Connection [" + this.version() + "]";
55 }, 52 },
56 53
57 //========================================================================= 54 //=========================================================================
58 55
59 'version': function() { 56 'version': function() {
60 throw Clipperz.Base.exception.AbstractMethod; 57 throw Clipperz.Base.exception.AbstractMethod;
61 }, 58 },
62 59
63 'clipperz_pm_crypto_version': function() { 60 'clipperz_pm_crypto_version': function() {
64 if (this._clipperz_pm_crypto_version == null) { 61 if (this._clipperz_pm_crypto_version == null) {
65 var connectionVersions; 62 var connectionVersions;
66 varversions; 63 varversions;
67 varversion; 64 varversion;
68 var i, c; 65 var i, c;
69 66
70 version = null; 67 version = null;
71 connectionVersions = Clipperz.PM.Connection.communicationProtocol.versions; 68 connectionVersions = Clipperz.PM.Connection.communicationProtocol.versions;
72 versions = MochiKit.Base.keys(connectionVersions); 69 versions = MochiKit.Base.keys(connectionVersions);
73 c = versions.length; 70 c = versions.length;
74 for (i=0; i<c; i++) { 71 for (i=0; i<c; i++) {
75 if (! (versions[i] == 'current')) { 72 if (! (versions[i] == 'current')) {
76 if (this instanceof connectionVersions[versions[i]]) { 73 if (this instanceof connectionVersions[versions[i]]) {
77 version = versions[i]; 74 version = versions[i];
78 }; 75 };
79 } 76 }
80 } 77 }
81 78
82 this._clipperz_pm_crypto_version = version; 79 this._clipperz_pm_crypto_version = version;
83 } 80 }
84 81
85 return this._clipperz_pm_crypto_version; 82 return this._clipperz_pm_crypto_version;
86 }, 83 },
87 84
88 //------------------------------------------------------------------------- 85 //-------------------------------------------------------------------------
89 86
90 'defaultErrorHandler': function(anErrorString, anException) { 87 'defaultErrorHandler': function(anErrorString, anException) {
91MochiKit.Logging.logError("### Connection.defaultErrorHandler: " + anErrorString + " (" + anException + ")"); 88MochiKit.Logging.logError("### Connection.defaultErrorHandler: " + anErrorString + " (" + anException + ")");
92 }, 89 },
93 90
94 //------------------------------------------------------------------------- 91 //-------------------------------------------------------------------------
95 92
96 'getCredentialsFunction': function () { 93 'getCredentialsFunction': function () {
97 return this._getCredentialsFunction; 94 return this._getCredentialsFunction;
98 }, 95 },
99 96
100 'normalizedCredentials': function(someValues) { 97 'normalizedCredentials': function(someValues) {
101 throw Clipperz.Base.exception.AbstractMethod; 98 throw Clipperz.Base.exception.AbstractMethod;
102 }, 99 },
103 100
104 //========================================================================= 101 //=========================================================================
105 102
106 'proxy': function () { 103 'proxy': function () {
107 return this._proxy; 104 return this._proxy;
108 }, 105 },
109 106
110 //========================================================================= 107 //=========================================================================
111 108
112 'register': function () { 109 'register': function () {
113 throw Clipperz.Base.exception.AbstractMethod; 110 throw Clipperz.Base.exception.AbstractMethod;
114 }, 111 },
115 112
116 'login': function() { 113 'login': function() {
117 throw Clipperz.Base.exception.AbstractMethod; 114 throw Clipperz.Base.exception.AbstractMethod;
118 }, 115 },
119 116
120 //------------------------------------------------------------------------- 117 //-------------------------------------------------------------------------
diff --git a/frontend/gamma/js/Clipperz/PM/Crypto.js b/frontend/gamma/js/Clipperz/PM/Crypto.js
index bfafbea..31fe349 100644
--- a/frontend/gamma/js/Clipperz/PM/Crypto.js
+++ b/frontend/gamma/js/Clipperz/PM/Crypto.js
@@ -1,120 +1,117 @@
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
36Clipperz.PM.Crypto.encryptingFunctions = {}; 33Clipperz.PM.Crypto.encryptingFunctions = {};
37 34
38MochiKit.Base.update(Clipperz.PM.Crypto, { 35MochiKit.Base.update(Clipperz.PM.Crypto, {
39 36
40 '__repr__': function () { 37 '__repr__': function () {
41 return "[" + this.NAME + " " + this.VERSION + "]"; 38 return "[" + this.NAME + " " + this.VERSION + "]";
42 }, 39 },
43 40
44 //------------------------------------------------------------------------- 41 //-------------------------------------------------------------------------
45 42
46 'toString': function () { 43 'toString': function () {
47 return this.__repr__(); 44 return this.__repr__();
48 }, 45 },
49 46
50 //------------------------------------------------------------------------- 47 //-------------------------------------------------------------------------
51/* 48/*
52 'communicationProtocol': { 49 'communicationProtocol': {
53 'currentVersion': '0.2', 50 'currentVersion': '0.2',
54 'versions': { 51 'versions': {
55 '0.1': Clipperz.PM.Connection.SRP['1.0'],//Clipperz.Crypto.SRP.versions['1.0'].Connection, 52 '0.1': Clipperz.PM.Connection.SRP['1.0'],//Clipperz.Crypto.SRP.versions['1.0'].Connection,
56 '0.2': Clipperz.PM.Connection.SRP['1.1']//Clipperz.Crypto.SRP.versions['1.1'].Connection 53 '0.2': Clipperz.PM.Connection.SRP['1.1']//Clipperz.Crypto.SRP.versions['1.1'].Connection
57 }, 54 },
58 'fallbackVersions': { 55 'fallbackVersions': {
59 'current':'0.1', 56 'current':'0.1',
60 '0.2': '0.1', 57 '0.2': '0.1',
61 '0.1': null 58 '0.1': null
62 } 59 }
63 }, 60 },
64*/ 61*/
65 //------------------------------------------------------------------------- 62 //-------------------------------------------------------------------------
66 63
67 'encryptingFunctions': { 64 'encryptingFunctions': {
68 'currentVersion': '0.3', 65 'currentVersion': '0.3',
69 'versions': { 66 'versions': {
70 67
71 //##################################################################### 68 //#####################################################################
72 69
73 '0.1': { 70 '0.1': {
74 'encrypt': function(aKey, aValue) { 71 'encrypt': function(aKey, aValue) {
75 return Clipperz.Crypto.Base.encryptUsingSecretKey(aKey, Clipperz.Base.serializeJSON(aValue)); 72 return Clipperz.Crypto.Base.encryptUsingSecretKey(aKey, Clipperz.Base.serializeJSON(aValue));
76 }, 73 },
77 74
78 'deferredEncrypt': function(aKey, aValue) { 75 'deferredEncrypt': function(aKey, aValue) {
79 var deferredResult; 76 var deferredResult;
80 77
81 deferredResult = new Clipperz.Async.Deferred("Crypto[0.1].deferredEncrypt"); 78 deferredResult = new Clipperz.Async.Deferred("Crypto[0.1].deferredEncrypt");
82 deferredResult.addCallback(Clipperz.PM.Crypto.encryptingFunctions.versions['0.1'].encrypt, aKey, aValue); 79 deferredResult.addCallback(Clipperz.PM.Crypto.encryptingFunctions.versions['0.1'].encrypt, aKey, aValue);
83 deferredResult.callback(); 80 deferredResult.callback();
84 81
85 return deferredResult; 82 return deferredResult;
86 }, 83 },
87 84
88 'decrypt': function(aKey, aValue) { 85 'decrypt': function(aKey, aValue) {
89 var result; 86 var result;
90 87
91 if (aValue != null) { 88 if (aValue != null) {
92 result = Clipperz.Base.evalJSON(Clipperz.Crypto.Base.decryptUsingSecretKey(aKey, aValue)); 89 result = Clipperz.Base.evalJSON(Clipperz.Crypto.Base.decryptUsingSecretKey(aKey, aValue));
93 } else { 90 } else {
94 result = null; 91 result = null;
95 } 92 }
96 93
97 return result; 94 return result;
98 }, 95 },
99 96
100 'deferredDecrypt': function(aKey, aValue) { 97 'deferredDecrypt': function(aKey, aValue) {
101 var deferredResult; 98 var deferredResult;
102 99
103 deferredResult = new Clipperz.Async.Deferred("Crypto.[0.1].deferredDecrypt"); 100 deferredResult = new Clipperz.Async.Deferred("Crypto.[0.1].deferredDecrypt");
104 deferredResult.addCallback(Clipperz.PM.Crypto.encryptingFunctions.versions['0.1'].decrypt, aKey, aValue); 101 deferredResult.addCallback(Clipperz.PM.Crypto.encryptingFunctions.versions['0.1'].decrypt, aKey, aValue);
105 deferredResult.callback(); 102 deferredResult.callback();
106 103
107 return deferredResult; 104 return deferredResult;
108 }, 105 },
109 106
110 'hash': function(aValue) { 107 'hash': function(aValue) {
111 var result; 108 var result;
112 var strngResult; 109 var strngResult;
113 110
114 stringResult = Clipperz.Crypto.Base.computeHashValue(aValue.asString()); //!!!!!!! 111 stringResult = Clipperz.Crypto.Base.computeHashValue(aValue.asString()); //!!!!!!!
115 result = new Clipperz.ByteArray("0x" + stringResult); 112 result = new Clipperz.ByteArray("0x" + stringResult);
116 113
117 return result; 114 return result;
118 }, 115 },
119 116
120 'deriveKey': function(aStringValue) { 117 'deriveKey': function(aStringValue) {
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/DirectLogin.js b/frontend/gamma/js/Clipperz/PM/DataModel/DirectLogin.js
index 1d38509..8f8696d 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/DirectLogin.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/DirectLogin.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.DataModel'); 26Clipperz.Base.module('Clipperz.PM.DataModel');
30 27
31Clipperz.PM.DataModel.DirectLogin = function(args) { 28Clipperz.PM.DataModel.DirectLogin = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.DataModel.DirectLogin.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.DataModel.DirectLogin.superclass.constructor.apply(this, arguments);
35 32
36 this._reference =args.reference 33 this._reference =args.reference
37 ||Clipperz.PM.Crypto.randomKey(); 34 ||Clipperz.PM.Crypto.randomKey();
38 this._record =args.record 35 this._record =args.record
39 ||Clipperz.Base.exception.raise('MandatoryParameter'); 36 ||Clipperz.Base.exception.raise('MandatoryParameter');
40 37
41 this._retrieveIndexDataFunction = args.retrieveIndexDataFunction 38 this._retrieveIndexDataFunction = args.retrieveIndexDataFunction
42 ||this.record().retrieveDirectLoginIndexDataFunction() 39 ||this.record().retrieveDirectLoginIndexDataFunction()
43 ||Clipperz.Base.exception.raise('MandatoryParameter'); 40 ||Clipperz.Base.exception.raise('MandatoryParameter');
44 this._setIndexDataFunction = args.setIndexDataFunction 41 this._setIndexDataFunction = args.setIndexDataFunction
45 ||this.record().setDirectLoginIndexDataFunction() 42 ||this.record().setDirectLoginIndexDataFunction()
46 ||Clipperz.Base.exception.raise('MandatoryParameter'); 43 ||Clipperz.Base.exception.raise('MandatoryParameter');
47 this._removeIndexDataFunction =args.removeIndexDataFunction 44 this._removeIndexDataFunction =args.removeIndexDataFunction
48 ||this.record().removeDirectLoginIndexDataFunction() 45 ||this.record().removeDirectLoginIndexDataFunction()
49 ||Clipperz.Base.exception.raise('MandatoryParameter'); 46 ||Clipperz.Base.exception.raise('MandatoryParameter');
50 47
51 this._inputs = null; 48 this._inputs = null;
52 this._bindings = null; 49 this._bindings = null;
53 this._formValues = null; 50 this._formValues = null;
54 51
55 // this._inputsDeferredLock = new MochiKit.Async.DeferredLock(); 52 // this._inputsDeferredLock = new MochiKit.Async.DeferredLock();
56 // this._bindingsDeferredLock = new MochiKit.Async.DeferredLock(); 53 // this._bindingsDeferredLock = new MochiKit.Async.DeferredLock();
57 // this._formValuesDeferredLock = new MochiKit.Async.DeferredLock(); 54 // this._formValuesDeferredLock = new MochiKit.Async.DeferredLock();
58 55
59 this._transientState = null; 56 this._transientState = null;
60 57
61 this._isBrandNew = MochiKit.Base.isUndefinedOrNull(args.reference); 58 this._isBrandNew = MochiKit.Base.isUndefinedOrNull(args.reference);
62 59
63 this.record().addDirectLogin(this); 60 this.record().addDirectLogin(this);
64 61
65 return this; 62 return this;
66} 63}
67 64
68Clipperz.Base.extend(Clipperz.PM.DataModel.DirectLogin, Object, { 65Clipperz.Base.extend(Clipperz.PM.DataModel.DirectLogin, Object, {
69 66
70 'toString': function() { 67 'toString': function() {
71 return "DirectLogin (" + this.reference() + ")"; 68 return "DirectLogin (" + this.reference() + ")";
72 }, 69 },
73 70
74 //========================================================================= 71 //=========================================================================
75 72
76 'reference': function () { 73 'reference': function () {
77 return this._reference; 74 return this._reference;
78 }, 75 },
79 76
80 //------------------------------------------------------------------------- 77 //-------------------------------------------------------------------------
81 78
82 'record': function () { 79 'record': function () {
83 return this._record; 80 return this._record;
84 }, 81 },
85 82
86 //========================================================================= 83 //=========================================================================
87 84
88 'isBrandNew': function () { 85 'isBrandNew': function () {
89 return this._isBrandNew; 86 return this._isBrandNew;
90 }, 87 },
91 88
92 //========================================================================= 89 //=========================================================================
93 90
94 'removeIndexDataFunction': function () { 91 'removeIndexDataFunction': function () {
95 return this._removeIndexDataFunction; 92 return this._removeIndexDataFunction;
96 }, 93 },
97 94
98 'remove': function () { 95 'remove': function () {
99 return Clipperz.Async.callbacks("DirectLogin.remove", [ 96 return Clipperz.Async.callbacks("DirectLogin.remove", [
100 MochiKit.Base.partial(this.removeIndexDataFunction(), this.reference()), 97 MochiKit.Base.partial(this.removeIndexDataFunction(), this.reference()),
101 MochiKit.Base.method(this.record(), 'removeDirectLogin', this) 98 MochiKit.Base.method(this.record(), 'removeDirectLogin', this)
102 ], {trace:false}); 99 ], {trace:false});
103 }, 100 },
104 101
105 //========================================================================= 102 //=========================================================================
106 /* 103 /*
107 'inputsDeferredLock': function () { 104 'inputsDeferredLock': function () {
108 return this._inputsDeferredLock; 105 return this._inputsDeferredLock;
109 }, 106 },
110 107
111 'bindingsDeferredLock': function () { 108 'bindingsDeferredLock': function () {
112 return this._bindingsDeferredLock; 109 return this._bindingsDeferredLock;
113 }, 110 },
114 111
115 'formValuesDeferredLock': function () { 112 'formValuesDeferredLock': function () {
116 return this._formValuesDeferredLock; 113 return this._formValuesDeferredLock;
117 }, 114 },
118*/ 115*/
119 //========================================================================= 116 //=========================================================================
120 117
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginBinding.js b/frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginBinding.js
index fd55c63..4377853 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginBinding.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginBinding.js
@@ -1,120 +1,117 @@
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, args) { 33Clipperz.PM.DataModel.DirectLoginBinding = function(aDirectLogin, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 this._directLogin = aDirectLogin|| Clipperz.Base.exception.raise('MandatoryParameter'); 36 this._directLogin = aDirectLogin|| Clipperz.Base.exception.raise('MandatoryParameter');
40 37
41 this._key = args.key|| Clipperz.Base.exception.raise('MandatoryParameter'); 38 this._key = args.key|| Clipperz.Base.exception.raise('MandatoryParameter');
42 this._fieldKey = args.field || /* this.directLogin().fieldWithName(args.fieldName).reference() || */null; 39 this._fieldKey = args.field || /* this.directLogin().fieldWithName(args.fieldName).reference() || */null;
43 40
44 return this; 41 return this;
45} 42}
46 43
47Clipperz.PM.DataModel.DirectLoginBinding.prototype = MochiKit.Base.update(null, { 44Clipperz.PM.DataModel.DirectLoginBinding.prototype = MochiKit.Base.update(null, {
48 45
49 'toString': function() { 46 'toString': function() {
50 return "DirectLoginBinding (" + this.key() + ", " + this.fieldKey() + ")"; 47 return "DirectLoginBinding (" + this.key() + ", " + this.fieldKey() + ")";
51 }, 48 },
52 49
53 //------------------------------------------------------------------------- 50 //-------------------------------------------------------------------------
54 51
55 'directLogin': function () { 52 'directLogin': function () {
56 return this._directLogin; 53 return this._directLogin;
57 }, 54 },
58 55
59 //------------------------------------------------------------------------- 56 //-------------------------------------------------------------------------
60 57
61 'key': function() { 58 'key': function() {
62 return this._key; 59 return this._key;
63 }, 60 },
64 61
65 //------------------------------------------------------------------------- 62 //-------------------------------------------------------------------------
66 63
67 'fieldKey': function() { 64 'fieldKey': function() {
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 return this.directLogin().setValue('bindingData' + '.' + this.key(), aValue); 71 return this.directLogin().setValue('bindingData' + '.' + this.key(), aValue);
75 }, 72 },
76 73
77 //'fieldName': function() { 74 //'fieldName': function() {
78 // return this._fieldName; 75 // return this._fieldName;
79 //}, 76 //},
80 77
81 //------------------------------------------------------------------------- 78 //-------------------------------------------------------------------------
82 79
83 'field': function() { 80 'field': function() {
84 var deferredResult; 81 var deferredResult;
85 82
86 if (this.fieldKey() != null) { 83 if (this.fieldKey() != null) {
87 deferredResult = Clipperz.Async.callbacks("DirectLoginBinding.field [1]", [ 84 deferredResult = Clipperz.Async.callbacks("DirectLoginBinding.field [1]", [
88 MochiKit.Base.method(this.directLogin().record(), 'fields'), 85 MochiKit.Base.method(this.directLogin().record(), 'fields'),
89 MochiKit.Base.itemgetter(this.fieldKey()) 86 MochiKit.Base.itemgetter(this.fieldKey())
90 ], {trace:false}); 87 ], {trace:false});
91 // } else if (this.fieldName() != null) { 88 // } else if (this.fieldName() != null) {
92 // WTF = TODO; 89 // WTF = TODO;
93 // result = this.directLogin().record().fieldWithName(this.fieldName()); 90 // result = this.directLogin().record().fieldWithName(this.fieldName());
94 // 91 //
95 // this.setFieldKey(result.key()); 92 // this.setFieldKey(result.key());
96 } else { 93 } else {
97 deferredResult = MochiKit.Async.succeed(null); 94 deferredResult = MochiKit.Async.succeed(null);
98 } 95 }
99 96
100 return deferredResult; 97 return deferredResult;
101 }, 98 },
102 99
103 'setField': function (aField) { 100 'setField': function (aField) {
104 this.setFieldKey(aField.reference()); 101 this.setFieldKey(aField.reference());
105 }, 102 },
106 103
107 //------------------------------------------------------------------------- 104 //-------------------------------------------------------------------------
108/* 105/*
109 'fieldValue': function () { 106 'fieldValue': function () {
110 return Clipperz.Async.callbacks("DirectLoginBinding.fieldValue", [ 107 return Clipperz.Async.callbacks("DirectLoginBinding.fieldValue", [
111 MochiKit.Base.method('field'), 108 MochiKit.Base.method('field'),
112 MochiKit.Base.methodcaller('value') 109 MochiKit.Base.methodcaller('value')
113 ], {trace:false}); 110 ], {trace:false});
114 }, 111 },
115*/ 112*/
116 //------------------------------------------------------------------------- 113 //-------------------------------------------------------------------------
117 114
118 'serializedData': function() { 115 'serializedData': function() {
119 return this.fieldKey(); 116 return this.fieldKey();
120 }, 117 },
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginFormValue.js b/frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginFormValue.js
index 939ab4b..a461197 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginFormValue.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginFormValue.js
@@ -1,107 +1,104 @@
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.DirectLoginFormValue = function(aDirectLogin, args) { 33Clipperz.PM.DataModel.DirectLoginFormValue = function(aDirectLogin, args) {
37 args = args || {}; 34 args = args || {};
38 35
39 this._directLogin = aDirectLogin|| Clipperz.Base.exception.raise('MandatoryParameter'); 36 this._directLogin = aDirectLogin|| Clipperz.Base.exception.raise('MandatoryParameter');
40 37
41 this._key = args.key || Clipperz.Base.exception.raise('MandatoryParameter'); 38 this._key = args.key || Clipperz.Base.exception.raise('MandatoryParameter');
42 this._fieldOptions = args.fieldOptions|| Clipperz.Base.exception.raise('MandatoryParameter'); 39 this._fieldOptions = args.fieldOptions|| Clipperz.Base.exception.raise('MandatoryParameter');
43 this._value = args.value || null; 40 this._value = args.value || null;
44 41
45 return this; 42 return this;
46} 43}
47 44
48Clipperz.PM.DataModel.DirectLoginFormValue.prototype = MochiKit.Base.update(null, { 45Clipperz.PM.DataModel.DirectLoginFormValue.prototype = MochiKit.Base.update(null, {
49 46
50 'toString': function() { 47 'toString': function() {
51 return "DirectLoginFormValue (" + this.key() + ", " + this.value() + ")"; 48 return "DirectLoginFormValue (" + this.key() + ", " + this.value() + ")";
52 }, 49 },
53 50
54 //------------------------------------------------------------------------- 51 //-------------------------------------------------------------------------
55 52
56 'directLogin': function () { 53 'directLogin': function () {
57 return this._directLogin; 54 return this._directLogin;
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 'fieldOptions': function() { 65 'fieldOptions': function() {
69 return this._fieldOptions; 66 return this._fieldOptions;
70 }, 67 },
71 68
72 //------------------------------------------------------------------------- 69 //-------------------------------------------------------------------------
73 70
74 'type': function () { 71 'type': function () {
75 return this.fieldOptions()['type']; 72 return this.fieldOptions()['type'];
76 }, 73 },
77 74
78 //------------------------------------------------------------------------- 75 //-------------------------------------------------------------------------
79 76
80 'value': function() { 77 'value': function() {
81 varresult; 78 varresult;
82 79
83 result = this._value; 80 result = this._value;
84 81
85 // if ((result == null) && (this.type() == 'checkbox')) { 82 // if ((result == null) && (this.type() == 'checkbox')) {
86 // result = false; 83 // result = false;
87 // }; 84 // };
88 85
89 return result; 86 return result;
90 }, 87 },
91 88
92 'setValue': function (aValue) { 89 'setValue': function (aValue) {
93//console.log("DirectLoginFormValue.setValue", aValue); 90//console.log("DirectLoginFormValue.setValue", aValue);
94 this._value = aValue; 91 this._value = aValue;
95 return this.directLogin().setValue('formValues' + '.' + this.key(), aValue); 92 return this.directLogin().setValue('formValues' + '.' + this.key(), aValue);
96 }, 93 },
97 94
98 //------------------------------------------------------------------------- 95 //-------------------------------------------------------------------------
99/* 96/*
100 'serializedData': function() { 97 'serializedData': function() {
101 return this.value(); 98 return this.value();
102 }, 99 },
103*/ 100*/
104 //------------------------------------------------------------------------- 101 //-------------------------------------------------------------------------
105 __syntaxFix__: "syntax fix" 102 __syntaxFix__: "syntax fix"
106}); 103});
107 104
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginInput.js b/frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginInput.js
index 673d5ee..8188389 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginInput.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/DirectLoginInput.js
@@ -1,120 +1,117 @@
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(args) { 32Clipperz.PM.DataModel.DirectLoginInput = function(args) {
36 this._args = args; 33 this._args = args;
37 34
38 return this; 35 return this;
39} 36}
40 37
41Clipperz.PM.DataModel.DirectLoginInput.prototype = MochiKit.Base.update(null, { 38Clipperz.PM.DataModel.DirectLoginInput.prototype = MochiKit.Base.update(null, {
42 39
43 'args': function() { 40 'args': function() {
44 return this._args; 41 return this._args;
45 }, 42 },
46 43
47 //------------------------------------------------------------------------- 44 //-------------------------------------------------------------------------
48 45
49 'name': function() { 46 'name': function() {
50 return this.args()['name']; 47 return this.args()['name'];
51 }, 48 },
52 49
53 //------------------------------------------------------------------------- 50 //-------------------------------------------------------------------------
54 51
55 'type': function() { 52 'type': function() {
56 var result; 53 var result;
57 54
58 result = this.args()['type']; 55 result = this.args()['type'];
59 56
60 if (result != null) { 57 if (result != null) {
61 result = result.toLowerCase(); 58 result = result.toLowerCase();
62 } 59 }
63 return result; 60 return result;
64 }, 61 },
65 62
66 //------------------------------------------------------------------------- 63 //-------------------------------------------------------------------------
67 64
68 'options': function() { 65 'options': function() {
69 return this.args()['options']; 66 return this.args()['options'];
70 }, 67 },
71 68
72 //------------------------------------------------------------------------- 69 //-------------------------------------------------------------------------
73 70
74 'value': function() { 71 'value': function() {
75 return this.args()['value']; 72 return this.args()['value'];
76 }, 73 },
77 74
78 //------------------------------------------------------------------------- 75 //-------------------------------------------------------------------------
79 /* 76 /*
80 'formConfiguration': function(someFormValues, someBindings, someFields) { 77 'formConfiguration': function(someFormValues, someBindings, someFields) {
81 var result; 78 var result;
82//console.log("### DirectLoginInput.formConfiguration", someFields); 79//console.log("### DirectLoginInput.formConfiguration", someFields);
83 if (this.shouldSetValue()) { 80 if (this.shouldSetValue()) {
84 switch (this.type()) { 81 switch (this.type()) {
85 case 'select': 82 case 'select':
86 var currentValue; 83 var currentValue;
87 var options; 84 var options;
88 85
89 // currentValue = this.directLogin()._configuration['formValues'][this.name()]; 86 // currentValue = this.directLogin()._configuration['formValues'][this.name()];
90 currentValue = someFormValues[this.name()]; 87 currentValue = someFormValues[this.name()];
91 options = this.args()['options']; 88 options = this.args()['options'];
92 89
93 result = MochiKit.DOM.SELECT({name:this.name()}, 90 result = MochiKit.DOM.SELECT({name:this.name()},
94 MochiKit.Base.map(function(anOption) { 91 MochiKit.Base.map(function(anOption) {
95 var options; 92 var options;
96 93
97 options = {value:anOption['value']}; 94 options = {value:anOption['value']};
98 if (currentValue == anOption['value']) { 95 if (currentValue == anOption['value']) {
99 options.selected = true; 96 options.selected = true;
100 } 97 }
101 98
102 return MochiKit.DOM.OPTION(options, anOption['label']) 99 return MochiKit.DOM.OPTION(options, anOption['label'])
103 }, options) 100 }, options)
104 ) 101 )
105 break; 102 break;
106 case 'checkbox': 103 case 'checkbox':
107 var options; 104 var options;
108 105
109 options = {type:'checkbox', name: this.name()}; 106 options = {type:'checkbox', name: this.name()};
110 // if (this.directLogin()._configuration['formValues'][this.name()] == true) { 107 // if (this.directLogin()._configuration['formValues'][this.name()] == true) {
111 if (someFormValues[this.name()] == true) { 108 if (someFormValues[this.name()] == true) {
112 options['checked'] = true; 109 options['checked'] = true;
113 }; 110 };
114 111
115 result = MochiKit.DOM.INPUT(options, null); 112 result = MochiKit.DOM.INPUT(options, null);
116 break; 113 break;
117 case 'radio': 114 case 'radio':
118 var currentName; 115 var currentName;
119 var currentValue; 116 var currentValue;
120 var options; 117 var options;
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/EncryptedRemoteObject.js b/frontend/gamma/js/Clipperz/PM/DataModel/EncryptedRemoteObject.js
index 3408b08..cdeec8b 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/EncryptedRemoteObject.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/EncryptedRemoteObject.js
@@ -1,120 +1,117 @@
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.KeyValueObjectStore) == 'undefined') { throw ""; }} catch (e) { 26try { if (typeof(Clipperz.KeyValueObjectStore) == 'undefined') { throw ""; }} catch (e) {
30 throw "Clipperz.PM.DataModel.EncryptedRemoteObject depends on Clipperz.KeyValueObjectStore!"; 27 throw "Clipperz.PM.DataModel.EncryptedRemoteObject depends on Clipperz.KeyValueObjectStore!";
31} 28}
32 29
33if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } 30if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; }
34if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; } 31if (typeof(Clipperz.PM.DataModel) == 'undefined') { Clipperz.PM.DataModel = {}; }
35 32
36Clipperz.PM.DataModel.EncryptedRemoteObject = function(args) { 33Clipperz.PM.DataModel.EncryptedRemoteObject = function(args) {
37 args = args || {}; 34 args = args || {};
38 35
39 this._name = args.name || null; 36 this._name = args.name || null;
40 this._reference = args.reference || Clipperz.PM.Crypto.randomKey(); 37 this._reference = args.reference || Clipperz.PM.Crypto.randomKey();
41 this._isBrandNew = ((args.reference == null) && (args.remoteData == null)); 38 this._isBrandNew = ((args.reference == null) && (args.remoteData == null));
42 39
43 if ((this._isBrandNew == false) && (args['retrieveKeyFunction'] == null)) { 40 if ((this._isBrandNew == false) && (args['retrieveKeyFunction'] == null)) {
44 Clipperz.Base.exception.raise('MandatoryParameter'); 41 Clipperz.Base.exception.raise('MandatoryParameter');
45 } else { 42 } else {
46 this._retrieveKeyFunction = args['retrieveKeyFunction']; 43 this._retrieveKeyFunction = args['retrieveKeyFunction'];
47 } 44 }
48 45
49 this._retrieveRemoteDataFunction = args.retrieveRemoteDataFunction|| null; 46 this._retrieveRemoteDataFunction = args.retrieveRemoteDataFunction|| null;
50 this._remoteData = args.remoteData || null; 47 this._remoteData = args.remoteData || null;
51 // this._remoteData = args.remoteData ? Clipperz.Base.deepClone(args.remoteData) : null; 48 // this._remoteData = args.remoteData ? Clipperz.Base.deepClone(args.remoteData) : null;
52 if ((!this._isBrandNew) && ((this._retrieveRemoteDataFunction == null) && (this._remoteData == null))) { 49 if ((!this._isBrandNew) && ((this._retrieveRemoteDataFunction == null) && (this._remoteData == null))) {
53 Clipperz.Base.exception.raise('MandatoryParameter'); 50 Clipperz.Base.exception.raise('MandatoryParameter');
54 } 51 }
55 52
56 53
57 this._encryptedDataKeypath = args.encryptedDataKeypath || 'data'; //Clipperz.Base.exception.raise('MandatoryParameter'); 54 this._encryptedDataKeypath = args.encryptedDataKeypath || 'data'; //Clipperz.Base.exception.raise('MandatoryParameter');
58 this._encryptedVersionKeypath = args.encryptedVersionKeypath || 'version';//Clipperz.Base.exception.raise('MandatoryParameter'); 55 this._encryptedVersionKeypath = args.encryptedVersionKeypath || 'version';//Clipperz.Base.exception.raise('MandatoryParameter');
59 56
60 57
61 this._transientState = null; 58 this._transientState = null;
62 this._deferredLocks = {}; 59 this._deferredLocks = {};
63 60
64 if (this._isBrandNew == true) { 61 if (this._isBrandNew == true) {
65 this._objectDataStore = new Clipperz.KeyValueObjectStore(/*{'name':'EncryptedRemoteObject.objectDataStore [1]'}*/); 62 this._objectDataStore = new Clipperz.KeyValueObjectStore(/*{'name':'EncryptedRemoteObject.objectDataStore [1]'}*/);
66 } else { 63 } else {
67 this._objectDataStore = null; 64 this._objectDataStore = null;
68 } 65 }
69 66
70 return this; 67 return this;
71} 68}
72 69
73// 70//
74 // Basic data workflow 71 // Basic data workflow
75 //======================= 72 //=======================
76// 73//
77 //getRemoteData 74 //getRemoteData
78 // unpackRemoteData 75 // unpackRemoteData
79 // getDecryptData [encryptedDataKeypath, encryptedVersionKeypath] 76 // getDecryptData [encryptedDataKeypath, encryptedVersionKeypath]
80 // unpackData 77 // unpackData
81 // 78 //
82 // 79 //
83 // ?? packData 80 // ?? packData
84 // ?? encryptDataWithKey 81 // ?? encryptDataWithKey
85 // ??packRemoteData [encryptedDataKeypath (?), encryptedVersionKeypath (?)] 82 // ??packRemoteData [encryptedDataKeypath (?), encryptedVersionKeypath (?)]
86// 83//
87 84
88Clipperz.PM.DataModel.EncryptedRemoteObject.prototype = MochiKit.Base.update(null, { 85Clipperz.PM.DataModel.EncryptedRemoteObject.prototype = MochiKit.Base.update(null, {
89 86
90 'toString': function () { 87 'toString': function () {
91 return "Clipperz.PM.DataModel.EncryptedRemoteObject" + (this.name() != null ? " - " + this.name() : ""); 88 return "Clipperz.PM.DataModel.EncryptedRemoteObject" + (this.name() != null ? " - " + this.name() : "");
92 }, 89 },
93 90
94 //------------------------------------------------------------------------- 91 //-------------------------------------------------------------------------
95 92
96 'name': function () { 93 'name': function () {
97 return this._name; 94 return this._name;
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 'setReference': function (aValue) { 103 'setReference': function (aValue) {
107 this._reference = aValue; 104 this._reference = aValue;
108 105
109 return this._reference; 106 return this._reference;
110 }, 107 },
111 108
112 //------------------------------------------------------------------------- 109 //-------------------------------------------------------------------------
113 110
114 'transientState': function () { 111 'transientState': function () {
115 if (this._transientState == null) { 112 if (this._transientState == null) {
116 this._transientState = new Clipperz.KeyValueObjectStore(/*{'name':'EncryptedRemoteObject.transientState [2]'}*/); 113 this._transientState = new Clipperz.KeyValueObjectStore(/*{'name':'EncryptedRemoteObject.transientState [2]'}*/);
117 } 114 }
118 115
119 return this._transientState; 116 return this._transientState;
120 }, 117 },
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/OneTimePassword.js b/frontend/gamma/js/Clipperz/PM/DataModel/OneTimePassword.js
index 9f1c197..834e21b 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/OneTimePassword.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/OneTimePassword.js
@@ -1,120 +1,117 @@
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 //this._user = args['user']; 36 //this._user = args['user'];
40 this._reference = args['reference']|| Clipperz.PM.Crypto.randomKey(); 37 this._reference = args['reference']|| Clipperz.PM.Crypto.randomKey();
41 this._password = args['password']; 38 this._password = args['password'];
42 this._passwordValue = Clipperz.PM.DataModel.OneTimePassword.normalizedOneTimePassword(args['password']); 39 this._passwordValue = Clipperz.PM.DataModel.OneTimePassword.normalizedOneTimePassword(args['password']);
43 this._creationDate = args['created'] ? Clipperz.PM.Date.parseDateWithUTCFormat(args['created']) : new Date(); 40 this._creationDate = args['created'] ? Clipperz.PM.Date.parseDateWithUTCFormat(args['created']) : new Date();
44 this._usageDate = args['used'] ? Clipperz.PM.Date.parseDateWithUTCFormat(args['used']) : null; 41 this._usageDate = args['used'] ? Clipperz.PM.Date.parseDateWithUTCFormat(args['used']) : null;
45 42
46 this._status = args['status'] || 'ACTIVE'; //'REQUESTED', 'USED', 'DISABLED' 43 this._status = args['status'] || 'ACTIVE'; //'REQUESTED', 'USED', 'DISABLED'
47 this._connectionInfo= null; 44 this._connectionInfo= null;
48 45
49 this._key = null; 46 this._key = null;
50 this._keyChecksum= null; 47 this._keyChecksum= null;
51 48
52 return this; 49 return this;
53} 50}
54 51
55Clipperz.PM.DataModel.OneTimePassword.prototype = MochiKit.Base.update(null, { 52Clipperz.PM.DataModel.OneTimePassword.prototype = MochiKit.Base.update(null, {
56 53
57 'toString': function() { 54 'toString': function() {
58 return "Clipperz.PM.DataModel.OneTimePassword"; 55 return "Clipperz.PM.DataModel.OneTimePassword";
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 //------------------------------------------------------------------------- 64 //-------------------------------------------------------------------------
68 65
69 'password': function() { 66 'password': function() {
70 return this._password; 67 return this._password;
71 }, 68 },
72 69
73 //------------------------------------------------------------------------- 70 //-------------------------------------------------------------------------
74 71
75 'passwordValue': function() { 72 'passwordValue': function() {
76 return this._passwordValue; 73 return this._passwordValue;
77 }, 74 },
78 75
79 //------------------------------------------------------------------------- 76 //-------------------------------------------------------------------------
80 77
81 'creationDate': function() { 78 'creationDate': function() {
82 return this._creationDate; 79 return this._creationDate;
83 }, 80 },
84 81
85 //------------------------------------------------------------------------- 82 //-------------------------------------------------------------------------
86 83
87 'reference': function() { 84 'reference': function() {
88 return this._reference; 85 return this._reference;
89 }, 86 },
90 87
91 //------------------------------------------------------------------------- 88 //-------------------------------------------------------------------------
92 89
93 'key': function() { 90 'key': function() {
94 if (this._key == null) { 91 if (this._key == null) {
95 this._key = Clipperz.PM.DataModel.OneTimePassword.computeKeyWithUsernameAndPassword(this.user().username(), this.passwordValue()); 92 this._key = Clipperz.PM.DataModel.OneTimePassword.computeKeyWithUsernameAndPassword(this.user().username(), this.passwordValue());
96 } 93 }
97 94
98 return this._key; 95 return this._key;
99 }, 96 },
100 97
101 //------------------------------------------------------------------------- 98 //-------------------------------------------------------------------------
102 99
103 'keyChecksum': function() { 100 'keyChecksum': function() {
104 if (this._keyChecksum == null) { 101 if (this._keyChecksum == null) {
105 this._keyChecksum = Clipperz.PM.DataModel.OneTimePassword.computeKeyChecksumWithUsernameAndPassword(this.user().username(), this.passwordValue()); 102 this._keyChecksum = Clipperz.PM.DataModel.OneTimePassword.computeKeyChecksumWithUsernameAndPassword(this.user().username(), this.passwordValue());
106 } 103 }
107 104
108 return this._keyChecksum; 105 return this._keyChecksum;
109 }, 106 },
110*/ 107*/
111 //------------------------------------------------------------------------- 108 //-------------------------------------------------------------------------
112 109
113 'status': function() { 110 'status': function() {
114 return this._status; 111 return this._status;
115 }, 112 },
116 113
117 'setStatus': function(aValue) { 114 'setStatus': function(aValue) {
118 this._status = aValue; 115 this._status = aValue;
119 }, 116 },
120 117
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/Record.Version.Field.js b/frontend/gamma/js/Clipperz/PM/DataModel/Record.Version.Field.js
index 147aa7d..f51bbc2 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/Record.Version.Field.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/Record.Version.Field.js
@@ -1,120 +1,117 @@
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.DataModel.Record.Version) == 'undefined') { throw ""; }} catch (e) { 26try { if (typeof(Clipperz.PM.DataModel.Record.Version) == 'undefined') { throw ""; }} catch (e) {
30 throw "Clipperz.PM.DataModel.Record.Version.Field depends on Clipperz.PM.DataModel.Record.Version!"; 27 throw "Clipperz.PM.DataModel.Record.Version.Field depends on Clipperz.PM.DataModel.Record.Version!";
31} 28}
32 29
33Clipperz.PM.DataModel.Record.Version.Field = function(args) { 30Clipperz.PM.DataModel.Record.Version.Field = function(args) {
34 Clipperz.PM.DataModel.Record.Version.Field.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.DataModel.Record.Version.Field.superclass.constructor.apply(this, arguments);
35 32
36 this._recordVersion = args.recordVersion|| Clipperz.Base.exception.raise('MandatoryParameter'); 33 this._recordVersion = args.recordVersion|| Clipperz.Base.exception.raise('MandatoryParameter');
37 this._reference = args.reference || Clipperz.PM.Crypto.randomKey(); 34 this._reference = args.reference || Clipperz.PM.Crypto.randomKey();
38 35
39 return this; 36 return this;
40} 37}
41 38
42 39
43Clipperz.Base.extend(Clipperz.PM.DataModel.Record.Version.Field, Object, { 40Clipperz.Base.extend(Clipperz.PM.DataModel.Record.Version.Field, Object, {
44 41
45 'toString': function() { 42 'toString': function() {
46 return "Record.Version.Field (" + this.reference() + ")"; 43 return "Record.Version.Field (" + this.reference() + ")";
47 }, 44 },
48 45
49 //------------------------------------------------------------------------- 46 //-------------------------------------------------------------------------
50 47
51 'recordVersion': function () { 48 'recordVersion': function () {
52 return this._recordVersion; 49 return this._recordVersion;
53 }, 50 },
54 51
55 //------------------------------------------------------------------------- 52 //-------------------------------------------------------------------------
56 53
57 'reference': function () { 54 'reference': function () {
58 return this._reference; 55 return this._reference;
59 }, 56 },
60 57
61 //------------------------------------------------------------------------- 58 //-------------------------------------------------------------------------
62 59
63 'getItem': function (aKey) { 60 'getItem': function (aKey) {
64 return Clipperz.Async.callbacks("Clipperz.PM.DataModel.Record.Version.Field.getItem", [ 61 return Clipperz.Async.callbacks("Clipperz.PM.DataModel.Record.Version.Field.getItem", [
65 MochiKit.Base.method(this, 'recordVersion'), 62 MochiKit.Base.method(this, 'recordVersion'),
66 MochiKit.Base.methodcaller('getValue', 'fields' + '.' + this.reference() + '.' + aKey) 63 MochiKit.Base.methodcaller('getValue', 'fields' + '.' + this.reference() + '.' + aKey)
67 ], {trace:false}); 64 ], {trace:false});
68 }, 65 },
69 66
70 'setItem': function (aKey, aValue) { 67 'setItem': function (aKey, aValue) {
71 return Clipperz.Async.callbacks("Clipperz.PM.DataModel.Record.Version.Field.getItem", [ 68 return Clipperz.Async.callbacks("Clipperz.PM.DataModel.Record.Version.Field.getItem", [
72 MochiKit.Base.method(this, 'recordVersion'), 69 MochiKit.Base.method(this, 'recordVersion'),
73 MochiKit.Base.methodcaller('setValue', 'fields' + '.' + this.reference() + '.' + aKey, aValue) 70 MochiKit.Base.methodcaller('setValue', 'fields' + '.' + this.reference() + '.' + aKey, aValue)
74 ], {trace:false}); 71 ], {trace:false});
75 }, 72 },
76 73
77 //------------------------------------------------------------------------- 74 //-------------------------------------------------------------------------
78 75
79 'label': function () { 76 'label': function () {
80 return this.getItem('label'); 77 return this.getItem('label');
81 }, 78 },
82 79
83 'setLabel': function (aValue) { 80 'setLabel': function (aValue) {
84 return this.setItem('label', aValue); 81 return this.setItem('label', aValue);
85 }, 82 },
86 83
87 //------------------------------------------------------------------------- 84 //-------------------------------------------------------------------------
88 85
89 'value': function () { 86 'value': function () {
90 return this.getItem('value'); 87 return this.getItem('value');
91 }, 88 },
92 89
93 'setValue': function (aValue) { 90 'setValue': function (aValue) {
94 return this.setItem('value', aValue); 91 return this.setItem('value', aValue);
95 }, 92 },
96 93
97 //------------------------------------------------------------------------- 94 //-------------------------------------------------------------------------
98 95
99 'actionType': function () { 96 'actionType': function () {
100 return Clipperz.Async.callbacks("Clipperz.PM.DataModel.Record.Version.Field.actionType", [ 97 return Clipperz.Async.callbacks("Clipperz.PM.DataModel.Record.Version.Field.actionType", [
101 Clipperz.Async.collectResults("Clipperz.PM.DataModel.Record.Version.Field.actionType [collect results]", { 98 Clipperz.Async.collectResults("Clipperz.PM.DataModel.Record.Version.Field.actionType [collect results]", {
102 'isHidden':MochiKit.Base.method(this, 'isHidden'), 99 'isHidden':MochiKit.Base.method(this, 'isHidden'),
103 'value':MochiKit.Base.method(this, 'value') 100 'value':MochiKit.Base.method(this, 'value')
104 }, {trace:false}), 101 }, {trace:false}),
105 function (someValues) { 102 function (someValues) {
106 var result; //'NONE', 'URL', 'EMAIL', 'PASSWORD' 103 var result; //'NONE', 'URL', 'EMAIL', 'PASSWORD'
107 104
108 result = 'NONE'; 105 result = 'NONE';
109 106
110 if (someValues['isHidden']) { 107 if (someValues['isHidden']) {
111 result = 'PASSWORD'; 108 result = 'PASSWORD';
112 } else if (Clipperz.Base.isUrl(someValues['value'])) { 109 } else if (Clipperz.Base.isUrl(someValues['value'])) {
113 result = 'URL' 110 result = 'URL'
114 } else if (Clipperz.Base.isEmail(someValues['value'])) { 111 } else if (Clipperz.Base.isEmail(someValues['value'])) {
115 result = 'EMAIL' 112 result = 'EMAIL'
116 }; 113 };
117 114
118 return result; 115 return result;
119 } 116 }
120 ], {trace:false}); 117 ], {trace:false});
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/Record.Version.js b/frontend/gamma/js/Clipperz/PM/DataModel/Record.Version.js
index 6e50f8e..dd35fc9 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/Record.Version.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/Record.Version.js
@@ -1,120 +1,117 @@
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.DataModel.Record) == 'undefined') { throw ""; }} catch (e) { 26try { if (typeof(Clipperz.PM.DataModel.Record) == 'undefined') { throw ""; }} catch (e) {
30 throw "Clipperz.PM.DataModel.Record.Version depends on Clipperz.PM.DataModel.Record!"; 27 throw "Clipperz.PM.DataModel.Record.Version depends on Clipperz.PM.DataModel.Record!";
31} 28}
32 29
33Clipperz.PM.DataModel.Record.Version = function(args) { 30Clipperz.PM.DataModel.Record.Version = function(args) {
34//console.log(">>> Record.new"); 31//console.log(">>> Record.new");
35 Clipperz.PM.DataModel.Record.Version.superclass.constructor.apply(this, arguments); 32 Clipperz.PM.DataModel.Record.Version.superclass.constructor.apply(this, arguments);
36 33
37 this._getVersionFunction = args.getVersion|| Clipperz.Base.exception.raise('MandatoryParameter'); 34 this._getVersionFunction = args.getVersion|| Clipperz.Base.exception.raise('MandatoryParameter');
38 this._fields = null; 35 this._fields = null;
39 36
40 return this; 37 return this;
41} 38}
42 39
43 40
44Clipperz.Base.extend(Clipperz.PM.DataModel.Record.Version, Clipperz.PM.DataModel.EncryptedRemoteObject, { 41Clipperz.Base.extend(Clipperz.PM.DataModel.Record.Version, Clipperz.PM.DataModel.EncryptedRemoteObject, {
45 42
46 'toString': function() { 43 'toString': function() {
47 return "Record.Version (" + this.reference() + ")"; 44 return "Record.Version (" + this.reference() + ")";
48 }, 45 },
49 46
50 //------------------------------------------------------------------------- 47 //-------------------------------------------------------------------------
51 48
52 'reference': function () { 49 'reference': function () {
53 return this._reference; 50 return this._reference;
54 }, 51 },
55 52
56 //------------------------------------------------------------------------- 53 //-------------------------------------------------------------------------
57/* 54/*
58 'hasPendingChanges': function () { 55 'hasPendingChanges': function () {
59 var deferredResult; 56 var deferredResult;
60 57
61 deferredResult = new Clipperz.Async.Deferred("Clipperz.PM.DataModel.Record.Version.hasPendingChanges", {trace:false}); 58 deferredResult = new Clipperz.Async.Deferred("Clipperz.PM.DataModel.Record.Version.hasPendingChanges", {trace:false});
62 deferredResult.addCallback(MochiKit.Base.bind(Clipperz.PM.DataModel.Record.Version.superclass.hasPendingChanges, this)); 59 deferredResult.addCallback(MochiKit.Base.bind(Clipperz.PM.DataModel.Record.Version.superclass.hasPendingChanges, this));
63 deferredResult.callback(); 60 deferredResult.callback();
64 61
65 return deferredResult; 62 return deferredResult;
66 }, 63 },
67*/ 64*/
68 //------------------------------------------------------------------------- 65 //-------------------------------------------------------------------------
69 66
70 67
71 'hasPendingChangesWhenBrandNew': function () { 68 'hasPendingChangesWhenBrandNew': function () {
72 var deferredResult; 69 var deferredResult;
73 70
74 deferredResult = new Clipperz.Async.Deferred("Clipperz.PM.DataModel.Record.Version.hasPendingChangesWhenBrandNew", {trace:false}); 71 deferredResult = new Clipperz.Async.Deferred("Clipperz.PM.DataModel.Record.Version.hasPendingChangesWhenBrandNew", {trace:false});
75 deferredResult.addMethod(this, 'fields'); 72 deferredResult.addMethod(this, 'fields');
76 deferredResult.addCallback(MochiKit.Base.values); 73 deferredResult.addCallback(MochiKit.Base.values);
77 deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.methodcaller('isEmpty')) 74 deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.methodcaller('isEmpty'))
78 deferredResult.addCallback(Clipperz.Async.collectAll); 75 deferredResult.addCallback(Clipperz.Async.collectAll);
79 deferredResult.addCallback(function(someValues) { 76 deferredResult.addCallback(function(someValues) {
80 return MochiKit.Iter.every(someValues, MochiKit.Base.operator.identity); 77 return MochiKit.Iter.every(someValues, MochiKit.Base.operator.identity);
81 }); 78 });
82 deferredResult.addCallback(MochiKit.Base.operator.lognot) 79 deferredResult.addCallback(MochiKit.Base.operator.lognot)
83 deferredResult.callback(); 80 deferredResult.callback();
84 81
85 return deferredResult; 82 return deferredResult;
86 }, 83 },
87 84
88 //========================================================================= 85 //=========================================================================
89 86
90 'commitTransientState': function () { 87 'commitTransientState': function () {
91 var deferredResult; 88 var deferredResult;
92 89
93 deferredResult = new Clipperz.Async.Deferred("Clipperz.PM.DataModel.Record.Version.commitTransientState", {trace:false}); 90 deferredResult = new Clipperz.Async.Deferred("Clipperz.PM.DataModel.Record.Version.commitTransientState", {trace:false});
94 deferredResult.addCallback(MochiKit.Base.bind(Clipperz.PM.DataModel.Record.Version.superclass.commitTransientState, this)); 91 deferredResult.addCallback(MochiKit.Base.bind(Clipperz.PM.DataModel.Record.Version.superclass.commitTransientState, this));
95 deferredResult.callback(); 92 deferredResult.callback();
96 93
97 return deferredResult; 94 return deferredResult;
98 }, 95 },
99 96
100 //========================================================================= 97 //=========================================================================
101 98
102 'unpackData': function (someData) { //++ 99 'unpackData': function (someData) { //++
103 varresult; 100 varresult;
104 101
105//console.log("Record.Version - UNPACK DATA", this, someData); 102//console.log("Record.Version - UNPACK DATA", this, someData);
106 result = someData; 103 result = someData;
107 if ((someData['fields'] != null) && (someData['fields'] instanceof Array)) { 104 if ((someData['fields'] != null) && (someData['fields'] instanceof Array)) {
108 varfields; 105 varfields;
109 var i,c; 106 var i,c;
110 107
111 fields = someData['fields']; 108 fields = someData['fields'];
112 delete someData['fields']; 109 delete someData['fields'];
113 110
114 someData['fields'] = {}; 111 someData['fields'] = {};
115 c = fields.length; 112 c = fields.length;
116 for (i=0; i<c; i++) { 113 for (i=0; i<c; i++) {
117 someData['fields'][i] = fields[i]; 114 someData['fields'][i] = fields[i];
118 } 115 }
119 } 116 }
120 117
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/Record.js b/frontend/gamma/js/Clipperz/PM/DataModel/Record.js
index 85dd06b..b816f80 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/Record.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/Record.js
@@ -1,120 +1,117 @@
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
34Clipperz.PM.DataModel.Record = function(args) { 31Clipperz.PM.DataModel.Record = function(args) {
35//console.log(">>> new Clipperz.PM.DataModel.Record", args); 32//console.log(">>> new Clipperz.PM.DataModel.Record", args);
36 Clipperz.PM.DataModel.Record.superclass.constructor.apply(this, arguments); 33 Clipperz.PM.DataModel.Record.superclass.constructor.apply(this, arguments);
37 34
38 this._updateDate = (args.updateDate ? Clipperz.PM.Date.parse(args.updateDate) : Clipperz.Base.exception.raise('MandatoryParameter')); 35 this._updateDate = (args.updateDate ? Clipperz.PM.Date.parse(args.updateDate) : Clipperz.Base.exception.raise('MandatoryParameter'));
39 36
40 this._retrieveIndexDataFunction = args.retrieveIndexDataFunction|| Clipperz.Base.exception.raise('MandatoryParameter'); 37 this._retrieveIndexDataFunction = args.retrieveIndexDataFunction|| Clipperz.Base.exception.raise('MandatoryParameter');
41 this._updateIndexDataFunction = args.updateIndexDataFunction || Clipperz.Base.exception.raise('MandatoryParameter'); 38 this._updateIndexDataFunction = args.updateIndexDataFunction || Clipperz.Base.exception.raise('MandatoryParameter');
42 39
43 this._retrieveDirectLoginIndexDataFunction = args.retrieveDirectLoginIndexDataFunction|| null; 40 this._retrieveDirectLoginIndexDataFunction = args.retrieveDirectLoginIndexDataFunction|| null;
44 this._setDirectLoginIndexDataFunction = args.setDirectLoginIndexDataFunction || null; 41 this._setDirectLoginIndexDataFunction = args.setDirectLoginIndexDataFunction || null;
45 this._removeDirectLoginIndexDataFunction = args.removeDirectLoginIndexDataFunction|| null; 42 this._removeDirectLoginIndexDataFunction = args.removeDirectLoginIndexDataFunction|| null;
46 43
47 this._createNewDirectLoginFunction = args.createNewDirectLoginFunction || null; 44 this._createNewDirectLoginFunction = args.createNewDirectLoginFunction || null;
48 45
49 this._directLogins = {}; 46 this._directLogins = {};
50 47
51 this._versions = {}; 48 this._versions = {};
52 49
53 this._currentRecordVersion = null; 50 this._currentRecordVersion = null;
54 if (this.isBrandNew()) { 51 if (this.isBrandNew()) {
55 var newVersion; 52 var newVersion;
56 53
57 this.setNotes(''); 54 this.setNotes('');
58 newVersion = new Clipperz.PM.DataModel.Record.Version({ 55 newVersion = new Clipperz.PM.DataModel.Record.Version({
59 'retrieveKeyFunction':MochiKit.Base.method(this, 'getVersionKey'), 56 'retrieveKeyFunction':MochiKit.Base.method(this, 'getVersionKey'),
60 'getVersion': MochiKit.Base.method(this, 'getVersion') 57 'getVersion': MochiKit.Base.method(this, 'getVersion')
61 58
62 }); 59 });
63 this._versions[newVersion.reference()] = newVersion; 60 this._versions[newVersion.reference()] = newVersion;
64 this._currentVersionReference = newVersion.reference(); 61 this._currentVersionReference = newVersion.reference();
65 // this.setLabel(''); 62 // this.setLabel('');
66 } 63 }
67 64
68//console.log("<<< new Clipperz.PM.DataModel.Record", args); 65//console.log("<<< new Clipperz.PM.DataModel.Record", args);
69 66
70 return this; 67 return this;
71} 68}
72 69
73 70
74Clipperz.Base.extend(Clipperz.PM.DataModel.Record, Clipperz.PM.DataModel.EncryptedRemoteObject, { 71Clipperz.Base.extend(Clipperz.PM.DataModel.Record, Clipperz.PM.DataModel.EncryptedRemoteObject, {
75 72
76 'toString': function() { 73 'toString': function() {
77 return "Record (" + this.reference() + ")"; 74 return "Record (" + this.reference() + ")";
78 }, 75 },
79 76
80 //------------------------------------------------------------------------- 77 //-------------------------------------------------------------------------
81 78
82 'reference': function () { 79 'reference': function () {
83 return this._reference; 80 return this._reference;
84 }, 81 },
85 82
86 //========================================================================= 83 //=========================================================================
87 84
88 'getIndexData': function () { 85 'getIndexData': function () {
89 return this._retrieveIndexDataFunction(this.reference()); 86 return this._retrieveIndexDataFunction(this.reference());
90 }, 87 },
91 88
92 //......................................................................... 89 //.........................................................................
93 90
94 'getIndexDataForKey': function (aKey) { 91 'getIndexDataForKey': function (aKey) {
95 return Clipperz.Async.callbacks("Record.getIndexDataForKey", [ 92 return Clipperz.Async.callbacks("Record.getIndexDataForKey", [
96 MochiKit.Base.method(this, 'getIndexData'), 93 MochiKit.Base.method(this, 'getIndexData'),
97 MochiKit.Base.itemgetter(aKey) 94 MochiKit.Base.itemgetter(aKey)
98 ], {trace:false}); 95 ], {trace:false});
99 }, 96 },
100 97
101 //------------------------------------------------------------------------- 98 //-------------------------------------------------------------------------
102 99
103 'setIndexDataForKey': function (aKey, aValue) { 100 'setIndexDataForKey': function (aKey, aValue) {
104 // return this._updateIndexDataFunction(this.reference(), aKey, aValue); 101 // return this._updateIndexDataFunction(this.reference(), aKey, aValue);
105 102
106 var deferredResult; 103 var deferredResult;
107 104
108 deferredResult = new Clipperz.Async.Deferred("Record.setIndexDataForKey", {trace:false}); 105 deferredResult = new Clipperz.Async.Deferred("Record.setIndexDataForKey", {trace:false});
109 deferredResult.addMethod(this, 'getIndexDataForKey', aKey); 106 deferredResult.addMethod(this, 'getIndexDataForKey', aKey);
110 deferredResult.addCallback(MochiKit.Base.bind(function (aCurrentValue) { 107 deferredResult.addCallback(MochiKit.Base.bind(function (aCurrentValue) {
111 var result; 108 var result;
112 var originalValue; 109 var originalValue;
113 110
114 originalValue = this.transientState().getValue('originalValues.indexData.' + aKey); 111 originalValue = this.transientState().getValue('originalValues.indexData.' + aKey);
115 if (originalValue == null) { 112 if (originalValue == null) {
116 originalValue = this.transientState().setValue('originalValues.indexData.' + aKey, aCurrentValue); 113 originalValue = this.transientState().setValue('originalValues.indexData.' + aKey, aCurrentValue);
117 } 114 }
118 115
119 if (aCurrentValue != aValue) { 116 if (aCurrentValue != aValue) {
120 if (originalValue != aValue) { 117 if (originalValue != aValue) {
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.Legacy.js b/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.Legacy.js
index e675525..d6202ff 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.Legacy.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.Legacy.js
@@ -1,120 +1,117 @@
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.DataModel.User) == 'undefined') { throw ""; }} catch (e) { 26try { if (typeof(Clipperz.PM.DataModel.User) == 'undefined') { throw ""; }} catch (e) {
30 throw "Clipperz.PM.DataModel.User.Header.Legacy depends on Clipperz.PM.DataModel.User!"; 27 throw "Clipperz.PM.DataModel.User.Header.Legacy depends on Clipperz.PM.DataModel.User!";
31} 28}
32 29
33if (typeof(Clipperz.PM.DataModel.User.Header) == 'undefined') { Clipperz.PM.DataModel.User.Header = {}; } 30if (typeof(Clipperz.PM.DataModel.User.Header) == 'undefined') { Clipperz.PM.DataModel.User.Header = {}; }
34 31
35Clipperz.PM.DataModel.User.Header.Legacy = function(args) { 32Clipperz.PM.DataModel.User.Header.Legacy = function(args) {
36 //args = args || {}; 33 //args = args || {};
37 Clipperz.PM.DataModel.User.Header.Legacy.superclass.constructor.apply(this, arguments); 34 Clipperz.PM.DataModel.User.Header.Legacy.superclass.constructor.apply(this, arguments);
38 35
39 this._retrieveRecordDetailFunction = args.retrieveRecordDetailFunction|| Clipperz.Base.exception.raise('MandatoryParameter'); 36 this._retrieveRecordDetailFunction = args.retrieveRecordDetailFunction|| Clipperz.Base.exception.raise('MandatoryParameter');
40 this._records = null; 37 this._records = null;
41 //this._directLogins = null; 38 //this._directLogins = null;
42 39
43 return this; 40 return this;
44} 41}
45 42
46 43
47Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.Legacy, Clipperz.PM.DataModel.EncryptedRemoteObject, { 44Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.Legacy, Clipperz.PM.DataModel.EncryptedRemoteObject, {
48 45
49 'toString': function() { 46 'toString': function() {
50 return "Clipperz.PM.DataModel.User.Header.Legacy"; 47 return "Clipperz.PM.DataModel.User.Header.Legacy";
51 }, 48 },
52 49
53 //------------------------------------------------------------------------- 50 //-------------------------------------------------------------------------
54 51
55 'retrieveRecordDetailFunction': function () { 52 'retrieveRecordDetailFunction': function () {
56 return this._retrieveRecordDetailFunction; 53 return this._retrieveRecordDetailFunction;
57 }, 54 },
58 55
59 //------------------------------------------------------------------------- 56 //-------------------------------------------------------------------------
60 57
61 'getRecordKey': function (aRecordReference) { 58 'getRecordKey': function (aRecordReference) {
62 var deferredResult; 59 var deferredResult;
63 60
64 deferredResult = new Clipperz.Async.Deferred("User.Header.Legacy.getRecordKey", {trace:false}); 61 deferredResult = new Clipperz.Async.Deferred("User.Header.Legacy.getRecordKey", {trace:false});
65 deferredResult.addMethod(this, 'getRecordIndexData'); 62 deferredResult.addMethod(this, 'getRecordIndexData');
66 deferredResult.addCallback(MochiKit.Base.itemgetter('key')) 63 deferredResult.addCallback(MochiKit.Base.itemgetter('key'))
67 deferredResult.callback(); 64 deferredResult.callback();
68 65
69 return deferredResult; 66 return deferredResult;
70 }, 67 },
71 68
72 //========================================================================= 69 //=========================================================================
73 70
74 'getRecordIndexData': function (aRecordReference) { 71 'getRecordIndexData': function (aRecordReference) {
75 return this.getValue('records.' + aRecordReference); 72 return this.getValue('records.' + aRecordReference);
76 }, 73 },
77 74
78 'updateRecordIndexData': function (aRecordReference, aKey, aValue) { 75 'updateRecordIndexData': function (aRecordReference, aKey, aValue) {
79 return this.setValue('records.' + aRecordReference + "." + aKey, aValue); 76 return this.setValue('records.' + aRecordReference + "." + aKey, aValue);
80 }, 77 },
81 78
82 //------------------------------------------------------------------------- 79 //-------------------------------------------------------------------------
83 80
84 'getDirectLoginIndexData': function (aDirectLoginReference) { 81 'getDirectLoginIndexData': function (aDirectLoginReference) {
85 return this.getValue('directLogins.' + aDirectLoginReference); 82 return this.getValue('directLogins.' + aDirectLoginReference);
86 }, 83 },
87 84
88 'setDirectLoginIndexData': function (aDirectLoginReference, aKey, aValue) { 85 'setDirectLoginIndexData': function (aDirectLoginReference, aKey, aValue) {
89 return this.setValue('directLogins.' + aDirectLoginReference + '.' + aKey, aValue); 86 return this.setValue('directLogins.' + aDirectLoginReference + '.' + aKey, aValue);
90 }, 87 },
91 88
92 'removeDirectLoginIndexData': function (aDirectLoginReference) { 89 'removeDirectLoginIndexData': function (aDirectLoginReference) {
93 return this.removeValue('directLogins.' + aDirectLoginReference); 90 return this.removeValue('directLogins.' + aDirectLoginReference);
94 }, 91 },
95 92
96 //========================================================================= 93 //=========================================================================
97 94
98 'records': function () { 95 'records': function () {
99 vardeferredResult; 96 vardeferredResult;
100 var deferredLock; 97 var deferredLock;
101 98
102 deferredLock = this.getDeferredLockForKey('records'); 99 deferredLock = this.getDeferredLockForKey('records');
103 100
104 deferredResult = new Clipperz.Async.Deferred("User.Header.Legacy.records", {trace:false}); 101 deferredResult = new Clipperz.Async.Deferred("User.Header.Legacy.records", {trace:false});
105 deferredResult.acquireLock(deferredLock); 102 deferredResult.acquireLock(deferredLock);
106 deferredResult.addCallback(MochiKit.Base.bind(function () { 103 deferredResult.addCallback(MochiKit.Base.bind(function () {
107 var innerDeferredResult; 104 var innerDeferredResult;
108 105
109 if (this._records == null) { 106 if (this._records == null) {
110 innerDeferredResult = new Clipperz.Async.Deferred("User.Header.Legacy.records <inner deferred>", {trace:false}); 107 innerDeferredResult = new Clipperz.Async.Deferred("User.Header.Legacy.records <inner deferred>", {trace:false});
111 innerDeferredResult.collectResults({ 108 innerDeferredResult.collectResults({
112 'header': [ 109 'header': [
113 // MochiKit.Base.method(this, 'getObjectDataStore'), 110 // MochiKit.Base.method(this, 'getObjectDataStore'),
114 // MochiKit.Base.methodcaller('values') 111 // MochiKit.Base.methodcaller('values')
115 MochiKit.Base.method(this, 'values') 112 MochiKit.Base.method(this, 'values')
116 ], 113 ],
117 'recordsStats': [ 114 'recordsStats': [
118 MochiKit.Base.method(this, 'getRemoteData'), 115 MochiKit.Base.method(this, 'getRemoteData'),
119 MochiKit.Base.itemgetter('recordsStats') 116 MochiKit.Base.itemgetter('recordsStats')
120 ] 117 ]
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js b/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js
index 0ee8599..3528db6 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js
@@ -1,120 +1,117 @@
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.DataModel.User) == 'undefined') { throw ""; }} catch (e) { 26try { if (typeof(Clipperz.PM.DataModel.User) == 'undefined') { throw ""; }} catch (e) {
30 throw "Clipperz.PM.DataModel.User.Header.OneTimePasswords depends on Clipperz.PM.DataModel.User!"; 27 throw "Clipperz.PM.DataModel.User.Header.OneTimePasswords depends on Clipperz.PM.DataModel.User!";
31} 28}
32if (typeof(Clipperz.PM.DataModel.User.Header) == 'undefined') { Clipperz.PM.DataModel.User.Header = {}; } 29if (typeof(Clipperz.PM.DataModel.User.Header) == 'undefined') { Clipperz.PM.DataModel.User.Header = {}; }
33 30
34//----------------------------------------------------------------------------- 31//-----------------------------------------------------------------------------
35 32
36Clipperz.PM.DataModel.User.Header.OneTimePasswords = function(args) { 33Clipperz.PM.DataModel.User.Header.OneTimePasswords = function(args) {
37 Clipperz.PM.DataModel.User.Header.OneTimePasswords.superclass.constructor.apply(this, arguments); 34 Clipperz.PM.DataModel.User.Header.OneTimePasswords.superclass.constructor.apply(this, arguments);
38 35
39 this._oneTimePasswords = null; 36 this._oneTimePasswords = null;
40 37
41 return this; 38 return this;
42} 39}
43 40
44//----------------------------------------------------------------------------- 41//-----------------------------------------------------------------------------
45 42
46Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.OneTimePasswords, Clipperz.PM.DataModel.EncryptedRemoteObject, { 43Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.OneTimePasswords, Clipperz.PM.DataModel.EncryptedRemoteObject, {
47 44
48 'toString': function() { 45 'toString': function() {
49 return "Clipperz.PM.DataModel.User.Header.OneTimePasswords"; 46 return "Clipperz.PM.DataModel.User.Header.OneTimePasswords";
50 }, 47 },
51 48
52 //------------------------------------------------------------------------- 49 //-------------------------------------------------------------------------
53/* 50/*
54 'packData': function (someData) { //++ 51 'packData': function (someData) { //++
55 var result; 52 var result;
56 53
57console.log(">>> OneTimePasswords.packData", someData); 54console.log(">>> OneTimePasswords.packData", someData);
58 result = Clipperz.PM.DataModel.User.Header.OneTimePasswords.superclass.packData.apply(this, arguments); 55 result = Clipperz.PM.DataModel.User.Header.OneTimePasswords.superclass.packData.apply(this, arguments);
59console.log("<<< OneTimePasswords.packData"); 56console.log("<<< OneTimePasswords.packData");
60 57
61 return result; 58 return result;
62 }, 59 },
63*/ 60*/
64 //------------------------------------------------------------------------- 61 //-------------------------------------------------------------------------
65/* 62/*
66 'packRemoteData': function (someData) { 63 'packRemoteData': function (someData) {
67 var result; 64 var result;
68 65
69console.log(">>> OneTimePasswords.packRemoteData", someData); 66console.log(">>> OneTimePasswords.packRemoteData", someData);
70 result = Clipperz.PM.DataModel.User.Header.OneTimePasswords.superclass.packRemoteData.apply(this, arguments); 67 result = Clipperz.PM.DataModel.User.Header.OneTimePasswords.superclass.packRemoteData.apply(this, arguments);
71console.log("<<< OneTimePasswords.packRemoteData"); 68console.log("<<< OneTimePasswords.packRemoteData");
72 69
73 return result; 70 return result;
74 }, 71 },
75*/ 72*/
76 //------------------------------------------------------------------------- 73 //-------------------------------------------------------------------------
77/* 74/*
78 'prepareRemoteDataWithKey': function (aKey) { 75 'prepareRemoteDataWithKey': function (aKey) {
79 var result; 76 var result;
80 77
81console.log(">>> OneTimePasswords.prepareRemoteDataWithKey"); 78console.log(">>> OneTimePasswords.prepareRemoteDataWithKey");
82 result = Clipperz.PM.DataModel.User.Header.OneTimePasswords.superclass.prepareRemoteDataWithKey.apply(this, arguments); 79 result = Clipperz.PM.DataModel.User.Header.OneTimePasswords.superclass.prepareRemoteDataWithKey.apply(this, arguments);
83console.log("<<< OneTimePasswords.prepareRemoteDataWithKey"); 80console.log("<<< OneTimePasswords.prepareRemoteDataWithKey");
84 81
85 return result; 82 return result;
86 }, 83 },
87*/ 84*/
88 //========================================================================= 85 //=========================================================================
89 86
90 'oneTimePasswords': function () { 87 'oneTimePasswords': function () {
91 vardeferredResult; 88 vardeferredResult;
92 89
93 deferredResult = new Clipperz.Async.Deferred("User.Header.OneTimePasswords.oneTimePasswords", {trace:false}); 90 deferredResult = new Clipperz.Async.Deferred("User.Header.OneTimePasswords.oneTimePasswords", {trace:false});
94 if (this._oneTimePasswords == null) { 91 if (this._oneTimePasswords == null) {
95 deferredResult.addMethod(this, 'values') 92 deferredResult.addMethod(this, 'values')
96 deferredResult.addCallback(MochiKit.Base.bind(function (someData) { 93 deferredResult.addCallback(MochiKit.Base.bind(function (someData) {
97 varotpKey; 94 varotpKey;
98 95
99 this._oneTimePasswords = {}; 96 this._oneTimePasswords = {};
100 97
101 for (otpKey in someData) { 98 for (otpKey in someData) {
102 var otp; 99 var otp;
103 var otpParameters; 100 var otpParameters;
104 101
105 otpParameters = Clipperz.Base.deepClone(someData[otpKey]); 102 otpParameters = Clipperz.Base.deepClone(someData[otpKey]);
106 otpParameters['reference'] = otpKey; 103 otpParameters['reference'] = otpKey;
107 104
108 otp = new Clipperz.PM.DataModel.OneTimePassword(otpParameters); 105 otp = new Clipperz.PM.DataModel.OneTimePassword(otpParameters);
109 this._oneTimePasswords[otpKey] = otp; 106 this._oneTimePasswords[otpKey] = otp;
110 } 107 }
111 108
112 return this._oneTimePasswords; 109 return this._oneTimePasswords;
113 110
114 }, this)); 111 }, this));
115 deferredResult.callback(); 112 deferredResult.callback();
116 } else { 113 } else {
117 deferredResult = MochiKit.Async.succeed(this._oneTimePasswords); 114 deferredResult = MochiKit.Async.succeed(this._oneTimePasswords);
118 } 115 }
119 116
120 return deferredResult; 117 return deferredResult;
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.Preferences.js b/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.Preferences.js
index 91b981e..b164889 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.Preferences.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.Preferences.js
@@ -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
29try { if (typeof(Clipperz.PM.DataModel.User) == 'undefined') { throw ""; }} catch (e) { 26try { if (typeof(Clipperz.PM.DataModel.User) == 'undefined') { throw ""; }} catch (e) {
30 throw "Clipperz.PM.DataModel.User.Header.Preferences depends on Clipperz.PM.DataModel.User!"; 27 throw "Clipperz.PM.DataModel.User.Header.Preferences depends on Clipperz.PM.DataModel.User!";
31} 28}
32 29
33if (typeof(Clipperz.PM.DataModel.User.Header) == 'undefined') { Clipperz.PM.DataModel.User.Header = {}; } 30if (typeof(Clipperz.PM.DataModel.User.Header) == 'undefined') { Clipperz.PM.DataModel.User.Header = {}; }
34 31
35Clipperz.PM.DataModel.User.Header.Preferences = function(args) { 32Clipperz.PM.DataModel.User.Header.Preferences = function(args) {
36 Clipperz.PM.DataModel.User.Header.Preferences.superclass.constructor.apply(this, arguments); 33 Clipperz.PM.DataModel.User.Header.Preferences.superclass.constructor.apply(this, arguments);
37 34
38 return this; 35 return this;
39} 36}
40 37
41 38
42Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.Preferences, Clipperz.PM.DataModel.EncryptedRemoteObject, { 39Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.Preferences, Clipperz.PM.DataModel.EncryptedRemoteObject, {
43 40
44 'toString': function() { 41 'toString': function() {
45 return "Clipperz.PM.DataModel.User.Header.Preferences"; 42 return "Clipperz.PM.DataModel.User.Header.Preferences";
46 }, 43 },
47 44
48 //------------------------------------------------------------------------- 45 //-------------------------------------------------------------------------
49 //========================================================================= 46 //=========================================================================
50 __syntaxFix__: "syntax fix" 47 __syntaxFix__: "syntax fix"
51}); 48});
52 49
53 50
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.RecordIndex.js b/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.RecordIndex.js
index 6ba58a8..f77ea80 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.RecordIndex.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/User.Header.RecordIndex.js
@@ -1,120 +1,117 @@
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.DataModel.User) == 'undefined') { throw ""; }} catch (e) { 26try { if (typeof(Clipperz.PM.DataModel.User) == 'undefined') { throw ""; }} catch (e) {
30 throw "Clipperz.PM.DataModel.User.Header.RecordIndex depends on Clipperz.PM.DataModel.User!"; 27 throw "Clipperz.PM.DataModel.User.Header.RecordIndex depends on Clipperz.PM.DataModel.User!";
31} 28}
32 29
33if (typeof(Clipperz.PM.DataModel.User.Header) == 'undefined') { Clipperz.PM.DataModel.User.Header = {}; } 30if (typeof(Clipperz.PM.DataModel.User.Header) == 'undefined') { Clipperz.PM.DataModel.User.Header = {}; }
34 31
35Clipperz.PM.DataModel.User.Header.RecordIndex = function(args) { 32Clipperz.PM.DataModel.User.Header.RecordIndex = function(args) {
36 Clipperz.PM.DataModel.User.Header.RecordIndex.superclass.constructor.apply(this, arguments); 33 Clipperz.PM.DataModel.User.Header.RecordIndex.superclass.constructor.apply(this, arguments);
37 34
38//console.log("NEW Clipperz.PM.DataModel.User.Header.RecordIndex", args); 35//console.log("NEW Clipperz.PM.DataModel.User.Header.RecordIndex", args);
39 this._recordsData = new Clipperz.PM.DataModel.EncryptedRemoteObject({ 36 this._recordsData = new Clipperz.PM.DataModel.EncryptedRemoteObject({
40 'name':'recordsData', 37 'name':'recordsData',
41 'retrieveKeyFunction': args.retrieveKeyFunction, 38 'retrieveKeyFunction': args.retrieveKeyFunction,
42 'remoteData': { 39 'remoteData': {
43 'data': args.recordsData['data'], 40 'data': args.recordsData['data'],
44 'version': args.encryptedDataVersion, 41 'version': args.encryptedDataVersion,
45 'recordsStats': args.recordsStats 42 'recordsStats': args.recordsStats
46 }//, 43 }//,
47 // 'encryptedDataKeypath': 'data', 44 // 'encryptedDataKeypath': 'data',
48 // 'encryptedVersionKeypath': 'version' 45 // 'encryptedVersionKeypath': 'version'
49 }); 46 });
50 47
51 this._directLoginsData = new Clipperz.PM.DataModel.EncryptedRemoteObject({ 48 this._directLoginsData = new Clipperz.PM.DataModel.EncryptedRemoteObject({
52 'name':'directLoginsData', 49 'name':'directLoginsData',
53 'retrieveKeyFunction': args.retrieveKeyFunction, 50 'retrieveKeyFunction': args.retrieveKeyFunction,
54 'remoteData': { 51 'remoteData': {
55 'data': args.directLoginsData['data'], 52 'data': args.directLoginsData['data'],
56 'version': args.encryptedDataVersion 53 'version': args.encryptedDataVersion
57 }//, 54 }//,
58 // 'encryptedDataKeypath': 'data', 55 // 'encryptedDataKeypath': 'data',
59 // 'encryptedVersionKeypath': 'version' 56 // 'encryptedVersionKeypath': 'version'
60 }); 57 });
61 58
62 this._lock = new MochiKit.Async.DeferredLock(); 59 this._lock = new MochiKit.Async.DeferredLock();
63 this._transientState = null; 60 this._transientState = null;
64 61
65 this._retrieveRecordDetailFunction = args.retrieveRecordDetailFunction|| Clipperz.Base.exception.raise('MandatoryParameter'); 62 this._retrieveRecordDetailFunction = args.retrieveRecordDetailFunction|| Clipperz.Base.exception.raise('MandatoryParameter');
66 this._recordsIndex = args.recordsData['index'] || Clipperz.Base.exception.raise('MandatoryParameter'); 63 this._recordsIndex = args.recordsData['index'] || Clipperz.Base.exception.raise('MandatoryParameter');
67 this._directLoginsIndex = args.directLoginsData['index']|| Clipperz.Base.exception.raise('MandatoryParameter'); 64 this._directLoginsIndex = args.directLoginsData['index']|| Clipperz.Base.exception.raise('MandatoryParameter');
68 65
69 this._records = null; 66 this._records = null;
70 67
71 return this; 68 return this;
72} 69}
73 70
74 71
75Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.RecordIndex, Object, { 72Clipperz.Base.extend(Clipperz.PM.DataModel.User.Header.RecordIndex, Object, {
76 73
77 'toString': function() { 74 'toString': function() {
78 return "Clipperz.PM.DataModel.User.Header.RecordIndex"; 75 return "Clipperz.PM.DataModel.User.Header.RecordIndex";
79 }, 76 },
80 77
81 //------------------------------------------------------------------------- 78 //-------------------------------------------------------------------------
82 79
83 'retrieveRecordDetailFunction': function () { 80 'retrieveRecordDetailFunction': function () {
84 return this._retrieveRecordDetailFunction; 81 return this._retrieveRecordDetailFunction;
85 }, 82 },
86 83
87 //------------------------------------------------------------------------- 84 //-------------------------------------------------------------------------
88 85
89 'recordsIndex': function () { 86 'recordsIndex': function () {
90 return this._recordsIndex; 87 return this._recordsIndex;
91 }, 88 },
92 89
93 'recordsData': function () { 90 'recordsData': function () {
94 return this._recordsData; 91 return this._recordsData;
95 }, 92 },
96 93
97 //------------------------------------------------------------------------- 94 //-------------------------------------------------------------------------
98 95
99 'directLoginsIndex': function () { 96 'directLoginsIndex': function () {
100 return this._directLoginsIndex; 97 return this._directLoginsIndex;
101 }, 98 },
102 99
103 'directLoginsData': function () { 100 'directLoginsData': function () {
104 return this._directLoginsData; 101 return this._directLoginsData;
105 }, 102 },
106 103
107 //------------------------------------------------------------------------- 104 //-------------------------------------------------------------------------
108 105
109 'lock': function () { 106 'lock': function () {
110 return this._lock; 107 return this._lock;
111 }, 108 },
112 109
113 //------------------------------------------------------------------------- 110 //-------------------------------------------------------------------------
114 111
115 'transientState': function () { 112 'transientState': function () {
116 if (this._transientState == null) { 113 if (this._transientState == null) {
117 this._transientState = new Clipperz.KeyValueObjectStore(/*{'name':'User.Header.RecordIndex.transientState [1]'}*/); 114 this._transientState = new Clipperz.KeyValueObjectStore(/*{'name':'User.Header.RecordIndex.transientState [1]'}*/);
118 } 115 }
119 116
120 return this._transientState; 117 return this._transientState;
diff --git a/frontend/gamma/js/Clipperz/PM/DataModel/User.js b/frontend/gamma/js/Clipperz/PM/DataModel/User.js
index e8afa97..72d4006 100644
--- a/frontend/gamma/js/Clipperz/PM/DataModel/User.js
+++ b/frontend/gamma/js/Clipperz/PM/DataModel/User.js
@@ -1,120 +1,117 @@
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 args = args || {}; 34 args = args || {};
38 35
39 Clipperz.PM.DataModel.User.superclass.constructor.apply(this, arguments); 36 Clipperz.PM.DataModel.User.superclass.constructor.apply(this, arguments);
40 37
41 this._username = args.username || null; 38 this._username = args.username || null;
42 this._getPassphraseFunction = args.getPassphraseFunction || null; 39 this._getPassphraseFunction = args.getPassphraseFunction || null;
43 40
44 this._data = null; 41 this._data = null;
45 42
46 this._connection = null; 43 this._connection = null;
47 this._connectionVersion = 'current'; 44 this._connectionVersion = 'current';
48 45
49 this._serverData = null; 46 this._serverData = null;
50 this._serverLockValue = null; 47 this._serverLockValue = null;
51 this._transientState = null; 48 this._transientState = null;
52 49
53 this._deferredLocks = { 50 this._deferredLocks = {
54 'passphrase': new MochiKit.Async.DeferredLock(), 51 'passphrase': new MochiKit.Async.DeferredLock(),
55 'serverData': new MochiKit.Async.DeferredLock(), 52 'serverData': new MochiKit.Async.DeferredLock(),
56 // 'recordsIndex': new MochiKit.Async.DeferredLock(), 53 // 'recordsIndex': new MochiKit.Async.DeferredLock(),
57 // 'directLoginsIndex':new MochiKit.Async.DeferredLock() 54 // 'directLoginsIndex':new MochiKit.Async.DeferredLock()
58 // 'preferences': new MochiKit.Async.DeferredLock() 55 // 'preferences': new MochiKit.Async.DeferredLock()
59 // 'oneTimePasswords': new MochiKit.Async.DeferredLock() 56 // 'oneTimePasswords': new MochiKit.Async.DeferredLock()
60 '__syntaxFix__': 'syntax fix' 57 '__syntaxFix__': 'syntax fix'
61 }; 58 };
62 59
63 return this; 60 return this;
64} 61}
65 62
66Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, { 63Clipperz.Base.extend(Clipperz.PM.DataModel.User, Object, {
67 64
68 'toString': function () { 65 'toString': function () {
69 return "Clipperz.PM.DataModel.User - " + this.username(); 66 return "Clipperz.PM.DataModel.User - " + this.username();
70 }, 67 },
71 68
72 //------------------------------------------------------------------------- 69 //-------------------------------------------------------------------------
73 70
74 'username': function () { 71 'username': function () {
75 return this._username; 72 return this._username;
76 }, 73 },
77 74
78 'setUsername': function (aValue) { 75 'setUsername': function (aValue) {
79 this._username = aValue; 76 this._username = aValue;
80 }, 77 },
81 78
82 //------------------------------------------------------------------------- 79 //-------------------------------------------------------------------------
83 80
84 'displayName': function() { 81 'displayName': function() {
85 return "" + this.username() + ""; 82 return "" + this.username() + "";
86 }, 83 },
87 84
88 //------------------------------------------------------------------------- 85 //-------------------------------------------------------------------------
89 86
90 'data': function () { 87 'data': function () {
91 if (this._data == null) { 88 if (this._data == null) {
92 this._data = new Clipperz.KeyValueObjectStore(/*{'name':'User.data [1]'}*/); 89 this._data = new Clipperz.KeyValueObjectStore(/*{'name':'User.data [1]'}*/);
93 }; 90 };
94 91
95 return this._data; 92 return this._data;
96 }, 93 },
97 94
98 //------------------------------------------------------------------------- 95 //-------------------------------------------------------------------------
99 96
100 'serverLockValue': function () { 97 'serverLockValue': function () {
101 return this._serverLockValue; 98 return this._serverLockValue;
102 }, 99 },
103 100
104 'setServerLockValue': function (aValue) { 101 'setServerLockValue': function (aValue) {
105 this._serverLockValue = aValue; 102 this._serverLockValue = aValue;
106 }, 103 },
107 104
108 //------------------------------------------------------------------------- 105 //-------------------------------------------------------------------------
109 106
110 'transientState': function () { 107 'transientState': function () {
111 if (this._transientState == null) { 108 if (this._transientState == null) {
112 this._transientState = {} 109 this._transientState = {}
113 } 110 }
114 111
115 return this._transientState; 112 return this._transientState;
116 }, 113 },
117 114
118 'resetTransientState': function (isCommitting) { 115 'resetTransientState': function (isCommitting) {
119 this._transientState = null; 116 this._transientState = null;
120 }, 117 },
diff --git a/frontend/gamma/js/Clipperz/PM/Date.js b/frontend/gamma/js/Clipperz/PM/Date.js
index a131357..96a2700 100644
--- a/frontend/gamma/js/Clipperz/PM/Date.js
+++ b/frontend/gamma/js/Clipperz/PM/Date.js
@@ -1,120 +1,117 @@
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.getValue('calendarStrings.amDesignation'), 49 'amDesignation':Clipperz.PM.Strings.getValue('calendarStrings.amDesignation'),
53 'pmDesignation':Clipperz.PM.Strings.getValue('calendarStrings.pmDesignation'), 50 'pmDesignation':Clipperz.PM.Strings.getValue('calendarStrings.pmDesignation'),
54 'days': Clipperz.PM.Strings.getValue('calendarStrings.days'), 51 'days': Clipperz.PM.Strings.getValue('calendarStrings.days'),
55 'shortDays': Clipperz.PM.Strings.getValue('calendarStrings.shortDays'), 52 'shortDays': Clipperz.PM.Strings.getValue('calendarStrings.shortDays'),
56 'shortMonths': Clipperz.PM.Strings.getValue('calendarStrings.shortMonths'), 53 'shortMonths': Clipperz.PM.Strings.getValue('calendarStrings.shortMonths'),
57 'months': Clipperz.PM.Strings.getValue('calendarStrings.months') 54 'months': Clipperz.PM.Strings.getValue('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 'formatWithTemplate': function (aTemplate, aDate) { 80 'formatWithTemplate': function (aTemplate, aDate) {
84 return Clipperz.PM.Date.formatDateWithTemplate(aDate, aTemplate); 81 return Clipperz.PM.Date.formatDateWithTemplate(aDate, aTemplate);
85 }, 82 },
86 83
87 'formatDateWithTemplate': function(aDate, aTemplate) { 84 'formatDateWithTemplate': function(aDate, aTemplate) {
88 var result; 85 var result;
89 86
90 if (aDate == null) { 87 if (aDate == null) {
91 result = "" 88 result = ""
92 } else { 89 } else {
93 result = Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(aDate, aTemplate, Clipperz.PM.Date.locale()); 90 result = Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(aDate, aTemplate, Clipperz.PM.Date.locale());
94 }; 91 };
95 92
96 return result; 93 return result;
97 }, 94 },
98 95
99 'parseDateWithTemplate': function(aValue, aTemplate) { 96 'parseDateWithTemplate': function(aValue, aTemplate) {
100 return Clipperz.Date.parseDateWithPHPTemplateAndLocale(aValue, aTemplate, Clipperz.PM.Date.locale()); 97 return Clipperz.Date.parseDateWithPHPTemplateAndLocale(aValue, aTemplate, Clipperz.PM.Date.locale());
101 }, 98 },
102 99
103 //========================================================================= 100 //=========================================================================
104 101
105 'formatDateWithUTCFormat': function(aDate) { 102 'formatDateWithUTCFormat': function(aDate) {
106 return Clipperz.Date.formatDateWithUTCFormatAndLocale(aDate, Clipperz.PM.Date.locale()); 103 return Clipperz.Date.formatDateWithUTCFormatAndLocale(aDate, Clipperz.PM.Date.locale());
107 }, 104 },
108 105
109 'parseDateWithUTCFormat': function(aValue) { 106 'parseDateWithUTCFormat': function(aValue) {
110 var result; 107 var result;
111 108
112 if (aValue == null) { 109 if (aValue == null) {
113 result = null; 110 result = null;
114 } else { 111 } else {
115 result = Clipperz.Date.parseDateWithUTCFormatAndLocale(aValue, Clipperz.PM.Date.locale()); 112 result = Clipperz.Date.parseDateWithUTCFormatAndLocale(aValue, Clipperz.PM.Date.locale());
116 } 113 }
117 114
118 return result; 115 return result;
119 }, 116 },
120 117
diff --git a/frontend/gamma/js/Clipperz/PM/Proxy.js b/frontend/gamma/js/Clipperz/PM/Proxy.js
index d90bcb7..190bffd 100644
--- a/frontend/gamma/js/Clipperz/PM/Proxy.js
+++ b/frontend/gamma/js/Clipperz/PM/Proxy.js
@@ -1,120 +1,117 @@
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 Clipperz.Async.Deferred("Proxy.payToll", {trace:false}); 74 deferredResult = new Clipperz.Async.Deferred("Proxy.payToll", {trace:false});
78 75
79 if (this.tolls()[aRequestType].length == 0) { 76 if (this.tolls()[aRequestType].length == 0) {
80 deferredResult.addMethod(this, 'sendMessage', 'knock', {requestType:aRequestType}); 77 deferredResult.addMethod(this, 'sendMessage', 'knock', {requestType:aRequestType});
81 deferredResult.addMethod(this, 'setTollCallback'); 78 deferredResult.addMethod(this, 'setTollCallback');
82 } 79 }
83 deferredResult.addMethod(this.tolls()[aRequestType], 'pop'); 80 deferredResult.addMethod(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 }
diff --git a/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.JSON.js b/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.JSON.js
index 65b46de..5b39b4a 100755
--- a/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.JSON.js
+++ b/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.JSON.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 = {}; }
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
42Clipperz.Base.extend(Clipperz.PM.Proxy.JSON, Clipperz.PM.Proxy, { 39Clipperz.Base.extend(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 Clipperz.Async.Deferred("Proxy.JSON.sendMessage", {trace:false}); 64 deferredResult = new Clipperz.Async.Deferred("Proxy.JSON.sendMessage", {trace:false});
68 deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'remoteRequestSent'); 65 deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'remoteRequestSent');
69 deferredResult.addCallback(MochiKit.Async.doXHR, this.url(), { 66 deferredResult.addCallback(MochiKit.Async.doXHR, this.url(), {
70 method:'POST', 67 method:'POST',
71 sendContent:MochiKit.Base.queryString(parameters), 68 sendContent:MochiKit.Base.queryString(parameters),
72 headers:{"Content-Type":"application/x-www-form-urlencoded"} 69 headers:{"Content-Type":"application/x-www-form-urlencoded"}
73 }); 70 });
74 deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'remoteRequestReceived'); 71 deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'remoteRequestReceived');
75 // deferredResult.addCallback(MochiKit.Async.evalJSONRequest); 72 // deferredResult.addCallback(MochiKit.Async.evalJSONRequest);
76 deferredResult.addCallback(MochiKit.Base.itemgetter('responseText')); 73 deferredResult.addCallback(MochiKit.Base.itemgetter('responseText'));
77 deferredResult.addCallback(Clipperz.Base.evalJSON); 74 deferredResult.addCallback(Clipperz.Base.evalJSON);
78 deferredResult.addCallback(function (someValues) { 75 deferredResult.addCallback(function (someValues) {
79 if (someValues['result'] == 'EXCEPTION') { 76 if (someValues['result'] == 'EXCEPTION') {
80 throw someValues['message']; 77 throw someValues['message'];
81 } 78 }
82 79
83 return someValues; 80 return someValues;
84 }) 81 })
85 // return MochiKit.Base.evalJSON(req.responseText); 82 // return MochiKit.Base.evalJSON(req.responseText);
86 deferredResult.callback(); 83 deferredResult.callback();
87 84
88 return deferredResult; 85 return deferredResult;
89 }, 86 },
90 87
91 //========================================================================= 88 //=========================================================================
92 __syntaxFix__: "syntax fix" 89 __syntaxFix__: "syntax fix"
93 90
94}); 91});
diff --git a/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js b/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js
index de8e7f6..01ba122 100644
--- a/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js
+++ b/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js
@@ -1,120 +1,117 @@
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._currentStaticConnection = null; 40 this._currentStaticConnection = null;
44 41
45 return this; 42 return this;
46} 43}
47 44
48Clipperz.Base.extend(Clipperz.PM.Proxy.Offline.DataStore, Object, { 45Clipperz.Base.extend(Clipperz.PM.Proxy.Offline.DataStore, Object, {
49 46
50 //------------------------------------------------------------------------- 47 //-------------------------------------------------------------------------
51 48
52 'isReadOnly': function () { 49 'isReadOnly': function () {
53 return this._isReadOnly; 50 return this._isReadOnly;
54 }, 51 },
55 52
56 //------------------------------------------------------------------------- 53 //-------------------------------------------------------------------------
57 54
58 'shouldPayTolls': function() { 55 'shouldPayTolls': function() {
59 return this._shouldPayTolls; 56 return this._shouldPayTolls;
60 }, 57 },
61 58
62 //------------------------------------------------------------------------- 59 //-------------------------------------------------------------------------
63 60
64 'data': function () { 61 'data': function () {
65 return this._data; 62 return this._data;
66 }, 63 },
67 64
68 //------------------------------------------------------------------------- 65 //-------------------------------------------------------------------------
69 66
70 'tolls': function () { 67 'tolls': function () {
71 return this._tolls; 68 return this._tolls;
72 }, 69 },
73 70
74 //========================================================================= 71 //=========================================================================
75 72
76 'resetData': function() { 73 'resetData': function() {
77 this._data = { 74 this._data = {
78 'users': { 75 'users': {
79 'catchAllUser': { 76 'catchAllUser': {
80 __masterkey_test_value__: 'masterkey', 77 __masterkey_test_value__: 'masterkey',
81 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00', 78 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00',
82 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00' 79 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00'
83 } 80 }
84 } 81 }
85 }; 82 };
86 }, 83 },
87 84
88 //------------------------------------------------------------------------- 85 //-------------------------------------------------------------------------
89 86
90 'setupWithEncryptedData': function(someData) { 87 'setupWithEncryptedData': function(someData) {
91 this._data = Clipperz.Base.deepClone(someData); 88 this._data = Clipperz.Base.deepClone(someData);
92 }, 89 },
93 90
94 //------------------------------------------------------------------------- 91 //-------------------------------------------------------------------------
95 92
96 'setupWithData': function(someData) { 93 'setupWithData': function(someData) {
97 var deferredResult; 94 var deferredResult;
98 var resultData; 95 var resultData;
99 var i, c; 96 var i, c;
100 97
101//Clipperz.log(">>> Proxy.Test.setupWithData"); 98//Clipperz.log(">>> Proxy.Test.setupWithData");
102 resultData = this._data; 99 resultData = this._data;
103 100
104 deferredResult = new Clipperz.Async.Deferred("Proxy.Test.seupWithData", {trace:false}); 101 deferredResult = new Clipperz.Async.Deferred("Proxy.Test.seupWithData", {trace:false});
105 c = someData['users'].length; 102 c = someData['users'].length;
106 103
107 for (i=0; i<c; i++) { 104 for (i=0; i<c; i++) {
108 varnewConnection; 105 varnewConnection;
109 varrecordConfiguration; 106 varrecordConfiguration;
110 107
111 deferredResult.addMethod(this, 'userSerializedEncryptedData', someData['users'][i]); 108 deferredResult.addMethod(this, 'userSerializedEncryptedData', someData['users'][i]);
112 deferredResult.addCallback(MochiKit.Base.bind(function(aUserSerializationContext) { 109 deferredResult.addCallback(MochiKit.Base.bind(function(aUserSerializationContext) {
113//console.log("SERIALIZED USER", aUserSerializationContext); 110//console.log("SERIALIZED USER", aUserSerializationContext);
114 resultData['users'][aUserSerializationContext['credentials']['C']] = { 111 resultData['users'][aUserSerializationContext['credentials']['C']] = {
115 's': aUserSerializationContext['credentials']['s'], 112 's': aUserSerializationContext['credentials']['s'],
116 'v': aUserSerializationContext['credentials']['v'], 113 'v': aUserSerializationContext['credentials']['v'],
117 'version': aUserSerializationContext['data']['connectionVersion'], 114 'version': aUserSerializationContext['data']['connectionVersion'],
118 'userDetails': aUserSerializationContext['encryptedData']['user']['header'], 115 'userDetails': aUserSerializationContext['encryptedData']['user']['header'],
119 'userDetailsVersion':aUserSerializationContext['encryptedData']['user']['version'], 116 'userDetailsVersion':aUserSerializationContext['encryptedData']['user']['version'],
120 'statistics': aUserSerializationContext['encryptedData']['user']['statistics'], 117 'statistics': aUserSerializationContext['encryptedData']['user']['statistics'],
diff --git a/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Offline.js b/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Offline.js
index a15b223..a86ac4f 100644
--- a/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Offline.js
+++ b/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Offline.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
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
44Clipperz.Base.extend(Clipperz.PM.Proxy.Offline, Clipperz.PM.Proxy, { 41Clipperz.Base.extend(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 __syntaxFix__: "syntax fix" 61 __syntaxFix__: "syntax fix"
65 62
66}); 63});
67 64
diff --git a/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Test.js b/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Test.js
index be1c337..d554c6a 100644
--- a/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Test.js
+++ b/frontend/gamma/js/Clipperz/PM/Proxy/Proxy.Test.js
@@ -1,120 +1,117 @@
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 Clipperz.PM.Proxy.Test.superclass.constructor.call(this, args); 33 Clipperz.PM.Proxy.Test.superclass.constructor.call(this, args);
37 34
38 args = args || {}; 35 args = args || {};
39 36
40 this._expectedRequests = (args.shouldCheckExpectedRequests === true) ? [] : null; 37 this._expectedRequests = (args.shouldCheckExpectedRequests === true) ? [] : null;
41 this._isExpectingRequests = true; 38 this._isExpectingRequests = true;
42 this._unexpectedRequests = []; 39 this._unexpectedRequests = [];
43 40
44 this.dataStore().resetData(); 41 this.dataStore().resetData();
45 42
46 return this; 43 return this;
47} 44}
48 45
49Clipperz.Base.extend(Clipperz.PM.Proxy.Test, Clipperz.PM.Proxy.Offline, { 46Clipperz.Base.extend(Clipperz.PM.Proxy.Test, Clipperz.PM.Proxy.Offline, {
50 47
51 'toString': function() { 48 'toString': function() {
52 return "Clipperz.PM.Proxy.Test"; 49 return "Clipperz.PM.Proxy.Test";
53 }, 50 },
54 51
55 //========================================================================= 52 //=========================================================================
56 53
57 'expectedRequests': function () { 54 'expectedRequests': function () {
58 return this._expectedRequests; 55 return this._expectedRequests;
59 }, 56 },
60 57
61 //------------------------------------------------------------------------- 58 //-------------------------------------------------------------------------
62 59
63 'shouldCheckExpectedRequests': function () { 60 'shouldCheckExpectedRequests': function () {
64 return (this._expectedRequests != null); 61 return (this._expectedRequests != null);
65 }, 62 },
66 63
67 'setShouldCheckExpectedRequests': function(aValue) { 64 'setShouldCheckExpectedRequests': function(aValue) {
68 if (aValue) { 65 if (aValue) {
69 this._expectedRequests = aValue; 66 this._expectedRequests = aValue;
70 } else { 67 } else {
71 this._expectedRequests = null; 68 this._expectedRequests = null;
72 } 69 }
73 }, 70 },
74 71
75 //------------------------------------------------------------------------- 72 //-------------------------------------------------------------------------
76 73
77 'shouldNotReceiveAnyFurtherRequest': function () { 74 'shouldNotReceiveAnyFurtherRequest': function () {
78 this._isExpectingRequests = false; 75 this._isExpectingRequests = false;
79 }, 76 },
80 77
81 'mayReceiveMoreRequests': function () { 78 'mayReceiveMoreRequests': function () {
82 this._isExpectingRequests = true; 79 this._isExpectingRequests = true;
83 this.resetUnexpectedRequests(); 80 this.resetUnexpectedRequests();
84 }, 81 },
85 82
86 'isExpectingRequests': function () { 83 'isExpectingRequests': function () {
87 return this._isExpectingRequests; 84 return this._isExpectingRequests;
88 }, 85 },
89 86
90 //------------------------------------------------------------------------- 87 //-------------------------------------------------------------------------
91 88
92 'unexpectedRequests': function () { 89 'unexpectedRequests': function () {
93 return this._unexpectedRequests; 90 return this._unexpectedRequests;
94 }, 91 },
95 92
96 'resetUnexpectedRequests': function () { 93 'resetUnexpectedRequests': function () {
97 this._unexpectedRequests = []; 94 this._unexpectedRequests = [];
98 }, 95 },
99 96
100 //------------------------------------------------------------------------- 97 //-------------------------------------------------------------------------
101 98
102 'testExpectedRequestParameters': function (aPath, anActualRequest, anExpectedRequest) { 99 'testExpectedRequestParameters': function (aPath, anActualRequest, anExpectedRequest) {
103 var aKey; 100 var aKey;
104//console.log(">>> Proxy.testExpectedRequestParameters [" + aPath + "]", anActualRequest, anExpectedRequest); 101//console.log(">>> Proxy.testExpectedRequestParameters [" + aPath + "]", anActualRequest, anExpectedRequest);
105 for (aKey in anExpectedRequest) { 102 for (aKey in anExpectedRequest) {
106 if (typeof(anActualRequest[aKey]) == 'undefined') { 103 if (typeof(anActualRequest[aKey]) == 'undefined') {
107 throw "the expected paramter [" + aKey + "] is missing from the actual request"; 104 throw "the expected paramter [" + aKey + "] is missing from the actual request";
108 } 105 }
109 if (typeof(anExpectedRequest[aKey]) == 'object') { 106 if (typeof(anExpectedRequest[aKey]) == 'object') {
110 this.testExpectedRequestParameters(aPath + "." + aKey, anActualRequest[aKey], anExpectedRequest[aKey]) 107 this.testExpectedRequestParameters(aPath + "." + aKey, anActualRequest[aKey], anExpectedRequest[aKey])
111 } else { 108 } else {
112 if (! anExpectedRequest[aKey](anActualRequest[aKey])) { 109 if (! anExpectedRequest[aKey](anActualRequest[aKey])) {
113 throw "wrong value for paramter [" + aKey + "]; got '" + anActualRequest[aKey] + "'"; 110 throw "wrong value for paramter [" + aKey + "]; got '" + anActualRequest[aKey] + "'";
114 } 111 }
115 } 112 }
116 } 113 }
117//console.log("<<< Proxy.testExpectedRequestParameters"); 114//console.log("<<< Proxy.testExpectedRequestParameters");
118 }, 115 },
119 116
120 //------------------------------------------------------------------------- 117 //-------------------------------------------------------------------------
diff --git a/frontend/gamma/js/Clipperz/PM/Strings.js b/frontend/gamma/js/Clipperz/PM/Strings.js
index 43ef21f..a051365 100644
--- a/frontend/gamma/js/Clipperz/PM/Strings.js
+++ b/frontend/gamma/js/Clipperz/PM/Strings.js
@@ -1,120 +1,117 @@
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/*
36Clipperz.PM.Strings.standardStrings = { 33Clipperz.PM.Strings.standardStrings = {
37 'loginPanelSwitchLanguageSelectOptions':[ 34 'loginPanelSwitchLanguageSelectOptions':[
38/ * 35/ *
39 {tag:'option', html:"Arabic (Oman) (العربية)", value:'ar-OM', disabled:true}, 36 {tag:'option', html:"Arabic (Oman) (العربية)", value:'ar-OM', disabled:true},
40 {tag:'option', html:"Arabic (Syria) (العربية)", value:'ar-SY', disabled:true}, 37 {tag:'option', html:"Arabic (Syria) (العربية)", value:'ar-SY', disabled:true},
41 {tag:'option', html:"Bahasa Indonesia", value:'id-ID', disabled:true}, 38 {tag:'option', html:"Bahasa Indonesia", value:'id-ID', disabled:true},
42 {tag:'option', html:"Bulgarian (Български)", value:'bg-BG', disabled:true}, 39 {tag:'option', html:"Bulgarian (Български)", value:'bg-BG', disabled:true},
43 {tag:'option', html:"Català", value:'ca-ES', disabled:true}, 40 {tag:'option', html:"Català", value:'ca-ES', disabled:true},
44 {tag:'option', html:"Chinese (Simplified) (简体中文)", value:'zh-CN', disabled:true}, 41 {tag:'option', html:"Chinese (Simplified) (简体中文)", value:'zh-CN', disabled:true},
45 {tag:'option', html:"Chinese (Traditional) (正體中文)", value:'zh-TW', disabled:true}, 42 {tag:'option', html:"Chinese (Traditional) (正體中文)", value:'zh-TW', disabled:true},
46 {tag:'option', html:"Czech (Česky)", value:'cs-CZ', disabled:true}, 43 {tag:'option', html:"Czech (Česky)", value:'cs-CZ', disabled:true},
47 {tag:'option', html:"Dansk", value:'da-DK', disabled:true}, 44 {tag:'option', html:"Dansk", value:'da-DK', disabled:true},
48 {tag:'option', html:"Deutsch", value:'de-DE'/ *, disabled:true* /}, 45 {tag:'option', html:"Deutsch", value:'de-DE'/ *, disabled:true* /},
49 {tag:'option', html:"English (American)", value:'en-US'/ *, disabled:true* /}, 46 {tag:'option', html:"English (American)", value:'en-US'/ *, disabled:true* /},
50 {tag:'option', html:"English (British)", value:'en-GB'/ *, disabled:true* /}, 47 {tag:'option', html:"English (British)", value:'en-GB'/ *, disabled:true* /},
51 {tag:'option', html:"English (Canadian)", value:'en-CA'/ *, disabled:true* /}, 48 {tag:'option', html:"English (Canadian)", value:'en-CA'/ *, disabled:true* /},
52 {tag:'option', html:"Español", value:'es-ES', disabled:true}, 49 {tag:'option', html:"Español", value:'es-ES', disabled:true},
53 {tag:'option', html:"Eesti", value:'et-EE', disabled:true}, 50 {tag:'option', html:"Eesti", value:'et-EE', disabled:true},
54 {tag:'option', html:"Français", value:'fr-FR', disabled:true}, 51 {tag:'option', html:"Français", value:'fr-FR', disabled:true},
55 {tag:'option', html:"Galego", value:'gl-ES', disabled:true}, 52 {tag:'option', html:"Galego", value:'gl-ES', disabled:true},
56 {tag:'option', html:"Greek (Ελληνικά)", value:'el-GR', disabled:true}, 53 {tag:'option', html:"Greek (Ελληνικά)", value:'el-GR', disabled:true},
57 {tag:'option', html:"Íslenska", value:'is-IS', disabled:true}, 54 {tag:'option', html:"Íslenska", value:'is-IS', disabled:true},
58 {tag:'option', html:"Italiano", value:'it-IT'/ *, disabled:true* /}, 55 {tag:'option', html:"Italiano", value:'it-IT'/ *, disabled:true* /},
59 {tag:'option', html:"Japanese (日本語)", value:'ja-JP', disabled:true}, 56 {tag:'option', html:"Japanese (日本語)", value:'ja-JP', disabled:true},
60 {tag:'option', html:"Korean (한국어)", value:'ko-KR', disabled:true}, 57 {tag:'option', html:"Korean (한국어)", value:'ko-KR', disabled:true},
61 {tag:'option', html:"Latviešu", value:'lv-LV', disabled:true}, 58 {tag:'option', html:"Latviešu", value:'lv-LV', disabled:true},
62 {tag:'option', html:"Lietuvių", value:'lt-LT', disabled:true}, 59 {tag:'option', html:"Lietuvių", value:'lt-LT', disabled:true},
63 {tag:'option', html:"Macedonian (Македонски)", value:'mk-MK', disabled:true}, 60 {tag:'option', html:"Macedonian (Македонски)", value:'mk-MK', disabled:true},
64 {tag:'option', html:"Magyar", value:'hu-HU', disabled:true}, 61 {tag:'option', html:"Magyar", value:'hu-HU', disabled:true},
65 {tag:'option', html:"Nederlands", value:'nl-NL', disabled:true}, 62 {tag:'option', html:"Nederlands", value:'nl-NL', disabled:true},
66 {tag:'option', html:"Norsk bokmål", value:'nb-NO', disabled:true}, 63 {tag:'option', html:"Norsk bokmål", value:'nb-NO', disabled:true},
67 {tag:'option', html:"Norsk nynorsk", value:'nn-NO', disabled:true}, 64 {tag:'option', html:"Norsk nynorsk", value:'nn-NO', disabled:true},
68 {tag:'option', html:"Persian (Western) (فارسى)", value:'fa-IR', disabled:true}, 65 {tag:'option', html:"Persian (Western) (فارسى)", value:'fa-IR', disabled:true},
69 {tag:'option', html:"Polski", value:'pl-PL', disabled:true}, 66 {tag:'option', html:"Polski", value:'pl-PL', disabled:true},
70 {tag:'option', html:"Português", value:'pt-PT'/ *, disabled:true* /}, 67 {tag:'option', html:"Português", value:'pt-PT'/ *, disabled:true* /},
71 {tag:'option', html:"Português Brasileiro", value:'pt-BR'/ *, disabled:true* /}, 68 {tag:'option', html:"Português Brasileiro", value:'pt-BR'/ *, disabled:true* /},
72 {tag:'option', html:"Românä", value:'ro-RO', disabled:true}, 69 {tag:'option', html:"Românä", value:'ro-RO', disabled:true},
73 {tag:'option', html:"Russian (Русский)", value:'ru-RU', disabled:true}, 70 {tag:'option', html:"Russian (Русский)", value:'ru-RU', disabled:true},
74 {tag:'option', html:"Slovak (Slovenčina)", value:'sk-SK', disabled:true}, 71 {tag:'option', html:"Slovak (Slovenčina)", value:'sk-SK', disabled:true},
75 {tag:'option', html:"Slovenian (Slovenščina)", value:'sl-SI', disabled:true}, 72 {tag:'option', html:"Slovenian (Slovenščina)", value:'sl-SI', disabled:true},
76 {tag:'option', html:"Suomi", value:'fi-FI', disabled:true}, 73 {tag:'option', html:"Suomi", value:'fi-FI', disabled:true},
77 {tag:'option', html:"Svenska", value:'sv-SE', disabled:true}, 74 {tag:'option', html:"Svenska", value:'sv-SE', disabled:true},
78 {tag:'option', html:"Thai (ไทย)", value:'th-TH', disabled:true}, 75 {tag:'option', html:"Thai (ไทย)", value:'th-TH', disabled:true},
79 {tag:'option', html:"Türkçe", value:'tr-TR', disabled:true}, 76 {tag:'option', html:"Türkçe", value:'tr-TR', disabled:true},
80 {tag:'option', html:"Ukrainian (Українська)", value:'uk-UA', disabled:true} 77 {tag:'option', html:"Ukrainian (Українська)", value:'uk-UA', disabled:true}
81* / 78* /
82 {tag:'option', html:"Arabic (العربية)", value:"ar", disabled:true, cls:'disabledOption'}, 79 {tag:'option', html:"Arabic (العربية)", value:"ar", disabled:true, cls:'disabledOption'},
83 // {tag:'option', html:"Chinese (中文)", value:"zh", disabled:true}, 80 // {tag:'option', html:"Chinese (中文)", value:"zh", disabled:true},
84 {tag:'option', html:"Chinese (Simplified) (简体中文)", value:'zh-CN'}, 81 {tag:'option', html:"Chinese (Simplified) (简体中文)", value:'zh-CN'},
85 {tag:'option', html:"Dutch (Nederlands)", value:"nl-NL", disabled:true, cls:'disabledOption'}, 82 {tag:'option', html:"Dutch (Nederlands)", value:"nl-NL", disabled:true, cls:'disabledOption'},
86 {tag:'option', html:"English", value:"en-US"}, 83 {tag:'option', html:"English", value:"en-US"},
87 {tag:'option', html:"French (Français)", value:"fr-FR"}, 84 {tag:'option', html:"French (Français)", value:"fr-FR"},
88 {tag:'option', html:"German (Deutsch)", value:"de-DE", disabled:true, cls:'disabledOption'}, 85 {tag:'option', html:"German (Deutsch)", value:"de-DE", disabled:true, cls:'disabledOption'},
89 {tag:'option', html:"Greek (Ελληνικά)", value:"el-GR", disabled:true, cls:'disabledOption'}, 86 {tag:'option', html:"Greek (Ελληνικά)", value:"el-GR", disabled:true, cls:'disabledOption'},
90 {tag:'option', html:"Hebrew (עברית)", value:"he-IL", disabled:true, cls:'disabledOption'}, 87 {tag:'option', html:"Hebrew (עברית)", value:"he-IL", disabled:true, cls:'disabledOption'},
91 {tag:'option', html:"Italian (Italiano)", value:"it-IT"}, 88 {tag:'option', html:"Italian (Italiano)", value:"it-IT"},
92 {tag:'option', html:"Japanese (日本語)", value:"ja-JP"}, 89 {tag:'option', html:"Japanese (日本語)", value:"ja-JP"},
93 {tag:'option', html:"Korean (한국어)", value:"ko-KR", disabled:true, cls:'disabledOption'}, 90 {tag:'option', html:"Korean (한국어)", value:"ko-KR", disabled:true, cls:'disabledOption'},
94 {tag:'option', html:"Norwegian (Norsk)", value:"no", disabled:true, cls:'disabledOption'}, 91 {tag:'option', html:"Norwegian (Norsk)", value:"no", disabled:true, cls:'disabledOption'},
95 {tag:'option', html:"Persian (فارسی)", value:"fa-IR", disabled:true, cls:'disabledOption'}, 92 {tag:'option', html:"Persian (فارسی)", value:"fa-IR", disabled:true, cls:'disabledOption'},
96 {tag:'option', html:"Polish (Polski)", value:"pl-PL", disabled:true, cls:'disabledOption'}, 93 {tag:'option', html:"Polish (Polski)", value:"pl-PL", disabled:true, cls:'disabledOption'},
97 {tag:'option', html:"Portuguese (Português)", value:"pt-BR"}, 94 {tag:'option', html:"Portuguese (Português)", value:"pt-BR"},
98 {tag:'option', html:"Russian (Русский)", value:"ru-RU", disabled:true, cls:'disabledOption'}, 95 {tag:'option', html:"Russian (Русский)", value:"ru-RU", disabled:true, cls:'disabledOption'},
99 {tag:'option', html:"Spanish (Español)", value:"es-ES"}, 96 {tag:'option', html:"Spanish (Español)", value:"es-ES"},
100 {tag:'option', html:"Swedish (Svenska)", value:"sv-SE", disabled:true, cls:'disabledOption'}, 97 {tag:'option', html:"Swedish (Svenska)", value:"sv-SE", disabled:true, cls:'disabledOption'},
101 {tag:'option', html:"Turkish (Türkçe)", value:"tr-TR", disabled:true, cls:'disabledOption'}, 98 {tag:'option', html:"Turkish (Türkçe)", value:"tr-TR", disabled:true, cls:'disabledOption'},
102 {tag:'option', html:"Vietnamese (Tiếng Việt)", value:"vi-VN", disabled:true, cls:'disabledOption'} 99 {tag:'option', html:"Vietnamese (Tiếng Việt)", value:"vi-VN", disabled:true, cls:'disabledOption'}
103 ] 100 ]
104} 101}
105*/ 102*/
106 103
107Clipperz.PM.Strings.GeneralSettings = { 104Clipperz.PM.Strings.GeneralSettings = {
108 'defaults': { 105 'defaults': {
109 // 'loginFormAarghThatsBadUrl':"http://www.clipperz.com/support/faq/account_faq", 106 // 'loginFormAarghThatsBadUrl':"http://www.clipperz.com/support/faq/account_faq",
110 // 'loginFormVerifyTheCodeUrl':"http://www.clipperz.com/learn_more/reviewing_the_code", 107 // 'loginFormVerifyTheCodeUrl':"http://www.clipperz.com/learn_more/reviewing_the_code",
111 108
112 // 'donateHeaderLinkUrl': "http://www.clipperz.com/donations", 109 // 'donateHeaderLinkUrl': "http://www.clipperz.com/donations",
113 // 'creditsHeaderLinkUrl': "http://www.clipperz.com/credits", 110 // 'creditsHeaderLinkUrl': "http://www.clipperz.com/credits",
114 // 'feedbackHeaderLinkUrl': "http://www.clipperz.com/contact", 111 // 'feedbackHeaderLinkUrl': "http://www.clipperz.com/contact",
115 // 'helpHeaderLinkUrl': "http://www.clipperz.com/support/user_guide", 112 // 'helpHeaderLinkUrl': "http://www.clipperz.com/support/user_guide",
116 // 'forumHeaderLinkUrl': "http://www.clipperz.com/forum", 113 // 'forumHeaderLinkUrl': "http://www.clipperz.com/forum",
117 114
118 // 'httpAuthBookmarkletConfiguration':{tag:'textarea', id:'httpAuthDefaultConfiguration', html:"" + 115 // 'httpAuthBookmarkletConfiguration':{tag:'textarea', id:'httpAuthDefaultConfiguration', html:"" +
119 // "{ \"page\":{\"title\":\"HTTP authentication\"}," + "\n" + 116 // "{ \"page\":{\"title\":\"HTTP authentication\"}," + "\n" +
120 // " \"form\":{\"attributes\": {" + "\n" + 117 // " \"form\":{\"attributes\": {" + "\n" +
diff --git a/frontend/gamma/js/Clipperz/PM/Strings/MessagePanelConfigurations.js b/frontend/gamma/js/Clipperz/PM/Strings/MessagePanelConfigurations.js
index 446e96c..7f6c52f 100644
--- a/frontend/gamma/js/Clipperz/PM/Strings/MessagePanelConfigurations.js
+++ b/frontend/gamma/js/Clipperz/PM/Strings/MessagePanelConfigurations.js
@@ -1,120 +1,117 @@
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'],
diff --git a/frontend/gamma/js/Clipperz/PM/Strings/Strings_defaults.js b/frontend/gamma/js/Clipperz/PM/Strings/Strings_defaults.js
index 1ad2696..101ed3f 100644
--- a/frontend/gamma/js/Clipperz/PM/Strings/Strings_defaults.js
+++ b/frontend/gamma/js/Clipperz/PM/Strings/Strings_defaults.js
@@ -1,120 +1,117 @@
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 // D E F A U L T S ( defaults ) 33 // D E F A U L T S ( defaults )
37// 34//
38//============================================================================= 35//=============================================================================
39 36
40Clipperz.PM.Strings.Languages['defaults'] = { 37Clipperz.PM.Strings.Languages['defaults'] = {
41 38
42'elapsedTimeDescriptions': { 39'elapsedTimeDescriptions': {
43 'MORE_THAN_A_MONTH_AGO': "more than a month ago", 40 'MORE_THAN_A_MONTH_AGO': "more than a month ago",
44 'MORE_THAN_A_WEEK_AGO': "more than a week ago", 41 'MORE_THAN_A_WEEK_AGO': "more than a week ago",
45 'MORE_THAN_*_WEEKS_AGO': "more than __elapsed__ weeks ago", 42 'MORE_THAN_*_WEEKS_AGO': "more than __elapsed__ weeks ago",
46 'YESTERDAY': "yesterday", 43 'YESTERDAY': "yesterday",
47 '*_DAYS_AGO': "__elapsed__ days ago", 44 '*_DAYS_AGO': "__elapsed__ days ago",
48 'ABOUT_AN_HOUR_AGO': "about an hour ago", 45 'ABOUT_AN_HOUR_AGO': "about an hour ago",
49 '*_HOURS_AGO': "__elapsed__ hours ago", 46 '*_HOURS_AGO': "__elapsed__ hours ago",
50 'JUST_A_FEW_MINUTES_AGO': "just a few minutes ago", 47 'JUST_A_FEW_MINUTES_AGO': "just a few minutes ago",
51 'ABOUT_*_MINUTES_AGO': "about __elapsed__ minutes ago" 48 'ABOUT_*_MINUTES_AGO': "about __elapsed__ minutes ago"
52}, 49},
53/* 50/*
54 'unknown_ip': "unknown", 51 'unknown_ip': "unknown",
55 52
56'countries': { 53'countries': {
57 '--': "unknown", 54 '--': "unknown",
58 'AD': "Andorra", 55 'AD': "Andorra",
59 'AE': "United Arab Emirates", 56 'AE': "United Arab Emirates",
60 'AF': "Afghanistan", 57 'AF': "Afghanistan",
61 'AG': "Antigua and Barbuda", 58 'AG': "Antigua and Barbuda",
62 'AI': "Anguilla", 59 'AI': "Anguilla",
63 'AL': "Albania", 60 'AL': "Albania",
64 'AM': "Armenia", 61 'AM': "Armenia",
65 'AN': "Netherlands Antilles", 62 'AN': "Netherlands Antilles",
66 'AO': "Angola", 63 'AO': "Angola",
67 'AP': "Non-Spec Asia Pas Location", 64 'AP': "Non-Spec Asia Pas Location",
68 'AR': "Argentina", 65 'AR': "Argentina",
69 'AS': "American Samoa", 66 'AS': "American Samoa",
70 'AT': "Austria", 67 'AT': "Austria",
71 'AU': "Australia", 68 'AU': "Australia",
72 'AW': "Aruba", 69 'AW': "Aruba",
73 'AX': "Aland Islands", 70 'AX': "Aland Islands",
74 'AZ': "Azerbaijan", 71 'AZ': "Azerbaijan",
75 'BA': "Bosnia and Herzegowina", 72 'BA': "Bosnia and Herzegowina",
76 'BB': "Barbados", 73 'BB': "Barbados",
77 'BD': "Bangladesh", 74 'BD': "Bangladesh",
78 'BE': "Belgium", 75 'BE': "Belgium",
79 'BF': "Burkina Faso", 76 'BF': "Burkina Faso",
80 'BG': "Bulgaria", 77 'BG': "Bulgaria",
81 'BH': "Bahrain", 78 'BH': "Bahrain",
82 'BI': "Burundi", 79 'BI': "Burundi",
83 'BJ': "Benin", 80 'BJ': "Benin",
84 'BM': "Bermuda", 81 'BM': "Bermuda",
85 'BN': "Brunei Darussalam", 82 'BN': "Brunei Darussalam",
86 'BO': "Bolivia", 83 'BO': "Bolivia",
87 'BR': "Brazil", 84 'BR': "Brazil",
88 'BS': "Bahamas", 85 'BS': "Bahamas",
89 'BT': "Bhutan", 86 'BT': "Bhutan",
90 'BW': "Botswana", 87 'BW': "Botswana",
91 'BY': "Belarus", 88 'BY': "Belarus",
92 'BZ': "Belize", 89 'BZ': "Belize",
93 'CA': "Canada", 90 'CA': "Canada",
94 'CD': "Congo the Democratic Republic of the", 91 'CD': "Congo the Democratic Republic of the",
95 'CF': "Central African Republic", 92 'CF': "Central African Republic",
96 'CH': "Switzerland", 93 'CH': "Switzerland",
97 'CI': "Cote D'ivoire", 94 'CI': "Cote D'ivoire",
98 'CK': "Cook Islands", 95 'CK': "Cook Islands",
99 'CL': "Chile", 96 'CL': "Chile",
100 'CM': "Cameroon", 97 'CM': "Cameroon",
101 'CN': "China", 98 'CN': "China",
102 'CO': "Colombia", 99 'CO': "Colombia",
103 'CR': "Costa Rica", 100 'CR': "Costa Rica",
104 'CS': "Serbia and Montenegro", 101 'CS': "Serbia and Montenegro",
105 'CU': "Cuba", 102 'CU': "Cuba",
106 'CY': "Cyprus", 103 'CY': "Cyprus",
107 'CZ': "Czech Republic", 104 'CZ': "Czech Republic",
108 'DE': "Germany", 105 'DE': "Germany",
109 'DJ': "Djibouti", 106 'DJ': "Djibouti",
110 'DK': "Denmark", 107 'DK': "Denmark",
111 'DO': "Dominican Republic", 108 'DO': "Dominican Republic",
112 'DZ': "Algeria", 109 'DZ': "Algeria",
113 'EC': "Ecuador", 110 'EC': "Ecuador",
114 'EE': "Estonia", 111 'EE': "Estonia",
115 'EG': "Egypt", 112 'EG': "Egypt",
116 'ER': "Eritrea", 113 'ER': "Eritrea",
117 'ES': "Spain", 114 'ES': "Spain",
118 'ET': "Ethiopia", 115 'ET': "Ethiopia",
119 'EU': "European Union", 116 'EU': "European Union",
120 'FI': "Finland", 117 'FI': "Finland",
diff --git a/frontend/gamma/js/Clipperz/PM/Strings/Strings_en-US.js b/frontend/gamma/js/Clipperz/PM/Strings/Strings_en-US.js
index eebdb16..b540633 100644
--- a/frontend/gamma/js/Clipperz/PM/Strings/Strings_en-US.js
+++ b/frontend/gamma/js/Clipperz/PM/Strings/Strings_en-US.js
@@ -1,120 +1,117 @@
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 A M E R I C A N ( en_US ) 28 // E N G L I S H A M E R I C A N ( en_US )
32// 29//
33//============================================================================= 30//=============================================================================
34 31
35Clipperz.PM.Strings.Languages['en-us'] = { 32Clipperz.PM.Strings.Languages['en-us'] = {
36/* 33/*
37 //Login page - description 34 //Login page - description
38'clipperzServiceDescription': "\ 35'clipperzServiceDescription': "\
39 <!-- FIX CSS DONE -->\ 36 <!-- FIX CSS DONE -->\
40 <h2>Keep it to yourself!</h2>\ 37 <h2>Keep it to yourself!</h2>\
41 <ul>\ 38 <ul>\
42 <li>\ 39 <li>\
43 <h3>Clipperz is:</h3>\ 40 <h3>Clipperz is:</h3>\
44 <ul>\ 41 <ul>\
45 <li><p>a secure and simple password manager</p></li>\ 42 <li><p>a secure and simple password manager</p></li>\
46 <li><p>an effective single sign-on solution</p></li>\ 43 <li><p>an effective single sign-on solution</p></li>\
47 <li><p>a digital vault for your personal data</p></li>\ 44 <li><p>a digital vault for your personal data</p></li>\
48 </ul>\ 45 </ul>\
49 </li>\ 46 </li>\
50 <li>\ 47 <li>\
51 <h3>With Clipperz you can:</h3>\ 48 <h3>With Clipperz you can:</h3>\
52 <ul>\ 49 <ul>\
53 <li><p>store and manage your passwords and online credentials</p></li>\ 50 <li><p>store and manage your passwords and online credentials</p></li>\
54 <li><p>login to your web services without entering any username or password</p></li>\ 51 <li><p>login to your web services without entering any username or password</p></li>\
55 <li><p>protect all your sensitive data: codes for burglar alarms, PINs, credit card numbers, …</p></li>\ 52 <li><p>protect all your sensitive data: codes for burglar alarms, PINs, credit card numbers, …</p></li>\
56 <li><p>share secrets with family members and associates (coming soon)</p></li>\ 53 <li><p>share secrets with family members and associates (coming soon)</p></li>\
57 </ul>\ 54 </ul>\
58 </li>\ 55 </li>\
59 <li>\ 56 <li>\
60 <h3>Clipperz benefits:</h3>\ 57 <h3>Clipperz benefits:</h3>\
61 <ul>\ 58 <ul>\
62 <li><p>free and completely anonymous</p></li>\ 59 <li><p>free and completely anonymous</p></li>\
63 <li><p>access it any time from any computer</p></li>\ 60 <li><p>access it any time from any computer</p></li>\
64 <li><p>no software to download and nothing to install</p></li>\ 61 <li><p>no software to download and nothing to install</p></li>\
65 <li><p>avoid keeping secrets on your PC or on paper</p></li>\ 62 <li><p>avoid keeping secrets on your PC or on paper</p></li>\
66 </ul>\ 63 </ul>\
67 </li>\ 64 </li>\
68 <li>\ 65 <li>\
69 <h3>Clipperz security:</h3>\ 66 <h3>Clipperz security:</h3>\
70 <ul>\ 67 <ul>\
71 <li><p>your secrets are locally encrypted by your browser before being uploaded to Clipperz</p></li>\ 68 <li><p>your secrets are locally encrypted by your browser before being uploaded to Clipperz</p></li>\
72 <li><p>the encryption key is a passphrase known only to you</p></li>\ 69 <li><p>the encryption key is a passphrase known only to you</p></li>\
73 <li><p>Clipperz hosts your sensitive data in encrypted form and could never actually access the data in its plain form</p></li>\ 70 <li><p>Clipperz hosts your sensitive data in encrypted form and could never actually access the data in its plain form</p></li>\
74 <li><p>Clipperz is built upon standard encryption schemes, nothing fancies or homemade</p></li>\ 71 <li><p>Clipperz is built upon standard encryption schemes, nothing fancies or homemade</p></li>\
75 <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>\ 72 <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>\
76 </ul>\ 73 </ul>\
77 </li>\ 74 </li>\
78 <li>\ 75 <li>\
79 <a href=\"http://www.clipperz.com\" target=\"_blank\">Learn more</a>\ 76 <a href=\"http://www.clipperz.com\" target=\"_blank\">Learn more</a>\
80 </li>\ 77 </li>\
81 </ul>", 78 </ul>",
82 79
83 80
84 'loginFormTitle': "login with your Clipperz account", 81 'loginFormTitle': "login with your Clipperz account",
85 'loginFormUsernameLabel': "username", 82 'loginFormUsernameLabel': "username",
86 'loginFormPassphraseLabel': "passphrase", 83 'loginFormPassphraseLabel': "passphrase",
87 'loginFormDontHaveAnAccountLabel': "don\'t have an account?", 84 'loginFormDontHaveAnAccountLabel': "don\'t have an account?",
88 'loginFormCreateOneLabel': "create one", 85 'loginFormCreateOneLabel': "create one",
89 'loginFormForgotYourCredentialsLabel': "forgot your credentials?", 86 'loginFormForgotYourCredentialsLabel': "forgot your credentials?",
90 'loginFormAarghThatsBadLabel': "aargh! that\'s bad!", 87 'loginFormAarghThatsBadLabel': "aargh! that\'s bad!",
91 'loginFormAfraidOfMaliciousScriptsLabel': "afraid of malicious scripts?", 88 'loginFormAfraidOfMaliciousScriptsLabel': "afraid of malicious scripts?",
92 'loginFormVerifyTheCodeLabel': "verify the code", 89 'loginFormVerifyTheCodeLabel': "verify the code",
93 'loginFormButtonLabel': "Login", 90 'loginFormButtonLabel': "Login",
94 'loginFormOneTimePasswordCheckboxLabel': "use a one-time passphrase", 91 'loginFormOneTimePasswordCheckboxLabel': "use a one-time passphrase",
95'loginFormOneTimePasswordCheckboxDescription': "", 92'loginFormOneTimePasswordCheckboxDescription': "",
96 93
97// Login page - language selection 94// Login page - language selection
98 'loginPanelSwithLanguageDescription': "<h5>Switch to your preferred language</h5>", 95 'loginPanelSwithLanguageDescription': "<h5>Switch to your preferred language</h5>",
99 96
100// Login page - browser compatibility 97// Login page - browser compatibility
101 '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>", 98 '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>",
102 99
103// Login with OTP - message panel 100// Login with OTP - message panel
104 'OTPloginMessagePanelInitialTitle': "Logging in using a one-time passphrase", 101 'OTPloginMessagePanelInitialTitle': "Logging in using a one-time passphrase",
105 'OTPloginMessagePanelInitialText': "Sending OTP credentials …", 102 'OTPloginMessagePanelInitialText': "Sending OTP credentials …",
106 'OTPloginMessagePanelLoadingTitle': "Logging in using a one-time passphrase", 103 'OTPloginMessagePanelLoadingTitle': "Logging in using a one-time passphrase",
107 'OTPloginMessagePanelLoadingText': "Fetching encrypted authentication data from the server …", 104 'OTPloginMessagePanelLoadingText': "Fetching encrypted authentication data from the server …",
108 'OTPloginMessagePanelProcessingTitle': "Logging in using a one-time passphrase", 105 'OTPloginMessagePanelProcessingTitle': "Logging in using a one-time passphrase",
109 'OTPloginMessagePanelProcessingText': "Local decryption of authentication data", 106 'OTPloginMessagePanelProcessingText': "Local decryption of authentication data",
110 107
111// Regular login - message panel 108// Regular login - message panel
112 'loginMessagePanelInitialTitle': "Logging in …", 109 'loginMessagePanelInitialTitle': "Logging in …",
113 'loginMessagePanelInitialText': "---", 110 'loginMessagePanelInitialText': "---",
114 'loginMessagePanelInitialButtonLabel': "Cancel", 111 'loginMessagePanelInitialButtonLabel': "Cancel",
115 'loginMessagePanelConnectedTitle': "Connected", 112 'loginMessagePanelConnectedTitle': "Connected",
116 'loginMessagePanelConnectedText': "Done", 113 'loginMessagePanelConnectedText': "Done",
117 'loginMessagePanelFailureTitle': "Error", 114 'loginMessagePanelFailureTitle': "Error",
118 'loginMessagePanelFailureText': "Login failed", 115 'loginMessagePanelFailureText': "Login failed",
119 'loginMessagePanelFailureButtonLabel': "Close", 116 'loginMessagePanelFailureButtonLabel': "Close",
120 117
diff --git a/frontend/gamma/js/Clipperz/PM/Toll.js b/frontend/gamma/js/Clipperz/PM/Toll.js
index a533f51..bb31c43 100644
--- a/frontend/gamma/js/Clipperz/PM/Toll.js
+++ b/frontend/gamma/js/Clipperz/PM/Toll.js
@@ -1,120 +1,117 @@
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 args = args || {}; 32 args = args || {};
36 33
37 this._requestType = args.requestType; 34 this._requestType = args.requestType;
38 this._targetValue = args.targetValue; 35 this._targetValue = args.targetValue;
39 this._cost = args.cost; 36 this._cost = args.cost;
40 this._toll = null; 37 this._toll = null;
41 38
42 return this; 39 return this;
43} 40}
44 41
45Clipperz.PM.Toll.prototype = MochiKit.Base.update(null, { 42Clipperz.PM.Toll.prototype = MochiKit.Base.update(null, {
46 43
47 'toString': function() { 44 'toString': function() {
48 return "Clipperz.PM.Toll (" + this.requestType() + ": " + this.cost() + " - " + ((this.toll() == null)? 'UNPAID' : 'PAID') + ")"; 45 return "Clipperz.PM.Toll (" + this.requestType() + ": " + this.cost() + " - " + ((this.toll() == null)? 'UNPAID' : 'PAID') + ")";
49 }, 46 },
50 47
51 //------------------------------------------------------------------------- 48 //-------------------------------------------------------------------------
52 49
53 'requestType': function() { 50 'requestType': function() {
54 return this._requestType; 51 return this._requestType;
55 }, 52 },
56 53
57 //------------------------------------------------------------------------- 54 //-------------------------------------------------------------------------
58 55
59 'targetValue': function() { 56 'targetValue': function() {
60 return this._targetValue; 57 return this._targetValue;
61 }, 58 },
62 59
63 //------------------------------------------------------------------------- 60 //-------------------------------------------------------------------------
64 61
65 'cost': function() { 62 'cost': function() {
66 return this._cost; 63 return this._cost;
67 }, 64 },
68 65
69 //------------------------------------------------------------------------- 66 //-------------------------------------------------------------------------
70 67
71 'toll': function() { 68 'toll': function() {
72 return this._toll; 69 return this._toll;
73 }, 70 },
74 71
75 //------------------------------------------------------------------------- 72 //-------------------------------------------------------------------------
76/* 73/*
77 '__pay': function() { 74 '__pay': function() {
78 varresult; 75 varresult;
79 vartargetData; 76 vartargetData;
80 vartargetMatchSize; 77 vartargetMatchSize;
81 var prefixMatchingBits; 78 var prefixMatchingBits;
82 varpayment; 79 varpayment;
83 var i; 80 var i;
84 81
85 if (this.toll() == null) { 82 if (this.toll() == null) {
86 i = 0; 83 i = 0;
87 targetData = new Clipperz.ByteArray("0x" + this.targetValue()); 84 targetData = new Clipperz.ByteArray("0x" + this.targetValue());
88 targetMatchSize = this.cost(); 85 targetMatchSize = this.cost();
89 86
90 payment = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32); 87 payment = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32);
91 88
92 do { 89 do {
93 varpaymentData; 90 varpaymentData;
94 91
95 //payment = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32); 92 //payment = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32);
96 payment.increment(); 93 payment.increment();
97 paymentData = Clipperz.Crypto.SHA.sha256(payment); 94 paymentData = Clipperz.Crypto.SHA.sha256(payment);
98 // prefixMatchingBits = this.prefixMatchingBits(targetData, paymentData); 95 // prefixMatchingBits = this.prefixMatchingBits(targetData, paymentData);
99 prefixMatchingBits = Clipperz.ByteArray.prefixMatchingBits(targetData, paymentData); 96 prefixMatchingBits = Clipperz.ByteArray.prefixMatchingBits(targetData, paymentData);
100 i++; 97 i++;
101 } while (prefixMatchingBits < targetMatchSize); 98 } while (prefixMatchingBits < targetMatchSize);
102 99
103 this._toll = payment.toHexString().substring(2) 100 this._toll = payment.toHexString().substring(2)
104 } 101 }
105 102
106 return this; 103 return this;
107 }, 104 },
108 */ 105 */
109 //------------------------------------------------------------------------- 106 //-------------------------------------------------------------------------
110 107
111 'innerDeferredPay': function (aTargetValue, aCost, aPayment) { 108 'innerDeferredPay': function (aTargetValue, aCost, aPayment) {
112 var deferredResult; 109 var deferredResult;
113 var result; 110 var result;
114 var payment; 111 var payment;
115 var i; 112 var i;
116 113
117 result = null; 114 result = null;
118 payment = aPayment; 115 payment = aPayment;
119 i = 0; 116 i = 0;
120 117
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/CoverActions/download.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/CoverActions/download.js
index 169946a..25e82ca 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/CoverActions/download.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/CoverActions/download.js
@@ -1,120 +1,117 @@
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 //download.js 27 //download.js
31 //Download 28 //Download
32// 29//
33 //Created by Giulio Cesare Solaroli on 3/15/10 30 //Created by Giulio Cesare Solaroli on 3/15/10
34 //Copyright 2010 Clipperz 31 //Copyright 2010 Clipperz
35 //This code was generated by Opacity. You may use or modify it in any way. 32 //This code was generated by Opacity. You may use or modify it in any way.
36// 33//
37 34
38var kClipperz_PM_UI_Canvas_CoverActions_downloadWidth = 46.0; 35var kClipperz_PM_UI_Canvas_CoverActions_downloadWidth = 46.0;
39var kClipperz_PM_UI_Canvas_CoverActions_downloadHeight = 46.0; 36var kClipperz_PM_UI_Canvas_CoverActions_downloadHeight = 46.0;
40 37
41function Clipperz_PM_UI_Canvas_CoverActions_download(canvas, aColor, aFillColor, aThickness) 38function Clipperz_PM_UI_Canvas_CoverActions_download(canvas, aColor, aFillColor, aThickness)
42{ 39{
43 var context = canvas.getContext("2d"); 40 var context = canvas.getContext("2d");
44 var alignStroke; 41 var alignStroke;
45 var resolution; 42 var resolution;
46 var stroke; 43 var stroke;
47 var path; 44 var path;
48 var pointX; 45 var pointX;
49 var pointY; 46 var pointY;
50 if (window.devicePixelRatio) 47 if (window.devicePixelRatio)
51 resolution = window.devicePixelRatio; 48 resolution = window.devicePixelRatio;
52 else 49 else
53 resolution = 1.0; 50 resolution = 1.0;
54 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_CoverActions_downloadWidth + canvas.height / kClipperz_PM_UI_Canvas_CoverActions_downloadHeight); 51 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_CoverActions_downloadWidth + canvas.height / kClipperz_PM_UI_Canvas_CoverActions_downloadHeight);
55 52
56 context.save(); 53 context.save();
57 context.scale(canvas.width / kClipperz_PM_UI_Canvas_CoverActions_downloadWidth, canvas.height / kClipperz_PM_UI_Canvas_CoverActions_downloadHeight); 54 context.scale(canvas.width / kClipperz_PM_UI_Canvas_CoverActions_downloadWidth, canvas.height / kClipperz_PM_UI_Canvas_CoverActions_downloadHeight);
58 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_CoverActions_downloadWidth, kClipperz_PM_UI_Canvas_CoverActions_downloadHeight); 55 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_CoverActions_downloadWidth, kClipperz_PM_UI_Canvas_CoverActions_downloadHeight);
59 56
60 // arrow 57 // arrow
61 58
62 stroke = aThickness; 59 stroke = aThickness;
63 stroke *= resolution; 60 stroke *= resolution;
64 if (stroke < 1.0) 61 if (stroke < 1.0)
65 stroke = Math.ceil(stroke); 62 stroke = Math.ceil(stroke);
66 else 63 else
67 stroke = Math.round(stroke); 64 stroke = Math.round(stroke);
68 stroke /= resolution; 65 stroke /= resolution;
69 alignStroke = (0.5 * stroke * resolution) % 1.0; 66 alignStroke = (0.5 * stroke * resolution) % 1.0;
70 context.beginPath(); 67 context.beginPath();
71 pointX = 16.5; 68 pointX = 16.5;
72 pointY = 22.5; 69 pointY = 22.5;
73 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 70 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
74 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 71 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
75 context.moveTo(pointX, pointY); 72 context.moveTo(pointX, pointY);
76 pointX = 19.5; 73 pointX = 19.5;
77 pointY = 8.5; 74 pointY = 8.5;
78 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 75 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
79 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 76 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
80 context.lineTo(pointX, pointY); 77 context.lineTo(pointX, pointY);
81 pointX = 30.038; 78 pointX = 30.038;
82 pointY = 10.605; 79 pointY = 10.605;
83 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 80 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
84 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 81 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
85 context.lineTo(pointX, pointY); 82 context.lineTo(pointX, pointY);
86 pointX = 27.354; 83 pointX = 27.354;
87 pointY = 24.354; 84 pointY = 24.354;
88 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 85 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
89 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 86 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
90 context.lineTo(pointX, pointY); 87 context.lineTo(pointX, pointY);
91 pointX = 33.28; 88 pointX = 33.28;
92 pointY = 25.293; 89 pointY = 25.293;
93 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 90 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
94 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 91 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
95 context.lineTo(pointX, pointY); 92 context.lineTo(pointX, pointY);
96 pointX = 19.81; 93 pointX = 19.81;
97 pointY = 36.828; 94 pointY = 36.828;
98 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 95 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
99 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 96 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
100 context.lineTo(pointX, pointY); 97 context.lineTo(pointX, pointY);
101 pointX = 10.07; 98 pointX = 10.07;
102 pointY = 21.617; 99 pointY = 21.617;
103 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 100 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
104 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 101 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
105 context.lineTo(pointX, pointY); 102 context.lineTo(pointX, pointY);
106 pointX = 16.5; 103 pointX = 16.5;
107 pointY = 22.5; 104 pointY = 22.5;
108 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 105 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
109 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 106 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
110 context.lineTo(pointX, pointY); 107 context.lineTo(pointX, pointY);
111 context.closePath(); 108 context.closePath();
112 context.fillStyle = aFillColor; 109 context.fillStyle = aFillColor;
113 context.fill(); 110 context.fill();
114 context.strokeStyle = aColor; 111 context.strokeStyle = aColor;
115 context.lineWidth = stroke; 112 context.lineWidth = stroke;
116 context.lineCap = "square"; 113 context.lineCap = "square";
117 context.stroke(); 114 context.stroke();
118 115
119 context.restore(); 116 context.restore();
120} 117}
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/CoverActions/look.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/CoverActions/look.js
index b8e535b..ba425ec 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/CoverActions/look.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/CoverActions/look.js
@@ -1,120 +1,117 @@
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 //look.js 27 //look.js
31 //Look 28 //Look
32// 29//
33 //Created by Giulio Cesare Solaroli on 3/15/10 30 //Created by Giulio Cesare Solaroli on 3/15/10
34 //Copyright 2010 Clipperz 31 //Copyright 2010 Clipperz
35 //This code was generated by Opacity. You may use or modify it in any way. 32 //This code was generated by Opacity. You may use or modify it in any way.
36// 33//
37 34
38var kClipperz_PM_UI_Canvas_CoverActions_lookWidth = 46.0; 35var kClipperz_PM_UI_Canvas_CoverActions_lookWidth = 46.0;
39var kClipperz_PM_UI_Canvas_CoverActions_lookHeight = 46.0; 36var kClipperz_PM_UI_Canvas_CoverActions_lookHeight = 46.0;
40 37
41function Clipperz_PM_UI_Canvas_CoverActions_look(canvas, aColor, aFillColor, aThickness) 38function Clipperz_PM_UI_Canvas_CoverActions_look(canvas, aColor, aFillColor, aThickness)
42{ 39{
43 var context = canvas.getContext("2d"); 40 var context = canvas.getContext("2d");
44 var alignStroke; 41 var alignStroke;
45 var resolution; 42 var resolution;
46 var stroke; 43 var stroke;
47 var path; 44 var path;
48 var pointX; 45 var pointX;
49 var pointY; 46 var pointY;
50 if (window.devicePixelRatio) 47 if (window.devicePixelRatio)
51 resolution = window.devicePixelRatio; 48 resolution = window.devicePixelRatio;
52 else 49 else
53 resolution = 1.0; 50 resolution = 1.0;
54 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_CoverActions_lookWidth + canvas.height / kClipperz_PM_UI_Canvas_CoverActions_lookHeight); 51 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_CoverActions_lookWidth + canvas.height / kClipperz_PM_UI_Canvas_CoverActions_lookHeight);
55 52
56 context.save(); 53 context.save();
57 context.scale(canvas.width / kClipperz_PM_UI_Canvas_CoverActions_lookWidth, canvas.height / kClipperz_PM_UI_Canvas_CoverActions_lookHeight); 54 context.scale(canvas.width / kClipperz_PM_UI_Canvas_CoverActions_lookWidth, canvas.height / kClipperz_PM_UI_Canvas_CoverActions_lookHeight);
58 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_CoverActions_lookWidth, kClipperz_PM_UI_Canvas_CoverActions_lookHeight); 55 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_CoverActions_lookWidth, kClipperz_PM_UI_Canvas_CoverActions_lookHeight);
59 56
60 // Layer 6 57 // Layer 6
61 58
62 stroke = aThickness; 59 stroke = aThickness;
63 stroke *= resolution; 60 stroke *= resolution;
64 if (stroke < 1.0) 61 if (stroke < 1.0)
65 stroke = Math.ceil(stroke); 62 stroke = Math.ceil(stroke);
66 else 63 else
67 stroke = Math.round(stroke); 64 stroke = Math.round(stroke);
68 stroke /= resolution; 65 stroke /= resolution;
69 alignStroke = (0.5 * stroke * resolution) % 1.0; 66 alignStroke = (0.5 * stroke * resolution) % 1.0;
70 context.save(); 67 context.save();
71 context.translate(17.5, 23.0); 68 context.translate(17.5, 23.0);
72 context.rotate(-0.503); 69 context.rotate(-0.503);
73 context.translate(-17.5, -23.0); 70 context.translate(-17.5, -23.0);
74 context.beginPath(); 71 context.beginPath();
75 pointX = 28.5; 72 pointX = 28.5;
76 pointY = 31.5; 73 pointY = 31.5;
77 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 74 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
78 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 75 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
79 context.moveTo(pointX, pointY); 76 context.moveTo(pointX, pointY);
80 pointX = 28.5; 77 pointX = 28.5;
81 pointY = 14.5; 78 pointY = 14.5;
82 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 79 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
83 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 80 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
84 context.lineTo(pointX, pointY); 81 context.lineTo(pointX, pointY);
85 pointX = 6.5; 82 pointX = 6.5;
86 pointY = 14.5; 83 pointY = 14.5;
87 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 84 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
88 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 85 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
89 context.lineTo(pointX, pointY); 86 context.lineTo(pointX, pointY);
90 pointX = 6.5; 87 pointX = 6.5;
91 pointY = 31.5; 88 pointY = 31.5;
92 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 89 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
93 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 90 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
94 context.lineTo(pointX, pointY); 91 context.lineTo(pointX, pointY);
95 pointX = 28.5; 92 pointX = 28.5;
96 pointY = 31.5; 93 pointY = 31.5;
97 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 94 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
98 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 95 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
99 context.lineTo(pointX, pointY); 96 context.lineTo(pointX, pointY);
100 context.closePath(); 97 context.closePath();
101 context.fillStyle = aFillColor; 98 context.fillStyle = aFillColor;
102 context.fill(); 99 context.fill();
103 context.strokeStyle = aColor; 100 context.strokeStyle = aColor;
104 context.lineWidth = stroke; 101 context.lineWidth = stroke;
105 context.lineCap = "square"; 102 context.lineCap = "square";
106 context.stroke(); 103 context.stroke();
107 context.restore(); 104 context.restore();
108 105
109 // Layer 3 106 // Layer 3
110 107
111 stroke = aThickness; 108 stroke = aThickness;
112 stroke *= resolution; 109 stroke *= resolution;
113 if (stroke < 1.0) 110 if (stroke < 1.0)
114 stroke = Math.ceil(stroke); 111 stroke = Math.ceil(stroke);
115 else 112 else
116 stroke = Math.round(stroke); 113 stroke = Math.round(stroke);
117 stroke /= resolution; 114 stroke /= resolution;
118 alignStroke = (0.5 * stroke * resolution) % 1.0; 115 alignStroke = (0.5 * stroke * resolution) % 1.0;
119 context.save(); 116 context.save();
120 context.translate(22.5, 20.0); 117 context.translate(22.5, 20.0);
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/directLogin.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/directLogin.js
index 9c4e5ba..5c1f860 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/directLogin.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/directLogin.js
@@ -1,120 +1,117 @@
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 //directLogin.js 27 //directLogin.js
31 //directLogin 28 //directLogin
32// 29//
33 //Created by Giulio Cesare Solaroli on 3/7/10 30 //Created by Giulio Cesare Solaroli on 3/7/10
34 //Copyright 2010 Clipperz 31 //Copyright 2010 Clipperz
35 //This code was generated by Opacity. You may use or modify it in any way. 32 //This code was generated by Opacity. You may use or modify it in any way.
36// 33//
37 34
38var kClipperz_PM_UI_Canvas_Features_directLoginWidth = 76.0; 35var kClipperz_PM_UI_Canvas_Features_directLoginWidth = 76.0;
39var kClipperz_PM_UI_Canvas_Features_directLoginHeight = 76.0; 36var kClipperz_PM_UI_Canvas_Features_directLoginHeight = 76.0;
40 37
41function Clipperz_PM_UI_Canvas_Features_directLogin(canvas, aColor, aBannerColor, aBannerBackgroundColor) 38function Clipperz_PM_UI_Canvas_Features_directLogin(canvas, aColor, aBannerColor, aBannerBackgroundColor)
42{ 39{
43 var context = canvas.getContext("2d"); 40 var context = canvas.getContext("2d");
44 var alignStroke; 41 var alignStroke;
45 var resolution; 42 var resolution;
46 var stroke; 43 var stroke;
47 var path; 44 var path;
48 var pointX; 45 var pointX;
49 var pointY; 46 var pointY;
50 if (window.devicePixelRatio) 47 if (window.devicePixelRatio)
51 resolution = window.devicePixelRatio; 48 resolution = window.devicePixelRatio;
52 else 49 else
53 resolution = 1.0; 50 resolution = 1.0;
54 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Features_directLoginWidth + canvas.height / kClipperz_PM_UI_Canvas_Features_directLoginHeight); 51 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Features_directLoginWidth + canvas.height / kClipperz_PM_UI_Canvas_Features_directLoginHeight);
55 52
56 context.save(); 53 context.save();
57 context.scale(canvas.width / kClipperz_PM_UI_Canvas_Features_directLoginWidth, canvas.height / kClipperz_PM_UI_Canvas_Features_directLoginHeight); 54 context.scale(canvas.width / kClipperz_PM_UI_Canvas_Features_directLoginWidth, canvas.height / kClipperz_PM_UI_Canvas_Features_directLoginHeight);
58 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Features_directLoginWidth, kClipperz_PM_UI_Canvas_Features_directLoginHeight); 55 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Features_directLoginWidth, kClipperz_PM_UI_Canvas_Features_directLoginHeight);
59 56
60 // Layer 2 57 // Layer 2
61 58
62 stroke = 6.0; 59 stroke = 6.0;
63 stroke *= resolution; 60 stroke *= resolution;
64 if (stroke < 1.0) 61 if (stroke < 1.0)
65 stroke = Math.ceil(stroke); 62 stroke = Math.ceil(stroke);
66 else 63 else
67 stroke = Math.round(stroke); 64 stroke = Math.round(stroke);
68 stroke /= resolution; 65 stroke /= resolution;
69 alignStroke = (0.5 * stroke * resolution) % 1.0; 66 alignStroke = (0.5 * stroke * resolution) % 1.0;
70 context.beginPath(); 67 context.beginPath();
71 pointX = 30.0; 68 pointX = 30.0;
72 pointY = 41.0; 69 pointY = 41.0;
73 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 70 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
74 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 71 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
75 context.moveTo(pointX, pointY); 72 context.moveTo(pointX, pointY);
76 pointX = 45.579; 73 pointX = 45.579;
77 pointY = 25.451; 74 pointY = 25.451;
78 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 75 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
79 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 76 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
80 context.lineTo(pointX, pointY); 77 context.lineTo(pointX, pointY);
81 context.strokeStyle = aColor; 78 context.strokeStyle = aColor;
82 context.lineWidth = stroke; 79 context.lineWidth = stroke;
83 context.lineCap = "square"; 80 context.lineCap = "square";
84 context.stroke(); 81 context.stroke();
85 82
86 alignStroke = 0.0; 83 alignStroke = 0.0;
87 context.beginPath(); 84 context.beginPath();
88 pointX = 34.207; 85 pointX = 34.207;
89 pointY = 45.697; 86 pointY = 45.697;
90 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 87 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
91 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 88 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
92 context.moveTo(pointX, pointY); 89 context.moveTo(pointX, pointY);
93 pointX = 24.101; 90 pointX = 24.101;
94 pointY = 37.52; 91 pointY = 37.52;
95 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 92 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
96 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 93 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
97 context.lineTo(pointX, pointY); 94 context.lineTo(pointX, pointY);
98 pointX = 24.122; 95 pointX = 24.122;
99 pointY = 47.828; 96 pointY = 47.828;
100 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 97 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
101 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 98 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
102 context.lineTo(pointX, pointY); 99 context.lineTo(pointX, pointY);
103 pointX = 34.207; 100 pointX = 34.207;
104 pointY = 45.697; 101 pointY = 45.697;
105 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 102 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
106 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 103 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
107 context.lineTo(pointX, pointY); 104 context.lineTo(pointX, pointY);
108 context.closePath(); 105 context.closePath();
109 context.fillStyle = aColor; 106 context.fillStyle = aColor;
110 context.fill(); 107 context.fill();
111 108
112 stroke = 6.0; 109 stroke = 6.0;
113 stroke *= resolution; 110 stroke *= resolution;
114 if (stroke < 1.0) 111 if (stroke < 1.0)
115 stroke = Math.ceil(stroke); 112 stroke = Math.ceil(stroke);
116 else 113 else
117 stroke = Math.round(stroke); 114 stroke = Math.round(stroke);
118 stroke /= resolution; 115 stroke /= resolution;
119 alignStroke = (0.5 * stroke * resolution) % 1.0; 116 alignStroke = (0.5 * stroke * resolution) % 1.0;
120 context.beginPath(); 117 context.beginPath();
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/protect.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/protect.js
index 501b69b..b829ed6 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/protect.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/protect.js
@@ -1,120 +1,117 @@
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 //protect.js 27 //protect.js
31 //protect 28 //protect
32// 29//
33 //Created by Giulio Cesare Solaroli on 3/7/10 30 //Created by Giulio Cesare Solaroli on 3/7/10
34 //Copyright 2010 Clipperz 31 //Copyright 2010 Clipperz
35 //This code was generated by Opacity. You may use or modify it in any way. 32 //This code was generated by Opacity. You may use or modify it in any way.
36// 33//
37 34
38var kClipperz_PM_UI_Canvas_Features_protectWidth = 76.0; 35var kClipperz_PM_UI_Canvas_Features_protectWidth = 76.0;
39var kClipperz_PM_UI_Canvas_Features_protectHeight = 76.0; 36var kClipperz_PM_UI_Canvas_Features_protectHeight = 76.0;
40 37
41function Clipperz_PM_UI_Canvas_Features_protect(canvas, aColor, aBannerColor, aBannerBackgroundColor) 38function Clipperz_PM_UI_Canvas_Features_protect(canvas, aColor, aBannerColor, aBannerBackgroundColor)
42{ 39{
43 var context = canvas.getContext("2d"); 40 var context = canvas.getContext("2d");
44 var alignStroke; 41 var alignStroke;
45 var resolution; 42 var resolution;
46 var path; 43 var path;
47 var pointX; 44 var pointX;
48 var pointY; 45 var pointY;
49 var controlPoint1X; 46 var controlPoint1X;
50 var controlPoint1Y; 47 var controlPoint1Y;
51 var controlPoint2X; 48 var controlPoint2X;
52 var controlPoint2Y; 49 var controlPoint2Y;
53 var stroke; 50 var stroke;
54 if (window.devicePixelRatio) 51 if (window.devicePixelRatio)
55 resolution = window.devicePixelRatio; 52 resolution = window.devicePixelRatio;
56 else 53 else
57 resolution = 1.0; 54 resolution = 1.0;
58 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Features_protectWidth + canvas.height / kClipperz_PM_UI_Canvas_Features_protectHeight); 55 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Features_protectWidth + canvas.height / kClipperz_PM_UI_Canvas_Features_protectHeight);
59 56
60 context.save(); 57 context.save();
61 context.scale(canvas.width / kClipperz_PM_UI_Canvas_Features_protectWidth, canvas.height / kClipperz_PM_UI_Canvas_Features_protectHeight); 58 context.scale(canvas.width / kClipperz_PM_UI_Canvas_Features_protectWidth, canvas.height / kClipperz_PM_UI_Canvas_Features_protectHeight);
62 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Features_protectWidth, kClipperz_PM_UI_Canvas_Features_protectHeight); 59 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Features_protectWidth, kClipperz_PM_UI_Canvas_Features_protectHeight);
63 60
64 // Layer 1 61 // Layer 1
65 62
66 alignStroke = 0.0; 63 alignStroke = 0.0;
67 context.beginPath(); 64 context.beginPath();
68 pointX = 38.5; 65 pointX = 38.5;
69 pointY = 36.0; 66 pointY = 36.0;
70 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 67 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
71 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 68 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
72 context.moveTo(pointX, pointY); 69 context.moveTo(pointX, pointY);
73 pointX = 37.068; 70 pointX = 37.068;
74 pointY = 38.816; 71 pointY = 38.816;
75 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 72 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
76 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 73 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
77 controlPoint1X = 37.41; 74 controlPoint1X = 37.41;
78 controlPoint1Y = 36.234; 75 controlPoint1Y = 36.234;
79 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution; 76 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
80 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution; 77 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
81 controlPoint2X = 37.175; 78 controlPoint2X = 37.175;
82 controlPoint2Y = 37.907; 79 controlPoint2Y = 37.907;
83 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution; 80 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
84 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution; 81 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
85 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY); 82 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
86 pointX = 37.031; 83 pointX = 37.031;
87 pointY = 40.802; 84 pointY = 40.802;
88 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 85 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
89 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 86 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
90 controlPoint1X = 36.991; 87 controlPoint1X = 36.991;
91 controlPoint1Y = 39.474; 88 controlPoint1Y = 39.474;
92 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution; 89 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
93 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution; 90 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
94 controlPoint2X = 36.98; 91 controlPoint2X = 36.98;
95 controlPoint2Y = 40.141; 92 controlPoint2Y = 40.141;
96 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution; 93 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
97 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution; 94 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
98 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY); 95 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
99 pointX = 37.258; 96 pointX = 37.258;
100 pointY = 42.23; 97 pointY = 42.23;
101 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 98 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
102 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 99 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
103 controlPoint1X = 37.068; 100 controlPoint1X = 37.068;
104 controlPoint1Y = 41.283; 101 controlPoint1Y = 41.283;
105 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution; 102 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
106 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution; 103 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
107 controlPoint2X = 37.139; 104 controlPoint2X = 37.139;
108 controlPoint2Y = 41.762; 105 controlPoint2Y = 41.762;
109 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution; 106 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
110 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution; 107 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
111 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY); 108 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
112 pointX = 38.348; 109 pointX = 38.348;
113 pointY = 43.979; 110 pointY = 43.979;
114 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 111 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
115 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 112 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
116 controlPoint1X = 37.402; 113 controlPoint1X = 37.402;
117 controlPoint1Y = 42.799; 114 controlPoint1Y = 42.799;
118 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution; 115 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
119 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution; 116 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
120 controlPoint2X = 37.682; 117 controlPoint2X = 37.682;
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/share.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/share.js
index 825a17e..8d73cc7 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/share.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/share.js
@@ -1,120 +1,117 @@
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 //share.js 27 //share.js
31 //share 28 //share
32// 29//
33 //Created by Giulio Cesare Solaroli on 3/7/10 30 //Created by Giulio Cesare Solaroli on 3/7/10
34 //Copyright 2010 Clipperz 31 //Copyright 2010 Clipperz
35 //This code was generated by Opacity. You may use or modify it in any way. 32 //This code was generated by Opacity. You may use or modify it in any way.
36// 33//
37 34
38var kClipperz_PM_UI_Canvas_Features_shareWidth = 76.0; 35var kClipperz_PM_UI_Canvas_Features_shareWidth = 76.0;
39var kClipperz_PM_UI_Canvas_Features_shareHeight = 76.0; 36var kClipperz_PM_UI_Canvas_Features_shareHeight = 76.0;
40 37
41function Clipperz_PM_UI_Canvas_Features_share(canvas, aColor, aBannerColor, aBannerBackgroundColor) 38function Clipperz_PM_UI_Canvas_Features_share(canvas, aColor, aBannerColor, aBannerBackgroundColor)
42{ 39{
43 var context = canvas.getContext("2d"); 40 var context = canvas.getContext("2d");
44 var alignStroke; 41 var alignStroke;
45 var resolution; 42 var resolution;
46 var path; 43 var path;
47 var pointX; 44 var pointX;
48 var pointY; 45 var pointY;
49 var controlPoint1X; 46 var controlPoint1X;
50 var controlPoint1Y; 47 var controlPoint1Y;
51 var controlPoint2X; 48 var controlPoint2X;
52 var controlPoint2Y; 49 var controlPoint2Y;
53 var stroke; 50 var stroke;
54 if (window.devicePixelRatio) 51 if (window.devicePixelRatio)
55 resolution = window.devicePixelRatio; 52 resolution = window.devicePixelRatio;
56 else 53 else
57 resolution = 1.0; 54 resolution = 1.0;
58 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Features_shareWidth + canvas.height / kClipperz_PM_UI_Canvas_Features_shareHeight); 55 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Features_shareWidth + canvas.height / kClipperz_PM_UI_Canvas_Features_shareHeight);
59 56
60 context.save(); 57 context.save();
61 context.scale(canvas.width / kClipperz_PM_UI_Canvas_Features_shareWidth, canvas.height / kClipperz_PM_UI_Canvas_Features_shareHeight); 58 context.scale(canvas.width / kClipperz_PM_UI_Canvas_Features_shareWidth, canvas.height / kClipperz_PM_UI_Canvas_Features_shareHeight);
62 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Features_shareWidth, kClipperz_PM_UI_Canvas_Features_shareHeight); 59 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Features_shareWidth, kClipperz_PM_UI_Canvas_Features_shareHeight);
63 60
64 // Layer 1 61 // Layer 1
65 62
66 alignStroke = 0.0; 63 alignStroke = 0.0;
67 context.beginPath(); 64 context.beginPath();
68 pointX = 43.179; 65 pointX = 43.179;
69 pointY = 18.621; 66 pointY = 18.621;
70 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 67 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
71 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 68 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
72 context.moveTo(pointX, pointY); 69 context.moveTo(pointX, pointY);
73 pointX = 37.163; 70 pointX = 37.163;
74 pointY = 12.605; 71 pointY = 12.605;
75 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 72 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
76 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 73 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
77 controlPoint1X = 43.179; 74 controlPoint1X = 43.179;
78 controlPoint1Y = 15.32; 75 controlPoint1Y = 15.32;
79 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution; 76 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
80 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution; 77 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
81 controlPoint2X = 40.463; 78 controlPoint2X = 40.463;
82 controlPoint2Y = 12.605; 79 controlPoint2Y = 12.605;
83 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution; 80 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
84 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution; 81 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
85 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY); 82 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
86 pointX = 31.147; 83 pointX = 31.147;
87 pointY = 18.621; 84 pointY = 18.621;
88 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 85 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
89 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 86 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
90 controlPoint1X = 33.863; 87 controlPoint1X = 33.863;
91 controlPoint1Y = 12.605; 88 controlPoint1Y = 12.605;
92 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution; 89 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
93 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution; 90 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
94 controlPoint2X = 31.147; 91 controlPoint2X = 31.147;
95 controlPoint2Y = 15.32; 92 controlPoint2Y = 15.32;
96 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution; 93 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
97 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution; 94 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
98 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY); 95 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
99 pointX = 37.163; 96 pointX = 37.163;
100 pointY = 24.637; 97 pointY = 24.637;
101 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 98 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
102 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 99 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
103 controlPoint1X = 31.147; 100 controlPoint1X = 31.147;
104 controlPoint1Y = 21.921; 101 controlPoint1Y = 21.921;
105 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution; 102 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
106 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution; 103 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
107 controlPoint2X = 33.863; 104 controlPoint2X = 33.863;
108 controlPoint2Y = 24.637; 105 controlPoint2Y = 24.637;
109 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution; 106 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
110 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution; 107 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
111 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY); 108 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
112 pointX = 43.179; 109 pointX = 43.179;
113 pointY = 18.621; 110 pointY = 18.621;
114 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 111 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
115 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 112 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
116 controlPoint1X = 40.463; 113 controlPoint1X = 40.463;
117 controlPoint1Y = 24.637; 114 controlPoint1Y = 24.637;
118 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution; 115 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
119 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution; 116 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
120 controlPoint2X = 43.179; 117 controlPoint2X = 43.179;
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/store.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/store.js
index eaeb7f1..572d9be 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/store.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Features/store.js
@@ -1,120 +1,117 @@
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 //store.js 27 //store.js
31 //store 28 //store
32// 29//
33 //Created by Giulio Cesare Solaroli on 3/7/10 30 //Created by Giulio Cesare Solaroli on 3/7/10
34 //Copyright 2010 Clipperz 31 //Copyright 2010 Clipperz
35 //This code was generated by Opacity. You may use or modify it in any way. 32 //This code was generated by Opacity. You may use or modify it in any way.
36// 33//
37 34
38var kClipperz_PM_UI_Canvas_Features_storeWidth = 76.0; 35var kClipperz_PM_UI_Canvas_Features_storeWidth = 76.0;
39var kClipperz_PM_UI_Canvas_Features_storeHeight = 76.0; 36var kClipperz_PM_UI_Canvas_Features_storeHeight = 76.0;
40 37
41function Clipperz_PM_UI_Canvas_Features_store(canvas, aColor, aBannerColor, aBannerBackgroundColor) 38function Clipperz_PM_UI_Canvas_Features_store(canvas, aColor, aBannerColor, aBannerBackgroundColor)
42{ 39{
43 var context = canvas.getContext("2d"); 40 var context = canvas.getContext("2d");
44 var alignStroke; 41 var alignStroke;
45 var resolution; 42 var resolution;
46 var path; 43 var path;
47 var pointX; 44 var pointX;
48 var pointY; 45 var pointY;
49 if (window.devicePixelRatio) 46 if (window.devicePixelRatio)
50 resolution = window.devicePixelRatio; 47 resolution = window.devicePixelRatio;
51 else 48 else
52 resolution = 1.0; 49 resolution = 1.0;
53 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Features_storeWidth + canvas.height / kClipperz_PM_UI_Canvas_Features_storeHeight); 50 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Features_storeWidth + canvas.height / kClipperz_PM_UI_Canvas_Features_storeHeight);
54 51
55 context.save(); 52 context.save();
56 context.scale(canvas.width / kClipperz_PM_UI_Canvas_Features_storeWidth, canvas.height / kClipperz_PM_UI_Canvas_Features_storeHeight); 53 context.scale(canvas.width / kClipperz_PM_UI_Canvas_Features_storeWidth, canvas.height / kClipperz_PM_UI_Canvas_Features_storeHeight);
57 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Features_storeWidth, kClipperz_PM_UI_Canvas_Features_storeHeight); 54 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Features_storeWidth, kClipperz_PM_UI_Canvas_Features_storeHeight);
58 55
59 // Layer 1 56 // Layer 1
60 57
61 alignStroke = 0.0; 58 alignStroke = 0.0;
62 context.beginPath(); 59 context.beginPath();
63 pointX = 27.0; 60 pointX = 27.0;
64 pointY = 29.5; 61 pointY = 29.5;
65 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 62 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
66 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 63 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
67 context.moveTo(pointX, pointY); 64 context.moveTo(pointX, pointY);
68 pointX = 27.0; 65 pointX = 27.0;
69 pointY = 24.5; 66 pointY = 24.5;
70 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 67 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
71 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 68 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
72 context.lineTo(pointX, pointY); 69 context.lineTo(pointX, pointY);
73 pointX = 22.0; 70 pointX = 22.0;
74 pointY = 24.5; 71 pointY = 24.5;
75 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 72 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
76 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 73 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
77 context.lineTo(pointX, pointY); 74 context.lineTo(pointX, pointY);
78 pointX = 22.0; 75 pointX = 22.0;
79 pointY = 29.5; 76 pointY = 29.5;
80 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 77 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
81 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 78 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
82 context.lineTo(pointX, pointY); 79 context.lineTo(pointX, pointY);
83 pointX = 27.0; 80 pointX = 27.0;
84 pointY = 29.5; 81 pointY = 29.5;
85 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 82 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
86 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 83 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
87 context.lineTo(pointX, pointY); 84 context.lineTo(pointX, pointY);
88 context.closePath(); 85 context.closePath();
89 context.fillStyle = aColor; 86 context.fillStyle = aColor;
90 context.fill(); 87 context.fill();
91 88
92 alignStroke = 0.0; 89 alignStroke = 0.0;
93 context.beginPath(); 90 context.beginPath();
94 pointX = 54.0; 91 pointX = 54.0;
95 pointY = 29.5; 92 pointY = 29.5;
96 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 93 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
97 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 94 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
98 context.moveTo(pointX, pointY); 95 context.moveTo(pointX, pointY);
99 pointX = 54.0; 96 pointX = 54.0;
100 pointY = 24.5; 97 pointY = 24.5;
101 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 98 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
102 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 99 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
103 context.lineTo(pointX, pointY); 100 context.lineTo(pointX, pointY);
104 pointX = 29.0; 101 pointX = 29.0;
105 pointY = 24.5; 102 pointY = 24.5;
106 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 103 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
107 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 104 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
108 context.lineTo(pointX, pointY); 105 context.lineTo(pointX, pointY);
109 pointX = 29.0; 106 pointX = 29.0;
110 pointY = 29.5; 107 pointY = 29.5;
111 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 108 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
112 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 109 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
113 context.lineTo(pointX, pointY); 110 context.lineTo(pointX, pointY);
114 pointX = 54.0; 111 pointX = 54.0;
115 pointY = 29.5; 112 pointY = 29.5;
116 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 113 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
117 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 114 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
118 context.lineTo(pointX, pointY); 115 context.lineTo(pointX, pointY);
119 context.closePath(); 116 context.closePath();
120 context.fillStyle = aColor; 117 context.fillStyle = aColor;
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/GraphicFunctions.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/GraphicFunctions.js
index 5de2e96..b9443bd 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/GraphicFunctions.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/GraphicFunctions.js
@@ -1,68 +1,65 @@
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.Base.module('Clipperz.PM.UI.Canvas'); 26Clipperz.Base.module('Clipperz.PM.UI.Canvas');
30 27
31MochiKit.Base.update(Clipperz.PM.UI.Canvas , { 28MochiKit.Base.update(Clipperz.PM.UI.Canvas , {
32 'marks': { 29 'marks': {
33 '!':Clipperz_PM_UI_Canvas_Marks_exclamationMark, 30 '!':Clipperz_PM_UI_Canvas_Marks_exclamationMark,
34 '?':Clipperz_PM_UI_Canvas_Marks_questionMark, 31 '?':Clipperz_PM_UI_Canvas_Marks_questionMark,
35 'i':Clipperz_PM_UI_Canvas_Marks_info 32 'i':Clipperz_PM_UI_Canvas_Marks_info
36 }, 33 },
37 34
38 'features': { 35 'features': {
39 'store': Clipperz_PM_UI_Canvas_Features_store, 36 'store': Clipperz_PM_UI_Canvas_Features_store,
40 'protect': Clipperz_PM_UI_Canvas_Features_protect, 37 'protect': Clipperz_PM_UI_Canvas_Features_protect,
41 'directLogin':Clipperz_PM_UI_Canvas_Features_directLogin, 38 'directLogin':Clipperz_PM_UI_Canvas_Features_directLogin,
42 'share': Clipperz_PM_UI_Canvas_Features_share 39 'share': Clipperz_PM_UI_Canvas_Features_share
43 }, 40 },
44 41
45 'tips': { 42 'tips': {
46 'open': Clipperz_PM_UI_Canvas_Tips_open, 43 'open': Clipperz_PM_UI_Canvas_Tips_open,
47 'close': Clipperz_PM_UI_Canvas_Tips_close 44 'close': Clipperz_PM_UI_Canvas_Tips_close
48 }, 45 },
49 46
50 'star': { 47 'star': {
51 'normal': Clipperz_PM_UI_Canvas_Star_normal 48 'normal': Clipperz_PM_UI_Canvas_Star_normal
52 }, 49 },
53 50
54 'coverActions': { 51 'coverActions': {
55 'look': Clipperz_PM_UI_Canvas_CoverActions_look, 52 'look': Clipperz_PM_UI_Canvas_CoverActions_look,
56 'download': Clipperz_PM_UI_Canvas_CoverActions_download 53 'download': Clipperz_PM_UI_Canvas_CoverActions_download
57 }, 54 },
58 55
59 'registerButton': { 56 'registerButton': {
60 'normal': Clipperz_PM_UI_Canvas_RegisterButton_normal 57 'normal': Clipperz_PM_UI_Canvas_RegisterButton_normal
61 }, 58 },
62 59
63 'logo': { 60 'logo': {
64 'normal': Clipperz_PM_UI_Canvas_Logo_normal 61 'normal': Clipperz_PM_UI_Canvas_Logo_normal
65 }, 62 },
66 63
67 __syntaxFix__: "syntax fix" 64 __syntaxFix__: "syntax fix"
68}); 65});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Logo/normal.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Logo/normal.js
index e0bea36..de9d3aa 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Logo/normal.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Logo/normal.js
@@ -1,65 +1,62 @@
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 //normal.js 27 //normal.js
31 //normal 28 //normal
32// 29//
33 //Created by Giulio Cesare Solaroli on 3/25/10 30 //Created by Giulio Cesare Solaroli on 3/25/10
34 //Copyright 2010 Clipperz 31 //Copyright 2010 Clipperz
35 //This code was generated by Opacity. You may use or modify it in any way. 32 //This code was generated by Opacity. You may use or modify it in any way.
36// 33//
37 34
38var kClipperz_PM_UI_Canvas_Logo_normalWidth = 150.0; 35var kClipperz_PM_UI_Canvas_Logo_normalWidth = 150.0;
39var kClipperz_PM_UI_Canvas_Logo_normalHeight = 39.0; 36var kClipperz_PM_UI_Canvas_Logo_normalHeight = 39.0;
40 37
41function Clipperz_PM_UI_Canvas_Logo_normal(canvas, aMainColor, aSecondaryColor) 38function Clipperz_PM_UI_Canvas_Logo_normal(canvas, aMainColor, aSecondaryColor)
42{ 39{
43 var context = canvas.getContext("2d"); 40 var context = canvas.getContext("2d");
44 var string; 41 var string;
45 42
46 context.save(); 43 context.save();
47 context.scale(canvas.width / kClipperz_PM_UI_Canvas_Logo_normalWidth, canvas.height / kClipperz_PM_UI_Canvas_Logo_normalHeight); 44 context.scale(canvas.width / kClipperz_PM_UI_Canvas_Logo_normalWidth, canvas.height / kClipperz_PM_UI_Canvas_Logo_normalHeight);
48 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Logo_normalWidth, kClipperz_PM_UI_Canvas_Logo_normalHeight); 45 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Logo_normalWidth, kClipperz_PM_UI_Canvas_Logo_normalHeight);
49 46
50 // clipper… 47 // clipper…
51 48
52 string = "clipper"; 49 string = "clipper";
53 context.font = "38.0pt Helvetica-Bold"; 50 context.font = "38.0pt Helvetica-Bold";
54 context.fillStyle = aMainColor; 51 context.fillStyle = aMainColor;
55 context.fillText(string, -9.0, -9.0); 52 context.fillText(string, -9.0, -9.0);
56 53
57 // …z 54 // …z
58 55
59 string = "z"; 56 string = "z";
60 context.font = "38.0pt Helvetica-Bold"; 57 context.font = "38.0pt Helvetica-Bold";
61 context.fillStyle = aSecondaryColor; 58 context.fillStyle = aSecondaryColor;
62 context.fillText(string, 125.0, -9.0); 59 context.fillText(string, 125.0, -9.0);
63 60
64 context.restore(); 61 context.restore();
65} 62}
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/exclamationMark.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/exclamationMark.js
index f3ae04d..02f2f80 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/exclamationMark.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/exclamationMark.js
@@ -1,120 +1,117 @@
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 //exclamationMark.js 27 //exclamationMark.js
31 //! 28 //!
32// 29//
33 //Created by Giulio Cesare Solaroli on 3/7/10 30 //Created by Giulio Cesare Solaroli on 3/7/10
34 //Copyright 2010 Clipperz 31 //Copyright 2010 Clipperz
35 //This code was generated by Opacity. You may use or modify it in any way. 32 //This code was generated by Opacity. You may use or modify it in any way.
36// 33//
37 34
38var kClipperz_PM_UI_Canvas_Marks_exclamationMarkWidth = 50.0; 35var kClipperz_PM_UI_Canvas_Marks_exclamationMarkWidth = 50.0;
39var kClipperz_PM_UI_Canvas_Marks_exclamationMarkHeight = 50.0; 36var kClipperz_PM_UI_Canvas_Marks_exclamationMarkHeight = 50.0;
40 37
41function Clipperz_PM_UI_Canvas_Marks_exclamationMark(canvas, aColor) 38function Clipperz_PM_UI_Canvas_Marks_exclamationMark(canvas, aColor)
42{ 39{
43 var context = canvas.getContext("2d"); 40 var context = canvas.getContext("2d");
44 var alignStroke; 41 var alignStroke;
45 var resolution; 42 var resolution;
46 var path; 43 var path;
47 var pointX; 44 var pointX;
48 var pointY; 45 var pointY;
49 var controlPoint1X; 46 var controlPoint1X;
50 var controlPoint1Y; 47 var controlPoint1Y;
51 var controlPoint2X; 48 var controlPoint2X;
52 var controlPoint2Y; 49 var controlPoint2Y;
53 if (window.devicePixelRatio) 50 if (window.devicePixelRatio)
54 resolution = window.devicePixelRatio; 51 resolution = window.devicePixelRatio;
55 else 52 else
56 resolution = 1.0; 53 resolution = 1.0;
57 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Marks_exclamationMarkWidth + canvas.height / kClipperz_PM_UI_Canvas_Marks_exclamationMarkHeight); 54 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Marks_exclamationMarkWidth + canvas.height / kClipperz_PM_UI_Canvas_Marks_exclamationMarkHeight);
58 55
59 context.save(); 56 context.save();
60 context.scale(canvas.width / kClipperz_PM_UI_Canvas_Marks_exclamationMarkWidth, canvas.height / kClipperz_PM_UI_Canvas_Marks_exclamationMarkHeight); 57 context.scale(canvas.width / kClipperz_PM_UI_Canvas_Marks_exclamationMarkWidth, canvas.height / kClipperz_PM_UI_Canvas_Marks_exclamationMarkHeight);
61 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Marks_exclamationMarkWidth, kClipperz_PM_UI_Canvas_Marks_exclamationMarkHeight); 58 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Marks_exclamationMarkWidth, kClipperz_PM_UI_Canvas_Marks_exclamationMarkHeight);
62 59
63 // Layer 1 60 // Layer 1
64 61
65 alignStroke = 0.0; 62 alignStroke = 0.0;
66 context.beginPath(); 63 context.beginPath();
67 pointX = 26.499; 64 pointX = 26.499;
68 pointY = 10.848; 65 pointY = 10.848;
69 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 66 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
70 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 67 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
71 context.moveTo(pointX, pointY); 68 context.moveTo(pointX, pointY);
72 pointX = 20.887; 69 pointX = 20.887;
73 pointY = 11.584; 70 pointY = 11.584;
74 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 71 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
75 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 72 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
76 controlPoint1X = 25.395; 73 controlPoint1X = 25.395;
77 controlPoint1Y = 10.802; 74 controlPoint1Y = 10.802;
78 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution; 75 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
79 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution; 76 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
80 controlPoint2X = 22.175; 77 controlPoint2X = 22.175;
81 controlPoint2Y = 11.078; 78 controlPoint2Y = 11.078;
82 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution; 79 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
83 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution; 80 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
84 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY); 81 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
85 pointX = 20.013; 82 pointX = 20.013;
86 pointY = 13.194; 83 pointY = 13.194;
87 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 84 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
88 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 85 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
89 controlPoint1X = 20.335; 86 controlPoint1X = 20.335;
90 controlPoint1Y = 11.814; 87 controlPoint1Y = 11.814;
91 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution; 88 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
92 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution; 89 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
93 controlPoint2X = 19.921; 90 controlPoint2X = 19.921;
94 controlPoint2Y = 12.826; 91 controlPoint2Y = 12.826;
95 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution; 92 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
96 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution; 93 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
97 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY); 94 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
98 pointX = 23.049; 95 pointX = 23.049;
99 pointY = 28.788; 96 pointY = 28.788;
100 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 97 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
101 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 98 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
102 controlPoint1X = 20.243; 99 controlPoint1X = 20.243;
103 controlPoint1Y = 15.448; 100 controlPoint1Y = 15.448;
104 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution; 101 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
105 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution; 102 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
106 controlPoint2X = 22.589; 103 controlPoint2X = 22.589;
107 controlPoint2Y = 26.35; 104 controlPoint2Y = 26.35;
108 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution; 105 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
109 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution; 106 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
110 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY); 107 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
111 pointX = 25.027; 108 pointX = 25.027;
112 pointY = 29.156; 109 pointY = 29.156;
113 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 110 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
114 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 111 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
115 controlPoint1X = 23.279; 112 controlPoint1X = 23.279;
116 controlPoint1Y = 29.018; 113 controlPoint1Y = 29.018;
117 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution; 114 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
118 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution; 115 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
119 controlPoint2X = 24.705; 116 controlPoint2X = 24.705;
120 controlPoint2Y = 29.202; 117 controlPoint2Y = 29.202;
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/info.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/info.js
index adab74f..fad5c10 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/info.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/info.js
@@ -1,120 +1,117 @@
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 //info.js 27 //info.js
31 //i 28 //i
32// 29//
33 //Created by Giulio Cesare Solaroli on 3/7/10 30 //Created by Giulio Cesare Solaroli on 3/7/10
34 //Copyright 2010 Clipperz 31 //Copyright 2010 Clipperz
35 //This code was generated by Opacity. You may use or modify it in any way. 32 //This code was generated by Opacity. You may use or modify it in any way.
36// 33//
37 34
38var kClipperz_PM_UI_Canvas_Marks_infoWidth = 50.0; 35var kClipperz_PM_UI_Canvas_Marks_infoWidth = 50.0;
39var kClipperz_PM_UI_Canvas_Marks_infoHeight = 50.0; 36var kClipperz_PM_UI_Canvas_Marks_infoHeight = 50.0;
40 37
41function Clipperz_PM_UI_Canvas_Marks_info(canvas, aColor) 38function Clipperz_PM_UI_Canvas_Marks_info(canvas, aColor)
42{ 39{
43 var context = canvas.getContext("2d"); 40 var context = canvas.getContext("2d");
44 var alignStroke; 41 var alignStroke;
45 var resolution; 42 var resolution;
46 var path; 43 var path;
47 var pointX; 44 var pointX;
48 var pointY; 45 var pointY;
49 var controlPoint1X; 46 var controlPoint1X;
50 var controlPoint1Y; 47 var controlPoint1Y;
51 var controlPoint2X; 48 var controlPoint2X;
52 var controlPoint2Y; 49 var controlPoint2Y;
53 var color; 50 var color;
54 if (window.devicePixelRatio) 51 if (window.devicePixelRatio)
55 resolution = window.devicePixelRatio; 52 resolution = window.devicePixelRatio;
56 else 53 else
57 resolution = 1.0; 54 resolution = 1.0;
58 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Marks_infoWidth + canvas.height / kClipperz_PM_UI_Canvas_Marks_infoHeight); 55 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Marks_infoWidth + canvas.height / kClipperz_PM_UI_Canvas_Marks_infoHeight);
59 56
60 context.save(); 57 context.save();
61 context.scale(canvas.width / kClipperz_PM_UI_Canvas_Marks_infoWidth, canvas.height / kClipperz_PM_UI_Canvas_Marks_infoHeight); 58 context.scale(canvas.width / kClipperz_PM_UI_Canvas_Marks_infoWidth, canvas.height / kClipperz_PM_UI_Canvas_Marks_infoHeight);
62 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Marks_infoWidth, kClipperz_PM_UI_Canvas_Marks_infoHeight); 59 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Marks_infoWidth, kClipperz_PM_UI_Canvas_Marks_infoHeight);
63 60
64 // Layer 1 61 // Layer 1
65 62
66 alignStroke = 0.0; 63 alignStroke = 0.0;
67 context.beginPath(); 64 context.beginPath();
68 pointX = 30.253; 65 pointX = 30.253;
69 pointY = 37.436; 66 pointY = 37.436;
70 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 67 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
71 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 68 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
72 context.moveTo(pointX, pointY); 69 context.moveTo(pointX, pointY);
73 pointX = 28.505; 70 pointX = 28.505;
74 pointY = 37.022; 71 pointY = 37.022;
75 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 72 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
76 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 73 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
77 context.lineTo(pointX, pointY); 74 context.lineTo(pointX, pointY);
78 pointX = 27.677; 75 pointX = 27.677;
79 pointY = 35.09; 76 pointY = 35.09;
80 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 77 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
81 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 78 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
82 controlPoint1X = 27.953; 79 controlPoint1X = 27.953;
83 controlPoint1Y = 36.792; 80 controlPoint1Y = 36.792;
84 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution; 81 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
85 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution; 82 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
86 controlPoint2X = 27.677; 83 controlPoint2X = 27.677;
87 controlPoint2Y = 36.47; 84 controlPoint2Y = 36.47;
88 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution; 85 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
89 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution; 86 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
90 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY); 87 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
91 pointX = 27.631; 88 pointX = 27.631;
92 pointY = 27.546; 89 pointY = 27.546;
93 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 90 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
94 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 91 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
95 controlPoint1X = 27.631; 92 controlPoint1X = 27.631;
96 controlPoint1Y = 32.974; 93 controlPoint1Y = 32.974;
97 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution; 94 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
98 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution; 95 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
99 controlPoint2X = 27.631; 96 controlPoint2X = 27.631;
100 controlPoint2Y = 29.892; 97 controlPoint2Y = 29.892;
101 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution; 98 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
102 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution; 99 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
103 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY); 100 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
104 pointX = 27.677; 101 pointX = 27.677;
105 pointY = 19.726; 102 pointY = 19.726;
106 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 103 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
107 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 104 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
108 controlPoint1X = 27.631; 105 controlPoint1X = 27.631;
109 controlPoint1Y = 24.97; 106 controlPoint1Y = 24.97;
110 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution; 107 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
111 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution; 108 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
112 controlPoint2X = 27.677; 109 controlPoint2X = 27.677;
113 controlPoint2Y = 21.612; 110 controlPoint2Y = 21.612;
114 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution; 111 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
115 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution; 112 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
116 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY); 113 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
117 pointX = 19.535; 114 pointX = 19.535;
118 pointY = 21.336; 115 pointY = 21.336;
119 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 116 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
120 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 117 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/questionMark.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/questionMark.js
index 003c4c2..5842828 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/questionMark.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Marks/questionMark.js
@@ -1,120 +1,117 @@
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 //questionMark.js 27 //questionMark.js
31 //? 28 //?
32// 29//
33 //Created by Giulio Cesare Solaroli on 3/7/10 30 //Created by Giulio Cesare Solaroli on 3/7/10
34 //Copyright 2010 Clipperz 31 //Copyright 2010 Clipperz
35 //This code was generated by Opacity. You may use or modify it in any way. 32 //This code was generated by Opacity. You may use or modify it in any way.
36// 33//
37 34
38var kClipperz_PM_UI_Canvas_Marks_questionMarkWidth = 50.0; 35var kClipperz_PM_UI_Canvas_Marks_questionMarkWidth = 50.0;
39var kClipperz_PM_UI_Canvas_Marks_questionMarkHeight = 50.0; 36var kClipperz_PM_UI_Canvas_Marks_questionMarkHeight = 50.0;
40 37
41function Clipperz_PM_UI_Canvas_Marks_questionMark(canvas, aColor) 38function Clipperz_PM_UI_Canvas_Marks_questionMark(canvas, aColor)
42{ 39{
43 var context = canvas.getContext("2d"); 40 var context = canvas.getContext("2d");
44 var alignStroke; 41 var alignStroke;
45 var resolution; 42 var resolution;
46 var path; 43 var path;
47 var pointX; 44 var pointX;
48 var pointY; 45 var pointY;
49 var controlPoint1X; 46 var controlPoint1X;
50 var controlPoint1Y; 47 var controlPoint1Y;
51 var controlPoint2X; 48 var controlPoint2X;
52 var controlPoint2Y; 49 var controlPoint2Y;
53 var color; 50 var color;
54 if (window.devicePixelRatio) 51 if (window.devicePixelRatio)
55 resolution = window.devicePixelRatio; 52 resolution = window.devicePixelRatio;
56 else 53 else
57 resolution = 1.0; 54 resolution = 1.0;
58 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Marks_questionMarkWidth + canvas.height / kClipperz_PM_UI_Canvas_Marks_questionMarkHeight); 55 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Marks_questionMarkWidth + canvas.height / kClipperz_PM_UI_Canvas_Marks_questionMarkHeight);
59 56
60 context.save(); 57 context.save();
61 context.scale(canvas.width / kClipperz_PM_UI_Canvas_Marks_questionMarkWidth, canvas.height / kClipperz_PM_UI_Canvas_Marks_questionMarkHeight); 58 context.scale(canvas.width / kClipperz_PM_UI_Canvas_Marks_questionMarkWidth, canvas.height / kClipperz_PM_UI_Canvas_Marks_questionMarkHeight);
62 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Marks_questionMarkWidth, kClipperz_PM_UI_Canvas_Marks_questionMarkHeight); 59 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Marks_questionMarkWidth, kClipperz_PM_UI_Canvas_Marks_questionMarkHeight);
63 60
64 // Layer 1 61 // Layer 1
65 62
66 alignStroke = 0.0; 63 alignStroke = 0.0;
67 context.beginPath(); 64 context.beginPath();
68 pointX = 24.118; 65 pointX = 24.118;
69 pointY = 24.464; 66 pointY = 24.464;
70 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 67 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
71 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 68 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
72 context.moveTo(pointX, pointY); 69 context.moveTo(pointX, pointY);
73 pointX = 24.854; 70 pointX = 24.854;
74 pointY = 23.406; 71 pointY = 23.406;
75 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 72 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
76 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 73 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
77 controlPoint1X = 24.118; 74 controlPoint1X = 24.118;
78 controlPoint1Y = 24.05; 75 controlPoint1Y = 24.05;
79 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution; 76 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
80 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution; 77 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
81 controlPoint2X = 24.44; 78 controlPoint2X = 24.44;
82 controlPoint2Y = 23.636; 79 controlPoint2Y = 23.636;
83 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution; 80 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
84 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution; 81 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
85 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY); 82 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
86 pointX = 29.454; 83 pointX = 29.454;
87 pointY = 20.6; 84 pointY = 20.6;
88 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 85 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
89 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 86 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
90 controlPoint1X = 26.418; 87 controlPoint1X = 26.418;
91 controlPoint1Y = 22.532; 88 controlPoint1Y = 22.532;
92 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution; 89 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
93 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution; 90 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
94 controlPoint2X = 28.534; 91 controlPoint2X = 28.534;
95 controlPoint2Y = 21.566; 92 controlPoint2Y = 21.566;
96 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution; 93 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
97 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution; 94 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
98 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY); 95 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
99 pointX = 30.282; 96 pointX = 30.282;
100 pointY = 17.794; 97 pointY = 17.794;
101 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 98 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
102 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 99 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
103 controlPoint1X = 29.868; 100 controlPoint1X = 29.868;
104 controlPoint1Y = 20.232; 101 controlPoint1Y = 20.232;
105 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution; 102 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
106 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution; 103 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
107 controlPoint2X = 30.282; 104 controlPoint2X = 30.282;
108 controlPoint2Y = 19.082; 105 controlPoint2Y = 19.082;
109 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution; 106 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
110 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution; 107 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
111 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY); 108 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
112 pointX = 27.2; 109 pointX = 27.2;
113 pointY = 12.688; 110 pointY = 12.688;
114 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 111 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
115 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 112 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
116 controlPoint1X = 30.282; 113 controlPoint1X = 30.282;
117 controlPoint1Y = 16.322; 114 controlPoint1Y = 16.322;
118 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution; 115 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
119 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution; 116 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
120 controlPoint2X = 29.454; 117 controlPoint2X = 29.454;
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/RegisterButton/normal.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/RegisterButton/normal.js
index 288e0be..2462d0e 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/RegisterButton/normal.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/RegisterButton/normal.js
@@ -1,120 +1,117 @@
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 //normal.js 27 //normal.js
31 //normal 28 //normal
32// 29//
33 //Created by Giulio Cesare Solaroli on 3/24/10 30 //Created by Giulio Cesare Solaroli on 3/24/10
34 //Copyright 2010 Clipperz 31 //Copyright 2010 Clipperz
35 //This code was generated by Opacity. You may use or modify it in any way. 32 //This code was generated by Opacity. You may use or modify it in any way.
36// 33//
37 34
38var kClipperz_PM_UI_Canvas_RegisterButton_normalWidth = 282.0; 35var kClipperz_PM_UI_Canvas_RegisterButton_normalWidth = 282.0;
39var kClipperz_PM_UI_Canvas_RegisterButton_normalHeight = 93.0; 36var kClipperz_PM_UI_Canvas_RegisterButton_normalHeight = 93.0;
40 37
41function Clipperz_PM_UI_Canvas_RegisterButton_normal(canvas, aBackgroundColor, aDarkBackgroundColor, aLightColor, aDarkColor, aStarColor) 38function Clipperz_PM_UI_Canvas_RegisterButton_normal(canvas, aBackgroundColor, aDarkBackgroundColor, aLightColor, aDarkColor, aStarColor)
42{ 39{
43 var context = canvas.getContext("2d"); 40 var context = canvas.getContext("2d");
44 var alignStroke; 41 var alignStroke;
45 var resolution; 42 var resolution;
46 var path; 43 var path;
47 var pointX; 44 var pointX;
48 var pointY; 45 var pointY;
49 var controlPoint1X; 46 var controlPoint1X;
50 var controlPoint1Y; 47 var controlPoint1Y;
51 var controlPoint2X; 48 var controlPoint2X;
52 var controlPoint2Y; 49 var controlPoint2Y;
53 var gradient; 50 var gradient;
54 var color; 51 var color;
55 if (window.devicePixelRatio) 52 if (window.devicePixelRatio)
56 resolution = window.devicePixelRatio; 53 resolution = window.devicePixelRatio;
57 else 54 else
58 resolution = 1.0; 55 resolution = 1.0;
59 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_RegisterButton_normalWidth + canvas.height / kClipperz_PM_UI_Canvas_RegisterButton_normalHeight); 56 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_RegisterButton_normalWidth + canvas.height / kClipperz_PM_UI_Canvas_RegisterButton_normalHeight);
60 57
61 context.save(); 58 context.save();
62 context.scale(canvas.width / kClipperz_PM_UI_Canvas_RegisterButton_normalWidth, canvas.height / kClipperz_PM_UI_Canvas_RegisterButton_normalHeight); 59 context.scale(canvas.width / kClipperz_PM_UI_Canvas_RegisterButton_normalWidth, canvas.height / kClipperz_PM_UI_Canvas_RegisterButton_normalHeight);
63 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_RegisterButton_normalWidth, kClipperz_PM_UI_Canvas_RegisterButton_normalHeight); 60 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_RegisterButton_normalWidth, kClipperz_PM_UI_Canvas_RegisterButton_normalHeight);
64 61
65 // background 62 // background
66 63
67 alignStroke = 0.0; 64 alignStroke = 0.0;
68 context.beginPath(); 65 context.beginPath();
69 pointX = 241.0; 66 pointX = 241.0;
70 pointY = 80.0; 67 pointY = 80.0;
71 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 68 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
72 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 69 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
73 context.moveTo(pointX, pointY); 70 context.moveTo(pointX, pointY);
74 pointX = 274.0; 71 pointX = 274.0;
75 pointY = 47.0; 72 pointY = 47.0;
76 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 73 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
77 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 74 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
78 controlPoint1X = 259.103; 75 controlPoint1X = 259.103;
79 controlPoint1Y = 80.0; 76 controlPoint1Y = 80.0;
80 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution; 77 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
81 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution; 78 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
82 controlPoint2X = 274.0; 79 controlPoint2X = 274.0;
83 controlPoint2Y = 65.103; 80 controlPoint2Y = 65.103;
84 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution; 81 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
85 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution; 82 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
86 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY); 83 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
87 pointX = 274.0; 84 pointX = 274.0;
88 pointY = 45.0; 85 pointY = 45.0;
89 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 86 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
90 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 87 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
91 context.lineTo(pointX, pointY); 88 context.lineTo(pointX, pointY);
92 pointX = 241.0; 89 pointX = 241.0;
93 pointY = 12.0; 90 pointY = 12.0;
94 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 91 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
95 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 92 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
96 controlPoint1X = 274.0; 93 controlPoint1X = 274.0;
97 controlPoint1Y = 26.897; 94 controlPoint1Y = 26.897;
98 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution; 95 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
99 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution; 96 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
100 controlPoint2X = 259.103; 97 controlPoint2X = 259.103;
101 controlPoint2Y = 12.0; 98 controlPoint2Y = 12.0;
102 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution; 99 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
103 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution; 100 controlPoint2Y = (Math.round(resolution * controlPoint2Y + alignStroke) - alignStroke) / resolution;
104 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY); 101 context.bezierCurveTo(controlPoint1X, controlPoint1Y, controlPoint2X, controlPoint2Y, pointX, pointY);
105 pointX = 60.0; 102 pointX = 60.0;
106 pointY = 12.0; 103 pointY = 12.0;
107 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 104 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
108 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 105 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
109 context.lineTo(pointX, pointY); 106 context.lineTo(pointX, pointY);
110 pointX = 27.0; 107 pointX = 27.0;
111 pointY = 45.0; 108 pointY = 45.0;
112 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 109 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
113 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 110 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
114 controlPoint1X = 41.897; 111 controlPoint1X = 41.897;
115 controlPoint1Y = 12.0; 112 controlPoint1Y = 12.0;
116 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution; 113 controlPoint1X = (Math.round(resolution * controlPoint1X + alignStroke) - alignStroke) / resolution;
117 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution; 114 controlPoint1Y = (Math.round(resolution * controlPoint1Y + alignStroke) - alignStroke) / resolution;
118 controlPoint2X = 27.0; 115 controlPoint2X = 27.0;
119 controlPoint2Y = 26.897; 116 controlPoint2Y = 26.897;
120 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution; 117 controlPoint2X = (Math.round(resolution * controlPoint2X + alignStroke) - alignStroke) / resolution;
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Star/normal.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Star/normal.js
index e70e3b5..cf475c6 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Star/normal.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Star/normal.js
@@ -1,120 +1,117 @@
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 //normal.js 27 //normal.js
31 //normal 28 //normal
32// 29//
33 //Created by Giulio Cesare Solaroli on 3/15/10 30 //Created by Giulio Cesare Solaroli on 3/15/10
34 //Copyright 2010 Clipperz 31 //Copyright 2010 Clipperz
35 //This code was generated by Opacity. You may use or modify it in any way. 32 //This code was generated by Opacity. You may use or modify it in any way.
36// 33//
37 34
38var kClipperz_PM_UI_Canvas_Star_normalWidth = 46.0; 35var kClipperz_PM_UI_Canvas_Star_normalWidth = 46.0;
39var kClipperz_PM_UI_Canvas_Star_normalHeight = 46.0; 36var kClipperz_PM_UI_Canvas_Star_normalHeight = 46.0;
40 37
41function Clipperz_PM_UI_Canvas_Star_normal(canvas, aColor) 38function Clipperz_PM_UI_Canvas_Star_normal(canvas, aColor)
42{ 39{
43 var context = canvas.getContext("2d"); 40 var context = canvas.getContext("2d");
44 var alignStroke; 41 var alignStroke;
45 var resolution; 42 var resolution;
46 var path; 43 var path;
47 var pointX; 44 var pointX;
48 var pointY; 45 var pointY;
49 if (window.devicePixelRatio) 46 if (window.devicePixelRatio)
50 resolution = window.devicePixelRatio; 47 resolution = window.devicePixelRatio;
51 else 48 else
52 resolution = 1.0; 49 resolution = 1.0;
53 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Star_normalWidth + canvas.height / kClipperz_PM_UI_Canvas_Star_normalHeight); 50 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Star_normalWidth + canvas.height / kClipperz_PM_UI_Canvas_Star_normalHeight);
54 51
55 context.save(); 52 context.save();
56 context.scale(canvas.width / kClipperz_PM_UI_Canvas_Star_normalWidth, canvas.height / kClipperz_PM_UI_Canvas_Star_normalHeight); 53 context.scale(canvas.width / kClipperz_PM_UI_Canvas_Star_normalWidth, canvas.height / kClipperz_PM_UI_Canvas_Star_normalHeight);
57 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Star_normalWidth, kClipperz_PM_UI_Canvas_Star_normalHeight); 54 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Star_normalWidth, kClipperz_PM_UI_Canvas_Star_normalHeight);
58 55
59 // * 56 // *
60 57
61 alignStroke = 0.0; 58 alignStroke = 0.0;
62 context.beginPath(); 59 context.beginPath();
63 pointX = 8.613; 60 pointX = 8.613;
64 pointY = 15.583; 61 pointY = 15.583;
65 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 62 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
66 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 63 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
67 context.moveTo(pointX, pointY); 64 context.moveTo(pointX, pointY);
68 pointX = 18.563; 65 pointX = 18.563;
69 pointY = 18.821; 66 pointY = 18.821;
70 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 67 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
71 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 68 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
72 context.lineTo(pointX, pointY); 69 context.lineTo(pointX, pointY);
73 pointX = 18.563; 70 pointX = 18.563;
74 pointY = 7.347; 71 pointY = 7.347;
75 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 72 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
76 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 73 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
77 context.lineTo(pointX, pointY); 74 context.lineTo(pointX, pointY);
78 pointX = 26.799; 75 pointX = 26.799;
79 pointY = 7.347; 76 pointY = 7.347;
80 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 77 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
81 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 78 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
82 context.lineTo(pointX, pointY); 79 context.lineTo(pointX, pointY);
83 pointX = 26.799; 80 pointX = 26.799;
84 pointY = 18.821; 81 pointY = 18.821;
85 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 82 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
86 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 83 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
87 context.lineTo(pointX, pointY); 84 context.lineTo(pointX, pointY);
88 pointX = 36.749; 85 pointX = 36.749;
89 pointY = 15.583; 86 pointY = 15.583;
90 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 87 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
91 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 88 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
92 context.lineTo(pointX, pointY); 89 context.lineTo(pointX, pointY);
93 pointX = 38.986; 90 pointX = 38.986;
94 pointY = 22.677; 91 pointY = 22.677;
95 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 92 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
96 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 93 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
97 context.lineTo(pointX, pointY); 94 context.lineTo(pointX, pointY);
98 pointX = 28.846; 95 pointX = 28.846;
99 pointY = 25.819; 96 pointY = 25.819;
100 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 97 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
101 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 98 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
102 context.lineTo(pointX, pointY); 99 context.lineTo(pointX, pointY);
103 pointX = 35.463; 100 pointX = 35.463;
104 pointY = 35.293; 101 pointY = 35.293;
105 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 102 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
106 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 103 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
107 context.lineTo(pointX, pointY); 104 context.lineTo(pointX, pointY);
108 pointX = 29.369; 105 pointX = 29.369;
109 pointY = 39.625; 106 pointY = 39.625;
110 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 107 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
111 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 108 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
112 context.lineTo(pointX, pointY); 109 context.lineTo(pointX, pointY);
113 pointX = 22.752; 110 pointX = 22.752;
114 pointY = 30.675; 111 pointY = 30.675;
115 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 112 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
116 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 113 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
117 context.lineTo(pointX, pointY); 114 context.lineTo(pointX, pointY);
118 pointX = 15.944; 115 pointX = 15.944;
119 pointY = 39.625; 116 pointY = 39.625;
120 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 117 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Tips/close.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Tips/close.js
index 216fd24..cd7ed90 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Tips/close.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Tips/close.js
@@ -1,120 +1,117 @@
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 //close.js 27 //close.js
31 //close 28 //close
32// 29//
33 //Created by Giulio Cesare Solaroli on 3/14/10 30 //Created by Giulio Cesare Solaroli on 3/14/10
34 //Copyright 2010 Clipperz 31 //Copyright 2010 Clipperz
35 //This code was generated by Opacity. You may use or modify it in any way. 32 //This code was generated by Opacity. You may use or modify it in any way.
36// 33//
37 34
38var kClipperz_PM_UI_Canvas_Tips_closeWidth = 310.0; 35var kClipperz_PM_UI_Canvas_Tips_closeWidth = 310.0;
39var kClipperz_PM_UI_Canvas_Tips_closeHeight = 6.0; 36var kClipperz_PM_UI_Canvas_Tips_closeHeight = 6.0;
40 37
41function Clipperz_PM_UI_Canvas_Tips_close(canvas, aColor, aBackgroundColor) 38function Clipperz_PM_UI_Canvas_Tips_close(canvas, aColor, aBackgroundColor)
42{ 39{
43 var context = canvas.getContext("2d"); 40 var context = canvas.getContext("2d");
44 var alignStroke; 41 var alignStroke;
45 var resolution; 42 var resolution;
46 var path; 43 var path;
47 var pointX; 44 var pointX;
48 var pointY; 45 var pointY;
49 if (window.devicePixelRatio) 46 if (window.devicePixelRatio)
50 resolution = window.devicePixelRatio; 47 resolution = window.devicePixelRatio;
51 else 48 else
52 resolution = 1.0; 49 resolution = 1.0;
53 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Tips_closeWidth + canvas.height / kClipperz_PM_UI_Canvas_Tips_closeHeight); 50 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Tips_closeWidth + canvas.height / kClipperz_PM_UI_Canvas_Tips_closeHeight);
54 51
55 context.save(); 52 context.save();
56 context.scale(canvas.width / kClipperz_PM_UI_Canvas_Tips_closeWidth, canvas.height / kClipperz_PM_UI_Canvas_Tips_closeHeight); 53 context.scale(canvas.width / kClipperz_PM_UI_Canvas_Tips_closeWidth, canvas.height / kClipperz_PM_UI_Canvas_Tips_closeHeight);
57 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Tips_closeWidth, kClipperz_PM_UI_Canvas_Tips_closeHeight); 54 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Tips_closeWidth, kClipperz_PM_UI_Canvas_Tips_closeHeight);
58 55
59 // background 56 // background
60 57
61 alignStroke = 0.0; 58 alignStroke = 0.0;
62 context.beginPath(); 59 context.beginPath();
63 pointX = 310.0; 60 pointX = 310.0;
64 pointY = 6.0; 61 pointY = 6.0;
65 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 62 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
66 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 63 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
67 context.moveTo(pointX, pointY); 64 context.moveTo(pointX, pointY);
68 pointX = 310.0; 65 pointX = 310.0;
69 pointY = 0.0; 66 pointY = 0.0;
70 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 67 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
71 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 68 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
72 context.lineTo(pointX, pointY); 69 context.lineTo(pointX, pointY);
73 pointX = 0.0; 70 pointX = 0.0;
74 pointY = 0.0; 71 pointY = 0.0;
75 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 72 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
76 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 73 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
77 context.lineTo(pointX, pointY); 74 context.lineTo(pointX, pointY);
78 pointX = 0.0; 75 pointX = 0.0;
79 pointY = 6.0; 76 pointY = 6.0;
80 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 77 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
81 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 78 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
82 context.lineTo(pointX, pointY); 79 context.lineTo(pointX, pointY);
83 pointX = 310.0; 80 pointX = 310.0;
84 pointY = 6.0; 81 pointY = 6.0;
85 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 82 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
86 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 83 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
87 context.lineTo(pointX, pointY); 84 context.lineTo(pointX, pointY);
88 context.closePath(); 85 context.closePath();
89 context.fillStyle = aBackgroundColor; 86 context.fillStyle = aBackgroundColor;
90 context.fill(); 87 context.fill();
91 88
92 // grid 89 // grid
93 90
94 // background 91 // background
95 92
96 alignStroke = 0.0; 93 alignStroke = 0.0;
97 context.beginPath(); 94 context.beginPath();
98 pointX = 310.0; 95 pointX = 310.0;
99 pointY = 6.0; 96 pointY = 6.0;
100 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 97 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
101 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 98 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
102 context.moveTo(pointX, pointY); 99 context.moveTo(pointX, pointY);
103 pointX = 310.0; 100 pointX = 310.0;
104 pointY = 0.0; 101 pointY = 0.0;
105 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 102 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
106 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 103 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
107 context.lineTo(pointX, pointY); 104 context.lineTo(pointX, pointY);
108 pointX = 0.0; 105 pointX = 0.0;
109 pointY = 0.0; 106 pointY = 0.0;
110 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 107 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
111 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 108 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
112 context.lineTo(pointX, pointY); 109 context.lineTo(pointX, pointY);
113 pointX = 0.0; 110 pointX = 0.0;
114 pointY = 6.0; 111 pointY = 6.0;
115 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 112 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
116 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 113 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
117 context.lineTo(pointX, pointY); 114 context.lineTo(pointX, pointY);
118 pointX = 310.0; 115 pointX = 310.0;
119 pointY = 6.0; 116 pointY = 6.0;
120 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 117 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Tips/open.js b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Tips/open.js
index f1bdaa9..30c1c69 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Canvas/Tips/open.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Canvas/Tips/open.js
@@ -1,120 +1,117 @@
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 //open.js 27 //open.js
31 //open 28 //open
32// 29//
33 //Created by Giulio Cesare Solaroli on 3/14/10 30 //Created by Giulio Cesare Solaroli on 3/14/10
34 //Copyright 2010 Clipperz 31 //Copyright 2010 Clipperz
35 //This code was generated by Opacity. You may use or modify it in any way. 32 //This code was generated by Opacity. You may use or modify it in any way.
36// 33//
37 34
38var kClipperz_PM_UI_Canvas_Tips_openWidth = 310.0; 35var kClipperz_PM_UI_Canvas_Tips_openWidth = 310.0;
39var kClipperz_PM_UI_Canvas_Tips_openHeight = 6.0; 36var kClipperz_PM_UI_Canvas_Tips_openHeight = 6.0;
40 37
41function Clipperz_PM_UI_Canvas_Tips_open(canvas, aColor, aBackgroundColor) 38function Clipperz_PM_UI_Canvas_Tips_open(canvas, aColor, aBackgroundColor)
42{ 39{
43 var context = canvas.getContext("2d"); 40 var context = canvas.getContext("2d");
44 var alignStroke; 41 var alignStroke;
45 var resolution; 42 var resolution;
46 var path; 43 var path;
47 var pointX; 44 var pointX;
48 var pointY; 45 var pointY;
49 var color; 46 var color;
50 if (window.devicePixelRatio) 47 if (window.devicePixelRatio)
51 resolution = window.devicePixelRatio; 48 resolution = window.devicePixelRatio;
52 else 49 else
53 resolution = 1.0; 50 resolution = 1.0;
54 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Tips_openWidth + canvas.height / kClipperz_PM_UI_Canvas_Tips_openHeight); 51 resolution *= 0.5 * (canvas.width / kClipperz_PM_UI_Canvas_Tips_openWidth + canvas.height / kClipperz_PM_UI_Canvas_Tips_openHeight);
55 52
56 context.save(); 53 context.save();
57 context.scale(canvas.width / kClipperz_PM_UI_Canvas_Tips_openWidth, canvas.height / kClipperz_PM_UI_Canvas_Tips_openHeight); 54 context.scale(canvas.width / kClipperz_PM_UI_Canvas_Tips_openWidth, canvas.height / kClipperz_PM_UI_Canvas_Tips_openHeight);
58 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Tips_openWidth, kClipperz_PM_UI_Canvas_Tips_openHeight); 55 context.clearRect(0.0, 0.0, kClipperz_PM_UI_Canvas_Tips_openWidth, kClipperz_PM_UI_Canvas_Tips_openHeight);
59 56
60 // background 57 // background
61 58
62 alignStroke = 0.0; 59 alignStroke = 0.0;
63 context.beginPath(); 60 context.beginPath();
64 pointX = 310.0; 61 pointX = 310.0;
65 pointY = 6.0; 62 pointY = 6.0;
66 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 63 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
67 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 64 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
68 context.moveTo(pointX, pointY); 65 context.moveTo(pointX, pointY);
69 pointX = 310.0; 66 pointX = 310.0;
70 pointY = 0.0; 67 pointY = 0.0;
71 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 68 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
72 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 69 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
73 context.lineTo(pointX, pointY); 70 context.lineTo(pointX, pointY);
74 pointX = 0.0; 71 pointX = 0.0;
75 pointY = 0.0; 72 pointY = 0.0;
76 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 73 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
77 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 74 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
78 context.lineTo(pointX, pointY); 75 context.lineTo(pointX, pointY);
79 pointX = 0.0; 76 pointX = 0.0;
80 pointY = 6.0; 77 pointY = 6.0;
81 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 78 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
82 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 79 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
83 context.lineTo(pointX, pointY); 80 context.lineTo(pointX, pointY);
84 pointX = 310.0; 81 pointX = 310.0;
85 pointY = 6.0; 82 pointY = 6.0;
86 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 83 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
87 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 84 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
88 context.lineTo(pointX, pointY); 85 context.lineTo(pointX, pointY);
89 context.closePath(); 86 context.closePath();
90 context.fillStyle = aBackgroundColor; 87 context.fillStyle = aBackgroundColor;
91 context.fill(); 88 context.fill();
92 89
93 // grid 90 // grid
94 91
95 // background 92 // background
96 93
97 alignStroke = 0.0; 94 alignStroke = 0.0;
98 context.beginPath(); 95 context.beginPath();
99 pointX = 310.0; 96 pointX = 310.0;
100 pointY = 6.0; 97 pointY = 6.0;
101 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 98 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
102 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 99 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
103 context.moveTo(pointX, pointY); 100 context.moveTo(pointX, pointY);
104 pointX = 310.0; 101 pointX = 310.0;
105 pointY = 0.0; 102 pointY = 0.0;
106 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 103 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
107 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 104 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
108 context.lineTo(pointX, pointY); 105 context.lineTo(pointX, pointY);
109 pointX = 0.0; 106 pointX = 0.0;
110 pointY = 0.0; 107 pointY = 0.0;
111 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 108 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
112 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 109 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
113 context.lineTo(pointX, pointY); 110 context.lineTo(pointX, pointY);
114 pointX = 0.0; 111 pointX = 0.0;
115 pointY = 6.0; 112 pointY = 6.0;
116 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution; 113 pointX = (Math.round(resolution * pointX + alignStroke) - alignStroke) / resolution;
117 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution; 114 pointY = (Math.round(resolution * pointY + alignStroke) - alignStroke) / resolution;
118 context.lineTo(pointX, pointY); 115 context.lineTo(pointX, pointY);
119 pointX = 310.0; 116 pointX = 310.0;
120 pointY = 6.0; 117 pointY = 6.0;
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/BaseComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/BaseComponent.js
index 26f2fc4..2a03fdf 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/BaseComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/BaseComponent.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Common.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Common.Components');
30 27
31//############################################################################# 28//#############################################################################
32 29
33var _Clipperz_PM_Components_base_id_ = 0; 30var _Clipperz_PM_Components_base_id_ = 0;
34 31
35//############################################################################# 32//#############################################################################
36 33
37Clipperz.PM.UI.Common.Components.BaseComponent = function(args) { 34Clipperz.PM.UI.Common.Components.BaseComponent = function(args) {
38 args = args || {}; 35 args = args || {};
39 Clipperz.PM.UI.Common.Components.BaseComponent.superclass.constructor.call(this, args); 36 Clipperz.PM.UI.Common.Components.BaseComponent.superclass.constructor.call(this, args);
40 37
41 this._element = args.element || null; 38 this._element = args.element || null;
42 this._ids = {}; 39 this._ids = {};
43 40
44 this._slots = {}; 41 this._slots = {};
45 this._slotComponents = {}; 42 this._slotComponents = {};
46 43
47 this._components = {}; 44 this._components = {};
48 45
49 this._cachedSlots = {}; 46 this._cachedSlots = {};
50 47
51 this._isModal = false; 48 this._isModal = false;
52 49
53 this._isActive = false; 50 this._isActive = false;
54 this._elementUsedToEnterModalState; 51 this._elementUsedToEnterModalState;
55 52
56 this._isFullyRendered = false; 53 this._isFullyRendered = false;
57 this._renderingWaitingQueue = []; 54 this._renderingWaitingQueue = [];
58 55
59 //this._slots = { 56 //this._slots = {
60 // 'header':'header', 57 // 'header':'header',
61 // 'body': 'body', 58 // 'body': 'body',
62 // 'footer':'footer' 59 // 'footer':'footer'
63 //}; 60 //};
64 61
65 return this; 62 return this;
66} 63}
67 64
68//============================================================================= 65//=============================================================================
69 66
70//TODO get back to MochiKit.Base.update as we are not extending anything 67//TODO get back to MochiKit.Base.update as we are not extending anything
71//MochiKit.Base.update(Clipperz.PM.UI.Common.Components.BaseComponent.prototype, { 68//MochiKit.Base.update(Clipperz.PM.UI.Common.Components.BaseComponent.prototype, {
72Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.BaseComponent, /*Ext.Component*/ Object, { 69Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.BaseComponent, /*Ext.Component*/ Object, {
73 70
74 'isClipperzPMComponent': true, 71 'isClipperzPMComponent': true,
75 72
76 //------------------------------------------------------------------------- 73 //-------------------------------------------------------------------------
77 74
78 'toString': function () { 75 'toString': function () {
79 return "Clipperz.PM.UI.Common.Components.BaseComponent component"; 76 return "Clipperz.PM.UI.Common.Components.BaseComponent component";
80 }, 77 },
81 78
82 'componentId': function () { 79 'componentId': function () {
83 return this.getId('_id_'); 80 return this.getId('_id_');
84 }, 81 },
85 82
86 //------------------------------------------------------------------------- 83 //-------------------------------------------------------------------------
87/* 84/*
88 'slots': function() { 85 'slots': function() {
89 return this._slots; 86 return this._slots;
90 }, 87 },
91*/ 88*/
92 'slotComponents': function() { 89 'slotComponents': function() {
93 return this._slotComponents; 90 return this._slotComponents;
94 }, 91 },
95 92
96 //------------------------------------------------------------------------- 93 //-------------------------------------------------------------------------
97 94
98 'components': function () { 95 'components': function () {
99 return this._components; 96 return this._components;
100 }, 97 },
101 98
102 'addComponent': function (aComponent) { 99 'addComponent': function (aComponent) {
103 this.components()[aComponent.componentId()] = aComponent; 100 this.components()[aComponent.componentId()] = aComponent;
104 }, 101 },
105 102
106 'removeComponent': function (aComponent) { 103 'removeComponent': function (aComponent) {
107 var componentId; 104 var componentId;
108 105
109 componentId = aComponent.componentId(); 106 componentId = aComponent.componentId();
110 this.components()[componentId].remove(); 107 this.components()[componentId].remove();
111 delete this.components()[componentId]; 108 delete this.components()[componentId];
112 }, 109 },
113 110
114 //------------------------------------------------------------------------- 111 //-------------------------------------------------------------------------
115/* 112/*
116 'domHelper': function() { 113 'domHelper': function() {
117 return Clipperz.YUI.DomHelper; 114 return Clipperz.YUI.DomHelper;
118 }, 115 },
119 */ 116 */
120 //------------------------------------------------------------------------- 117 //-------------------------------------------------------------------------
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/Button.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/Button.js
index b2761ea..716d851 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/Button.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/Button.js
@@ -1,108 +1,105 @@
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.Base.module('Clipperz.PM.UI.Common.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Common.Components');
30 27
31Clipperz.PM.UI.Common.Components.Button = function(args) { 28Clipperz.PM.UI.Common.Components.Button = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Common.Components.Button.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Common.Components.Button.superclass.constructor.apply(this, arguments);
35 32
36 this._element = args.element || Clipperz.Base.exception.raise('MandatoryParameter'); 33 this._element = args.element || Clipperz.Base.exception.raise('MandatoryParameter');
37 this._text = args.text || Clipperz.Base.exception.raise('MandatoryParameter'); 34 this._text = args.text || Clipperz.Base.exception.raise('MandatoryParameter');
38 this._isDefault = args.isDefault|| false; 35 this._isDefault = args.isDefault|| false;
39 36
40 this.render(); 37 this.render();
41 38
42 return this; 39 return this;
43} 40}
44 41
45//============================================================================= 42//=============================================================================
46 43
47Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.Button, Clipperz.PM.UI.Common.Components.BaseComponent, { 44Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.Button, Clipperz.PM.UI.Common.Components.BaseComponent, {
48 45
49 //------------------------------------------------------------------------- 46 //-------------------------------------------------------------------------
50 47
51 'toString': function () { 48 'toString': function () {
52 return "Clipperz.PM.UI.Common.Components.Button component"; 49 return "Clipperz.PM.UI.Common.Components.Button component";
53 }, 50 },
54 51
55 //------------------------------------------------------------------------- 52 //-------------------------------------------------------------------------
56 53
57 'text': function () { 54 'text': function () {
58 return this._text; 55 return this._text;
59 }, 56 },
60 57
61 'isDefault': function () { 58 'isDefault': function () {
62 return this._isDefault; 59 return this._isDefault;
63 }, 60 },
64 61
65 //------------------------------------------------------------------------- 62 //-------------------------------------------------------------------------
66 63
67 'renderSelf': function () { 64 'renderSelf': function () {
68 this.append(this.element(), {tag:'div', id:this.getId('wrapper'), cls:'button_wrapper', children:[ 65 this.append(this.element(), {tag:'div', id:this.getId('wrapper'), cls:'button_wrapper', children:[
69 {tag:'div', id:this.getId('bodyWrapper'), cls:'button_bodyWrapper', children:[ 66 {tag:'div', id:this.getId('bodyWrapper'), cls:'button_bodyWrapper', children:[
70 {tag:'div', id:this.getId('body'), cls:'button_body', children:[ 67 {tag:'div', id:this.getId('body'), cls:'button_body', children:[
71 {tag:'span', html:this.text()} 68 {tag:'span', html:this.text()}
72 ]}, 69 ]},
73 {tag:'div', id:this.getId('footer'), cls:'button_footer'} 70 {tag:'div', id:this.getId('footer'), cls:'button_footer'}
74 ]} 71 ]}
75 ]}); 72 ]});
76 73
77 if (this.isDefault()) { 74 if (this.isDefault()) {
78 MochiKit.DOM.addElementClass(this.getId('wrapper'), 'default'); 75 MochiKit.DOM.addElementClass(this.getId('wrapper'), 'default');
79 } 76 }
80 77
81 MochiKit.Signal.connect(this.getId('wrapper'), 'onmouseenter',this, 'handleOnMouseEnter'); 78 MochiKit.Signal.connect(this.getId('wrapper'), 'onmouseenter',this, 'handleOnMouseEnter');
82 MochiKit.Signal.connect(this.getId('wrapper'), 'onmouseleave',this, 'handleOnMouseLeave'); 79 MochiKit.Signal.connect(this.getId('wrapper'), 'onmouseleave',this, 'handleOnMouseLeave');
83 MochiKit.Signal.connect(this.getId('wrapper'), 'onmousedown',this, 'handleOnMouseDown'); 80 MochiKit.Signal.connect(this.getId('wrapper'), 'onmousedown',this, 'handleOnMouseDown');
84 MochiKit.Signal.connect(this.getId('wrapper'), 'onclick', this, 'handleOnClick'); 81 MochiKit.Signal.connect(this.getId('wrapper'), 'onclick', this, 'handleOnClick');
85 }, 82 },
86 83
87 //------------------------------------------------------------------------- 84 //-------------------------------------------------------------------------
88 85
89 'handleOnMouseEnter': function (anEvent) { 86 'handleOnMouseEnter': function (anEvent) {
90 MochiKit.DOM.addElementClass(this.getId('wrapper'), 'hover'); 87 MochiKit.DOM.addElementClass(this.getId('wrapper'), 'hover');
91 }, 88 },
92 89
93 'handleOnMouseLeave': function (anEvent) { 90 'handleOnMouseLeave': function (anEvent) {
94 MochiKit.DOM.removeElementClass(this.getId('wrapper'), 'hover'); 91 MochiKit.DOM.removeElementClass(this.getId('wrapper'), 'hover');
95 MochiKit.DOM.removeElementClass(this.getId('wrapper'), 'clicked'); 92 MochiKit.DOM.removeElementClass(this.getId('wrapper'), 'clicked');
96 }, 93 },
97 94
98 'handleOnMouseDown': function (anEvent) { 95 'handleOnMouseDown': function (anEvent) {
99 MochiKit.DOM.addElementClass(this.getId('wrapper'), 'clicked'); 96 MochiKit.DOM.addElementClass(this.getId('wrapper'), 'clicked');
100 }, 97 },
101 98
102 'handleOnClick': function (anEvent) { 99 'handleOnClick': function (anEvent) {
103 MochiKit.Signal.signal(this, 'onclick', anEvent); 100 MochiKit.Signal.signal(this, 'onclick', anEvent);
104 }, 101 },
105 102
106 //------------------------------------------------------------------------- 103 //-------------------------------------------------------------------------
107 __syntaxFix__: "syntax fix" 104 __syntaxFix__: "syntax fix"
108}); 105});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/ComponentSlot.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/ComponentSlot.js
index 0c6e221..7f56c1e 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/ComponentSlot.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/ComponentSlot.js
@@ -1,64 +1,61 @@
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.Base.module('Clipperz.PM.UI.Common.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Common.Components');
30 27
31//############################################################################# 28//#############################################################################
32 29
33 30
34Clipperz.PM.UI.Common.Components.ComponentSlot = function(aComponent, aSlotName) { 31Clipperz.PM.UI.Common.Components.ComponentSlot = function(aComponent, aSlotName) {
35 this._component = aComponent; 32 this._component = aComponent;
36 this._slotName = aSlotName; 33 this._slotName = aSlotName;
37 34
38 return this; 35 return this;
39} 36}
40 37
41//============================================================================= 38//=============================================================================
42 39
43Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.ComponentSlot, Object, { 40Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.ComponentSlot, Object, {
44 41
45 //------------------------------------------------------------------------- 42 //-------------------------------------------------------------------------
46 43
47 'slotName': function() { 44 'slotName': function() {
48 return this._slotName; 45 return this._slotName;
49 }, 46 },
50 47
51 'component': function() { 48 'component': function() {
52 return this._component; 49 return this._component;
53 }, 50 },
54 51
55 //------------------------------------------------------------------------- 52 //-------------------------------------------------------------------------
56 53
57 'setContent': function(aComponent) { 54 'setContent': function(aComponent) {
58 this.component().setComponentForSlotNamed(aComponent, this.slotName()); 55 this.component().setComponentForSlotNamed(aComponent, this.slotName());
59 }, 56 },
60 57
61 //------------------------------------------------------------------------- 58 //-------------------------------------------------------------------------
62 __syntaxFix__: "syntax fix" 59 __syntaxFix__: "syntax fix"
63 60
64}); 61});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/FaviconComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/FaviconComponent.js
index 4735f5c..2db2489 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/FaviconComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/FaviconComponent.js
@@ -1,91 +1,88 @@
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.Base.module('Clipperz.PM.UI.Common.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Common.Components');
30 27
31Clipperz.PM.UI.Common.Components.FaviconComponent = function(args) { 28Clipperz.PM.UI.Common.Components.FaviconComponent = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Common.Components.FaviconComponent.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Common.Components.FaviconComponent.superclass.constructor.apply(this, arguments);
35 32
36 this.render(); 33 this.render();
37 this.setSrc(args.src); 34 this.setSrc(args.src);
38 35
39 return this; 36 return this;
40} 37}
41 38
42//============================================================================= 39//=============================================================================
43 40
44Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.FaviconComponent, Clipperz.PM.UI.Common.Components.BaseComponent, { 41Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.FaviconComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
45 42
46 //------------------------------------------------------------------------- 43 //-------------------------------------------------------------------------
47 44
48 'toString': function () { 45 'toString': function () {
49 return "Clipperz.PM.UI.Common.Components.FaviconComponent component"; 46 return "Clipperz.PM.UI.Common.Components.FaviconComponent component";
50 }, 47 },
51 48
52 //------------------------------------------------------------------------- 49 //-------------------------------------------------------------------------
53 50
54 'src': function () { 51 'src': function () {
55 return this.element().src; 52 return this.element().src;
56 }, 53 },
57 54
58 'setSrc': function (aValue) { 55 'setSrc': function (aValue) {
59 this.element().src = (aValue || Clipperz.PM.Strings.getValue('defaultFaviconUrl')); 56 this.element().src = (aValue || Clipperz.PM.Strings.getValue('defaultFaviconUrl'));
60 }, 57 },
61 58
62 //------------------------------------------------------------------------- 59 //-------------------------------------------------------------------------
63 60
64 'clear': function () {}, 61 'clear': function () {},
65 62
66 //------------------------------------------------------------------------- 63 //-------------------------------------------------------------------------
67 64
68 'renderSelf': function () { 65 'renderSelf': function () {
69 MochiKit.Signal.connect(this.element(), 'onerror',this, 'setDefaultFavicon'); 66 MochiKit.Signal.connect(this.element(), 'onerror',this, 'setDefaultFavicon');
70 MochiKit.Signal.connect(this.element(), 'onabort',this, 'setDefaultFavicon'); 67 MochiKit.Signal.connect(this.element(), 'onabort',this, 'setDefaultFavicon');
71 MochiKit.Signal.connect(this.element(), 'onload',this, 'handleOnLoad'); 68 MochiKit.Signal.connect(this.element(), 'onload',this, 'handleOnLoad');
72 }, 69 },
73 70
74 //------------------------------------------------------------------------- 71 //-------------------------------------------------------------------------
75 72
76 'setDefaultFavicon': function (anEvent) { 73 'setDefaultFavicon': function (anEvent) {
77 MochiKit.Signal.disconnectAll(anEvent.src()); 74 MochiKit.Signal.disconnectAll(anEvent.src());
78 this.setSrc(null); 75 this.setSrc(null);
79 }, 76 },
80 77
81 'handleOnLoad': function (anEvent) { 78 'handleOnLoad': function (anEvent) {
82 MochiKit.Signal.disconnectAll(anEvent.src()); 79 MochiKit.Signal.disconnectAll(anEvent.src());
83//console.log("HANDLE ON LOAD", anEvent, anEvent.src().src); 80//console.log("HANDLE ON LOAD", anEvent, anEvent.src().src);
84 if (anEvent.src().complete == false) { 81 if (anEvent.src().complete == false) {
85 this.setSrc(null); 82 this.setSrc(null);
86 } 83 }
87 }, 84 },
88 85
89 //------------------------------------------------------------------------- 86 //-------------------------------------------------------------------------
90 __syntaxFix__: "syntax fix" 87 __syntaxFix__: "syntax fix"
91}); 88});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/MessagePanelWithProgressBar.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/MessagePanelWithProgressBar.js
index 275bbed..2788b79 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/MessagePanelWithProgressBar.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/MessagePanelWithProgressBar.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Common.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Common.Components');
30 27
31Clipperz.PM.UI.Common.Components.MessagePanelWithProgressBar = function(args) { 28Clipperz.PM.UI.Common.Components.MessagePanelWithProgressBar = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Common.Components.MessagePanelWithProgressBar.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Common.Components.MessagePanelWithProgressBar.superclass.constructor.apply(this, arguments);
35 32
36 // this._openFromElement = args.openFromElement || null; 33 // this._openFromElement = args.openFromElement || null;
37 this._onOkCloseToElement = args.onOkCloseToElement || null; 34 this._onOkCloseToElement = args.onOkCloseToElement || null;
38 this._onCancelCloseToElement = args.onCancelCloseToElement|| null; 35 this._onCancelCloseToElement = args.onCancelCloseToElement|| null;
39 36
40 this._canCancelWhileProcessing= ((typeof(args.canCancelWhileProcessing) == 'undefined') ? true : args.canCancelWhileProcessing); 37 this._canCancelWhileProcessing= ((typeof(args.canCancelWhileProcessing) == 'undefined') ? true : args.canCancelWhileProcessing);
41 38
42 return this; 39 return this;
43} 40}
44 41
45//============================================================================= 42//=============================================================================
46 43
47Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.MessagePanelWithProgressBar, Clipperz.PM.UI.Common.Components.SimpleMessagePanel, { 44Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.MessagePanelWithProgressBar, Clipperz.PM.UI.Common.Components.SimpleMessagePanel, {
48 45
49 //------------------------------------------------------------------------- 46 //-------------------------------------------------------------------------
50 47
51 'toString': function () { 48 'toString': function () {
52 return "Clipperz.PM.UI.Common.Components.MessagePanelWithProgressBar component"; 49 return "Clipperz.PM.UI.Common.Components.MessagePanelWithProgressBar component";
53 }, 50 },
54 51
55 //------------------------------------------------------------------------- 52 //-------------------------------------------------------------------------
56/* 53/*
57 'openFromElement': function () { 54 'openFromElement': function () {
58 return this._openFromElement; 55 return this._openFromElement;
59 }, 56 },
60*/ 57*/
61 //------------------------------------------------------------------------- 58 //-------------------------------------------------------------------------
62 59
63 'onOkCloseToElement': function () { 60 'onOkCloseToElement': function () {
64 return this._onOkCloseToElement; 61 return this._onOkCloseToElement;
65 }, 62 },
66 63
67 'setOnOkCloseToElement': function (anElement) { 64 'setOnOkCloseToElement': function (anElement) {
68 this._onOkCloseToElement = anElement; 65 this._onOkCloseToElement = anElement;
69 }, 66 },
70 67
71 //------------------------------------------------------------------------- 68 //-------------------------------------------------------------------------
72 69
73 'onCancelCloseToElement': function () { 70 'onCancelCloseToElement': function () {
74 return this._onCancelCloseToElement; 71 return this._onCancelCloseToElement;
75 }, 72 },
76 73
77 'setOnCancelCloseToElement': function (anElement) { 74 'setOnCancelCloseToElement': function (anElement) {
78 this._onCancelCloseToElement = anElement; 75 this._onCancelCloseToElement = anElement;
79 }, 76 },
80 77
81 //------------------------------------------------------------------------- 78 //-------------------------------------------------------------------------
82 79
83 'canCancelWhileProcessing': function () { 80 'canCancelWhileProcessing': function () {
84 return this._canCancelWhileProcessing; 81 return this._canCancelWhileProcessing;
85 }, 82 },
86 83
87 //------------------------------------------------------------------------- 84 //-------------------------------------------------------------------------
88 85
89 'deferredShowModal': function (someArgs, aResult) { 86 'deferredShowModal': function (someArgs, aResult) {
90 if (someArgs['onOkCloseToElement'] != null) { 87 if (someArgs['onOkCloseToElement'] != null) {
91 this.setOnOkCloseToElement(someArgs['onOkCloseToElement']); 88 this.setOnOkCloseToElement(someArgs['onOkCloseToElement']);
92 } 89 }
93 90
94 if (someArgs['onCancelCloseToElement'] != null) { 91 if (someArgs['onCancelCloseToElement'] != null) {
95 this.setOnCancelCloseToElement(someArgs['onCancelCloseToElement']); 92 this.setOnCancelCloseToElement(someArgs['onCancelCloseToElement']);
96 } 93 }
97 94
98 Clipperz.PM.UI.Common.Components.MessagePanelWithProgressBar.superclass.deferredShowModal.apply(this, arguments); 95 Clipperz.PM.UI.Common.Components.MessagePanelWithProgressBar.superclass.deferredShowModal.apply(this, arguments);
99 return this.deferred(); 96 return this.deferred();
100 }, 97 },
101 98
102 //------------------------------------------------------------------------- 99 //-------------------------------------------------------------------------
103 100
104 'showProgressBar': function () { 101 'showProgressBar': function () {
105 varprogressBarElement; 102 varprogressBarElement;
106 103
107 this.getElement('container').innerHTML = ''; 104 this.getElement('container').innerHTML = '';
108 105
109 progressBarElement = this.append(this.getElement('container'), {tag:'div', cls:'progressBarWrapper'}); 106 progressBarElement = this.append(this.getElement('container'), {tag:'div', cls:'progressBarWrapper'});
110 this.addComponent(new Clipperz.PM.UI.Common.Components.ProgressBar({'element':progressBarElement})); 107 this.addComponent(new Clipperz.PM.UI.Common.Components.ProgressBar({'element':progressBarElement}));
111 108
112 if (this.canCancelWhileProcessing() == true) { 109 if (this.canCancelWhileProcessing() == true) {
113 this.setButtons([{text:"Cancel", result:'CANCEL'}]); 110 this.setButtons([{text:"Cancel", result:'CANCEL'}]);
114 } else { 111 } else {
115 this.setButtons([]); 112 this.setButtons([]);
116 } 113 }
117 }, 114 },
118 115
119 //------------------------------------------------------------------------- 116 //-------------------------------------------------------------------------
120 117
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js
index c1b4f13..089e3d4 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Common.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Common.Components');
30 27
31Clipperz.PM.UI.Common.Components.PasswordEntropyDisplay = function(anElement, args) { 28Clipperz.PM.UI.Common.Components.PasswordEntropyDisplay = function(anElement, args) {
32 args = args || {}; 29 args = args || {};
33 30
34//MochiKit.Logging.logDebug(">>> new TextFormField"); 31//MochiKit.Logging.logDebug(">>> new TextFormField");
35 Clipperz.PM.UI.Common.Components.PasswordEntropyDisplay.superclass.constructor.call(this, anElement, args); 32 Clipperz.PM.UI.Common.Components.PasswordEntropyDisplay.superclass.constructor.call(this, anElement, args);
36 33
37 this._wrapperElement = null; 34 this._wrapperElement = null;
38 this._entropyElement = null; 35 this._entropyElement = null;
39 36
40 this.render(); 37 this.render();
41//MochiKit.Logging.logDebug("<<< new TextFormField"); 38//MochiKit.Logging.logDebug("<<< new TextFormField");
42 39
43 return this; 40 return this;
44}; 41};
45 42
46Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.PasswordEntropyDisplay, Clipperz.PM.UI.Common.Components.BaseComponent, { 43Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.PasswordEntropyDisplay, Clipperz.PM.UI.Common.Components.BaseComponent, {
47 44
48 'toString': function() { 45 'toString': function() {
49 return "Clipperz.PM.UI.Common.Components.PasswordEntropyDisplay"; 46 return "Clipperz.PM.UI.Common.Components.PasswordEntropyDisplay";
50 }, 47 },
51 48
52 //----------------------------------------------------- 49 //-----------------------------------------------------
53 50
54 'wrapperElement': function() { 51 'wrapperElement': function() {
55 return this._wrapperElement; 52 return this._wrapperElement;
56 }, 53 },
57 54
58 'setWrapperElement': function(aValue) { 55 'setWrapperElement': function(aValue) {
59 this._wrapperElement = aValue; 56 this._wrapperElement = aValue;
60 }, 57 },
61 58
62 //----------------------------------------------------- 59 //-----------------------------------------------------
63 60
64 'passwordElement': function() { 61 'passwordElement': function() {
65 return this.element(); 62 return this.element();
66 }, 63 },
67 64
68 //----------------------------------------------------- 65 //-----------------------------------------------------
69 66
70 'entropyElement': function() { 67 'entropyElement': function() {
71 return this._entropyElement; 68 return this._entropyElement;
72 }, 69 },
73 70
74 'setEntropyElement': function(aValue) { 71 'setEntropyElement': function(aValue) {
75 this._entropyElement = aValue; 72 this._entropyElement = aValue;
76 }, 73 },
77 74
78 //----------------------------------------------------- 75 //-----------------------------------------------------
79 76
80 'render': function() { 77 'render': function() {
81/* 78/*
82 MochiKit.Signal.disconnectAllTo(this); 79 MochiKit.Signal.disconnectAllTo(this);
83 80
84 this.setWrapperElement(this.element().wrap({tag:'div'})); 81 this.setWrapperElement(this.element().wrap({tag:'div'}));
85 this.setEntropyElement(Clipperz.DOM.Helper.append(this.wrapperElement().dom, {tag:'div', cls:'passwordEntropy', html:"&nbsp;"}, true)); 82 this.setEntropyElement(Clipperz.DOM.Helper.append(this.wrapperElement().dom, {tag:'div', cls:'passwordEntropy', html:"&nbsp;"}, true));
86 // this.setEntropyElement(Clipperz.DOM.Helper.insertBefore(this.element(), {tag:'div', cls:'passwordEntropy', html:"&nbsp;"}, true)); 83 // this.setEntropyElement(Clipperz.DOM.Helper.insertBefore(this.element(), {tag:'div', cls:'passwordEntropy', html:"&nbsp;"}, true));
87 this.entropyElement().wrap({tag:'div', cls:'passwordEntropyWrapper'}); 84 this.entropyElement().wrap({tag:'div', cls:'passwordEntropyWrapper'});
88 85
89 this.updateEntropyElement(); 86 this.updateEntropyElement();
90 87
91 this.connect('onkeyup', 'updateEntropyElement'); 88 this.connect('onkeyup', 'updateEntropyElement');
92 this.connect('onchange', 'updateEntropyElement'); 89 this.connect('onchange', 'updateEntropyElement');
93 this.connect('onblur', 'updateEntropyElement'); 90 this.connect('onblur', 'updateEntropyElement');
94*/ 91*/
95 MochiKit.Signal.disconnectAllTo(this); 92 MochiKit.Signal.disconnectAllTo(this);
96 93
97 this.setEntropyElement(this.element()); 94 this.setEntropyElement(this.element());
98 this.entropyElement().addClass("entropyLevelIndicator"); 95 this.entropyElement().addClass("entropyLevelIndicator");
99 96
100 this.updateEntropyElement(); 97 this.updateEntropyElement();
101 98
102 this.connect('onkeyup', 'updateEntropyElement'); 99 this.connect('onkeyup', 'updateEntropyElement');
103 this.connect('onchange', 'updateEntropyElement'); 100 this.connect('onchange', 'updateEntropyElement');
104 this.connect('onblur', 'updateEntropyElement'); 101 this.connect('onblur', 'updateEntropyElement');
105 }, 102 },
106 103
107 //----------------------------------------------------- 104 //-----------------------------------------------------
108 105
109 'computeEntropyForString': function(aValue) { 106 'computeEntropyForString': function(aValue) {
110 return Clipperz.PM.Crypto.passwordEntropy(aValue); 107 return Clipperz.PM.Crypto.passwordEntropy(aValue);
111 }, 108 },
112 109
113 //----------------------------------------------------- 110 //-----------------------------------------------------
114 111
115 'updateEntropyElement': function(anEvent) { 112 'updateEntropyElement': function(anEvent) {
116/* 113/*
117//MochiKit.Logging.logDebug(">>> PasswordEntropyDisplay.updateEntropyElement"); 114//MochiKit.Logging.logDebug(">>> PasswordEntropyDisplay.updateEntropyElement");
118 varmaxExtent; 115 varmaxExtent;
119 varentropy; 116 varentropy;
120 117
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/ProgressBar.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/ProgressBar.js
index 7e7f8fe..5991530 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/ProgressBar.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/ProgressBar.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
29Clipperz.Base.module('Clipperz.PM.UI.Common.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Common.Components');
30 27
31Clipperz.PM.UI.Common.Components.ProgressBar = function(args) { 28Clipperz.PM.UI.Common.Components.ProgressBar = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Common.Components.ProgressBar.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Common.Components.ProgressBar.superclass.constructor.apply(this, arguments);
35 32
36 this._element = args.element|| Clipperz.Base.exception.raise('MandatoryParameter'); 33 this._element = args.element|| Clipperz.Base.exception.raise('MandatoryParameter');
37 34
38 this.renderSelf(); 35 this.renderSelf();
39 36
40 MochiKit.Signal.connect(Clipperz.PM.UI.Common.Controllers.ProgressBarController.defaultController, 'updateProgress', this, 'updateProgressHandler') 37 MochiKit.Signal.connect(Clipperz.PM.UI.Common.Controllers.ProgressBarController.defaultController, 'updateProgress', this, 'updateProgressHandler')
41 38
42 return this; 39 return this;
43} 40}
44 41
45//============================================================================= 42//=============================================================================
46 43
47Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.ProgressBar, Clipperz.PM.UI.Common.Components.BaseComponent, { 44Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.ProgressBar, Clipperz.PM.UI.Common.Components.BaseComponent, {
48 45
49 //------------------------------------------------------------------------- 46 //-------------------------------------------------------------------------
50 47
51 'toString': function () { 48 'toString': function () {
52 return "Clipperz.PM.UI.Common.Components.ProgressBar component"; 49 return "Clipperz.PM.UI.Common.Components.ProgressBar component";
53 }, 50 },
54 51
55 //------------------------------------------------------------------------- 52 //-------------------------------------------------------------------------
56 53
57 'renderSelf': function() { 54 'renderSelf': function() {
58 this.append(this.element(), {tag:'div', cls:'loadingBar', children:[ 55 this.append(this.element(), {tag:'div', cls:'loadingBar', children:[
59 {tag:'div', cls:'loadingBarProgressBox', children:[ 56 {tag:'div', cls:'loadingBarProgressBox', children:[
60 {tag:'div', id:this.getId('loadingBarProgress'), cls:'loadingBarProgress'} 57 {tag:'div', id:this.getId('loadingBarProgress'), cls:'loadingBarProgress'}
61 ]} 58 ]}
62 ]}); 59 ]});
63 }, 60 },
64 61
65 //------------------------------------------------------------------------- 62 //-------------------------------------------------------------------------
66 63
67 'updateProgressHandler': function (anEvent) { 64 'updateProgressHandler': function (anEvent) {
68 MochiKit.Style.setElementDimensions(this.getId('loadingBarProgress'), {w:anEvent}, '%'); 65 MochiKit.Style.setElementDimensions(this.getId('loadingBarProgress'), {w:anEvent}, '%');
69 }, 66 },
70 67
71 //------------------------------------------------------------------------- 68 //-------------------------------------------------------------------------
72 __syntaxFix__: "syntax fix" 69 __syntaxFix__: "syntax fix"
73}); 70});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js
index b9bb850..1992154 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Common.Components.SimpleMessagePanel = function(args) { 28Clipperz.PM.UI.Common.Components.SimpleMessagePanel = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Common.Components.SimpleMessagePanel.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Common.Components.SimpleMessagePanel.superclass.constructor.apply(this, arguments);
35 32
36 this._title = args.title || Clipperz.Base.exception.raise('MandatoryParameter'); 33 this._title = args.title || Clipperz.Base.exception.raise('MandatoryParameter');
37 this._text = args.text || Clipperz.Base.exception.raise('MandatoryParameter'); 34 this._text = args.text || Clipperz.Base.exception.raise('MandatoryParameter');
38 this._type = args.type || Clipperz.Base.exception.raise('MandatoryParameter'); //ALERT, INFO, ERROR 35 this._type = args.type || Clipperz.Base.exception.raise('MandatoryParameter'); //ALERT, INFO, ERROR
39 this._buttons = args.buttons || Clipperz.Base.exception.raise('MandatoryParameter'); 36 this._buttons = args.buttons || Clipperz.Base.exception.raise('MandatoryParameter');
40 37
41 this._buttonComponents = []; 38 this._buttonComponents = [];
42 this._deferred = null; 39 this._deferred = null;
43 40
44 this.renderModalMask(); 41 this.renderModalMask();
45 42
46 return this; 43 return this;
47} 44}
48 45
49//============================================================================= 46//=============================================================================
50 47
51Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.SimpleMessagePanel, Clipperz.PM.UI.Common.Components.BaseComponent, { 48Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.SimpleMessagePanel, Clipperz.PM.UI.Common.Components.BaseComponent, {
52 49
53 //------------------------------------------------------------------------- 50 //-------------------------------------------------------------------------
54 51
55 'toString': function () { 52 'toString': function () {
56 return "Clipperz.PM.UI.Common.Components.SimpleMessagePanel component"; 53 return "Clipperz.PM.UI.Common.Components.SimpleMessagePanel component";
57 }, 54 },
58 55
59 //------------------------------------------------------------------------- 56 //-------------------------------------------------------------------------
60 57
61 'deferred': function() { 58 'deferred': function() {
62 if (this._deferred == null) { 59 if (this._deferred == null) {
63 this._deferred = new Clipperz.Async.Deferred("SimpleMessagePanel.deferred", {trace:false}); 60 this._deferred = new Clipperz.Async.Deferred("SimpleMessagePanel.deferred", {trace:false});
64 } 61 }
65 62
66 return this._deferred; 63 return this._deferred;
67 }, 64 },
68 65
69 //------------------------------------------------------------------------- 66 //-------------------------------------------------------------------------
70 67
71 'title': function () { 68 'title': function () {
72 return this._title; 69 return this._title;
73 }, 70 },
74 71
75 'setTitle': function (aValue) { 72 'setTitle': function (aValue) {
76 this._title = aValue; 73 this._title = aValue;
77 74
78 if (this.getElement('title') != null) { 75 if (this.getElement('title') != null) {
79 this.getElement('title').innerHTML = aValue; 76 this.getElement('title').innerHTML = aValue;
80 } 77 }
81 }, 78 },
82 79
83 //------------------------------------------------------------------------- 80 //-------------------------------------------------------------------------
84 81
85 'text': function () { 82 'text': function () {
86 return this._text; 83 return this._text;
87 }, 84 },
88 85
89 'setText': function (aValue) { 86 'setText': function (aValue) {
90 this._text = aValue; 87 this._text = aValue;
91 88
92 if (this.getElement('text') != null) { 89 if (this.getElement('text') != null) {
93 this.getElement('text').innerHTML = aValue; 90 this.getElement('text').innerHTML = aValue;
94 } 91 }
95 }, 92 },
96 93
97 //------------------------------------------------------------------------- 94 //-------------------------------------------------------------------------
98 95
99 'type': function () { 96 'type': function () {
100 return this._type; 97 return this._type;
101 }, 98 },
102 99
103 'setType': function (aValue) { 100 'setType': function (aValue) {
104 if (this.getElement('icon') != null) { 101 if (this.getElement('icon') != null) {
105 MochiKit.DOM.removeElementClass(this.getId('icon'), this._type); 102 MochiKit.DOM.removeElementClass(this.getId('icon'), this._type);
106 MochiKit.DOM.addElementClass(this.getId('icon'), aValue); 103 MochiKit.DOM.addElementClass(this.getId('icon'), aValue);
107 } 104 }
108 105
109 this._type = aValue; 106 this._type = aValue;
110 }, 107 },
111 108
112 //------------------------------------------------------------------------- 109 //-------------------------------------------------------------------------
113 110
114 'buttons': function () { 111 'buttons': function () {
115 return this._buttons; 112 return this._buttons;
116 }, 113 },
117 114
118 'setButtons': function (someValues) { 115 'setButtons': function (someValues) {
119 MochiKit.Iter.forEach(this.buttonComponents(), MochiKit.Base.methodcaller('clear')); 116 MochiKit.Iter.forEach(this.buttonComponents(), MochiKit.Base.methodcaller('clear'));
120 117
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js
index afb3bf9..936514a 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js
@@ -1,69 +1,66 @@
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.Base.module('Clipperz.PM.UI.Common.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Common.Components');
30 27
31Clipperz.PM.UI.Common.Components.TabPanelComponent = function(args) { 28Clipperz.PM.UI.Common.Components.TabPanelComponent = function(args) {
32 args = args || {}; 29 args = args || {};
33 Clipperz.PM.UI.Common.Components.TabPanelComponent.superclass.constructor.call(this, args); 30 Clipperz.PM.UI.Common.Components.TabPanelComponent.superclass.constructor.call(this, args);
34 31
35 this._tabPanelController = null; 32 this._tabPanelController = null;
36 33
37 return this; 34 return this;
38} 35}
39 36
40//============================================================================= 37//=============================================================================
41 38
42Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.TabPanelComponent, Clipperz.PM.UI.Common.Components.BaseComponent, { 39Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.TabPanelComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
43 40
44 'toString': function () { 41 'toString': function () {
45 return "Clipperz.PM.UI.Common.Components.TabPanelComponent component"; 42 return "Clipperz.PM.UI.Common.Components.TabPanelComponent component";
46 }, 43 },
47 44
48 //------------------------------------------------------------------------- 45 //-------------------------------------------------------------------------
49 46
50 'tabPanelControllerConfiguration': function() { 47 'tabPanelControllerConfiguration': function() {
51 return this._tabPanelControllerConfiguration; 48 return this._tabPanelControllerConfiguration;
52 }, 49 },
53 50
54 'tabPanelController': function() { 51 'tabPanelController': function() {
55 if (this._tabPanelController == null) { 52 if (this._tabPanelController == null) {
56 this._tabPanelController = new Clipperz.PM.UI.Common.Controllers.TabPanelController({component:this, configuration:this.tabPanelControllerConfiguration()}); 53 this._tabPanelController = new Clipperz.PM.UI.Common.Controllers.TabPanelController({component:this, configuration:this.tabPanelControllerConfiguration()});
57 } 54 }
58 55
59 return this._tabPanelController; 56 return this._tabPanelController;
60 }, 57 },
61 58
62 'initiallySelectedTab': function() { 59 'initiallySelectedTab': function() {
63 return this._initiallySelectedTab; 60 return this._initiallySelectedTab;
64 }, 61 },
65 62
66 //------------------------------------------------------------------------- 63 //-------------------------------------------------------------------------
67 __syntaxFix__: "syntax fix" 64 __syntaxFix__: "syntax fix"
68 65
69}); 66});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/Tooltip.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/Tooltip.js
index 7507b86..095e8ed 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/Tooltip.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/Tooltip.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Common.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Common.Components');
30 27
31Clipperz.PM.UI.Common.Components.Tooltip = function(args) { 28Clipperz.PM.UI.Common.Components.Tooltip = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Common.Components.Tooltip.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Common.Components.Tooltip.superclass.constructor.apply(this, arguments);
35 32
36 this._element = args.element|| Clipperz.Base.exception.raise('MandatoryParameter'); 33 this._element = args.element|| Clipperz.Base.exception.raise('MandatoryParameter');
37 this._text = args.text || Clipperz.Base.exception.raise('MandatoryParameter'); 34 this._text = args.text || Clipperz.Base.exception.raise('MandatoryParameter');
38 this._position = args.position || 'BELOW'; //'BELOW', 'ABOVE', 'LEFT', 'RIGHT' 35 this._position = args.position || 'BELOW'; //'BELOW', 'ABOVE', 'LEFT', 'RIGHT'
39 36
40 this._boxDimensions = null; 37 this._boxDimensions = null;
41 this._enabled = (typeof(args.enabled) == 'undefined' ? true : args.enabled); 38 this._enabled = (typeof(args.enabled) == 'undefined' ? true : args.enabled);
42 this._isVisible = false; 39 this._isVisible = false;
43 40
44 this.renderSelf(); 41 this.renderSelf();
45 42
46 return this; 43 return this;
47} 44}
48 45
49//============================================================================= 46//=============================================================================
50 47
51Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.Tooltip, Clipperz.PM.UI.Common.Components.BaseComponent, { 48Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.Tooltip, Clipperz.PM.UI.Common.Components.BaseComponent, {
52 49
53 //------------------------------------------------------------------------- 50 //-------------------------------------------------------------------------
54 51
55 'toString': function () { 52 'toString': function () {
56 return "Clipperz.PM.UI.Common.Components.Tooltip component"; 53 return "Clipperz.PM.UI.Common.Components.Tooltip component";
57 }, 54 },
58 55
59 //------------------------------------------------------------------------- 56 //-------------------------------------------------------------------------
60 57
61 'text': function () { 58 'text': function () {
62 return this._text; 59 return this._text;
63 }, 60 },
64 61
65 'setText': function (aValue) { 62 'setText': function (aValue) {
66 this._text = aValue; 63 this._text = aValue;
67 }, 64 },
68 65
69 //------------------------------------------------------------------------- 66 //-------------------------------------------------------------------------
70 67
71 'position': function () { 68 'position': function () {
72 return this._position; 69 return this._position;
73 }, 70 },
74 71
75 'setPosition': function (aValue) { 72 'setPosition': function (aValue) {
76 this._position = aValue; 73 this._position = aValue;
77 }, 74 },
78 75
79 //------------------------------------------------------------------------- 76 //-------------------------------------------------------------------------
80 77
81 'enabled': function () { 78 'enabled': function () {
82 return this._enabled; 79 return this._enabled;
83 }, 80 },
84 81
85 'setIsEnabled': function (aValue) { 82 'setIsEnabled': function (aValue) {
86 this._enabled = aValue; 83 this._enabled = aValue;
87 }, 84 },
88 85
89 //------------------------------------------------------------------------- 86 //-------------------------------------------------------------------------
90 87
91 'isVisible': function () { 88 'isVisible': function () {
92 return this._isVisible; 89 return this._isVisible;
93 }, 90 },
94 91
95 'setIsVisible': function (aValue) { 92 'setIsVisible': function (aValue) {
96 this._isVisible = aValue; 93 this._isVisible = aValue;
97 }, 94 },
98 95
99 //------------------------------------------------------------------------- 96 //-------------------------------------------------------------------------
100 97
101 'renderSelf': function() { 98 'renderSelf': function() {
102 // this.append(this.element(), {tag:'div', id:this.getId('tooltip'), cls:'tooltip ' + this.position(), children:[ 99 // this.append(this.element(), {tag:'div', id:this.getId('tooltip'), cls:'tooltip ' + this.position(), children:[
103 // this.append(MochiKit.DOM.currentDocument().body, {tag:'div', id:this.getId('tooltip'), cls:'tooltip ' + this.position(), children:[ 100 // this.append(MochiKit.DOM.currentDocument().body, {tag:'div', id:this.getId('tooltip'), cls:'tooltip ' + this.position(), children:[
104 this.append(MochiKit.DOM.getElement('Clipperz_PM_UI_Common_Components_Tooltip_wrapperNode'), {tag:'div', id:this.getId('tooltip'), cls:'tooltip ' + this.position(), children:[ 101 this.append(MochiKit.DOM.getElement('Clipperz_PM_UI_Common_Components_Tooltip_wrapperNode'), {tag:'div', id:this.getId('tooltip'), cls:'tooltip ' + this.position(), children:[
105 {tag:'div', id:this.getId('body'), cls:'tooltip_body', children:[ 102 {tag:'div', id:this.getId('body'), cls:'tooltip_body', children:[
106 {tag:'div', cls:'tooltip_text', children:[ 103 {tag:'div', cls:'tooltip_text', children:[
107 {tag:'span', html:this.text()} 104 {tag:'span', html:this.text()}
108 ]}, 105 ]},
109 {tag:'div', id:this.getId('footer'), cls:'tooltip_footer'} 106 {tag:'div', id:this.getId('footer'), cls:'tooltip_footer'}
110 ]}, 107 ]},
111 {tag:'div', id:this.getId('arrow'), cls:'tooltip_arrow'} 108 {tag:'div', id:this.getId('arrow'), cls:'tooltip_arrow'}
112 ]}); 109 ]});
113 110
114 this._boxDimensions = MochiKit.Style.getElementDimensions(this.getId('body')); 111 this._boxDimensions = MochiKit.Style.getElementDimensions(this.getId('body'));
115 // this._boxDimensions.h += MochiKit.Style.getElementDimensions(this.getId('footer')).h; 112 // this._boxDimensions.h += MochiKit.Style.getElementDimensions(this.getId('footer')).h;
116 113
117 MochiKit.Style.hideElement(this.displayElement()); 114 MochiKit.Style.hideElement(this.displayElement());
118 MochiKit.Signal.connect(this.element(), 'onmouseenter', this, 'show'); 115 MochiKit.Signal.connect(this.element(), 'onmouseenter', this, 'show');
119 MochiKit.Signal.connect(this.element(), 'onmouseleave', this, 'hide'); 116 MochiKit.Signal.connect(this.element(), 'onmouseleave', this, 'hide');
120 }, 117 },
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js
index c31969e..c41fc7c 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Common.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Common.Components');
30 27
31Clipperz.PM.UI.Common.Components.TranslatorWidget = function(args) { 28Clipperz.PM.UI.Common.Components.TranslatorWidget = function(args) {
32Clipperz.log(">>> TranslatorWidget.new"); 29Clipperz.log(">>> TranslatorWidget.new");
33 args = args || {}; 30 args = args || {};
34 31
35 Clipperz.PM.UI.Common.Components.TranslatorWidget.superclass.constructor.apply(this, arguments); 32 Clipperz.PM.UI.Common.Components.TranslatorWidget.superclass.constructor.apply(this, arguments);
36 33
37 // this._element = args.element|| Clipperz.Base.exception.raise('MandatoryParameter'); 34 // this._element = args.element|| Clipperz.Base.exception.raise('MandatoryParameter');
38 // this._stringID = args.stringID || MochiKit.DOM.getNodeAttribute(this.element(), 'stringID')|| Clipperz.Base.exception.raise('MandatoryParameter'); 35 // this._stringID = args.stringID || MochiKit.DOM.getNodeAttribute(this.element(), 'stringID')|| Clipperz.Base.exception.raise('MandatoryParameter');
39 36
40 //MochiKit.Signal.connect(this.element(), 'onmouseenter', this, 'show'); 37 //MochiKit.Signal.connect(this.element(), 'onmouseenter', this, 'show');
41 //MochiKit.Signal.connect(this.element(), 'onmouseleave', this, 'hide'); 38 //MochiKit.Signal.connect(this.element(), 'onmouseleave', this, 'hide');
42 39
43Clipperz.log("<<< TranslatorWidget.new"); 40Clipperz.log("<<< TranslatorWidget.new");
44 return this; 41 return this;
45} 42}
46 43
47//============================================================================= 44//=============================================================================
48 45
49Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.TranslatorWidget, Clipperz.PM.UI.Common.Components.BaseComponent, { 46Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.TranslatorWidget, Clipperz.PM.UI.Common.Components.BaseComponent, {
50 47
51 //------------------------------------------------------------------------- 48 //-------------------------------------------------------------------------
52 49
53 'toString': function () { 50 'toString': function () {
54 return "Clipperz.PM.UI.Common.Components.TranslatorWidget component"; 51 return "Clipperz.PM.UI.Common.Components.TranslatorWidget component";
55 }, 52 },
56 53
57 //------------------------------------------------------------------------- 54 //-------------------------------------------------------------------------
58/* 55/*
59 'renderSelf': function() { 56 'renderSelf': function() {
60 this.append(this.element(), {tag:'div', id:this.getId('tooltip'), cls:'tooltip ' + this.position(), children:[ 57 this.append(this.element(), {tag:'div', id:this.getId('tooltip'), cls:'tooltip ' + this.position(), children:[
61 {tag:'div', id:this.getId('body'), cls:'tooltip_body', children:[ 58 {tag:'div', id:this.getId('body'), cls:'tooltip_body', children:[
62 {tag:'div', cls:'tooltip_text', children:[ 59 {tag:'div', cls:'tooltip_text', children:[
63 {tag:'span', html:this.text()} 60 {tag:'span', html:this.text()}
64 ]}, 61 ]},
65 {tag:'div', id:this.getId('footer'), cls:'tooltip_footer'} 62 {tag:'div', id:this.getId('footer'), cls:'tooltip_footer'}
66 ]}, 63 ]},
67 {tag:'div', id:this.getId('arrow'), cls:'tooltip_arrow'} 64 {tag:'div', id:this.getId('arrow'), cls:'tooltip_arrow'}
68 ]}); 65 ]});
69 66
70 this._boxDimensions = MochiKit.Style.getElementDimensions(this.getId('body')); 67 this._boxDimensions = MochiKit.Style.getElementDimensions(this.getId('body'));
71 // this._boxDimensions.h += MochiKit.Style.getElementDimensions(this.getId('footer')).h; 68 // this._boxDimensions.h += MochiKit.Style.getElementDimensions(this.getId('footer')).h;
72 69
73 MochiKit.Style.hideElement(this.displayElement()); 70 MochiKit.Style.hideElement(this.displayElement());
74 MochiKit.Signal.connect(this.element(), 'onmouseenter', this, 'show'); 71 MochiKit.Signal.connect(this.element(), 'onmouseenter', this, 'show');
75 MochiKit.Signal.connect(this.element(), 'onmouseleave', this, 'hide'); 72 MochiKit.Signal.connect(this.element(), 'onmouseleave', this, 'hide');
76 }, 73 },
77*/ 74*/
78 //----------------------------------------------------- 75 //-----------------------------------------------------
79/* 76/*
80 'displayElement': function() { 77 'displayElement': function() {
81 return this.getElement('tooltip'); 78 return this.getElement('tooltip');
82 }, 79 },
83*/ 80*/
84 //------------------------------------------------------------------------- 81 //-------------------------------------------------------------------------
85/* 82/*
86 'boxDimensions': function () { 83 'boxDimensions': function () {
87 return this._boxDimensions; 84 return this._boxDimensions;
88 }, 85 },
89*/ 86*/
90 //------------------------------------------------------------------------- 87 //-------------------------------------------------------------------------
91 88
92 'show': function (anElement, aStringID) { 89 'show': function (anElement, aStringID) {
93 Clipperz.log(">>> Clipperz.PM.UI.Common.Components.TranslatorWidget.show: " + aStringID); 90 Clipperz.log(">>> Clipperz.PM.UI.Common.Components.TranslatorWidget.show: " + aStringID);
94/* 91/*
95 var elementSizeAndPosition; 92 var elementSizeAndPosition;
96 var arrowPosition; 93 var arrowPosition;
97 var bodyPosition; 94 var bodyPosition;
98 95
99 arrowPosition = {}; 96 arrowPosition = {};
100 bodyPosition = {}; 97 bodyPosition = {};
101 98
102 elementSizeAndPosition = Clipperz.Style.getSizeAndPosition(this.element()); 99 elementSizeAndPosition = Clipperz.Style.getSizeAndPosition(this.element());
103 switch (this.position()) { 100 switch (this.position()) {
104 case 'ABOVE': 101 case 'ABOVE':
105 MochiKit.Style.setElementDimensions(this.getId('arrow'), {w:36, h:13}, 'px'); 102 MochiKit.Style.setElementDimensions(this.getId('arrow'), {w:36, h:13}, 'px');
106 bodyPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - this.boxDimensions().w/2); 103 bodyPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - this.boxDimensions().w/2);
107 bodyPosition.y = elementSizeAndPosition.position.y - this.boxDimensions().h - 13; 104 bodyPosition.y = elementSizeAndPosition.position.y - this.boxDimensions().h - 13;
108 105
109 arrowPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - 36/2); 106 arrowPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - 36/2);
110 arrowPosition.y = elementSizeAndPosition.position.y - 13; 107 arrowPosition.y = elementSizeAndPosition.position.y - 13;
111 break; 108 break;
112 case 'BELOW': 109 case 'BELOW':
113 MochiKit.Style.setElementDimensions(this.getId('arrow'), {w:36, h:13}, 'px'); 110 MochiKit.Style.setElementDimensions(this.getId('arrow'), {w:36, h:13}, 'px');
114 bodyPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - this.boxDimensions().w/2); 111 bodyPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - this.boxDimensions().w/2);
115 bodyPosition.y = elementSizeAndPosition.position.y + elementSizeAndPosition.dimensions.h + 13; 112 bodyPosition.y = elementSizeAndPosition.position.y + elementSizeAndPosition.dimensions.h + 13;
116 113
117 arrowPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - 36/2); 114 arrowPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - 36/2);
118 arrowPosition.y = elementSizeAndPosition.position.y + elementSizeAndPosition.dimensions.h; 115 arrowPosition.y = elementSizeAndPosition.position.y + elementSizeAndPosition.dimensions.h;
119 break; 116 break;
120 case 'LEFT': 117 case 'LEFT':
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js
index e534435..5fd10f9 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Common.Controllers'); 26Clipperz.Base.module('Clipperz.PM.UI.Common.Controllers');
30 27
31Clipperz.PM.UI.Common.Controllers.DirectLoginRunner = function(args) { 28Clipperz.PM.UI.Common.Controllers.DirectLoginRunner = function(args) {
32 this._directLogin = args['directLogin'] || Clipperz.Base.exception.raise('MandatoryParameter'); 29 this._directLogin = args['directLogin'] || Clipperz.Base.exception.raise('MandatoryParameter');
33 this._target = Clipperz.PM.Crypto.randomKey(); 30 this._target = Clipperz.PM.Crypto.randomKey();
34 31
35 return this; 32 return this;
36} 33}
37 34
38MochiKit.Base.update(Clipperz.PM.UI.Common.Controllers.DirectLoginRunner.prototype, { 35MochiKit.Base.update(Clipperz.PM.UI.Common.Controllers.DirectLoginRunner.prototype, {
39 36
40 'toString': function() { 37 'toString': function() {
41 return "Clipperz.PM.UI.Common.Controllers.DirectLoginRunner"; 38 return "Clipperz.PM.UI.Common.Controllers.DirectLoginRunner";
42 }, 39 },
43 40
44 //----------------------------------------------------------------------------- 41 //-----------------------------------------------------------------------------
45 42
46 'directLogin': function () { 43 'directLogin': function () {
47 return this._directLogin; 44 return this._directLogin;
48 }, 45 },
49 46
50 //----------------------------------------------------------------------------- 47 //-----------------------------------------------------------------------------
51 48
52 'target': function () { 49 'target': function () {
53 return this._target; 50 return this._target;
54 }, 51 },
55 52
56 //============================================================================= 53 //=============================================================================
57 54
58 'setWindowTitle': function (aWindow, aTitle) { 55 'setWindowTitle': function (aWindow, aTitle) {
59 aWindow.document.title = aTitle; 56 aWindow.document.title = aTitle;
60 }, 57 },
61 58
62 'setWindowBody': function (aWindow, anHTML) { 59 'setWindowBody': function (aWindow, anHTML) {
63 aWindow.document.body.innerHTML = anHTML; 60 aWindow.document.body.innerHTML = anHTML;
64 }, 61 },
65 62
66 //============================================================================= 63 //=============================================================================
67 64
68 'initialWindowSetup': function (aWindow) { 65 'initialWindowSetup': function (aWindow) {
69 this.setWindowTitle(aWindow, "Loading Clipperz Direct Login"); 66 this.setWindowTitle(aWindow, "Loading Clipperz Direct Login");
70 this.setWindowBody (aWindow, MochiKit.DOM.toHTML(MochiKit.DOM.H3("Loading Clipperz Direct Login ..."))); 67 this.setWindowBody (aWindow, MochiKit.DOM.toHTML(MochiKit.DOM.H3("Loading Clipperz Direct Login ...")));
71 }, 68 },
72 69
73 //----------------------------------------------------------------------------- 70 //-----------------------------------------------------------------------------
74 71
75 'updateWindowWithDirectLoginLabel': function (aWindow, aLabel) { 72 'updateWindowWithDirectLoginLabel': function (aWindow, aLabel) {
76 var titleText; 73 var titleText;
77 var bodyText; 74 var bodyText;
78 75
79 titleText = "Loading '__label__' Direct Login".replace(/__label__/, aLabel) 76 titleText = "Loading '__label__' Direct Login".replace(/__label__/, aLabel)
80 bodyText = "Loading '__label__' Direct Login... ".replace(/__label__/, aLabel) 77 bodyText = "Loading '__label__' Direct Login... ".replace(/__label__/, aLabel)
81 78
82 this.setWindowTitle(aWindow, titleText); 79 this.setWindowTitle(aWindow, titleText);
83 this.setWindowBody (aWindow, MochiKit.DOM.toHTML(MochiKit.DOM.H3(bodyText))); 80 this.setWindowBody (aWindow, MochiKit.DOM.toHTML(MochiKit.DOM.H3(bodyText)));
84 }, 81 },
85 82
86 //----------------------------------------------------------------------------- 83 //-----------------------------------------------------------------------------
87 84
88 'updateWindowWithHTMLContent': function (aWindow, anHtml) { 85 'updateWindowWithHTMLContent': function (aWindow, anHtml) {
89 this.setWindowBody(aWindow, anHtml); 86 this.setWindowBody(aWindow, anHtml);
90 }, 87 },
91 88
92 //============================================================================= 89 //=============================================================================
93 90
94 'submitLoginForm': function(aWindow, aSubmitFunction) { 91 'submitLoginForm': function(aWindow, aSubmitFunction) {
95 MochiKit.DOM.withWindow(aWindow, MochiKit.Base.bind(function () { 92 MochiKit.DOM.withWindow(aWindow, MochiKit.Base.bind(function () {
96 var formElement; 93 var formElement;
97 var submitButtons; 94 var submitButtons;
98 95
99 formElement = MochiKit.DOM.getElement('directLoginForm'); 96 formElement = MochiKit.DOM.getElement('directLoginForm');
100 97
101 submitButtons = MochiKit.Base.filter(function(anInputElement) { 98 submitButtons = MochiKit.Base.filter(function(anInputElement) {
102 return ((anInputElement.tagName.toLowerCase() == 'input') && (anInputElement.getAttribute('type').toLowerCase() == 'submit')); 99 return ((anInputElement.tagName.toLowerCase() == 'input') && (anInputElement.getAttribute('type').toLowerCase() == 'submit'));
103 }, formElement.elements); 100 }, formElement.elements);
104 101
105 if (submitButtons.length == 0) { 102 if (submitButtons.length == 0) {
106 if (typeof(formElement.submit) == 'function') { 103 if (typeof(formElement.submit) == 'function') {
107 formElement.submit(); 104 formElement.submit();
108 } else { 105 } else {
109 aSubmitFunction.apply(formElement); 106 aSubmitFunction.apply(formElement);
110 } 107 }
111/* 108/*
112 varformSubmitFunction; 109 varformSubmitFunction;
113 110
114 formSubmitFunction = MochiKit.Base.method(formElement, 'submit'); 111 formSubmitFunction = MochiKit.Base.method(formElement, 'submit');
115 if (Clipperz_IEisBroken == true) { 112 if (Clipperz_IEisBroken == true) {
116 formElement.submit(); 113 formElement.submit();
117 } else { 114 } else {
118 formSubmitFunction(); 115 formSubmitFunction();
119 } 116 }
120*/ 117*/
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/ProgressBarController.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/ProgressBarController.js
index a4fa400..41fe17f 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/ProgressBarController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/ProgressBarController.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Common.Controllers'); 26Clipperz.Base.module('Clipperz.PM.UI.Common.Controllers');
30 27
31Clipperz.PM.UI.Common.Controllers.ProgressBarController = function(args) { 28Clipperz.PM.UI.Common.Controllers.ProgressBarController = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 this._numberOfSteps= 0; 31 this._numberOfSteps= 0;
35 this._currentStep= 0; 32 this._currentStep= 0;
36 33
37 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'initProgress', this, 'initProgressHandle'); 34 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'initProgress', this, 'initProgressHandle');
38 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'updateProgress',this, 'updateProgressHandle'); 35 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'updateProgress',this, 'updateProgressHandle');
39 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'advanceProgress',this, 'advanceProgressHandle'); 36 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'advanceProgress',this, 'advanceProgressHandle');
40 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'progressDone', this, 'progressDoneHandle'); 37 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'progressDone', this, 'progressDoneHandle');
41 38
42 return this; 39 return this;
43} 40}
44 41
45MochiKit.Base.update(Clipperz.PM.UI.Common.Controllers.ProgressBarController.prototype, { 42MochiKit.Base.update(Clipperz.PM.UI.Common.Controllers.ProgressBarController.prototype, {
46 43
47 'toString': function() { 44 'toString': function() {
48 return "Clipperz.PM.UI.Common.Controllers.ProgressBarController"; 45 return "Clipperz.PM.UI.Common.Controllers.ProgressBarController";
49 }, 46 },
50 47
51 //----------------------------------------------------------------------------- 48 //-----------------------------------------------------------------------------
52 49
53 'numberOfSteps': function() { 50 'numberOfSteps': function() {
54 return this._numberOfSteps; 51 return this._numberOfSteps;
55 }, 52 },
56 53
57 'setNumberOfSteps': function (aValue) { 54 'setNumberOfSteps': function (aValue) {
58 this._numberOfSteps = aValue; 55 this._numberOfSteps = aValue;
59 }, 56 },
60 57
61 'updateNumberOfSteps': function (aValue) { 58 'updateNumberOfSteps': function (aValue) {
62 this._numberOfSteps += aValue; 59 this._numberOfSteps += aValue;
63 }, 60 },
64 61
65 //----------------------------------------------------------------------------- 62 //-----------------------------------------------------------------------------
66 63
67 'currentStep': function() { 64 'currentStep': function() {
68 return this._currentStep; 65 return this._currentStep;
69 }, 66 },
70 67
71 'advanceCurrentStep': function () { 68 'advanceCurrentStep': function () {
72 this._currentStep ++; 69 this._currentStep ++;
73 }, 70 },
74 71
75 //----------------------------------------------------------------------------- 72 //-----------------------------------------------------------------------------
76 73
77 'completedPercentage': function () { 74 'completedPercentage': function () {
78 var result; 75 var result;
79//Clipperz.log(">>> completedPercentage" + this.currentStep() + "/" + this.numberOfSteps(), this.currentStep() / this.numberOfSteps()); 76//Clipperz.log(">>> completedPercentage" + this.currentStep() + "/" + this.numberOfSteps(), this.currentStep() / this.numberOfSteps());
80 if (this.numberOfSteps() == 0) { 77 if (this.numberOfSteps() == 0) {
81 result = 0; 78 result = 0;
82 } else { 79 } else {
83 result = (Math.min(100, 100 * (this.currentStep() / this.numberOfSteps()))); 80 result = (Math.min(100, 100 * (this.currentStep() / this.numberOfSteps())));
84 } 81 }
85//Clipperz.log("<<< completedPercentage", result); 82//Clipperz.log("<<< completedPercentage", result);
86 return result; 83 return result;
87 }, 84 },
88 85
89 //----------------------------------------------------------------------------- 86 //-----------------------------------------------------------------------------
90 87
91 'resetStatus': function () { 88 'resetStatus': function () {
92 this._numberOfSteps= 0; 89 this._numberOfSteps= 0;
93 this._currentStep= 0; 90 this._currentStep= 0;
94 }, 91 },
95 92
96 //----------------------------------------------------------------------------- 93 //-----------------------------------------------------------------------------
97 94
98 'updateProgress': function () { 95 'updateProgress': function () {
99//Clipperz.log(">>> updateProgress: " + this.completedPercentage() + "%"); 96//Clipperz.log(">>> updateProgress: " + this.completedPercentage() + "%");
100 MochiKit.Signal.signal(this, 'updateProgress', this.completedPercentage()); 97 MochiKit.Signal.signal(this, 'updateProgress', this.completedPercentage());
101 }, 98 },
102 99
103 //============================================================================= 100 //=============================================================================
104 101
105 'initProgressHandle': function (anEvent) { 102 'initProgressHandle': function (anEvent) {
106//Clipperz.log(">>> initProgressHandle - steps: " + (anEvent != null ? anEvent['steps'] : 0)); 103//Clipperz.log(">>> initProgressHandle - steps: " + (anEvent != null ? anEvent['steps'] : 0));
107 this.resetStatus(); 104 this.resetStatus();
108 if (anEvent != null) { 105 if (anEvent != null) {
109 this.setNumberOfSteps(anEvent['steps']); 106 this.setNumberOfSteps(anEvent['steps']);
110 } 107 }
111 MochiKit.Signal.signal(this, 'initProgress'); 108 MochiKit.Signal.signal(this, 'initProgress');
112 this.updateProgress(); 109 this.updateProgress();
113 }, 110 },
114 111
115 //............................................................................. 112 //.............................................................................
116 113
117 'updateProgressHandle': function (anEvent) { 114 'updateProgressHandle': function (anEvent) {
118 this.updateNumberOfSteps(anEvent['extraSteps']); 115 this.updateNumberOfSteps(anEvent['extraSteps']);
119//Clipperz.log("=== updateProgressHandle - steps: " + this.numberOfSteps() + " (extra " + anEvent['extraSteps'] + ")"); 116//Clipperz.log("=== updateProgressHandle - steps: " + this.numberOfSteps() + " (extra " + anEvent['extraSteps'] + ")");
120 this.updateProgress(); 117 this.updateProgress();
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js
index fbc5929..341fde9 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Common.Controllers'); 26Clipperz.Base.module('Clipperz.PM.UI.Common.Controllers');
30 27
31Clipperz.PM.UI.Common.Controllers.TabPanelController = function(args) { 28Clipperz.PM.UI.Common.Controllers.TabPanelController = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 this._component = args.component; 31 this._component = args.component;
35 this._configuration = args.configuration; 32 this._configuration = args.configuration;
36 this._isEnabled = args.enabled || true; 33 this._isEnabled = args.enabled || true;
37 34
38 this._selectedTab = null; 35 this._selectedTab = null;
39 return this; 36 return this;
40} 37}
41 38
42MochiKit.Base.update(Clipperz.PM.UI.Common.Controllers.TabPanelController.prototype, { 39MochiKit.Base.update(Clipperz.PM.UI.Common.Controllers.TabPanelController.prototype, {
43 40
44 'toString': function() { 41 'toString': function() {
45 return "Clipperz.PM.UI.Common.Controllers.TabPanelController"; 42 return "Clipperz.PM.UI.Common.Controllers.TabPanelController";
46 }, 43 },
47 44
48 //----------------------------------------------------------------------------- 45 //-----------------------------------------------------------------------------
49 46
50 'component': function() { 47 'component': function() {
51 return this._component; 48 return this._component;
52 }, 49 },
53 50
54 'configuration': function() { 51 'configuration': function() {
55 return this._configuration; 52 return this._configuration;
56 }, 53 },
57 54
58 //----------------------------------------------------------------------------- 55 //-----------------------------------------------------------------------------
59 56
60 'getElement': function(anElementID) { 57 'getElement': function(anElementID) {
61 return this.component().getElement(anElementID); 58 return this.component().getElement(anElementID);
62 }, 59 },
63 60
64 'tabForTabElement': function(anElement) { 61 'tabForTabElement': function(anElement) {
65 varresult; 62 varresult;
66 63
67 for (result in this.configuration()) { 64 for (result in this.configuration()) {
68 if (this.getElement(this.configuration()[result]['tab']) == anElement) { 65 if (this.getElement(this.configuration()[result]['tab']) == anElement) {
69 break; 66 break;
70 } 67 }
71 } 68 }
72 69
73 return result; 70 return result;
74 }, 71 },
75 72
76 //----------------------------------------------------------------------------- 73 //-----------------------------------------------------------------------------
77 74
78 'setupTab': function(aConfiguration) { 75 'setupTab': function(aConfiguration) {
79 vartabElement; 76 vartabElement;
80 77
81 tabElement = this.getElement(aConfiguration['tab']); 78 tabElement = this.getElement(aConfiguration['tab']);
82 79
83 MochiKit.DOM.removeElementClass(tabElement, 'selected'); 80 MochiKit.DOM.removeElementClass(tabElement, 'selected');
84 MochiKit.Signal.connect(tabElement, 'onclick', this, 'handleTabClick') 81 MochiKit.Signal.connect(tabElement, 'onclick', this, 'handleTabClick')
85 }, 82 },
86 83
87 'setupPanel': function(aConfiguration) { 84 'setupPanel': function(aConfiguration) {
88 this.hidePanel(aConfiguration['panel']); 85 this.hidePanel(aConfiguration['panel']);
89 }, 86 },
90 87
91 'setup': function(args) { 88 'setup': function(args) {
92 args = args || {}; 89 args = args || {};
93 90
94 MochiKit.Base.map(MochiKit.Base.method(this, 'setupTab'),MochiKit.Base.values(this.configuration())); 91 MochiKit.Base.map(MochiKit.Base.method(this, 'setupTab'),MochiKit.Base.values(this.configuration()));
95 MochiKit.Base.map(MochiKit.Base.method(this, 'setupPanel'),MochiKit.Base.values(this.configuration())); 92 MochiKit.Base.map(MochiKit.Base.method(this, 'setupPanel'),MochiKit.Base.values(this.configuration()));
96 this.selectTab(args.selected); 93 this.selectTab(args.selected);
97 }, 94 },
98 95
99 //----------------------------------------------------------------------------- 96 //-----------------------------------------------------------------------------
100 97
101 'hidePanel': function(aPanel) { 98 'hidePanel': function(aPanel) {
102 MochiKit.DOM.removeElementClass(this.getElement(aPanel), 'selected'); 99 MochiKit.DOM.removeElementClass(this.getElement(aPanel), 'selected');
103 }, 100 },
104 101
105 'selectTab': function(aTab) { 102 'selectTab': function(aTab) {
106 if ((aTab != this.selectedTab()) && (this.isEnabled())) { 103 if ((aTab != this.selectedTab()) && (this.isEnabled())) {
107 if (this.selectedTab() != null) { 104 if (this.selectedTab() != null) {
108 MochiKit.DOM.removeElementClass(this.getElement(this.configuration()[this.selectedTab()]['tab']),'selected'); 105 MochiKit.DOM.removeElementClass(this.getElement(this.configuration()[this.selectedTab()]['tab']),'selected');
109 MochiKit.DOM.removeElementClass(this.getElement(this.configuration()[this.selectedTab()]['panel']),'selected'); 106 MochiKit.DOM.removeElementClass(this.getElement(this.configuration()[this.selectedTab()]['panel']),'selected');
110 } 107 }
111 108
112 if (aTab != null) { 109 if (aTab != null) {
113 MochiKit.DOM.addElementClass(this.getElement(this.configuration()[aTab]['tab']),'selected'); 110 MochiKit.DOM.addElementClass(this.getElement(this.configuration()[aTab]['tab']),'selected');
114 MochiKit.DOM.addElementClass(this.getElement(this.configuration()[aTab]['panel']),'selected'); 111 MochiKit.DOM.addElementClass(this.getElement(this.configuration()[aTab]['panel']),'selected');
115 } 112 }
116 113
117 this.setSelectedTab(aTab); 114 this.setSelectedTab(aTab);
118 MochiKit.Signal.signal(this, 'tabSelected', aTab); 115 MochiKit.Signal.signal(this, 'tabSelected', aTab);
119 } 116 }
120 }, 117 },
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/WizardController.js b/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/WizardController.js
index 868cea6..ef38bc6 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/WizardController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Common/Controllers/WizardController.js
@@ -1,31 +1,28 @@
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 //Still empty, but here it should be reasonable to factor in code duplicated between 26 //Still empty, but here it should be reasonable to factor in code duplicated between
30 //- DirectLoginWizardController 27 //- DirectLoginWizardController
31 //- NewUserWizardController \ No newline at end of file 28 //- NewUserWizardController \ No newline at end of file
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Compact/MainController.js b/frontend/gamma/js/Clipperz/PM/UI/Compact/MainController.js
index 22258f6..ea987cd 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Compact/MainController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Compact/MainController.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
29Clipperz.Base.module('Clipperz.PM.UI.Compact'); 26Clipperz.Base.module('Clipperz.PM.UI.Compact');
30 27
31Clipperz.PM.UI.Compact.MainController = function() { 28Clipperz.PM.UI.Compact.MainController = function() {
32 //this._loginPanel = null; 29 //this._loginPanel = null;
33 //this._user = null; 30 //this._user = null;
34// 31//
35 //this._isRunningCompact = false; 32 //this._isRunningCompact = false;
36 // 33 //
37 //Clipperz.NotificationCenter.register(null, 'userConnected', this, 'userConnectedCallback'); 34 //Clipperz.NotificationCenter.register(null, 'userConnected', this, 'userConnectedCallback');
38 //Clipperz.NotificationCenter.register(null, 'switchLanguage', this, 'switchLanguageHandler'); 35 //Clipperz.NotificationCenter.register(null, 'switchLanguage', this, 'switchLanguageHandler');
39// 36//
40 //Clipperz.NotificationCenter.register(null, 'EXCEPTION', this, 'reportException'); 37 //Clipperz.NotificationCenter.register(null, 'EXCEPTION', this, 'reportException');
41 38
42 return this; 39 return this;
43} 40}
44 41
45MochiKit.Base.update(Clipperz.PM.UI.Compact.MainController.prototype, { 42MochiKit.Base.update(Clipperz.PM.UI.Compact.MainController.prototype, {
46 43
47 'toString': function() { 44 'toString': function() {
48 return "Clipperz.PM.UI.Compact.MainController"; 45 return "Clipperz.PM.UI.Compact.MainController";
49 }, 46 },
50 47
51 //----------------------------------------------------------------------------- 48 //-----------------------------------------------------------------------------
52 49
53 'run': function(shouldShowRegistrationForm) { 50 'run': function(shouldShowRegistrationForm) {
54MochiKit.Logging.logDebug("running " + this.toString()); 51MochiKit.Logging.logDebug("running " + this.toString());
55 }, 52 },
56 53
57 //----------------------------------------------------------------------------- 54 //-----------------------------------------------------------------------------
58 __syntaxFix__: "syntax fix" 55 __syntaxFix__: "syntax fix"
59}); \ No newline at end of file 56}); \ No newline at end of file
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/AccountPanel.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/AccountPanel.js
index 4378b19..ee6d7a3 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/AccountPanel.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/AccountPanel.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Web.Components.AccountPanel = function(args) { 28Clipperz.PM.UI.Web.Components.AccountPanel = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Web.Components.AccountPanel.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Web.Components.AccountPanel.superclass.constructor.apply(this, arguments);
35 32
36 //this._initiallySelectedTab = args.selected || 'ACCOUNT'; 33 //this._initiallySelectedTab = args.selected || 'ACCOUNT';
37 this._initiallySelectedTab = args.selected || 'PASSPHRASE'; 34 this._initiallySelectedTab = args.selected || 'PASSPHRASE';
38 this._tabPanelControllerConfiguration = { 35 this._tabPanelControllerConfiguration = {
39 // 'ACCOUNT': { 36 // 'ACCOUNT': {
40 // tab:'accountTab', 37 // tab:'accountTab',
41 // panel:'accountPanel' 38 // panel:'accountPanel'
42 // }, 39 // },
43 'PASSPHRASE': { 40 'PASSPHRASE': {
44 tab:'passphraseTab', 41 tab:'passphraseTab',
45 panel:'passphrasePanel' 42 panel:'passphrasePanel'
46 }, 43 },
47 'PREFERENCES': { 44 'PREFERENCES': {
48 tab:'preferencesTab', 45 tab:'preferencesTab',
49 panel:'preferencesPanel' 46 panel:'preferencesPanel'
50 }, 47 },
51 'LOGIN_HISTORY': { 48 'LOGIN_HISTORY': {
52 tab:'loginHistoryTab', 49 tab:'loginHistoryTab',
53 panel:'loginHistoryPanel' 50 panel:'loginHistoryPanel'
54 } 51 }
55 }; 52 };
56 53
57 return this; 54 return this;
58} 55}
59 56
60//============================================================================= 57//=============================================================================
61 58
62Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.AccountPanel, Clipperz.PM.UI.Common.Components.TabPanelComponent, { 59Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.AccountPanel, Clipperz.PM.UI.Common.Components.TabPanelComponent, {
63 60
64 //------------------------------------------------------------------------- 61 //-------------------------------------------------------------------------
65 62
66 'toString': function () { 63 'toString': function () {
67 return "Clipperz.PM.UI.Web.Components.AccountPanel component"; 64 return "Clipperz.PM.UI.Web.Components.AccountPanel component";
68 }, 65 },
69 66
70 //------------------------------------------------------------------------- 67 //-------------------------------------------------------------------------
71 68
72 'renderSelf': function(/*aContainer, aPosition*/) { 69 'renderSelf': function(/*aContainer, aPosition*/) {
73//Clipperz.log("AccountPanel.renderSelf element", this.element()); 70//Clipperz.log("AccountPanel.renderSelf element", this.element());
74 this.append(this.element(), [ 71 this.append(this.element(), [
75 {tag:'div', cls:'header', children:[ 72 {tag:'div', cls:'header', children:[
76 {tag:'div', cls:'subPanelTabs', children:[ 73 {tag:'div', cls:'subPanelTabs', children:[
77 {tag:'ul', children:[ 74 {tag:'ul', children:[
78 // {tag:'li', id:this.getId('accountTab'), children:[{tag:'a', href:'#', html:'Account'}], cls:'first'}, 75 // {tag:'li', id:this.getId('accountTab'), children:[{tag:'a', href:'#', html:'Account'}], cls:'first'},
79 {tag:'li', id:this.getId('passphraseTab'), children:[{tag:'a', href:'#', html:'Passphrase'}], cls:'first'}, 76 {tag:'li', id:this.getId('passphraseTab'), children:[{tag:'a', href:'#', html:'Passphrase'}], cls:'first'},
80 {tag:'li', id:this.getId('preferencesTab'), children:[{tag:'a', href:'#', html:'Preferences'}]}, 77 {tag:'li', id:this.getId('preferencesTab'), children:[{tag:'a', href:'#', html:'Preferences'}]},
81 {tag:'li', id:this.getId('loginHistoryTab'),children:[{tag:'a', href:'#', html:'Login history'}]} 78 {tag:'li', id:this.getId('loginHistoryTab'),children:[{tag:'a', href:'#', html:'Login history'}]}
82 ]} 79 ]}
83 ]} 80 ]}
84 ]}, 81 ]},
85 {tag:'div', cls:'body', children:[ 82 {tag:'div', cls:'body', children:[
86 {tag:'div', cls:'accountPanel', children:[ 83 {tag:'div', cls:'accountPanel', children:[
87 {tag:'div', cls:'subPanelContent', children:[ 84 {tag:'div', cls:'subPanelContent', children:[
88 {tag:'ul', children:[ 85 {tag:'ul', children:[
89 // {tag:'li', id:this.getId('accountPanel'),children:[ 86 // {tag:'li', id:this.getId('accountPanel'),children:[
90 // {tag:'h3', html:"-- Account --"} 87 // {tag:'h3', html:"-- Account --"}
91 // ]}, 88 // ]},
92 {tag:'li', id:this.getId('passphrasePanel'),children:[ 89 {tag:'li', id:this.getId('passphrasePanel'),children:[
93 {tag:'h3', cls:'changePassphrase', html:"Change passphrase"}, 90 {tag:'h3', cls:'changePassphrase', html:"Change passphrase"},
94 {tag:'form', id:this.getId('changePassphrase'), cls:'changePassphrase', children:[ 91 {tag:'form', id:this.getId('changePassphrase'), cls:'changePassphrase', children:[
95 {tag:'div', cls:'currentCredentials', children:[ 92 {tag:'div', cls:'currentCredentials', children:[
96 {tag:'div', cls:'field username', children:[ 93 {tag:'div', cls:'field username', children:[
97 {tag:'label', html:"username", 'for':this.getId('currentUsername')}, 94 {tag:'label', html:"username", 'for':this.getId('currentUsername')},
98 {tag:'input', id:this.getId('currentUsername')} 95 {tag:'input', id:this.getId('currentUsername')}
99 ]}, 96 ]},
100 {tag:'div', cls:'field passphrase', children:[ 97 {tag:'div', cls:'field passphrase', children:[
101 {tag:'label', html:"passphrase", 'for':this.getId('currentPassphrase')}, 98 {tag:'label', html:"passphrase", 'for':this.getId('currentPassphrase')},
102 {tag:'input', id:this.getId('currentPassphrase')} 99 {tag:'input', id:this.getId('currentPassphrase')}
103 ]} 100 ]}
104 ]}, 101 ]},
105 {tag:'div', cls:'newPassphrase', children:[ 102 {tag:'div', cls:'newPassphrase', children:[
106 {tag:'div', cls:'field', children:[ 103 {tag:'div', cls:'field', children:[
107 {tag:'label', html:"new passphrase", 'for':this.getId('newPassphrase')}, 104 {tag:'label', html:"new passphrase", 'for':this.getId('newPassphrase')},
108 {tag:'input', id:this.getId('newPassphrase')} 105 {tag:'input', id:this.getId('newPassphrase')}
109 ]}, 106 ]},
110 {tag:'div', cls:'field', children:[ 107 {tag:'div', cls:'field', children:[
111 {tag:'label', html:"re-new passphrase", 'for':this.getId('reNewPassphrase')}, 108 {tag:'label', html:"re-new passphrase", 'for':this.getId('reNewPassphrase')},
112 {tag:'input', id:this.getId('reNewPassphrase')} 109 {tag:'input', id:this.getId('reNewPassphrase')}
113 ]} 110 ]}
114 ]}, 111 ]},
115 {tag:'div', cls:'confirm', children:[ 112 {tag:'div', cls:'confirm', children:[
116 {tag:'input', type:'checkbox', id:this.getId('confirm')}, 113 {tag:'input', type:'checkbox', id:this.getId('confirm')},
117 {tag:'label', html:"I understand that Clipperz will not be able to recover a lost passphrase", 'for':this.getId('confirm')} 114 {tag:'label', html:"I understand that Clipperz will not be able to recover a lost passphrase", 'for':this.getId('confirm')}
118 ]} 115 ]}
119 ]}, 116 ]},
120 {tag:'div', cls:'clear'}, 117 {tag:'div', cls:'clear'},
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/AppPage.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/AppPage.js
index 67247df..3b3c8b4 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/AppPage.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/AppPage.js
@@ -1,78 +1,75 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Web.Components.AppPage = function(args) { 28Clipperz.PM.UI.Web.Components.AppPage = function(args) {
32 args = args || {}; 29 args = args || {};
33 Clipperz.PM.UI.Web.Components.AppPage.superclass.constructor.call(this, args); 30 Clipperz.PM.UI.Web.Components.AppPage.superclass.constructor.call(this, args);
34 31
35 this._element = args.element || null; 32 this._element = args.element || null;
36 33
37 this._slots = { 34 this._slots = {
38 'cardGrid' : this.getId('cardGrid'), 35 'cardGrid' : this.getId('cardGrid'),
39 // 'directLoginGrid' : this.getId('directLoginGrid'), 36 // 'directLoginGrid' : this.getId('directLoginGrid'),
40 'accountPanel': this.getId('accountPanel'), 37 'accountPanel': this.getId('accountPanel'),
41 'dataPanel': this.getId('dataPanel'), 38 'dataPanel': this.getId('dataPanel'),
42 'toolsPanel': this.getId('toolsPanel'), 39 'toolsPanel': this.getId('toolsPanel'),
43 'userInfoBox': this.getId('userInfoBox'), 40 'userInfoBox': this.getId('userInfoBox'),
44 'tabSidePanel': this.getId('tabSidePanel') 41 'tabSidePanel': this.getId('tabSidePanel')
45 }; 42 };
46 43
47 return this; 44 return this;
48} 45}
49 46
50//============================================================================= 47//=============================================================================
51 48
52Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.AppPage, Clipperz.PM.UI.Common.Components.BaseComponent, { 49Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.AppPage, Clipperz.PM.UI.Common.Components.BaseComponent, {
53 50
54 //------------------------------------------------------------------------- 51 //-------------------------------------------------------------------------
55 52
56 'toString': function () { 53 'toString': function () {
57 return "Clipperz.PM.UI.Web.Components.AppPage component"; 54 return "Clipperz.PM.UI.Web.Components.AppPage component";
58 }, 55 },
59 56
60 //------------------------------------------------------------------------- 57 //-------------------------------------------------------------------------
61 58
62 'renderSelf': function(/*aContainer, aPosition*/) { 59 'renderSelf': function(/*aContainer, aPosition*/) {
63 this.append(this.element(), {tag:'div', id:this.getId('userInfoBox'), cls:'userInfoBox'}); 60 this.append(this.element(), {tag:'div', id:this.getId('userInfoBox'), cls:'userInfoBox'});
64 this.append(this.element(), {tag:'div', id:this.getId('sidePanels'), cls:'sidePanels'}); 61 this.append(this.element(), {tag:'div', id:this.getId('sidePanels'), cls:'sidePanels'});
65 this.append(this.getId('sidePanels'),{tag:'div', id:this.getId('tabSidePanel'), cls:'tabSidePanel', children:[]}); 62 this.append(this.getId('sidePanels'),{tag:'div', id:this.getId('tabSidePanel'), cls:'tabSidePanel', children:[]});
66 63
67 this.append(this.element(), {tag:'div', id:this.getId('mainPanels'), cls:'mainPanels'}); 64 this.append(this.element(), {tag:'div', id:this.getId('mainPanels'), cls:'mainPanels'});
68 this.append(this.getId('mainPanels'), {tag:'div', id:this.getId('cardGrid'), cls:'gridComponent cardGrid'}); 65 this.append(this.getId('mainPanels'), {tag:'div', id:this.getId('cardGrid'), cls:'gridComponent cardGrid'});
69 // this.append(this.getId('mainPanels'), {tag:'div', id:this.getId('directLoginGrid'), cls:'gridComponent directLoginGrid'}); 66 // this.append(this.getId('mainPanels'), {tag:'div', id:this.getId('directLoginGrid'), cls:'gridComponent directLoginGrid'});
70 this.append(this.getId('mainPanels'), {tag:'div', id:this.getId('accountPanel'), cls:'otherPanel'}); 67 this.append(this.getId('mainPanels'), {tag:'div', id:this.getId('accountPanel'), cls:'otherPanel'});
71 this.append(this.getId('mainPanels'), {tag:'div', id:this.getId('dataPanel'), cls:'otherPanel'}); 68 this.append(this.getId('mainPanels'), {tag:'div', id:this.getId('dataPanel'), cls:'otherPanel'});
72 this.append(this.getId('mainPanels'), {tag:'div', id:this.getId('toolsPanel'), cls:'otherPanel'}); 69 this.append(this.getId('mainPanels'), {tag:'div', id:this.getId('toolsPanel'), cls:'otherPanel'});
73 }, 70 },
74 71
75 //------------------------------------------------------------------------- 72 //-------------------------------------------------------------------------
76 73
77 __syntaxFix__: "syntax fix" 74 __syntaxFix__: "syntax fix"
78}); 75});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/BookmarkletComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/BookmarkletComponent.js
index 42a6052..1835ca9 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/BookmarkletComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/BookmarkletComponent.js
@@ -1,109 +1,106 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Web.Components.BookmarkletComponent = function(args) { 28Clipperz.PM.UI.Web.Components.BookmarkletComponent = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Web.Components.BookmarkletComponent.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Web.Components.BookmarkletComponent.superclass.constructor.apply(this, arguments);
35 MochiKit.Signal.connect(Clipperz.PM.Strings.Languages, 'switchLanguage', this, 'updateBookmarkletURLs'); 32 MochiKit.Signal.connect(Clipperz.PM.Strings.Languages, 'switchLanguage', this, 'updateBookmarkletURLs');
36 33
37 return this; 34 return this;
38} 35}
39 36
40//============================================================================= 37//=============================================================================
41 38
42Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.BookmarkletComponent, Clipperz.PM.UI.Common.Components.BaseComponent, { 39Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.BookmarkletComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
43 40
44 //------------------------------------------------------------------------- 41 //-------------------------------------------------------------------------
45 42
46 'toString': function () { 43 'toString': function () {
47 return "Clipperz.PM.UI.Web.Components.BookmarkletComponent component"; 44 return "Clipperz.PM.UI.Web.Components.BookmarkletComponent component";
48 }, 45 },
49 46
50 //------------------------------------------------------------------------- 47 //-------------------------------------------------------------------------
51 48
52 'renderSelf': function() { 49 'renderSelf': function() {
53 // var bookmarkletUrl; 50 // var bookmarkletUrl;
54// 51//
55 // if (Clipperz_IEisBroken == true) { 52 // if (Clipperz_IEisBroken == true) {
56 // bookmarkletUrl = bookmarklet_ie; 53 // bookmarkletUrl = bookmarklet_ie;
57 // } else { 54 // } else {
58 /// bookmarkletUrl = bookmarklet; 55 /// bookmarkletUrl = bookmarklet;
59 // bookmarkletUrl = Clipperz.PM.Strings['bookmarklet']; 56 // bookmarkletUrl = Clipperz.PM.Strings['bookmarklet'];
60 // } 57 // }
61 58
62 this.append(this.element(), {tag:'div', cls:'bookmarklet', children: [ 59 this.append(this.element(), {tag:'div', cls:'bookmarklet', children: [
63 {tag:'div', id:this.getId('linkBlock'), cls:'bookmarklet_link', children:[ 60 {tag:'div', id:this.getId('linkBlock'), cls:'bookmarklet_link', children:[
64 // {tag:'a', id:this.getId('link'), href:bookmarkletUrl, children:[ 61 // {tag:'a', id:this.getId('link'), href:bookmarkletUrl, children:[
65 {tag:'a', id:this.getId('link'), href:'#', children:[ 62 {tag:'a', id:this.getId('link'), href:'#', children:[
66 {tag:'div', cls:'icon'}, 63 {tag:'div', cls:'icon'},
67 {tag:'div', cls:'text', children:[ 64 {tag:'div', cls:'text', children:[
68 {tag:'span', html:"add to Clipperz"} 65 {tag:'span', html:"add to Clipperz"}
69 ]} 66 ]}
70 ]} 67 ]}
71 ]} 68 ]}
72 ]}); 69 ]});
73 70
74 new Clipperz.PM.UI.Common.Components.Tooltip({ 71 new Clipperz.PM.UI.Common.Components.Tooltip({
75 element:this.getElement('linkBlock'), 72 element:this.getElement('linkBlock'),
76 text: "Drag and drop the \"add to Clipperz\" link above to the bookmark bar.", 73 text: "Drag and drop the \"add to Clipperz\" link above to the bookmark bar.",
77 position:'BELOW' 74 position:'BELOW'
78 }); 75 });
79 76
80 MochiKit.Signal.connect(this.getId('link'), 'onclick', this, 'handleOnclick'); 77 MochiKit.Signal.connect(this.getId('link'), 'onclick', this, 'handleOnclick');
81 this.updateBookmarkletURLs(); 78 this.updateBookmarkletURLs();
82 }, 79 },
83 80
84 //------------------------------------------------------------------------- 81 //-------------------------------------------------------------------------
85 82
86 'handleOnclick': function (anEvent) { 83 'handleOnclick': function (anEvent) {
87 anEvent.preventDefault(); 84 anEvent.preventDefault();
88 85
89Clipperz.log("BOOKMARKLET CLICK"); 86Clipperz.log("BOOKMARKLET CLICK");
90 }, 87 },
91 88
92 //------------------------------------------------------------------------- 89 //-------------------------------------------------------------------------
93 90
94 'updateBookmarkletURLs': function () { 91 'updateBookmarkletURLs': function () {
95 var bookmarkletUrl; 92 var bookmarkletUrl;
96 93
97 if (Clipperz_IEisBroken == true) { 94 if (Clipperz_IEisBroken == true) {
98 bookmarkletUrl = bookmarklet_ie; 95 bookmarkletUrl = bookmarklet_ie;
99 } else { 96 } else {
100 // bookmarkletUrl = bookmarklet; 97 // bookmarkletUrl = bookmarklet;
101 bookmarkletUrl = Clipperz.PM.Strings.getValue('bookmarklet'); 98 bookmarkletUrl = Clipperz.PM.Strings.getValue('bookmarklet');
102 } 99 }
103 100
104 this.getElement('link').href = bookmarkletUrl; 101 this.getElement('link').href = bookmarkletUrl;
105 }, 102 },
106 103
107 //------------------------------------------------------------------------- 104 //-------------------------------------------------------------------------
108 __syntaxFix__: "syntax fix" 105 __syntaxFix__: "syntax fix"
109}); 106});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogComponent.js
index e3238ca..af33d85 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogComponent.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Web.Components.CardDialogComponent = function(args) { 28Clipperz.PM.UI.Web.Components.CardDialogComponent = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Web.Components.CardDialogComponent.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Web.Components.CardDialogComponent.superclass.constructor.apply(this, arguments);
35 32
36 this._tabPanelController = null; 33 this._tabPanelController = null;
37 34
38 this._tabPanelControllerConfiguration = { 35 this._tabPanelControllerConfiguration = {
39 'DETAILS': { 36 'DETAILS': {
40 tab:'detailTab', 37 tab:'detailTab',
41 panel:'detailTabpanel' 38 panel:'detailTabpanel'
42 }, 39 },
43 'DIRECT_LOGINS': { 40 'DIRECT_LOGINS': {
44 tab:'directLoginTab', 41 tab:'directLoginTab',
45 panel:'directLoginTabpanel' 42 panel:'directLoginTabpanel'
46 }, 43 },
47 'SHARING': { 44 'SHARING': {
48 tab:'sharingTab', 45 tab:'sharingTab',
49 panel:'sharingTabpanel' 46 panel:'sharingTabpanel'
50 } 47 }
51 }; 48 };
52 49
53 this._tooltips = null; 50 this._tooltips = null;
54 51
55 this._isSavingEnabled = false; 52 this._isSavingEnabled = false;
56 this._hintMode = 'OFF'; //'ON' 53 this._hintMode = 'OFF'; //'ON'
57 54
58 this._fieldComponents = {}; 55 this._fieldComponents = {};
59 this._directLoginComponents = {}; 56 this._directLoginComponents = {};
60 57
61 this._displayMode = 'fixed'; //'scrollable'; 58 this._displayMode = 'fixed'; //'scrollable';
62 59
63 return this; 60 return this;
64} 61}
65 62
66//============================================================================= 63//=============================================================================
67 64
68Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.CardDialogComponent, Clipperz.PM.UI.Common.Components.BaseComponent, { 65Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.CardDialogComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
69 66
70 //------------------------------------------------------------------------- 67 //-------------------------------------------------------------------------
71 68
72 'toString': function () { 69 'toString': function () {
73 return "Clipperz.PM.UI.Web.Components.CardDialogComponent component"; 70 return "Clipperz.PM.UI.Web.Components.CardDialogComponent component";
74 }, 71 },
75 72
76 //------------------------------------------------------------------------- 73 //-------------------------------------------------------------------------
77 74
78 'tabPanelController': function () { 75 'tabPanelController': function () {
79 if (this._tabPanelController == null) { 76 if (this._tabPanelController == null) {
80 this._tabPanelController = new Clipperz.PM.UI.Common.Controllers.TabPanelController({ 77 this._tabPanelController = new Clipperz.PM.UI.Common.Controllers.TabPanelController({
81 component:this, 78 component:this,
82 configuration:this._tabPanelControllerConfiguration 79 configuration:this._tabPanelControllerConfiguration
83 }); 80 });
84 81
85 MochiKit.Signal.connect(this._tabPanelController, 'tabSelected', this, 'handleTabSelected') 82 MochiKit.Signal.connect(this._tabPanelController, 'tabSelected', this, 'handleTabSelected')
86 } 83 }
87 84
88 return this._tabPanelController; 85 return this._tabPanelController;
89 }, 86 },
90 87
91 //------------------------------------------------------------------------- 88 //-------------------------------------------------------------------------
92 89
93 'renderSelf': function() { 90 'renderSelf': function() {
94 this.append(this.element(), {tag:'div', cls:'CardDialog mainDialog loading', id:this.getId('panel'), children: [ 91 this.append(this.element(), {tag:'div', cls:'CardDialog mainDialog loading', id:this.getId('panel'), children: [
95 {tag:'form', id:this.getId('form'), children:[ 92 {tag:'form', id:this.getId('form'), children:[
96 // {tag:'input', type:'text', id:this.getId('hidden'), cls:'hidden'}, 93 // {tag:'input', type:'text', id:this.getId('hidden'), cls:'hidden'},
97 {tag:'div', cls:'header', children:[ 94 {tag:'div', cls:'header', children:[
98 {tag:'div', cls:'title', children:[ 95 {tag:'div', cls:'title', children:[
99 {tag:'input', type:'text', id:this.getId('title')} 96 {tag:'input', type:'text', id:this.getId('title')}
100 ]} 97 ]}
101 ]}, 98 ]},
102 {tag:'div', id:this.getId('body'), cls:'body', children:[ 99 {tag:'div', id:this.getId('body'), cls:'body', children:[
103 {tag:'div', cls:'tabs', children:[ 100 {tag:'div', cls:'tabs', children:[
104 {tag:'ul', cls:'tabs', children:[ 101 {tag:'ul', cls:'tabs', children:[
105 {tag:'li', id:this.getId('detailTab'), children:[{tag:'span', html:"details"}]}, 102 {tag:'li', id:this.getId('detailTab'), children:[{tag:'span', html:"details"}]},
106 {tag:'li', id:this.getId('directLoginTab'), children:[ 103 {tag:'li', id:this.getId('directLoginTab'), children:[
107 {tag:'span', html:"direct logins"}//, 104 {tag:'span', html:"direct logins"}//,
108 // {tag:'div', id:this.getId('addDirectLoginButton'), cls:'addDirectLoginButton', children:[ 105 // {tag:'div', id:this.getId('addDirectLoginButton'), cls:'addDirectLoginButton', children:[
109 // {tag:'span', html:"+"} 106 // {tag:'span', html:"+"}
110 // ]} 107 // ]}
111 ]}, 108 ]},
112 {tag:'li', id:this.getId('sharingTab'), children:[{tag:'span', html:"sharing"}]} 109 {tag:'li', id:this.getId('sharingTab'), children:[{tag:'span', html:"sharing"}]}
113 ]} 110 ]}
114 ]}, 111 ]},
115 {tag:'div', cls:'tabPanels', children:[ 112 {tag:'div', cls:'tabPanels', children:[
116 {tag:'ul', cls:'tabPanels', children:[ 113 {tag:'ul', cls:'tabPanels', children:[
117 {tag:'li', id:this.getId('detailTabpanel'), cls:'tabPanel', children:[ 114 {tag:'li', id:this.getId('detailTabpanel'), cls:'tabPanel', children:[
118 {tag:'div', id:this.getId('recordFields'), children:[ 115 {tag:'div', id:this.getId('recordFields'), children:[
119 {tag:'table', cls:'fields', cellpadding:'0', id:this.getId('fieldTable'), cellspacing:'0', children:[ 116 {tag:'table', cls:'fields', cellpadding:'0', id:this.getId('fieldTable'), cellspacing:'0', children:[
120 {tag:'thead', children:[ 117 {tag:'thead', children:[
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogRecordDirectLoginComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogRecordDirectLoginComponent.js
index 126c5b1..2e61f5f 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogRecordDirectLoginComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogRecordDirectLoginComponent.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Web.Components.CardDialogRecordDirectLoginComponent = function(args) { 28Clipperz.PM.UI.Web.Components.CardDialogRecordDirectLoginComponent = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Web.Components.CardDialogRecordDirectLoginComponent.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Web.Components.CardDialogRecordDirectLoginComponent.superclass.constructor.apply(this, arguments);
35 32
36 this._reference = args.reference|| Clipperz.Base.exception.raise('MandatoryParameter'); 33 this._reference = args.reference|| Clipperz.Base.exception.raise('MandatoryParameter');
37 this._faviconComponent = null; 34 this._faviconComponent = null;
38 35
39 return this; 36 return this;
40} 37}
41 38
42//============================================================================= 39//=============================================================================
43 40
44Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.CardDialogRecordDirectLoginComponent, Clipperz.PM.UI.Common.Components.BaseComponent, { 41Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.CardDialogRecordDirectLoginComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
45 42
46 //------------------------------------------------------------------------- 43 //-------------------------------------------------------------------------
47 44
48 'toString': function () { 45 'toString': function () {
49 return "Clipperz.PM.UI.Web.Components.CardDialogRecordDirectLoginComponent component"; 46 return "Clipperz.PM.UI.Web.Components.CardDialogRecordDirectLoginComponent component";
50 }, 47 },
51 48
52 //------------------------------------------------------------------------- 49 //-------------------------------------------------------------------------
53 50
54 'reference': function () { 51 'reference': function () {
55 return this._reference; 52 return this._reference;
56 }, 53 },
57 54
58 //------------------------------------------------------------------------- 55 //-------------------------------------------------------------------------
59 56
60 'renderSelf': function() { 57 'renderSelf': function() {
61//console.log(">>> CardDialogRecordDirectLoginComponent.renderSelf"); 58//console.log(">>> CardDialogRecordDirectLoginComponent.renderSelf");
62 this.append(this.element(), [ 59 this.append(this.element(), [
63 {tag:'div', cls:'cardDialogRecordDirectLoginComponent_favicon', children:[ 60 {tag:'div', cls:'cardDialogRecordDirectLoginComponent_favicon', children:[
64 {tag:'img', cls:'favicon', id:this.getId('favicon')} 61 {tag:'img', cls:'favicon', id:this.getId('favicon')}
65 ]}, 62 ]},
66 {tag:'div', cls:'cardDialogRecordDirectLoginComponent_label', children:[ 63 {tag:'div', cls:'cardDialogRecordDirectLoginComponent_label', children:[
67 {tag:'input', id:this.getId('label'), type:'text'} 64 {tag:'input', id:this.getId('label'), type:'text'}
68 ]}, 65 ]},
69 {tag:'div', cls:'open', children:[ 66 {tag:'div', cls:'open', children:[
70 {tag:'span', children:[ 67 {tag:'span', children:[
71 {tag:'a', href:'open', id:this.getId('open'), html:'&nbsp;'} 68 {tag:'a', href:'open', id:this.getId('open'), html:'&nbsp;'}
72 ]} 69 ]}
73 ]}, 70 ]},
74 {tag:'div', cls:'edit', children:[ 71 {tag:'div', cls:'edit', children:[
75 {tag:'span', children:[ 72 {tag:'span', children:[
76 {tag:'a', href:'edit', id:this.getId('edit'), html:"edit"} 73 {tag:'a', href:'edit', id:this.getId('edit'), html:"edit"}
77 ]} 74 ]}
78 ]}, 75 ]},
79 {tag:'div', cls:'delete', children:[ 76 {tag:'div', cls:'delete', children:[
80 {tag:'span', children:[ 77 {tag:'span', children:[
81 {tag:'a', href:'delete', id:this.getId('delete'), html:"delete"} 78 {tag:'a', href:'delete', id:this.getId('delete'), html:"delete"}
82 ]} 79 ]}
83 ]} 80 ]}
84/* 81/*
85 {tag:'td', cls:'fieldState'}, 82 {tag:'td', cls:'fieldState'},
86 {tag:'td', cls:'fieldLabel', children:[ 83 {tag:'td', cls:'fieldLabel', children:[
87 {tag:'input', cls:'label', id:this.getId('label')} 84 {tag:'input', cls:'label', id:this.getId('label')}
88 ]}, 85 ]},
89 {tag:'td', cls:'fieldLock', children:[ 86 {tag:'td', cls:'fieldLock', children:[
90 {tag:'div', cls:'unlocked', id:this.getId('isHidden')} 87 {tag:'div', cls:'unlocked', id:this.getId('isHidden')}
91 ]}, 88 ]},
92 {tag:'td', cls:'fieldValue', children:[ 89 {tag:'td', cls:'fieldValue', children:[
93 {tag:'div', cls:'unlocked', id:this.getId('valueWrapper'), children:[ 90 {tag:'div', cls:'unlocked', id:this.getId('valueWrapper'), children:[
94 {tag:'input', type:'text', cls:'value', id:this.getId('value')} 91 {tag:'input', type:'text', cls:'value', id:this.getId('value')}
95 ]} 92 ]}
96 ]}, 93 ]},
97 {tag:'td', cls:'fieldAddDelete', children:[ 94 {tag:'td', cls:'fieldAddDelete', children:[
98 {tag:'div', cls:'delete', children:[ 95 {tag:'div', cls:'delete', children:[
99 {tag:'span', children:[ 96 {tag:'span', children:[
100 {tag:'a', href:'#', id:this.getId('delete'), html:"delete"} 97 {tag:'a', href:'#', id:this.getId('delete'), html:"delete"}
101 ]} 98 ]}
102 ]} 99 ]}
103 ]} 100 ]}
104*/ 101*/
105 ]); 102 ]);
106 103
107 MochiKit.Signal.connect(this.getId('label'), 'onkeyup',MochiKit.Base.partial(MochiKit.Signal.signal, this, 'changedValue')); 104 MochiKit.Signal.connect(this.getId('label'), 'onkeyup',MochiKit.Base.partial(MochiKit.Signal.signal, this, 'changedValue'));
108 MochiKit.Signal.connect(this.getId('open'), 'onclick',this, 'openDirectLogin'); 105 MochiKit.Signal.connect(this.getId('open'), 'onclick',this, 'openDirectLogin');
109 MochiKit.Signal.connect(this.getId('edit'), 'onclick',this, 'editDirectLogin'); 106 MochiKit.Signal.connect(this.getId('edit'), 'onclick',this, 'editDirectLogin');
110 MochiKit.Signal.connect(this.getId('delete'), 'onclick',this, 'deleteDirectLogin'); 107 MochiKit.Signal.connect(this.getId('delete'), 'onclick',this, 'deleteDirectLogin');
111 }, 108 },
112 109
113 //------------------------------------------------------------------------- 110 //-------------------------------------------------------------------------
114 111
115 'shouldShowElementWhileRendering': function () { 112 'shouldShowElementWhileRendering': function () {
116 return false; 113 return false;
117 }, 114 },
118 115
119 //------------------------------------------------------------------------- 116 //-------------------------------------------------------------------------
120 117
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js
index c1a7c13..b58062c 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Web.Components.CardDialogRecordFieldComponent = function(args) { 28Clipperz.PM.UI.Web.Components.CardDialogRecordFieldComponent = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Web.Components.CardDialogRecordFieldComponent.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Web.Components.CardDialogRecordFieldComponent.superclass.constructor.apply(this, arguments);
35 32
36 this._reference = args.reference|| Clipperz.Base.exception.raise('MandatoryParameter'); 33 this._reference = args.reference|| Clipperz.Base.exception.raise('MandatoryParameter');
37 this._actionType = null; 34 this._actionType = null;
38 35
39 return this; 36 return this;
40} 37}
41 38
42//============================================================================= 39//=============================================================================
43 40
44Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.CardDialogRecordFieldComponent, Clipperz.PM.UI.Common.Components.BaseComponent, { 41Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.CardDialogRecordFieldComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
45 42
46 //------------------------------------------------------------------------- 43 //-------------------------------------------------------------------------
47 44
48 'toString': function () { 45 'toString': function () {
49 return "Clipperz.PM.UI.Web.Components.CardDialogRecordFieldComponent component"; 46 return "Clipperz.PM.UI.Web.Components.CardDialogRecordFieldComponent component";
50 }, 47 },
51 48
52 //------------------------------------------------------------------------- 49 //-------------------------------------------------------------------------
53 50
54 'renderSelf': function() { 51 'renderSelf': function() {
55 this.append(this.element(), [ 52 this.append(this.element(), [
56 {tag:'td', cls:'fieldState'}, 53 {tag:'td', cls:'fieldState'},
57 {tag:'td', cls:'fieldLabel', children:[ 54 {tag:'td', cls:'fieldLabel', children:[
58 {tag:'input', cls:'label', id:this.getId('label')} 55 {tag:'input', cls:'label', id:this.getId('label')}
59 ]}, 56 ]},
60 {tag:'td', cls:'fieldLock', children:[ 57 {tag:'td', cls:'fieldLock', children:[
61 {tag:'div', cls:'unlocked', id:this.getId('isHidden')} 58 {tag:'div', cls:'unlocked', id:this.getId('isHidden')}
62 ]}, 59 ]},
63 {tag:'td', cls:'fieldValue', children:[ 60 {tag:'td', cls:'fieldValue', children:[
64 {tag:'div', cls:'unlocked', id:this.getId('valueWrapper'), children:[ 61 {tag:'div', cls:'unlocked', id:this.getId('valueWrapper'), children:[
65 {tag:'input', type:'text', cls:'value', id:this.getId('value')} 62 {tag:'input', type:'text', cls:'value', id:this.getId('value')}
66 ]} 63 ]}
67 ]}, 64 ]},
68 {tag:'td', cls:'fieldAction', children:[ 65 {tag:'td', cls:'fieldAction', children:[
69 {tag:'a', href:'#', id:this.getId('actionLink'), html:'&nbsp;'} 66 {tag:'a', href:'#', id:this.getId('actionLink'), html:'&nbsp;'}
70 ]}, 67 ]},
71 {tag:'td', cls:'fieldAddDelete', children:[ 68 {tag:'td', cls:'fieldAddDelete', children:[
72 {tag:'div', cls:'delete', children:[ 69 {tag:'div', cls:'delete', children:[
73 {tag:'span', children:[ 70 {tag:'span', children:[
74 {tag:'a', href:'#', id:this.getId('delete'), html:"delete"} 71 {tag:'a', href:'#', id:this.getId('delete'), html:"delete"}
75 ]} 72 ]}
76 ]} 73 ]}
77 ]} 74 ]}
78 ]); 75 ]);
79 76
80 MochiKit.Signal.connect(this.getId('label'), 'onkeyup',MochiKit.Base.partial(MochiKit.Signal.signal, this, 'changedValue')); 77 MochiKit.Signal.connect(this.getId('label'), 'onkeyup',MochiKit.Base.partial(MochiKit.Signal.signal, this, 'changedValue'));
81 MochiKit.Signal.connect(this.getId('isHidden'), 'onclick',this, 'toggleIsHidden'); 78 MochiKit.Signal.connect(this.getId('isHidden'), 'onclick',this, 'toggleIsHidden');
82 MochiKit.Signal.connect(this.getId('value'), 'onkeyup',MochiKit.Base.partial(MochiKit.Signal.signal, this, 'changedValue')); 79 MochiKit.Signal.connect(this.getId('value'), 'onkeyup',MochiKit.Base.partial(MochiKit.Signal.signal, this, 'changedValue'));
83 MochiKit.Signal.connect(this.getId('actionLink'), 'onclick',this, 'handleActionLink'); 80 MochiKit.Signal.connect(this.getId('actionLink'), 'onclick',this, 'handleActionLink');
84 MochiKit.Signal.connect(this.getId('delete'), 'onclick',this, 'deleteField'); 81 MochiKit.Signal.connect(this.getId('delete'), 'onclick',this, 'deleteField');
85 // MochiKit.Signal.connect(this.getId('delete'), 'onclick',MochiKit.Base.partial(MochiKit.Signal.signal, this, 'deleteField', this.reference())); 82 // MochiKit.Signal.connect(this.getId('delete'), 'onclick',MochiKit.Base.partial(MochiKit.Signal.signal, this, 'deleteField', this.reference()));
86 }, 83 },
87 84
88 //------------------------------------------------------------------------- 85 //-------------------------------------------------------------------------
89 86
90 'shouldShowElementWhileRendering': function () { 87 'shouldShowElementWhileRendering': function () {
91 return false; 88 return false;
92 }, 89 },
93 90
94 //========================================================================= 91 //=========================================================================
95 92
96 'reference': function () { 93 'reference': function () {
97 return this._reference; 94 return this._reference;
98 }, 95 },
99 96
100 //========================================================================= 97 //=========================================================================
101 98
102 'label': function () { 99 'label': function () {
103 return this.getElement('label').value; 100 return this.getElement('label').value;
104 }, 101 },
105 102
106 'setLabel': function (aValue) { 103 'setLabel': function (aValue) {
107 // this.getElement('label').value = Clipperz.Base.sanitizeString(aValue); 104 // this.getElement('label').value = Clipperz.Base.sanitizeString(aValue);
108 this.getElement('label').value = aValue; 105 this.getElement('label').value = aValue;
109 }, 106 },
110 107
111 //========================================================================= 108 //=========================================================================
112 109
113 'value': function () { 110 'value': function () {
114 return this.getElement('value').value; 111 return this.getElement('value').value;
115 }, 112 },
116 113
117 'setValue': function (aValue) { 114 'setValue': function (aValue) {
118 // this.getElement('value').value = Clipperz.Base.sanitizeString(aValue); 115 // this.getElement('value').value = Clipperz.Base.sanitizeString(aValue);
119 this.getElement('value').value = aValue; 116 this.getElement('value').value = aValue;
120 }, 117 },
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ColumnManager.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ColumnManager.js
index bfc7e61..391c379 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ColumnManager.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ColumnManager.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31//############################################################################# 28//#############################################################################
32 29
33Clipperz.PM.UI.Web.Components.ColumnManager = function(args) { 30Clipperz.PM.UI.Web.Components.ColumnManager = function(args) {
34 args = args || {}; 31 args = args || {};
35 Clipperz.PM.UI.Web.Components.ColumnManager.superclass.constructor.call(this, args); 32 Clipperz.PM.UI.Web.Components.ColumnManager.superclass.constructor.call(this, args);
36 33
37 this._name = args.name || Clipperz.Base.exception.raise('MandatoryParameter'); 34 this._name = args.name || Clipperz.Base.exception.raise('MandatoryParameter');
38 this._selector = args.selector|| Clipperz.Base.exception.raise('MandatoryParameter');; 35 this._selector = args.selector|| Clipperz.Base.exception.raise('MandatoryParameter');;
39 this._label = args.label || null; 36 this._label = args.label || null;
40 this._isSortable = args.sortable|| false; 37 this._isSortable = args.sortable|| false;
41 this._comparator = args.comparator|| null; 38 this._comparator = args.comparator|| null;
42 this._sorted = args.sorted || 'UNSORTED'; //'ASCENDING' | 'DESCENDING' | 'UNSORTED' 39 this._sorted = args.sorted || 'UNSORTED'; //'ASCENDING' | 'DESCENDING' | 'UNSORTED'
43 this._cssClass = args.cssClass|| ''; 40 this._cssClass = args.cssClass|| '';
44 41
45 this._signalIdentifiers = []; 42 this._signalIdentifiers = [];
46 43
47 return this; 44 return this;
48} 45}
49 46
50//============================================================================= 47//=============================================================================
51 48
52Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.ColumnManager, Clipperz.PM.UI.Common.Components.BaseComponent, { 49Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.ColumnManager, Clipperz.PM.UI.Common.Components.BaseComponent, {
53 50
54 'toString': function () { 51 'toString': function () {
55 return "Clipperz.PM.UI.Web.Components.ColumnManager - " + this._name; 52 return "Clipperz.PM.UI.Web.Components.ColumnManager - " + this._name;
56 }, 53 },
57 54
58 'name': function () { 55 'name': function () {
59 return this._name; 56 return this._name;
60 }, 57 },
61 58
62 'label': function () { 59 'label': function () {
63 return this._label; 60 return this._label;
64 }, 61 },
65 62
66 'selector': function () { 63 'selector': function () {
67 return this._selector; 64 return this._selector;
68 }, 65 },
69 66
70 'comparator': function() { 67 'comparator': function() {
71 return this._comparator; 68 return this._comparator;
72 }, 69 },
73 70
74 'cssClass': function() { 71 'cssClass': function() {
75 return this._cssClass; 72 return this._cssClass;
76 }, 73 },
77 74
78 //------------------------------------------------------------------------- 75 //-------------------------------------------------------------------------
79 76
80 'isSortable': function () { 77 'isSortable': function () {
81 return this._isSortable; 78 return this._isSortable;
82 }, 79 },
83 80
84 //------------------------------------------------------------------------- 81 //-------------------------------------------------------------------------
85 82
86 'sorted': function () { 83 'sorted': function () {
87 return this._sorted; 84 return this._sorted;
88 }, 85 },
89 86
90 'isSorted': function () { 87 'isSorted': function () {
91 return (this.sorted() != 'UNSORTED'); 88 return (this.sorted() != 'UNSORTED');
92 }, 89 },
93 90
94 'setSorted': function(aValue) { 91 'setSorted': function(aValue) {
95 this._sorted = aValue; 92 this._sorted = aValue;
96 this.updateSortIcon(); 93 this.updateSortIcon();
97 }, 94 },
98 95
99 //------------------------------------------------------------------------- 96 //-------------------------------------------------------------------------
100 97
101 'signalIdentifiers': function () { 98 'signalIdentifiers': function () {
102 return this._signalIdentifiers; 99 return this._signalIdentifiers;
103 }, 100 },
104 101
105 'resetSignalIdentifiers': function () { 102 'resetSignalIdentifiers': function () {
106 this._signalIdentifiers = []; 103 this._signalIdentifiers = [];
107 }, 104 },
108 105
109 //------------------------------------------------------------------------- 106 //-------------------------------------------------------------------------
110 107
111 'disconnectRowsSignals': function () { 108 'disconnectRowsSignals': function () {
112 MochiKit.Base.map(MochiKit.Signal.disconnect, this.signalIdentifiers()); 109 MochiKit.Base.map(MochiKit.Signal.disconnect, this.signalIdentifiers());
113 this.resetSignalIdentifiers(); 110 this.resetSignalIdentifiers();
114 }, 111 },
115 112
116 'connectEvent': function () { 113 'connectEvent': function () {
117 var ident; 114 var ident;
118 115
119 ident = MochiKit.Signal.connect.apply(null, arguments); 116 ident = MochiKit.Signal.connect.apply(null, arguments);
120 this.signalIdentifiers().push(ident); 117 this.signalIdentifiers().push(ident);
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CreateNewCardSplashComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CreateNewCardSplashComponent.js
index 61d6ead..d3aa175 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CreateNewCardSplashComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/CreateNewCardSplashComponent.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
29Clipperz.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Web.Components.CreateNewCardSplashComponent = function(args) { 28Clipperz.PM.UI.Web.Components.CreateNewCardSplashComponent = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Web.Components.CreateNewCardSplashComponent.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Web.Components.CreateNewCardSplashComponent.superclass.constructor.apply(this, arguments);
35 32
36 return this; 33 return this;
37} 34}
38 35
39//============================================================================= 36//=============================================================================
40 37
41Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.CreateNewCardSplashComponent, Clipperz.PM.UI.Common.Components.BaseComponent, { 38Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.CreateNewCardSplashComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
42 39
43 //------------------------------------------------------------------------- 40 //-------------------------------------------------------------------------
44 41
45 'toString': function () { 42 'toString': function () {
46 return "Clipperz.PM.UI.Web.Components.CreateNewCardSplashComponent component"; 43 return "Clipperz.PM.UI.Web.Components.CreateNewCardSplashComponent component";
47 }, 44 },
48 45
49 //------------------------------------------------------------------------- 46 //-------------------------------------------------------------------------
50 47
51 'renderSelf': function() { 48 'renderSelf': function() {
52 this.append(this.element(), [ 49 this.append(this.element(), [
53 {tag:'div', cls:'createNewCardSplash', id:this.getId('button'), children:[ 50 {tag:'div', cls:'createNewCardSplash', id:this.getId('button'), children:[
54 {tag:'span', html:"Create New Card"} 51 {tag:'span', html:"Create New Card"}
55 ]} 52 ]}
56 ]); 53 ]);
57 54
58 MochiKit.Signal.connect(this.getElement('button'), 'onclick', this, 'handleClick'); 55 MochiKit.Signal.connect(this.getElement('button'), 'onclick', this, 'handleClick');
59 }, 56 },
60 57
61 //------------------------------------------------------------------------- 58 //-------------------------------------------------------------------------
62 59
63 'handleClick': function (anEvent) { 60 'handleClick': function (anEvent) {
64 anEvent.preventDefault(); 61 anEvent.preventDefault();
65 MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'addCard', this.element()); 62 MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'addCard', this.element());
66 }, 63 },
67 64
68 //------------------------------------------------------------------------- 65 //-------------------------------------------------------------------------
69 66
70 __syntaxFix__: "syntax fix" 67 __syntaxFix__: "syntax fix"
71}); 68});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DataPanel.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DataPanel.js
index 91d99e3..d2f1045 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DataPanel.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DataPanel.js
@@ -1,111 +1,108 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Web.Components.DataPanel = function(args) { 28Clipperz.PM.UI.Web.Components.DataPanel = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Web.Components.DataPanel.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Web.Components.DataPanel.superclass.constructor.apply(this, arguments);
35 32
36 this._initiallySelectedTab = args.selected || 'OFFLINE_COPY'; 33 this._initiallySelectedTab = args.selected || 'OFFLINE_COPY';
37 this._tabPanelControllerConfiguration = { 34 this._tabPanelControllerConfiguration = {
38 'OFFLINE_COPY': { 35 'OFFLINE_COPY': {
39 tab:'offlineCopyTab', 36 tab:'offlineCopyTab',
40 panel:'offlineCopyPanel' 37 panel:'offlineCopyPanel'
41 }, 38 },
42 'SHARING': { 39 'SHARING': {
43 tab:'sharingTab', 40 tab:'sharingTab',
44 panel:'sharingPanel' 41 panel:'sharingPanel'
45 }, 42 },
46 'IMPORT': { 43 'IMPORT': {
47 tab:'importTab', 44 tab:'importTab',
48 panel:'importPanel' 45 panel:'importPanel'
49 }, 46 },
50 'EXPORT': { 47 'EXPORT': {
51 tab:'exportTab', 48 tab:'exportTab',
52 panel:'exportPanel' 49 panel:'exportPanel'
53 } 50 }
54 }; 51 };
55 52
56 return this; 53 return this;
57} 54}
58 55
59//============================================================================= 56//=============================================================================
60 57
61Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DataPanel, Clipperz.PM.UI.Common.Components.TabPanelComponent, { 58Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DataPanel, Clipperz.PM.UI.Common.Components.TabPanelComponent, {
62 59
63 //------------------------------------------------------------------------- 60 //-------------------------------------------------------------------------
64 61
65 'toString': function () { 62 'toString': function () {
66 return "Clipperz.PM.UI.Web.Components.DataPanel component"; 63 return "Clipperz.PM.UI.Web.Components.DataPanel component";
67 }, 64 },
68 65
69 //------------------------------------------------------------------------- 66 //-------------------------------------------------------------------------
70 67
71 'renderSelf': function(/*aContainer, aPosition*/) { 68 'renderSelf': function(/*aContainer, aPosition*/) {
72 this.append(this.element(), [ 69 this.append(this.element(), [
73 {tag:'div', cls:'header', children:[ 70 {tag:'div', cls:'header', children:[
74 {tag:'div', cls:'subPanelTabs', children:[ 71 {tag:'div', cls:'subPanelTabs', children:[
75 {tag:'ul', children:[ 72 {tag:'ul', children:[
76 {tag:'li', id:this.getId('offlineCopyTab'),children:[{tag:'a', href:'#', html:'Offline copy'}], cls:'first'}, 73 {tag:'li', id:this.getId('offlineCopyTab'),children:[{tag:'a', href:'#', html:'Offline copy'}], cls:'first'},
77 {tag:'li', id:this.getId('sharingTab'), children:[{tag:'a', href:'#', html:'Sharing'}]}, 74 {tag:'li', id:this.getId('sharingTab'), children:[{tag:'a', href:'#', html:'Sharing'}]},
78 {tag:'li', id:this.getId('importTab'), children:[{tag:'a', href:'#', html:'Import'}]}, 75 {tag:'li', id:this.getId('importTab'), children:[{tag:'a', href:'#', html:'Import'}]},
79 {tag:'li', id:this.getId('exportTab'), children:[{tag:'a', href:'#', html:'Export'}]} 76 {tag:'li', id:this.getId('exportTab'), children:[{tag:'a', href:'#', html:'Export'}]}
80 ]} 77 ]}
81 ]} 78 ]}
82 ]}, 79 ]},
83 {tag:'div', cls:'body', children:[ 80 {tag:'div', cls:'body', children:[
84 {tag:'div', cls:'accountPanel', children:[ 81 {tag:'div', cls:'accountPanel', children:[
85 {tag:'div', cls:'subPanelContent', children:[ 82 {tag:'div', cls:'subPanelContent', children:[
86 {tag:'ul', children:[ 83 {tag:'ul', children:[
87 {tag:'li', id:this.getId('offlineCopyPanel'),children:[ 84 {tag:'li', id:this.getId('offlineCopyPanel'),children:[
88 {tag:'h3', html:"Offline copy"} 85 {tag:'h3', html:"Offline copy"}
89 ]}, 86 ]},
90 {tag:'li', id:this.getId('sharingPanel'),children:[ 87 {tag:'li', id:this.getId('sharingPanel'),children:[
91 {tag:'h3', html:"Sharing"} 88 {tag:'h3', html:"Sharing"}
92 ]}, 89 ]},
93 {tag:'li', id:this.getId('importPanel'), children:[ 90 {tag:'li', id:this.getId('importPanel'), children:[
94 {tag:'h3', html:"Import"} 91 {tag:'h3', html:"Import"}
95 ]}, 92 ]},
96 {tag:'li', id:this.getId('exportPanel'), children:[ 93 {tag:'li', id:this.getId('exportPanel'), children:[
97 {tag:'h3', html:"Export"} 94 {tag:'h3', html:"Export"}
98 ]} 95 ]}
99 ]} 96 ]}
100 ]} 97 ]}
101 ]} 98 ]}
102 ]}, 99 ]},
103 {tag:'div', cls:'footer'} 100 {tag:'div', cls:'footer'}
104 ]); 101 ]);
105 102
106 this.tabPanelController().setup({selected:this.initiallySelectedTab()}); 103 this.tabPanelController().setup({selected:this.initiallySelectedTab()});
107 }, 104 },
108 105
109 //------------------------------------------------------------------------- 106 //-------------------------------------------------------------------------
110 __syntaxFix__: "syntax fix" 107 __syntaxFix__: "syntax fix"
111}); 108});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DateColumnManager.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DateColumnManager.js
index 3f8aa88..ea55ba4 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DateColumnManager.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DateColumnManager.js
@@ -1,72 +1,69 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31//############################################################################# 28//#############################################################################
32 29
33Clipperz.PM.UI.Web.Components.DateColumnManager = function(args) { 30Clipperz.PM.UI.Web.Components.DateColumnManager = function(args) {
34 args = args || {}; 31 args = args || {};
35 Clipperz.PM.UI.Web.Components.DateColumnManager.superclass.constructor.call(this, args); 32 Clipperz.PM.UI.Web.Components.DateColumnManager.superclass.constructor.call(this, args);
36 33
37 this._format = args.format|| Clipperz.Base.exception.raise('MandatoryParameter'); 34 this._format = args.format|| Clipperz.Base.exception.raise('MandatoryParameter');
38 35
39 return this; 36 return this;
40} 37}
41 38
42//============================================================================= 39//=============================================================================
43 40
44Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DateColumnManager, Clipperz.PM.UI.Web.Components.ColumnManager, { 41Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DateColumnManager, Clipperz.PM.UI.Web.Components.ColumnManager, {
45 42
46 'toString': function () { 43 'toString': function () {
47 return "Clipperz.PM.UI.Web.Components.DateColumnManager component"; 44 return "Clipperz.PM.UI.Web.Components.DateColumnManager component";
48 }, 45 },
49 46
50 //------------------------------------------------------------------------- 47 //-------------------------------------------------------------------------
51 48
52 'format': function () { 49 'format': function () {
53 return this._format; 50 return this._format;
54 }, 51 },
55 52
56 //------------------------------------------------------------------------- 53 //-------------------------------------------------------------------------
57 54
58 'renderCell': function(aRowElement, anObject) { 55 'renderCell': function(aRowElement, anObject) {
59 Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:this.cssClass(), children:[ 56 Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:this.cssClass(), children:[
60 { 57 {
61 tag:'span', 58 tag:'span',
62 title:Clipperz.PM.Date.formatDateWithTemplate(anObject[this.name()], "D, d M Y H:i:s"), 59 title:Clipperz.PM.Date.formatDateWithTemplate(anObject[this.name()], "D, d M Y H:i:s"),
63 html:Clipperz.PM.Date.formatDateWithTemplate(anObject[this.name()], this.format()) 60 html:Clipperz.PM.Date.formatDateWithTemplate(anObject[this.name()], this.format())
64 } 61 }
65 ]}); 62 ]});
66 }, 63 },
67 64
68 //----------------------------------------------------- 65 //-----------------------------------------------------
69 66
70 '__syntax_fix__' : 'syntax fix' 67 '__syntax_fix__' : 'syntax fix'
71}); 68});
72 69
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DeleteObjectColumnManager.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DeleteObjectColumnManager.js
index ee60f2f..fe59494 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DeleteObjectColumnManager.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DeleteObjectColumnManager.js
@@ -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
29Clipperz.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31//############################################################################# 28//#############################################################################
32 29
33Clipperz.PM.UI.Web.Components.DeleteObjectColumnManager = function(args) { 30Clipperz.PM.UI.Web.Components.DeleteObjectColumnManager = function(args) {
34 args = args || {}; 31 args = args || {};
35 Clipperz.PM.UI.Web.Components.DeleteObjectColumnManager.superclass.constructor.call(this, args); 32 Clipperz.PM.UI.Web.Components.DeleteObjectColumnManager.superclass.constructor.call(this, args);
36 33
37 return this; 34 return this;
38} 35}
39 36
40//============================================================================= 37//=============================================================================
41 38
42Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DeleteObjectColumnManager, Clipperz.PM.UI.Web.Components.LinkColumnManager, { 39Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DeleteObjectColumnManager, Clipperz.PM.UI.Web.Components.LinkColumnManager, {
43 40
44 'toString': function () { 41 'toString': function () {
45 return "Clipperz.PM.UI.Web.Components.DeleteObjectColumnManager component"; 42 return "Clipperz.PM.UI.Web.Components.DeleteObjectColumnManager component";
46 }, 43 },
47 44
48 //------------------------------------------------------------------------- 45 //-------------------------------------------------------------------------
49 46
50 'renderCell': function(aRowElement, anObject) { 47 'renderCell': function(aRowElement, anObject) {
51 var tdElement; 48 var tdElement;
52 var linkElement; 49 var linkElement;
53 50
54 tdElement = Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:this.cssClass(), children:[ 51 tdElement = Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:this.cssClass(), children:[
55 {tag:'div', cls:'delete', children:[ 52 {tag:'div', cls:'delete', children:[
56 {tag:'span', children:[ 53 {tag:'span', children:[
57 {tag:'a', href:'delete', html:"delete"} 54 {tag:'a', href:'delete', html:"delete"}
58 ]} 55 ]}
59 ]} 56 ]}
60 ]}); 57 ]});
61 58
62 linkElement = MochiKit.DOM.getFirstElementByTagAndClassName('a', null, tdElement); 59 linkElement = MochiKit.DOM.getFirstElementByTagAndClassName('a', null, tdElement);
63 // MochiKit.Signal.connect(linkElement, 'onclick', MochiKit.Base.method(this, 'handleLinkClick', anObject['_rowObject'])); 60 // MochiKit.Signal.connect(linkElement, 'onclick', MochiKit.Base.method(this, 'handleLinkClick', anObject['_rowObject']));
64 this.connectEvent(linkElement, 'onclick', MochiKit.Base.method(this, 'handleLinkClick', anObject['_rowObject'])); 61 this.connectEvent(linkElement, 'onclick', MochiKit.Base.method(this, 'handleLinkClick', anObject['_rowObject']));
65 }, 62 },
66 63
67 //----------------------------------------------------- 64 //-----------------------------------------------------
68 '__syntax_fix__' : 'syntax fix' 65 '__syntax_fix__' : 'syntax fix'
69}); 66});
70 67
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginColumnManager.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginColumnManager.js
index 4bf9020..a1f0f9f 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginColumnManager.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginColumnManager.js
@@ -1,90 +1,87 @@
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/*
30Clipperz.Base.module('Clipperz.PM.UI.Web.Components'); 27Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
31 28
32//############################################################################# 29//#############################################################################
33 30
34Clipperz.PM.UI.Web.Components.DirectLoginColumnManager = function(args) { 31Clipperz.PM.UI.Web.Components.DirectLoginColumnManager = function(args) {
35 args = args || {}; 32 args = args || {};
36 Clipperz.PM.UI.Web.Components.DirectLoginColumnManager.superclass.constructor.call(this, args); 33 Clipperz.PM.UI.Web.Components.DirectLoginColumnManager.superclass.constructor.call(this, args);
37 34
38 this._actionMethod = args.actionMethod || null; 35 this._actionMethod = args.actionMethod || null;
39 36
40 return this; 37 return this;
41} 38}
42 39
43//============================================================================= 40//=============================================================================
44 41
45Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DirectLoginColumnManager, Clipperz.PM.UI.Web.Components.ColumnManager, { 42Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DirectLoginColumnManager, Clipperz.PM.UI.Web.Components.ColumnManager, {
46 43
47 'toString': function () { 44 'toString': function () {
48 return "Clipperz.PM.UI.Web.Components.DateColumnManager component"; 45 return "Clipperz.PM.UI.Web.Components.DateColumnManager component";
49 }, 46 },
50 47
51 //------------------------------------------------------------------------- 48 //-------------------------------------------------------------------------
52 49
53 'actionMethod': function () { 50 'actionMethod': function () {
54 return this._actionMethod; 51 return this._actionMethod;
55 }, 52 },
56 53
57 //------------------------------------------------------------------------- 54 //-------------------------------------------------------------------------
58 55
59 'renderCell': function(aRowElement, anObject) { 56 'renderCell': function(aRowElement, anObject) {
60 vartdElement; 57 vartdElement;
61 varlinkElement; 58 varlinkElement;
62 59
63 tdElement = Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:this.cssClass(), children:[ 60 tdElement = Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:this.cssClass(), children:[
64 {tag:'div', cls:'directLogin_directLogin', children:[ 61 {tag:'div', cls:'directLogin_directLogin', children:[
65 {tag:'div', cls:'directLogin_directLogin_body', children:[ 62 {tag:'div', cls:'directLogin_directLogin_body', children:[
66 {tag:'a', href:'#', html:anObject[this.name()]} 63 {tag:'a', href:'#', html:anObject[this.name()]}
67 ]} 64 ]}
68 ]} 65 ]}
69 ]}); 66 ]});
70 67
71 linkElement = MochiKit.DOM.getFirstElementByTagAndClassName('a', null, tdElement); 68 linkElement = MochiKit.DOM.getFirstElementByTagAndClassName('a', null, tdElement);
72 // MochiKit.Signal.connect(linkElement, 'onclick', MochiKit.Base.method(this, 'handleLinkClick', anObject['_rowObject'])); 69 // MochiKit.Signal.connect(linkElement, 'onclick', MochiKit.Base.method(this, 'handleLinkClick', anObject['_rowObject']));
73 this.connectEvent(linkElement, 'onclick', MochiKit.Base.method(this, 'handleLinkClick', anObject['_rowObject'])); 70 this.connectEvent(linkElement, 'onclick', MochiKit.Base.method(this, 'handleLinkClick', anObject['_rowObject']));
74 }, 71 },
75 72
76 //----------------------------------------------------- 73 //-----------------------------------------------------
77 74
78 'handleLinkClick': function (anObject, anEvent) { 75 'handleLinkClick': function (anObject, anEvent) {
79 anEvent.preventDefault(); 76 anEvent.preventDefault();
80 77
81 if (this.actionMethod() != null) { 78 if (this.actionMethod() != null) {
82 this.actionMethod()(anObject, anEvent); 79 this.actionMethod()(anObject, anEvent);
83 } 80 }
84 }, 81 },
85 82
86 //----------------------------------------------------- 83 //-----------------------------------------------------
87 '__syntax_fix__' : 'syntax fix' 84 '__syntax_fix__' : 'syntax fix'
88}); 85});
89 86
90*/ \ No newline at end of file 87*/ \ No newline at end of file
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingBindingComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingBindingComponent.js
index 9a9c0b2..1a76b0c 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingBindingComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingBindingComponent.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Web.Components.DirectLoginEditingBindingComponent = function(args) { 28Clipperz.PM.UI.Web.Components.DirectLoginEditingBindingComponent = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Web.Components.DirectLoginEditingBindingComponent.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Web.Components.DirectLoginEditingBindingComponent.superclass.constructor.apply(this, arguments);
35 32
36 this._formFieldName = args.formFieldName|| Clipperz.Base.exception.raise('MandatoryParameter'); 33 this._formFieldName = args.formFieldName|| Clipperz.Base.exception.raise('MandatoryParameter');
37 this._fields = args.fields || Clipperz.Base.exception.raise('MandatoryParameter'); 34 this._fields = args.fields || Clipperz.Base.exception.raise('MandatoryParameter');
38 this._initiallySelectedFieldKey = args.selectedFieldKey|| null; 35 this._initiallySelectedFieldKey = args.selectedFieldKey|| null;
39 36
40 return this; 37 return this;
41} 38}
42 39
43//============================================================================= 40//=============================================================================
44 41
45Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DirectLoginEditingBindingComponent, Clipperz.PM.UI.Common.Components.BaseComponent, { 42Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DirectLoginEditingBindingComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
46 43
47 //------------------------------------------------------------------------- 44 //-------------------------------------------------------------------------
48 45
49 'toString': function () { 46 'toString': function () {
50 return "Clipperz.PM.UI.Web.Components.DirectLoginEditingBindingComponent component"; 47 return "Clipperz.PM.UI.Web.Components.DirectLoginEditingBindingComponent component";
51 }, 48 },
52 49
53 //------------------------------------------------------------------------- 50 //-------------------------------------------------------------------------
54 51
55 'formFieldName': function () { 52 'formFieldName': function () {
56 return this._formFieldName; 53 return this._formFieldName;
57 }, 54 },
58 55
59 //------------------------------------------------------------------------- 56 //-------------------------------------------------------------------------
60 57
61 'fields': function () { 58 'fields': function () {
62 return this._fields; 59 return this._fields;
63 }, 60 },
64 61
65 //------------------------------------------------------------------------- 62 //-------------------------------------------------------------------------
66 63
67 'selectedValue': function () { 64 'selectedValue': function () {
68 var result; 65 var result;
69 66
70 result = this.getElement('select').value; 67 result = this.getElement('select').value;
71 68
72 if (result == '---') { 69 if (result == '---') {
73 result = null; 70 result = null;
74 } 71 }
75 72
76 return result; 73 return result;
77 }, 74 },
78 75
79 'initiallySelectedFieldKey': function () { 76 'initiallySelectedFieldKey': function () {
80 return this._initiallySelectedFieldKey; 77 return this._initiallySelectedFieldKey;
81 }, 78 },
82 79
83 //========================================================================= 80 //=========================================================================
84 81
85 'renderSelf': function() { 82 'renderSelf': function() {
86 var initiallySelectedOptions; 83 var initiallySelectedOptions;
87 84
88 this.append(this.element(), {tag:'div', id:this.getId('div'), cls:'binding', children:[ 85 this.append(this.element(), {tag:'div', id:this.getId('div'), cls:'binding', children:[
89 {tag:'span', cls:'formFieldName', html:this.formFieldName()}, 86 {tag:'span', cls:'formFieldName', html:this.formFieldName()},
90 {tag:'span', cls:'fieldLock', id:this.getId('isHidden'), children:[ 87 {tag:'span', cls:'fieldLock', id:this.getId('isHidden'), children:[
91 {tag:'a', href:'#', id:this.getId('showHide'), html:'&nbsp;'} 88 {tag:'a', href:'#', id:this.getId('showHide'), html:'&nbsp;'}
92 ]}, 89 ]},
93 {tag:'input', id:this.getId('input'), cls:'formFieldExampleValue', disabled:true, value:''}, 90 {tag:'input', id:this.getId('input'), cls:'formFieldExampleValue', disabled:true, value:''},
94 {tag:'select', name:this.formFieldName(), id:this.getId('select'), cls:'formFieldMatchinCardField', children: 91 {tag:'select', name:this.formFieldName(), id:this.getId('select'), cls:'formFieldMatchinCardField', children:
95 MochiKit.Base.flattenArguments( 92 MochiKit.Base.flattenArguments(
96 {tag:'option', value:'---', html:"---"}, 93 {tag:'option', value:'---', html:"---"},
97 MochiKit.Base.map( 94 MochiKit.Base.map(
98 MochiKit.Base.bind(function (aField) { return {tag:'option', value:aField['reference'], html:aField['label']}; }, this), 95 MochiKit.Base.bind(function (aField) { return {tag:'option', value:aField['reference'], html:aField['label']}; }, this),
99 this.fields() 96 this.fields()
100 ) 97 )
101 ) 98 )
102 } 99 }
103 ]}); 100 ]});
104 101
105 MochiKit.Signal.connect(this.getElement('select'), 'onchange', this, 'handleSelectChange'); 102 MochiKit.Signal.connect(this.getElement('select'), 'onchange', this, 'handleSelectChange');
106 MochiKit.Signal.connect(this.getElement('showHide'), 'onclick', this, 'handleShowHide'); 103 MochiKit.Signal.connect(this.getElement('showHide'), 'onclick', this, 'handleShowHide');
107 104
108 if (! MochiKit.Base.isUndefinedOrNull(this.initiallySelectedFieldKey())) { 105 if (! MochiKit.Base.isUndefinedOrNull(this.initiallySelectedFieldKey())) {
109 initiallySelectedOptions = MochiKit.Selector.findChildElements(this.element(), ['option[value=' + this.initiallySelectedFieldKey() + ']']); 106 initiallySelectedOptions = MochiKit.Selector.findChildElements(this.element(), ['option[value=' + this.initiallySelectedFieldKey() + ']']);
110 if (initiallySelectedOptions.length == 1) { 107 if (initiallySelectedOptions.length == 1) {
111 MochiKit.DOM.updateNodeAttributes(initiallySelectedOptions[0], {selected:true}); 108 MochiKit.DOM.updateNodeAttributes(initiallySelectedOptions[0], {selected:true});
112 this.handleSelectChange(); 109 this.handleSelectChange();
113 } 110 }
114 } 111 }
115 }, 112 },
116 113
117 //------------------------------------------------------------------------- 114 //-------------------------------------------------------------------------
118 115
119 'setFieldValue': function (aValue) { 116 'setFieldValue': function (aValue) {
120 this.getElement('input').value = aValue; 117 this.getElement('input').value = aValue;
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingComponent.js
index d254c29..5114b1d 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingComponent.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Web.Components.DirectLoginEditingComponent = function(args) { 28Clipperz.PM.UI.Web.Components.DirectLoginEditingComponent = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Web.Components.DirectLoginEditingComponent.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Web.Components.DirectLoginEditingComponent.superclass.constructor.apply(this, arguments);
35 32
36 this._tabPanelController = null; 33 this._tabPanelController = null;
37 34
38 this._initiallySelectedTab = args.selected || 'TYPE'; 35 this._initiallySelectedTab = args.selected || 'TYPE';
39 this._tabPanelControllerConfiguration = { 36 this._tabPanelControllerConfiguration = {
40 'LABEL': { 37 'LABEL': {
41 tab:'labelTab', 38 tab:'labelTab',
42 panel:'labelTabpanel' 39 panel:'labelTabpanel'
43 }, 40 },
44 'TYPE': { 41 'TYPE': {
45 tab:'typeTab', 42 tab:'typeTab',
46 panel:'typeTabpanel' 43 panel:'typeTabpanel'
47 }, 44 },
48 'CONFIGURATION': { 45 'CONFIGURATION': {
49 tab:'configurationTab', 46 tab:'configurationTab',
50 panel:'configurationTabpanel' 47 panel:'configurationTabpanel'
51 }, 48 },
52 'BINDINGS': { 49 'BINDINGS': {
53 tab:'bindingsTab', 50 tab:'bindingsTab',
54 panel:'bindingsTabpanel' 51 panel:'bindingsTabpanel'
55 }, 52 },
56 'FAVICON': { 53 'FAVICON': {
57 tab:'faviconTab', 54 tab:'faviconTab',
58 panel:'faviconTabpanel' 55 panel:'faviconTabpanel'
59 }, 56 },
60 'DONE': { 57 'DONE': {
61 tab:'doneTab', 58 tab:'doneTab',
62 panel:'doneTabpanel' 59 panel:'doneTabpanel'
63 } 60 }
64 }; 61 };
65 62
66 this._directLoginReference = null; 63 this._directLoginReference = null;
67 64
68 this._directLoginFavicon = null; 65 this._directLoginFavicon = null;
69 66
70 this._updateFaviconCounter = 0; 67 this._updateFaviconCounter = 0;
71 this._faviconComponent = null; 68 this._faviconComponent = null;
72 69
73 this._bindingComponents= []; 70 this._bindingComponents= [];
74 this._formValueComponents = []; 71 this._formValueComponents = [];
75 72
76 return this; 73 return this;
77} 74}
78 75
79//============================================================================= 76//=============================================================================
80 77
81//Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DirectLoginEditingComponent, Clipperz.PM.UI.Common.Components.BaseComponent, { 78//Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DirectLoginEditingComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
82Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DirectLoginEditingComponent, Clipperz.PM.UI.Common.Components.TabPanelComponent, { 79Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DirectLoginEditingComponent, Clipperz.PM.UI.Common.Components.TabPanelComponent, {
83 80
84 //------------------------------------------------------------------------- 81 //-------------------------------------------------------------------------
85 82
86 'toString': function () { 83 'toString': function () {
87 return "Clipperz.PM.UI.Web.Components.DirectLoginEditingComponent component"; 84 return "Clipperz.PM.UI.Web.Components.DirectLoginEditingComponent component";
88 }, 85 },
89 86
90 //========================================================================= 87 //=========================================================================
91 88
92 'directLoginReference': function () { 89 'directLoginReference': function () {
93 return this._directLoginReference; 90 return this._directLoginReference;
94 }, 91 },
95 92
96 //------------------------------------------------------------------------- 93 //-------------------------------------------------------------------------
97 94
98 'setDirectLoginReference': function (aDirectLoginReference) { 95 'setDirectLoginReference': function (aDirectLoginReference) {
99 this._directLoginReference = aDirectLoginReference; 96 this._directLoginReference = aDirectLoginReference;
100 97
101 return this._directLoginReference; 98 return this._directLoginReference;
102 }, 99 },
103 100
104 //========================================================================= 101 //=========================================================================
105 102
106 'label': function () { 103 'label': function () {
107 return this.getElement('label').value 104 return this.getElement('label').value
108 }, 105 },
109 106
110 'setLabel': function (aValue) { 107 'setLabel': function (aValue) {
111//console.log("##> LABEL: " + aValue); 108//console.log("##> LABEL: " + aValue);
112 this.getElement('label').value = (aValue ? aValue : ''); 109 this.getElement('label').value = (aValue ? aValue : '');
113 }, 110 },
114 111
115 //------------------------------------------------------------------------- 112 //-------------------------------------------------------------------------
116 113
117 'favicon': function () { 114 'favicon': function () {
118 return this.getElement('faviconURL').value; 115 return this.getElement('faviconURL').value;
119 }, 116 },
120 117
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingFormValueComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingFormValueComponent.js
index b91eb98..fa57233 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingFormValueComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginEditingFormValueComponent.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Web.Components.DirectLoginEditingFormValueComponent = function(args) { 28Clipperz.PM.UI.Web.Components.DirectLoginEditingFormValueComponent = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Web.Components.DirectLoginEditingFormValueComponent.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Web.Components.DirectLoginEditingFormValueComponent.superclass.constructor.apply(this, arguments);
35 32
36 this._formFieldName = args.formFieldName|| Clipperz.Base.exception.raise('MandatoryParameter'); 33 this._formFieldName = args.formFieldName|| Clipperz.Base.exception.raise('MandatoryParameter');
37 this._fieldOptions = args.fieldOptions || Clipperz.Base.exception.raise('MandatoryParameter'); 34 this._fieldOptions = args.fieldOptions || Clipperz.Base.exception.raise('MandatoryParameter');
38 this._initialValue = args.initialValue || null; 35 this._initialValue = args.initialValue || null;
39 36
40 return this; 37 return this;
41} 38}
42 39
43//============================================================================= 40//=============================================================================
44 41
45Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DirectLoginEditingFormValueComponent, Clipperz.PM.UI.Common.Components.BaseComponent, { 42Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DirectLoginEditingFormValueComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
46 43
47 //------------------------------------------------------------------------- 44 //-------------------------------------------------------------------------
48 45
49 'toString': function () { 46 'toString': function () {
50 return "Clipperz.PM.UI.Web.Components.DirectLoginEditingFormValueComponent component"; 47 return "Clipperz.PM.UI.Web.Components.DirectLoginEditingFormValueComponent component";
51 }, 48 },
52 49
53 //------------------------------------------------------------------------- 50 //-------------------------------------------------------------------------
54 51
55 'formFieldName': function () { 52 'formFieldName': function () {
56 return this._formFieldName; 53 return this._formFieldName;
57 }, 54 },
58 55
59 //------------------------------------------------------------------------- 56 //-------------------------------------------------------------------------
60 57
61 'fieldOptions': function () { 58 'fieldOptions': function () {
62 return this._fieldOptions; 59 return this._fieldOptions;
63 }, 60 },
64 61
65 'fieldType': function () { 62 'fieldType': function () {
66 return this.fieldOptions()['type']; 63 return this.fieldOptions()['type'];
67 }, 64 },
68 65
69 'optionValues': function () { 66 'optionValues': function () {
70 return MochiKit.Base.map(function (anOptionValue) { 67 return MochiKit.Base.map(function (anOptionValue) {
71 return { 68 return {
72 'label': anOptionValue['label'] || anOptionValue['value'], 69 'label': anOptionValue['label'] || anOptionValue['value'],
73 'value': anOptionValue['value'] 70 'value': anOptionValue['value']
74 } 71 }
75 }, this.fieldOptions()['options']); 72 }, this.fieldOptions()['options']);
76 }, 73 },
77 74
78 //------------------------------------------------------------------------- 75 //-------------------------------------------------------------------------
79 76
80 'selectedValue': function () { 77 'selectedValue': function () {
81 var result; 78 var result;
82 79
83 result = this.getElement('select').value; 80 result = this.getElement('select').value;
84 81
85 if (result == '---') { 82 if (result == '---') {
86 result = null; 83 result = null;
87 } 84 }
88 85
89 return result; 86 return result;
90 }, 87 },
91 88
92 'initialValue': function () { 89 'initialValue': function () {
93 return this._initialValue; 90 return this._initialValue;
94 }, 91 },
95 92
96 //========================================================================= 93 //=========================================================================
97 94
98 'renderSelf': function() { 95 'renderSelf': function() {
99//console.log(">>> DirectLoginEditingFormValueComponent.renderSelf"); 96//console.log(">>> DirectLoginEditingFormValueComponent.renderSelf");
100//console.log("FIELD OPTIONS", this.fieldOptions()); 97//console.log("FIELD OPTIONS", this.fieldOptions());
101//console.log("OPTION VALUES", this.optionValues()); 98//console.log("OPTION VALUES", this.optionValues());
102 this.append(this.element(), {tag:'div', id:this.getId('div'), cls:'formValue', children:[ 99 this.append(this.element(), {tag:'div', id:this.getId('div'), cls:'formValue', children:[
103 {tag:'span', cls:'formFieldName', html:this.formFieldName()}, 100 {tag:'span', cls:'formFieldName', html:this.formFieldName()},
104 {tag:'div', id:this.getId('values')} 101 {tag:'div', id:this.getId('values')}
105 ]}); 102 ]});
106 103
107 if ((this.fieldType() == 'radio') || (this.fieldType() == 'select')) { 104 if ((this.fieldType() == 'radio') || (this.fieldType() == 'select')) {
108 this.append(this.getElement('values'), 105 this.append(this.getElement('values'),
109 {tag:'select', name:this.formFieldName(), id:this.getId('select'), cls:'formFieldMatchinCardField', children: 106 {tag:'select', name:this.formFieldName(), id:this.getId('select'), cls:'formFieldMatchinCardField', children:
110 MochiKit.Base.flattenArguments( 107 MochiKit.Base.flattenArguments(
111 // {tag:'option', value:'---', html:"---"}, 108 // {tag:'option', value:'---', html:"---"},
112 MochiKit.Base.map( 109 MochiKit.Base.map(
113 MochiKit.Base.bind(function (aValue) { return {tag:'option', value:aValue['value'], html:aValue['label']}; }, this), 110 MochiKit.Base.bind(function (aValue) { return {tag:'option', value:aValue['value'], html:aValue['label']}; }, this),
114 this.optionValues() 111 this.optionValues()
115 ) 112 )
116 ) 113 )
117 } 114 }
118 ); 115 );
119 116
120 MochiKit.Signal.connect(this.getElement('select'), 'onchange', this, 'handleSelectChange'); 117 MochiKit.Signal.connect(this.getElement('select'), 'onchange', this, 'handleSelectChange');
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginsColumnManager.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginsColumnManager.js
index 1f49575..d8dc941 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginsColumnManager.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/DirectLoginsColumnManager.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31//############################################################################# 28//#############################################################################
32 29
33Clipperz.PM.UI.Web.Components.DirectLoginsColumnManager = function(args) { 30Clipperz.PM.UI.Web.Components.DirectLoginsColumnManager = function(args) {
34 args = args || {}; 31 args = args || {};
35 Clipperz.PM.UI.Web.Components.DirectLoginsColumnManager.superclass.constructor.call(this, args); 32 Clipperz.PM.UI.Web.Components.DirectLoginsColumnManager.superclass.constructor.call(this, args);
36 33
37 this._enterLeaveCounter = 0; 34 this._enterLeaveCounter = 0;
38 this._selectedRowObject = null; 35 this._selectedRowObject = null;
39 36
40 return this; 37 return this;
41} 38}
42 39
43//============================================================================= 40//=============================================================================
44 41
45Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DirectLoginsColumnManager, Clipperz.PM.UI.Web.Components.ColumnManager, { 42Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.DirectLoginsColumnManager, Clipperz.PM.UI.Web.Components.ColumnManager, {
46 43
47 'toString': function () { 44 'toString': function () {
48 return "Clipperz.PM.UI.Web.Components.DirectLoginsColumnManager component"; 45 return "Clipperz.PM.UI.Web.Components.DirectLoginsColumnManager component";
49 }, 46 },
50 47
51 //------------------------------------------------------------------------- 48 //-------------------------------------------------------------------------
52 49
53 'renderHeader': function(aTRElement) { 50 'renderHeader': function(aTRElement) {
54 Clipperz.PM.UI.Web.Components.DirectLoginsColumnManager.superclass.renderHeader.call(this, aTRElement); 51 Clipperz.PM.UI.Web.Components.DirectLoginsColumnManager.superclass.renderHeader.call(this, aTRElement);
55 52
56 Clipperz.DOM.Helper.append(MochiKit.DOM.currentDocument().body, {tag:'div', cls:'DirectLoginListPopup', id:this.getId('DirectLoginListPopup'), children:[ 53 Clipperz.DOM.Helper.append(MochiKit.DOM.currentDocument().body, {tag:'div', cls:'DirectLoginListPopup', id:this.getId('DirectLoginListPopup'), children:[
57 {tag:'div', cls:'DirectLoginListPopup_body', children:[ 54 {tag:'div', cls:'DirectLoginListPopup_body', children:[
58 {tag:'ul', id:this.getId('DirectLoginListPopup_list'), children:[ 55 {tag:'ul', id:this.getId('DirectLoginListPopup_list'), children:[
59 // {tag:'li', children:[ 56 // {tag:'li', children:[
60 // {tag:'img', cls:'favicon', src:'http://www.microsoft.com/favicon.ico'}, 57 // {tag:'img', cls:'favicon', src:'http://www.microsoft.com/favicon.ico'},
61 // {tag:'a', href:'#', html:"Google Mail"} 58 // {tag:'a', href:'#', html:"Google Mail"}
62 // ]}, 59 // ]},
63 // ... 60 // ...
64 ]} 61 ]}
65 ]}, 62 ]},
66 {tag:'div', cls:'DirectLoginListPopup_footer'} 63 {tag:'div', cls:'DirectLoginListPopup_footer'}
67 ]}); 64 ]});
68 65
69 MochiKit.Style.hideElement(this.getId('DirectLoginListPopup')); 66 MochiKit.Style.hideElement(this.getId('DirectLoginListPopup'));
70 67
71 //BEWARE: use MochiKit.Signal.connect instead of this.connectEvent, as the HEADER is NOT redrawn after each refresh 68 //BEWARE: use MochiKit.Signal.connect instead of this.connectEvent, as the HEADER is NOT redrawn after each refresh
72 MochiKit.Signal.connect(this.getId('DirectLoginListPopup'), 'onmouseenter', this, 'handleDirectLoginListPopupEnter'); 69 MochiKit.Signal.connect(this.getId('DirectLoginListPopup'), 'onmouseenter', this, 'handleDirectLoginListPopupEnter');
73 MochiKit.Signal.connect(this.getId('DirectLoginListPopup'), 'onmouseleave', this, 'handleDirectLoginListPopupLeave'); 70 MochiKit.Signal.connect(this.getId('DirectLoginListPopup'), 'onmouseleave', this, 'handleDirectLoginListPopupLeave');
74 }, 71 },
75 72
76 //------------------------------------------------------------------------- 73 //-------------------------------------------------------------------------
77 74
78 'renderCell': function(aRowElement, anObject) { 75 'renderCell': function(aRowElement, anObject) {
79 var i,c; 76 var i,c;
80 var directLoginsInfo; 77 var directLoginsInfo;
81 78
82 directLoginsInfo = anObject[this.name()]; 79 directLoginsInfo = anObject[this.name()];
83 80
84 TDElement = Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:'card_directLogins'}); 81 TDElement = Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:'card_directLogins'});
85 82
86 c = Math.min(2, directLoginsInfo.length); 83 c = Math.min(2, directLoginsInfo.length);
87 for (i=0; i<c; i++) { 84 for (i=0; i<c; i++) {
88 var elementID; 85 var elementID;
89 86
90 elementID = 'directLogin_' + directLoginsInfo[i]['_reference']; 87 elementID = 'directLogin_' + directLoginsInfo[i]['_reference'];
91 88
92 Clipperz.DOM.Helper.append(TDElement, {tag:'div', cls:'card_directLogin', children:[ 89 Clipperz.DOM.Helper.append(TDElement, {tag:'div', cls:'card_directLogin', children:[
93 {tag:'div', cls:'card_directLogin_body', children:[ 90 {tag:'div', cls:'card_directLogin_body', children:[
94 {tag:'a', href:'#', id:elementID, html:directLoginsInfo[i]['label']} 91 {tag:'a', href:'#', id:elementID, html:directLoginsInfo[i]['label']}
95 ]} 92 ]}
96 ]}); 93 ]});
97 // MochiKit.Signal.connect(elementID, 'onclick', MochiKit.Base.method(this, 'handleDirectLoginClick', directLoginsInfo[i]['_rowObject'])); 94 // MochiKit.Signal.connect(elementID, 'onclick', MochiKit.Base.method(this, 'handleDirectLoginClick', directLoginsInfo[i]['_rowObject']));
98 this.connectEvent(elementID, 'onclick', MochiKit.Base.method(this, 'handleDirectLoginClick', directLoginsInfo[i]['_rowObject'])); 95 this.connectEvent(elementID, 'onclick', MochiKit.Base.method(this, 'handleDirectLoginClick', directLoginsInfo[i]['_rowObject']));
99 } 96 }
100 97
101 if (directLoginsInfo.length > 2) { 98 if (directLoginsInfo.length > 2) {
102 var ellipsesElement; 99 var ellipsesElement;
103 100
104 ellipsesElement = Clipperz.DOM.Helper.append(TDElement, {tag:'div', cls:'card_directLogin_ellipses', children:[ 101 ellipsesElement = Clipperz.DOM.Helper.append(TDElement, {tag:'div', cls:'card_directLogin_ellipses', children:[
105 {tag:'div', cls:'card_directLogin_ellipses_body', children:[ 102 {tag:'div', cls:'card_directLogin_ellipses_body', children:[
106 {tag:'span', html:'&hellip;'} 103 {tag:'span', html:'&hellip;'}
107 ]} 104 ]}
108 ]}); 105 ]});
109 106
110 /// MochiKit.Signal.connect(ellipsesElement, 'onmouseenter', MochiKit.Base.method(this, 'handleEllipsesEnter', anObject)); 107 /// MochiKit.Signal.connect(ellipsesElement, 'onmouseenter', MochiKit.Base.method(this, 'handleEllipsesEnter', anObject));
111 /// MochiKit.Signal.connect(ellipsesElement, 'onmouseleave', MochiKit.Base.method(this, 'handleEllipsesLeave')); 108 /// MochiKit.Signal.connect(ellipsesElement, 'onmouseleave', MochiKit.Base.method(this, 'handleEllipsesLeave'));
112 // MochiKit.Signal.connect(TDElement, 'onmouseleave', MochiKit.Base.method(this, 'handleTDLeave')); 109 // MochiKit.Signal.connect(TDElement, 'onmouseleave', MochiKit.Base.method(this, 'handleTDLeave'));
113 this.connectEvent(TDElement, 'onmouseleave', MochiKit.Base.method(this, 'handleTDLeave')); 110 this.connectEvent(TDElement, 'onmouseleave', MochiKit.Base.method(this, 'handleTDLeave'));
114 } 111 }
115 // MochiKit.Signal.connect(TDElement, 'onmouseenter', MochiKit.Base.method(this, 'handleTDEnter', anObject)); 112 // MochiKit.Signal.connect(TDElement, 'onmouseenter', MochiKit.Base.method(this, 'handleTDEnter', anObject));
116 this.connectEvent(TDElement, 'onmouseenter', MochiKit.Base.method(this, 'handleTDEnter', anObject)); 113 this.connectEvent(TDElement, 'onmouseenter', MochiKit.Base.method(this, 'handleTDEnter', anObject));
117 114
118 }, 115 },
119 116
120 //========================================================================= 117 //=========================================================================
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/FaviconColumnManager.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/FaviconColumnManager.js
index 19d1635..6297002 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/FaviconColumnManager.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/FaviconColumnManager.js
@@ -1,89 +1,86 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31//############################################################################# 28//#############################################################################
32 29
33Clipperz.PM.UI.Web.Components.FaviconColumnManager = function(args) { 30Clipperz.PM.UI.Web.Components.FaviconColumnManager = function(args) {
34 args = args || {}; 31 args = args || {};
35 Clipperz.PM.UI.Web.Components.FaviconColumnManager.superclass.constructor.call(this, args); 32 Clipperz.PM.UI.Web.Components.FaviconColumnManager.superclass.constructor.call(this, args);
36 33
37 return this; 34 return this;
38} 35}
39 36
40//============================================================================= 37//=============================================================================
41 38
42Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.FaviconColumnManager, Clipperz.PM.UI.Web.Components.ColumnManager, { 39Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.FaviconColumnManager, Clipperz.PM.UI.Web.Components.ColumnManager, {
43 40
44 'toString': function () { 41 'toString': function () {
45 return "Clipperz.PM.UI.Web.Components.FaviconColumnManager component"; 42 return "Clipperz.PM.UI.Web.Components.FaviconColumnManager component";
46 }, 43 },
47 44
48 //------------------------------------------------------------------------- 45 //-------------------------------------------------------------------------
49 46
50 'renderCell': function(aRowElement, anObject) { 47 'renderCell': function(aRowElement, anObject) {
51 varfaviconImageElement; 48 varfaviconImageElement;
52 var faviconUrl; 49 var faviconUrl;
53 50
54 faviconImageElement = this.getId('favicon'); 51 faviconImageElement = this.getId('favicon');
55 faviconUrl = anObject[this.name()]; 52 faviconUrl = anObject[this.name()];
56 53
57 if (faviconUrl == null) { 54 if (faviconUrl == null) {
58 faviconUrl = Clipperz.PM.Strings.getValue('defaultFaviconUrl'); 55 faviconUrl = Clipperz.PM.Strings.getValue('defaultFaviconUrl');
59 } 56 }
60 57
61 Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:this.cssClass(), children:[ 58 Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:this.cssClass(), children:[
62 {tag:'img', id:faviconImageElement, src:faviconUrl} 59 {tag:'img', id:faviconImageElement, src:faviconUrl}
63 ]}); 60 ]});
64 61
65 MochiKit.Signal.connect(faviconImageElement, 'onload', this, 'handleLoadedFaviconImage'); 62 MochiKit.Signal.connect(faviconImageElement, 'onload', this, 'handleLoadedFaviconImage');
66 MochiKit.Signal.connect(faviconImageElement, 'onerror', this, 'handleMissingFaviconImage'); 63 MochiKit.Signal.connect(faviconImageElement, 'onerror', this, 'handleMissingFaviconImage');
67 MochiKit.Signal.connect(faviconImageElement, 'onabort', this, 'handleMissingFaviconImage'); 64 MochiKit.Signal.connect(faviconImageElement, 'onabort', this, 'handleMissingFaviconImage');
68 }, 65 },
69 66
70 //----------------------------------------------------- 67 //-----------------------------------------------------
71 68
72 'handleLoadedFaviconImage': function(anEvent) { 69 'handleLoadedFaviconImage': function(anEvent) {
73 MochiKit.Signal.disconnectAllTo(anEvent.src()); 70 MochiKit.Signal.disconnectAllTo(anEvent.src());
74 if (anEvent.src().complete == false) { 71 if (anEvent.src().complete == false) {
75 anEvent.src().src = Clipperz.PM.Strings.getValue('defaultFaviconUrl'); 72 anEvent.src().src = Clipperz.PM.Strings.getValue('defaultFaviconUrl');
76 } 73 }
77 }, 74 },
78 75
79 //----------------------------------------------------- 76 //-----------------------------------------------------
80 77
81 'handleMissingFaviconImage': function(anEvent) { 78 'handleMissingFaviconImage': function(anEvent) {
82 MochiKit.Signal.disconnectAllTo(anEvent.src()); 79 MochiKit.Signal.disconnectAllTo(anEvent.src());
83 anEvent.src().src = Clipperz.PM.Strings.getValue('defaultFaviconUrl'); 80 anEvent.src().src = Clipperz.PM.Strings.getValue('defaultFaviconUrl');
84 }, 81 },
85 82
86 //----------------------------------------------------- 83 //-----------------------------------------------------
87 '__syntax_fix__' : 'syntax fix' 84 '__syntax_fix__' : 'syntax fix'
88}); 85});
89 86
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/GridComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/GridComponent.js
index 8b3e6c9..51d55f4 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/GridComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/GridComponent.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Web.Components.GridComponent = function(args) { 28Clipperz.PM.UI.Web.Components.GridComponent = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Web.Components.GridComponent.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Web.Components.GridComponent.superclass.constructor.apply(this, arguments);
35 32
36 this._columnsManagers = args.columnsManagers; 33 this._columnsManagers = args.columnsManagers;
37 34
38 this._rowsObjects = []; 35 this._rowsObjects = [];
39 this._noRowsGridComponent = null; 36 this._noRowsGridComponent = null;
40 37
41 this._slots = { 38 this._slots = {
42 'headerSlot':this.getId('headerSlot') 39 'headerSlot':this.getId('headerSlot')
43 }; 40 };
44 41
45 return this; 42 return this;
46} 43}
47 44
48//============================================================================= 45//=============================================================================
49 46
50Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.GridComponent, Clipperz.PM.UI.Common.Components.BaseComponent, { 47Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.GridComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
51 48
52 //------------------------------------------------------------------------- 49 //-------------------------------------------------------------------------
53 50
54 'toString': function () { 51 'toString': function () {
55 return "Clipperz.PM.UI.Web.Components.GridComponent component"; 52 return "Clipperz.PM.UI.Web.Components.GridComponent component";
56 }, 53 },
57 54
58 //------------------------------------------------------------------------- 55 //-------------------------------------------------------------------------
59 56
60 'rows': function () { 57 'rows': function () {
61 throw Clipperz.Base.exception.AbstractMethod; 58 throw Clipperz.Base.exception.AbstractMethod;
62 // return this._rows; 59 // return this._rows;
63 }, 60 },
64 61
65 //------------------------------------------------------------------------- 62 //-------------------------------------------------------------------------
66 63
67 'columnsManagers': function () { 64 'columnsManagers': function () {
68 return this._columnsManagers; 65 return this._columnsManagers;
69 }, 66 },
70 67
71 //------------------------------------------------------------------------- 68 //-------------------------------------------------------------------------
72 69
73 'renderSelf': function(/*aContainer, aPosition*/) { 70 'renderSelf': function(/*aContainer, aPosition*/) {
74 this.append(this.element(), [ 71 this.append(this.element(), [
75 {tag:'div', cls:'header', children:[ 72 {tag:'div', cls:'header', children:[
76 {tag:'form', id:this.getId('searchForm'), cls:'search', children:[ 73 {tag:'form', id:this.getId('searchForm'), cls:'search', children:[
77 {tag:'div', cls:'search', children:[ 74 {tag:'div', cls:'search', children:[
78 {tag:'input', type:'text', id:this.getId('search'), cls:'search', placeholder:"search", name:'textToSearch'/*, value:"clipperz"*/} 75 {tag:'input', type:'text', id:this.getId('search'), cls:'search', placeholder:"search", name:'textToSearch'/*, value:"clipperz"*/}
79 ]}, 76 ]},
80 {tag:'div', cls:'clearSearchButton', id:this.getId('clearSearch')}, 77 {tag:'div', cls:'clearSearchButton', id:this.getId('clearSearch')},
81 // {tag:'input', type:'button', cls:'searchButton', name:'searchButton', value:"search"}, 78 // {tag:'input', type:'button', cls:'searchButton', name:'searchButton', value:"search"},
82 {tag:'div', cls:'headerSlot', id:this.getId('headerSlot')} 79 {tag:'div', cls:'headerSlot', id:this.getId('headerSlot')}
83 ]} 80 ]}
84 ]}, 81 ]},
85 {tag:'div', cls:'body', children:[ 82 {tag:'div', cls:'body', children:[
86 {tag:'div', cls:'rows', id:this.getId('rows'), children:[ 83 {tag:'div', cls:'rows', id:this.getId('rows'), children:[
87 {tag:'table', cellpadding:'0', cellspacing:'0', cls:'rows', children:[ 84 {tag:'table', cellpadding:'0', cellspacing:'0', cls:'rows', children:[
88 {tag:'thead', children:[ 85 {tag:'thead', children:[
89 {tag:'tr', id:this.getId('thead_tr'), children:[]} 86 {tag:'tr', id:this.getId('thead_tr'), children:[]}
90 ]}, 87 ]},
91 {tag:'tbody', id:this.getId('gridRows'), children:[]} 88 {tag:'tbody', id:this.getId('gridRows'), children:[]}
92 ]} 89 ]}
93 ]}, 90 ]},
94 {tag:'div', cls:'noRowsBlock', id:this.getId('noRowsBlock'), children:[]} 91 {tag:'div', cls:'noRowsBlock', id:this.getId('noRowsBlock'), children:[]}
95 ]}, 92 ]},
96 {tag:'div', cls:'footer'} 93 {tag:'div', cls:'footer'}
97 ]); 94 ]);
98 95
99 this.renderHeader(); 96 this.renderHeader();
100 MochiKit.Signal.connect(this.getId('clearSearch'), 'onclick', this, 'clearSearchHandler'); 97 MochiKit.Signal.connect(this.getId('clearSearch'), 'onclick', this, 'clearSearchHandler');
101 }, 98 },
102 99
103 //------------------------------------------------------------------------- 100 //-------------------------------------------------------------------------
104 101
105 'renderHeader': function () { 102 'renderHeader': function () {
106 var headerElement; 103 var headerElement;
107 104
108 headerElement = this.getElement('thead_tr'); 105 headerElement = this.getElement('thead_tr');
109 headerElement.innerHTML = ""; 106 headerElement.innerHTML = "";
110 107
111 MochiKit.Iter.forEach(this.columnsManagers(), function (aColumnManager) { 108 MochiKit.Iter.forEach(this.columnsManagers(), function (aColumnManager) {
112 aColumnManager.renderHeader(headerElement); 109 aColumnManager.renderHeader(headerElement);
113 }); 110 });
114 }, 111 },
115 112
116 //------------------------------------------------------------------------- 113 //-------------------------------------------------------------------------
117 114
118 'update': function (someObjects) { 115 'update': function (someObjects) {
119 this._rowsObjects = someObjects 116 this._rowsObjects = someObjects
120 this.refresh(); 117 this.refresh();
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ImageColumnManager.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ImageColumnManager.js
index 07b8dcc..3e03fcf 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ImageColumnManager.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ImageColumnManager.js
@@ -1,68 +1,65 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31//############################################################################# 28//#############################################################################
32 29
33Clipperz.PM.UI.Web.Components.ImageColumnManager = function(args) { 30Clipperz.PM.UI.Web.Components.ImageColumnManager = function(args) {
34 args = args || {}; 31 args = args || {};
35 Clipperz.PM.UI.Web.Components.ImageColumnManager.superclass.constructor.call(this, args); 32 Clipperz.PM.UI.Web.Components.ImageColumnManager.superclass.constructor.call(this, args);
36 33
37 return this; 34 return this;
38} 35}
39 36
40//============================================================================= 37//=============================================================================
41 38
42Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.ImageColumnManager, Clipperz.PM.UI.Web.Components.ColumnManager, { 39Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.ImageColumnManager, Clipperz.PM.UI.Web.Components.ColumnManager, {
43 40
44 'toString': function () { 41 'toString': function () {
45 return "Clipperz.PM.UI.Web.Components.ImageColumnManager component"; 42 return "Clipperz.PM.UI.Web.Components.ImageColumnManager component";
46 }, 43 },
47 44
48 //------------------------------------------------------------------------- 45 //-------------------------------------------------------------------------
49 46
50 'renderCell': function(aRowElement, anObject) { 47 'renderCell': function(aRowElement, anObject) {
51 Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:this.cssClass(), children:[ 48 Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:this.cssClass(), children:[
52 {tag:'img', src:anObject[this.name()]} 49 {tag:'img', src:anObject[this.name()]}
53 ]}); 50 ]});
54 51
55 // return Clipperz.Async.callbacks("ImageColumnManager.renderCell", [ 52 // return Clipperz.Async.callbacks("ImageColumnManager.renderCell", [
56 // this.selector(), 53 // this.selector(),
57 // MochiKit.Base.bind(function (aValue) { 54 // MochiKit.Base.bind(function (aValue) {
58 // Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:this.cssClass(), children:[ 55 // Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:this.cssClass(), children:[
59 // {tag:'img', src:aValue} 56 // {tag:'img', src:aValue}
60 // ]}); 57 // ]});
61 // }, this) 58 // }, this)
62 // ], {trace:false}, anObject); 59 // ], {trace:false}, anObject);
63 }, 60 },
64 61
65 //----------------------------------------------------- 62 //-----------------------------------------------------
66 '__syntax_fix__' : 'syntax fix' 63 '__syntax_fix__' : 'syntax fix'
67}); 64});
68 65
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LinkColumnManager.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LinkColumnManager.js
index e833190..f3f9cd5 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LinkColumnManager.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LinkColumnManager.js
@@ -1,92 +1,89 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31//############################################################################# 28//#############################################################################
32 29
33Clipperz.PM.UI.Web.Components.LinkColumnManager = function(args) { 30Clipperz.PM.UI.Web.Components.LinkColumnManager = function(args) {
34 args = args || {}; 31 args = args || {};
35 Clipperz.PM.UI.Web.Components.LinkColumnManager.superclass.constructor.call(this, args); 32 Clipperz.PM.UI.Web.Components.LinkColumnManager.superclass.constructor.call(this, args);
36 33
37 this._actionMethod = args.actionMethod || null; 34 this._actionMethod = args.actionMethod || null;
38 35
39 return this; 36 return this;
40} 37}
41 38
42//============================================================================= 39//=============================================================================
43 40
44Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.LinkColumnManager, Clipperz.PM.UI.Web.Components.ColumnManager, { 41Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.LinkColumnManager, Clipperz.PM.UI.Web.Components.ColumnManager, {
45 42
46 'toString': function () { 43 'toString': function () {
47 return "Clipperz.PM.UI.Web.Components.DateColumnManager component"; 44 return "Clipperz.PM.UI.Web.Components.DateColumnManager component";
48 }, 45 },
49 46
50 //------------------------------------------------------------------------- 47 //-------------------------------------------------------------------------
51 48
52 'actionMethod': function () { 49 'actionMethod': function () {
53 return this._actionMethod; 50 return this._actionMethod;
54 }, 51 },
55 52
56 //------------------------------------------------------------------------- 53 //-------------------------------------------------------------------------
57 54
58 'renderCell': function(aRowElement, anObject) { 55 'renderCell': function(aRowElement, anObject) {
59 vartdElement; 56 vartdElement;
60 varlinkElement; 57 varlinkElement;
61 58
62 tdElement = Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:this.cssClass(), children:[ 59 tdElement = Clipperz.DOM.Helper.append(aRowElement, {tag:'td', cls:this.cssClass(), children:[
63 {tag:'span', children:[ 60 {tag:'span', children:[
64 {tag:'a', href:'#', html:anObject[this.name()]} 61 {tag:'a', href:'#', html:anObject[this.name()]}
65 ]} 62 ]}
66 ]}); 63 ]});
67 64
68 linkElement = MochiKit.DOM.getFirstElementByTagAndClassName('a', null, tdElement); 65 linkElement = MochiKit.DOM.getFirstElementByTagAndClassName('a', null, tdElement);
69 // MochiKit.Signal.connect(linkElement, 'onclick', MochiKit.Base.method(this, 'handleLinkClick', anObject['_rowObject'])); 66 // MochiKit.Signal.connect(linkElement, 'onclick', MochiKit.Base.method(this, 'handleLinkClick', anObject['_rowObject']));
70 this.connectEvent(linkElement, 'onclick', MochiKit.Base.method(this, 'handleLinkClick', anObject['_rowObject'])); 67 this.connectEvent(linkElement, 'onclick', MochiKit.Base.method(this, 'handleLinkClick', anObject['_rowObject']));
71 }, 68 },
72 69
73 //----------------------------------------------------- 70 //-----------------------------------------------------
74 71
75 'handleLinkClick': function (anObject, anEvent) { 72 'handleLinkClick': function (anObject, anEvent) {
76 anEvent.preventDefault(); 73 anEvent.preventDefault();
77 74
78 if (this.actionMethod() != null) { 75 if (this.actionMethod() != null) {
79 var deferredResult; 76 var deferredResult;
80 77
81 deferredResult = new Clipperz.Async.Deferred("LinkColumnManager.handleLinkClick", {trace:false}); 78 deferredResult = new Clipperz.Async.Deferred("LinkColumnManager.handleLinkClick", {trace:false});
82 // deferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'selectRow', anObject); 79 // deferredResult.addCallbackPass(MochiKit.Signal.signal, this, 'selectRow', anObject);
83 deferredResult.addCallback(this.actionMethod(), anObject, anEvent); 80 deferredResult.addCallback(this.actionMethod(), anObject, anEvent);
84 // deferredResult.addBothPass(MochiKit.Signal.signal, this, 'unselectRow', anObject); 81 // deferredResult.addBothPass(MochiKit.Signal.signal, this, 'unselectRow', anObject);
85 deferredResult.callback(); 82 deferredResult.callback();
86 } 83 }
87 }, 84 },
88 85
89 //----------------------------------------------------- 86 //-----------------------------------------------------
90 '__syntax_fix__' : 'syntax fix' 87 '__syntax_fix__' : 'syntax fix'
91}); 88});
92 89
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginForm.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginForm.js
index de20853..389d876 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginForm.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginForm.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Web.Components.LoginForm = function(args) { 28Clipperz.PM.UI.Web.Components.LoginForm = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 this._autocomplete = args.autocomplete || 'off'; 31 this._autocomplete = args.autocomplete || 'off';
35 32
36 Clipperz.PM.UI.Web.Components.LoginForm.superclass.constructor.apply(this, arguments); 33 Clipperz.PM.UI.Web.Components.LoginForm.superclass.constructor.apply(this, arguments);
37 34
38 this._slots = { 35 this._slots = {
39 'passphraseEntropy':this.getId('passphraseEntropy') 36 'passphraseEntropy':this.getId('passphraseEntropy')
40 }; 37 };
41 38
42 return this; 39 return this;
43} 40}
44 41
45//============================================================================= 42//=============================================================================
46 43
47Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.LoginForm, Clipperz.PM.UI.Common.Components.BaseComponent, { 44Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.LoginForm, Clipperz.PM.UI.Common.Components.BaseComponent, {
48 45
49 //------------------------------------------------------------------------- 46 //-------------------------------------------------------------------------
50 47
51 'toString': function () { 48 'toString': function () {
52 return "Clipperz.PM.UI.Web.Components.LoginForm component"; 49 return "Clipperz.PM.UI.Web.Components.LoginForm component";
53 }, 50 },
54 51
55 'autocomplete': function () { 52 'autocomplete': function () {
56 return this._autocomplete; 53 return this._autocomplete;
57 }, 54 },
58 55
59 //------------------------------------------------------------------------- 56 //-------------------------------------------------------------------------
60 57
61 'renderSelf': function() { 58 'renderSelf': function() {
62 this.append(this.element(), {tag:'div', id:'loginBox', children:[ 59 this.append(this.element(), {tag:'div', id:'loginBox', children:[
63 {tag:'div', cls:'header'}, 60 {tag:'div', cls:'header'},
64 {tag:'div', cls:'body', id:this.getId('body'), children:[ 61 {tag:'div', cls:'body', id:this.getId('body'), children:[
65 {tag:'div', id:this.getId('loginForm'), children:[ 62 {tag:'div', id:this.getId('loginForm'), children:[
66 {tag:'div', children:[ 63 {tag:'div', children:[
67 {tag:'h4', html:'Login'}, 64 {tag:'h4', html:'Login'},
68 // {tag:'form', cls:'loginForm', autocomplete:this.autocomplete(), children:[ 65 // {tag:'form', cls:'loginForm', autocomplete:this.autocomplete(), children:[
69 {tag:'form', id:this.getId('form'), cls:'loginForm', children:[ 66 {tag:'form', id:this.getId('form'), cls:'loginForm', children:[
70 {tag:'label', html:'username', 'for':this.getId('usernameField')}, 67 {tag:'label', html:'username', 'for':this.getId('usernameField')},
71 {tag:'input', id:this.getId('usernameField'), type:'text', cls:'username'/*, value:'joe'*/}, 68 {tag:'input', id:this.getId('usernameField'), type:'text', cls:'username'/*, value:'joe'*/},
72 {tag:'ul', id:this.getId('passwordOptions'), children:[ 69 {tag:'ul', id:this.getId('passwordOptions'), children:[
73 {tag:'li', id:this.getId('passphraseOption'), children:[ 70 {tag:'li', id:this.getId('passphraseOption'), children:[
74 {tag:'label', html:'passphrase / OTP', 'for':this.getId('passphraseField')}, 71 {tag:'label', html:'passphrase / OTP', 'for':this.getId('passphraseField')},
75 {tag:'input', id:this.getId('passphraseField'), type:'password', cls:'password'/*, value:'clipperz'*/} 72 {tag:'input', id:this.getId('passphraseField'), type:'password', cls:'password'/*, value:'clipperz'*/}
76 ]} //, 73 ]} //,
77/* 74/*
78 {tag:'li', id:this.getId('otpOption'), children:[ 75 {tag:'li', id:this.getId('otpOption'), children:[
79 {tag:'label', html:'one-time password', 'for':this.getId('otpField_1')}, 76 {tag:'label', html:'one-time password', 'for':this.getId('otpField_1')},
80 {tag:'input', id:this.getId('otpField_1'), type:'text', cls:'otp', value:'abcd-efgh'}, 77 {tag:'input', id:this.getId('otpField_1'), type:'text', cls:'otp', value:'abcd-efgh'},
81 {tag:'input', id:this.getId('otpField_2'), type:'text', cls:'otp', value:'abcd-efgh'}, 78 {tag:'input', id:this.getId('otpField_2'), type:'text', cls:'otp', value:'abcd-efgh'},
82 {tag:'input', id:this.getId('otpField_3'), type:'text', cls:'otp', value:'abcd-efgh'}, 79 {tag:'input', id:this.getId('otpField_3'), type:'text', cls:'otp', value:'abcd-efgh'},
83 {tag:'input', id:this.getId('otpField_4'), type:'text', cls:'otp', value:'abcd-efgh'} 80 {tag:'input', id:this.getId('otpField_4'), type:'text', cls:'otp', value:'abcd-efgh'}
84 ]} 81 ]}
85*/ 82*/
86 ]}, 83 ]},
87 // {tag:'input', id:this.getId('otpCheckbox'), type:'checkbox', cls:'checkbox'}, 84 // {tag:'input', id:this.getId('otpCheckbox'), type:'checkbox', cls:'checkbox'},
88 // {tag:'label', html:'use a one-time passphrase', 'for':this.getId('otpCheckbox'), cls:'checkbox'}, 85 // {tag:'label', html:'use a one-time passphrase', 'for':this.getId('otpCheckbox'), cls:'checkbox'},
89 86
90 {tag:'div', cls:'translations', children:[ 87 {tag:'div', cls:'translations', children:[
91 {tag:'h4', html:'choose your language'}, 88 {tag:'h4', html:'choose your language'},
92 {tag:'ul', children:[ 89 {tag:'ul', children:[
93 {tag:'li', cls:'selected', html:'english'}, 90 {tag:'li', cls:'selected', html:'english'},
94 {tag:'li', html:'italiano'}, 91 {tag:'li', html:'italiano'},
95 {tag:'li', html:'dutch'}, 92 {tag:'li', html:'dutch'},
96 {tag:'li', html:'french'}, 93 {tag:'li', html:'french'},
97 {tag:'li', html:'spanish'}, 94 {tag:'li', html:'spanish'},
98 {tag:'li', html:'chinese'}, 95 {tag:'li', html:'chinese'},
99 {tag:'li', html:'japanese'}, 96 {tag:'li', html:'japanese'},
100 {tag:'li', html:'portugal'}, 97 {tag:'li', html:'portugal'},
101 {tag:'li', html:'arabic'} 98 {tag:'li', html:'arabic'}
102 ]} 99 ]}
103 ]}, 100 ]},
104 101
105 {tag:'input', id:this.getId('submitButton'), type:'submit', value:'login', cls:'submit'} 102 {tag:'input', id:this.getId('submitButton'), type:'submit', value:'login', cls:'submit'}
106 ]} 103 ]}
107 ]} 104 ]}
108 ]} 105 ]}
109 ]}, 106 ]},
110 {tag:'div', cls:'footer'} 107 {tag:'div', cls:'footer'}
111 ]}); 108 ]});
112 109
113 if (this.autocomplete() == 'off') { 110 if (this.autocomplete() == 'off') {
114 MochiKit.DOM.updateNodeAttributes(this.getElement('form'), {autocomplete:'off'}); 111 MochiKit.DOM.updateNodeAttributes(this.getElement('form'), {autocomplete:'off'});
115 } 112 }
116 113
117 // Clipperz.Style.setBackgroundGradient(this.getElement('body'), {from:"#ff9955", to:"#ff6622"}) 114 // Clipperz.Style.setBackgroundGradient(this.getElement('body'), {from:"#ff9955", to:"#ff6622"})
118 115
119 // this.setEntropyDisplay(new Clipperz.PM.UI.Common.Components.PasswordEntropyDisplay(this.getElement('passphraseField'))); 116 // this.setEntropyDisplay(new Clipperz.PM.UI.Common.Components.PasswordEntropyDisplay(this.getElement('passphraseField')));
120 117
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginPage.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginPage.js
index 49c030d..2894af8 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginPage.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginPage.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Web.Components.LoginPage = function(args) { 28Clipperz.PM.UI.Web.Components.LoginPage = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Web.Components.LoginPage.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Web.Components.LoginPage.superclass.constructor.apply(this, arguments);
35 32
36 this._slots = { 33 this._slots = {
37 'loginForm':this.getId('loginBoxSlot') 34 'loginForm':this.getId('loginBoxSlot')
38 }; 35 };
39 36
40 return this; 37 return this;
41} 38}
42 39
43//============================================================================= 40//=============================================================================
44 41
45Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.LoginPage, Clipperz.PM.UI.Common.Components.BaseComponent, { 42Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.LoginPage, Clipperz.PM.UI.Common.Components.BaseComponent, {
46 43
47 //------------------------------------------------------------------------- 44 //-------------------------------------------------------------------------
48 45
49 'toString': function () { 46 'toString': function () {
50 return "Clipperz.PM.UI.Web.Components.LoginPage component"; 47 return "Clipperz.PM.UI.Web.Components.LoginPage component";
51 }, 48 },
52 49
53 //------------------------------------------------------------------------- 50 //-------------------------------------------------------------------------
54 51
55 'renderSelf': function(/*aContainer, aPosition*/) { 52 'renderSelf': function(/*aContainer, aPosition*/) {
56 this.append(this.element(), [ 53 this.append(this.element(), [
57 {tag:'div', id:this.getId('loginBoxSlot')}, 54 {tag:'div', id:this.getId('loginBoxSlot')},
58 {tag:'div', id:'main', children:[ 55 {tag:'div', id:'main', children:[
59 {tag:'div', id:'featurePoints', children:[ 56 {tag:'div', id:'featurePoints', children:[
60 {tag:'table', children:[ 57 {tag:'table', children:[
61 {tag:'tr', children:[ 58 {tag:'tr', children:[
62 {tag:'td', children:[ 59 {tag:'td', children:[
63 {tag:'div', cls:'block', children:[ 60 {tag:'div', cls:'block', children:[
64 {tag:'h3', html:'Clipperz is:'}, 61 {tag:'h3', html:'Clipperz is:'},
65 {tag:'ul', children:[ 62 {tag:'ul', children:[
66 {tag:'li', html:'a secure and simple password manager'}, 63 {tag:'li', html:'a secure and simple password manager'},
67 {tag:'li', html:'an effective single sign-on solution'}, 64 {tag:'li', html:'an effective single sign-on solution'},
68 {tag:'li', html:'a digital vault for your personal data'} 65 {tag:'li', html:'a digital vault for your personal data'}
69 ]} 66 ]}
70 ]}, 67 ]},
71 {tag:'div', cls:'block', children:[ 68 {tag:'div', cls:'block', children:[
72 {tag:'h3', html:'Clipperz benefits:'}, 69 {tag:'h3', html:'Clipperz benefits:'},
73 {tag:'ul', children:[ 70 {tag:'ul', children:[
74 {tag:'li', html:'free and completely anonymous'}, 71 {tag:'li', html:'free and completely anonymous'},
75 {tag:'li', html:'access it any time from any computer'}, 72 {tag:'li', html:'access it any time from any computer'},
76 {tag:'li', html:'no software to download and nothing to install'}, 73 {tag:'li', html:'no software to download and nothing to install'},
77 {tag:'li', html:'avoid keeping secrets on your PC or on paper'} 74 {tag:'li', html:'avoid keeping secrets on your PC or on paper'}
78 ]} 75 ]}
79 ]} 76 ]}
80 ]}, {tag:'td', children:[ 77 ]}, {tag:'td', children:[
81 {tag:'div', cls:'block', children:[ 78 {tag:'div', cls:'block', children:[
82 {tag:'h3', html:'Clipperz security:'}, 79 {tag:'h3', html:'Clipperz security:'},
83 {tag:'ul', children:[ 80 {tag:'ul', children:[
84 {tag:'li', html:'your secretes are locally encrypted by your browser before being uploaded to Clipperz'}, 81 {tag:'li', html:'your secretes are locally encrypted by your browser before being uploaded to Clipperz'},
85 {tag:'li', html:'the encryption key is a passphrase known only to you'}, 82 {tag:'li', html:'the encryption key is a passphrase known only to you'},
86 {tag:'li', html:'Clipperz hosts your sensitive data in an encrypted form and could never access the data in its plain form'}, 83 {tag:'li', html:'Clipperz hosts your sensitive data in an encrypted form and could never access the data in its plain form'},
87 {tag:'li', html:'Clipperz is built upon standard encryption schemes, nothing fancies of homemade'}, 84 {tag:'li', html:'Clipperz is built upon standard encryption schemes, nothing fancies of homemade'},
88 {tag:'li', html:'you can review the source code anytime you like, but you need to know nothing about cryptography to be an happy user!'} 85 {tag:'li', html:'you can review the source code anytime you like, but you need to know nothing about cryptography to be an happy user!'}
89 ]} 86 ]}
90 ]} 87 ]}
91 ]} 88 ]}
92 ]} 89 ]}
93 ]} 90 ]}
94 ]}, 91 ]},
95 {tag:'div', cls:'activeFeatures', children:[ 92 {tag:'div', cls:'activeFeatures', children:[
96 {tag:'div', id:this.getId('registerButton'), cls:'createAccountLink', children:[ 93 {tag:'div', id:this.getId('registerButton'), cls:'createAccountLink', children:[
97 {tag:'canvas', id:this.getId('registerButtonIcon')}, 94 {tag:'canvas', id:this.getId('registerButtonIcon')},
98 {tag:'a', href:'#', id:this.getId('createAccountLink'), cls:'createAccountLink', children:[ 95 {tag:'a', href:'#', id:this.getId('createAccountLink'), cls:'createAccountLink', children:[
99 {tag:'span', cls:'payoff', html:"Free sign up!"}, 96 {tag:'span', cls:'payoff', html:"Free sign up!"},
100 {tag:'span', cls:'link', html:"Create account >>"} 97 {tag:'span', cls:'link', html:"Create account >>"}
101 ]} 98 ]}
102 ]}, 99 ]},
103 {tag:'div', cls:'keepTogether', children:[ 100 {tag:'div', cls:'keepTogether', children:[
104 {tag:'div', id:this.getId('screenshotLink'), cls:'screenshotLink', children:[ 101 {tag:'div', id:this.getId('screenshotLink'), cls:'screenshotLink', children:[
105 {tag:'canvas', id:this.getId('lookIcon')}, 102 {tag:'canvas', id:this.getId('lookIcon')},
106 {tag:'a', href:'#', cls:'screenshotLink', children:[ 103 {tag:'a', href:'#', cls:'screenshotLink', children:[
107 {tag:'span', cls:'payoff', html:"Look Clipperz!"}, 104 {tag:'span', cls:'payoff', html:"Look Clipperz!"},
108 {tag:'span', cls:'link', html:"screenshot tour >>"} 105 {tag:'span', cls:'link', html:"screenshot tour >>"}
109 ]} 106 ]}
110 ]}, 107 ]},
111 {tag:'div', id:this.getId('offlineLink'), cls:'offlineLink', children:[ 108 {tag:'div', id:this.getId('offlineLink'), cls:'offlineLink', children:[
112 {tag:'canvas', id:this.getId('downloadIcon')}, 109 {tag:'canvas', id:this.getId('downloadIcon')},
113 {tag:'a', href:'#', cls:'offlineLink', children:[ 110 {tag:'a', href:'#', cls:'offlineLink', children:[
114 {tag:'span', cls:'payoff', html:"Download!"}, 111 {tag:'span', cls:'payoff', html:"Download!"},
115 {tag:'span', cls:'link', html:"Offline version >>"} 112 {tag:'span', cls:'link', html:"Offline version >>"}
116 ]} 113 ]}
117 ]} 114 ]}
118 ]} 115 ]}
119 ]} 116 ]}
120 ]} 117 ]}
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginProgress.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginProgress.js
index 03c7b9e..5d082b5 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginProgress.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/LoginProgress.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Web.Components.LoginProgress = function(args) { 28Clipperz.PM.UI.Web.Components.LoginProgress = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Web.Components.LoginProgress.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Web.Components.LoginProgress.superclass.constructor.apply(this, arguments);
35 32
36 this._deferred = null; 33 this._deferred = null;
37 34
38 return this; 35 return this;
39} 36}
40 37
41//============================================================================= 38//=============================================================================
42 39
43Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.LoginProgress, Clipperz.PM.UI.Common.Components.BaseComponent, { 40Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.LoginProgress, Clipperz.PM.UI.Common.Components.BaseComponent, {
44 41
45 //------------------------------------------------------------------------- 42 //-------------------------------------------------------------------------
46 43
47 'toString': function () { 44 'toString': function () {
48 return "Clipperz.PM.UI.Web.Components.LoginProgress component"; 45 return "Clipperz.PM.UI.Web.Components.LoginProgress component";
49 }, 46 },
50 47
51 //------------------------------------------------------------------------- 48 //-------------------------------------------------------------------------
52 49
53 'deferred': function() { 50 'deferred': function() {
54 return this._deferred; 51 return this._deferred;
55 }, 52 },
56 53
57 'setDeferred': function(aValue) { 54 'setDeferred': function(aValue) {
58 this._deferred = aValue; 55 this._deferred = aValue;
59 }, 56 },
60 57
61 //------------------------------------------------------------------------- 58 //-------------------------------------------------------------------------
62 59
63 'renderSelf': function() { 60 'renderSelf': function() {
64 // var loginProgressElement; 61 // var loginProgressElement;
65 // 62 //
66 // loginProgressElement = MochiKit.DOM.getElement('loginProgress'); 63 // loginProgressElement = MochiKit.DOM.getElement('loginProgress');
67 // 64 //
68 // if (loginProgressElement == null) { 65 // if (loginProgressElement == null) {
69 // loginProgressElement = this.append(this.element(), {tag:'div', id:'loginProgress', cls:'LoginProgress'}, true); 66 // loginProgressElement = this.append(this.element(), {tag:'div', id:'loginProgress', cls:'LoginProgress'}, true);
70 // } 67 // }
71 68
72//console.log(">> LoginProgress.renderSelf", this.element()); 69//console.log(">> LoginProgress.renderSelf", this.element());
73 this.append(this.element(), {tag:'div', id:'loginProgress', cls:'LoginProgress', children: [ 70 this.append(this.element(), {tag:'div', id:'loginProgress', cls:'LoginProgress', children: [
74 // this.append(loginProgressElement, [ 71 // this.append(loginProgressElement, [
75 {tag:'div', cls:'header', children:[ 72 {tag:'div', cls:'header', children:[
76 {tag:'h3', id:this.getId('title'), html:"login progress"} 73 {tag:'h3', id:this.getId('title'), html:"login progress"}
77 ]}, 74 ]},
78 {tag:'div', cls:'body', children:[ 75 {tag:'div', cls:'body', children:[
79 {tag:'div', id:this.getId('progressBar')}, 76 {tag:'div', id:this.getId('progressBar')},
80 {tag:'div', id:this.getId('errorBox'), cls:'errorBox', children:[ 77 {tag:'div', id:this.getId('errorBox'), cls:'errorBox', children:[
81 // {tag:'div',cls:'img ALERT', children:[{tag:'div'}]}, 78 // {tag:'div',cls:'img ALERT', children:[{tag:'div'}]},
82 {tag:'div',cls:'img ALERT', children:[{tag:'canvas', id:this.getId('canvas')}]}, 79 {tag:'div',cls:'img ALERT', children:[{tag:'canvas', id:this.getId('canvas')}]},
83 {tag:'p', html:"Login failed"} 80 {tag:'p', html:"Login failed"}
84 ]} 81 ]}
85 ]}, 82 ]},
86 {tag:'div', cls:'footer', children:[ 83 {tag:'div', cls:'footer', children:[
87 {tag:'div', cls:'buttonArea', id:this.getId('buttonArea'), children:[ 84 {tag:'div', cls:'buttonArea', id:this.getId('buttonArea'), children:[
88 {tag:'div', cls:'button', id:this.getId('button'), children:[ 85 {tag:'div', cls:'button', id:this.getId('button'), children:[
89 {tag:'a', href:'#', id:this.getId('buttonLink'), html:"cancel"} 86 {tag:'a', href:'#', id:this.getId('buttonLink'), html:"cancel"}
90 ]} 87 ]}
91 ]} 88 ]}
92 ]} 89 ]}
93 ]}); 90 ]});
94 // ]); 91 // ]);
95 92
96 Clipperz.PM.UI.Canvas.marks['!'](this.getElement('canvas'), "#ffffff"); 93 Clipperz.PM.UI.Canvas.marks['!'](this.getElement('canvas'), "#ffffff");
97 94
98 this.addComponent(new Clipperz.PM.UI.Common.Components.ProgressBar({'element':this.getElement('progressBar')})); 95 this.addComponent(new Clipperz.PM.UI.Common.Components.ProgressBar({'element':this.getElement('progressBar')}));
99 MochiKit.Style.hideElement(this.getElement('errorBox')); 96 MochiKit.Style.hideElement(this.getElement('errorBox'));
100 97
101 MochiKit.Signal.connect(this.getId('buttonLink'), 'onclick', this, 'cancelEventHandler'); 98 MochiKit.Signal.connect(this.getId('buttonLink'), 'onclick', this, 'cancelEventHandler');
102 }, 99 },
103 100
104 //------------------------------------------------------------------------- 101 //-------------------------------------------------------------------------
105 102
106 'displayElement': function() { 103 'displayElement': function() {
107 return MochiKit.DOM.getElement('loginProgress'); 104 return MochiKit.DOM.getElement('loginProgress');
108 }, 105 },
109 106
110 //------------------------------------------------------------------------- 107 //-------------------------------------------------------------------------
111 108
112 'cancelEventHandler': function(anEvent) { 109 'cancelEventHandler': function(anEvent) {
113 anEvent.preventDefault(); 110 anEvent.preventDefault();
114 111
115 MochiKit.Signal.signal(this, 'cancelEvent'); 112 MochiKit.Signal.signal(this, 'cancelEvent');
116 }, 113 },
117 114
118 //------------------------------------------------------------------------- 115 //-------------------------------------------------------------------------
119 116
120 'disableCancel': function() { 117 'disableCancel': function() {
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/NewUserCreationComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/NewUserCreationComponent.js
index b40d1f3..feb16ad 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/NewUserCreationComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/NewUserCreationComponent.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Web.Components.NewUserCreationComponent = function(args) { 28Clipperz.PM.UI.Web.Components.NewUserCreationComponent = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Web.Components.NewUserCreationComponent.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Web.Components.NewUserCreationComponent.superclass.constructor.apply(this, arguments);
35 32
36 this._tabPanelController = null; 33 this._tabPanelController = null;
37 34
38 this._initiallySelectedTab = args.selected || 'CREDENTIALS'; 35 this._initiallySelectedTab = args.selected || 'CREDENTIALS';
39 this._tabPanelControllerConfiguration = { 36 this._tabPanelControllerConfiguration = {
40 'CREDENTIALS': { 37 'CREDENTIALS': {
41 tab:'credentialsTab', 38 tab:'credentialsTab',
42 panel:'credentialsTabpanel' 39 panel:'credentialsTabpanel'
43 }, 40 },
44 'CHECK_CREDENTIALS': { 41 'CHECK_CREDENTIALS': {
45 tab:'checkCredentialsTab', 42 tab:'checkCredentialsTab',
46 panel:'checkCredentialsTabpanel' 43 panel:'checkCredentialsTabpanel'
47 }, 44 },
48 'TERMS_OF_SERVICE': { 45 'TERMS_OF_SERVICE': {
49 tab:'termsOfServiceTab', 46 tab:'termsOfServiceTab',
50 panel:'termsOfServiceTabpanel' 47 panel:'termsOfServiceTabpanel'
51 }, 48 },
52 'CREATE_USER': { 49 'CREATE_USER': {
53 tab:'createUserTab', 50 tab:'createUserTab',
54 panel:'createUserTabpanel' 51 panel:'createUserTabpanel'
55 }//, 52 }//,
56/* 53/*
57 'LOGIN': { 54 'LOGIN': {
58 tab:'loginTab', 55 tab:'loginTab',
59 panel:'loginTabpanel' 56 panel:'loginTabpanel'
60 } 57 }
61*/ 58*/
62 }; 59 };
63 60
64 return this; 61 return this;
65} 62}
66 63
67//============================================================================= 64//=============================================================================
68 65
69Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.NewUserCreationComponent, Clipperz.PM.UI.Common.Components.TabPanelComponent, { 66Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.NewUserCreationComponent, Clipperz.PM.UI.Common.Components.TabPanelComponent, {
70 67
71 //------------------------------------------------------------------------- 68 //-------------------------------------------------------------------------
72 69
73 'toString': function () { 70 'toString': function () {
74 return "Clipperz.PM.UI.Web.Components.NewUserCreationComponent component"; 71 return "Clipperz.PM.UI.Web.Components.NewUserCreationComponent component";
75 }, 72 },
76 73
77 //========================================================================= 74 //=========================================================================
78 75
79 'disableAllPanels': function () { 76 'disableAllPanels': function () {
80 this.tabPanelController().selectTab(null); 77 this.tabPanelController().selectTab(null);
81 }, 78 },
82 79
83 //------------------------------------------------------------------------- 80 //-------------------------------------------------------------------------
84 81
85 'enableCredentialsPanel': function () { 82 'enableCredentialsPanel': function () {
86 this.tabPanelController().selectTab('CREDENTIALS'); 83 this.tabPanelController().selectTab('CREDENTIALS');
87 }, 84 },
88 85
89 'enableCheckCredentialsPanel': function () { 86 'enableCheckCredentialsPanel': function () {
90 this.tabPanelController().selectTab('CHECK_CREDENTIALS'); 87 this.tabPanelController().selectTab('CHECK_CREDENTIALS');
91 }, 88 },
92 89
93 'enableTermsOfServicePanel': function () { 90 'enableTermsOfServicePanel': function () {
94 this.tabPanelController().selectTab('TERMS_OF_SERVICE'); 91 this.tabPanelController().selectTab('TERMS_OF_SERVICE');
95 }, 92 },
96 93
97 'enableCreateUserPanel': function () { 94 'enableCreateUserPanel': function () {
98 this.tabPanelController().selectTab('CREATE_USER'); 95 this.tabPanelController().selectTab('CREATE_USER');
99 }, 96 },
100 97
101 //'enableLoginPanel': function () { 98 //'enableLoginPanel': function () {
102 // this.tabPanelController().selectTab('LOGIN'); 99 // this.tabPanelController().selectTab('LOGIN');
103 //}, 100 //},
104 101
105 //========================================================================= 102 //=========================================================================
106 103
107 'shouldShowElementWhileRendering': function() { 104 'shouldShowElementWhileRendering': function() {
108 return false; 105 return false;
109 }, 106 },
110 107
111 //========================================================================= 108 //=========================================================================
112 109
113 'tabPanelController': function () { 110 'tabPanelController': function () {
114 if (this._tabPanelController == null) { 111 if (this._tabPanelController == null) {
115 this._tabPanelController = new Clipperz.PM.UI.Common.Controllers.TabPanelController({ 112 this._tabPanelController = new Clipperz.PM.UI.Common.Controllers.TabPanelController({
116 component:this, 113 component:this,
117 configuration:this._tabPanelControllerConfiguration 114 configuration:this._tabPanelControllerConfiguration
118 }); 115 });
119 116
120 MochiKit.Signal.connect(this._tabPanelController, 'tabSelected', this, 'handleTabSelected') 117 MochiKit.Signal.connect(this._tabPanelController, 'tabSelected', this, 'handleTabSelected')
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/Page.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/Page.js
index bed6675..3cc5a37 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/Page.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/Page.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
29Clipperz.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Web.Components.Page = function(args) { 28Clipperz.PM.UI.Web.Components.Page = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Web.Components.Page.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Web.Components.Page.superclass.constructor.apply(this, arguments);
35 32
36 this._slots = { 33 this._slots = {
37 'header':'pageHeader', 34 'header':'pageHeader',
38 'body': 'pageBody', 35 'body': 'pageBody',
39 'footer':'pageFooter' 36 'footer':'pageFooter'
40 }; 37 };
41 38
42 return this; 39 return this;
43} 40}
44 41
45//============================================================================= 42//=============================================================================
46 43
47Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.Page, Clipperz.PM.UI.Common.Components.BaseComponent, { 44Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.Page, Clipperz.PM.UI.Common.Components.BaseComponent, {
48 45
49 //------------------------------------------------------------------------- 46 //-------------------------------------------------------------------------
50 47
51 'toString': function () { 48 'toString': function () {
52 return "Clipperz.PM.UI.Web.Components.Page component"; 49 return "Clipperz.PM.UI.Web.Components.Page component";
53 }, 50 },
54 51
55 //------------------------------------------------------------------------- 52 //-------------------------------------------------------------------------
56 53
57 'renderSelf': function(/*aContainer, aPosition*/) { 54 'renderSelf': function(/*aContainer, aPosition*/) {
58 this.append(this.element(), [ 55 this.append(this.element(), [
59 {tag:'div', id:'pageHeaderAndBody', cls:'pageHeaderAndBody', children:[ 56 {tag:'div', id:'pageHeaderAndBody', cls:'pageHeaderAndBody', children:[
60 {tag:'div', id:'pageHeader', cls:'pageHeader'}, 57 {tag:'div', id:'pageHeader', cls:'pageHeader'},
61 {tag:'div', id:'pageBody', cls:'pageBody'} 58 {tag:'div', id:'pageBody', cls:'pageBody'}
62 ]}, 59 ]},
63 {tag:'div', id:'pageFooter', cls:'pageFooter'} 60 {tag:'div', id:'pageFooter', cls:'pageFooter'}
64 ]); 61 ]);
65 62
66 }, 63 },
67 64
68 //------------------------------------------------------------------------- 65 //-------------------------------------------------------------------------
69 66
70 __syntaxFix__: "syntax fix" 67 __syntaxFix__: "syntax fix"
71}); 68});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageFooter.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageFooter.js
index 11135d8..5e8cd7f 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageFooter.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageFooter.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
29Clipperz.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Web.Components.PageFooter = function(args) { 28Clipperz.PM.UI.Web.Components.PageFooter = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Web.Components.PageFooter.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Web.Components.PageFooter.superclass.constructor.apply(this, arguments);
35 32
36 return this; 33 return this;
37} 34}
38 35
39//============================================================================= 36//=============================================================================
40 37
41Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.PageFooter, Clipperz.PM.UI.Common.Components.BaseComponent, { 38Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.PageFooter, Clipperz.PM.UI.Common.Components.BaseComponent, {
42 39
43 //------------------------------------------------------------------------- 40 //-------------------------------------------------------------------------
44 41
45 'toString': function () { 42 'toString': function () {
46 return "Clipperz.PM.UI.Web.Components.PageFooter component"; 43 return "Clipperz.PM.UI.Web.Components.PageFooter component";
47 }, 44 },
48 45
49 //------------------------------------------------------------------------- 46 //-------------------------------------------------------------------------
50 47
51 'renderSelf': function(/*aContainer, aPosition*/) { 48 'renderSelf': function(/*aContainer, aPosition*/) {
52 this.append(this.element(), [ 49 this.append(this.element(), [
53 {tag:'div', cls:'footerWrapper', children:[ 50 {tag:'div', cls:'footerWrapper', children:[
54 {tag:'div', cls:'footerContent', children:[ 51 {tag:'div', cls:'footerContent', children:[
55 // {tag:'div', cls:'footerStarIcon'}, 52 // {tag:'div', cls:'footerStarIcon'},
56 {tag:'canvas', id:this.getId('footerStarIcon'), cls:'footerStarIcon'}, 53 {tag:'canvas', id:this.getId('footerStarIcon'), cls:'footerStarIcon'},
57 {tag:'span', cls:'copyright', html:'Copyright &copy; 2009 Clipperz Srl'}, 54 {tag:'span', cls:'copyright', html:'Copyright &copy; 2009 Clipperz Srl'},
58 {tag:'a', href:'http://www.clipperz.com/terms_of_service',target:'_blank', html:'terms of service'}, 55 {tag:'a', href:'http://www.clipperz.com/terms_of_service',target:'_blank', html:'terms of service'},
59 {tag:'a', href:'http://www.clipperz.com/privacy_policy',target:'_blank', html:'privacy policy'}, 56 {tag:'a', href:'http://www.clipperz.com/privacy_policy',target:'_blank', html:'privacy policy'},
60 {tag:'span', cls:'applicationVersion', html:'application version: [1992]'} 57 {tag:'span', cls:'applicationVersion', html:'application version: [1992]'}
61 ]} 58 ]}
62 ]} 59 ]}
63 ]); 60 ]);
64 61
65 Clipperz.PM.UI.Canvas.star.normal(this.getElement('footerStarIcon'), "#7e7e7e"); 62 Clipperz.PM.UI.Canvas.star.normal(this.getElement('footerStarIcon'), "#7e7e7e");
66 }, 63 },
67 64
68 //------------------------------------------------------------------------- 65 //-------------------------------------------------------------------------
69 66
70 __syntaxFix__: "syntax fix" 67 __syntaxFix__: "syntax fix"
71}); 68});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageHeader.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageHeader.js
index 3924434..bce8395 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageHeader.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PageHeader.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Web.Components.PageHeader = function(args) { 28Clipperz.PM.UI.Web.Components.PageHeader = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Web.Components.PageHeader.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Web.Components.PageHeader.superclass.constructor.apply(this, arguments);
35 this._newsIsOpen = args.newsIsOpen || false; 32 this._newsIsOpen = args.newsIsOpen || false;
36 this._animationDuration = args.animationDuration || 0.5; 33 this._animationDuration = args.animationDuration || 0.5;
37 34
38 this._offset = 82; 35 this._offset = 82;
39 36
40 return this; 37 return this;
41} 38}
42 39
43//============================================================================= 40//=============================================================================
44 41
45Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.PageHeader, Clipperz.PM.UI.Common.Components.BaseComponent, { 42Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.PageHeader, Clipperz.PM.UI.Common.Components.BaseComponent, {
46 43
47 //------------------------------------------------------------------------- 44 //-------------------------------------------------------------------------
48 45
49 'toString': function () { 46 'toString': function () {
50 return "Clipperz.PM.UI.Web.Components.PageHeader component"; 47 return "Clipperz.PM.UI.Web.Components.PageHeader component";
51 }, 48 },
52 49
53 //------------------------------------------------------------------------- 50 //-------------------------------------------------------------------------
54 51
55 'iframeURL': function () { 52 'iframeURL': function () {
56 // return './rss_view.html'; 53 // return './rss_view.html';
57 return 'http://www.clipperz.com/files/clipperz.com/appTips/index.html'; 54 return 'http://www.clipperz.com/files/clipperz.com/appTips/index.html';
58 }, 55 },
59 56
60 //------------------------------------------------------------------------- 57 //-------------------------------------------------------------------------
61 58
62 'renderSelf': function(/*aContainer, aPosition*/) { 59 'renderSelf': function(/*aContainer, aPosition*/) {
63 this.append(this.element(), [ 60 this.append(this.element(), [
64 {tag:'div', id:'miscLinks', children:[ 61 {tag:'div', id:'miscLinks', children:[
65 {tag:'ul', children:[ 62 {tag:'ul', children:[
66 {tag:'li', children:[{tag:'a', id:'donateHeaderLink', stringID:'pageHeader.donation', href:'http://www.clipperz.com/donations', target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.donation')}]}, 63 {tag:'li', children:[{tag:'a', id:'donateHeaderLink', stringID:'pageHeader.donation', href:'http://www.clipperz.com/donations', target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.donation')}]},
67 {tag:'li', children:[{tag:'a', id:'forumHeaderLink', stringID:'pageHeader.forum', href:'http://www.clipperz.com/forum', target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.forum')}]}, 64 {tag:'li', children:[{tag:'a', id:'forumHeaderLink', stringID:'pageHeader.forum', href:'http://www.clipperz.com/forum', target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.forum')}]},
68 {tag:'li', children:[{tag:'a', id:'creditsHeaderLink', stringID:'pageHeader.credits', href:'http://www.clipperz.com/credits', target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.credits')}]}, 65 {tag:'li', children:[{tag:'a', id:'creditsHeaderLink', stringID:'pageHeader.credits', href:'http://www.clipperz.com/credits', target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.credits')}]},
69 {tag:'li', children:[{tag:'a', id:'feedbackHeaderLink', stringID:'pageHeader.feedback', href:'http://www.clipperz.com/contact', target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.feedback')}]}, 66 {tag:'li', children:[{tag:'a', id:'feedbackHeaderLink', stringID:'pageHeader.feedback', href:'http://www.clipperz.com/contact', target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.feedback')}]},
70 {tag:'li', children:[{tag:'a', id:'helpHeaderLink', stringID:'pageHeader.help', href:'http://www.clipperz.com/support/user_guide',target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.help')}]} 67 {tag:'li', children:[{tag:'a', id:'helpHeaderLink', stringID:'pageHeader.help', href:'http://www.clipperz.com/support/user_guide',target:'_blank', html:Clipperz.PM.Strings.getValue('pageHeader.help')}]}
71 ]} 68 ]}
72 ]}, 69 ]},
73 {tag:'div', id:'logoFrame', children:[ 70 {tag:'div', id:'logoFrame', children:[
74 {tag:'a', href:'http://www.clipperz.com', target:'_blank', children:[{tag:'div', id:'logo'}]}, 71 {tag:'a', href:'http://www.clipperz.com', target:'_blank', children:[{tag:'div', id:'logo'}]},
75 {tag:'h5', cls:'clipperzPayoff', html:'keep it to yourself!'} 72 {tag:'h5', cls:'clipperzPayoff', html:'keep it to yourself!'}
76 ]}, 73 ]},
77 {tag:'div', id:'news', cls:'hidden', children:[ 74 {tag:'div', id:'news', cls:'hidden', children:[
78 // {tag:'div', cls:'close', children:[ 75 // {tag:'div', cls:'close', children:[
79 // {tag:'a', href:'#', id:this.getId('closeTips'), html:'x'} 76 // {tag:'a', href:'#', id:this.getId('closeTips'), html:'x'}
80 // ]}, 77 // ]},
81 {tag:'div', id:'newsframe', children:[ 78 {tag:'div', id:'newsframe', children:[
82 {tag:'iframe', id:this.getId('iframe'), src:this.iframeURL()} 79 {tag:'iframe', id:this.getId('iframe'), src:this.iframeURL()}
83 ]}, 80 ]},
84 {tag:'div', id:this.getId('newsGrip'), cls:'grip', children:[]} 81 {tag:'div', id:this.getId('newsGrip'), cls:'grip', children:[]}
85 ]}, 82 ]},
86 {tag:'div', id:'featureTabs', children:[ 83 {tag:'div', id:'featureTabs', children:[
87 {tag:'table', children:[{tag:'tr', children:[ 84 {tag:'table', children:[{tag:'tr', children:[
88 {tag:'td', children:[{tag:'div', id:'feature_store', children:[{tag:'canvas', cls:'featureIcon', id:this.getId('storeIcon')}, {tag:'span', html:"Store and manage your password and online credentials"}]}]}, 85 {tag:'td', children:[{tag:'div', id:'feature_store', children:[{tag:'canvas', cls:'featureIcon', id:this.getId('storeIcon')}, {tag:'span', html:"Store and manage your password and online credentials"}]}]},
89 {tag:'td', children:[{tag:'div', id:'feature_protect', children:[{tag:'canvas', cls:'featureIcon', id:this.getId('protectIcon')}, {tag:'span', html:"Protect all your sensitive data"}]}]}, 86 {tag:'td', children:[{tag:'div', id:'feature_protect', children:[{tag:'canvas', cls:'featureIcon', id:this.getId('protectIcon')}, {tag:'span', html:"Protect all your sensitive data"}]}]},
90 {tag:'td', children:[{tag:'div', id:'feature_directLogin', children:[{tag:'canvas', cls:'featureIcon', id:this.getId('directLoginIcon')},{tag:'span', html:"Login to your web services without entering any username or password"}]}]}, 87 {tag:'td', children:[{tag:'div', id:'feature_directLogin', children:[{tag:'canvas', cls:'featureIcon', id:this.getId('directLoginIcon')},{tag:'span', html:"Login to your web services without entering any username or password"}]}]},
91 {tag:'td', children:[{tag:'div', id:'feature_share', children:[{tag:'canvas', cls:'featureIcon', id:this.getId('shareIcon')}, {tag:'span', html:"Share secret with family members and associates"}]}]} 88 {tag:'td', children:[{tag:'div', id:'feature_share', children:[{tag:'canvas', cls:'featureIcon', id:this.getId('shareIcon')}, {tag:'span', html:"Share secret with family members and associates"}]}]}
92 ]}]} 89 ]}]}
93 ]} 90 ]}
94 ]); 91 ]);
95 92
96 Clipperz.PM.UI.Canvas.features.store(this.getElement('storeIcon'), "#ffffff"); 93 Clipperz.PM.UI.Canvas.features.store(this.getElement('storeIcon'), "#ffffff");
97 Clipperz.PM.UI.Canvas.features.protect(this.getElement('protectIcon'), "#ffffff"); 94 Clipperz.PM.UI.Canvas.features.protect(this.getElement('protectIcon'), "#ffffff");
98 Clipperz.PM.UI.Canvas.features.directLogin(this.getElement('directLoginIcon'), "#ffffff"); 95 Clipperz.PM.UI.Canvas.features.directLogin(this.getElement('directLoginIcon'), "#ffffff");
99 Clipperz.PM.UI.Canvas.features.share(this.getElement('shareIcon'), "#ffffff", "#ffffff", "#ff0000"); 96 Clipperz.PM.UI.Canvas.features.share(this.getElement('shareIcon'), "#ffffff", "#ffffff", "#ff0000");
100 97
101 MochiKit.Signal.connect(this.getElement('newsGrip'), 'onclick', this, 'toggleTips'); 98 MochiKit.Signal.connect(this.getElement('newsGrip'), 'onclick', this, 'toggleTips');
102 MochiKit.Signal.connect(this.getElement('iframe'), 'onload', this, 'handleIframeDidLoad'); 99 MochiKit.Signal.connect(this.getElement('iframe'), 'onload', this, 'handleIframeDidLoad');
103 }, 100 },
104 101
105 //------------------------------------------------------------------------- 102 //-------------------------------------------------------------------------
106 103
107 'switchToLoggedMode': function() { 104 'switchToLoggedMode': function() {
108 // MochiKit.Style.addElementClass(this.element(), 'logged'); 105 // MochiKit.Style.addElementClass(this.element(), 'logged');
109 MochiKit.Style.hideElement('featureTabs'); 106 MochiKit.Style.hideElement('featureTabs');
110 }, 107 },
111 108
112 //------------------------------------------------------------------------- 109 //-------------------------------------------------------------------------
113 110
114 'animationDuration': function () { 111 'animationDuration': function () {
115 return this._animationDuration; 112 return this._animationDuration;
116 }, 113 },
117 114
118 'offset': function () { 115 'offset': function () {
119 return this._offset; 116 return this._offset;
120 }, 117 },
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PasswordTooltip.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PasswordTooltip.js
index 79c8d4f..987e51e 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PasswordTooltip.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/PasswordTooltip.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Common.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Common.Components');
30 27
31Clipperz.PM.UI.Web.Components.PasswordTooltip = function(args) { 28Clipperz.PM.UI.Web.Components.PasswordTooltip = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Web.Components.PasswordTooltip.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Web.Components.PasswordTooltip.superclass.constructor.apply(this, arguments);
35 32
36 this._referenceElement = args.referenceElement|| Clipperz.Base.exception.raise('MandatoryParameter'); 33 this._referenceElement = args.referenceElement|| Clipperz.Base.exception.raise('MandatoryParameter');
37 this._text = args.text || Clipperz.Base.exception.raise('MandatoryParameter'); 34 this._text = args.text || Clipperz.Base.exception.raise('MandatoryParameter');
38 35
39 this._boxDimensions = null; 36 this._boxDimensions = null;
40 this._isVisible = false; 37 this._isVisible = false;
41 38
42 this.renderSelf(); 39 this.renderSelf();
43 40
44 return this; 41 return this;
45} 42}
46 43
47//============================================================================= 44//=============================================================================
48 45
49Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.PasswordTooltip, Clipperz.PM.UI.Common.Components.BaseComponent, { 46Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.PasswordTooltip, Clipperz.PM.UI.Common.Components.BaseComponent, {
50 47
51 //------------------------------------------------------------------------- 48 //-------------------------------------------------------------------------
52 49
53 'toString': function () { 50 'toString': function () {
54 return "Clipperz.PM.UI.Web.Components.PasswordTooltip component"; 51 return "Clipperz.PM.UI.Web.Components.PasswordTooltip component";
55 }, 52 },
56 53
57 //------------------------------------------------------------------------- 54 //-------------------------------------------------------------------------
58 55
59 'referenceElement': function () { 56 'referenceElement': function () {
60 return this._referenceElement; 57 return this._referenceElement;
61 }, 58 },
62 59
63 //------------------------------------------------------------------------- 60 //-------------------------------------------------------------------------
64 61
65 'text': function () { 62 'text': function () {
66 return this._text; 63 return this._text;
67 }, 64 },
68 65
69 'setText': function (aValue) { 66 'setText': function (aValue) {
70 this._text = aValue; 67 this._text = aValue;
71 }, 68 },
72 69
73 //------------------------------------------------------------------------- 70 //-------------------------------------------------------------------------
74 71
75 'isVisible': function () { 72 'isVisible': function () {
76 return this._isVisible; 73 return this._isVisible;
77 }, 74 },
78 75
79 'setIsVisible': function (aValue) { 76 'setIsVisible': function (aValue) {
80 this._isVisible = aValue; 77 this._isVisible = aValue;
81 }, 78 },
82 79
83 //------------------------------------------------------------------------- 80 //-------------------------------------------------------------------------
84 81
85 'renderSelf': function() { 82 'renderSelf': function() {
86 this.append(MochiKit.DOM.getElement('Clipperz_PM_UI_Common_Components_Tooltip_wrapperNode'), {tag:'div', id:this.getId('tooltip'), cls:'passwordTooltip', children:[ 83 this.append(MochiKit.DOM.getElement('Clipperz_PM_UI_Common_Components_Tooltip_wrapperNode'), {tag:'div', id:this.getId('tooltip'), cls:'passwordTooltip', children:[
87 {tag:'div', id:this.getId('body'), cls:'passwordTooltip_body', children:[ 84 {tag:'div', id:this.getId('body'), cls:'passwordTooltip_body', children:[
88 {tag:'div', cls:'passwordTooltip_text', children:[ 85 {tag:'div', cls:'passwordTooltip_text', children:[
89 {tag:'span', html:this.text()} 86 {tag:'span', html:this.text()}
90 ]}, 87 ]},
91 {tag:'div', id:this.getId('footer'), cls:'passwordTooltip_footer'} 88 {tag:'div', id:this.getId('footer'), cls:'passwordTooltip_footer'}
92 ]}, 89 ]},
93 {tag:'div', id:this.getId('arrow'), cls:'passwordTooltip_arrow'} 90 {tag:'div', id:this.getId('arrow'), cls:'passwordTooltip_arrow'}
94 ]}); 91 ]});
95 92
96 this._boxDimensions = MochiKit.Style.getElementDimensions(this.getId('body')); 93 this._boxDimensions = MochiKit.Style.getElementDimensions(this.getId('body'));
97 // this._boxDimensions.h += MochiKit.Style.getElementDimensions(this.getId('footer')).h; 94 // this._boxDimensions.h += MochiKit.Style.getElementDimensions(this.getId('footer')).h;
98 95
99 MochiKit.Style.hideElement(this.displayElement()); 96 MochiKit.Style.hideElement(this.displayElement());
100 MochiKit.Signal.connect(this.element(), 'onmouseenter', this, 'show'); 97 MochiKit.Signal.connect(this.element(), 'onmouseenter', this, 'show');
101 MochiKit.Signal.connect(this.element(), 'onmouseleave', this, 'hide'); 98 MochiKit.Signal.connect(this.element(), 'onmouseleave', this, 'hide');
102 }, 99 },
103 100
104 //----------------------------------------------------- 101 //-----------------------------------------------------
105 102
106 'displayElement': function() { 103 'displayElement': function() {
107 return this.getElement('tooltip'); 104 return this.getElement('tooltip');
108 }, 105 },
109 106
110 //------------------------------------------------------------------------- 107 //-------------------------------------------------------------------------
111 108
112 'boxDimensions': function () { 109 'boxDimensions': function () {
113 return this._boxDimensions; 110 return this._boxDimensions;
114 }, 111 },
115 112
116 //------------------------------------------------------------------------- 113 //-------------------------------------------------------------------------
117 114
118 'show': function () { 115 'show': function () {
119 var elementSizeAndPosition; 116 var elementSizeAndPosition;
120 var arrowPosition; 117 var arrowPosition;
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/RulerComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/RulerComponent.js
index ab8a38c..69c1ede 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/RulerComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/RulerComponent.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Web.Components.RulerComponent = function(args) { 28Clipperz.PM.UI.Web.Components.RulerComponent = function(args) {
32 args = args || {}; 29 args = args || {};
33 Clipperz.PM.UI.Web.Components.RulerComponent.superclass.constructor.apply(this, arguments); 30 Clipperz.PM.UI.Web.Components.RulerComponent.superclass.constructor.apply(this, arguments);
34 31
35 this._translationContext = args.translationContext|| Clipperz.Base.exception.raise('MandatoryParameter'); 32 this._translationContext = args.translationContext|| Clipperz.Base.exception.raise('MandatoryParameter');
36 // this._steps = args.steps || Clipperz.Base.exception.raise('MandatoryParameter'); 33 // this._steps = args.steps || Clipperz.Base.exception.raise('MandatoryParameter');
37 this._steps = args.steps; 34 this._steps = args.steps;
38 35
39 this._currentStep = -1; 36 this._currentStep = -1;
40 37
41 return this; 38 return this;
42} 39}
43 40
44//============================================================================= 41//=============================================================================
45 42
46Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.RulerComponent, Clipperz.PM.UI.Common.Components.BaseComponent, { 43Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.RulerComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
47 44
48 //------------------------------------------------------------------------- 45 //-------------------------------------------------------------------------
49 46
50 'toString': function () { 47 'toString': function () {
51 return "Clipperz.PM.UI.Web.Components.RulerComponent component"; 48 return "Clipperz.PM.UI.Web.Components.RulerComponent component";
52 }, 49 },
53 50
54 //------------------------------------------------------------------------- 51 //-------------------------------------------------------------------------
55 52
56 'resetStatus': function (args) { 53 'resetStatus': function (args) {
57 args = args || {}; 54 args = args || {};
58 55
59 if (this.currentStep() != 0) { 56 if (this.currentStep() != 0) {
60 var shouldAnimateTransition; 57 var shouldAnimateTransition;
61 58
62 shouldAnimateTransition = args.animateTransition || false; 59 shouldAnimateTransition = args.animateTransition || false;
63 60
64 if (shouldAnimateTransition) { 61 if (shouldAnimateTransition) {
65 this.moveToFirstStep(MochiKit.Base.method(this, 'cursorMoved')); 62 this.moveToFirstStep(MochiKit.Base.method(this, 'cursorMoved'));
66 } else { 63 } else {
67 this._currentStep = 0; 64 this._currentStep = 0;
68 this.cursorMoved(); 65 this.cursorMoved();
69 } 66 }
70 } 67 }
71 }, 68 },
72 69
73 //------------------------------------------------------------------------- 70 //-------------------------------------------------------------------------
74 71
75 'translationContext': function () { 72 'translationContext': function () {
76 return this._translationContext; 73 return this._translationContext;
77 }, 74 },
78 75
79 'steps': function () { 76 'steps': function () {
80 return this._steps; 77 return this._steps;
81 }, 78 },
82 79
83 'setSteps': function (aValue) { 80 'setSteps': function (aValue) {
84 this._steps = aValue; 81 this._steps = aValue;
85 this.renderStepsComponents(); 82 this.renderStepsComponents();
86 this.resetStatus(); 83 this.resetStatus();
87 }, 84 },
88 85
89 'translatedStepDescription': function (aStep) { 86 'translatedStepDescription': function (aStep) {
90 return Clipperz.PM.Strings.getValue(this.translationContext() + '.' + aStep + '.' + 'name'); 87 return Clipperz.PM.Strings.getValue(this.translationContext() + '.' + aStep + '.' + 'name');
91 }, 88 },
92 89
93 //------------------------------------------------------------------------- 90 //-------------------------------------------------------------------------
94 91
95 'renderSelf': function(/*aContainer, aPosition*/) { 92 'renderSelf': function(/*aContainer, aPosition*/) {
96 this.setElement(this.append(MochiKit.DOM.currentDocument().body, [ 93 this.setElement(this.append(MochiKit.DOM.currentDocument().body, [
97 {tag:'div', id:this.getId('rulerWrapper'), cls:'rulerWrapper fixed', children:[ 94 {tag:'div', id:this.getId('rulerWrapper'), cls:'rulerWrapper fixed', children:[
98 {tag:'div', cls:'ruler', children:[ 95 {tag:'div', cls:'ruler', children:[
99 {tag:'a', href:'#', id:this.getId('exit'), cls:'exit', html:'&nbsp;'}, 96 {tag:'a', href:'#', id:this.getId('exit'), cls:'exit', html:'&nbsp;'},
100 {tag:'a', href:'#', id:this.getId('smallPreviousButton'),cls:'smallButton previous', html:'&nbsp;'}, 97 {tag:'a', href:'#', id:this.getId('smallPreviousButton'),cls:'smallButton previous', html:'&nbsp;'},
101 {tag:'a', href:'#', id:this.getId('smallNextButton'), cls:'smallButton next', html:'&nbsp;'}, 98 {tag:'a', href:'#', id:this.getId('smallNextButton'), cls:'smallButton next', html:'&nbsp;'},
102 {tag:'div', cls:'marker', id:this.getId('marker'), children:[ 99 {tag:'div', cls:'marker', id:this.getId('marker'), children:[
103 {tag:'div', cls:'previous', id:this.getId('previousButton')}, 100 {tag:'div', cls:'previous', id:this.getId('previousButton')},
104 {tag:'div', cls:'markerBody'}, 101 {tag:'div', cls:'markerBody'},
105 {tag:'div', cls:'next', id:this.getId('nextButton')} 102 {tag:'div', cls:'next', id:this.getId('nextButton')}
106 ]}, 103 ]},
107 {tag:'div', cls:'steps', id:this.getId('stepsFrame')}, 104 {tag:'div', cls:'steps', id:this.getId('stepsFrame')},
108 // {tag:'div', cls:'steps' + ' ' + 'steps_' + this.steps().length, children:[ 105 // {tag:'div', cls:'steps' + ' ' + 'steps_' + this.steps().length, children:[
109 // {tag:'ul', id:this.getId('steps'), children:MochiKit.Base.map(MochiKit.Base.bind(function (aStep) { return {tag:'li', children:[{tag:'span', html:this.translatedStepDescription(aStep)}]}}, this), this.steps())} 106 // {tag:'ul', id:this.getId('steps'), children:MochiKit.Base.map(MochiKit.Base.bind(function (aStep) { return {tag:'li', children:[{tag:'span', html:this.translatedStepDescription(aStep)}]}}, this), this.steps())}
110 // ]}, 107 // ]},
111 {tag:'div', cls:'dots', id:this.getId('dotsFrame')} 108 {tag:'div', cls:'dots', id:this.getId('dotsFrame')}
112 // {tag:'div', cls:'dots' + ' ' + 'steps_' + this.steps().length, children:[ 109 // {tag:'div', cls:'dots' + ' ' + 'steps_' + this.steps().length, children:[
113 // {tag:'ul', id:this.getId('dots'), children:MochiKit.Base.map(function (aStep) { return {tag:'li', children:[{tag:'span', html:'*'}]}}, this.steps())} 110 // {tag:'ul', id:this.getId('dots'), children:MochiKit.Base.map(function (aStep) { return {tag:'li', children:[{tag:'span', html:'*'}]}}, this.steps())}
114 // ]} 111 // ]}
115 ]} 112 ]}
116 ]} 113 ]}
117 ])); 114 ]));
118//console.log("ELEMENT", this.element()); 115//console.log("ELEMENT", this.element());
119 116
120 MochiKit.Signal.connect(this.getElement('exit'), 'onclick', this, 'handleExit'); 117 MochiKit.Signal.connect(this.getElement('exit'), 'onclick', this, 'handleExit');
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/TabSidePanel.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/TabSidePanel.js
index 39a1ccb..666afe9 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/TabSidePanel.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/TabSidePanel.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Web.Components.TabSidePanel = function(args) { 28Clipperz.PM.UI.Web.Components.TabSidePanel = function(args) {
32 args = args || {}; 29 args = args || {};
33 Clipperz.PM.UI.Web.Components.TabSidePanel.superclass.constructor.call(this, args); 30 Clipperz.PM.UI.Web.Components.TabSidePanel.superclass.constructor.call(this, args);
34 31
35 this._element = args.element || null; 32 this._element = args.element || null;
36 33
37 this._slots = { 34 this._slots = {
38 }; 35 };
39 36
40 return this; 37 return this;
41} 38}
42 39
43//============================================================================= 40//=============================================================================
44 41
45Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.TabSidePanel, Clipperz.PM.UI.Common.Components.BaseComponent, { 42Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.TabSidePanel, Clipperz.PM.UI.Common.Components.BaseComponent, {
46 43
47 //------------------------------------------------------------------------- 44 //-------------------------------------------------------------------------
48 45
49 'toString': function () { 46 'toString': function () {
50 return "Clipperz.PM.UI.Web.Components.TabSidePanel component"; 47 return "Clipperz.PM.UI.Web.Components.TabSidePanel component";
51 }, 48 },
52 49
53 //------------------------------------------------------------------------- 50 //-------------------------------------------------------------------------
54 51
55 'deselectAllTabs': function() { 52 'deselectAllTabs': function() {
56 var tabListItems; 53 var tabListItems;
57 54
58 tabListItems = [ 55 tabListItems = [
59 'cardsLI', 56 'cardsLI',
60 // 'directLoginLI', 57 // 'directLoginLI',
61 'accountLI', 58 'accountLI',
62 'dataLI', 59 'dataLI',
63 'toolsLI' 60 'toolsLI'
64 ]; 61 ];
65 62
66//Clipperz.log("=== TabSidePanel.tabSelected anEvent.src().id", anEvent.src().id); 63//Clipperz.log("=== TabSidePanel.tabSelected anEvent.src().id", anEvent.src().id);
67 for (var i in tabListItems) { 64 for (var i in tabListItems) {
68//Clipperz.log("=== TabSidePanel.tabSelected aTabListItem", tabListItems[i]); 65//Clipperz.log("=== TabSidePanel.tabSelected aTabListItem", tabListItems[i]);
69 MochiKit.DOM.removeElementClass(this.getId(tabListItems[i]), 'selected'); 66 MochiKit.DOM.removeElementClass(this.getId(tabListItems[i]), 'selected');
70 } 67 }
71 }, 68 },
72 69
73 'selectTab': function(aTabName) { 70 'selectTab': function(aTabName) {
74 this.deselectAllTabs(); 71 this.deselectAllTabs();
75 MochiKit.DOM.addElementClass(this.getId(this.listItemIdForTabNamed(aTabName)), 'selected'); 72 MochiKit.DOM.addElementClass(this.getId(this.listItemIdForTabNamed(aTabName)), 'selected');
76 MochiKit.Signal.signal(this, 'tabSelected', aTabName); 73 MochiKit.Signal.signal(this, 'tabSelected', aTabName);
77 }, 74 },
78 75
79 'tabNameForAnchorId': function(anId) { 76 'tabNameForAnchorId': function(anId) {
80 var result; 77 var result;
81 78
82 switch(anId) { 79 switch(anId) {
83 case 'cards_tabSidePanel': 80 case 'cards_tabSidePanel':
84 result = 'cards'; 81 result = 'cards';
85 break; 82 break;
86 // case 'directLogins_tabSidePanel': 83 // case 'directLogins_tabSidePanel':
87 // result = 'directLogins'; 84 // result = 'directLogins';
88 // break; 85 // break;
89 case 'account_tabSidePanel': 86 case 'account_tabSidePanel':
90 result = 'account'; 87 result = 'account';
91 break; 88 break;
92 case 'data_tabSidePanel': 89 case 'data_tabSidePanel':
93 result = 'data'; 90 result = 'data';
94 break; 91 break;
95 case 'tools_tabSidePanel': 92 case 'tools_tabSidePanel':
96 result = 'tools'; 93 result = 'tools';
97 break; 94 break;
98 } 95 }
99 96
100 return result; 97 return result;
101 }, 98 },
102 99
103 'listItemIdForTabNamed': function(aTabName) { 100 'listItemIdForTabNamed': function(aTabName) {
104 var result; 101 var result;
105 102
106 switch (aTabName) { 103 switch (aTabName) {
107 case 'cards': 104 case 'cards':
108 result = 'cardsLI'; 105 result = 'cardsLI';
109 break; 106 break;
110 // case 'directLogins': 107 // case 'directLogins':
111 // result = 'directLoginLI'; 108 // result = 'directLoginLI';
112 // break; 109 // break;
113 case 'account': 110 case 'account':
114 result = 'accountLI'; 111 result = 'accountLI';
115 break; 112 break;
116 case 'data': 113 case 'data':
117 result = 'dataLI'; 114 result = 'dataLI';
118 break; 115 break;
119 case 'tools': 116 case 'tools':
120 result = 'toolsLI'; 117 result = 'toolsLI';
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/TextColumnManager.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/TextColumnManager.js
index 97e81b4..3dc9ce9 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/TextColumnManager.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/TextColumnManager.js
@@ -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
29Clipperz.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31//############################################################################# 28//#############################################################################
32 29
33Clipperz.PM.UI.Web.Components.TextColumnManager = function(args) { 30Clipperz.PM.UI.Web.Components.TextColumnManager = function(args) {
34 args = args || {}; 31 args = args || {};
35 Clipperz.PM.UI.Web.Components.TextColumnManager.superclass.constructor.call(this, args); 32 Clipperz.PM.UI.Web.Components.TextColumnManager.superclass.constructor.call(this, args);
36 33
37 return this; 34 return this;
38} 35}
39 36
40//============================================================================= 37//=============================================================================
41 38
42Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.TextColumnManager, Clipperz.PM.UI.Web.Components.ColumnManager, { 39Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.TextColumnManager, Clipperz.PM.UI.Web.Components.ColumnManager, {
43 40
44 'toString': function () { 41 'toString': function () {
45 return "Clipperz.PM.UI.Web.Components.TextColumnManager component"; 42 return "Clipperz.PM.UI.Web.Components.TextColumnManager component";
46 }, 43 },
47 44
48 //----------------------------------------------------- 45 //-----------------------------------------------------
49 46
50 '__syntax_fix__' : 'syntax fix' 47 '__syntax_fix__' : 'syntax fix'
51 48
52}); 49});
53 50
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ToolsPanel.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ToolsPanel.js
index 179c495..3ee6189 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ToolsPanel.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/ToolsPanel.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
29Clipperz.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Web.Components.ToolsPanel = function(args) { 28Clipperz.PM.UI.Web.Components.ToolsPanel = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Web.Components.ToolsPanel.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Web.Components.ToolsPanel.superclass.constructor.apply(this, arguments);
35 32
36 this._initiallySelectedTab = args.selected || 'PASSWORD_GENERATOR'; 33 this._initiallySelectedTab = args.selected || 'PASSWORD_GENERATOR';
37 this._tabPanelControllerConfiguration = { 34 this._tabPanelControllerConfiguration = {
38 'PASSWORD_GENERATOR': { 35 'PASSWORD_GENERATOR': {
39 tab:'passwordGeneratorTab', 36 tab:'passwordGeneratorTab',
40 panel:'passwordGeneratorPanel' 37 panel:'passwordGeneratorPanel'
41 }, 38 },
42 'BOOKMARKLET': { 39 'BOOKMARKLET': {
43 tab:'bookmarkletTab', 40 tab:'bookmarkletTab',
44 panel:'bookmarkletPanel' 41 panel:'bookmarkletPanel'
45 }, 42 },
46 'COMPACT_EDITION': { 43 'COMPACT_EDITION': {
47 tab:'compactEditionTab', 44 tab:'compactEditionTab',
48 panel:'compactEditionPanel' 45 panel:'compactEditionPanel'
49 }, 46 },
50 'HTTP_AUTH': { 47 'HTTP_AUTH': {
51 tab:'httpAuthTab', 48 tab:'httpAuthTab',
52 panel:'httpAuthPanel' 49 panel:'httpAuthPanel'
53 } 50 }
54 }; 51 };
55 52
56 return this; 53 return this;
57} 54}
58 55
59//============================================================================= 56//=============================================================================
60 57
61Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.ToolsPanel, Clipperz.PM.UI.Common.Components.TabPanelComponent, { 58Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.ToolsPanel, Clipperz.PM.UI.Common.Components.TabPanelComponent, {
62 59
63 //------------------------------------------------------------------------- 60 //-------------------------------------------------------------------------
64 61
65 'toString': function () { 62 'toString': function () {
66 return "Clipperz.PM.UI.Web.Components.ToolsPanel component"; 63 return "Clipperz.PM.UI.Web.Components.ToolsPanel component";
67 }, 64 },
68 65
69 //------------------------------------------------------------------------- 66 //-------------------------------------------------------------------------
70 67
71 'renderSelf': function(/*aContainer, aPosition*/) { 68 'renderSelf': function(/*aContainer, aPosition*/) {
72 this.append(this.element(), [ 69 this.append(this.element(), [
73 {tag:'div', cls:'header', children:[ 70 {tag:'div', cls:'header', children:[
74 {tag:'div', cls:'subPanelTabs', children:[ 71 {tag:'div', cls:'subPanelTabs', children:[
75 {tag:'ul', children:[ 72 {tag:'ul', children:[
76 {tag:'li', id:this.getId('passwordGeneratorTab'),children:[{tag:'a', href:'#', html:'Password generator'}], cls:'first'}, 73 {tag:'li', id:this.getId('passwordGeneratorTab'),children:[{tag:'a', href:'#', html:'Password generator'}], cls:'first'},
77 {tag:'li', id:this.getId('bookmarkletTab'), children:[{tag:'a', href:'#', html:'Bookmarklet'}]}, 74 {tag:'li', id:this.getId('bookmarkletTab'), children:[{tag:'a', href:'#', html:'Bookmarklet'}]},
78 {tag:'li', id:this.getId('compactEditionTab'), children:[{tag:'a', href:'#', html:'Compact edition'}]}, 75 {tag:'li', id:this.getId('compactEditionTab'), children:[{tag:'a', href:'#', html:'Compact edition'}]},
79 {tag:'li', id:this.getId('httpAuthTab'), children:[{tag:'a', href:'#', html:'HTTP Auth'}]} 76 {tag:'li', id:this.getId('httpAuthTab'), children:[{tag:'a', href:'#', html:'HTTP Auth'}]}
80 ]} 77 ]}
81 ]} 78 ]}
82 ]}, 79 ]},
83 {tag:'div', cls:'body', children:[ 80 {tag:'div', cls:'body', children:[
84 {tag:'div', cls:'accountPanel', children:[ 81 {tag:'div', cls:'accountPanel', children:[
85 {tag:'div', cls:'subPanelContent', children:[ 82 {tag:'div', cls:'subPanelContent', children:[
86 {tag:'ul', children:[ 83 {tag:'ul', children:[
87 {tag:'li', id:this.getId('passwordGeneratorPanel'),children:[ 84 {tag:'li', id:this.getId('passwordGeneratorPanel'),children:[
88 {tag:'h3', html:"Password generator"} 85 {tag:'h3', html:"Password generator"}
89 ]}, 86 ]},
90 {tag:'li', id:this.getId('bookmarkletPanel'),children:[ 87 {tag:'li', id:this.getId('bookmarkletPanel'),children:[
91 {tag:'h3', html:"Bookmarklet"} 88 {tag:'h3', html:"Bookmarklet"}
92 ]}, 89 ]},
93 {tag:'li', id:this.getId('compactEditionPanel'), children:[ 90 {tag:'li', id:this.getId('compactEditionPanel'), children:[
94 {tag:'h3', html:"Compact edition"} 91 {tag:'h3', html:"Compact edition"}
95 ]}, 92 ]},
96 {tag:'li', id:this.getId('httpAuthPanel'), children:[ 93 {tag:'li', id:this.getId('httpAuthPanel'), children:[
97 {tag:'h3', html:"HTTP Auth"} 94 {tag:'h3', html:"HTTP Auth"}
98 ]} 95 ]}
99 ]} 96 ]}
100 ]} 97 ]}
101 ]} 98 ]}
102 ]}, 99 ]},
103 {tag:'div', cls:'footer'} 100 {tag:'div', cls:'footer'}
104 ]); 101 ]);
105 102
106 this.tabPanelController().setup({selected:this.initiallySelectedTab()}); 103 this.tabPanelController().setup({selected:this.initiallySelectedTab()});
107 }, 104 },
108 105
109 //------------------------------------------------------------------------- 106 //-------------------------------------------------------------------------
110 107
111 108
112 __syntaxFix__: "syntax fix" 109 __syntaxFix__: "syntax fix"
113}); 110});
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/UnlockPasswordComponent.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/UnlockPasswordComponent.js
index 5b9d522..21ccf2a 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/UnlockPasswordComponent.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/UnlockPasswordComponent.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Web.Components.UnlockPasswordComponent = function(args) { 28Clipperz.PM.UI.Web.Components.UnlockPasswordComponent = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Web.Components.UnlockPasswordComponent.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Web.Components.UnlockPasswordComponent.superclass.constructor.apply(this, arguments);
35 32
36 this._openFromElement = args.openFromElement || null; 33 this._openFromElement = args.openFromElement || null;
37 this._onOkCloseToElement = args.onOkCloseToElement || null; 34 this._onOkCloseToElement = args.onOkCloseToElement || null;
38 this._onCancelCloseToElement = args.onCancelCloseToElement|| null; 35 this._onCancelCloseToElement = args.onCancelCloseToElement|| null;
39 36
40 this._progressBarComponent = null; 37 this._progressBarComponent = null;
41 38
42 return this; 39 return this;
43} 40}
44 41
45//============================================================================= 42//=============================================================================
46 43
47Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.UnlockPasswordComponent, Clipperz.PM.UI.Common.Components.SimpleMessagePanel, { 44Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.UnlockPasswordComponent, Clipperz.PM.UI.Common.Components.SimpleMessagePanel, {
48 45
49 //------------------------------------------------------------------------- 46 //-------------------------------------------------------------------------
50 47
51 'toString': function () { 48 'toString': function () {
52 return "Clipperz.PM.UI.Web.Components.UnlockPasswordComponent component"; 49 return "Clipperz.PM.UI.Web.Components.UnlockPasswordComponent component";
53 }, 50 },
54 51
55 //------------------------------------------------------------------------- 52 //-------------------------------------------------------------------------
56 53
57 'getPassphrase': function () { 54 'getPassphrase': function () {
58 /* var deferredResult; 55 /* var deferredResult;
59 56
60 if (this.passphrase() == null) { 57 if (this.passphrase() == null) {
61 this.deferredShowModal({'openFromElement': this.openFromElement()}); 58 this.deferredShowModal({'openFromElement': this.openFromElement()});
62 deferredResult = this.deferred(); 59 deferredResult = this.deferred();
63 } else { 60 } else {
64 deferredResult = MochiKit.Async.succeed(this.passphrase()); 61 deferredResult = MochiKit.Async.succeed(this.passphrase());
65 } 62 }
66 63
67 return deferredResult; 64 return deferredResult;
68*/ 65*/
69 66
70 this.deferredShowModal({'openFromElement': this.openFromElement()}); 67 this.deferredShowModal({'openFromElement': this.openFromElement()});
71 68
72 return this.deferred(); 69 return this.deferred();
73 }, 70 },
74 71
75 //------------------------------------------------------------------------- 72 //-------------------------------------------------------------------------
76 73
77 'deferredShowModal': function (someParameters) { 74 'deferredShowModal': function (someParameters) {
78 return Clipperz.Async.callbacks("UnlockPasswordComponent.deferredShowModal", [ 75 return Clipperz.Async.callbacks("UnlockPasswordComponent.deferredShowModal", [
79 MochiKit.Base.bind(Clipperz.PM.UI.Web.Components.UnlockPasswordComponent.superclass.deferredShowModal, this, someParameters), 76 MochiKit.Base.bind(Clipperz.PM.UI.Web.Components.UnlockPasswordComponent.superclass.deferredShowModal, this, someParameters),
80 MochiKit.Base.method(this, 'getElement', 'passphrase'), 77 MochiKit.Base.method(this, 'getElement', 'passphrase'),
81 MochiKit.Base.methodcaller('focus') 78 MochiKit.Base.methodcaller('focus')
82 ], {trace:false}) 79 ], {trace:false})
83 }, 80 },
84 81
85 //------------------------------------------------------------------------- 82 //-------------------------------------------------------------------------
86 83
87 'openFromElement': function () { 84 'openFromElement': function () {
88 return this._openFromElement; 85 return this._openFromElement;
89 }, 86 },
90 87
91 'onOkCloseToElement': function () { 88 'onOkCloseToElement': function () {
92 return this._onOkCloseToElement; 89 return this._onOkCloseToElement;
93 }, 90 },
94 91
95 'onCancelCloseToElement': function () { 92 'onCancelCloseToElement': function () {
96 return this._onCancelCloseToElement; 93 return this._onCancelCloseToElement;
97 }, 94 },
98 95
99 //------------------------------------------------------------------------- 96 //-------------------------------------------------------------------------
100 97
101 'renderSelf': function() { 98 'renderSelf': function() {
102 Clipperz.PM.UI.Web.Components.UnlockPasswordComponent.superclass.renderSelf.apply(this, arguments); 99 Clipperz.PM.UI.Web.Components.UnlockPasswordComponent.superclass.renderSelf.apply(this, arguments);
103 100
104 this.append(this.getElement('container'), {tag:'div', cls:'passphrase', children: [ 101 this.append(this.getElement('container'), {tag:'div', cls:'passphrase', children: [
105 // {tag:'form', id:this.getId('passphraseForm'), children:[ 102 // {tag:'form', id:this.getId('passphraseForm'), children:[
106 {tag:'input', id:this.getId('passphrase'), type:'password', name:'passphrase', value:''} 103 {tag:'input', id:this.getId('passphrase'), type:'password', name:'passphrase', value:''}
107 // ]} 104 // ]}
108 ]}); 105 ]});
109 106
110 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'userSuccessfullyLoggedIn', this, 'userSuccessfullyLoggedInHandler'); 107 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'userSuccessfullyLoggedIn', this, 'userSuccessfullyLoggedInHandler');
111 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'userLoginFailed', this, 'userLoginFailedHandler'); 108 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'userLoginFailed', this, 'userLoginFailedHandler');
112 109
113 110
114 // MochiKit.Async.callLater(0.1, MochiKit.Base.method(this.getElement('passphrase'), 'focus')); 111 // MochiKit.Async.callLater(0.1, MochiKit.Base.method(this.getElement('passphrase'), 'focus'));
115 // this.getElement('passphrase').select(); 112 // this.getElement('passphrase').select();
116 }, 113 },
117 114
118 //------------------------------------------------------------------------- 115 //-------------------------------------------------------------------------
119 116
120 'showProgressBar': function () { 117 'showProgressBar': function () {
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/UserInfoBox.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/UserInfoBox.js
index f26118e..d699dc6 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Components/UserInfoBox.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Components/UserInfoBox.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Components');
30 27
31Clipperz.PM.UI.Web.Components.UserInfoBox = function(args) { 28Clipperz.PM.UI.Web.Components.UserInfoBox = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Web.Components.UserInfoBox.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.Web.Components.UserInfoBox.superclass.constructor.apply(this, arguments);
35 32
36 this._slots = {}; 33 this._slots = {};
37 this._isLocked = false; 34 this._isLocked = false;
38 this._lockTooltip = null; 35 this._lockTooltip = null;
39 36
40 return this; 37 return this;
41} 38}
42 39
43//============================================================================= 40//=============================================================================
44 41
45Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.UserInfoBox, Clipperz.PM.UI.Common.Components.BaseComponent, { 42Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.UserInfoBox, Clipperz.PM.UI.Common.Components.BaseComponent, {
46 43
47 //------------------------------------------------------------------------- 44 //-------------------------------------------------------------------------
48 45
49 'toString': function () { 46 'toString': function () {
50 return "Clipperz.PM.UI.Web.Components.UserInfoBox component"; 47 return "Clipperz.PM.UI.Web.Components.UserInfoBox component";
51 }, 48 },
52 49
53 //------------------------------------------------------------------------- 50 //-------------------------------------------------------------------------
54 51
55 'handleLogout': function(anEvent) { 52 'handleLogout': function(anEvent) {
56//Clipperz.log(">>> UserInfoBox.handleLogout"); 53//Clipperz.log(">>> UserInfoBox.handleLogout");
57 anEvent.preventDefault(); 54 anEvent.preventDefault();
58 MochiKit.Signal.signal(this, 'logout'); 55 MochiKit.Signal.signal(this, 'logout');
59//Clipperz.log("<<< UserInfoBox.handleLogout"); 56//Clipperz.log("<<< UserInfoBox.handleLogout");
60 }, 57 },
61 58
62 //------------------------------------------------------------------------- 59 //-------------------------------------------------------------------------
63 60
64 'lockTooltip': function () { 61 'lockTooltip': function () {
65 return this._lockTooltip; 62 return this._lockTooltip;
66 }, 63 },
67 64
68 //------------------------------------------------------------------------- 65 //-------------------------------------------------------------------------
69 66
70 'isLocked': function () { 67 'isLocked': function () {
71 return this._isLocked; 68 return this._isLocked;
72 }, 69 },
73 70
74 'setIsLocked': function (aValue) { 71 'setIsLocked': function (aValue) {
75 this._isLocked = aValue; 72 this._isLocked = aValue;
76 }, 73 },
77 74
78 'toggleLock': function(anEvent) { 75 'toggleLock': function(anEvent) {
79 var deferredResult; 76 var deferredResult;
80 var shouldLock; 77 var shouldLock;
81 78
82//console.log(">>> UserInfoBox.toggleLock [locked: " + this.isLocked() + "]"); 79//console.log(">>> UserInfoBox.toggleLock [locked: " + this.isLocked() + "]");
83 anEvent.preventDefault(); 80 anEvent.preventDefault();
84 this.lockTooltip().hide(); 81 this.lockTooltip().hide();
85 82
86 shouldLock = (this.isLocked() == false); 83 shouldLock = (this.isLocked() == false);
87 84
88 if (shouldLock) { 85 if (shouldLock) {
89 var maskElement; 86 var maskElement;
90 87
91 this.setIsLocked(true); 88 this.setIsLocked(true);
92 maskElement = this.getId('modalDialogMask'); 89 maskElement = this.getId('modalDialogMask');
93 deferredResult = Clipperz.Async.callbacks("UserInfoBox.toggleLock [lock]", [ 90 deferredResult = Clipperz.Async.callbacks("UserInfoBox.toggleLock [lock]", [
94 MochiKit.Base.partial(MochiKit.DOM.addElementClass, this.element(), 'locked'), 91 MochiKit.Base.partial(MochiKit.DOM.addElementClass, this.element(), 'locked'),
95 MochiKit.Base.partial(Clipperz.Visual.deferredAnimation, MochiKit.Visual.appear, maskElement, {from:0.0, to:0.75, duration:0.5}), 92 MochiKit.Base.partial(Clipperz.Visual.deferredAnimation, MochiKit.Visual.appear, maskElement, {from:0.0, to:0.75, duration:0.5}),
96 MochiKit.Base.method(Clipperz.PM.RunTime.mainController, 'setPassphraseDelegate', MochiKit.Base.method(this, 'askForPassphrase')), 93 MochiKit.Base.method(Clipperz.PM.RunTime.mainController, 'setPassphraseDelegate', MochiKit.Base.method(this, 'askForPassphrase')),
97 MochiKit.Base.partial(MochiKit.Signal.signal, this, 'lock') 94 MochiKit.Base.partial(MochiKit.Signal.signal, this, 'lock')
98 ], {trace:false}); 95 ], {trace:false});
99 } else { 96 } else {
100 deferredResult = Clipperz.Async.callbacks("UserInfoBox.toggleLock [unlock]", [ 97 deferredResult = Clipperz.Async.callbacks("UserInfoBox.toggleLock [unlock]", [
101 MochiKit.Base.partial(MochiKit.Signal.signal, this, 'unlock') 98 MochiKit.Base.partial(MochiKit.Signal.signal, this, 'unlock')
102 ], {trace:false}); 99 ], {trace:false});
103 } 100 }
104//console.log("<<< UserInfoBox.toggleLock"); 101//console.log("<<< UserInfoBox.toggleLock");
105 102
106 return deferredResult; 103 return deferredResult;
107 }, 104 },
108 105
109 //------------------------------------------------------------------------- 106 //-------------------------------------------------------------------------
110 107
111 'unlock': function () { 108 'unlock': function () {
112 var deferredResult; 109 var deferredResult;
113 var maskElement; 110 var maskElement;
114 111
115 this.setIsLocked(false); 112 this.setIsLocked(false);
116 maskElement = this.getId('modalDialogMask'); 113 maskElement = this.getId('modalDialogMask');
117 114
118 deferredResult = Clipperz.Async.callbacks("UserInfoBox.unlock", [ 115 deferredResult = Clipperz.Async.callbacks("UserInfoBox.unlock", [
119 MochiKit.Base.partial(Clipperz.Visual.deferredAnimation, MochiKit.Visual.fade, maskElement, {from:0.75, to:0.0, duration:0.5}), 116 MochiKit.Base.partial(Clipperz.Visual.deferredAnimation, MochiKit.Visual.fade, maskElement, {from:0.75, to:0.0, duration:0.5}),
120 // Clipperz.Visual.deferredAnimation(MochiKit.Visual.fade, maskElement, {from:0.75, to:0.0, duration:0.5}), 117 // Clipperz.Visual.deferredAnimation(MochiKit.Visual.fade, maskElement, {from:0.75, to:0.0, duration:0.5}),
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/AppController.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/AppController.js
index 05563bf..9a0e744 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/AppController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/AppController.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Controllers'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Controllers');
30 27
31Clipperz.PM.UI.Web.Controllers.AppController = function(args) { 28Clipperz.PM.UI.Web.Controllers.AppController = function(args) {
32 29
33 this._user = null; 30 this._user = null;
34 this._tabSlotNames = { 31 this._tabSlotNames = {
35 //tabName: slotName 32 //tabName: slotName
36 'cards': 'cardGrid', 33 'cards': 'cardGrid',
37 // 'directLogins':'directLoginGrid', 34 // 'directLogins':'directLoginGrid',
38 'account': 'accountPanel', 35 'account': 'accountPanel',
39 'data': 'dataPanel', 36 'data': 'dataPanel',
40 'tools': 'toolsPanel' 37 'tools': 'toolsPanel'
41 }; 38 };
42 39
43 //controllers 40 //controllers
44 this._cardsController= null; 41 this._cardsController= null;
45 //this._directLoginsController = null; 42 //this._directLoginsController = null;
46 this._filterController = null; //new Clipperz.PM.UI.Web.Controllers.FilterController(); 43 this._filterController = null; //new Clipperz.PM.UI.Web.Controllers.FilterController();
47 44
48 //components 45 //components
49 this._appPage = null; 46 this._appPage = null;
50 this._userInfoBox = null; 47 this._userInfoBox = null;
51 this._tabSidePanel = null; 48 this._tabSidePanel = null;
52 49
53 // MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'editCard', this, 'handleEditCard'); 50 // MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'editCard', this, 'handleEditCard');
54 // MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'deleteCard',this, 'handleDeleteCard'); 51 // MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'deleteCard',this, 'handleDeleteCard');
55 52
56 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'userDataSuccessfullySaved',this, 'userDataSuccessfullySavedHandler'); 53 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'userDataSuccessfullySaved',this, 'userDataSuccessfullySavedHandler');
57 54
58 return this; 55 return this;
59} 56}
60 57
61MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.AppController.prototype, { 58MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.AppController.prototype, {
62 59
63 'toString': function() { 60 'toString': function() {
64 return "Clipperz.PM.UI.Web.Controllers.AppController"; 61 return "Clipperz.PM.UI.Web.Controllers.AppController";
65 }, 62 },
66 63
67 //----------------------------------------------------------------------------- 64 //-----------------------------------------------------------------------------
68 65
69 'setUser': function(anUser) { 66 'setUser': function(anUser) {
70 this._user = anUser; 67 this._user = anUser;
71 }, 68 },
72 69
73 'user': function() { 70 'user': function() {
74 return this._user; 71 return this._user;
75 }, 72 },
76 73
77 //----------------------------------------------------------------------------- 74 //-----------------------------------------------------------------------------
78 /* 75 /*
79 'tabSlotNames': function() { 76 'tabSlotNames': function() {
80 return this._tabSlotNames; 77 return this._tabSlotNames;
81 }, 78 },
82*/ 79*/
83 'slotNameForTab': function(aTabName) { 80 'slotNameForTab': function(aTabName) {
84 return this._tabSlotNames[aTabName]; 81 return this._tabSlotNames[aTabName];
85 }, 82 },
86 83
87 'hideAllAppPageTabSlots': function() { 84 'hideAllAppPageTabSlots': function() {
88 var aTabName; 85 var aTabName;
89 86
90 for (aTabName in this._tabSlotNames) { 87 for (aTabName in this._tabSlotNames) {
91 this.appPage().hideSlot(this.slotNameForTab(aTabName)); 88 this.appPage().hideSlot(this.slotNameForTab(aTabName));
92 } 89 }
93 }, 90 },
94 91
95 //----------------------------------------------------------------------------- 92 //-----------------------------------------------------------------------------
96 93
97 'appPage': function() { 94 'appPage': function() {
98 if (this._appPage == null) { 95 if (this._appPage == null) {
99 this._appPage = new Clipperz.PM.UI.Web.Components.AppPage(); 96 this._appPage = new Clipperz.PM.UI.Web.Components.AppPage();
100 } 97 }
101 98
102 return this._appPage; 99 return this._appPage;
103 }, 100 },
104 101
105 //----------------------------------------------------------------------------- 102 //-----------------------------------------------------------------------------
106 103
107 'tabSidePanel': function() { 104 'tabSidePanel': function() {
108 if (this._tabSidePanel == null) { 105 if (this._tabSidePanel == null) {
109 this._tabSidePanel = new Clipperz.PM.UI.Web.Components.TabSidePanel(); 106 this._tabSidePanel = new Clipperz.PM.UI.Web.Components.TabSidePanel();
110 } 107 }
111 108
112 return this._tabSidePanel; 109 return this._tabSidePanel;
113 }, 110 },
114 111
115 //----------------------------------------------------------------------------- 112 //-----------------------------------------------------------------------------
116 113
117 'userInfoBox': function() { 114 'userInfoBox': function() {
118 if (this._userInfoBox == null) { 115 if (this._userInfoBox == null) {
119 this._userInfoBox = new Clipperz.PM.UI.Web.Components.UserInfoBox(); 116 this._userInfoBox = new Clipperz.PM.UI.Web.Components.UserInfoBox();
120 117
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/CardDialogController.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/CardDialogController.js
index 2340aeb..effde31 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/CardDialogController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/CardDialogController.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Controllers'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Controllers');
30 27
31Clipperz.PM.UI.Web.Controllers.CardDialogController = function(args) { 28Clipperz.PM.UI.Web.Controllers.CardDialogController = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Web.Controllers.CardDialogController.superclass.constructor.call(this, args); 31 Clipperz.PM.UI.Web.Controllers.CardDialogController.superclass.constructor.call(this, args);
35 32
36 this._record = args.record || Clipperz.Base.exception.raise('MandatoryParameter'); 33 this._record = args.record || Clipperz.Base.exception.raise('MandatoryParameter');
37 this._delegate = args.delegate || Clipperz.Base.exception.raise('MandatoryParameter'); 34 this._delegate = args.delegate || Clipperz.Base.exception.raise('MandatoryParameter');
38 35
39 this._referenceElement = null; 36 this._referenceElement = null;
40 this._cardDialogComponent = null; 37 this._cardDialogComponent = null;
41 38
42 this._fieldsReferences = {}; 39 this._fieldsReferences = {};
43 this._directLoginReferences = {}; 40 this._directLoginReferences = {};
44 41
45 this._directLoginWizardController = null; 42 this._directLoginWizardController = null;
46 this._directLoginEditingComponent = null; 43 this._directLoginEditingComponent = null;
47 this._isDirectLoginEditingComponentVisible = false; 44 this._isDirectLoginEditingComponentVisible = false;
48 45
49 return this; 46 return this;
50}; 47};
51 48
52Clipperz.Base.extend(Clipperz.PM.UI.Web.Controllers.CardDialogController, Object, { 49Clipperz.Base.extend(Clipperz.PM.UI.Web.Controllers.CardDialogController, Object, {
53 50
54 'toString': function() { 51 'toString': function() {
55 return "Clipperz.PM.UI.Web.Controllers.CardDialogController"; 52 return "Clipperz.PM.UI.Web.Controllers.CardDialogController";
56 }, 53 },
57 54
58 //------------------------------------------------------------------------- 55 //-------------------------------------------------------------------------
59 56
60 'record': function () { 57 'record': function () {
61 return this._record; 58 return this._record;
62 }, 59 },
63 60
64 'delegate': function () { 61 'delegate': function () {
65 return this._delegate; 62 return this._delegate;
66 }, 63 },
67 64
68 //------------------------------------------------------------------------- 65 //-------------------------------------------------------------------------
69 66
70 'fieldsReferences': function () { 67 'fieldsReferences': function () {
71 return this._fieldsReferences; 68 return this._fieldsReferences;
72 }, 69 },
73 70
74 'directLoginReferences': function () { 71 'directLoginReferences': function () {
75 return this._directLoginReferences; 72 return this._directLoginReferences;
76 }, 73 },
77 74
78 //------------------------------------------------------------------------- 75 //-------------------------------------------------------------------------
79 76
80 'referenceElement': function () { 77 'referenceElement': function () {
81 return this._referenceElement; 78 return this._referenceElement;
82 }, 79 },
83 80
84 'setReferenceElement': function (anElement) { 81 'setReferenceElement': function (anElement) {
85 this._referenceElement = anElement; 82 this._referenceElement = anElement;
86 }, 83 },
87 84
88 //------------------------------------------------------------------------- 85 //-------------------------------------------------------------------------
89 86
90 'cardDialogComponent': function () { 87 'cardDialogComponent': function () {
91 if (this._cardDialogComponent == null) { 88 if (this._cardDialogComponent == null) {
92 this._cardDialogComponent = new Clipperz.PM.UI.Web.Components.CardDialogComponent(); 89 this._cardDialogComponent = new Clipperz.PM.UI.Web.Components.CardDialogComponent();
93 90
94 MochiKit.Signal.connect(this._cardDialogComponent, 'cancel', this, 'handleCancel'); 91 MochiKit.Signal.connect(this._cardDialogComponent, 'cancel', this, 'handleCancel');
95 MochiKit.Signal.connect(this._cardDialogComponent, 'save', this, 'handleSave'); 92 MochiKit.Signal.connect(this._cardDialogComponent, 'save', this, 'handleSave');
96 93
97 MochiKit.Signal.connect(this._cardDialogComponent, 'addField', this, 'handleAddField'); 94 MochiKit.Signal.connect(this._cardDialogComponent, 'addField', this, 'handleAddField');
98 MochiKit.Signal.connect(this._cardDialogComponent, 'changedValue',this, 'handleChangedValue'); 95 MochiKit.Signal.connect(this._cardDialogComponent, 'changedValue',this, 'handleChangedValue');
99 96
100 MochiKit.Signal.connect(this._cardDialogComponent, 'addDirectLogin',this, 'handleAddDirectLogin'); 97 MochiKit.Signal.connect(this._cardDialogComponent, 'addDirectLogin',this, 'handleAddDirectLogin');
101 MochiKit.Signal.connect(this._cardDialogComponent, 'keyPressed',this, 'handleCardDialogComponentKeyPressed'); 98 MochiKit.Signal.connect(this._cardDialogComponent, 'keyPressed',this, 'handleCardDialogComponentKeyPressed');
102 } 99 }
103 100
104 return this._cardDialogComponent; 101 return this._cardDialogComponent;
105 }, 102 },
106 103
107 //========================================================================= 104 //=========================================================================
108 105
109 'directLoginWizardController': function () { 106 'directLoginWizardController': function () {
110 if (this._directLoginWizardController == null) { 107 if (this._directLoginWizardController == null) {
111 this._directLoginWizardController = new Clipperz.PM.UI.Web.Controllers.DirectLoginWizardController({ 108 this._directLoginWizardController = new Clipperz.PM.UI.Web.Controllers.DirectLoginWizardController({
112 'cardLabel': this.cardDialogComponent().title(), 109 'cardLabel': this.cardDialogComponent().title(),
113 'directLoginEditingComponent': this.directLoginEditingComponent() 110 'directLoginEditingComponent': this.directLoginEditingComponent()
114 }) 111 })
115 112
116 MochiKit.Signal.connect(this._directLoginWizardController, 'exit',this, 'handleHideDirectLoginEditingComponent'); 113 MochiKit.Signal.connect(this._directLoginWizardController, 'exit',this, 'handleHideDirectLoginEditingComponent');
117 MochiKit.Signal.connect(this._directLoginWizardController, 'done',this, 'handleCompleteDirectLoginEditingComponent'); 114 MochiKit.Signal.connect(this._directLoginWizardController, 'done',this, 'handleCompleteDirectLoginEditingComponent');
118 } 115 }
119 116
120 return this._directLoginWizardController; 117 return this._directLoginWizardController;
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/CardsController.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/CardsController.js
index b1a34b2..f58f0b8 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/CardsController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/CardsController.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Controllers'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Controllers');
30 27
31Clipperz.PM.UI.Web.Controllers.CardsController = function() { 28Clipperz.PM.UI.Web.Controllers.CardsController = function() {
32 Clipperz.PM.UI.Web.Controllers.CardsController.superclass.constructor.apply(this, arguments); 29 Clipperz.PM.UI.Web.Controllers.CardsController.superclass.constructor.apply(this, arguments);
33 30
34 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'cardDialogComponentClosed', this, 'handleHideCard'); 31 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'cardDialogComponentClosed', this, 'handleHideCard');
35 32
36 return this; 33 return this;
37} 34}
38 35
39Clipperz.Base.extend(Clipperz.PM.UI.Web.Controllers.CardsController, Clipperz.PM.UI.Web.Controllers.GridController, { 36Clipperz.Base.extend(Clipperz.PM.UI.Web.Controllers.CardsController, Clipperz.PM.UI.Web.Controllers.GridController, {
40 37
41 'toString': function() { 38 'toString': function() {
42 return "Clipperz.PM.UI.Web.Controllers.CardsController"; 39 return "Clipperz.PM.UI.Web.Controllers.CardsController";
43 }, 40 },
44 41
45 'createGrid': function () { 42 'createGrid': function () {
46 var grid; 43 var grid;
47 44
48 grid = new Clipperz.PM.UI.Web.Components.GridComponent({columnsManagers: [ 45 grid = new Clipperz.PM.UI.Web.Components.GridComponent({columnsManagers: [
49 new Clipperz.PM.UI.Web.Components.FaviconColumnManager({ 46 new Clipperz.PM.UI.Web.Components.FaviconColumnManager({
50 'name': 'Cards.favicon', 47 'name': 'Cards.favicon',
51 'selector': MochiKit.Base.methodcaller('favicon'), 48 'selector': MochiKit.Base.methodcaller('favicon'),
52 'cssClass': 'favicon' 49 'cssClass': 'favicon'
53 }), 50 }),
54 new Clipperz.PM.UI.Web.Components.LinkColumnManager({ 51 new Clipperz.PM.UI.Web.Components.LinkColumnManager({
55 'name': 'Cards.title', 52 'name': 'Cards.title',
56 'selector': MochiKit.Base.methodcaller('label'), 53 'selector': MochiKit.Base.methodcaller('label'),
57 'label': 'title', 54 'label': 'title',
58 'cssClass': 'title', 55 'cssClass': 'title',
59 'comparator': Clipperz.Base.caseInsensitiveCompare, 56 'comparator': Clipperz.Base.caseInsensitiveCompare,
60 'sortable': true, 57 'sortable': true,
61 'sorted': 'ASCENDING', 58 'sorted': 'ASCENDING',
62 // 'actionMethod': function(anObject, anEvent) { MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'editCard', {objectData:anObject, element:anEvent.src()})} 59 // 'actionMethod': function(anObject, anEvent) { MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'editCard', {objectData:anObject, element:anEvent.src()})}
63 'actionMethod': MochiKit.Base.method(this, 'handleShowCard') 60 'actionMethod': MochiKit.Base.method(this, 'handleShowCard')
64 }), 61 }),
65 new Clipperz.PM.UI.Web.Components.DirectLoginsColumnManager({ 62 new Clipperz.PM.UI.Web.Components.DirectLoginsColumnManager({
66 'name': 'Cards.directLogins', 63 'name': 'Cards.directLogins',
67 'selector': MochiKit.Base.methodcaller('directLoginReferences'), 64 'selector': MochiKit.Base.methodcaller('directLoginReferences'),
68 'label': 'direct logins', 65 'label': 'direct logins',
69 'cssClass': 'directLogin' 66 'cssClass': 'directLogin'
70 }), 67 }),
71 new Clipperz.PM.UI.Web.Components.DateColumnManager({ 68 new Clipperz.PM.UI.Web.Components.DateColumnManager({
72 'name': 'Cards.latestUpdate', 69 'name': 'Cards.latestUpdate',
73 'selector': MochiKit.Base.methodcaller('updateDate'), 70 'selector': MochiKit.Base.methodcaller('updateDate'),
74 'label': 'latest update', 71 'label': 'latest update',
75 'cssClass': 'latestUpdate', 72 'cssClass': 'latestUpdate',
76 'format': 'd-m-Y', 73 'format': 'd-m-Y',
77 'comparator': MochiKit.Base.compare, 74 'comparator': MochiKit.Base.compare,
78 'sortable': true, 75 'sortable': true,
79 'sorted': 'UNSORTED' 76 'sorted': 'UNSORTED'
80 }), 77 }),
81 new Clipperz.PM.UI.Web.Components.DeleteObjectColumnManager({ 78 new Clipperz.PM.UI.Web.Components.DeleteObjectColumnManager({
82 'name': 'Cards.delete', 79 'name': 'Cards.delete',
83 'selector': MochiKit.Base.noop, 80 'selector': MochiKit.Base.noop,
84 'cssClass': 'delete', 81 'cssClass': 'delete',
85 // 'actionMethod': function(anObject, anEvent) { MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'deleteCard', {objectData:anObject, element:anEvent.src()})} 82 // 'actionMethod': function(anObject, anEvent) { MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'deleteCard', {objectData:anObject, element:anEvent.src()})}
86 'actionMethod': MochiKit.Base.method(this, 'handleDeleteCard') 83 'actionMethod': MochiKit.Base.method(this, 'handleDeleteCard')
87 }) 84 })
88 ]}); 85 ]});
89 86
90 grid.setComponentForSlotNamed(new Clipperz.PM.UI.Web.Components.BookmarkletComponent(), 'headerSlot'); 87 grid.setComponentForSlotNamed(new Clipperz.PM.UI.Web.Components.BookmarkletComponent(), 'headerSlot');
91 88
92 return grid; 89 return grid;
93 }, 90 },
94 91
95 //----------------------------------------------------------------------------- 92 //-----------------------------------------------------------------------------
96 93
97 'getRows': function () { 94 'getRows': function () {
98 //TODO relying on user() in GridController, bad code smell :| 95 //TODO relying on user() in GridController, bad code smell :|
99 return this.user().getRecords(); 96 return this.user().getRecords();
100 }, 97 },
101 98
102 //============================================================================= 99 //=============================================================================
103 100
104 'displayEmptyContent': function () { 101 'displayEmptyContent': function () {
105 varemptyGridComponent; 102 varemptyGridComponent;
106 103
107 emptyGridComponent = new Clipperz.PM.UI.Web.Components.CreateNewCardSplashComponent(); 104 emptyGridComponent = new Clipperz.PM.UI.Web.Components.CreateNewCardSplashComponent();
108 105
109 return Clipperz.Async.callbacks("CardsController.displayEmptyContent", [ 106 return Clipperz.Async.callbacks("CardsController.displayEmptyContent", [
110 MochiKit.Base.method(this.grid(), 'setNoRowsGridComponent', emptyGridComponent), 107 MochiKit.Base.method(this.grid(), 'setNoRowsGridComponent', emptyGridComponent),
111 MochiKit.Base.bind(Clipperz.PM.UI.Web.Controllers.CardsController.superclass.displayEmptyContent, this) 108 MochiKit.Base.bind(Clipperz.PM.UI.Web.Controllers.CardsController.superclass.displayEmptyContent, this)
112 ], {trace:false}); 109 ], {trace:false});
113 }, 110 },
114 111
115 'displaySelectedRows': function (aFilter) { 112 'displaySelectedRows': function (aFilter) {
116 this.columnManagerWithName('Cards.directLogins').hideDirectLoginListPopup(); 113 this.columnManagerWithName('Cards.directLogins').hideDirectLoginListPopup();
117 114
118 return Clipperz.PM.UI.Web.Controllers.CardsController.superclass.displaySelectedRows.apply(this, arguments); 115 return Clipperz.PM.UI.Web.Controllers.CardsController.superclass.displaySelectedRows.apply(this, arguments);
119 }, 116 },
120 117
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/DirectLoginWizardController.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/DirectLoginWizardController.js
index 38fdc08..c025a51 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/DirectLoginWizardController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/DirectLoginWizardController.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Controllers'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Controllers');
30 27
31Clipperz.PM.UI.Web.Controllers.DirectLoginWizardController = function(args) { 28Clipperz.PM.UI.Web.Controllers.DirectLoginWizardController = function(args) {
32 this._directLoginEditingComponent = args.directLoginEditingComponent|| Clipperz.Base.exception.raise('MandatoryParameter'); 29 this._directLoginEditingComponent = args.directLoginEditingComponent|| Clipperz.Base.exception.raise('MandatoryParameter');
33 this._cardLabel = args.cardLabel || Clipperz.Base.exception.raise('MandatoryParameter'); 30 this._cardLabel = args.cardLabel || Clipperz.Base.exception.raise('MandatoryParameter');
34 31
35 MochiKit.Signal.connect(this._directLoginEditingComponent, 'changedValue',this, 'handleChangedValue'); 32 MochiKit.Signal.connect(this._directLoginEditingComponent, 'changedValue',this, 'handleChangedValue');
36 MochiKit.Signal.connect(this._directLoginEditingComponent, 'moveForward',this, 'handleMoveForward'); 33 MochiKit.Signal.connect(this._directLoginEditingComponent, 'moveForward',this, 'handleMoveForward');
37 MochiKit.Signal.connect(this._directLoginEditingComponent, 'keyPressed',this, 'handleDirectLoginEditingComponentKeyPressed'); 34 MochiKit.Signal.connect(this._directLoginEditingComponent, 'keyPressed',this, 'handleDirectLoginEditingComponentKeyPressed');
38 35
39 this._directLogin = null; 36 this._directLogin = null;
40 this._directLoginHasJustBeenAdded = false; 37 this._directLoginHasJustBeenAdded = false;
41 38
42 this._rulerComponent = null; 39 this._rulerComponent = null;
43 40
44 this._steps = null; 41 this._steps = null;
45 this._currentStepIndex = 0; 42 this._currentStepIndex = 0;
46 this._isNextEnabled = false; 43 this._isNextEnabled = false;
47 44
48 this._recordFields = null; 45 this._recordFields = null;
49 this._originalBindings = null; 46 this._originalBindings = null;
50 47
51 this._bindingComponents = []; 48 this._bindingComponents = [];
52 this._formValueComponents = []; 49 this._formValueComponents = [];
53 50
54 return this; 51 return this;
55} 52}
56 53
57MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.DirectLoginWizardController.prototype, { 54MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.DirectLoginWizardController.prototype, {
58 55
59 'toString': function() { 56 'toString': function() {
60 return "Clipperz.PM.UI.Web.Controllers.DirectLoginWizardController"; 57 return "Clipperz.PM.UI.Web.Controllers.DirectLoginWizardController";
61 }, 58 },
62 59
63 //------------------------------------------------------------------------- 60 //-------------------------------------------------------------------------
64 61
65 'directLogin': function () { 62 'directLogin': function () {
66 return this._directLogin; 63 return this._directLogin;
67 }, 64 },
68 65
69 //------------------------------------------------------------------------- 66 //-------------------------------------------------------------------------
70 67
71 'directLoginHasJustBeenAdded': function () { 68 'directLoginHasJustBeenAdded': function () {
72 return this._directLoginHasJustBeenAdded; 69 return this._directLoginHasJustBeenAdded;
73 }, 70 },
74 71
75 'setDirectLoginHasJustBeenAdded': function (aValue) { 72 'setDirectLoginHasJustBeenAdded': function (aValue) {
76 this._directLoginHasJustBeenAdded = aValue; 73 this._directLoginHasJustBeenAdded = aValue;
77 }, 74 },
78 75
79 //------------------------------------------------------------------------- 76 //-------------------------------------------------------------------------
80 77
81 'directLoginEditingComponent': function () { 78 'directLoginEditingComponent': function () {
82 return this._directLoginEditingComponent; 79 return this._directLoginEditingComponent;
83 }, 80 },
84 81
85 //============================================================================= 82 //=============================================================================
86 83
87 'cardLabel': function () { 84 'cardLabel': function () {
88 return this._cardLabel; 85 return this._cardLabel;
89 }, 86 },
90 87
91 //============================================================================= 88 //=============================================================================
92 89
93 'resetCurrentStepIndex': function () { 90 'resetCurrentStepIndex': function () {
94 this._currentStepIndex = 0; 91 this._currentStepIndex = 0;
95 this.rulerComponent().resetStatus(); 92 this.rulerComponent().resetStatus();
96 }, 93 },
97 94
98 //----------------------------------------------------------------------------- 95 //-----------------------------------------------------------------------------
99 96
100 'enableNext': function (aValue) { 97 'enableNext': function (aValue) {
101 this.rulerComponent().enableNext(aValue); 98 this.rulerComponent().enableNext(aValue);
102 this._isNextEnabled = aValue; 99 this._isNextEnabled = aValue;
103 }, 100 },
104 101
105 'isNextEnabled': function () { 102 'isNextEnabled': function () {
106 return this._isNextEnabled; 103 return this._isNextEnabled;
107 }, 104 },
108 105
109 //----------------------------------------------------------------------------- 106 //-----------------------------------------------------------------------------
110 107
111 'enablePrevious': function (aValue) { 108 'enablePrevious': function (aValue) {
112 this.rulerComponent().enablePrevious(aValue); 109 this.rulerComponent().enablePrevious(aValue);
113 }, 110 },
114 111
115 //============================================================================= 112 //=============================================================================
116 113
117 'bindingComponents': function () { 114 'bindingComponents': function () {
118 return this._bindingComponents; 115 return this._bindingComponents;
119 }, 116 },
120 117
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/DirectLoginsController.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/DirectLoginsController.js
index 28401a2..6ca3be4 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/DirectLoginsController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/DirectLoginsController.js
@@ -1,120 +1,117 @@
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/*
30Clipperz.Base.module('Clipperz.PM.UI.Web.Controllers'); 27Clipperz.Base.module('Clipperz.PM.UI.Web.Controllers');
31 28
32Clipperz.PM.UI.Web.Controllers.DirectLoginsController = function() { 29Clipperz.PM.UI.Web.Controllers.DirectLoginsController = function() {
33 Clipperz.PM.UI.Web.Controllers.DirectLoginsController.superclass.constructor.apply(this, arguments); 30 Clipperz.PM.UI.Web.Controllers.DirectLoginsController.superclass.constructor.apply(this, arguments);
34 31
35 return this; 32 return this;
36}; 33};
37 34
38Clipperz.Base.extend(Clipperz.PM.UI.Web.Controllers.DirectLoginsController, Clipperz.PM.UI.Web.Controllers.GridController, { 35Clipperz.Base.extend(Clipperz.PM.UI.Web.Controllers.DirectLoginsController, Clipperz.PM.UI.Web.Controllers.GridController, {
39 36
40 'createGrid': function () { 37 'createGrid': function () {
41 return new Clipperz.PM.UI.Web.Components.GridComponent({columnsManagers: [ 38 return new Clipperz.PM.UI.Web.Components.GridComponent({columnsManagers: [
42 new Clipperz.PM.UI.Web.Components.FaviconColumnManager({ 39 new Clipperz.PM.UI.Web.Components.FaviconColumnManager({
43 'name': 'DirectLogins.favicon', 40 'name': 'DirectLogins.favicon',
44 'selector': MochiKit.Base.methodcaller('favicon'), 41 'selector': MochiKit.Base.methodcaller('favicon'),
45 'cssClass': 'favicon' 42 'cssClass': 'favicon'
46 }), 43 }),
47 // new Clipperz.PM.UI.Web.Components.LinkColumnManager({ 44 // new Clipperz.PM.UI.Web.Components.LinkColumnManager({
48 new Clipperz.PM.UI.Web.Components.DirectLoginColumnManager({ 45 new Clipperz.PM.UI.Web.Components.DirectLoginColumnManager({
49 'name': 'DirectLogins.title', 46 'name': 'DirectLogins.title',
50 'selector': MochiKit.Base.methodcaller('label'), 47 'selector': MochiKit.Base.methodcaller('label'),
51 'label': 'title', 48 'label': 'title',
52 'cssClass': 'title', 49 'cssClass': 'title',
53 'comparator': Clipperz.Base.caseInsensitiveCompare, 50 'comparator': Clipperz.Base.caseInsensitiveCompare,
54 'sortable': true, 51 'sortable': true,
55 'sorted': 'ASCENDING', 52 'sorted': 'ASCENDING',
56 'actionMethod': MochiKit.Base.methodcaller('runDirectLogin') 53 'actionMethod': MochiKit.Base.methodcaller('runDirectLogin')
57 }), 54 }),
58 // new Clipperz.PM.UI.Web.Components.TextColumnManager({ //should be StrengthColumnManager 55 // new Clipperz.PM.UI.Web.Components.TextColumnManager({ //should be StrengthColumnManager
59 // 'label':'strength', 56 // 'label':'strength',
60 // 'cssClass':'title', 57 // 'cssClass':'title',
61 // 'selector': MochiKit.Base.methodcaller('label') //should be 'strength' or a strenght evaluation function 58 // 'selector': MochiKit.Base.methodcaller('label') //should be 'strength' or a strenght evaluation function
62 // }), 59 // }),
63 new Clipperz.PM.UI.Web.Components.LinkColumnManager({ 60 new Clipperz.PM.UI.Web.Components.LinkColumnManager({
64 'name': 'DirectLogins.cardTitle', 61 'name': 'DirectLogins.cardTitle',
65 'selector': MochiKit.Base.compose(MochiKit.Base.methodcaller('label'), MochiKit.Base.methodcaller('record')), 62 'selector': MochiKit.Base.compose(MochiKit.Base.methodcaller('label'), MochiKit.Base.methodcaller('record')),
66 'label': 'card', 63 'label': 'card',
67 'cssClass': 'cardTitle', 64 'cssClass': 'cardTitle',
68 'comparator': Clipperz.Base.caseInsensitiveCompare, 65 'comparator': Clipperz.Base.caseInsensitiveCompare,
69 'sortable': true, 66 'sortable': true,
70 'sorted': 'UNSORTED', 67 'sorted': 'UNSORTED',
71 'actionMethod': MochiKit.Base.method(this, 'handleShowCard') 68 'actionMethod': MochiKit.Base.method(this, 'handleShowCard')
72 }), 69 }),
73 // new Clipperz.PM.UI.Web.Components.TextColumnManager({ //should be StrengthColumnManager 70 // new Clipperz.PM.UI.Web.Components.TextColumnManager({ //should be StrengthColumnManager
74 // 'label':'last access', 71 // 'label':'last access',
75 // 'cssClass':'title', 72 // 'cssClass':'title',
76 // 'selector': MochiKit.Base.methodcaller('label') 73 // 'selector': MochiKit.Base.methodcaller('label')
77 // // 'sortable': true, 74 // // 'sortable': true,
78 // // 'sorted': 'UNSORTED' 75 // // 'sorted': 'UNSORTED'
79 // }), 76 // }),
80 // new Clipperz.PM.UI.Web.Components.TextColumnManager({ 77 // new Clipperz.PM.UI.Web.Components.TextColumnManager({
81 // 'label':'commands', 78 // 'label':'commands',
82 // 'cssClass':'title', 79 // 'cssClass':'title',
83 // 'selector': MochiKit.Base.methodcaller('label'), //should be a function for commands display 80 // 'selector': MochiKit.Base.methodcaller('label'), //should be a function for commands display
84 // }), 81 // }),
85 new Clipperz.PM.UI.Web.Components.DeleteObjectColumnManager({ 82 new Clipperz.PM.UI.Web.Components.DeleteObjectColumnManager({
86 'name': 'DirectLogins.delete', 83 'name': 'DirectLogins.delete',
87 'selector': MochiKit.Base.noop, 84 'selector': MochiKit.Base.noop,
88 'cssClass': 'delete', 85 'cssClass': 'delete',
89 // 'actionMethod': function(anObject, anEvent) { MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'deleteDirectLogin', {objectData:anObject, element:anEvent.src()})} 86 // 'actionMethod': function(anObject, anEvent) { MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'deleteDirectLogin', {objectData:anObject, element:anEvent.src()})}
90 'actionMethod': MochiKit.Base.method(this, 'handleDeleteDirectLogin') 87 'actionMethod': MochiKit.Base.method(this, 'handleDeleteDirectLogin')
91 }) 88 })
92 ]}); 89 ]});
93 90
94 }, 91 },
95 92
96 //----------------------------------------------------------------------------- 93 //-----------------------------------------------------------------------------
97 94
98 'getRows': function () { 95 'getRows': function () {
99 //TODO: relying on user() in GridController, bad code smell :| 96 //TODO: relying on user() in GridController, bad code smell :|
100 return this.user().getDirectLogins(); 97 return this.user().getDirectLogins();
101 }, 98 },
102 99
103 //----------------------------------------------------------------------------- 100 //-----------------------------------------------------------------------------
104 101
105 'handleShowCard': function (anObject, anEvent) { 102 'handleShowCard': function (anObject, anEvent) {
106 var cardDialogController; 103 var cardDialogController;
107 104
108 cardDialogController = new Clipperz.PM.UI.Web.Controllers.CardDialogController({record:anObject.record()}) 105 cardDialogController = new Clipperz.PM.UI.Web.Controllers.CardDialogController({record:anObject.record()})
109 cardDialogController.run(anEvent.src()); 106 cardDialogController.run(anEvent.src());
110 }, 107 },
111 108
112 //----------------------------------------------------------------------------- 109 //-----------------------------------------------------------------------------
113 110
114 'handleDeleteDirectLogin': function (anObject, anEvent) { 111 'handleDeleteDirectLogin': function (anObject, anEvent) {
115 var deferredResult; 112 var deferredResult;
116 var confirmationDialog; 113 var confirmationDialog;
117 114
118 confirmationDialog = new Clipperz.PM.UI.Common.Components.SimpleMessagePanel({ 115 confirmationDialog = new Clipperz.PM.UI.Common.Components.SimpleMessagePanel({
119 title:"Delete DirectLogin", 116 title:"Delete DirectLogin",
120 text:"Do you want to delete …", 117 text:"Do you want to delete …",
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/FilterController.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/FilterController.js
index 13e02bc..bfc093a 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/FilterController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/FilterController.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Controllers'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Controllers');
30 27
31Clipperz.PM.UI.Web.Controllers.FilterController = function(args) { 28Clipperz.PM.UI.Web.Controllers.FilterController = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Web.Controllers.FilterController.superclass.constructor.call(this, args); 31 Clipperz.PM.UI.Web.Controllers.FilterController.superclass.constructor.call(this, args);
35 32
36 this._filterElements = []; 33 this._filterElements = [];
37 this._filter = ""; 34 this._filter = "";
38 35
39 this._pendingSearchClicks = 0; 36 this._pendingSearchClicks = 0;
40 37
41 return this; 38 return this;
42}; 39};
43 40
44 41
45Clipperz.Base.extend(Clipperz.PM.UI.Web.Controllers.FilterController, Object, { 42Clipperz.Base.extend(Clipperz.PM.UI.Web.Controllers.FilterController, Object, {
46 43
47 //----------------------------------------------------------------------------- 44 //-----------------------------------------------------------------------------
48 45
49 'getFilter': function () { 46 'getFilter': function () {
50 return this._filter; 47 return this._filter;
51 }, 48 },
52 49
53 '_setFilter': function (aFilterElement, aFilter) { 50 '_setFilter': function (aFilterElement, aFilter) {
54 if (aFilter != this._filter) { 51 if (aFilter != this._filter) {
55 this._filter = aFilter; 52 this._filter = aFilter;
56 MochiKit.Signal.signal(this, 'filterUpdated', aFilter); 53 MochiKit.Signal.signal(this, 'filterUpdated', aFilter);
57 this.updateFilterElements(aFilterElement, aFilter); 54 this.updateFilterElements(aFilterElement, aFilter);
58 } 55 }
59 }, 56 },
60 57
61 'setFilter': function (aFilter) { 58 'setFilter': function (aFilter) {
62 this._setFilter(null, aFilter); 59 this._setFilter(null, aFilter);
63 }, 60 },
64 61
65 //----------------------------------------------------------------------------- 62 //-----------------------------------------------------------------------------
66 63
67 'filterElements': function () { 64 'filterElements': function () {
68 return this._filterElements; 65 return this._filterElements;
69 }, 66 },
70 67
71 'registerFilterElement': function (aFilterElement) { 68 'registerFilterElement': function (aFilterElement) {
72//Clipperz.log("=== FilterController.registerFilterElement", aFilterElement); 69//Clipperz.log("=== FilterController.registerFilterElement", aFilterElement);
73 this._filterElements.push(aFilterElement); 70 this._filterElements.push(aFilterElement);
74 MochiKit.Signal.connect(aFilterElement, 'onkeydown', this, 'searchClickHandler'); 71 MochiKit.Signal.connect(aFilterElement, 'onkeydown', this, 'searchClickHandler');
75 MochiKit.Signal.connect(aFilterElement, 'onfocus', this, 'searchClickHandler'); 72 MochiKit.Signal.connect(aFilterElement, 'onfocus', this, 'searchClickHandler');
76 }, 73 },
77 74
78 'removeFilterElement': function (aFilterElement) { 75 'removeFilterElement': function (aFilterElement) {
79 var i; 76 var i;
80 var filterElements; 77 var filterElements;
81 for (i=0; i < filterElements; i++) { 78 for (i=0; i < filterElements; i++) {
82 if (filterElements[i] == aFilterElement); 79 if (filterElements[i] == aFilterElement);
83 filterElements.splice(i, 1); 80 filterElements.splice(i, 1);
84 // TODO unregister/disconnect filterElement ??MochiKit.Signal.disconnect(this.grid().filterElement(), 'updateFilter', this.filterController(), 'handleUpdateFilter'); 81 // TODO unregister/disconnect filterElement ??MochiKit.Signal.disconnect(this.grid().filterElement(), 'updateFilter', this.filterController(), 'handleUpdateFilter');
85 } 82 }
86 }, 83 },
87 84
88 'updateFilterElements': function (aSourceElement, aFilterString) { 85 'updateFilterElements': function (aSourceElement, aFilterString) {
89 MochiKit.Iter.forEach(this.filterElements(), 86 MochiKit.Iter.forEach(this.filterElements(),
90 function (aFilterElement) { 87 function (aFilterElement) {
91 if (aFilterElement != aSourceElement) { 88 if (aFilterElement != aSourceElement) {
92 aFilterElement.value = aFilterString; 89 aFilterElement.value = aFilterString;
93 } 90 }
94 } 91 }
95 ); 92 );
96 93
97 if (aSourceElement != null) { 94 if (aSourceElement != null) {
98 aSourceElement.focus(); 95 aSourceElement.focus();
99 } 96 }
100 }, 97 },
101 98
102 //----------------------------------------------------------------------------- 99 //-----------------------------------------------------------------------------
103 100
104 'run': function () { 101 'run': function () {
105//Clipperz.log("=== FilterController.run"); 102//Clipperz.log("=== FilterController.run");
106 }, 103 },
107 104
108 //----------------------------------------------------------------------------- 105 //-----------------------------------------------------------------------------
109 106
110 'pendingSearchClicks': function () { 107 'pendingSearchClicks': function () {
111 return this._pendingSearchClicks; 108 return this._pendingSearchClicks;
112 }, 109 },
113 110
114 'incrementPendingSearchClicks': function () { 111 'incrementPendingSearchClicks': function () {
115 this._pendingSearchClicks++; 112 this._pendingSearchClicks++;
116 }, 113 },
117 114
118 'decrementPendingSearchClicks': function () { 115 'decrementPendingSearchClicks': function () {
119 this._pendingSearchClicks--; 116 this._pendingSearchClicks--;
120 }, 117 },
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/GridController.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/GridController.js
index 740a091..8bb3016 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/GridController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/GridController.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Controllers'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Controllers');
30 27
31Clipperz.PM.UI.Web.Controllers.GridController = function(args) { 28Clipperz.PM.UI.Web.Controllers.GridController = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.Web.Controllers.GridController.superclass.constructor.call(this, args); 31 Clipperz.PM.UI.Web.Controllers.GridController.superclass.constructor.call(this, args);
35 32
36 this._grid = null; 33 this._grid = null;
37 this._user = null; 34 this._user = null;
38 this._sortedColumnManager = null; 35 this._sortedColumnManager = null;
39 this._cachedObjects = null; 36 this._cachedObjects = null;
40 this._filterController = args.filterController || null; 37 this._filterController = args.filterController || null;
41 38
42 this._deferredDisplaySelectedRowsInvocation = null; 39 this._deferredDisplaySelectedRowsInvocation = null;
43 40
44 return this; 41 return this;
45}; 42};
46 43
47Clipperz.Base.extend(Clipperz.PM.UI.Web.Controllers.GridController, Object, { 44Clipperz.Base.extend(Clipperz.PM.UI.Web.Controllers.GridController, Object, {
48 45
49 'toString': function() { 46 'toString': function() {
50 return "Clipperz.PM.UI.Web.Controllers.GridController"; 47 return "Clipperz.PM.UI.Web.Controllers.GridController";
51 }, 48 },
52 49
53 //----------------------------------------------------------------------------- 50 //-----------------------------------------------------------------------------
54 51
55 'createGrid': function () { 52 'createGrid': function () {
56 throw Clipperz.Base.exception.AbstractMethod; 53 throw Clipperz.Base.exception.AbstractMethod;
57 }, 54 },
58 55
59 'setupWithGrid': function (aGrid) { 56 'setupWithGrid': function (aGrid) {
60 this._grid = aGrid; 57 this._grid = aGrid;
61 58
62 if (this._grid != null) { 59 if (this._grid != null) {
63 MochiKit.Iter.forEach(this.columnsManagers(), function (aColumnManager) { 60 MochiKit.Iter.forEach(this.columnsManagers(), function (aColumnManager) {
64 if (aColumnManager.isSortable()) { 61 if (aColumnManager.isSortable()) {
65 if (aColumnManager.isSorted()) { 62 if (aColumnManager.isSorted()) {
66 this.setSortedColumnManager(aColumnManager); 63 this.setSortedColumnManager(aColumnManager);
67 } 64 }
68 MochiKit.Signal.connect(aColumnManager, 'sort', this, 'handleColumnManagerSort'); 65 MochiKit.Signal.connect(aColumnManager, 'sort', this, 'handleColumnManagerSort');
69 } 66 }
70 MochiKit.Signal.connect(aColumnManager, 'selectRow', this, 'handleColumnManagerSelectRow'); 67 MochiKit.Signal.connect(aColumnManager, 'selectRow', this, 'handleColumnManagerSelectRow');
71 MochiKit.Signal.connect(aColumnManager, 'unselectRow', this, 'handleColumnManagerUnselectRow'); 68 MochiKit.Signal.connect(aColumnManager, 'unselectRow', this, 'handleColumnManagerUnselectRow');
72 }, this); 69 }, this);
73 } 70 }
74 }, 71 },
75 72
76 'grid': function() { 73 'grid': function() {
77 if (this._grid == null) { 74 if (this._grid == null) {
78 this.setupWithGrid(this.createGrid()); 75 this.setupWithGrid(this.createGrid());
79 } 76 }
80 77
81 return this._grid; 78 return this._grid;
82 }, 79 },
83 80
84 'filterController': function () { 81 'filterController': function () {
85//Clipperz.log('GridController.filterController >>>', this._filterController); 82//Clipperz.log('GridController.filterController >>>', this._filterController);
86 if (this._filterController == null) { 83 if (this._filterController == null) {
87 this._filterController = new Clipperz.PM.UI.Web.Controllers.FilterController(); 84 this._filterController = new Clipperz.PM.UI.Web.Controllers.FilterController();
88 } 85 }
89//Clipperz.log('GridController.filterController <<<', this._filterController); 86//Clipperz.log('GridController.filterController <<<', this._filterController);
90 return this._filterController; 87 return this._filterController;
91 }, 88 },
92 89
93 //----------------------------------------------------------------------------- 90 //-----------------------------------------------------------------------------
94 91
95 'columnsManagers': function () { 92 'columnsManagers': function () {
96 return this.grid().columnsManagers(); 93 return this.grid().columnsManagers();
97 }, 94 },
98 95
99 'columnManagerWithName': function (aName) { 96 'columnManagerWithName': function (aName) {
100 varmanagers; 97 varmanagers;
101 var result; 98 var result;
102 99
103 managers = MochiKit.Base.filter(function (aManager) { return aManager.name() == aName; } , this.columnsManagers()); 100 managers = MochiKit.Base.filter(function (aManager) { return aManager.name() == aName; } , this.columnsManagers());
104 101
105 if (managers.length == 1) { 102 if (managers.length == 1) {
106 result = managers[0]; 103 result = managers[0];
107 } else if (managers.length == 0) { 104 } else if (managers.length == 0) {
108 result = null; 105 result = null;
109 } else { 106 } else {
110 throw "WTF!!!"; 107 throw "WTF!!!";
111 } 108 }
112 109
113 return result; 110 return result;
114 }, 111 },
115 112
116 'sortedColumnManager': function () { 113 'sortedColumnManager': function () {
117 return this._sortedColumnManager; 114 return this._sortedColumnManager;
118 }, 115 },
119 116
120 'setSortedColumnManager': function(aValue) { 117 'setSortedColumnManager': function(aValue) {
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/LoginController.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/LoginController.js
index d88af41..d0b378c 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/LoginController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/LoginController.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Controllers'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Controllers');
30 27
31Clipperz.PM.UI.Web.Controllers.LoginController = function(args) { 28Clipperz.PM.UI.Web.Controllers.LoginController = function(args) {
32 this._args = args || {}; 29 this._args = args || {};
33 30
34 this._loginPage = null; 31 this._loginPage = null;
35 32
36 this._newUserWizardController = null; 33 this._newUserWizardController = null;
37 this._newUserCreationComponent = null; 34 this._newUserCreationComponent = null;
38 35
39 return this; 36 return this;
40} 37}
41 38
42MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.LoginController.prototype, { 39MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.LoginController.prototype, {
43 40
44 'toString': function() { 41 'toString': function() {
45 return "Clipperz.PM.UI.Web.Controllers.LoginController"; 42 return "Clipperz.PM.UI.Web.Controllers.LoginController";
46 }, 43 },
47 44
48 'args': function () { 45 'args': function () {
49 return this._args; 46 return this._args;
50 }, 47 },
51 48
52 //----------------------------------------------------------------------------- 49 //-----------------------------------------------------------------------------
53 50
54 'loginPage': function() { 51 'loginPage': function() {
55 if (this._loginPage == null) { 52 if (this._loginPage == null) {
56 this._loginPage = new Clipperz.PM.UI.Web.Components.LoginPage(); 53 this._loginPage = new Clipperz.PM.UI.Web.Components.LoginPage();
57 54
58 MochiKit.Signal.connect(this._loginPage, 'createNewAccountClick', this, 'handleCreateNewAccountClick') 55 MochiKit.Signal.connect(this._loginPage, 'createNewAccountClick', this, 'handleCreateNewAccountClick')
59 } 56 }
60 57
61 return this._loginPage; 58 return this._loginPage;
62 }, 59 },
63 60
64 //----------------------------------------------------------------------------- 61 //-----------------------------------------------------------------------------
65 62
66 'run': function(args) { 63 'run': function(args) {
67 varslot; 64 varslot;
68 varloginPage; 65 varloginPage;
69 varloginForm; 66 varloginForm;
70 67
71 slot = args.slot; 68 slot = args.slot;
72 69
73 loginForm =new Clipperz.PM.UI.Web.Components.LoginForm({'autocomplete': this.args()['autocomplete']}); 70 loginForm =new Clipperz.PM.UI.Web.Components.LoginForm({'autocomplete': this.args()['autocomplete']});
74 71
75 slot.setContent(this.loginPage()); 72 slot.setContent(this.loginPage());
76 this.loginPage().slotNamed('loginForm').setContent(loginForm); 73 this.loginPage().slotNamed('loginForm').setContent(loginForm);
77 74
78 MochiKit.Signal.connect(loginForm, 'doLogin', MochiKit.Base.method(this, 'doLogin', loginForm)); 75 MochiKit.Signal.connect(loginForm, 'doLogin', MochiKit.Base.method(this, 'doLogin', loginForm));
79 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'doLogin', MochiKit.Base.method(this, 'doLogin', loginForm)); 76 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'doLogin', MochiKit.Base.method(this, 'doLogin', loginForm));
80 }, 77 },
81 78
82 //----------------------------------------------------------------------------- 79 //-----------------------------------------------------------------------------
83 80
84 'doLogin': function(aLoginForm, anEvent) { 81 'doLogin': function(aLoginForm, anEvent) {
85 var deferredResult; 82 var deferredResult;
86 varparameters; 83 varparameters;
87 // varshouldUseOTP; 84 // varshouldUseOTP;
88 var loginProgress; 85 var loginProgress;
89 varuser; 86 varuser;
90 var getPassphraseDelegate; 87 var getPassphraseDelegate;
91 88
92 parameters = anEvent; 89 parameters = anEvent;
93 // shouldUseOTP = (typeof(parameters.passphrase) == 'undefined'); 90 // shouldUseOTP = (typeof(parameters.passphrase) == 'undefined');
94 91
95 getPassphraseDelegate = MochiKit.Base.partial(MochiKit.Async.succeed, parameters.passphrase); 92 getPassphraseDelegate = MochiKit.Base.partial(MochiKit.Async.succeed, parameters.passphrase);
96 user = new Clipperz.PM.DataModel.User({'username':parameters.username, 'getPassphraseFunction':MochiKit.Base.method(Clipperz.PM.RunTime.mainController, 'getPassphrase')}); 93 user = new Clipperz.PM.DataModel.User({'username':parameters.username, 'getPassphraseFunction':MochiKit.Base.method(Clipperz.PM.RunTime.mainController, 'getPassphrase')});
97 94
98 loginProgress = new Clipperz.PM.UI.Web.Components.LoginProgress(); 95 loginProgress = new Clipperz.PM.UI.Web.Components.LoginProgress();
99 96
100 deferredResult = new Clipperz.Async.Deferred("LoginController.doLogin", {trace:false}); 97 deferredResult = new Clipperz.Async.Deferred("LoginController.doLogin", {trace:false});
101 deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'initProgress', {'steps':4}); 98 deferredResult.addCallbackPass(MochiKit.Signal.signal, Clipperz.Signal.NotificationCenter, 'initProgress', {'steps':4});
102 deferredResult.addMethod(Clipperz.PM.RunTime.mainController, 'setPassphraseDelegate', getPassphraseDelegate); 99 deferredResult.addMethod(Clipperz.PM.RunTime.mainController, 'setPassphraseDelegate', getPassphraseDelegate);
103 deferredResult.addMethod(loginProgress, 'deferredShowModal', {deferredObject:deferredResult, openFromElement:aLoginForm.submitButtonElement()}); 100 deferredResult.addMethod(loginProgress, 'deferredShowModal', {deferredObject:deferredResult, openFromElement:aLoginForm.submitButtonElement()});
104 deferredResult.addMethod(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'deferredEntropyCollection'); 101 deferredResult.addMethod(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'deferredEntropyCollection');
105 // if (shouldUseOTP == false) { 102 // if (shouldUseOTP == false) {
106 deferredResult.addMethod(user, 'login'); 103 deferredResult.addMethod(user, 'login');
107 // } else { 104 // } else {
108 // deferredResult.addMethod(user, 'loginUsingOTP', parameters.username, parameters.otp); 105 // deferredResult.addMethod(user, 'loginUsingOTP', parameters.username, parameters.otp);
109 // } 106 // }
110 deferredResult.addCallback(function(aLoginProgress, res) { 107 deferredResult.addCallback(function(aLoginProgress, res) {
111 aLoginProgress.disableCancel(); 108 aLoginProgress.disableCancel();
112 return res; 109 return res;
113 }, loginProgress); 110 }, loginProgress);
114 deferredResult.addCallback(function () { 111 deferredResult.addCallback(function () {
115 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'CARDS_CONTROLLER_DID_RUN',MochiKit.Base.method(loginProgress, 'deferredHideModalAndRemove', {closeToElement:MochiKit.DOM.currentDocument().body})); 112 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'CARDS_CONTROLLER_DID_RUN',MochiKit.Base.method(loginProgress, 'deferredHideModalAndRemove', {closeToElement:MochiKit.DOM.currentDocument().body}));
116 }) 113 })
117 deferredResult.addMethod(this, 'userLoggedIn', user, loginProgress, aLoginForm); 114 deferredResult.addMethod(this, 'userLoggedIn', user, loginProgress, aLoginForm);
118 deferredResult.addErrback (MochiKit.Base.method(this, 'handleFailedLogin', loginProgress)); 115 deferredResult.addErrback (MochiKit.Base.method(this, 'handleFailedLogin', loginProgress));
119 116
120 deferredResult.addErrback (MochiKit.Base.method(loginProgress, 'deferredHideModalAndRemove', {closeToElement:aLoginForm.submitButtonElement()})); 117 deferredResult.addErrback (MochiKit.Base.method(loginProgress, 'deferredHideModalAndRemove', {closeToElement:aLoginForm.submitButtonElement()}));
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/MainController.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/MainController.js
index aa0d6ad..c83e3c0 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/MainController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/MainController.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Controllers'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Controllers');
30 27
31Clipperz.PM.UI.Web.Controllers.MainController = function(args) { 28Clipperz.PM.UI.Web.Controllers.MainController = function(args) {
32 this._args = args; 29 this._args = args;
33 30
34 //controllers 31 //controllers
35 this._loginController =null; 32 this._loginController =null;
36 this._appController =null; 33 this._appController =null;
37 34
38 //components 35 //components
39 this._headerComponent = null; 36 this._headerComponent = null;
40 this._pageComponent =null; 37 this._pageComponent =null;
41 this._footerComponent = null; 38 this._footerComponent = null;
42 39
43 this._passphraseDelegateLock = new MochiKit.Async.DeferredLock(); 40 this._passphraseDelegateLock = new MochiKit.Async.DeferredLock();
44 this._passphraseDelegateLock.acquire(); 41 this._passphraseDelegateLock.acquire();
45//Clipperz.log('MainController init _passphraseDelegateLock', this._passphraseDelegateLock); 42//Clipperz.log('MainController init _passphraseDelegateLock', this._passphraseDelegateLock);
46 this._passphraseDelegate = null; 43 this._passphraseDelegate = null;
47 44
48 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'remoteRequestSent', this, 'handleRemoteRequestSent'); 45 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'remoteRequestSent', this, 'handleRemoteRequestSent');
49 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'remoteRequestReceived',this, 'handleRemoteRequestReceived'); 46 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'remoteRequestReceived',this, 'handleRemoteRequestReceived');
50 47
51 return this; 48 return this;
52} 49}
53 50
54MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.MainController.prototype, { 51MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.MainController.prototype, {
55 52
56 'toString': function() { 53 'toString': function() {
57 return "Clipperz.PM.UI.Web.Controllers.MainController"; 54 return "Clipperz.PM.UI.Web.Controllers.MainController";
58 }, 55 },
59 56
60 'args': function () { 57 'args': function () {
61 return this._args; 58 return this._args;
62 }, 59 },
63 60
64 //----------------------------------------------------------------------------- 61 //-----------------------------------------------------------------------------
65 62
66 'headerComponent': function() { 63 'headerComponent': function() {
67 if (this._headerComponent == null) { 64 if (this._headerComponent == null) {
68 this._headerComponent = new Clipperz.PM.UI.Web.Components.PageHeader(); 65 this._headerComponent = new Clipperz.PM.UI.Web.Components.PageHeader();
69 } 66 }
70 67
71 return this._headerComponent; 68 return this._headerComponent;
72 }, 69 },
73 70
74 'footerComponent': function() { 71 'footerComponent': function() {
75 if (this._footerComponent == null) { 72 if (this._footerComponent == null) {
76 this._footerComponent = new Clipperz.PM.UI.Web.Components.PageFooter(); 73 this._footerComponent = new Clipperz.PM.UI.Web.Components.PageFooter();
77 } 74 }
78 75
79 return this._footerComponent; 76 return this._footerComponent;
80 }, 77 },
81 78
82 //----------------------------------------------------------------------------- 79 //-----------------------------------------------------------------------------
83 80
84 'pageComponent': function() { 81 'pageComponent': function() {
85 if (this._pageComponent == null) { 82 if (this._pageComponent == null) {
86 this._pageComponent = new Clipperz.PM.UI.Web.Components.Page({element:MochiKit.DOM.getElement('mainDiv')}); 83 this._pageComponent = new Clipperz.PM.UI.Web.Components.Page({element:MochiKit.DOM.getElement('mainDiv')});
87 } 84 }
88 85
89 return this._pageComponent; 86 return this._pageComponent;
90 }, 87 },
91 88
92 //----------------------------------------------------------------------------- 89 //-----------------------------------------------------------------------------
93 90
94 'loginController': function() { 91 'loginController': function() {
95 if (this._loginController == null) { 92 if (this._loginController == null) {
96 this._loginController = new Clipperz.PM.UI.Web.Controllers.LoginController(this.args()); 93 this._loginController = new Clipperz.PM.UI.Web.Controllers.LoginController(this.args());
97 94
98 MochiKit.Signal.connect(this._loginController, 'userLoggedIn', this, 'loginControllerUserLoggedInCallback'); 95 MochiKit.Signal.connect(this._loginController, 'userLoggedIn', this, 'loginControllerUserLoggedInCallback');
99 } 96 }
100 97
101 return this._loginController; 98 return this._loginController;
102 }, 99 },
103 100
104 'appController': function() { 101 'appController': function() {
105 if (this._appController == null) { 102 if (this._appController == null) {
106 this._appController = new Clipperz.PM.UI.Web.Controllers.AppController(); 103 this._appController = new Clipperz.PM.UI.Web.Controllers.AppController();
107 104
108 MochiKit.Signal.connect(this._appController, 'logout', this, 'handleLogout'); 105 MochiKit.Signal.connect(this._appController, 'logout', this, 'handleLogout');
109 } 106 }
110 107
111 return this._appController; 108 return this._appController;
112 }, 109 },
113 110
114 //----------------------------------------------------------------------------- 111 //-----------------------------------------------------------------------------
115 112
116 'run': function(shoudShowRegistrationForm) { 113 'run': function(shoudShowRegistrationForm) {
117 this.pageComponent().slotNamed('header').setContent(this.headerComponent()); 114 this.pageComponent().slotNamed('header').setContent(this.headerComponent());
118 this.pageComponent().slotNamed('footer').setContent(this.footerComponent()); 115 this.pageComponent().slotNamed('footer').setContent(this.footerComponent());
119 116
120 this.pageComponent().render(); 117 this.pageComponent().render();
diff --git a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/NewUserWizardController.js b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/NewUserWizardController.js
index 28d9d20..7db6888 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/NewUserWizardController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/Web/Controllers/NewUserWizardController.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.Web.Controllers'); 26Clipperz.Base.module('Clipperz.PM.UI.Web.Controllers');
30 27
31Clipperz.PM.UI.Web.Controllers.NewUserWizardController = function(args) { 28Clipperz.PM.UI.Web.Controllers.NewUserWizardController = function(args) {
32 this._newUserCreationComponent = args.newUserCreationComponent|| Clipperz.Base.exception.raise('MandatoryParameter'); 29 this._newUserCreationComponent = args.newUserCreationComponent|| Clipperz.Base.exception.raise('MandatoryParameter');
33 30
34 MochiKit.Signal.connect(this._newUserCreationComponent, 'changedValue',this, 'handleChangedValue'); 31 MochiKit.Signal.connect(this._newUserCreationComponent, 'changedValue',this, 'handleChangedValue');
35 MochiKit.Signal.connect(this._newUserCreationComponent, 'moveForward',this, 'handleMoveForward'); 32 MochiKit.Signal.connect(this._newUserCreationComponent, 'moveForward',this, 'handleMoveForward');
36 MochiKit.Signal.connect(this._newUserCreationComponent, 'keyPressed',this, 'handleNewUserCreationComponentKeyPressed'); 33 MochiKit.Signal.connect(this._newUserCreationComponent, 'keyPressed',this, 'handleNewUserCreationComponentKeyPressed');
37 34
38 this._rulerComponent = null; 35 this._rulerComponent = null;
39 36
40 this._steps = null; 37 this._steps = null;
41 this._currentStepIndex = 0; 38 this._currentStepIndex = 0;
42 this._isNextEnabled = false; 39 this._isNextEnabled = false;
43 40
44 this._userCreationState = 'IDLE'; //'IN PROGRESS', 'DONE', 'FAILED' 41 this._userCreationState = 'IDLE'; //'IN PROGRESS', 'DONE', 'FAILED'
45 this._user = null; 42 this._user = null;
46 return this; 43 return this;
47} 44}
48 45
49MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.NewUserWizardController.prototype, { 46MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.NewUserWizardController.prototype, {
50 47
51 'toString': function() { 48 'toString': function() {
52 return "Clipperz.PM.UI.Web.Controllers.NewUserWizardController"; 49 return "Clipperz.PM.UI.Web.Controllers.NewUserWizardController";
53 }, 50 },
54 51
55 //------------------------------------------------------------------------- 52 //-------------------------------------------------------------------------
56 53
57 'newUserCreationComponent': function () { 54 'newUserCreationComponent': function () {
58 return this._newUserCreationComponent; 55 return this._newUserCreationComponent;
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 'userCreationState': function () { 70 'userCreationState': function () {
74 return this._userCreationState; 71 return this._userCreationState;
75 }, 72 },
76 73
77 'setUserCreationState': function (aValue) { 74 'setUserCreationState': function (aValue) {
78//console.log("+++ NewUserWizardController.setUserCreationState", aValue); 75//console.log("+++ NewUserWizardController.setUserCreationState", aValue);
79 this._userCreationState = aValue; 76 this._userCreationState = aValue;
80 this.checkState(); 77 this.checkState();
81 }, 78 },
82 79
83 //============================================================================= 80 //=============================================================================
84 81
85 'resetCurrentStepIndex': function () { 82 'resetCurrentStepIndex': function () {
86 this._currentStepIndex = 0; 83 this._currentStepIndex = 0;
87 this.rulerComponent().resetStatus({animateTransition:true}); 84 this.rulerComponent().resetStatus({animateTransition:true});
88 }, 85 },
89 86
90 //----------------------------------------------------------------------------- 87 //-----------------------------------------------------------------------------
91 88
92 'enableNext': function (aValue) { 89 'enableNext': function (aValue) {
93 this.rulerComponent().enableNext(aValue); 90 this.rulerComponent().enableNext(aValue);
94 this._isNextEnabled = aValue; 91 this._isNextEnabled = aValue;
95 }, 92 },
96 93
97 'isNextEnabled': function () { 94 'isNextEnabled': function () {
98 return this._isNextEnabled; 95 return this._isNextEnabled;
99 }, 96 },
100 97
101 //----------------------------------------------------------------------------- 98 //-----------------------------------------------------------------------------
102 99
103 'enablePrevious': function (aValue) { 100 'enablePrevious': function (aValue) {
104 this.rulerComponent().enablePrevious(aValue); 101 this.rulerComponent().enablePrevious(aValue);
105 }, 102 },
106 103
107 //============================================================================= 104 //=============================================================================
108 105
109 'rulerComponent': function () { 106 'rulerComponent': function () {
110 if (this._rulerComponent == null) { 107 if (this._rulerComponent == null) {
111 this._rulerComponent = new Clipperz.PM.UI.Web.Components.RulerComponent({ 108 this._rulerComponent = new Clipperz.PM.UI.Web.Components.RulerComponent({
112 translationContext:'Wizards.NewUserWizard' 109 translationContext:'Wizards.NewUserWizard'
113 }); 110 });
114 this._rulerComponent.render(); 111 this._rulerComponent.render();
115 112
116 MochiKit.Signal.connect(this._rulerComponent, 'exit', this, 'handleExit'); 113 MochiKit.Signal.connect(this._rulerComponent, 'exit', this, 'handleExit');
117 MochiKit.Signal.connect(this._rulerComponent, 'done', this, 'done'); 114 MochiKit.Signal.connect(this._rulerComponent, 'done', this, 'done');
118 MochiKit.Signal.connect(this._rulerComponent, 'moveForward',this, 'handleMoveForward'); 115 MochiKit.Signal.connect(this._rulerComponent, 'moveForward',this, 'handleMoveForward');
119 MochiKit.Signal.connect(this._rulerComponent, 'moveBackward',this, 'handleMoveBackward'); 116 MochiKit.Signal.connect(this._rulerComponent, 'moveBackward',this, 'handleMoveBackward');
120 MochiKit.Signal.connect(this._rulerComponent, 'cursorMoved',this, 'handleCursorMoved'); 117 MochiKit.Signal.connect(this._rulerComponent, 'cursorMoved',this, 'handleCursorMoved');
diff --git a/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardDetail.js b/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardDetail.js
index 23fd236..5380aa1 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardDetail.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardDetail.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.iPhone.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.iPhone.Components');
30 27
31Clipperz.PM.UI.iPhone.Components.CardDetail = function(args) { 28Clipperz.PM.UI.iPhone.Components.CardDetail = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.iPhone.Components.CardDetail.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.iPhone.Components.CardDetail.superclass.constructor.apply(this, arguments);
35 32
36 this._cardReference = null; 33 this._cardReference = null;
37 34
38 return this; 35 return this;
39} 36}
40 37
41//============================================================================= 38//=============================================================================
42 39
43Clipperz.Base.extend(Clipperz.PM.UI.iPhone.Components.CardDetail, Clipperz.PM.UI.Common.Components.BaseComponent, { 40Clipperz.Base.extend(Clipperz.PM.UI.iPhone.Components.CardDetail, Clipperz.PM.UI.Common.Components.BaseComponent, {
44 41
45 //------------------------------------------------------------------------- 42 //-------------------------------------------------------------------------
46 43
47 'toString': function () { 44 'toString': function () {
48 return "Clipperz.PM.UI.iPhone.Components.CardDetail component"; 45 return "Clipperz.PM.UI.iPhone.Components.CardDetail component";
49 }, 46 },
50 47
51 //------------------------------------------------------------------------- 48 //-------------------------------------------------------------------------
52 49
53 'cardReference': function () { 50 'cardReference': function () {
54 return this._cardReference; 51 return this._cardReference;
55 }, 52 },
56 53
57 'setCardReference': function (aValue) { 54 'setCardReference': function (aValue) {
58 this._cardReference = aValue; 55 this._cardReference = aValue;
59 }, 56 },
60 57
61 //------------------------------------------------------------------------- 58 //-------------------------------------------------------------------------
62 59
63 'renderSelf': function(/*aContainer, aPosition*/) { 60 'renderSelf': function(/*aContainer, aPosition*/) {
64 this.append(this.element(), [ 61 this.append(this.element(), [
65 {tag:'div', cls:'cardDetail', id:this.getId('cardDetail'), children:[ 62 {tag:'div', cls:'cardDetail', id:this.getId('cardDetail'), children:[
66 {tag:'div', id:this.getId('progressBar')} //, 63 {tag:'div', id:this.getId('progressBar')} //,
67 // {tag:'h1', cls:'loading', html:"loading"} 64 // {tag:'h1', cls:'loading', html:"loading"}
68 ]} 65 ]}
69 ]); 66 ]);
70 67
71 this.addComponent(new Clipperz.PM.UI.Common.Components.ProgressBar({'element':this.getElement('progressBar')})); 68 this.addComponent(new Clipperz.PM.UI.Common.Components.ProgressBar({'element':this.getElement('progressBar')}));
72 MochiKit.Signal.signal(Clipperz.PM.UI.Common.Controllers.ProgressBarController.defaultController, 'updateProgress', 0); 69 MochiKit.Signal.signal(Clipperz.PM.UI.Common.Controllers.ProgressBarController.defaultController, 'updateProgress', 0);
73 }, 70 },
74 71
75 //========================================================================= 72 //=========================================================================
76 73
77 'showCardDetails': function (someData) { 74 'showCardDetails': function (someData) {
78 this.element().innerHTML = ''; 75 this.element().innerHTML = '';
79 this.append(this.element(), [ 76 this.append(this.element(), [
80 {tag:'fieldset', id:this.getId('fields'), children:MochiKit.Base.map(function (aFieldData) { 77 {tag:'fieldset', id:this.getId('fields'), children:MochiKit.Base.map(function (aFieldData) {
81 return {tag:'div', cls:'row', children:[ 78 return {tag:'div', cls:'row', children:[
82 {tag:'label', html:aFieldData['label']}, 79 {tag:'label', html:aFieldData['label']},
83 // {tag:'span', cls:('fieldValue ' + (aFieldData['isHidden']? 'password' : 'text')), html:aFieldData['value']} 80 // {tag:'span', cls:('fieldValue ' + (aFieldData['isHidden']? 'password' : 'text')), html:aFieldData['value']}
84 {tag:'div', cls:('fieldValue ' + (aFieldData['isHidden']? 'password' : 'text')), children:[ 81 {tag:'div', cls:('fieldValue ' + (aFieldData['isHidden']? 'password' : 'text')), children:[
85 {tag:'div', children:[{tag:'p', html:aFieldData['value']}]} 82 {tag:'div', children:[{tag:'p', html:aFieldData['value']}]}
86 ]} 83 ]}
87 // {tag:'input', type:'text', cls:('fieldValue ' + (aFieldData['isHidden']? 'password' : 'text')), value:aFieldData['value'], disabled:true} 84 // {tag:'input', type:'text', cls:('fieldValue ' + (aFieldData['isHidden']? 'password' : 'text')), value:aFieldData['value'], disabled:true}
88 85
89 ]} 86 ]}
90 }, someData['fields'])} 87 }, someData['fields'])}
91 ]); 88 ]);
92 89
93 MochiKit.Iter.forEach(MochiKit.Selector.findChildElements(this.element(), ['span.password']), MochiKit.Base.bind(function (aPasswordElement) { 90 MochiKit.Iter.forEach(MochiKit.Selector.findChildElements(this.element(), ['span.password']), MochiKit.Base.bind(function (aPasswordElement) {
94 MochiKit.Signal.connect(aPasswordElement, 'onclick', function (anEvent) { alert(MochiKit.DOM.scrapeText(anEvent.src())); }) 91 MochiKit.Signal.connect(aPasswordElement, 'onclick', function (anEvent) { alert(MochiKit.DOM.scrapeText(anEvent.src())); })
95 }, this)); 92 }, this));
96 93
97 if (someData['directLogins'].length > 0) { 94 if (someData['directLogins'].length > 0) {
98 this.append(this.element(), [ 95 this.append(this.element(), [
99 {tag:'h2', html:"Direct logins"}, 96 {tag:'h2', html:"Direct logins"},
100 {tag:'fieldset', id:this.getId('directLogins'), children:MochiKit.Base.map(function (aDirectLoginData) { 97 {tag:'fieldset', id:this.getId('directLogins'), children:MochiKit.Base.map(function (aDirectLoginData) {
101 return {tag:'div', cls:'row', id:('directLogin_' + aDirectLoginData['_reference']), children:[ 98 return {tag:'div', cls:'row', id:('directLogin_' + aDirectLoginData['_reference']), children:[
102 {tag:'img', cls:'favicon', src:aDirectLoginData['favicon']}, 99 {tag:'img', cls:'favicon', src:aDirectLoginData['favicon']},
103 // {tag:'input', cls:'directLogin', disabled:'disabled', type:'text', name:aDirectLoginData['label'], value:aDirectLoginData['label']} 100 // {tag:'input', cls:'directLogin', disabled:'disabled', type:'text', name:aDirectLoginData['label'], value:aDirectLoginData['label']}
104 {tag:'span', cls:'directLogin', html:aDirectLoginData['label']} 101 {tag:'span', cls:'directLogin', html:aDirectLoginData['label']}
105 ]} 102 ]}
106 }, someData['directLogins'])} 103 }, someData['directLogins'])}
107 ]); 104 ]);
108 105
109 MochiKit.Base.map(MochiKit.Base.bind(function (aRowNode) { 106 MochiKit.Base.map(MochiKit.Base.bind(function (aRowNode) {
110 MochiKit.Signal.connect(aRowNode, 'onclick', this, 'directLoginClickHandler'); 107 MochiKit.Signal.connect(aRowNode, 'onclick', this, 'directLoginClickHandler');
111 }, this), 108 }, this),
112 MochiKit.Selector.findChildElements(this.getElement('directLogins'), ['div.row']) 109 MochiKit.Selector.findChildElements(this.getElement('directLogins'), ['div.row'])
113 ) 110 )
114 }; 111 };
115 112
116 if (someData['notes'] != '') { 113 if (someData['notes'] != '') {
117 this.append(this.element(), [ 114 this.append(this.element(), [
118 {tag:'h2', html:"Notes"}, 115 {tag:'h2', html:"Notes"},
119 {tag:'fieldset', id:this.getId('fieldset'), children:[ 116 {tag:'fieldset', id:this.getId('fieldset'), children:[
120 {tag:'div', cls:'row notes', children:[ 117 {tag:'div', cls:'row notes', children:[
diff --git a/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardList.js b/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardList.js
index 770f983..c3f2701 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardList.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/CardList.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.iPhone.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.iPhone.Components');
30 27
31Clipperz.PM.UI.iPhone.Components.CardList = function(args) { 28Clipperz.PM.UI.iPhone.Components.CardList = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.iPhone.Components.CardList.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.iPhone.Components.CardList.superclass.constructor.apply(this, arguments);
35 32
36 this._cardDetail = null; 33 this._cardDetail = null;
37 34
38 return this; 35 return this;
39} 36}
40 37
41//============================================================================= 38//=============================================================================
42 39
43Clipperz.Base.extend(Clipperz.PM.UI.iPhone.Components.CardList, Clipperz.PM.UI.Common.Components.BaseComponent, { 40Clipperz.Base.extend(Clipperz.PM.UI.iPhone.Components.CardList, Clipperz.PM.UI.Common.Components.BaseComponent, {
44 41
45 //------------------------------------------------------------------------- 42 //-------------------------------------------------------------------------
46 43
47 'toString': function () { 44 'toString': function () {
48 return "Clipperz.PM.UI.iPhone.Components.CardList component"; 45 return "Clipperz.PM.UI.iPhone.Components.CardList component";
49 }, 46 },
50 47
51 //------------------------------------------------------------------------- 48 //-------------------------------------------------------------------------
52 49
53 'renderSelf': function(/*aContainer, aPosition*/) { 50 'renderSelf': function(/*aContainer, aPosition*/) {
54 this.append(this.element(), [ 51 this.append(this.element(), [
55 {tag:'div', cls:'toolbar', id:'toolbar', children:[ 52 {tag:'div', cls:'toolbar', id:'toolbar', children:[
56 {tag:'h1', id:'pageTitle', html:"cards"}, 53 {tag:'h1', id:'pageTitle', html:"cards"},
57 {tag:'a', id:'backButton', cls:'button', href:'#', html:"cards"} 54 {tag:'a', id:'backButton', cls:'button', href:'#', html:"cards"}
58 ]}, 55 ]},
59 {tag:'div', cls:'cardList', id:this.getId('cardList'), children:[ 56 {tag:'div', cls:'cardList', id:this.getId('cardList'), children:[
60 {tag:'form', title:'search', cls:'panel cardListSearchForm', id:this.getId('cardListSearchForm'), children:[ 57 {tag:'form', title:'search', cls:'panel cardListSearchForm', id:this.getId('cardListSearchForm'), children:[
61 {tag:'input', type:'search', name:'search', value:"", placeholder:"search", id:this.getId('searchField')} 58 {tag:'input', type:'search', name:'search', value:"", placeholder:"search", id:this.getId('searchField')}
62 ]}, 59 ]},
63 {tag:'ul', cls:'panel cardListPanel', id:this.getId('cardListPanel'), children:[]} 60 {tag:'ul', cls:'panel cardListPanel', id:this.getId('cardListPanel'), children:[]}
64 ]}, 61 ]},
65 {tag:'div', cls:'panel cardDetailPanel', id:this.getId('cardDetail')} 62 {tag:'div', cls:'panel cardDetailPanel', id:this.getId('cardDetail')}
66 ]); 63 ]);
67 64
68 MochiKit.Signal.connect(this.getElement('cardListSearchForm'), 'onsubmit', this,'searchHandler'); 65 MochiKit.Signal.connect(this.getElement('cardListSearchForm'), 'onsubmit', this,'searchHandler');
69 MochiKit.Signal.connect(this.getElement('cardListSearchForm'), 'onkeydown', this,'searchHandler'); 66 MochiKit.Signal.connect(this.getElement('cardListSearchForm'), 'onkeydown', this,'searchHandler');
70 MochiKit.Signal.connect(this.getElement('cardListSearchForm'), 'onkeyup', this,'searchHandler'); 67 MochiKit.Signal.connect(this.getElement('cardListSearchForm'), 'onkeyup', this,'searchHandler');
71 68
72 MochiKit.Signal.connect(this.getElement('cardListPanel'), 'onclick', this,'cardListClickHandler'); 69 MochiKit.Signal.connect(this.getElement('cardListPanel'), 'onclick', this,'cardListClickHandler');
73 MochiKit.Signal.connect('backButton', 'onclick', this,'backButtonClickHandler'); 70 MochiKit.Signal.connect('backButton', 'onclick', this,'backButtonClickHandler');
74 71
75 MochiKit.Style.hideElement('backButton'); 72 MochiKit.Style.hideElement('backButton');
76 MochiKit.Style.hideElement(this.getElement('cardDetail')); 73 MochiKit.Style.hideElement(this.getElement('cardDetail'));
77 }, 74 },
78 75
79 //------------------------------------------------------------------------- 76 //-------------------------------------------------------------------------
80 77
81 'searchHandler': function (anEvent) { 78 'searchHandler': function (anEvent) {
82 if ((typeof(anEvent.key()) != 'undefined') && (anEvent.key().string == 'KEY_ENTER')) { //RETURN 79 if ((typeof(anEvent.key()) != 'undefined') && (anEvent.key().string == 'KEY_ENTER')) { //RETURN
83 anEvent.preventDefault(); 80 anEvent.preventDefault();
84 } else { 81 } else {
85 if ((typeof(anEvent.key()) != 'undefined') && (anEvent.key().string == 'KEY_ESCAPE')) { 82 if ((typeof(anEvent.key()) != 'undefined') && (anEvent.key().string == 'KEY_ESCAPE')) {
86 anEvent.target().value = ""; 83 anEvent.target().value = "";
87 } 84 }
88 85
89 if (anEvent.type() == 'keyup') { 86 if (anEvent.type() == 'keyup') {
90 MochiKit.Signal.signal(this, 'searchEvent', anEvent.target().value); 87 MochiKit.Signal.signal(this, 'searchEvent', anEvent.target().value);
91 } 88 }
92 } 89 }
93 }, 90 },
94 91
95 //------------------------------------------------------------------------- 92 //-------------------------------------------------------------------------
96 93
97 'update': function (someObjects) { 94 'update': function (someObjects) {
98 varcardListPanel; 95 varcardListPanel;
99 var i,c; 96 var i,c;
100 97
101 cardListPanel = this.getElement('cardListPanel'); 98 cardListPanel = this.getElement('cardListPanel');
102 cardListPanel.innerHTML = ''; 99 cardListPanel.innerHTML = '';
103 100
104 c = someObjects.length; 101 c = someObjects.length;
105 102
106 for (i=0; i<c; i++) { 103 for (i=0; i<c; i++) {
107 this.append(cardListPanel, {tag:'li', cls:'cardListItem', id:('cardListItem_' + someObjects[i]['_reference']), children:[ 104 this.append(cardListPanel, {tag:'li', cls:'cardListItem', id:('cardListItem_' + someObjects[i]['_reference']), children:[
108 {tag:'img', src:(someObjects[i]['favicon'] ? someObjects[i]['favicon'] : 'data:application/octet-stream;charset=utf-8;base64,AAABAAEAFxcAAAEAGAD8BgAAFgAAACgAAAAXAAAALgAAAAEAGAAAAAAAAAAAABIXAAASFwAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////////////////9zAC////////////////////////////////////////////////////////////////////////////////////////////9pAG////////////////////////////////////////////////////////////////////////////////////////////9rAC////////////////////////////////////////////////////////////////////////////////////////////9yAHP////////////////////////IyMizs7O6urrq6ur////////////Ozs6zs7Ozs7Pq6ur///////////////////////8AAAD////////////////////V1dWXl5eXl5eXl5elpaX4+Pj////Ozs6Xl5eXl5eXl5eenp7///////////////////////8AAAD////////////////////Ozs6Xl5eXl5eXl5eXl5fBwcHq6uqenp6Xl5eXl5eXl5eXl5f///////////////////////8AAAD////////////////////j4+OXl5eXl5eXl5eXl5eXl5elpaWXl5eXl5eXl5eXl5ezs7P///////////////////////8AAAD////////////////////////IyMiXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eenp7x8fH////////////////////////////////////////////////////4+PilpaWXl5eXl5eXl5eXl5eXl5eXl5eXl5fOzs7////////////////////////////////////////////////////////q6uq6urqXl5eXl5eXl5eXl5eXl5eXl5eenp7V1dX4+Pj///////////////////////8AAAD////////////4+PjOzs6lpaWXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e6urrj4+P///////////////8AAAD////////////BwcGXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5fx8fH///////////8AAAD///////////+zs7OXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5fj4+P///////////8AAAD////////////IyMiXl5eXl5eXl5eXl5e6urqXl5eXl5eXl5eXl5esrKylpaWXl5eXl5eXl5eenp7x8fH///////////8AAAD////////////////Ozs7Ozs7V1dX4+Pj///+Xl5eXl5eXl5eXl5fOzs7////q6urOzs7Ozs7q6ur///////////////8AAAD///////////////////////////////////+Xl5eXl5eXl5eXl5fOzs7///////////////////////////////////8AAAD///////////////////////////////////+Xl5eXl5eXl5eXl5fOzs7///////////////////////////////////8AAAD///////////////////////////////////+Xl5eXl5eXl5eXl5fOzs7///////////////////////////////////8AAAD////////////////////////////////////IyMiXl5eXl5eenp7x8fH///////////////////////////////////8AAAD////////////////////////////////////////j4+Pj4+Px8fH///////////////////////////////////////8AAAD///////////////////////////////////////////////////////////////////////////////////////////8AAAD///////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo=')}, 105 {tag:'img', src:(someObjects[i]['favicon'] ? someObjects[i]['favicon'] : 'data:application/octet-stream;charset=utf-8;base64,AAABAAEAFxcAAAEAGAD8BgAAFgAAACgAAAAXAAAALgAAAAEAGAAAAAAAAAAAABIXAAASFwAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////////////////9zAC////////////////////////////////////////////////////////////////////////////////////////////9pAG////////////////////////////////////////////////////////////////////////////////////////////9rAC////////////////////////////////////////////////////////////////////////////////////////////9yAHP////////////////////////IyMizs7O6urrq6ur////////////Ozs6zs7Ozs7Pq6ur///////////////////////8AAAD////////////////////V1dWXl5eXl5eXl5elpaX4+Pj////Ozs6Xl5eXl5eXl5eenp7///////////////////////8AAAD////////////////////Ozs6Xl5eXl5eXl5eXl5fBwcHq6uqenp6Xl5eXl5eXl5eXl5f///////////////////////8AAAD////////////////////j4+OXl5eXl5eXl5eXl5eXl5elpaWXl5eXl5eXl5eXl5ezs7P///////////////////////8AAAD////////////////////////IyMiXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eenp7x8fH////////////////////////////////////////////////////4+PilpaWXl5eXl5eXl5eXl5eXl5eXl5eXl5fOzs7////////////////////////////////////////////////////////q6uq6urqXl5eXl5eXl5eXl5eXl5eXl5eenp7V1dX4+Pj///////////////////////8AAAD////////////4+PjOzs6lpaWXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e6urrj4+P///////////////8AAAD////////////BwcGXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5fx8fH///////////8AAAD///////////+zs7OXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5fj4+P///////////8AAAD////////////IyMiXl5eXl5eXl5eXl5e6urqXl5eXl5eXl5eXl5esrKylpaWXl5eXl5eXl5eenp7x8fH///////////8AAAD////////////////Ozs7Ozs7V1dX4+Pj///+Xl5eXl5eXl5eXl5fOzs7////q6urOzs7Ozs7q6ur///////////////8AAAD///////////////////////////////////+Xl5eXl5eXl5eXl5fOzs7///////////////////////////////////8AAAD///////////////////////////////////+Xl5eXl5eXl5eXl5fOzs7///////////////////////////////////8AAAD///////////////////////////////////+Xl5eXl5eXl5eXl5fOzs7///////////////////////////////////8AAAD////////////////////////////////////IyMiXl5eXl5eenp7x8fH///////////////////////////////////8AAAD////////////////////////////////////////j4+Pj4+Px8fH///////////////////////////////////////8AAAD///////////////////////////////////////////////////////////////////////////////////////////8AAAD///////////////////////////////////////////////////////////////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo=')},
109 {tag:'a', id:('cardListReference_' + someObjects[i]['_reference']), href:'#', html:someObjects[i]['label']} 106 {tag:'a', id:('cardListReference_' + someObjects[i]['_reference']), href:'#', html:someObjects[i]['label']}
110 ]}) 107 ]})
111 108
112 MochiKit.Signal.connect('cardListItem_' + someObjects[i]['_reference'], 'onclick', this, 'cardListClickHandler'); 109 MochiKit.Signal.connect('cardListItem_' + someObjects[i]['_reference'], 'onclick', this, 'cardListClickHandler');
113 } 110 }
114 111
115 }, 112 },
116 113
117 'cardListClickHandler': function (anEvent) { 114 'cardListClickHandler': function (anEvent) {
118 anEvent.preventDefault(); 115 anEvent.preventDefault();
119 116
120 if (/(cardListReference_|cardListItem_)/.test(anEvent.target().id)) { 117 if (/(cardListReference_|cardListItem_)/.test(anEvent.target().id)) {
diff --git a/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/LoginForm.js b/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/LoginForm.js
index eec83b0..5341878 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/LoginForm.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/iPhone/Components/LoginForm.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.iPhone.Components'); 26Clipperz.Base.module('Clipperz.PM.UI.iPhone.Components');
30 27
31Clipperz.PM.UI.iPhone.Components.LoginForm = function(args) { 28Clipperz.PM.UI.iPhone.Components.LoginForm = function(args) {
32 args = args || {}; 29 args = args || {};
33 30
34 Clipperz.PM.UI.iPhone.Components.LoginForm.superclass.constructor.apply(this, arguments); 31 Clipperz.PM.UI.iPhone.Components.LoginForm.superclass.constructor.apply(this, arguments);
35 32
36 return this; 33 return this;
37} 34}
38 35
39//============================================================================= 36//=============================================================================
40 37
41Clipperz.Base.extend(Clipperz.PM.UI.iPhone.Components.LoginForm, Clipperz.PM.UI.Common.Components.BaseComponent, { 38Clipperz.Base.extend(Clipperz.PM.UI.iPhone.Components.LoginForm, Clipperz.PM.UI.Common.Components.BaseComponent, {
42 39
43 //------------------------------------------------------------------------- 40 //-------------------------------------------------------------------------
44 41
45 'toString': function () { 42 'toString': function () {
46 return "Clipperz.PM.UI.iPhone.Components.LoginForm component"; 43 return "Clipperz.PM.UI.iPhone.Components.LoginForm component";
47 }, 44 },
48 45
49 //------------------------------------------------------------------------- 46 //-------------------------------------------------------------------------
50 47
51 'focusOnUsername': function () { 48 'focusOnUsername': function () {
52 this.getElement('username').focus(); 49 this.getElement('username').focus();
53 }, 50 },
54 51
55 //------------------------------------------------------------------------- 52 //-------------------------------------------------------------------------
56 53
57 'username': function () { 54 'username': function () {
58 return this.getElement('username').value; 55 return this.getElement('username').value;
59 }, 56 },
60 57
61 'passphrase': function () { 58 'passphrase': function () {
62 return this.getElement('passphrase').value; 59 return this.getElement('passphrase').value;
63 }, 60 },
64 61
65 //------------------------------------------------------------------------- 62 //-------------------------------------------------------------------------
66 63
67 'renderSelf': function(/*aContainer, aPosition*/) { 64 'renderSelf': function(/*aContainer, aPosition*/) {
68 this.append(this.element(), [ 65 this.append(this.element(), [
69 {tag:'div', cls:'toolbar iPhoneClipperzToolbar', children:[ 66 {tag:'div', cls:'toolbar iPhoneClipperzToolbar', children:[
70 {tag:'h1', id:'pageTitle', html:'Clipperz'}, 67 {tag:'h1', id:'pageTitle', html:'Clipperz'},
71 {tag:'a', id:'backButton', cls:'button', href:'#', html:"back"} 68 {tag:'a', id:'backButton', cls:'button', href:'#', html:"back"}
72 ]}, 69 ]},
73 {tag:'form', title:'Theaters', cls:'panel toolbarlessPanel loginForm', id:this.getId('loginFormPanel'), children:[ 70 {tag:'form', title:'Theaters', cls:'panel toolbarlessPanel loginForm', id:this.getId('loginFormPanel'), children:[
74 {tag:'fieldset', id:this.getId('fieldset'), children:[ 71 {tag:'fieldset', id:this.getId('fieldset'), children:[
75 {tag:'div', cls:'row', children:[ 72 {tag:'div', cls:'row', children:[
76 {tag:'label', html:"username"}, 73 {tag:'label', html:"username"},
77 {tag:'input', type:'text', name:'username', value:"", autocorrect:'off', autocapitalize:'off', id:this.getId('username')} 74 {tag:'input', type:'text', name:'username', value:"", autocorrect:'off', autocapitalize:'off', id:this.getId('username')}
78 ]}, 75 ]},
79 {tag:'div', cls:'row', children:[ 76 {tag:'div', cls:'row', children:[
80 {tag:'label', html:"passphrase"}, 77 {tag:'label', html:"passphrase"},
81 {tag:'input', type:'password', name:'passphrase', value:"", id:this.getId('passphrase')} 78 {tag:'input', type:'password', name:'passphrase', value:"", id:this.getId('passphrase')}
82 ]} 79 ]}
83 ]}, 80 ]},
84 {tag:'a', cls:'whiteButton', type:'submit', href:'#', html:"Login", id:this.getId('submit')} 81 {tag:'a', cls:'whiteButton', type:'submit', href:'#', html:"Login", id:this.getId('submit')}
85 ]}, 82 ]},
86 {tag:'div', cls:'panel toolbarlessPanel loginProgressPanel', id:this.getId('loginProgressPanel'), children:[ 83 {tag:'div', cls:'panel toolbarlessPanel loginProgressPanel', id:this.getId('loginProgressPanel'), children:[
87 {tag:'div', id:this.getId('progressBar')} //, 84 {tag:'div', id:this.getId('progressBar')} //,
88 // {tag:'a', cls:'whiteButton', type:'submit', href:'#', html:"Cancel", id:this.getId('cancel')} 85 // {tag:'a', cls:'whiteButton', type:'submit', href:'#', html:"Cancel", id:this.getId('cancel')}
89 ]}, 86 ]},
90 {tag:'div', cls:'panel loginErrorPanel', id:this.getId('loginErrorPanel'), children:[ 87 {tag:'div', cls:'panel loginErrorPanel', id:this.getId('loginErrorPanel'), children:[
91 {tag:'div', cls:'errorMessage', id:this.getId('errorMessageBox'), children:[ 88 {tag:'div', cls:'errorMessage', id:this.getId('errorMessageBox'), children:[
92 {tag:'h2', id:this.getId('errorMessage'), html:"Login failed"} 89 {tag:'h2', id:this.getId('errorMessage'), html:"Login failed"}
93 ]} 90 ]}
94 ]} 91 ]}
95 ]); 92 ]);
96 93
97 MochiKit.Signal.connect(this.getElement('submit'), 'onclick',this, 'submitHandler'); 94 MochiKit.Signal.connect(this.getElement('submit'), 'onclick',this, 'submitHandler');
98 MochiKit.Signal.connect(this.getElement('loginFormPanel'), 'onsubmit',this, 'submitHandler'); 95 MochiKit.Signal.connect(this.getElement('loginFormPanel'), 'onsubmit',this, 'submitHandler');
99 96
100 // MochiKit.Signal.connect(this.getElement('cancel'), 'onclick',this, 'cancelHandler'); 97 // MochiKit.Signal.connect(this.getElement('cancel'), 'onclick',this, 'cancelHandler');
101 MochiKit.Signal.connect('backButton', 'onclick',this, 'backHandler'); 98 MochiKit.Signal.connect('backButton', 'onclick',this, 'backHandler');
102 99
103 this.addComponent(new Clipperz.PM.UI.Common.Components.ProgressBar({'element':this.getElement('progressBar')})); 100 this.addComponent(new Clipperz.PM.UI.Common.Components.ProgressBar({'element':this.getElement('progressBar')}));
104 101
105 // MochiKit.Style.hideElement(this.getElement('errorMessage')); 102 // MochiKit.Style.hideElement(this.getElement('errorMessage'));
106 103
107 this.showLoginForm(); 104 this.showLoginForm();
108 // MochiKit.Async.callLater(0.2, MochiKit.Base.method(this, 'focusOnUsername')); 105 // MochiKit.Async.callLater(0.2, MochiKit.Base.method(this, 'focusOnUsername'));
109 }, 106 },
110 107
111 //------------------------------------------------------------------------- 108 //-------------------------------------------------------------------------
112 109
113 'showLoginForm': function () { 110 'showLoginForm': function () {
114 MochiKit.Style.showElement(this.getElement('loginFormPanel')); 111 MochiKit.Style.showElement(this.getElement('loginFormPanel'));
115 MochiKit.Style.hideElement(this.getElement('loginProgressPanel')); 112 MochiKit.Style.hideElement(this.getElement('loginProgressPanel'));
116 MochiKit.Style.hideElement(this.getElement('loginErrorPanel')); 113 MochiKit.Style.hideElement(this.getElement('loginErrorPanel'));
117 MochiKit.Style.hideElement('backButton'); 114 MochiKit.Style.hideElement('backButton');
118 }, 115 },
119 116
120 'slideInLoginForm': function () { 117 'slideInLoginForm': function () {
diff --git a/frontend/gamma/js/Clipperz/PM/UI/iPhone/Controllers/MainController.js b/frontend/gamma/js/Clipperz/PM/UI/iPhone/Controllers/MainController.js
index b43d877..3fcaae1 100644
--- a/frontend/gamma/js/Clipperz/PM/UI/iPhone/Controllers/MainController.js
+++ b/frontend/gamma/js/Clipperz/PM/UI/iPhone/Controllers/MainController.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.PM.UI.iPhone.Controllers'); 26Clipperz.Base.module('Clipperz.PM.UI.iPhone.Controllers');
30 27
31 //Some parts of this controller have been derived from the iUI library. 28 //Some parts of this controller have been derived from the iUI library.
32 29
33Clipperz.PM.UI.iPhone.Controllers.MainController = function() { 30Clipperz.PM.UI.iPhone.Controllers.MainController = function() {
34 this._loginForm = null; 31 this._loginForm = null;
35 this._cardList = null; 32 this._cardList = null;
36 this._cachedValues =null; 33 this._cachedValues =null;
37 this._user = null; 34 this._user = null;
38 35
39 if (typeof window.onorientationchange == 'object') { 36 if (typeof window.onorientationchange == 'object') {
40 MochiKit.Signal.connect(window, 'onorientationchange', this, 'orientationChangeHandler'); 37 MochiKit.Signal.connect(window, 'onorientationchange', this, 'orientationChangeHandler');
41 MochiKit.Async.callLater(0, MochiKit.Base.method(this, 'orientationChangeHandler')); 38 MochiKit.Async.callLater(0, MochiKit.Base.method(this, 'orientationChangeHandler'));
42 } else { 39 } else {
43 this.setOrientation('portrait'); 40 this.setOrientation('portrait');
44 // this.setOrientation('landscape'); 41 // this.setOrientation('landscape');
45 } 42 }
46 43
47 this.addMetaTag('viewport', 'width=devicewidth; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;'); 44 this.addMetaTag('viewport', 'width=devicewidth; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;');
48 this.addMetaTag('apple-mobile-web-app-capable', 'yes'); 45 this.addMetaTag('apple-mobile-web-app-capable', 'yes');
49 this.addMetaTag('apple-mobile-web-app-status-bar-style', 'black'); 46 this.addMetaTag('apple-mobile-web-app-status-bar-style', 'black');
50 47
51 this.addLinkTag('apple-touch-icon', 'data:image/png;charset=utf-8;base64,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'); 48 this.addLinkTag('apple-touch-icon', 'data:image/png;charset=utf-8;base64,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');
52 //this.addLinkTag('apple-touch-startup-image', 'default.png'); 49 //this.addLinkTag('apple-touch-startup-image', 'default.png');
53 50
54 // if (!window.navigator.standalone)// not running as an installed app 51 // if (!window.navigator.standalone)// not running as an installed app
55 52
56 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'selectedDirectLogin', this, 'selectedDirectLoginHandler'); 53 MochiKit.Signal.connect(Clipperz.Signal.NotificationCenter, 'selectedDirectLogin', this, 'selectedDirectLoginHandler');
57 54
58 MochiKit.DOM.addElementClass(document.body, 'iPhone'); 55 MochiKit.DOM.addElementClass(document.body, 'iPhone');
59 return this; 56 return this;
60} 57}
61 58
62MochiKit.Base.update(Clipperz.PM.UI.iPhone.Controllers.MainController.prototype, { 59MochiKit.Base.update(Clipperz.PM.UI.iPhone.Controllers.MainController.prototype, {
63 60
64 'toString': function () { 61 'toString': function () {
65 return "Clipperz.PM.UI.iPhone.Controllers.MainController"; 62 return "Clipperz.PM.UI.iPhone.Controllers.MainController";
66 }, 63 },
67 64
68 //========================================================================= 65 //=========================================================================
69 66
70 'user': function () { 67 'user': function () {
71 return this._user; 68 return this._user;
72 }, 69 },
73 70
74 'setUser': function (aValue) { 71 'setUser': function (aValue) {
75 this._user = aValue; 72 this._user = aValue;
76 }, 73 },
77 74
78 //========================================================================= 75 //=========================================================================
79 76
80 'loginForm': function() { 77 'loginForm': function() {
81 if (this._loginForm == null) { 78 if (this._loginForm == null) {
82 MochiKit.DOM.removeElement('mainDiv'); 79 MochiKit.DOM.removeElement('mainDiv');
83 this._loginForm = new Clipperz.PM.UI.iPhone.Components.LoginForm({element:MochiKit.DOM.currentDocument().body}); 80 this._loginForm = new Clipperz.PM.UI.iPhone.Components.LoginForm({element:MochiKit.DOM.currentDocument().body});
84 MochiKit.Signal.connect(this._loginForm, 'doLogin', this, 'doLoginHandler') 81 MochiKit.Signal.connect(this._loginForm, 'doLogin', this, 'doLoginHandler')
85 } 82 }
86 83
87 return this._loginForm; 84 return this._loginForm;
88 }, 85 },
89 86
90 'removeLoginForm': function () { 87 'removeLoginForm': function () {
91 if (this._loginForm != null) { 88 if (this._loginForm != null) {
92 this._loginForm.remove(); 89 this._loginForm.remove();
93 this._loginForm = null; 90 this._loginForm = null;
94 } 91 }
95 }, 92 },
96 93
97 //----------------------------------------------------------------------------- 94 //-----------------------------------------------------------------------------
98 95
99 'cardList': function () { 96 'cardList': function () {
100 if (this._cardList == null) { 97 if (this._cardList == null) {
101 this._cardList = new Clipperz.PM.UI.iPhone.Components.CardList({element:MochiKit.DOM.currentDocument().body}); 98 this._cardList = new Clipperz.PM.UI.iPhone.Components.CardList({element:MochiKit.DOM.currentDocument().body});
102 MochiKit.Signal.connect(this._cardList, 'searchEvent',this, 'searchEventHandler') 99 MochiKit.Signal.connect(this._cardList, 'searchEvent',this, 'searchEventHandler')
103 MochiKit.Signal.connect(this._cardList, 'selectedCard',this, 'selecetedCardHandler') 100 MochiKit.Signal.connect(this._cardList, 'selectedCard',this, 'selecetedCardHandler')
104 } 101 }
105 102
106 return this._cardList; 103 return this._cardList;
107 }, 104 },
108 105
109 //========================================================================= 106 //=========================================================================
110 107
111 'currentWidth': function () { 108 'currentWidth': function () {
112 return this._currentWidth; 109 return this._currentWidth;
113 }, 110 },
114 111
115 'setCurrentWidth': function (aValue) { 112 'setCurrentWidth': function (aValue) {
116 this._currentWidth = aValue; 113 this._currentWidth = aValue;
117 }, 114 },
118 115
119 //========================================================================= 116 //=========================================================================
120 117
diff --git a/frontend/gamma/js/Clipperz/Set.js b/frontend/gamma/js/Clipperz/Set.js
index 61e0769..7023888 100644
--- a/frontend/gamma/js/Clipperz/Set.js
+++ b/frontend/gamma/js/Clipperz/Set.js
@@ -1,120 +1,117 @@
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
diff --git a/frontend/gamma/js/Clipperz/Signal.js b/frontend/gamma/js/Clipperz/Signal.js
index b82499a..ca3e322 100644
--- a/frontend/gamma/js/Clipperz/Signal.js
+++ b/frontend/gamma/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
70Clipperz.Signal.NotificationCenter = {}; 67Clipperz.Signal.NotificationCenter = {};
71 68
diff --git a/frontend/gamma/js/Clipperz/Style.js b/frontend/gamma/js/Clipperz/Style.js
index 3717f61..d377893 100644
--- a/frontend/gamma/js/Clipperz/Style.js
+++ b/frontend/gamma/js/Clipperz/Style.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.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.Element.get(tbodyRows[i]); 60 element = YAHOO.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 67
71 'getSizeAndPosition': function (anElement) { 68 'getSizeAndPosition': function (anElement) {
72 var result; 69 var result;
73 70
74 if (anElement != null) { 71 if (anElement != null) {
75 result ={ dimensions:MochiKit.Style.getElementDimensions(anElement), position:MochiKit.Style.getElementPosition(anElement)}; 72 result ={ dimensions:MochiKit.Style.getElementDimensions(anElement), position:MochiKit.Style.getElementPosition(anElement)};
76 } else { 73 } else {
77 result ={ dimensions:MochiKit.Style.getViewportDimensions(), position:MochiKit.Style.getViewportPosition()}; 74 result ={ dimensions:MochiKit.Style.getViewportDimensions(), position:MochiKit.Style.getViewportPosition()};
78 } 75 }
79 76
80 return result; 77 return result;
81 }, 78 },
82 79
83 'setBackgroundGradient': function (anElement, someParameters) { 80 'setBackgroundGradient': function (anElement, someParameters) {
84 // background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9955), to(#ff6622), color-stop(1,#333333)); 81 // background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#ff9955), to(#ff6622), color-stop(1,#333333));
85 // background: -moz-linear-gradient(0% 100% 90deg,#ff6622, #ff9955); 82 // background: -moz-linear-gradient(0% 100% 90deg,#ff6622, #ff9955);
86 MochiKit.Style.setStyle(anElement, {'background': '-webkit-gradient(linear, 0% 0%, 0% 100%, from(' + someParameters['from'] + '), to(' + someParameters['to'] + '), color-stop(1,#333333))'}); 83 MochiKit.Style.setStyle(anElement, {'background': '-webkit-gradient(linear, 0% 0%, 0% 100%, from(' + someParameters['from'] + '), to(' + someParameters['to'] + '), color-stop(1,#333333))'});
87 MochiKit.Style.setStyle(anElement, {'background': '-moz-linear-gradient(0% 100% 90deg,' + someParameters['to'] + ', ' + someParameters['from'] + ')'}); 84 MochiKit.Style.setStyle(anElement, {'background': '-moz-linear-gradient(0% 100% 90deg,' + someParameters['to'] + ', ' + someParameters['from'] + ')'});
88 }, 85 },
89 86
90 //------------------------------------------------------------------------- 87 //-------------------------------------------------------------------------
91 __syntaxFix__: "syntax fix" 88 __syntaxFix__: "syntax fix"
92 89
93}); 90});
94 91
diff --git a/frontend/gamma/js/Clipperz/Visual.js b/frontend/gamma/js/Clipperz/Visual.js
index b907d5c..c2da3b7 100644
--- a/frontend/gamma/js/Clipperz/Visual.js
+++ b/frontend/gamma/js/Clipperz/Visual.js
@@ -1,120 +1,117 @@
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.Visual) == 'undefined') { Clipperz.Visual = {}; } 27if (typeof(Clipperz.Visual) == 'undefined') { Clipperz.Visual = {}; }
31 28
32Clipperz.Visual.VERSION = "0.1"; 29Clipperz.Visual.VERSION = "0.1";
33Clipperz.Visual.NAME = "Clipperz.Visual"; 30Clipperz.Visual.NAME = "Clipperz.Visual";
34 31
35MochiKit.Base.update(Clipperz.Visual, { 32MochiKit.Base.update(Clipperz.Visual, {
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 'deferredResize': function (anElement, someOptions) { 48 'deferredResize': function (anElement, someOptions) {
52 var deferredResult; 49 var deferredResult;
53 var moveTransition; 50 var moveTransition;
54 var scaleTransition; 51 var scaleTransition;
55 var duration; 52 var duration;
56 53
57 duration = someOptions.duration || 0.5; 54 duration = someOptions.duration || 0.5;
58 55
59 deferredResult = new Clipperz.Async.Deferred("Visual.deferredResize", {trace:false}); 56 deferredResult = new Clipperz.Async.Deferred("Visual.deferredResize", {trace:false});
60 deferredResult.addCallback(MochiKit.Async.succeed, arguments[arguments.length - 1]); 57 deferredResult.addCallback(MochiKit.Async.succeed, arguments[arguments.length - 1]);
61 58
62 moveTransition = MochiKit.Visual.Transitions.linear;//MochiKit.Visual.Transitions.sinoidal; 59 moveTransition = MochiKit.Visual.Transitions.linear;//MochiKit.Visual.Transitions.sinoidal;
63 scaleTransition = MochiKit.Visual.Transitions.linear;//MochiKit.Visual.Transitions.sinoidal; 60 scaleTransition = MochiKit.Visual.Transitions.linear;//MochiKit.Visual.Transitions.sinoidal;
64 61
65 MochiKit.Style.setElementPosition(anElement, {x:someOptions.from.position.x, y:someOptions.from.position.y }, 'px'); 62 MochiKit.Style.setElementPosition(anElement, {x:someOptions.from.position.x, y:someOptions.from.position.y }, 'px');
66 63
67 new MochiKit.Visual.Parallel([ 64 new MochiKit.Visual.Parallel([
68 new MochiKit.Visual.Move(anElement, {x:someOptions.to.position.x, y:someOptions.to.position.y, mode:'absolute', transition:moveTransition, sync:true}), 65 new MochiKit.Visual.Move(anElement, {x:someOptions.to.position.x, y:someOptions.to.position.y, mode:'absolute', transition:moveTransition, sync:true}),
69 new Clipperz.Visual.Resize(anElement, {fromSize:{h:someOptions.from.dimensions.h, w:someOptions.from.dimensions.w}, toSize:{h:someOptions.to.dimensions.h, w:someOptions.to.dimensions.w}, transition:scaleTransition, scaleContent:false, scaleFromCenter:false, restoreAfterFinish:true, sync:true}) 66 new Clipperz.Visual.Resize(anElement, {fromSize:{h:someOptions.from.dimensions.h, w:someOptions.from.dimensions.w}, toSize:{h:someOptions.to.dimensions.h, w:someOptions.to.dimensions.w}, transition:scaleTransition, scaleContent:false, scaleFromCenter:false, restoreAfterFinish:true, sync:true})
70 ], {duration:duration, afterFinish:MochiKit.Base.method(deferredResult, 'callback')}) 67 ], {duration:duration, afterFinish:MochiKit.Base.method(deferredResult, 'callback')})
71 68
72 return deferredResult; 69 return deferredResult;
73 }, 70 },
74 71
75 //------------------------------------------------------------------------- 72 //-------------------------------------------------------------------------
76 73
77 'deferredAnimation': function (anAnimation, someParameters, someOptions) { 74 'deferredAnimation': function (anAnimation, someParameters, someOptions) {
78 vardeferredResult; 75 vardeferredResult;
79 var afterFinishCallback; 76 var afterFinishCallback;
80 var options; 77 var options;
81 78
82 deferredResult = new Clipperz.Async.Deferred("Clipperz.Visual.deferredAnimation", {trace:false}); 79 deferredResult = new Clipperz.Async.Deferred("Clipperz.Visual.deferredAnimation", {trace:false});
83 deferredResult.addCallback(MochiKit.Async.succeed, arguments[arguments.length - 1]); 80 deferredResult.addCallback(MochiKit.Async.succeed, arguments[arguments.length - 1]);
84 81
85 if (MochiKit.Base.isUndefinedOrNull(someOptions)) { 82 if (MochiKit.Base.isUndefinedOrNull(someOptions)) {
86 options = {} 83 options = {}
87 } else { 84 } else {
88 options = someOptions; 85 options = someOptions;
89 } 86 }
90 87
91 if (MochiKit.Base.isUndefinedOrNull(someOptions['afterFinish'])) { 88 if (MochiKit.Base.isUndefinedOrNull(someOptions['afterFinish'])) {
92 options['afterFinish'] = MochiKit.Base.noop; 89 options['afterFinish'] = MochiKit.Base.noop;
93 } 90 }
94 91
95 MochiKit.Base.update(options, { 92 MochiKit.Base.update(options, {
96 'afterFinish': MochiKit.Base.compose(options['afterFinish'], MochiKit.Base.method(deferredResult, 'callback')) 93 'afterFinish': MochiKit.Base.compose(options['afterFinish'], MochiKit.Base.method(deferredResult, 'callback'))
97 }); 94 });
98 95
99 new anAnimation(someParameters, options); 96 new anAnimation(someParameters, options);
100 97
101 return deferredResult; 98 return deferredResult;
102 }, 99 },
103 100
104 //------------------------------------------------------------------------- 101 //-------------------------------------------------------------------------
105 102
106 'deferredAnimations': function (aSinchronizationType, someAnimations, someOptions) { 103 'deferredAnimations': function (aSinchronizationType, someAnimations, someOptions) {
107 var deferredResult; 104 var deferredResult;
108 varoptions; 105 varoptions;
109 106
110 deferredResult = new Clipperz.Async.Deferred("Visual.deferredParallelAnimations", {trace:false}); 107 deferredResult = new Clipperz.Async.Deferred("Visual.deferredParallelAnimations", {trace:false});
111 deferredResult.addCallback(MochiKit.Async.succeed, arguments[arguments.length - 1]); 108 deferredResult.addCallback(MochiKit.Async.succeed, arguments[arguments.length - 1]);
112 109
113 options = someOptions; 110 options = someOptions;
114 if (MochiKit.Base.isUndefinedOrNull(someOptions['afterFinish'])) { 111 if (MochiKit.Base.isUndefinedOrNull(someOptions['afterFinish'])) {
115 options['afterFinish'] = MochiKit.Base.noop; 112 options['afterFinish'] = MochiKit.Base.noop;
116 } 113 }
117 MochiKit.Base.update(options, { 114 MochiKit.Base.update(options, {
118 'afterFinish': MochiKit.Base.compose(options['afterFinish'], MochiKit.Base.method(deferredResult, 'callback')) 115 'afterFinish': MochiKit.Base.compose(options['afterFinish'], MochiKit.Base.method(deferredResult, 'callback'))
119 }); 116 });
120 117
diff --git a/frontend/gamma/js/Clipperz/YUI/DomHelper.js b/frontend/gamma/js/Clipperz/YUI/DomHelper.js
index dbd8c93..87c74f5 100644
--- a/frontend/gamma/js/Clipperz/YUI/DomHelper.js
+++ b/frontend/gamma/js/Clipperz/YUI/DomHelper.js
@@ -1,120 +1,117 @@
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
33/** 30/**
34 * @class Clipperz.ext.DomHelper 31 * @class Clipperz.ext.DomHelper
35 * Utility class for working with DOM and/or Templates. It transparently supports using HTML fragments or DOM. 32 * Utility class for working with DOM and/or Templates. It transparently supports using HTML fragments or DOM.
36 * 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>. 33 * 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>.
37 * @singleton 34 * @singleton
38 */ 35 */
39Clipperz.YUI.DomHelper = new function(){ 36Clipperz.YUI.DomHelper = new function(){
40 /**@private*/ 37 /**@private*/
41 var d = document; 38 var d = document;
42 var tempTableEl = null; 39 var tempTableEl = null;
43 /** True to force the use of DOM instead of html fragments @type Boolean */ 40 /** True to force the use of DOM instead of html fragments @type Boolean */
44 this.useDom = false; 41 this.useDom = false;
45 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; 42 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;
46 /** 43 /**
47 * Applies a style specification to an element 44 * Applies a style specification to an element
48 * @param {String/HTMLElement} el The element to apply styles to 45 * @param {String/HTMLElement} el The element to apply styles to
49 * @param {String/Object/Function} styles A style specification string eg "width:100px", or object in the form {width:"100px"}, or 46 * @param {String/Object/Function} styles A style specification string eg "width:100px", or object in the form {width:"100px"}, or
50 * a function which returns such a specification. 47 * a function which returns such a specification.
51 */ 48 */
52 this.applyStyles = function(el, styles){ 49 this.applyStyles = function(el, styles){
53 if(styles){ 50 if(styles){
54 var D = YAHOO.util.Dom; 51 var D = YAHOO.util.Dom;
55 if (typeof styles == "string"){ 52 if (typeof styles == "string"){
56 var re = /\s?([a-z\-]*)\:([^;]*);?/gi; 53 var re = /\s?([a-z\-]*)\:([^;]*);?/gi;
57 var matches; 54 var matches;
58 while ((matches = re.exec(styles)) != null){ 55 while ((matches = re.exec(styles)) != null){
59 D.setStyle(el, matches[1], matches[2]); 56 D.setStyle(el, matches[1], matches[2]);
60 } 57 }
61 }else if (typeof styles == "object"){ 58 }else if (typeof styles == "object"){
62 for (var style in styles){ 59 for (var style in styles){
63 D.setStyle(el, style, styles[style]); 60 D.setStyle(el, style, styles[style]);
64 } 61 }
65 }else if (typeof styles == "function"){ 62 }else if (typeof styles == "function"){
66 Clipperz.YUI.DomHelper.applyStyles(el, styles.call()); 63 Clipperz.YUI.DomHelper.applyStyles(el, styles.call());
67 } 64 }
68 } 65 }
69 }; 66 };
70 67
71 // build as innerHTML where available 68 // build as innerHTML where available
72 /** @ignore */ 69 /** @ignore */
73 var createHtml = function(o){ 70 var createHtml = function(o){
74 var b = ''; 71 var b = '';
75 72
76 if(typeof(o['html']) != 'undefined') { 73 if(typeof(o['html']) != 'undefined') {
77 o['html'] = Clipperz.Base.sanitizeString(o['html']); 74 o['html'] = Clipperz.Base.sanitizeString(o['html']);
78 } else if (typeof(o['htmlString']) != 'undefined') { 75 } else if (typeof(o['htmlString']) != 'undefined') {
79 o['html'] = o['htmlString']; 76 o['html'] = o['htmlString'];
80 delete o.htmlString; 77 delete o.htmlString;
81 } 78 }
82 79
83 if (MochiKit.Base.isArrayLike(o)) { 80 if (MochiKit.Base.isArrayLike(o)) {
84 for (var i = 0, l = o.length; i < l; i++) { 81 for (var i = 0, l = o.length; i < l; i++) {
85 b += createHtml(o[i]); 82 b += createHtml(o[i]);
86 } 83 }
87 return b; 84 return b;
88 } 85 }
89 86
90 b += '<' + o.tag; 87 b += '<' + o.tag;
91 for(var attr in o){ 88 for(var attr in o){
92 if(attr == 'tag' || attr == 'children' || attr == 'html' || typeof o[attr] == 'function') continue; 89 if(attr == 'tag' || attr == 'children' || attr == 'html' || typeof o[attr] == 'function') continue;
93 if(attr == 'style'){ 90 if(attr == 'style'){
94 var s = o['style']; 91 var s = o['style'];
95 if(typeof s == 'function'){ 92 if(typeof s == 'function'){
96 s = s.call(); 93 s = s.call();
97 } 94 }
98 if(typeof s == 'string'){ 95 if(typeof s == 'string'){
99 b += ' style="' + s + '"'; 96 b += ' style="' + s + '"';
100 }else if(typeof s == 'object'){ 97 }else if(typeof s == 'object'){
101 b += ' style="'; 98 b += ' style="';
102 for(var key in s){ 99 for(var key in s){
103 if(typeof s[key] != 'function'){ 100 if(typeof s[key] != 'function'){
104 b += key + ':' + s[key] + ';'; 101 b += key + ':' + s[key] + ';';
105 } 102 }
106 } 103 }
107 b += '"'; 104 b += '"';
108 } 105 }
109 }else{ 106 }else{
110 if(attr == 'cls'){ 107 if(attr == 'cls'){
111 b += ' class="' + o['cls'] + '"'; 108 b += ' class="' + o['cls'] + '"';
112 }else if(attr == 'htmlFor'){ 109 }else if(attr == 'htmlFor'){
113 b += ' for="' + o['htmlFor'] + '"'; 110 b += ' for="' + o['htmlFor'] + '"';
114 }else{ 111 }else{
115 b += ' ' + attr + '="' + o[attr] + '"'; 112 b += ' ' + attr + '="' + o[attr] + '"';
116 } 113 }
117 } 114 }
118 } 115 }
119 if(emptyTags.test(o.tag)){ 116 if(emptyTags.test(o.tag)){
120 b += ' />'; 117 b += ' />';
diff --git a/frontend/gamma/js/Clipperz/YUI/DomQuery.js b/frontend/gamma/js/Clipperz/YUI/DomQuery.js
index 4a143ab..76d0fae 100644
--- a/frontend/gamma/js/Clipperz/YUI/DomQuery.js
+++ b/frontend/gamma/js/Clipperz/YUI/DomQuery.js
@@ -1,120 +1,117 @@
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
33/* 30/*
34 * yui-ext 0.40 31 * yui-ext 0.40
35 * Copyright(c) 2006, Jack Slocum. 32 * Copyright(c) 2006, Jack Slocum.
36 */ 33 */
37 34
38/** 35/**
39 * @class Clipperz.YUI.DomQuery 36 * @class Clipperz.YUI.DomQuery
40 * Provides high performance selector/xpath processing by compiling queries into reusable functions. 37 * Provides high performance selector/xpath processing by compiling queries into reusable functions.
41 * New pseudo classes and matchers can be plugged. It works on HTML and XML documents (if a content node is passed in). 38 * New pseudo classes and matchers can be plugged. It works on HTML and XML documents (if a content node is passed in).
42 * @singleton 39 * @singleton
43 */ 40 */
44Clipperz.YUI.DomQuery = function(){ 41Clipperz.YUI.DomQuery = function(){
45 var cache = {}, simpleCache = {}, valueCache = {}; 42 var cache = {}, simpleCache = {}, valueCache = {};
46 var nonSpace = /\S/; 43 var nonSpace = /\S/;
47 var trimRe = /^\s*(.*?)\s*$/; 44 var trimRe = /^\s*(.*?)\s*$/;
48 var tplRe = /\{(\d+)\}/g; 45 var tplRe = /\{(\d+)\}/g;
49 var modeRe = /^(\s?[\/>]\s?|\s|$)/; 46 var modeRe = /^(\s?[\/>]\s?|\s|$)/;
50 var clsRes = {}; 47 var clsRes = {};
51 48
52 function child(p, index){ 49 function child(p, index){
53 var i = 0; 50 var i = 0;
54 var n = p.firstChild; 51 var n = p.firstChild;
55 while(n){ 52 while(n){
56 if(n.nodeType == 1){ 53 if(n.nodeType == 1){
57 i++; 54 i++;
58 if(i == index){ 55 if(i == index){
59 return n; 56 return n;
60 } 57 }
61 } 58 }
62 n = n.nextSibling; 59 n = n.nextSibling;
63 } 60 }
64 return null; 61 return null;
65 }; 62 };
66 63
67 function next(d){ 64 function next(d){
68 var n = d.nextSibling; 65 var n = d.nextSibling;
69 while(n && n.nodeType != 1){ 66 while(n && n.nodeType != 1){
70 n = n.nextSibling; 67 n = n.nextSibling;
71 } 68 }
72 return n; 69 return n;
73 }; 70 };
74 71
75 function prev(d){ 72 function prev(d){
76 var n = d.previousSibling; 73 var n = d.previousSibling;
77 while(n && n.nodeType != 1){ 74 while(n && n.nodeType != 1){
78 n = n.previousSibling; 75 n = n.previousSibling;
79 } 76 }
80 return n; 77 return n;
81 }; 78 };
82 79
83 function clean(d){ 80 function clean(d){
84 var n = d.firstChild, ni = -1; 81 var n = d.firstChild, ni = -1;
85 while(n){ 82 while(n){
86 var nx = n.nextSibling; 83 var nx = n.nextSibling;
87 if(n.nodeType == 3 && !nonSpace.test(n.nodeValue)){ 84 if(n.nodeType == 3 && !nonSpace.test(n.nodeValue)){
88 d.removeChild(n); 85 d.removeChild(n);
89 }else{ 86 }else{
90 n.nodeIndex = ++ni; 87 n.nodeIndex = ++ni;
91 } 88 }
92 n = nx; 89 n = nx;
93 } 90 }
94 return this; 91 return this;
95 }; 92 };
96 93
97 function byClassName(c, a, v){ 94 function byClassName(c, a, v){
98 if(!v){ 95 if(!v){
99 return c; 96 return c;
100 } 97 }
101 var re = clsRes[v]; 98 var re = clsRes[v];
102 if(!re){ 99 if(!re){
103 re = new RegExp('(?:^|\\s)(?:' + v + ')(?:\\s|$)'); 100 re = new RegExp('(?:^|\\s)(?:' + v + ')(?:\\s|$)');
104 clsRes[v] = re; 101 clsRes[v] = re;
105 } 102 }
106 var r = []; 103 var r = [];
107 for(var i = 0, ci; ci = c[i]; i++){ 104 for(var i = 0, ci; ci = c[i]; i++){
108 if(re.test(ci.className)){ 105 if(re.test(ci.className)){
109 r[r.length] = ci; 106 r[r.length] = ci;
110 } 107 }
111 } 108 }
112 return r; 109 return r;
113 }; 110 };
114 111
115 function convert(c){ 112 function convert(c){
116 if(c.slice){ 113 if(c.slice){
117 return c; 114 return c;
118 } 115 }
119 var r = []; 116 var r = [];
120 for(var i = 0, l = c.length; i < l; i++){ 117 for(var i = 0, l = c.length; i < l; i++){
diff --git a/frontend/gamma/js/Clipperz/YUI/Utils.js b/frontend/gamma/js/Clipperz/YUI/Utils.js
index 4d4a5f9..e9929fc 100644
--- a/frontend/gamma/js/Clipperz/YUI/Utils.js
+++ b/frontend/gamma/js/Clipperz/YUI/Utils.js
@@ -1,98 +1,95 @@
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 YAHOO == 'undefined') { YAHOO = {}; }; 26if (typeof YAHOO == 'undefined') { YAHOO = {}; };
30if (typeof YAHOO.util == 'undefined') { YAHOO.util = {}; }; 27if (typeof YAHOO.util == 'undefined') { YAHOO.util = {}; };
31if (typeof YAHOO.util.Dom == 'undefined') { YAHOO.util.Dom = {}; }; 28if (typeof YAHOO.util.Dom == 'undefined') { YAHOO.util.Dom = {}; };
32 29
33YAHOO.extend = function(subc, superc, overrides) { 30YAHOO.extend = function(subc, superc, overrides) {
34 var F = function() {}; 31 var F = function() {};
35 F.prototype=superc.prototype; 32 F.prototype=superc.prototype;
36 subc.prototype=new F(); 33 subc.prototype=new F();
37 subc.prototype.constructor=subc; 34 subc.prototype.constructor=subc;
38 subc.superclass=superc.prototype; 35 subc.superclass=superc.prototype;
39 if (superc.prototype.constructor == Object.prototype.constructor) { 36 if (superc.prototype.constructor == Object.prototype.constructor) {
40 superc.prototype.constructor=superc; 37 superc.prototype.constructor=superc;
41 } 38 }
42 39
43 if (overrides) { 40 if (overrides) {
44 for (var i in overrides) { 41 for (var i in overrides) {
45 subc.prototype[i]=overrides[i]; 42 subc.prototype[i]=overrides[i];
46 } 43 }
47 } 44 }
48}; 45};
49 46
50YAHOO.override = function(origclass, overrides){ 47YAHOO.override = function(origclass, overrides){
51 if(overrides){ 48 if(overrides){
52 var p = origclass.prototype; 49 var p = origclass.prototype;
53 for(var method in overrides){ 50 for(var method in overrides){
54 p[method] = overrides[method]; 51 p[method] = overrides[method];
55 } 52 }
56 } 53 }
57}; 54};
58 55
59YAHOO.extendX = function(subclass, superclass, overrides){ 56YAHOO.extendX = function(subclass, superclass, overrides){
60 YAHOO.extend(subclass, superclass); 57 YAHOO.extend(subclass, superclass);
61 subclass.override = function(o){ 58 subclass.override = function(o){
62 YAHOO.override(subclass, o); 59 YAHOO.override(subclass, o);
63 }; 60 };
64 if(!subclass.prototype.override){ 61 if(!subclass.prototype.override){
65 subclass.prototype.override = function(o){ 62 subclass.prototype.override = function(o){
66 for(var method in o){ 63 for(var method in o){
67 this[method] = o[method]; 64 this[method] = o[method];
68 } 65 }
69 }; 66 };
70 } 67 }
71 if(overrides){ 68 if(overrides){
72 subclass.override(overrides); 69 subclass.override(overrides);
73 }; 70 };
74 71
75}; 72};
76 73
77YAHOO.util.Dom.get = function(el) { 74YAHOO.util.Dom.get = function(el) {
78 if (!el) { return null; } // nothing to work with 75 if (!el) { return null; } // nothing to work with
79 76
80 if (typeof el != 'string' && !(el instanceof Array) ) { // assuming HTMLElement or HTMLCollection, so pass back as is 77 if (typeof el != 'string' && !(el instanceof Array) ) { // assuming HTMLElement or HTMLCollection, so pass back as is
81 return el; 78 return el;
82 } 79 }
83 80
84 if (typeof el == 'string') { // ID 81 if (typeof el == 'string') { // ID
85 return document.getElementById(el); 82 return document.getElementById(el);
86 } 83 }
87 else { // array of ID's and/or elements 84 else { // array of ID's and/or elements
88 var collection = []; 85 var collection = [];
89 for (var i = 0, len = el.length; i < len; ++i) { 86 for (var i = 0, len = el.length; i < len; ++i) {
90 collection[collection.length] = YAHOO.util.Dom.get(el[i]); 87 collection[collection.length] = YAHOO.util.Dom.get(el[i]);
91 } 88 }
92 89
93 return collection; 90 return collection;
94 } 91 }
95 92
96 return null; // safety, should never happen 93 return null; // safety, should never happen
97}; 94};
98 95
diff --git a/frontend/gamma/js/main.js b/frontend/gamma/js/main.js
index abb178f..352c4c7 100644
--- a/frontend/gamma/js/main.js
+++ b/frontend/gamma/js/main.js
@@ -1,109 +1,106 @@
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
29function _pm_logEvent(anEvent) { 26function _pm_logEvent(anEvent) {
30 //console.log("####", anEvent); 27 //console.log("####", anEvent);
31 28
32 anEvent.preventDefault(); 29 anEvent.preventDefault();
33} 30}
34 31
35function handleGenericDeferredError(anError) { 32function handleGenericDeferredError(anError) {
36 var result; 33 var result;
37 34
38 if (anError instanceof MochiKit.Async.CancelledError) { 35 if (anError instanceof MochiKit.Async.CancelledError) {
39 result = anError; 36 result = anError;
40 } else { 37 } else {
41MochiKit.Logging.logError("## MainController - GENERIC ERROR" + "\n" + "==>> " + anError + " <<==\n" + anError.stack); 38MochiKit.Logging.logError("## MainController - GENERIC ERROR" + "\n" + "==>> " + anError + " <<==\n" + anError.stack);
42//console.log(anError); 39//console.log(anError);
43 result = new MochiKit.Async.CancelledError(anError); 40 result = new MochiKit.Async.CancelledError(anError);
44 } 41 }
45 42
46 return result; 43 return result;
47} 44}
48 45
49 46
50Clipperz.PM.RunTime = {}; 47Clipperz.PM.RunTime = {};
51 48
52 49
53function run() { 50function run() {
54 var shouldShowRegistrationForm; 51 var shouldShowRegistrationForm;
55 var useCompactDesign; 52 var useCompactDesign;
56 var controllerParameters; 53 var controllerParameters;
57 //var iPhoneDesign; 54 //var iPhoneDesign;
58 55
59 //MochiKit.Signal.connect(document.body, 'onkeydown', _pm_logEvent); 56 //MochiKit.Signal.connect(document.body, 'onkeydown', _pm_logEvent);
60 //MochiKit.Signal.connect(document.body, 'onkeypress', _pm_logEvent); 57 //MochiKit.Signal.connect(document.body, 'onkeypress', _pm_logEvent);
61 //MochiKit.Signal.connect(document.body, 'onclick', _pm_logEvent); 58 //MochiKit.Signal.connect(document.body, 'onclick', _pm_logEvent);
62 59
63 controllerParameters = {}; 60 controllerParameters = {};
64 61
65 MochiKit.DOM.removeElement('javaScriptAlert'); 62 MochiKit.DOM.removeElement('javaScriptAlert');
66 Clipperz.PM.Strings.Languages.initSetup(); 63 Clipperz.PM.Strings.Languages.initSetup();
67 64
68 if (window.location.search.indexOf('registration') != -1) { 65 if (window.location.search.indexOf('registration') != -1) {
69 shouldShowRegistrationForm = true; 66 shouldShowRegistrationForm = true;
70 } else { 67 } else {
71 shouldShowRegistrationForm = false; 68 shouldShowRegistrationForm = false;
72 } 69 }
73 70
74 if (window.location.search.indexOf('autocomplete') != -1) { 71 if (window.location.search.indexOf('autocomplete') != -1) {
75 controllerParameters['autocomplete'] = 'on' 72 controllerParameters['autocomplete'] = 'on'
76 } 73 }
77 74
78 //if ((window.location.search.indexOf('iPhone') != -1) || (navigator.userAgent.match('iPhone'))) { 75 //if ((window.location.search.indexOf('iPhone') != -1) || (navigator.userAgent.match('iPhone'))) {
79 // iPhoneDesign = true; 76 // iPhoneDesign = true;
80 //} else { 77 //} else {
81 // iPhoneDesign = false; 78 // iPhoneDesign = false;
82 //} 79 //}
83 80
84 if (window.location.search.indexOf('compact') != -1) { 81 if (window.location.search.indexOf('compact') != -1) {
85 useCompactDesign = true; 82 useCompactDesign = true;
86 } else { 83 } else {
87 useCompactDesign = false; 84 useCompactDesign = false;
88 } 85 }
89 86
90 if (useCompactDesign == true) { 87 if (useCompactDesign == true) {
91 Clipperz.PM.RunTime.mainController = new Clipperz.PM.UI.Compact.Controllers.MainController(controllerParameters); 88 Clipperz.PM.RunTime.mainController = new Clipperz.PM.UI.Compact.Controllers.MainController(controllerParameters);
92 //} else if (iPhoneDesign == true) { 89 //} else if (iPhoneDesign == true) {
93 // Clipperz.PM.RunTime.mainController = new Clipperz.PM.UI.iPhone.Controllers.MainController(); 90 // Clipperz.PM.RunTime.mainController = new Clipperz.PM.UI.iPhone.Controllers.MainController();
94 } else { 91 } else {
95 Clipperz.PM.RunTime.mainController = new Clipperz.PM.UI.Web.Controllers.MainController(controllerParameters); 92 Clipperz.PM.RunTime.mainController = new Clipperz.PM.UI.Web.Controllers.MainController(controllerParameters);
96 } 93 }
97 94
98 Clipperz.PM.RunTime.mainController.run(shouldShowRegistrationForm); 95 Clipperz.PM.RunTime.mainController.run(shouldShowRegistrationForm);
99 96
100//Clipperz.log("HASH: " + window.location.hash); 97//Clipperz.log("HASH: " + window.location.hash);
101if (window.location.hash != "") { 98if (window.location.hash != "") {
102 window.location.hash = "" 99 window.location.hash = ""
103} 100}
104//Clipperz.log("HASH cleaned"); 101//Clipperz.log("HASH cleaned");
105 //#credentials=base64encoded({username:'joe', passphrase:'clipperz'}) 102 //#credentials=base64encoded({username:'joe', passphrase:'clipperz'})
106 //MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'doLogin', {username:'joe', passphrase:'clipperz'}); 103 //MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'doLogin', {username:'joe', passphrase:'clipperz'});
107} 104}
108 105
109MochiKit.DOM.addLoadEvent(run); 106MochiKit.DOM.addLoadEvent(run);
diff --git a/frontend/gamma/js/main_iPhone.js b/frontend/gamma/js/main_iPhone.js
index f13e95c..0644f68 100644
--- a/frontend/gamma/js/main_iPhone.js
+++ b/frontend/gamma/js/main_iPhone.js
@@ -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
29function _pm_logEvent(anEvent) { 26function _pm_logEvent(anEvent) {
30 //console.log("####", anEvent); 27 //console.log("####", anEvent);
31 28
32 anEvent.preventDefault(); 29 anEvent.preventDefault();
33} 30}
34 31
35function handleGenericDeferredError(anError) { 32function handleGenericDeferredError(anError) {
36 var result; 33 var result;
37 34
38 if (anError instanceof MochiKit.Async.CancelledError) { 35 if (anError instanceof MochiKit.Async.CancelledError) {
39 result = anError; 36 result = anError;
40 } else { 37 } else {
41MochiKit.Logging.logError("## MainController - GENERIC ERROR" + "\n" + "==>> " + anError + " <<==\n" + anError.stack); 38MochiKit.Logging.logError("## MainController - GENERIC ERROR" + "\n" + "==>> " + anError + " <<==\n" + anError.stack);
42 result = new MochiKit.Async.CancelledError(anError); 39 result = new MochiKit.Async.CancelledError(anError);
43 } 40 }
44 41
45 return result; 42 return result;
46} 43}
47 44
48 45
49Clipperz.PM.RunTime = {}; 46Clipperz.PM.RunTime = {};
50 47
51 48
52function run() { 49function run() {
53 MochiKit.DOM.removeElement('javaScriptAlert'); 50 MochiKit.DOM.removeElement('javaScriptAlert');
54 Clipperz.PM.Strings.Languages.initSetup(); 51 Clipperz.PM.Strings.Languages.initSetup();
55 52
56 Clipperz.PM.RunTime.mainController = new Clipperz.PM.UI.iPhone.Controllers.MainController(); 53 Clipperz.PM.RunTime.mainController = new Clipperz.PM.UI.iPhone.Controllers.MainController();
57 Clipperz.PM.RunTime.mainController.run(false); 54 Clipperz.PM.RunTime.mainController.run(false);
58} 55}
59 56
60MochiKit.DOM.addLoadEvent(run); 57MochiKit.DOM.addLoadEvent(run);
diff --git a/frontend/gamma/tests/SimpleTest/SimpleTest.Async.js b/frontend/gamma/tests/SimpleTest/SimpleTest.Async.js
index 040cdbf..3633182 100644
--- a/frontend/gamma/tests/SimpleTest/SimpleTest.Async.js
+++ b/frontend/gamma/tests/SimpleTest/SimpleTest.Async.js
@@ -1,120 +1,117 @@
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
29MochiKit.Base.update(Clipperz.Async.Deferred.prototype, { 26MochiKit.Base.update(Clipperz.Async.Deferred.prototype, {
30/* 27/*
31 '_addTest': function(anExpectedValue, aDescription, isDeep, aResult) { 28 '_addTest': function(anExpectedValue, aDescription, isDeep, aResult) {
32 if (isDeep) { 29 if (isDeep) {
33 SimpleTest.isDeeply(aResult, anExpectedValue, aDescription); 30 SimpleTest.isDeeply(aResult, anExpectedValue, aDescription);
34 } else { 31 } else {
35 SimpleTest.is(aResult, anExpectedValue, aDescription); 32 SimpleTest.is(aResult, anExpectedValue, aDescription);
36 } 33 }
37 34
38 return aResult; 35 return aResult;
39 }, 36 },
40*/ 37*/
41 'addTest': function (anExpectedValue, aDescription, isDeep) { 38 'addTest': function (anExpectedValue, aDescription, isDeep) {
42 // this.addMethod(this, '_addTest', anExpectedValue, aDescription, isDeep); 39 // this.addMethod(this, '_addTest', anExpectedValue, aDescription, isDeep);
43 // this.addCallback(Clipperz.Async.test, anExpectedValue, aDescription, isDeep); 40 // this.addCallback(Clipperz.Async.test, anExpectedValue, aDescription, isDeep);
44 41
45 if (isDeep) { 42 if (isDeep) {
46 // SimpleTest.isDeeply(aResult, anExpectedValue, aDescription); 43 // SimpleTest.isDeeply(aResult, anExpectedValue, aDescription);
47 this.addCallback(Clipperz.Async.Test.isDeeply(anExpectedValue, aDescription)); 44 this.addCallback(Clipperz.Async.Test.isDeeply(anExpectedValue, aDescription));
48 } else { 45 } else {
49 // SimpleTest.is(aResult, anExpectedValue, aDescription); 46 // SimpleTest.is(aResult, anExpectedValue, aDescription);
50 this.addCallback(Clipperz.Async.Test.is(anExpectedValue, aDescription)); 47 this.addCallback(Clipperz.Async.Test.is(anExpectedValue, aDescription));
51 } 48 }
52 }, 49 },
53 50
54 //------------------------------------------------------------------------- 51 //-------------------------------------------------------------------------
55 52
56 'shouldSucceed': function (aDescription) { 53 'shouldSucceed': function (aDescription) {
57 this.addCallbackPass(SimpleTest.ok, true, aDescription); 54 this.addCallbackPass(SimpleTest.ok, true, aDescription);
58 this.addErrbackPass (SimpleTest.ok, false, aDescription); 55 this.addErrbackPass (SimpleTest.ok, false, aDescription);
59 this.addBoth(MochiKit.Async.succeed, null); 56 this.addBoth(MochiKit.Async.succeed, null);
60 }, 57 },
61 58
62 'shouldFail': function (aDescription) { 59 'shouldFail': function (aDescription) {
63 this.addCallbackPass(SimpleTest.ok, false, aDescription); 60 this.addCallbackPass(SimpleTest.ok, false, aDescription);
64 this.addErrbackPass (SimpleTest.ok, true, aDescription); 61 this.addErrbackPass (SimpleTest.ok, true, aDescription);
65 this.addBoth(MochiKit.Async.succeed, null); 62 this.addBoth(MochiKit.Async.succeed, null);
66 }, 63 },
67 64
68 //------------------------------------------------------------------------- 65 //-------------------------------------------------------------------------
69 66
70}); 67});
71 68
72 69
73Clipperz.Async.Test = {}; 70Clipperz.Async.Test = {};
74MochiKit.Base.update(Clipperz.Async.Test, { 71MochiKit.Base.update(Clipperz.Async.Test, {
75 72
76 'is': function (anExpectedResult, aDescription) { 73 'is': function (anExpectedResult, aDescription) {
77 return MochiKit.Base.partial(function (anExpectedResult, aDescription, aResult) { 74 return MochiKit.Base.partial(function (anExpectedResult, aDescription, aResult) {
78 SimpleTest.is(aResult, anExpectedResult, aDescription); 75 SimpleTest.is(aResult, anExpectedResult, aDescription);
79 76
80 return aResult; 77 return aResult;
81 }, anExpectedResult, aDescription); 78 }, anExpectedResult, aDescription);
82 }, 79 },
83 80
84 //------------------------------------------------------------------------- 81 //-------------------------------------------------------------------------
85 82
86 'ok': function (aDescription) { 83 'ok': function (aDescription) {
87 return MochiKit.Base.partial(function (aDescription, aResult) { 84 return MochiKit.Base.partial(function (aDescription, aResult) {
88 SimpleTest.ok(aResult, aDescription); 85 SimpleTest.ok(aResult, aDescription);
89 86
90 return aResult; 87 return aResult;
91 }, aDescription); 88 }, aDescription);
92 }, 89 },
93 90
94 //------------------------------------------------------------------------- 91 //-------------------------------------------------------------------------
95 92
96 'fail': function(aDescription) { 93 'fail': function(aDescription) {
97 return MochiKit.Base.partial(function (aDescription, aResult) { 94 return MochiKit.Base.partial(function (aDescription, aResult) {
98 SimpleTest.ok(!aResult, aDescription); 95 SimpleTest.ok(!aResult, aDescription);
99 96
100 return aResult; 97 return aResult;
101 }, aDescription); 98 }, aDescription);
102 }, 99 },
103 100
104 //------------------------------------------------------------------------- 101 //-------------------------------------------------------------------------
105 102
106 'isDeeply': function (anExpectedResult, aDescription) { 103 'isDeeply': function (anExpectedResult, aDescription) {
107 return MochiKit.Base.partial(function (anExpectedResult, aDescription, aResult) { 104 return MochiKit.Base.partial(function (anExpectedResult, aDescription, aResult) {
108 SimpleTest.isDeeply(aResult, anExpectedResult, aDescription); 105 SimpleTest.isDeeply(aResult, anExpectedResult, aDescription);
109 106
110 return aResult; 107 return aResult;
111 }, anExpectedResult, aDescription); 108 }, anExpectedResult, aDescription);
112 }, 109 },
113 110
114 //------------------------------------------------------------------------- 111 //-------------------------------------------------------------------------
115 __syntaxFix__: "syntax fix" 112 __syntaxFix__: "syntax fix"
116}); 113});
117 114
118 115
119SimpleTest.runDeferredTests = function (aName, aTestSet, aTestArguments) { 116SimpleTest.runDeferredTests = function (aName, aTestSet, aTestArguments) {
120 try { 117 try {
diff --git a/frontend/gamma/tests/index.html b/frontend/gamma/tests/index.html
index 865f8f1..ef89088 100755
--- a/frontend/gamma/tests/index.html
+++ b/frontend/gamma/tests/index.html
@@ -1,56 +1,53 @@
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<html> 26<html>
30<head> 27<head>
31 <script type="text/javascript" src="../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../js/MochiKit/MochiKit.js"></script>
32 <script type="text/javascript" src="./SimpleTest/TestRunner.js"></script> 29 <script type="text/javascript" src="./SimpleTest/TestRunner.js"></script>
33</head> 30</head>
34<body> 31<body>
35<script type="text/javascript"> 32<script type="text/javascript">
36TestRunner.runTests( 33TestRunner.runTests(
37/* 34/*
38 //'tests/Clipperz/Base.html', 35 //'tests/Clipperz/Base.html',
39 //'tests/Clipperz/Set.html', 36 //'tests/Clipperz/Set.html',
40 'tests/Clipperz/index.html', 37 'tests/Clipperz/index.html',
41 38
42 //'tests/Clipperz/Crypto/Base.html', 39 //'tests/Clipperz/Crypto/Base.html',
43 //'tests/Clipperz/Crypto/BigInt.html', 40 //'tests/Clipperz/Crypto/BigInt.html',
44 //'tests/Clipperz/Crypto/SRP.html' 41 //'tests/Clipperz/Crypto/SRP.html'
45 'tests/Clipperz/Crypto/index.html', 42 'tests/Clipperz/Crypto/index.html',
46 'tests/Clipperz/PM/index.html', 43 'tests/Clipperz/PM/index.html',
47 'tests/Clipperz/PM/DataModel/index.html' 44 'tests/Clipperz/PM/DataModel/index.html'
48*/ 45*/
49 46
50 'tests/index.html' 47 'tests/index.html'
51 48
52 49
53); 50);
54</script> 51</script>
55</body> 52</body>
56</html> \ No newline at end of file 53</html> \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Bookmarklet/Bookmarklet.css b/frontend/gamma/tests/tests/Bookmarklet/Bookmarklet.css
index 3847475..fd79d8a 100644
--- a/frontend/gamma/tests/tests/Bookmarklet/Bookmarklet.css
+++ b/frontend/gamma/tests/tests/Bookmarklet/Bookmarklet.css
@@ -1,120 +1,117 @@
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:8000/tests/js/tests/Bookmarklet/Bookmarklet.css 27 http://localhost:8000/tests/js/tests/Bookmarklet/Bookmarklet.css
31 http://www.clipperz.com/files/clipperz.com/bookmarklet/0.3.0/Bookmarklet.css 28 http://www.clipperz.com/files/clipperz.com/bookmarklet/0.3.0/Bookmarklet.css
32*/ 29*/
33 30
34div#clipperzBookmarklet { 31div#clipperzBookmarklet {
35 margin: 0; 32 margin: 0;
36 padding: 0; 33 padding: 0;
37 border: 0; 34 border: 0;
38 outline: 0; 35 outline: 0;
39 font-size: 100%; 36 font-size: 100%;
40 vertical-align: baseline; 37 vertical-align: baseline;
41 background: transparent; 38 background: transparent;
42 39
43 position: absolute; 40 position: absolute;
44 top: 80px; 41 top: 80px;
45 left: 100px; 42 left: 100px;
46 width: 202px; 43 width: 202px;
47 height: 202px; 44 height: 202px;
48 background: url(./background.png) no-repeat; 45 background: url(./background.png) no-repeat;
49} 46}
50 47
51div#clipperzBookmarklet div#clipperzBookmarkletClose { 48div#clipperzBookmarklet div#clipperzBookmarkletClose {
52 margin: 0; 49 margin: 0;
53 padding: 0; 50 padding: 0;
54 border: 0; 51 border: 0;
55 outline: 0; 52 outline: 0;
56 font-size: 100%; 53 font-size: 100%;
57 vertical-align: baseline; 54 vertical-align: baseline;
58 background: transparent; 55 background: transparent;
59 56
60 position: absolute; 57 position: absolute;
61 left: 168px; 58 left: 168px;
62 top: 5px; 59 top: 5px;
63 width: 25px; 60 width: 25px;
64 height: 25px; 61 height: 25px;
65 background: url(./close.png) no-repeat; 62 background: url(./close.png) no-repeat;
66} 63}
67 64
68div#clipperzBookmarklet div#clipperzBookmarkletClose:hover { 65div#clipperzBookmarklet div#clipperzBookmarkletClose:hover {
69 background: url(./close_selected.png) no-repeat; 66 background: url(./close_selected.png) no-repeat;
70 cursor: pointer; 67 cursor: pointer;
71} 68}
72 69
73div#clipperzBookmarklet div#clipperzBookmarkletResult { 70div#clipperzBookmarklet div#clipperzBookmarkletResult {
74 margin: 0; 71 margin: 0;
75 padding: 0; 72 padding: 0;
76 border: 0; 73 border: 0;
77 outline: 0; 74 outline: 0;
78 font-size: 100%; 75 font-size: 100%;
79 vertical-align: baseline; 76 vertical-align: baseline;
80 background: transparent; 77 background: transparent;
81 78
82 position: absolute; 79 position: absolute;
83 width: 145px; 80 width: 145px;
84 top: 61px; 81 top: 61px;
85 left: 27px; 82 left: 27px;
86 height: 63px; 83 height: 63px;
87 overflow: hidden; 84 overflow: hidden;
88} 85}
89 86
90div#clipperzBookmarklet div#clipperzBookmarkletResultIcon { 87div#clipperzBookmarklet div#clipperzBookmarkletResultIcon {
91 margin: 0; 88 margin: 0;
92 padding: 0; 89 padding: 0;
93 border: 0; 90 border: 0;
94 outline: 0; 91 outline: 0;
95 font-size: 100%; 92 font-size: 100%;
96 vertical-align: baseline; 93 vertical-align: baseline;
97 94
98 width: 28px; 95 width: 28px;
99 height: 35px; 96 height: 35px;
100 position: absolute; 97 position: absolute;
101} 98}
102 99
103div#clipperzBookmarklet div#clipperzBookmarkletResultIcon.ok { 100div#clipperzBookmarklet div#clipperzBookmarkletResultIcon.ok {
104 background: transparent url(./info.png); 101 background: transparent url(./info.png);
105} 102}
106 103
107div#clipperzBookmarklet div#clipperzBookmarkletResultIcon.fail { 104div#clipperzBookmarklet div#clipperzBookmarkletResultIcon.fail {
108 background: transparent url(./error.png); 105 background: transparent url(./error.png);
109} 106}
110 107
111div#clipperzBookmarklet div#clipperzBookmarkletResult p { 108div#clipperzBookmarklet div#clipperzBookmarkletResult p {
112 margin: 0; 109 margin: 0;
113 padding: 0; 110 padding: 0;
114 border: 0; 111 border: 0;
115 outline: 0; 112 outline: 0;
116 font-size: 100%; 113 font-size: 100%;
117 vertical-align: baseline; 114 vertical-align: baseline;
118 background: transparent; 115 background: transparent;
119 116
120 font-family: Helvetica, Arial, Geneva, sans-serif; 117 font-family: Helvetica, Arial, Geneva, sans-serif;
diff --git a/frontend/gamma/tests/tests/Bookmarklet/Fail.html b/frontend/gamma/tests/tests/Bookmarklet/Fail.html
index 9a95bad..d3d1ec9 100644
--- a/frontend/gamma/tests/tests/Bookmarklet/Fail.html
+++ b/frontend/gamma/tests/tests/Bookmarklet/Fail.html
@@ -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
29<html> 26<html>
30<head> 27<head>
31 <title>Bookmarlet TEST - fail</title> 28 <title>Bookmarlet TEST - fail</title>
32 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 29 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
33 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script> 30 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script>
34 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css"> 31 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css">
35 32
36 <!-- link rel="stylesheet" type="text/css" href="./Bookmarklet.css" --> 33 <!-- link rel="stylesheet" type="text/css" href="./Bookmarklet.css" -->
37 <script type='text/javascript' src='../../../js/Bookmarklet.js'></script> 34 <script type='text/javascript' src='../../../js/Bookmarklet.js'></script>
38 <script type='text/javascript' src='../../../../_build/_scratch/bookmarklet_test.js'></script> 35 <script type='text/javascript' src='../../../../_build/_scratch/bookmarklet_test.js'></script>
39</head> 36</head>
40<body> 37<body>
41 38
42<!-- TWITTER Login Form --> 39<!-- TWITTER Login Form -->
43<!-- form id="signin" action="https://twitter.com/sessions" method="post"> 40<!-- form id="signin" action="https://twitter.com/sessions" method="post">
44 <input id="authenticity_token" type="hidden" value="a3a9abfa089122e4b437736313e54f2a25911101" name="authenticity_token"/> 41 <input id="authenticity_token" type="hidden" value="a3a9abfa089122e4b437736313e54f2a25911101" name="authenticity_token"/>
45 <fieldset class="common-form standard-form"> 42 <fieldset class="common-form standard-form">
46 <legend>Please sign in</legend> 43 <legend>Please sign in</legend>
47 <p> 44 <p>
48 <label class="inside" for="username" tabindex="1">user name or email address:</label> 45 <label class="inside" for="username" tabindex="1">user name or email address:</label>
49 <input id="username" type="text" title="username" value="" name="session[username_or_email]"/> 46 <input id="username" type="text" title="username" value="" name="session[username_or_email]"/>
50 </p> 47 </p>
51 <p> 48 <p>
52 <label class="inside" for="password" tabindex="2">password:</label> 49 <label class="inside" for="password" tabindex="2">password:</label>
53 <input id="password" type="password" title="password" value="" name="session[password]"/> 50 <input id="password" type="password" title="password" value="" name="session[password]"/>
54 </p> 51 </p>
55 <p class="remember"></p> 52 <p class="remember"></p>
56 <p class="submit"></p> 53 <p class="submit"></p>
57 <p class="forgot"></p> 54 <p class="forgot"></p>
58 <p class="complete"></p> 55 <p class="complete"></p>
59 </fieldset> 56 </fieldset>
60</form --> 57</form -->
61 58
62<!-- ###################################################################### --> 59<!-- ###################################################################### -->
63<!-- 60<!--
64<div id="clipperzBookmarklet" style=""> 61<div id="clipperzBookmarklet" style="">
65 <div id="clipperzBookmarkletResult" style=""><p>The direct login configuration has been collected.</p></div> 62 <div id="clipperzBookmarkletResult" style=""><p>The direct login configuration has been collected.</p></div>
66 <div id="clipperzBookmarletButton" style=""></div> 63 <div id="clipperzBookmarletButton" style=""></div>
67 <div id="clipperzBookmarletAfterCopyHint" style=""><p>Now you can return to the Clipperz main interface and create a new card</p></div> 64 <div id="clipperzBookmarletAfterCopyHint" style=""><p>Now you can return to the Clipperz main interface and create a new card</p></div>
68</div> 65</div>
69--> 66-->
70<!-- 67<!--
71<div id="clipperzBookmarklet"> 68<div id="clipperzBookmarklet">
72 <div id="clipperzBookmarkletResult"><div id="clipperzBookmarkletResultIcon"></div><p id="clipperzBookmarkletResultText"></p></div> 69 <div id="clipperzBookmarkletResult"><div id="clipperzBookmarkletResultIcon"></div><p id="clipperzBookmarkletResultText"></p></div>
73 <div id="clipperzBookmarletButton"></div> 70 <div id="clipperzBookmarletButton"></div>
74 <div id="clipperzBookmarletAfterCopyHint"><p id="clipperzBookmarkletHintText"></p></div> 71 <div id="clipperzBookmarletAfterCopyHint"><p id="clipperzBookmarkletHintText"></p></div>
75</div> 72</div>
76--> 73-->
77 74
78 75
79<!-- ###################################################################### --> 76<!-- ###################################################################### -->
80 77
81<pre id="test"> 78<pre id="test">
82<script type="text/javascript"> 79<script type="text/javascript">
83try { 80try {
84 runBookmarklet(); 81 runBookmarklet();
85 // varparameters; 82 // varparameters;
86 //runBookmarklet(); 83 //runBookmarklet();
87 84
88 //parameters = getLoginFormConfiguration(); 85 //parameters = getLoginFormConfiguration();
89 86
90 // SimpleTest.ok(parameters != null, "The bookmarklet returns something useful"); 87 // SimpleTest.ok(parameters != null, "The bookmarklet returns something useful");
91 // SimpleTest.ok(bookmarkletClip != null,"The clipboard bridge has been created"); 88 // SimpleTest.ok(bookmarkletClip != null,"The clipboard bridge has been created");
92 // SimpleTest.ok(bookmarkletClip.ready,"The clipboard bridge has been created AND is ready"); 89 // SimpleTest.ok(bookmarkletClip.ready,"The clipboard bridge has been created AND is ready");
93 SimpleTest.ok(true, "no exception raised"); 90 SimpleTest.ok(true, "no exception raised");
94 91
95} catch (err) { 92} catch (err) {
96 93
97 var s = "test suite failure!\n"; 94 var s = "test suite failure!\n";
98 var o = {}; 95 var o = {};
99 var k = null; 96 var k = null;
100 for (k in err) { 97 for (k in err) {
101 // ensure unique keys?! 98 // ensure unique keys?!
102 if (!o[k]) { 99 if (!o[k]) {
103 s += k + ": " + err[k] + "\n"; 100 s += k + ": " + err[k] + "\n";
104 o[k] = err[k]; 101 o[k] = err[k];
105 } 102 }
106 } 103 }
107 ok ( false, s ); 104 ok ( false, s );
108} 105}
109 106
110</script> 107</script>
111</pre> 108</pre>
112</body> 109</body>
113</html> 110</html>
diff --git a/frontend/gamma/tests/tests/Bookmarklet/Twitter.html b/frontend/gamma/tests/tests/Bookmarklet/Twitter.html
index c9ee827..27dc6a1 100644
--- a/frontend/gamma/tests/tests/Bookmarklet/Twitter.html
+++ b/frontend/gamma/tests/tests/Bookmarklet/Twitter.html
@@ -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
29<html> 26<html>
30<head> 27<head>
31 <title>Bookmarlet TEST - ok</title> 28 <title>Bookmarlet TEST - ok</title>
32 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 29 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
33 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script> 30 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script>
34 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css"> 31 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css">
35 32
36 <!-- link rel="stylesheet" type="text/css" href="./Bookmarklet.css" --> 33 <!-- link rel="stylesheet" type="text/css" href="./Bookmarklet.css" -->
37 <script type='text/javascript' src='../../../js/Bookmarklet.js'></script> 34 <script type='text/javascript' src='../../../js/Bookmarklet.js'></script>
38 <script type='text/javascript' src='../../../../_build/_scratch/bookmarklet_test.js'></script> 35 <script type='text/javascript' src='../../../../_build/_scratch/bookmarklet_test.js'></script>
39</head> 36</head>
40<body> 37<body>
41 38
42<!-- TWITTER Login Form --> 39<!-- TWITTER Login Form -->
43<form id="signin" action="https://twitter.com/sessions" method="post"> 40<form id="signin" action="https://twitter.com/sessions" method="post">
44 <input id="authenticity_token" type="hidden" value="a3a9abfa089122e4b437736313e54f2a25911101" name="authenticity_token"/> 41 <input id="authenticity_token" type="hidden" value="a3a9abfa089122e4b437736313e54f2a25911101" name="authenticity_token"/>
45 <fieldset class="common-form standard-form"> 42 <fieldset class="common-form standard-form">
46 <legend>Please sign in</legend> 43 <legend>Please sign in</legend>
47 <p> 44 <p>
48 <label class="inside" for="username" tabindex="1">user name or email address:</label> 45 <label class="inside" for="username" tabindex="1">user name or email address:</label>
49 <input id="username" type="text" title="username" value="" name="session[username_or_email]"/> 46 <input id="username" type="text" title="username" value="" name="session[username_or_email]"/>
50 </p> 47 </p>
51 <p> 48 <p>
52 <label class="inside" for="password" tabindex="2">password:</label> 49 <label class="inside" for="password" tabindex="2">password:</label>
53 <input id="password" type="password" title="password" value="" name="session[password]"/> 50 <input id="password" type="password" title="password" value="" name="session[password]"/>
54 </p> 51 </p>
55 <p class="remember"></p> 52 <p class="remember"></p>
56 <p class="submit"></p> 53 <p class="submit"></p>
57 <p class="forgot"></p> 54 <p class="forgot"></p>
58 <p class="complete"></p> 55 <p class="complete"></p>
59 </fieldset> 56 </fieldset>
60</form> 57</form>
61 58
62<!-- ###################################################################### --> 59<!-- ###################################################################### -->
63<!-- 60<!--
64<div id="clipperzBookmarklet" style=""> 61<div id="clipperzBookmarklet" style="">
65 <div id="clipperzBookmarkletResult" style=""><p>The direct login configuration has been collected.</p></div> 62 <div id="clipperzBookmarkletResult" style=""><p>The direct login configuration has been collected.</p></div>
66 <div id="clipperzBookmarletButton" style=""></div> 63 <div id="clipperzBookmarletButton" style=""></div>
67 <div id="clipperzBookmarletAfterCopyHint" style=""><p>Now you can return to the Clipperz main interface and create a new card</p></div> 64 <div id="clipperzBookmarletAfterCopyHint" style=""><p>Now you can return to the Clipperz main interface and create a new card</p></div>
68</div> 65</div>
69--> 66-->
70<!-- 67<!--
71<div id="clipperzBookmarklet"> 68<div id="clipperzBookmarklet">
72 <div id="clipperzBookmarkletResult"><div id="clipperzBookmarkletResultIcon"></div><p id="clipperzBookmarkletResultText"></p></div> 69 <div id="clipperzBookmarkletResult"><div id="clipperzBookmarkletResultIcon"></div><p id="clipperzBookmarkletResultText"></p></div>
73 <div id="clipperzBookmarletButton"></div> 70 <div id="clipperzBookmarletButton"></div>
74 <div id="clipperzBookmarletAfterCopyHint"><p id="clipperzBookmarkletHintText"></p></div> 71 <div id="clipperzBookmarletAfterCopyHint"><p id="clipperzBookmarkletHintText"></p></div>
75</div> 72</div>
76--> 73-->
77 74
78 75
79<!-- ###################################################################### --> 76<!-- ###################################################################### -->
80 77
81<pre id="test"> 78<pre id="test">
82<script type="text/javascript"> 79<script type="text/javascript">
83try { 80try {
84 runBookmarklet(); 81 runBookmarklet();
85 // varparameters; 82 // varparameters;
86 //runBookmarklet(); 83 //runBookmarklet();
87 84
88 //parameters = getLoginFormConfiguration(); 85 //parameters = getLoginFormConfiguration();
89 86
90 // SimpleTest.ok(parameters != null, "The bookmarklet returns something useful"); 87 // SimpleTest.ok(parameters != null, "The bookmarklet returns something useful");
91 // SimpleTest.ok(bookmarkletClip != null,"The clipboard bridge has been created"); 88 // SimpleTest.ok(bookmarkletClip != null,"The clipboard bridge has been created");
92 // SimpleTest.ok(bookmarkletClip.ready,"The clipboard bridge has been created AND is ready"); 89 // SimpleTest.ok(bookmarkletClip.ready,"The clipboard bridge has been created AND is ready");
93 SimpleTest.ok(true, "no exception raised"); 90 SimpleTest.ok(true, "no exception raised");
94 91
95} catch (err) { 92} catch (err) {
96 93
97 var s = "test suite failure!\n"; 94 var s = "test suite failure!\n";
98 var o = {}; 95 var o = {};
99 var k = null; 96 var k = null;
100 for (k in err) { 97 for (k in err) {
101 // ensure unique keys?! 98 // ensure unique keys?!
102 if (!o[k]) { 99 if (!o[k]) {
103 s += k + ": " + err[k] + "\n"; 100 s += k + ": " + err[k] + "\n";
104 o[k] = err[k]; 101 o[k] = err[k];
105 } 102 }
106 } 103 }
107 ok ( false, s ); 104 ok ( false, s );
108} 105}
109 106
110</script> 107</script>
111</pre> 108</pre>
112</body> 109</body>
113</html> 110</html>
diff --git a/frontend/gamma/tests/tests/Bookmarklet/index.html b/frontend/gamma/tests/tests/Bookmarklet/index.html
index 729bf21..9ee3dec 100644
--- a/frontend/gamma/tests/tests/Bookmarklet/index.html
+++ b/frontend/gamma/tests/tests/Bookmarklet/index.html
@@ -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<html> 26<html>
30<head> 27<head>
31 <title>Complete TEST suite</title> 28 <title>Complete TEST suite</title>
32 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 29 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
33 <script type="text/javascript" src="../../SimpleTest/TestRunner.js"></script> 30 <script type="text/javascript" src="../../SimpleTest/TestRunner.js"></script>
34</head> 31</head>
35<body> 32<body>
36<script> 33<script>
37TestRunner.runTests( 34TestRunner.runTests(
38 'Twitter.html' 35 'Twitter.html'
39); 36);
40</script> 37</script>
41</body> 38</body>
42</html> \ No newline at end of file 39</html> \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Clipperz/Async.html b/frontend/gamma/tests/tests/Clipperz/Async.html
index 02f4de2..6d28fdb 100644
--- a/frontend/gamma/tests/tests/Clipperz/Async.html
+++ b/frontend/gamma/tests/tests/Clipperz/Async.html
@@ -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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.Async - test</title> 28 <title>Clipperz.Async - test</title>
32 29
33 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script> 31 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script>
35 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css"> 32 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css">
36 33
37 <script type='text/javascript' src='../../../js/JSON/json2.js'></script> 34 <script type='text/javascript' src='../../../js/JSON/json2.js'></script>
38 35
39 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script> 36 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script>
40 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script> 37 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script>
41 <script type='text/javascript' src='../../../js/Clipperz/ByteArray.js'></script> 38 <script type='text/javascript' src='../../../js/Clipperz/ByteArray.js'></script>
42 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script> 39 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script>
43 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script> 40 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script>
44 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script> 41 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script>
45</head> 42</head>
46<body> 43<body>
47 44
48<pre id="test"> 45<pre id="test">
49<!--<script type="text/javascript" src="User.data.js"></script>//--> 46<!--<script type="text/javascript" src="User.data.js"></script>//-->
50<script type="text/javascript" src="Async.test.js"></script> 47<script type="text/javascript" src="Async.test.js"></script>
51</pre> 48</pre>
52</body> 49</body>
53</html> 50</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/Async.test.js b/frontend/gamma/tests/tests/Clipperz/Async.test.js
index fa6daca..443130e 100644
--- a/frontend/gamma/tests/tests/Clipperz/Async.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/Async.test.js
@@ -1,120 +1,117 @@
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
29testObject = function (aLabel) { 26testObject = function (aLabel) {
30 this._label = aLabel; 27 this._label = aLabel;
31 this._sibling = null; 28 this._sibling = null;
32} 29}
33 30
34testObject.prototype = { 31testObject.prototype = {
35 'label': function () { 32 'label': function () {
36 return MochiKit.Async.succeed(this._label); 33 return MochiKit.Async.succeed(this._label);
37 }, 34 },
38 35
39 'shouldHit': function () { 36 'shouldHit': function () {
40 var filterRegExp; 37 var filterRegExp;
41 38
42 filterRegExp = new RegExp("hit", "i"); 39 filterRegExp = new RegExp("hit", "i");
43 40
44 return Clipperz.Async.callbacks("testObject.shouldHit", [ 41 return Clipperz.Async.callbacks("testObject.shouldHit", [
45 MochiKit.Base.method(this, 'label'), 42 MochiKit.Base.method(this, 'label'),
46 MochiKit.Base.method(filterRegExp, 'test') 43 MochiKit.Base.method(filterRegExp, 'test')
47 ]); 44 ]);
48 }, 45 },
49 46
50 'sibling': function () { 47 'sibling': function () {
51 return this._sibling; 48 return this._sibling;
52 }, 49 },
53 50
54 'setSibling': function (aSibling) { 51 'setSibling': function (aSibling) {
55 this._sibling = aSibling; 52 this._sibling = aSibling;
56 } 53 }
57 54
58} 55}
59 56
60var tests = { 57var tests = {
61 58
62 //------------------------------------------------------------------------- 59 //-------------------------------------------------------------------------
63 60
64 'succeedingForkedDeferrer_test': function (someTestArgs) { 61 'succeedingForkedDeferrer_test': function (someTestArgs) {
65 var deferredResult; 62 var deferredResult;
66 63
67 deferredResult = new Clipperz.Async.Deferred('Async.test succeedingForkedDeferred', someTestArgs); 64 deferredResult = new Clipperz.Async.Deferred('Async.test succeedingForkedDeferred', someTestArgs);
68 deferredResult.addCallback(Clipperz.Async.forkAndJoin("Async.test succeedingForkedDeferred", 65 deferredResult.addCallback(Clipperz.Async.forkAndJoin("Async.test succeedingForkedDeferred",
69 [ 66 [
70 MochiKit.Base.partial(MochiKit.Async.succeed, 3), 67 MochiKit.Base.partial(MochiKit.Async.succeed, 3),
71 MochiKit.Base.partial(MochiKit.Async.succeed, 2) 68 MochiKit.Base.partial(MochiKit.Async.succeed, 2)
72 ], someTestArgs 69 ], someTestArgs
73 )); 70 ));
74 deferredResult.addCallback(function (anAsyncResult) { 71 deferredResult.addCallback(function (anAsyncResult) {
75 var sum; 72 var sum;
76 73
77 sum = MochiKit.Iter.reduce(MochiKit.Base.operator.add, anAsyncResult); 74 sum = MochiKit.Iter.reduce(MochiKit.Base.operator.add, anAsyncResult);
78 SimpleTest.is(sum, 5, "the sum of all the returned results should be 5"); 75 SimpleTest.is(sum, 5, "the sum of all the returned results should be 5");
79 }); 76 });
80 deferredResult.addErrback(function() { 77 deferredResult.addErrback(function() {
81 SimpleTest.ok(false, "forkAndJoin should succeed and execution path should NOT go through here (1)") 78 SimpleTest.ok(false, "forkAndJoin should succeed and execution path should NOT go through here (1)")
82 }) 79 })
83 deferredResult.callback(); 80 deferredResult.callback();
84 81
85 return deferredResult; 82 return deferredResult;
86 }, 83 },
87 84
88 //------------------------------------------------------------------------- 85 //-------------------------------------------------------------------------
89 86
90 'succeedingForkedAndWaitDeferrer_test': function (someTestArgs) { 87 'succeedingForkedAndWaitDeferrer_test': function (someTestArgs) {
91 var deferredResult; 88 var deferredResult;
92 89
93 deferredResult = new Clipperz.Async.Deferred('succeedingForkedAndWaitDeferrer_test', someTestArgs); 90 deferredResult = new Clipperz.Async.Deferred('succeedingForkedAndWaitDeferrer_test', someTestArgs);
94 deferredResult.addCallback(Clipperz.Async.forkAndJoin("Async.test succeedingForkedAndWaitDeferrer", 91 deferredResult.addCallback(Clipperz.Async.forkAndJoin("Async.test succeedingForkedAndWaitDeferrer",
95 [ 92 [
96 MochiKit.Base.partial(MochiKit.Async.callLater, 2, MochiKit.Async.succeed, 3), 93 MochiKit.Base.partial(MochiKit.Async.callLater, 2, MochiKit.Async.succeed, 3),
97 MochiKit.Base.partial(MochiKit.Async.callLater, 1, MochiKit.Async.succeed, 2), 94 MochiKit.Base.partial(MochiKit.Async.callLater, 1, MochiKit.Async.succeed, 2),
98 MochiKit.Base.partial(MochiKit.Async.callLater, 3, MochiKit.Async.succeed, 7) 95 MochiKit.Base.partial(MochiKit.Async.callLater, 3, MochiKit.Async.succeed, 7)
99 ], someTestArgs 96 ], someTestArgs
100 )); 97 ));
101 deferredResult.addCallback(function (anAsyncResult) { 98 deferredResult.addCallback(function (anAsyncResult) {
102 var sum; 99 var sum;
103 100
104 sum = MochiKit.Iter.reduce(MochiKit.Base.operator.add, anAsyncResult); 101 sum = MochiKit.Iter.reduce(MochiKit.Base.operator.add, anAsyncResult);
105 SimpleTest.is(sum, 12, "the sum of all the returned results should be 12"); 102 SimpleTest.is(sum, 12, "the sum of all the returned results should be 12");
106 }); 103 });
107 deferredResult.addErrback(function() { 104 deferredResult.addErrback(function() {
108 SimpleTest.ok(false, "forkAndJoin should succeed and execution path should NOT go through here (2)") 105 SimpleTest.ok(false, "forkAndJoin should succeed and execution path should NOT go through here (2)")
109 }) 106 })
110 deferredResult.callback(); 107 deferredResult.callback();
111 108
112 return deferredResult; 109 return deferredResult;
113 }, 110 },
114 111
115 //------------------------------------------------------------------------- 112 //-------------------------------------------------------------------------
116 113
117 'failingForkedDeferrer_test': function (someTestArgs) { 114 'failingForkedDeferrer_test': function (someTestArgs) {
118 var deferredResult; 115 var deferredResult;
119 116
120 deferredResult = new Clipperz.Async.Deferred('Async.test failingForkedDeferred', someTestArgs); 117 deferredResult = new Clipperz.Async.Deferred('Async.test failingForkedDeferred', someTestArgs);
diff --git a/frontend/gamma/tests/tests/Clipperz/Base.html b/frontend/gamma/tests/tests/Clipperz/Base.html
index 6b29417..a1b1df8 100644
--- a/frontend/gamma/tests/tests/Clipperz/Base.html
+++ b/frontend/gamma/tests/tests/Clipperz/Base.html
@@ -1,55 +1,52 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.Base - TEST</title> 28 <title>Clipperz.Base - TEST</title>
32 29
33 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script> 31 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script>
35 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css"> 32 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css">
36 33
37 <script type='text/javascript' src='../../../js/JSON/json2.js'></script> 34 <script type='text/javascript' src='../../../js/JSON/json2.js'></script>
38 35
39 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script> 36 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script>
40 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script> 37 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script>
41 <script type='text/javascript' src='../../../js/Clipperz/ByteArray.js'></script> 38 <script type='text/javascript' src='../../../js/Clipperz/ByteArray.js'></script>
42 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script> 39 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script>
43 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script> 40 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script>
44 <script type='text/javascript' src='../../../js/Clipperz/KeyValueObjectStore.js'></script> 41 <script type='text/javascript' src='../../../js/Clipperz/KeyValueObjectStore.js'></script>
45 42
46 43
47 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script> 44 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script>
48 45
49</head> 46</head>
50<body> 47<body>
51<pre id="test"> 48<pre id="test">
52<script type="text/javascript" src="Base.test.js"></script> 49<script type="text/javascript" src="Base.test.js"></script>
53</pre> 50</pre>
54</body> 51</body>
55</html> 52</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/Base.test.js b/frontend/gamma/tests/tests/Clipperz/Base.test.js
index e5c7caf..fc827f7 100644
--- a/frontend/gamma/tests/tests/Clipperz/Base.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/Base.test.js
@@ -1,120 +1,117 @@
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 28
32testEvalJSON = function(aString, shouldFail, aDescription) { 29testEvalJSON = function(aString, shouldFail, aDescription) {
33 var result; 30 var result;
34 31
35 if (shouldFail == true) { 32 if (shouldFail == true) {
36 try { 33 try {
37 result = Clipperz.Base.evalJSON(aString); 34 result = Clipperz.Base.evalJSON(aString);
38 is(true, false, aDescription + ": vulnerability not caught"); 35 is(true, false, aDescription + ": vulnerability not caught");
39//console.log(result); 36//console.log(result);
40 } catch(exception) { 37 } catch(exception) {
41 is(true, true, aDescription + ": vulnerability correctly caught"); 38 is(true, true, aDescription + ": vulnerability correctly caught");
42 } 39 }
43 } else { 40 } else {
44 try { 41 try {
45 result = Clipperz.Base.evalJSON(aString); 42 result = Clipperz.Base.evalJSON(aString);
46 is(true, true, aDescription + ": configuration correctly checked"); 43 is(true, true, aDescription + ": configuration correctly checked");
47 } catch(exception) { 44 } catch(exception) {
48 is(true, false, aDescription + ": configuration wrongly caught as malicious"); 45 is(true, false, aDescription + ": configuration wrongly caught as malicious");
49 // console.log(exception); 46 // console.log(exception);
50 } 47 }
51 } 48 }
52 49
53 return result; 50 return result;
54} 51}
55 52
56//============================================================================= 53//=============================================================================
57 54
58var tests = { 55var tests = {
59 56
60 '001_test': function () { 57 '001_test': function () {
61 var stringToSplit; 58 var stringToSplit;
62 varsplittedString; 59 varsplittedString;
63 60
64 stringToSplit = "stringToSplit"; 61 stringToSplit = "stringToSplit";
65 splittedString = Clipperz.Base.splitStringAtFixedTokenSize(stringToSplit, 2); 62 splittedString = Clipperz.Base.splitStringAtFixedTokenSize(stringToSplit, 2);
66 is(splittedString.length, 7); 63 is(splittedString.length, 7);
67 is(splittedString[0], 'st'); 64 is(splittedString[0], 'st');
68 is(splittedString[1], 'ri'); 65 is(splittedString[1], 'ri');
69 is(splittedString[2], 'ng'); 66 is(splittedString[2], 'ng');
70 is(splittedString[3], 'To'); 67 is(splittedString[3], 'To');
71 is(splittedString[4], 'Sp'); 68 is(splittedString[4], 'Sp');
72 is(splittedString[5], 'li'); 69 is(splittedString[5], 'li');
73 is(splittedString[6], 't', "test that should pass"); 70 is(splittedString[6], 't', "test that should pass");
74 71
75 stringToSplit = "stringToSplit"; 72 stringToSplit = "stringToSplit";
76 splittedString = Clipperz.Base.splitStringAtFixedTokenSize(stringToSplit, 20); 73 splittedString = Clipperz.Base.splitStringAtFixedTokenSize(stringToSplit, 20);
77 is(splittedString.length, 1); 74 is(splittedString.length, 1);
78 is(splittedString[0], 'stringToSplit'); 75 is(splittedString[0], 'stringToSplit');
79 76
80 stringToSplit = null; 77 stringToSplit = null;
81 splittedString = Clipperz.Base.splitStringAtFixedTokenSize(stringToSplit, 20); 78 splittedString = Clipperz.Base.splitStringAtFixedTokenSize(stringToSplit, 20);
82 is(splittedString.length, 0); 79 is(splittedString.length, 0);
83 }, 80 },
84 81
85 //------------------------------------------------------------------------- 82 //-------------------------------------------------------------------------
86 83
87 '002_test': function () { 84 '002_test': function () {
88 var anObject; 85 var anObject;
89 86
90 anObject = "String"; 87 anObject = "String";
91 is(Clipperz.Base.objectType(anObject), 'string', "test on strings (1)"); 88 is(Clipperz.Base.objectType(anObject), 'string', "test on strings (1)");
92 anObject = new String("String"); 89 anObject = new String("String");
93 is(Clipperz.Base.objectType(anObject), 'string', "test on strings (2)"); 90 is(Clipperz.Base.objectType(anObject), 'string', "test on strings (2)");
94 91
95 anObject = 120; 92 anObject = 120;
96 is(Clipperz.Base.objectType(anObject), 'number', "test on numbers (1)"); 93 is(Clipperz.Base.objectType(anObject), 'number', "test on numbers (1)");
97 anObject = new Number(120); 94 anObject = new Number(120);
98 is(Clipperz.Base.objectType(anObject), 'number', "test on numbers (2)"); 95 is(Clipperz.Base.objectType(anObject), 'number', "test on numbers (2)");
99 96
100 anObject = true; 97 anObject = true;
101 is(Clipperz.Base.objectType(anObject), 'boolean', "test on booleans (1)"); 98 is(Clipperz.Base.objectType(anObject), 'boolean', "test on booleans (1)");
102 anObject = new Boolean(true); 99 anObject = new Boolean(true);
103 is(Clipperz.Base.objectType(anObject), 'boolean', "test on booleans (2)"); 100 is(Clipperz.Base.objectType(anObject), 'boolean', "test on booleans (2)");
104 101
105 anObject = new Date; 102 anObject = new Date;
106 is(Clipperz.Base.objectType(anObject), 'date', "test on dates"); 103 is(Clipperz.Base.objectType(anObject), 'date', "test on dates");
107 104
108 anObject = new Error("test"); 105 anObject = new Error("test");
109 is(Clipperz.Base.objectType(anObject), 'error', "test on errors"); 106 is(Clipperz.Base.objectType(anObject), 'error', "test on errors");
110 107
111 anObject = function() {}; 108 anObject = function() {};
112 is(Clipperz.Base.objectType(anObject), 'function', "test on functions"); 109 is(Clipperz.Base.objectType(anObject), 'function', "test on functions");
113 110
114 anObject = new Object(); 111 anObject = new Object();
115 is(Clipperz.Base.objectType(anObject), 'object', "test on objects"); 112 is(Clipperz.Base.objectType(anObject), 'object', "test on objects");
116 113
117 114
118 anObject = [1, 2, 3]; 115 anObject = [1, 2, 3];
119 is(Clipperz.Base.objectType(anObject), 'array', "test on arrays"); 116 is(Clipperz.Base.objectType(anObject), 'array', "test on arrays");
120 }, 117 },
diff --git a/frontend/gamma/tests/tests/Clipperz/ByteArray.html b/frontend/gamma/tests/tests/Clipperz/ByteArray.html
index c8b8ae7..6dc7116 100644
--- a/frontend/gamma/tests/tests/Clipperz/ByteArray.html
+++ b/frontend/gamma/tests/tests/Clipperz/ByteArray.html
@@ -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
29<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.ByteArray - tests</title> 28 <title>Clipperz.ByteArray - tests</title>
32 29
33 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 30 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
34 31
35 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 32 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
36 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script> 33 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script>
37 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css"> 34 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css">
38 35
39 <script type='text/javascript' src='../../../js/JSON/json2.js'></script> 36 <script type='text/javascript' src='../../../js/JSON/json2.js'></script>
40 37
41 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script> 38 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script>
42 <script type='text/javascript' src='../../../js/Clipperz/YUI/DomHelper.js'></script> 39 <script type='text/javascript' src='../../../js/Clipperz/YUI/DomHelper.js'></script>
43 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script> 40 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script>
44 <script type='text/javascript' src='../../../js/Clipperz/ByteArray.js'></script> 41 <script type='text/javascript' src='../../../js/Clipperz/ByteArray.js'></script>
45 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script> 42 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script>
46 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script> 43 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script>
47 <script type='text/javascript' src='../../../js/Clipperz/Crypto/Base.js'></script> 44 <script type='text/javascript' src='../../../js/Clipperz/Crypto/Base.js'></script>
48 <script type='text/javascript' src='../../../js/Clipperz/Crypto/BigInt.js'></script> 45 <script type='text/javascript' src='../../../js/Clipperz/Crypto/BigInt.js'></script>
49 <script type='text/javascript' src='../../../js/Clipperz/Crypto/AES.js'></script> 46 <script type='text/javascript' src='../../../js/Clipperz/Crypto/AES.js'></script>
50 <script type='text/javascript' src='../../../js/Clipperz/Crypto/SHA.js'></script> 47 <script type='text/javascript' src='../../../js/Clipperz/Crypto/SHA.js'></script>
51 <script type='text/javascript' src='../../../js/Clipperz/Crypto/PRNG.js'></script> 48 <script type='text/javascript' src='../../../js/Clipperz/Crypto/PRNG.js'></script>
52 <!-- script type='text/javascript' src='../../../js/Clipperz/Crypto/BigInt.js'></script --> 49 <!-- script type='text/javascript' src='../../../js/Clipperz/Crypto/BigInt.js'></script -->
53 50
54 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script> 51 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script>
55 52
56</head> 53</head>
57<body> 54<body>
58 55
59<pre id="test"> 56<pre id="test">
60<script> 57<script>
61 Clipperz_IEisBroken = false; 58 Clipperz_IEisBroken = false;
62</script> 59</script>
63 <script type="text/javascript"> 60 <script type="text/javascript">
64 var longAsciiText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam ac ipsum. Morbi mauris. Aenean ac elit id metus lobortis elementum. Proin at quam ac ipsum pellentesque adipiscing. Aenean vestibulum, nisl eu suscipit iaculis, quam pede congue mi, sit amet dapibus metus neque eget dui. Suspendisse posuere diam ac sapien. Nulla lobortis dapibus leo. Quisque ornare tortor quis turpis. Aliquam erat volutpat. Ut faucibus lacinia magna. Nunc metus leo, volutpat quis, mollis ac, sagittis ut, turpis. Quisque purus. Mauris ante enim, vehicula eu, suscipit vitae, laoreet vel, nulla. Pellentesque pede leo, aliquam quis, vehicula eget, rhoncus nec, metus. Vestibulum tellus. Suspendisse blandit. Pellentesque vel tellus. Maecenas arcu. Duis eget purus. Curabitur non pede nec odio cursus luctus. In non elit. Nullam eget nunc in nisl elementum commodo. Vivamus sollicitudin pede quis dui. Morbi commodo. Praesent a risus id urna hendrerit fermentum. Nunc ultricies tristique odio. Phasellus imperdiet, sapien eget viverra blandit, tortor risus blandit nisi, et sodales libero dolor quis nisl. Morbi vel enim. Nunc in quam. Vestibulum a magna. Fusce auctor elit in augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris tincidunt consectetuer leo. Etiam non turpis. Vestibulum eros. Praesent venenatis adipiscing augue. Pellentesque dapibus odio ac arcu rhoncus sagittis. Nullam vitae augue. Ut magna nulla, congue eu, porta in, egestas quis, ligula. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur malesuada neque non nulla. Nulla facilisi. Fusce viverra magna ut tellus. Sed rutrum pretium sapien. Vivamus dui. Cras fringilla. Nullam lorem. Vestibulum varius, purus at imperdiet fermentum, metus diam ultricies lacus, vitae aliquam ipsum libero sit amet felis. Sed eget eros ac velit commodo sollicitudin. Morbi in metus in mi viverra lacinia. Sed ut urna. Suspendisse imperdiet tellus ac velit. Duis malesuada velit sit amet sapien. Vestibulum a sapien id libero accumsan luctus. Fusce iaculis. Donec pulvinar orci ut pede. Nam placerat sem ut sem. Ut pretium bibendum nisl. Suspendisse potenti. Phasellus mollis neque in neque. Suspendisse augue magna, eleifend et, malesuada at, viverra in, nisl. Donec vel lectus in justo ultrices tristique. Aliquam erat volutpat. Morbi suscipit, risus ac volutpat mollis, risus metus hendrerit sapien, ac scelerisque est orci eu est. Quisque sit amet velit. Sed libero diam, semper id, eleifend ac, iaculis non, nulla. Donec varius tincidunt arcu. Sed quis metus eu erat adipiscing viverra. Donec odio. Aenean sagittis nisl sed purus. Fusce vel nibh quis felis accumsan bibendum. Etiam et risus ac tortor cursus pharetra. Maecenas tellus. Pellentesque nec felis id eros vehicula commodo. Aliquam interdum sagittis odio. Maecenas at lorem eget mi aliquet sagittis. Mauris quis nibh in odio sodales lacinia. Proin augue mauris, placerat a, blandit vel, tincidunt eget, ante. Quisque turpis purus, placerat eget, tempor consectetuer, aliquet ac, enim. Etiam eleifend vestibulum mi. Vivamus gravida. Morbi dolor. In hac habitasse platea dictumst. Nulla commodo lectus faucibus lorem. Phasellus aliquet pede id metus hendrerit tempus. Fusce convallis pede ac neque tempor dignissim. Sed vitae lorem sit amet justo dapibus porta. Ut quam orci, pretium non, sagittis nec, condimentum id, dolor. Sed tempor. Nunc porta rutrum leo. Nunc id sem. Sed nibh tortor, dapibus eget, feugiat a, pretium pretium, purus. Suspendisse suscipit lobortis sem. Praesent pharetra orci. Quisque molestie tristique quam. Maecenas nunc lorem, rhoncus non, venenatis sed, sodales at, felis. Quisque semper. Quisque malesuada est quis lacus. Nullam a justo. Aliquam pellentesque, ante ut congue molestie, nisl sapien posuere nisl, eu cursus nulla ligula vel nisl. Fusce commodo lacinia magna. Aenean rutrum vestibulum lorem. Pellentesque fermentum tristique ipsum. Nulla facilisi. Donec id mi eget ipsum commodo egestas. Mauris iaculis. Nulla vulputate mi at nisl. In condimentum sodales tellus. Donec metus orci, mollis vel, accumsan ac, ornare ac, lacus. Pellentesque accumsan est et tellus. Nam mollis. Aenean accumsan eros sit amet tellus. Praesent eu libero. Sed tempus urna nec dolor. Nulla facilisi. Duis eleifend rhoncus neque. Curabitur consectetuer quam eu justo. Sed metus. Vivamus risus. Aliquam erat volutpat. Aliquam erat volutpat. Nunc semper urna. Praesent molestie libero a lacus. Nullam suscipit lobortis velit. Praesent rhoncus, felis ut interdum dapibus, ipsum lectus vestibulum nulla, in interdum risus dolor eget orci. Nullam venenatis. Suspendisse laoreet, arcu a luctus consectetuer, libero ligula condimentum quam, eget elementum mauris tortor sed enim. Pellentesque leo. Nam interdum malesuada ante. Praesent fermentum nunc et dolor. Donec auctor volutpat odio. Pellentesque volutpat egestas ipsum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras ac ligula eu justo dignissim accumsan. Nullam nisi. Fusce id sem. Fusce et urna. Pellentesque commodo pharetra lorem. Donec erat. Vestibulum elit arcu, commodo et, consequat eget, posuere eget, sem. Morbi sed nulla sed neque commodo commodo. Aliquam erat volutpat. Ut id turpis a enim malesuada vestibulum. In arcu dui, dignissim vitae, blandit eu, egestas ac, arcu. In ultricies sapien vitae nisi. Proin rhoncus magna eget tortor. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In dictum. Sed volutpat pharetra quam. Mauris eget eros. Fusce malesuada dolor id pede. Praesent nec justo sed nisi vehicula varius. In scelerisque convallis nulla. Pellentesque sodales massa vulputate urna. Duis metus urna, imperdiet ac, sodales vel, ullamcorper sed, pede. Vestibulum aliquam mollis metus. Praesent tempus tristique elit. Maecenas tellus tortor, pretium id, mollis id, molestie non, turpis. Vivamus nibh magna, bibendum vitae, a."; 61 var longAsciiText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam ac ipsum. Morbi mauris. Aenean ac elit id metus lobortis elementum. Proin at quam ac ipsum pellentesque adipiscing. Aenean vestibulum, nisl eu suscipit iaculis, quam pede congue mi, sit amet dapibus metus neque eget dui. Suspendisse posuere diam ac sapien. Nulla lobortis dapibus leo. Quisque ornare tortor quis turpis. Aliquam erat volutpat. Ut faucibus lacinia magna. Nunc metus leo, volutpat quis, mollis ac, sagittis ut, turpis. Quisque purus. Mauris ante enim, vehicula eu, suscipit vitae, laoreet vel, nulla. Pellentesque pede leo, aliquam quis, vehicula eget, rhoncus nec, metus. Vestibulum tellus. Suspendisse blandit. Pellentesque vel tellus. Maecenas arcu. Duis eget purus. Curabitur non pede nec odio cursus luctus. In non elit. Nullam eget nunc in nisl elementum commodo. Vivamus sollicitudin pede quis dui. Morbi commodo. Praesent a risus id urna hendrerit fermentum. Nunc ultricies tristique odio. Phasellus imperdiet, sapien eget viverra blandit, tortor risus blandit nisi, et sodales libero dolor quis nisl. Morbi vel enim. Nunc in quam. Vestibulum a magna. Fusce auctor elit in augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris tincidunt consectetuer leo. Etiam non turpis. Vestibulum eros. Praesent venenatis adipiscing augue. Pellentesque dapibus odio ac arcu rhoncus sagittis. Nullam vitae augue. Ut magna nulla, congue eu, porta in, egestas quis, ligula. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur malesuada neque non nulla. Nulla facilisi. Fusce viverra magna ut tellus. Sed rutrum pretium sapien. Vivamus dui. Cras fringilla. Nullam lorem. Vestibulum varius, purus at imperdiet fermentum, metus diam ultricies lacus, vitae aliquam ipsum libero sit amet felis. Sed eget eros ac velit commodo sollicitudin. Morbi in metus in mi viverra lacinia. Sed ut urna. Suspendisse imperdiet tellus ac velit. Duis malesuada velit sit amet sapien. Vestibulum a sapien id libero accumsan luctus. Fusce iaculis. Donec pulvinar orci ut pede. Nam placerat sem ut sem. Ut pretium bibendum nisl. Suspendisse potenti. Phasellus mollis neque in neque. Suspendisse augue magna, eleifend et, malesuada at, viverra in, nisl. Donec vel lectus in justo ultrices tristique. Aliquam erat volutpat. Morbi suscipit, risus ac volutpat mollis, risus metus hendrerit sapien, ac scelerisque est orci eu est. Quisque sit amet velit. Sed libero diam, semper id, eleifend ac, iaculis non, nulla. Donec varius tincidunt arcu. Sed quis metus eu erat adipiscing viverra. Donec odio. Aenean sagittis nisl sed purus. Fusce vel nibh quis felis accumsan bibendum. Etiam et risus ac tortor cursus pharetra. Maecenas tellus. Pellentesque nec felis id eros vehicula commodo. Aliquam interdum sagittis odio. Maecenas at lorem eget mi aliquet sagittis. Mauris quis nibh in odio sodales lacinia. Proin augue mauris, placerat a, blandit vel, tincidunt eget, ante. Quisque turpis purus, placerat eget, tempor consectetuer, aliquet ac, enim. Etiam eleifend vestibulum mi. Vivamus gravida. Morbi dolor. In hac habitasse platea dictumst. Nulla commodo lectus faucibus lorem. Phasellus aliquet pede id metus hendrerit tempus. Fusce convallis pede ac neque tempor dignissim. Sed vitae lorem sit amet justo dapibus porta. Ut quam orci, pretium non, sagittis nec, condimentum id, dolor. Sed tempor. Nunc porta rutrum leo. Nunc id sem. Sed nibh tortor, dapibus eget, feugiat a, pretium pretium, purus. Suspendisse suscipit lobortis sem. Praesent pharetra orci. Quisque molestie tristique quam. Maecenas nunc lorem, rhoncus non, venenatis sed, sodales at, felis. Quisque semper. Quisque malesuada est quis lacus. Nullam a justo. Aliquam pellentesque, ante ut congue molestie, nisl sapien posuere nisl, eu cursus nulla ligula vel nisl. Fusce commodo lacinia magna. Aenean rutrum vestibulum lorem. Pellentesque fermentum tristique ipsum. Nulla facilisi. Donec id mi eget ipsum commodo egestas. Mauris iaculis. Nulla vulputate mi at nisl. In condimentum sodales tellus. Donec metus orci, mollis vel, accumsan ac, ornare ac, lacus. Pellentesque accumsan est et tellus. Nam mollis. Aenean accumsan eros sit amet tellus. Praesent eu libero. Sed tempus urna nec dolor. Nulla facilisi. Duis eleifend rhoncus neque. Curabitur consectetuer quam eu justo. Sed metus. Vivamus risus. Aliquam erat volutpat. Aliquam erat volutpat. Nunc semper urna. Praesent molestie libero a lacus. Nullam suscipit lobortis velit. Praesent rhoncus, felis ut interdum dapibus, ipsum lectus vestibulum nulla, in interdum risus dolor eget orci. Nullam venenatis. Suspendisse laoreet, arcu a luctus consectetuer, libero ligula condimentum quam, eget elementum mauris tortor sed enim. Pellentesque leo. Nam interdum malesuada ante. Praesent fermentum nunc et dolor. Donec auctor volutpat odio. Pellentesque volutpat egestas ipsum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras ac ligula eu justo dignissim accumsan. Nullam nisi. Fusce id sem. Fusce et urna. Pellentesque commodo pharetra lorem. Donec erat. Vestibulum elit arcu, commodo et, consequat eget, posuere eget, sem. Morbi sed nulla sed neque commodo commodo. Aliquam erat volutpat. Ut id turpis a enim malesuada vestibulum. In arcu dui, dignissim vitae, blandit eu, egestas ac, arcu. In ultricies sapien vitae nisi. Proin rhoncus magna eget tortor. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In dictum. Sed volutpat pharetra quam. Mauris eget eros. Fusce malesuada dolor id pede. Praesent nec justo sed nisi vehicula varius. In scelerisque convallis nulla. Pellentesque sodales massa vulputate urna. Duis metus urna, imperdiet ac, sodales vel, ullamcorper sed, pede. Vestibulum aliquam mollis metus. Praesent tempus tristique elit. Maecenas tellus tortor, pretium id, mollis id, molestie non, turpis. Vivamus nibh magna, bibendum vitae, a.";
65 var longIsoLatin1Text = "¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùù"; 62 var longIsoLatin1Text = "¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùù";
66 var longUtf8Text = "客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之"; 63 var longUtf8Text = "客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之";
67 </script> 64 </script>
68 <script type="text/javascript" src="ByteArray.test.js"></script> 65 <script type="text/javascript" src="ByteArray.test.js"></script>
69</pre> 66</pre>
70</body> 67</body>
71</html> 68</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/ByteArray.test.js b/frontend/gamma/tests/tests/Clipperz/ByteArray.test.js
index ef2660e..43d74a0 100644
--- a/frontend/gamma/tests/tests/Clipperz/ByteArray.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/ByteArray.test.js
@@ -1,120 +1,117 @@
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.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
30 27
31var tests = { 28var tests = {
32 29
33 //------------------------------------------------------------------------- 30 //-------------------------------------------------------------------------
34 31
35 'core_tests': function (someTestArgs) { 32 'core_tests': function (someTestArgs) {
36 // vardeferredResult; 33 // vardeferredResult;
37 34
38 // deferredResult = new Clipperz.Async.Deferred("core_tests", someTestArgs); 35 // deferredResult = new Clipperz.Async.Deferred("core_tests", someTestArgs);
39 // deferredResult.addCallback(function() { 36 // deferredResult.addCallback(function() {
40 var byteArray; 37 var byteArray;
41 38
42 byteArray = new Clipperz.ByteArray(); 39 byteArray = new Clipperz.ByteArray();
43 40
44 try { 41 try {
45 byteArray.checkByteValue(512); 42 byteArray.checkByteValue(512);
46 is(false, true, "a value greater that a byte (0x200) should have raised an exception - NO Exception"); 43 is(false, true, "a value greater that a byte (0x200) should have raised an exception - NO Exception");
47 } catch(e) { 44 } catch(e) {
48 // is(e.name, 45 // is(e.name,
49 // "Clipperz.ByteArray.exception.InvalidValue", 46 // "Clipperz.ByteArray.exception.InvalidValue",
50 // "appending a value greater that a byte (0x200) should have raised an exception - EXCEPTION HANDLER") 47 // "appending a value greater that a byte (0x200) should have raised an exception - EXCEPTION HANDLER")
51 ok(/Clipperz\.ByteArray\.exception\.InvalidValue.*/.test(e.name), 48 ok(/Clipperz\.ByteArray\.exception\.InvalidValue.*/.test(e.name),
52 "appending a value greater that a byte (0x200) should have raised an exception - EXCEPTION HANDLER") 49 "appending a value greater that a byte (0x200) should have raised an exception - EXCEPTION HANDLER")
53 }; 50 };
54 51
55 // }); 52 // });
56 // deferredResult.callback(); 53 // deferredResult.callback();
57 54
58 // return deferredResult; 55 // return deferredResult;
59 56
60 }, 57 },
61 58
62 //------------------------------------------------------------------------- 59 //-------------------------------------------------------------------------
63 60
64 'basic_tests': function (someTestArgs) { 61 'basic_tests': function (someTestArgs) {
65 vardeferredResult; 62 vardeferredResult;
66 63
67 deferredResult = new Clipperz.Async.Deferred("simple_tests", someTestArgs); 64 deferredResult = new Clipperz.Async.Deferred("simple_tests", someTestArgs);
68 deferredResult.addCallback(function() { 65 deferredResult.addCallback(function() {
69 var byteArray; 66 var byteArray;
70 var byteArray2; 67 var byteArray2;
71 varbyteArrayIterator; 68 varbyteArrayIterator;
72 varnextBlock; 69 varnextBlock;
73 70
74 byteArray = new Clipperz.ByteArray(); 71 byteArray = new Clipperz.ByteArray();
75 is(byteArray.length(), 0, "before adding any element the length is 0"); 72 is(byteArray.length(), 0, "before adding any element the length is 0");
76 byteArray.appendByte(10); 73 byteArray.appendByte(10);
77 is(byteArray.length(), 1, "adding a single byte the length == 1"); 74 is(byteArray.length(), 1, "adding a single byte the length == 1");
78 is(byteArray.byteAtIndex(0), 10, "the first element is correct"); 75 is(byteArray.byteAtIndex(0), 10, "the first element is correct");
79 76
80 byteArrayIterator = new Clipperz.ByteArrayIterator({byteArray:byteArray, blockSize:(8/8), finalPadding:true}); 77 byteArrayIterator = new Clipperz.ByteArrayIterator({byteArray:byteArray, blockSize:(8/8), finalPadding:true});
81 nextBlock = byteArrayIterator.nextBlock(); 78 nextBlock = byteArrayIterator.nextBlock();
82 is(nextBlock.constructor, Array, "ByteArrayIterator.nextBlock returns an array of byte values"); 79 is(nextBlock.constructor, Array, "ByteArrayIterator.nextBlock returns an array of byte values");
83 is(nextBlock.length, 1, "as the block size is 8bit, the returned array has only one element"); 80 is(nextBlock.length, 1, "as the block size is 8bit, the returned array has only one element");
84 is(nextBlock[0], 10, "the element of the returned block is correct"); 81 is(nextBlock[0], 10, "the element of the returned block is correct");
85 nextBlock = byteArrayIterator.nextBlock(); 82 nextBlock = byteArrayIterator.nextBlock();
86 is(nextBlock, null, "after the last element, the nextBlock returns null"); 83 is(nextBlock, null, "after the last element, the nextBlock returns null");
87 84
88 byteArray = new Clipperz.ByteArray(); 85 byteArray = new Clipperz.ByteArray();
89 byteArray.appendBytes(10, 20, 45, 38); 86 byteArray.appendBytes(10, 20, 45, 38);
90 is(byteArray.length(), 4, "Appending more bytes, returns the right length"); 87 is(byteArray.length(), 4, "Appending more bytes, returns the right length");
91 is(byteArray.byteAtIndex(0), 10, "and all the elements are right [0]"); 88 is(byteArray.byteAtIndex(0), 10, "and all the elements are right [0]");
92 is(byteArray.byteAtIndex(1), 20, "and all the elements are right [1]"); 89 is(byteArray.byteAtIndex(1), 20, "and all the elements are right [1]");
93 is(byteArray.byteAtIndex(2), 45, "and all the elements are right [2]"); 90 is(byteArray.byteAtIndex(2), 45, "and all the elements are right [2]");
94 is(byteArray.byteAtIndex(3), 38, "and all the elements are right [3]"); 91 is(byteArray.byteAtIndex(3), 38, "and all the elements are right [3]");
95 92
96 byteArray2 = new Clipperz.ByteArray(); 93 byteArray2 = new Clipperz.ByteArray();
97 byteArray2.appendBytes([10, 20, 45, 38]); 94 byteArray2.appendBytes([10, 20, 45, 38]);
98 is(byteArray.equals(byteArray2), true, "equals method tested with a byteArray created with the same values"); 95 is(byteArray.equals(byteArray2), true, "equals method tested with a byteArray created with the same values");
99 96
100 byteArray2 = new Clipperz.ByteArray(); 97 byteArray2 = new Clipperz.ByteArray();
101 byteArray2.appendBytes([20, 11, 3, 22]); 98 byteArray2.appendBytes([20, 11, 3, 22]);
102 is(byteArray.equals(byteArray2), false, "equals method tested with a byteArray created with different values"); 99 is(byteArray.equals(byteArray2), false, "equals method tested with a byteArray created with different values");
103 100
104 byteArrayIterator = new Clipperz.ByteArrayIterator({byteArray:byteArray, blockSize:(8/8), finalPadding:true}); 101 byteArrayIterator = new Clipperz.ByteArrayIterator({byteArray:byteArray, blockSize:(8/8), finalPadding:true});
105 nextBlock = byteArrayIterator.nextBlock(); 102 nextBlock = byteArrayIterator.nextBlock();
106 is(nextBlock.length, 1, "the size of the block returned by the byteArrayIterator match with the configured blockedSize"); 103 is(nextBlock.length, 1, "the size of the block returned by the byteArrayIterator match with the configured blockedSize");
107 is(nextBlock[0], 10, "the values returned by nextBlock are right [1]"); 104 is(nextBlock[0], 10, "the values returned by nextBlock are right [1]");
108 nextBlock = byteArrayIterator.nextBlock(); 105 nextBlock = byteArrayIterator.nextBlock();
109 is(nextBlock[0], 20, "the values returned by nextBlock are right [2]"); 106 is(nextBlock[0], 20, "the values returned by nextBlock are right [2]");
110 nextBlock = byteArrayIterator.nextBlock(); 107 nextBlock = byteArrayIterator.nextBlock();
111 is(nextBlock[0], 45, "the values returned by nextBlock are right [3]"); 108 is(nextBlock[0], 45, "the values returned by nextBlock are right [3]");
112 nextBlock = byteArrayIterator.nextBlock(); 109 nextBlock = byteArrayIterator.nextBlock();
113 is(nextBlock[0], 38, "the values returned by nextBlock are right [4]"); 110 is(nextBlock[0], 38, "the values returned by nextBlock are right [4]");
114 nextBlock = byteArrayIterator.nextBlock(); 111 nextBlock = byteArrayIterator.nextBlock();
115 is(nextBlock, null, "after the last block the nextBlock method returns null"); 112 is(nextBlock, null, "after the last block the nextBlock method returns null");
116 113
117 byteArrayIterator = new Clipperz.ByteArrayIterator({byteArray:byteArray, blockSize:(16/8), finalPadding:true}); 114 byteArrayIterator = new Clipperz.ByteArrayIterator({byteArray:byteArray, blockSize:(16/8), finalPadding:true});
118 nextBlock = byteArrayIterator.nextBlock(); 115 nextBlock = byteArrayIterator.nextBlock();
119 is(nextBlock.length, 2, "on the same data, using a different block size, returns the right length"); 116 is(nextBlock.length, 2, "on the same data, using a different block size, returns the right length");
120 is(nextBlock[0], 10, "and also the data are fine [1][0]"); 117 is(nextBlock[0], 10, "and also the data are fine [1][0]");
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/AES.html b/frontend/gamma/tests/tests/Clipperz/Crypto/AES.html
index 93089b7..828ccb8 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/AES.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/AES.html
@@ -1,120 +1,117 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.Crypto.AES_v3 - TEST</title> 28 <title>Clipperz.Crypto.AES_v3 - TEST</title>
32 29
33 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> 31 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script>
35 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 32 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
36 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 33 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
37 34
38 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 35 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
39 36
40 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
44 41
45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
47 44
48</head> 45</head>
49<body> 46<body>
50<pre id="test"> 47<pre id="test">
51<script type="text/javascript"> 48<script type="text/javascript">
52 49
53try { 50try {
54 var block; 51 var block;
55 var keyValue; 52 var keyValue;
56 varkey; 53 varkey;
57 var encryptedBlock; 54 var encryptedBlock;
58 var startTime, endTime; 55 var startTime, endTime;
59 56
60 startTime = new Date(); 57 startTime = new Date();
61 58
62 keyValue = new Clipperz.ByteArray("0x00010203050607080a0b0c0d0f10111214151617191a1b1c1e1f202123242526"); 59 keyValue = new Clipperz.ByteArray("0x00010203050607080a0b0c0d0f10111214151617191a1b1c1e1f202123242526");
63 key = new Clipperz.Crypto.AES.Key({key:keyValue}); 60 key = new Clipperz.Crypto.AES.Key({key:keyValue});
64 block = new Clipperz.ByteArray("0x834eadfccac7e1b30664b1aba44815ab"); 61 block = new Clipperz.ByteArray("0x834eadfccac7e1b30664b1aba44815ab");
65 encryptedBlock = new Clipperz.ByteArray(Clipperz.Crypto.AES.encryptBlock(key, block.arrayValues())); 62 encryptedBlock = new Clipperz.ByteArray(Clipperz.Crypto.AES.encryptBlock(key, block.arrayValues()));
66 is(encryptedBlock.toHexString(), "0x1946dabf6a03a2a2c3d0b05080aed6fc", "Test 1"); 63 is(encryptedBlock.toHexString(), "0x1946dabf6a03a2a2c3d0b05080aed6fc", "Test 1");
67 64
68 keyValue = new Clipperz.ByteArray("0x28292a2b2d2e2f30323334353738393a3c3d3e3f41424344464748494b4c4d4e"); 65 keyValue = new Clipperz.ByteArray("0x28292a2b2d2e2f30323334353738393a3c3d3e3f41424344464748494b4c4d4e");
69 key = new Clipperz.Crypto.AES.Key({key:keyValue}); 66 key = new Clipperz.Crypto.AES.Key({key:keyValue});
70 block = new Clipperz.ByteArray("0xd9dc4dba3021b05d67c0518f72b62bf1"); 67 block = new Clipperz.ByteArray("0xd9dc4dba3021b05d67c0518f72b62bf1");
71 encryptedBlock = new Clipperz.ByteArray(Clipperz.Crypto.AES.encryptBlock(key, block.arrayValues())); 68 encryptedBlock = new Clipperz.ByteArray(Clipperz.Crypto.AES.encryptBlock(key, block.arrayValues()));
72 is(encryptedBlock.toHexString(), "0x5ed301d747d3cc715445ebdec62f2fb4", "Test 2"); 69 is(encryptedBlock.toHexString(), "0x5ed301d747d3cc715445ebdec62f2fb4", "Test 2");
73 70
74 keyValue = new Clipperz.ByteArray("0x50515253555657585a5b5c5d5f60616264656667696a6b6c6e6f707173747576"); 71 keyValue = new Clipperz.ByteArray("0x50515253555657585a5b5c5d5f60616264656667696a6b6c6e6f707173747576");
75 key = new Clipperz.Crypto.AES.Key({key:keyValue}); 72 key = new Clipperz.Crypto.AES.Key({key:keyValue});
76 block = new Clipperz.ByteArray("0xa291d86301a4a739f7392173aa3c604c"); 73 block = new Clipperz.ByteArray("0xa291d86301a4a739f7392173aa3c604c");
77 encryptedBlock = new Clipperz.ByteArray(Clipperz.Crypto.AES.encryptBlock(key, block.arrayValues())); 74 encryptedBlock = new Clipperz.ByteArray(Clipperz.Crypto.AES.encryptBlock(key, block.arrayValues()));
78 is(encryptedBlock.toHexString(), "0x6585c8f43d13a6beab6419fc5935b9d0", "Test 3"); 75 is(encryptedBlock.toHexString(), "0x6585c8f43d13a6beab6419fc5935b9d0", "Test 3");
79 76
80 keyValue = new Clipperz.ByteArray("0x78797a7b7d7e7f80828384858788898a8c8d8e8f91929394969798999b9c9d9e"); 77 keyValue = new Clipperz.ByteArray("0x78797a7b7d7e7f80828384858788898a8c8d8e8f91929394969798999b9c9d9e");
81 key = new Clipperz.Crypto.AES.Key({key:keyValue}); 78 key = new Clipperz.Crypto.AES.Key({key:keyValue});
82 block = new Clipperz.ByteArray("0x4264b2696498de4df79788a9f83e9390"); 79 block = new Clipperz.ByteArray("0x4264b2696498de4df79788a9f83e9390");
83 encryptedBlock = new Clipperz.ByteArray(Clipperz.Crypto.AES.encryptBlock(key, block.arrayValues())); 80 encryptedBlock = new Clipperz.ByteArray(Clipperz.Crypto.AES.encryptBlock(key, block.arrayValues()));
84 is(encryptedBlock.toHexString(), "0x2a5b56a596680fcc0e05f5e0f151ecae", "Test 4"); 81 is(encryptedBlock.toHexString(), "0x2a5b56a596680fcc0e05f5e0f151ecae", "Test 4");
85 82
86 keyValue = new Clipperz.ByteArray("0xa0a1a2a3a5a6a7a8aaabacadafb0b1b2b4b5b6b7b9babbbcbebfc0c1c3c4c5c6"); 83 keyValue = new Clipperz.ByteArray("0xa0a1a2a3a5a6a7a8aaabacadafb0b1b2b4b5b6b7b9babbbcbebfc0c1c3c4c5c6");
87 key = new Clipperz.Crypto.AES.Key({key:keyValue}); 84 key = new Clipperz.Crypto.AES.Key({key:keyValue});
88 block = new Clipperz.ByteArray("0xee9932b3721804d5a83ef5949245b6f6"); 85 block = new Clipperz.ByteArray("0xee9932b3721804d5a83ef5949245b6f6");
89 encryptedBlock = new Clipperz.ByteArray(Clipperz.Crypto.AES.encryptBlock(key, block.arrayValues())); 86 encryptedBlock = new Clipperz.ByteArray(Clipperz.Crypto.AES.encryptBlock(key, block.arrayValues()));
90 is(encryptedBlock.toHexString(), "0xf5d6ff414fd2c6181494d20c37f2b8c4", "Test 5"); 87 is(encryptedBlock.toHexString(), "0xf5d6ff414fd2c6181494d20c37f2b8c4", "Test 5");
91 88
92 keyValue = new Clipperz.ByteArray("0xc8c9cacbcdcecfd0d2d3d4d5d7d8d9dadcdddedfe1e2e3e4e6e7e8e9ebecedee"); 89 keyValue = new Clipperz.ByteArray("0xc8c9cacbcdcecfd0d2d3d4d5d7d8d9dadcdddedfe1e2e3e4e6e7e8e9ebecedee");
93 key = new Clipperz.Crypto.AES.Key({key:keyValue}); 90 key = new Clipperz.Crypto.AES.Key({key:keyValue});
94 block = new Clipperz.ByteArray("0xe6248f55c5fdcbca9cbbb01c88a2ea77"); 91 block = new Clipperz.ByteArray("0xe6248f55c5fdcbca9cbbb01c88a2ea77");
95 encryptedBlock = new Clipperz.ByteArray(Clipperz.Crypto.AES.encryptBlock(key, block.arrayValues())); 92 encryptedBlock = new Clipperz.ByteArray(Clipperz.Crypto.AES.encryptBlock(key, block.arrayValues()));
96 is(encryptedBlock.toHexString(), "0x85399c01f59fffb5204f19f8482f00b8", "Test 6"); 93 is(encryptedBlock.toHexString(), "0x85399c01f59fffb5204f19f8482f00b8", "Test 6");
97 94
98 keyValue = new Clipperz.ByteArray("0xf0f1f2f3f5f6f7f8fafbfcfdfe01000204050607090a0b0c0e0f101113141516"); 95 keyValue = new Clipperz.ByteArray("0xf0f1f2f3f5f6f7f8fafbfcfdfe01000204050607090a0b0c0e0f101113141516");
99 key = new Clipperz.Crypto.AES.Key({key:keyValue}); 96 key = new Clipperz.Crypto.AES.Key({key:keyValue});
100 block = new Clipperz.ByteArray("0xb8358e41b9dff65fd461d55a99266247"); 97 block = new Clipperz.ByteArray("0xb8358e41b9dff65fd461d55a99266247");
101 encryptedBlock = new Clipperz.ByteArray(Clipperz.Crypto.AES.encryptBlock(key, block.arrayValues())); 98 encryptedBlock = new Clipperz.ByteArray(Clipperz.Crypto.AES.encryptBlock(key, block.arrayValues()));
102 is(encryptedBlock.toHexString(), "0x92097b4c88a041ddf98144bc8d22e8e7", "Test 7"); 99 is(encryptedBlock.toHexString(), "0x92097b4c88a041ddf98144bc8d22e8e7", "Test 7");
103 100
104 keyValue = new Clipperz.ByteArray("0x18191a1b1d1e1f20222324252728292a2c2d2e2f31323334363738393b3c3d3e"); 101 keyValue = new Clipperz.ByteArray("0x18191a1b1d1e1f20222324252728292a2c2d2e2f31323334363738393b3c3d3e");
105 key = new Clipperz.Crypto.AES.Key({key:keyValue}); 102 key = new Clipperz.Crypto.AES.Key({key:keyValue});
106 block = new Clipperz.ByteArray("0xf0e2d72260af58e21e015ab3a4c0d906"); 103 block = new Clipperz.ByteArray("0xf0e2d72260af58e21e015ab3a4c0d906");
107 encryptedBlock = new Clipperz.ByteArray(Clipperz.Crypto.AES.encryptBlock(key, block.arrayValues())); 104 encryptedBlock = new Clipperz.ByteArray(Clipperz.Crypto.AES.encryptBlock(key, block.arrayValues()));
108 is(encryptedBlock.toHexString(), "0x89bd5b73b356ab412aef9f76cea2d65c", "Test 8"); 105 is(encryptedBlock.toHexString(), "0x89bd5b73b356ab412aef9f76cea2d65c", "Test 8");
109 106
110 keyValue = new Clipperz.ByteArray("0x40414243454647484a4b4c4d4f50515254555657595a5b5c5e5f606163646566"); 107 keyValue = new Clipperz.ByteArray("0x40414243454647484a4b4c4d4f50515254555657595a5b5c5e5f606163646566");
111 key = new Clipperz.Crypto.AES.Key({key:keyValue}); 108 key = new Clipperz.Crypto.AES.Key({key:keyValue});
112 block = new Clipperz.ByteArray("0x475b8b823ce8893db3c44a9f2a379ff7"); 109 block = new Clipperz.ByteArray("0x475b8b823ce8893db3c44a9f2a379ff7");
113 encryptedBlock = new Clipperz.ByteArray(Clipperz.Crypto.AES.encryptBlock(key, block.arrayValues())); 110 encryptedBlock = new Clipperz.ByteArray(Clipperz.Crypto.AES.encryptBlock(key, block.arrayValues()));
114 is(encryptedBlock.toHexString(), "0x2536969093c55ff9454692f2fac2f530", "Test 9"); 111 is(encryptedBlock.toHexString(), "0x2536969093c55ff9454692f2fac2f530", "Test 9");
115 112
116 keyValue = new Clipperz.ByteArray("0x68696a6b6d6e6f70727374757778797a7c7d7e7f81828384868788898b8c8d8e"); 113 keyValue = new Clipperz.ByteArray("0x68696a6b6d6e6f70727374757778797a7c7d7e7f81828384868788898b8c8d8e");
117 key = new Clipperz.Crypto.AES.Key({key:keyValue}); 114 key = new Clipperz.Crypto.AES.Key({key:keyValue});
118 block = new Clipperz.ByteArray("0x688f5281945812862f5f3076cf80412f"); 115 block = new Clipperz.ByteArray("0x688f5281945812862f5f3076cf80412f");
119 encryptedBlock = new Clipperz.ByteArray(Clipperz.Crypto.AES.encryptBlock(key, block.arrayValues())); 116 encryptedBlock = new Clipperz.ByteArray(Clipperz.Crypto.AES.encryptBlock(key, block.arrayValues()));
120 is(encryptedBlock.toHexString(), "0x07fc76a872843f3f6e0081ee9396d637", "Test 10"); 117 is(encryptedBlock.toHexString(), "0x07fc76a872843f3f6e0081ee9396d637", "Test 10");
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/AES.performance.html b/frontend/gamma/tests/tests/Clipperz/Crypto/AES.performance.html
index 0d1cf07..4817096 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/AES.performance.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/AES.performance.html
@@ -1,120 +1,117 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.Crypto.AES_performance - TEST</title> 28 <title>Clipperz.Crypto.AES_performance - TEST</title>
32 29
33 <script> 30 <script>
34 jslog_config_enabled = true; 31 jslog_config_enabled = true;
35 </script> 32 </script>
36 33
37 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 34 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
38 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> 35 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script>
39 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 36 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
40 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 37 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
41 38
42 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 39 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
43 40
44 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
49 46
50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
53 50
54 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 52 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 53 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
58 55
59</head> 56</head>
60<body> 57<body>
61<pre id="test"> 58<pre id="test">
62<script type="text/javascript"> 59<script type="text/javascript">
63Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 60Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
64 61
65try { 62try {
66 63
67 var password; 64 var password;
68 varplainText; 65 varplainText;
69 varencryptedText; 66 varencryptedText;
70 var decryptedText; 67 var decryptedText;
71 /* 68 /*
72 password = "trustno1"; 69 password = "trustno1";
73 plainText = "The quick brown fox jumps over the lazy dog"; 70 plainText = "The quick brown fox jumps over the lazy dog";
74//console.profile("encrypt"); 71//console.profile("encrypt");
75 encryptedText = Clipperz.PM.Crypto.encryptingFunctions.versions['0.2'].encrypt(password, plainText); 72 encryptedText = Clipperz.PM.Crypto.encryptingFunctions.versions['0.2'].encrypt(password, plainText);
76//console.profileEnd(); 73//console.profileEnd();
77//console.profile("decrypt"); 74//console.profile("decrypt");
78 decryptedText = Clipperz.PM.Crypto.encryptingFunctions.versions['0.2'].decrypt(password, encryptedText); 75 decryptedText = Clipperz.PM.Crypto.encryptingFunctions.versions['0.2'].decrypt(password, encryptedText);
79//console.profileEnd(); 76//console.profileEnd();
80 is(decryptedText, plainText, "simple string encrypted/decrypted"); 77 is(decryptedText, plainText, "simple string encrypted/decrypted");
81*/ 78*/
82 79
83 password = "L7bd9fQMhborMbYcHtlr"; 80 password = "L7bd9fQMhborMbYcHtlr";
84 plainText = {"records":{"f1aac97154a0e52c5e33508afa82df5a9d6dcde24883a240b8c072a3238da0b6":{"label":"imap4all [no]", "key":"f54b5033d1152456acb67974c45ee6771f8411e300c9533359dfacacf60dcbbd", "notes":""}, "c9dae2b7a60b300008306f5ec731b60050250df8f8ff34f7d9cce92762121b99":{"label":"Il manifesto", "key":"6e0ef134503110e72f444e7d102a4b1cc6ae28f2e0b1287c2b1875ff052fc16c", "notes":""}, "70d536c89a86b1aa9e077d6f9c717306a5d6c8d5549789e42dfb4f981484f116":{"label":"OmniGroup applications", "key":"7b432b7dae39ff5951db31947fa721dc012af0da4055760c6df3b02e776ef22c", "notes":"url: http://www.omnigroup.com\n\nLicence owner: Giulio Cesare Solaroli\n\nOmniWeb: EQGP-EMKH-LKWP-MUHQ-OUHL-LDF\nOmniGraffle:\nOmniOutliner:\nOmniDiskSweeper:"}, "111855cedd650dfcbbce597d764583c6b040df4b71f5fa0161fb8d10514ee48f":{"label":"R@cine", "key":"57295772c84669b0a224f435e9b75c797ae5999a2d9473ab50f9384ae54f49d6", "notes":""}, "378a790452de46e1079a99eba2e15094a096b418cccd0262b8b20244eb94d2df":{"label":"NewsGator", "key":"6ee16f6932ee02000c49dbcc685c84074b40d7956e5f4bc1100030a0f9a41f1a", "notes":""}, "30c4f575799fc6908765fc8b54f4a9a483cb32e12aa89feae545976870a9102e":{"label":"GMail - giulio.cesare", "key":"0395efd852b00700bcf78b65350ec15932430df71201d2c53a11b0269b557d1a", "notes":""}, "b2836a864ff081b6f053c3f5f13dfb29c81af33d25a316cdd82af747ea71bea0":{"label":"GMail - clipperz.com", "key":"90d6ae70d89c8211404b6f9d6c70b6b9c113fff74f474a67b34acd9c1c048d1f", "notes":""}, "6ad2cda35f97743cfddf2133cdf3142fe6419e683484531f1ef1e67431f44284":{"label":"Aruba - hosting", "key":"5c7472d24d57391c63ea99ed1fc9de179d225abd335fa65702018cfea6083d47", "notes":""}, "741ce1d21839c69db754309b04ce02fbb4104f6cb87572c056ae4af918420700":{"label":"Aruba - sql hosting", "key":"f6bd942ac3b0b7065771e5197c7499b345a10f7a4843d00c3ba3809d0ea059dc", "notes":""}, "1cef440eecea59f47554aa04b94e18c1d9fc761246b911f89a7da72d544cac48":{"label":"Amazon", "key":"1ae022b4d14b642f113703b2a98931bd892dec2da785ab5ff6fc1d0aac7537f1", "notes":""}, "d34c13773b5d8154355c2605024a1dfaf66279ba0fbe3ac19fc1cbc642278fe4":{"label":"YouTube [no]", "key":"4c6593d4f6448137939b364b84c81501fadb60f7871fe5fa63c93e97bb5c4648", "notes":""}, "5054f0b94cd97610a1bc0ed8671b6fb5b25bf7a5582677059fcaaea75fac27bc":{"label":"DynDns - gcsolaroli", "key":"f8ed9e7a3630deed046eda37ebc63ecb4d63668a2f97224d7628fdc53b242467", "notes":""}, "73fb52ed51533657d6ebb020d5026fb4deb601dadce802de58f7fff4b56e1495":{"label":"DynDns - clipperz", "key":"d8bc295177383a523e67b61b166e0ca956ab4c2ee86800559a009d2716064f6d", "notes":""}, "48d4c0546c032be26ecce4da41e020129afa7fc34cfe164ea72e1c9953d2e6bb":{"label":"Bol.it", "key":"cada5dadeebd8d12190954d21f1a944c8799d034f028be195b448935fcf970c7", "notes":""}, "d62d420db34720ccc054df06b88725ea79020ffa9389ca15e70137fb4dfd0883":{"label":"Freenigma - clipperz.com", "key":"f09cb3790c1110794b834702b8c487c1a42b2508fbe6450a8468477d93790b2e", "notes":""}, "ccd44ae294e7694ea53009c7198506cc0fe3121ad5d9fe2635d247e2afdab2ae":{"label":"Freenigma", "key":"4b05738f6faebc147eac5e425054a91d3cc59dd63844e82d1f0864c0ac8efec7", "notes":""}, "bd5a587bb977a2c728fcd0fa6093dd63a4e62138cf89721115fe45e0396ba5d2":{"label":"clipperz.com - blog", "key":"9cc24328bbce18e8713962428d8123e309a12f7e1d9537bc252e134501734003", "notes":""}, "c2b99939e40d100218baa3ed1cb2a25a5cf726485b0336a0989b104a94157b5f":{"label":"Apple", "key":"75f2651af400629c4e5dd8bcdc3a6c691150d23d6e1a4eb263ff810926d1228f", "notes":""}, "b5bd38d8eb5e23b1354884cc519e05580864fadf74d0a19d2c691cd0c7054d77":{"label":".mac", "key":"5934ae96d2e01282effb368d9086c2ba5d1d856ad91dd6f04f5bace26a1c0cbe", "notes":""}, "ff79a2282cf246add520a3c06e835cf6ffaaae95067d45e8e2e8f44da2501380":{"label":"3nity", "key":"33d84c4a91ab053cbf8115c689ede7e504b81199884de449acc257bea534f57f", "notes":""}, "7b2f2a59ebb34b5a49f20b99b546f08b9f4f62cbefdce9699f8ef7e74aeb0552":{"label":"ACM", "key":"b4976bb0892baba81d628513d191de100d89acd58efbb07c823a5bb4abe48a7a", "notes":""}, "b83a6bac0da3a27eb909d34cbad183e77088952f01d8d5321613b7b01635a020":{"label":"Adobe", "key":"d162bc404994a79ec97e0106c3a4edf2f83aca25def130242e11e95e74bd0aaa", "notes":""}, "befc571e9cda1a7dfb1d15200240ca5170386280ee7be6a12716904cb6d0ea44":{"label":"Adobe Photoshop Elements 3", "key":"18a62c3c2065399819707322f467ff4be030d7939acbe5182c8194599845c428", "notes":"Photoshop Elements 2:\n1057-4312-5223-2206-9509-6837"}, "0424f72608fedc969d64a6d5b4a16dd3ce860a230cd6d87d936439f4dd2aafc7":{"label":"Agatra", "key":"c35158a21b2af75d414232b742ab738d042314e00209f8fca94c8c704c891f23", "notes":""}, "e5e17c29fd598acb4f4c7d621dbdcb045d4d0cabf7d8a19e24420c440cdc3935":{"label":"AIM", "key":"8561ac421d845921978387b5e6b362750b57ed08feda8ec12b9378b69f67ceff", "notes":""}, "de890eb76a4b0cabd4ffd490adad1ff1b73238c7b5ee6dde1a2aeab2d03ebe93":{"label":"Anna Vespignani", "key":"79a970af0d2d30643dc2db4d16757395c1f22c311919036c2a22b7581982144a", "notes":""}, "0dc8d3989d0b35d672c012057d3eb7b111f16e79329e08a9ffb31ac7accbab21":{"label":"Bloglines", "key":"fe81f4df8c42fd81c830f9af408e9b074e77fd430e26d0ee285844fe3b092aec", "notes":""}, "85a40a322a59c80cb46519900269dcc7cf6947213d03dfc9371dd1930373a65b":{"label":"Bow.it", "key":"64a1a9fec99c9238dc8180a01484a1ccf5f50fcd6e9a95a52b8b49fb9ca00bdc", "notes":""}, "60308062a1848a301641a74712d220eef191a280ba0a8355992f0e61ed793811":{"label":"GMail - feedback", "key":"fad310cb2e6152c3faf78b7183c99f3044f5d31ee364068b80580c271a7784ef", "notes":""}, "257ac2da79ee1cd46dfa214d91f5ece213b6bbade28d1ee71495c81a3d7e033a":{"label":"Fineco", "key":"8f99de2635b5dad7987180bc0bff49947eb37cc75d6a5d1ee1f13ed7567465a3", "notes":""}, "78261622810232b6da5efcd52b1c9b0bd87c62517bf4df25323ca6a0b49d84ec":{"label":"mon.itor.us", "key":"d2aa7164007c5deac8bb73580a6ab0d051f747e801ecd30284eff725d0ffaba2", "notes":""}, "4b78dc0376d07e57d77b4c7318d2f222956adb6ff7360b73e60b8bb8b85f3d11":{"label":"Lamba Probe - forum", "key":"f73906817fddba4d8f816334cb2fd0cd5ae91bc29bce6a69fdd5cf98fc96911f", "notes":""}, "78ca2c85908275d788c2f7dd0306ca5e03b83637bb3812272b697e12e9dbf941":{"label":"MeasureMap", "key":"2385ce9536ebb7863b6a4c8b1f5c428587e4d6420a4bbcd31b935cb00bbd768e", "notes":""}, "4c2c7f0d733b647e6f388c9a4590a2a864cd2de259b66aba9b3cf92bdc3cf9bc":{"label":"NGI - Squillo", "key":"96f20c212be02fb38c8b2dfc83d8e864dd84dcb95297a7fecf9280e1e4dcffe3", "notes":""}, "eaeadf6d36f8ee6916c33b9e5bf480b663dc90c0c7f370ff5a1f2fd998cf1143":{"label":"NGI - F5", "key":"00347769244b208647c24e6a64f8fa4213e97eb2135ecfcb277b341c28616a59", "notes":""}, "19654392222206d60547073209672dde1c743ea371ddc20a2bd8254e561a4ec0":{"label":"CVSdude", "key":"ed0ab5080a29eb1b20927142d21ab8f67b61c2c7b19623bb610af030dfd42c02", "notes":""}, "6b10514d50e745f1dab5a40e8629ecf1a8c78a5d6e3895f3637fb67d2d3f9993":{"label":"Yahoo", "key":"6380a7655cd790d1f1e6f482e92ae04201568ff0cab887e65102e9396df1b86e", "notes":"note"}}, "directLogins":{"eac496e0b1ec75ea403f821fedc7f51f98dac639713ebe577f969f607a8943f5":{"record":"111855cedd650dfcbbce597d764583c6b040df4b71f5fa0161fb8d10514ee48f", "label":"R@cine - WebMail", "favicon":"http://www.racine.ra.it/favicon.ico"}, "ef564a022630d4395a9ecac854f3b127b3518cec362323ccc605079c0749c152":{"record":"1cef440eecea59f47554aa04b94e18c1d9fc761246b911f89a7da72d544cac48", "label":"Amazon sign in", "favicon":"http://www.amazon.com/favicon.ico"}, "4f14b88a4055ff23a00d625382650888ce9284fe869304775e43e3e33ee5bbb6":{"record":"6ad2cda35f97743cfddf2133cdf3142fe6419e683484531f1ef1e67431f44284", "label":"Aruba - hosting", "favicon":"http://hosting.aruba.it/favicon.ico"}, "e94c0d12d1db0badc31a8bbbbc4b08d2065a39f458462bbff9756f7b5eb7fedf":{"record":"741ce1d21839c69db754309b04ce02fbb4104f6cb87572c056ae4af918420700", "label":"Aruba - sql hosting", "favicon":"http://mysql.aruba.it/favicon.ico"}, "7299249153ef93a44e2f248ca3a73badde56e71d70919bb5637093c2abbe2c9a":{"record":"bd5a587bb977a2c728fcd0fa6093dd63a4e62138cf89721115fe45e0396ba5d2", "label":"clipperz.com - blog", "favicon":"http://www.clipperz.com/favicon.ico"}, "66876dbae68778d4c104bc12f01adcb21d47d9eace8db30ef95f74f461afcb59":{"record":"73fb52ed51533657d6ebb020d5026fb4deb601dadce802de58f7fff4b56e1495", "label":"DynDns - clipperz", "favicon":"http://www.dyndns.com/favicon.ico"}, "a60c65030a1797abde3e2089c3e5de9648f66bf71cebf0b58c26e729ad8d6a45":{"record":"5054f0b94cd97610a1bc0ed8671b6fb5b25bf7a5582677059fcaaea75fac27bc", "label":"DynDns - gcsolaroli", "favicon":"http://www.dyndns.com/favicon.ico"}, "08d6c5dff9fed4a2f237c32dd0a93ac46b2c45370d07f56fa76064be3b8fecbf":{"record":"30c4f575799fc6908765fc8b54f4a9a483cb32e12aa89feae545976870a9102e", "label":"GMail - giulio.cesare", "favicon":"http://www.google.com/favicon.ico"}, "9e75e12f0f52f248cc7ae517869dd7b02303037d32d9fb4fa0ab0e013923c304":{"record":"c9dae2b7a60b300008306f5ec731b60050250df8f8ff34f7d9cce92762121b99", "label":"Il manifesto", "favicon":"http://abbonati.ilmanifesto.it/favicon.ico"}, "935bf9553fbcb85b8bd5b98c6901d7cccb2566b395f192cbea71e7822979aaf2":{"record":"f1aac97154a0e52c5e33508afa82df5a9d6dcde24883a240b8c072a3238da0b6", "label":"Imap4All.com - account", "favicon":"http://www.imap4all.com/favicon.ico"}, "9504205ec29b89e6ccd0f3afc7a447d8891da0c71a0222f1860f98a8f8bc6677":{"record":"f1aac97154a0e52c5e33508afa82df5a9d6dcde24883a240b8c072a3238da0b6", "label":"Imap4all.com - WebMail", "favicon":"http://webmail.imap4all.com/favicon.ico"}, "3d8dd32d2290ca98789c914580ac2436ece97234217a07d752726d2ac48a4ebf":{"record":"d34c13773b5d8154355c2605024a1dfaf66279ba0fbe3ac19fc1cbc642278fe4", "label":"YouTube [no]", "favicon":"http://www.youtube.com/favicon.ico"}, "7c4b6b5a16984c43ed6d99b04ddfa7e00b624de729ec8aaa3d0f539fb67587e2":{"record":"c2b99939e40d100218baa3ed1cb2a25a5cf726485b0336a0989b104a94157b5f", "label":"Apple Store - Italia", "favicon":"http://store.apple.com/favicon.ico"}, "0b9a98262b50f0ebae5af077467bc627619738873690238fd61093ce9922c9f9":{"record":"ff79a2282cf246add520a3c06e835cf6ffaaae95067d45e8e2e8f44da2501380", "label":"3nity", "favicon":"http://www.3nity.de/favicon.ico"}, "aadeb3388629cfc3b15954f26cf284f52e084191dcdf75752dc4c53d2006c5be":{"record":"7b2f2a59ebb34b5a49f20b99b546f08b9f4f62cbefdce9699f8ef7e74aeb0552", "label":"ACM Web Account", "favicon":"http://portal.acm.org/favicon.ico"}, "3d21c71f2e284ec76f1ae0bb990b683979918f758635bb7d008150f4d7b1447d":{"record":"b83a6bac0da3a27eb909d34cbad183e77088952f01d8d5321613b7b01635a020", "label":"Adobe - Sign In", "favicon":"http://www.adobe.com/favicon.ico"}, "e61a331c998804d46044d4c2acaf96c2fce806f6549e1e16c7d2334872a70953":{"record":"0424f72608fedc969d64a6d5b4a16dd3ce860a230cd6d87d936439f4dd2aafc7", "label":"Agatra [no]", "favicon":"http://www.agatra.com/favicon.ico"}, "9bcd99564fda778061246439fa098dcc79de75b16c542f61e6de7d36dbaf97dc":{"record":"e5e17c29fd598acb4f4c7d621dbdcb045d4d0cabf7d8a19e24420c440cdc3935", "label":"AIM [no]", "favicon":"http://my.screenname.aol.com/favicon.ico"}, "c7093f4663c6e0eba941c557cb86da83fc68cbea36c922e168d0867e6cabe9fe":{"record":"0dc8d3989d0b35d672c012057d3eb7b111f16e79329e08a9ffb31ac7accbab21", "label":"Bloglines", "favicon":"http://www.bloglines.com/favicon.ico"}, "915f2e9460f6e54c6137f3876f9179fc8d2162c59f26e12899c2db6b0e70a68f":{"record":"85a40a322a59c80cb46519900269dcc7cf6947213d03dfc9371dd1930373a65b", "label":"Bow.it", "favicon":"http://www.bow.it/favicon.ico"}, "779701af1beb2a91735ba1a2e471b948f0d985bb0df256f5e089291ce3405bd2":{"record":"b2836a864ff081b6f053c3f5f13dfb29c81af33d25a316cdd82af747ea71bea0", "label":"GMail - Clipperz", "favicon":"http://www.google.com/favicon.ico"}, "1c300539a98c874d52134b6b5a591172acc00c0947692f3da284447f7d511eaf":{"record":"60308062a1848a301641a74712d220eef191a280ba0a8355992f0e61ed793811", "label":"GMail - feedback", "favicon":"http://www.google.com/favicon.ico"}, "f9dccdf7a98735fd7a6b5d04c09177005c0de14f8f92b04007f06a281ecdf31e":{"record":"30c4f575799fc6908765fc8b54f4a9a483cb32e12aa89feae545976870a9102e", "label":"Blogger", "favicon":"http://www.google.com/favicon.ico"}, "48497a89f3bfd567758977e1c32b4497d28c843880667ee52fa4cfcb53c5f9e4":{"record":"378a790452de46e1079a99eba2e15094a096b418cccd0262b8b20244eb94d2df", "label":"NewsGator", "favicon":"http://www.newsgator.com/favicon.ico"}, "134cd28f150df4f2a089f4807bb7a35fb7ece22ec41244f72e63f8b43637a4cd":{"record":"4b78dc0376d07e57d77b4c7318d2f222956adb6ff7360b73e60b8bb8b85f3d11", "label":"Lambda Probe - forum", "favicon":"http://www.lambdaprobe.org/favicon.ico"}, "2ab6106a81513b70f1ba0d7c5c3ef54fa6f4bcadf01d2eeaa2b31b9299551398":{"record":"78ca2c85908275d788c2f7dd0306ca5e03b83637bb3812272b697e12e9dbf941", "label":"Measure Map", "favicon":"http://alpha.measuremap.com/favicon.ico"}, "53ccdc41b43da9b018847f9faa8effb35e7a6c6e78a54e9ee7816fc02f0ea63b":{"record":"4c2c7f0d733b647e6f388c9a4590a2a864cd2de259b66aba9b3cf92bdc3cf9bc", "label":"NGI - Squillo", "favicon":"http://www.ngi.it/favicon.ico"}, "ca520e7081fba1df3ef79c3d00266cffc8e4567def29d67ae812b7ed6283fb12":{"record":"eaeadf6d36f8ee6916c33b9e5bf480b663dc90c0c7f370ff5a1f2fd998cf1143", "label":"NGI - F5", "favicon":"http://www.ngi.it/favicon.ico"}, "80e63e135d7abd2b2990f42af4f8d1f8e8b1146aed44dc36975061fbf360a983":{"record":"6b10514d50e745f1dab5a40e8629ecf1a8c78a5d6e3895f3637fb67d2d3f9993", "label":"Yahoo! Mail", "favicon":"http://login.yahoo.com/favicon.ico"}}, "preferences":{"preferredLanguage":"en-US"}}; 81 plainText = {"records":{"f1aac97154a0e52c5e33508afa82df5a9d6dcde24883a240b8c072a3238da0b6":{"label":"imap4all [no]", "key":"f54b5033d1152456acb67974c45ee6771f8411e300c9533359dfacacf60dcbbd", "notes":""}, "c9dae2b7a60b300008306f5ec731b60050250df8f8ff34f7d9cce92762121b99":{"label":"Il manifesto", "key":"6e0ef134503110e72f444e7d102a4b1cc6ae28f2e0b1287c2b1875ff052fc16c", "notes":""}, "70d536c89a86b1aa9e077d6f9c717306a5d6c8d5549789e42dfb4f981484f116":{"label":"OmniGroup applications", "key":"7b432b7dae39ff5951db31947fa721dc012af0da4055760c6df3b02e776ef22c", "notes":"url: http://www.omnigroup.com\n\nLicence owner: Giulio Cesare Solaroli\n\nOmniWeb: EQGP-EMKH-LKWP-MUHQ-OUHL-LDF\nOmniGraffle:\nOmniOutliner:\nOmniDiskSweeper:"}, "111855cedd650dfcbbce597d764583c6b040df4b71f5fa0161fb8d10514ee48f":{"label":"R@cine", "key":"57295772c84669b0a224f435e9b75c797ae5999a2d9473ab50f9384ae54f49d6", "notes":""}, "378a790452de46e1079a99eba2e15094a096b418cccd0262b8b20244eb94d2df":{"label":"NewsGator", "key":"6ee16f6932ee02000c49dbcc685c84074b40d7956e5f4bc1100030a0f9a41f1a", "notes":""}, "30c4f575799fc6908765fc8b54f4a9a483cb32e12aa89feae545976870a9102e":{"label":"GMail - giulio.cesare", "key":"0395efd852b00700bcf78b65350ec15932430df71201d2c53a11b0269b557d1a", "notes":""}, "b2836a864ff081b6f053c3f5f13dfb29c81af33d25a316cdd82af747ea71bea0":{"label":"GMail - clipperz.com", "key":"90d6ae70d89c8211404b6f9d6c70b6b9c113fff74f474a67b34acd9c1c048d1f", "notes":""}, "6ad2cda35f97743cfddf2133cdf3142fe6419e683484531f1ef1e67431f44284":{"label":"Aruba - hosting", "key":"5c7472d24d57391c63ea99ed1fc9de179d225abd335fa65702018cfea6083d47", "notes":""}, "741ce1d21839c69db754309b04ce02fbb4104f6cb87572c056ae4af918420700":{"label":"Aruba - sql hosting", "key":"f6bd942ac3b0b7065771e5197c7499b345a10f7a4843d00c3ba3809d0ea059dc", "notes":""}, "1cef440eecea59f47554aa04b94e18c1d9fc761246b911f89a7da72d544cac48":{"label":"Amazon", "key":"1ae022b4d14b642f113703b2a98931bd892dec2da785ab5ff6fc1d0aac7537f1", "notes":""}, "d34c13773b5d8154355c2605024a1dfaf66279ba0fbe3ac19fc1cbc642278fe4":{"label":"YouTube [no]", "key":"4c6593d4f6448137939b364b84c81501fadb60f7871fe5fa63c93e97bb5c4648", "notes":""}, "5054f0b94cd97610a1bc0ed8671b6fb5b25bf7a5582677059fcaaea75fac27bc":{"label":"DynDns - gcsolaroli", "key":"f8ed9e7a3630deed046eda37ebc63ecb4d63668a2f97224d7628fdc53b242467", "notes":""}, "73fb52ed51533657d6ebb020d5026fb4deb601dadce802de58f7fff4b56e1495":{"label":"DynDns - clipperz", "key":"d8bc295177383a523e67b61b166e0ca956ab4c2ee86800559a009d2716064f6d", "notes":""}, "48d4c0546c032be26ecce4da41e020129afa7fc34cfe164ea72e1c9953d2e6bb":{"label":"Bol.it", "key":"cada5dadeebd8d12190954d21f1a944c8799d034f028be195b448935fcf970c7", "notes":""}, "d62d420db34720ccc054df06b88725ea79020ffa9389ca15e70137fb4dfd0883":{"label":"Freenigma - clipperz.com", "key":"f09cb3790c1110794b834702b8c487c1a42b2508fbe6450a8468477d93790b2e", "notes":""}, "ccd44ae294e7694ea53009c7198506cc0fe3121ad5d9fe2635d247e2afdab2ae":{"label":"Freenigma", "key":"4b05738f6faebc147eac5e425054a91d3cc59dd63844e82d1f0864c0ac8efec7", "notes":""}, "bd5a587bb977a2c728fcd0fa6093dd63a4e62138cf89721115fe45e0396ba5d2":{"label":"clipperz.com - blog", "key":"9cc24328bbce18e8713962428d8123e309a12f7e1d9537bc252e134501734003", "notes":""}, "c2b99939e40d100218baa3ed1cb2a25a5cf726485b0336a0989b104a94157b5f":{"label":"Apple", "key":"75f2651af400629c4e5dd8bcdc3a6c691150d23d6e1a4eb263ff810926d1228f", "notes":""}, "b5bd38d8eb5e23b1354884cc519e05580864fadf74d0a19d2c691cd0c7054d77":{"label":".mac", "key":"5934ae96d2e01282effb368d9086c2ba5d1d856ad91dd6f04f5bace26a1c0cbe", "notes":""}, "ff79a2282cf246add520a3c06e835cf6ffaaae95067d45e8e2e8f44da2501380":{"label":"3nity", "key":"33d84c4a91ab053cbf8115c689ede7e504b81199884de449acc257bea534f57f", "notes":""}, "7b2f2a59ebb34b5a49f20b99b546f08b9f4f62cbefdce9699f8ef7e74aeb0552":{"label":"ACM", "key":"b4976bb0892baba81d628513d191de100d89acd58efbb07c823a5bb4abe48a7a", "notes":""}, "b83a6bac0da3a27eb909d34cbad183e77088952f01d8d5321613b7b01635a020":{"label":"Adobe", "key":"d162bc404994a79ec97e0106c3a4edf2f83aca25def130242e11e95e74bd0aaa", "notes":""}, "befc571e9cda1a7dfb1d15200240ca5170386280ee7be6a12716904cb6d0ea44":{"label":"Adobe Photoshop Elements 3", "key":"18a62c3c2065399819707322f467ff4be030d7939acbe5182c8194599845c428", "notes":"Photoshop Elements 2:\n1057-4312-5223-2206-9509-6837"}, "0424f72608fedc969d64a6d5b4a16dd3ce860a230cd6d87d936439f4dd2aafc7":{"label":"Agatra", "key":"c35158a21b2af75d414232b742ab738d042314e00209f8fca94c8c704c891f23", "notes":""}, "e5e17c29fd598acb4f4c7d621dbdcb045d4d0cabf7d8a19e24420c440cdc3935":{"label":"AIM", "key":"8561ac421d845921978387b5e6b362750b57ed08feda8ec12b9378b69f67ceff", "notes":""}, "de890eb76a4b0cabd4ffd490adad1ff1b73238c7b5ee6dde1a2aeab2d03ebe93":{"label":"Anna Vespignani", "key":"79a970af0d2d30643dc2db4d16757395c1f22c311919036c2a22b7581982144a", "notes":""}, "0dc8d3989d0b35d672c012057d3eb7b111f16e79329e08a9ffb31ac7accbab21":{"label":"Bloglines", "key":"fe81f4df8c42fd81c830f9af408e9b074e77fd430e26d0ee285844fe3b092aec", "notes":""}, "85a40a322a59c80cb46519900269dcc7cf6947213d03dfc9371dd1930373a65b":{"label":"Bow.it", "key":"64a1a9fec99c9238dc8180a01484a1ccf5f50fcd6e9a95a52b8b49fb9ca00bdc", "notes":""}, "60308062a1848a301641a74712d220eef191a280ba0a8355992f0e61ed793811":{"label":"GMail - feedback", "key":"fad310cb2e6152c3faf78b7183c99f3044f5d31ee364068b80580c271a7784ef", "notes":""}, "257ac2da79ee1cd46dfa214d91f5ece213b6bbade28d1ee71495c81a3d7e033a":{"label":"Fineco", "key":"8f99de2635b5dad7987180bc0bff49947eb37cc75d6a5d1ee1f13ed7567465a3", "notes":""}, "78261622810232b6da5efcd52b1c9b0bd87c62517bf4df25323ca6a0b49d84ec":{"label":"mon.itor.us", "key":"d2aa7164007c5deac8bb73580a6ab0d051f747e801ecd30284eff725d0ffaba2", "notes":""}, "4b78dc0376d07e57d77b4c7318d2f222956adb6ff7360b73e60b8bb8b85f3d11":{"label":"Lamba Probe - forum", "key":"f73906817fddba4d8f816334cb2fd0cd5ae91bc29bce6a69fdd5cf98fc96911f", "notes":""}, "78ca2c85908275d788c2f7dd0306ca5e03b83637bb3812272b697e12e9dbf941":{"label":"MeasureMap", "key":"2385ce9536ebb7863b6a4c8b1f5c428587e4d6420a4bbcd31b935cb00bbd768e", "notes":""}, "4c2c7f0d733b647e6f388c9a4590a2a864cd2de259b66aba9b3cf92bdc3cf9bc":{"label":"NGI - Squillo", "key":"96f20c212be02fb38c8b2dfc83d8e864dd84dcb95297a7fecf9280e1e4dcffe3", "notes":""}, "eaeadf6d36f8ee6916c33b9e5bf480b663dc90c0c7f370ff5a1f2fd998cf1143":{"label":"NGI - F5", "key":"00347769244b208647c24e6a64f8fa4213e97eb2135ecfcb277b341c28616a59", "notes":""}, "19654392222206d60547073209672dde1c743ea371ddc20a2bd8254e561a4ec0":{"label":"CVSdude", "key":"ed0ab5080a29eb1b20927142d21ab8f67b61c2c7b19623bb610af030dfd42c02", "notes":""}, "6b10514d50e745f1dab5a40e8629ecf1a8c78a5d6e3895f3637fb67d2d3f9993":{"label":"Yahoo", "key":"6380a7655cd790d1f1e6f482e92ae04201568ff0cab887e65102e9396df1b86e", "notes":"note"}}, "directLogins":{"eac496e0b1ec75ea403f821fedc7f51f98dac639713ebe577f969f607a8943f5":{"record":"111855cedd650dfcbbce597d764583c6b040df4b71f5fa0161fb8d10514ee48f", "label":"R@cine - WebMail", "favicon":"http://www.racine.ra.it/favicon.ico"}, "ef564a022630d4395a9ecac854f3b127b3518cec362323ccc605079c0749c152":{"record":"1cef440eecea59f47554aa04b94e18c1d9fc761246b911f89a7da72d544cac48", "label":"Amazon sign in", "favicon":"http://www.amazon.com/favicon.ico"}, "4f14b88a4055ff23a00d625382650888ce9284fe869304775e43e3e33ee5bbb6":{"record":"6ad2cda35f97743cfddf2133cdf3142fe6419e683484531f1ef1e67431f44284", "label":"Aruba - hosting", "favicon":"http://hosting.aruba.it/favicon.ico"}, "e94c0d12d1db0badc31a8bbbbc4b08d2065a39f458462bbff9756f7b5eb7fedf":{"record":"741ce1d21839c69db754309b04ce02fbb4104f6cb87572c056ae4af918420700", "label":"Aruba - sql hosting", "favicon":"http://mysql.aruba.it/favicon.ico"}, "7299249153ef93a44e2f248ca3a73badde56e71d70919bb5637093c2abbe2c9a":{"record":"bd5a587bb977a2c728fcd0fa6093dd63a4e62138cf89721115fe45e0396ba5d2", "label":"clipperz.com - blog", "favicon":"http://www.clipperz.com/favicon.ico"}, "66876dbae68778d4c104bc12f01adcb21d47d9eace8db30ef95f74f461afcb59":{"record":"73fb52ed51533657d6ebb020d5026fb4deb601dadce802de58f7fff4b56e1495", "label":"DynDns - clipperz", "favicon":"http://www.dyndns.com/favicon.ico"}, "a60c65030a1797abde3e2089c3e5de9648f66bf71cebf0b58c26e729ad8d6a45":{"record":"5054f0b94cd97610a1bc0ed8671b6fb5b25bf7a5582677059fcaaea75fac27bc", "label":"DynDns - gcsolaroli", "favicon":"http://www.dyndns.com/favicon.ico"}, "08d6c5dff9fed4a2f237c32dd0a93ac46b2c45370d07f56fa76064be3b8fecbf":{"record":"30c4f575799fc6908765fc8b54f4a9a483cb32e12aa89feae545976870a9102e", "label":"GMail - giulio.cesare", "favicon":"http://www.google.com/favicon.ico"}, "9e75e12f0f52f248cc7ae517869dd7b02303037d32d9fb4fa0ab0e013923c304":{"record":"c9dae2b7a60b300008306f5ec731b60050250df8f8ff34f7d9cce92762121b99", "label":"Il manifesto", "favicon":"http://abbonati.ilmanifesto.it/favicon.ico"}, "935bf9553fbcb85b8bd5b98c6901d7cccb2566b395f192cbea71e7822979aaf2":{"record":"f1aac97154a0e52c5e33508afa82df5a9d6dcde24883a240b8c072a3238da0b6", "label":"Imap4All.com - account", "favicon":"http://www.imap4all.com/favicon.ico"}, "9504205ec29b89e6ccd0f3afc7a447d8891da0c71a0222f1860f98a8f8bc6677":{"record":"f1aac97154a0e52c5e33508afa82df5a9d6dcde24883a240b8c072a3238da0b6", "label":"Imap4all.com - WebMail", "favicon":"http://webmail.imap4all.com/favicon.ico"}, "3d8dd32d2290ca98789c914580ac2436ece97234217a07d752726d2ac48a4ebf":{"record":"d34c13773b5d8154355c2605024a1dfaf66279ba0fbe3ac19fc1cbc642278fe4", "label":"YouTube [no]", "favicon":"http://www.youtube.com/favicon.ico"}, "7c4b6b5a16984c43ed6d99b04ddfa7e00b624de729ec8aaa3d0f539fb67587e2":{"record":"c2b99939e40d100218baa3ed1cb2a25a5cf726485b0336a0989b104a94157b5f", "label":"Apple Store - Italia", "favicon":"http://store.apple.com/favicon.ico"}, "0b9a98262b50f0ebae5af077467bc627619738873690238fd61093ce9922c9f9":{"record":"ff79a2282cf246add520a3c06e835cf6ffaaae95067d45e8e2e8f44da2501380", "label":"3nity", "favicon":"http://www.3nity.de/favicon.ico"}, "aadeb3388629cfc3b15954f26cf284f52e084191dcdf75752dc4c53d2006c5be":{"record":"7b2f2a59ebb34b5a49f20b99b546f08b9f4f62cbefdce9699f8ef7e74aeb0552", "label":"ACM Web Account", "favicon":"http://portal.acm.org/favicon.ico"}, "3d21c71f2e284ec76f1ae0bb990b683979918f758635bb7d008150f4d7b1447d":{"record":"b83a6bac0da3a27eb909d34cbad183e77088952f01d8d5321613b7b01635a020", "label":"Adobe - Sign In", "favicon":"http://www.adobe.com/favicon.ico"}, "e61a331c998804d46044d4c2acaf96c2fce806f6549e1e16c7d2334872a70953":{"record":"0424f72608fedc969d64a6d5b4a16dd3ce860a230cd6d87d936439f4dd2aafc7", "label":"Agatra [no]", "favicon":"http://www.agatra.com/favicon.ico"}, "9bcd99564fda778061246439fa098dcc79de75b16c542f61e6de7d36dbaf97dc":{"record":"e5e17c29fd598acb4f4c7d621dbdcb045d4d0cabf7d8a19e24420c440cdc3935", "label":"AIM [no]", "favicon":"http://my.screenname.aol.com/favicon.ico"}, "c7093f4663c6e0eba941c557cb86da83fc68cbea36c922e168d0867e6cabe9fe":{"record":"0dc8d3989d0b35d672c012057d3eb7b111f16e79329e08a9ffb31ac7accbab21", "label":"Bloglines", "favicon":"http://www.bloglines.com/favicon.ico"}, "915f2e9460f6e54c6137f3876f9179fc8d2162c59f26e12899c2db6b0e70a68f":{"record":"85a40a322a59c80cb46519900269dcc7cf6947213d03dfc9371dd1930373a65b", "label":"Bow.it", "favicon":"http://www.bow.it/favicon.ico"}, "779701af1beb2a91735ba1a2e471b948f0d985bb0df256f5e089291ce3405bd2":{"record":"b2836a864ff081b6f053c3f5f13dfb29c81af33d25a316cdd82af747ea71bea0", "label":"GMail - Clipperz", "favicon":"http://www.google.com/favicon.ico"}, "1c300539a98c874d52134b6b5a591172acc00c0947692f3da284447f7d511eaf":{"record":"60308062a1848a301641a74712d220eef191a280ba0a8355992f0e61ed793811", "label":"GMail - feedback", "favicon":"http://www.google.com/favicon.ico"}, "f9dccdf7a98735fd7a6b5d04c09177005c0de14f8f92b04007f06a281ecdf31e":{"record":"30c4f575799fc6908765fc8b54f4a9a483cb32e12aa89feae545976870a9102e", "label":"Blogger", "favicon":"http://www.google.com/favicon.ico"}, "48497a89f3bfd567758977e1c32b4497d28c843880667ee52fa4cfcb53c5f9e4":{"record":"378a790452de46e1079a99eba2e15094a096b418cccd0262b8b20244eb94d2df", "label":"NewsGator", "favicon":"http://www.newsgator.com/favicon.ico"}, "134cd28f150df4f2a089f4807bb7a35fb7ece22ec41244f72e63f8b43637a4cd":{"record":"4b78dc0376d07e57d77b4c7318d2f222956adb6ff7360b73e60b8bb8b85f3d11", "label":"Lambda Probe - forum", "favicon":"http://www.lambdaprobe.org/favicon.ico"}, "2ab6106a81513b70f1ba0d7c5c3ef54fa6f4bcadf01d2eeaa2b31b9299551398":{"record":"78ca2c85908275d788c2f7dd0306ca5e03b83637bb3812272b697e12e9dbf941", "label":"Measure Map", "favicon":"http://alpha.measuremap.com/favicon.ico"}, "53ccdc41b43da9b018847f9faa8effb35e7a6c6e78a54e9ee7816fc02f0ea63b":{"record":"4c2c7f0d733b647e6f388c9a4590a2a864cd2de259b66aba9b3cf92bdc3cf9bc", "label":"NGI - Squillo", "favicon":"http://www.ngi.it/favicon.ico"}, "ca520e7081fba1df3ef79c3d00266cffc8e4567def29d67ae812b7ed6283fb12":{"record":"eaeadf6d36f8ee6916c33b9e5bf480b663dc90c0c7f370ff5a1f2fd998cf1143", "label":"NGI - F5", "favicon":"http://www.ngi.it/favicon.ico"}, "80e63e135d7abd2b2990f42af4f8d1f8e8b1146aed44dc36975061fbf360a983":{"record":"6b10514d50e745f1dab5a40e8629ecf1a8c78a5d6e3895f3637fb67d2d3f9993", "label":"Yahoo! Mail", "favicon":"http://login.yahoo.com/favicon.ico"}}, "preferences":{"preferredLanguage":"en-US"}};
85/* */ 82/* */
86 plainText = { 83 plainText = {
87 "records": { 84 "records": {
88 "1": { 85 "1": {
89 "label":"imap4all [no]", 86 "label":"imap4all [no]",
90 "key":"f54b5033d1152456acb67974c45ee6771f8411e300c9533359dfacacf60dcbbd", 87 "key":"f54b5033d1152456acb67974c45ee6771f8411e300c9533359dfacacf60dcbbd",
91 "notes":"" 88 "notes":""
92 }, 89 },
93 "2": { 90 "2": {
94 "label":"Il manifesto", 91 "label":"Il manifesto",
95 "key":"6e0ef134503110e72f444e7d102a4b1cc6ae28f2e0b1287c2b1875ff052fc16c", 92 "key":"6e0ef134503110e72f444e7d102a4b1cc6ae28f2e0b1287c2b1875ff052fc16c",
96 "notes":"" 93 "notes":""
97 }, 94 },
98 "3": { 95 "3": {
99 "label": "OmniGroup applications", 96 "label": "OmniGroup applications",
100 "key": "7b432b7dae39ff5951db31947fa721dc012af0da4055760c6df3b02e776ef22c", 97 "key": "7b432b7dae39ff5951db31947fa721dc012af0da4055760c6df3b02e776ef22c",
101 "notes": "url: http://www.omnigroup.com\n\nLicence owner: Giulio Cesare Solaroli\n\nOmniWeb: EQGP-EMKH-LKWP-MUHQ-OUHL-LDF\nOmniGraffle:\nOmniOutliner:\nOmniDiskSweeper:" 98 "notes": "url: http://www.omnigroup.com\n\nLicence owner: Giulio Cesare Solaroli\n\nOmniWeb: EQGP-EMKH-LKWP-MUHQ-OUHL-LDF\nOmniGraffle:\nOmniOutliner:\nOmniDiskSweeper:"
102 }, 99 },
103 "4": { 100 "4": {
104 "label": "R@cine", 101 "label": "R@cine",
105 "key": "57295772c84669b0a224f435e9b75c797ae5999a2d9473ab50f9384ae54f49d6", 102 "key": "57295772c84669b0a224f435e9b75c797ae5999a2d9473ab50f9384ae54f49d6",
106 "notes": "" 103 "notes": ""
107 }, 104 },
108 "5": { 105 "5": {
109 "label": "NewsGator", 106 "label": "NewsGator",
110 "key": "6ee16f6932ee02000c49dbcc685c84074b40d7956e5f4bc1100030a0f9a41f1a", 107 "key": "6ee16f6932ee02000c49dbcc685c84074b40d7956e5f4bc1100030a0f9a41f1a",
111 "notes": "" 108 "notes": ""
112 }, 109 },
113 "6": { 110 "6": {
114 "label": "GMail - giulio.cesare", 111 "label": "GMail - giulio.cesare",
115 "key": "0395efd852b00700bcf78b65350ec15932430df71201d2c53a11b0269b557d1a", 112 "key": "0395efd852b00700bcf78b65350ec15932430df71201d2c53a11b0269b557d1a",
116 "notes": "" 113 "notes": ""
117 }, 114 },
118 "7": { 115 "7": {
119 "label": "GMail - clipperz.com", 116 "label": "GMail - clipperz.com",
120 "key": "90d6ae70d89c8211404b6f9d6c70b6b9c113fff74f474a67b34acd9c1c048d1f", 117 "key": "90d6ae70d89c8211404b6f9d6c70b6b9c113fff74f474a67b34acd9c1c048d1f",
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/Base.html b/frontend/gamma/tests/tests/Clipperz/Crypto/Base.html
index 86fc49a..0ffcdb8 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/Base.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/Base.html
@@ -1,120 +1,117 @@
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<html> 26<html>
30<head> 27<head>
31 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
32 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> 29 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script>
33 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 30 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
34 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 31 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
35 32
36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
39 36
40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Functions.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Functions.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
44 41
45</head> 42</head>
46<body> 43<body>
47<pre id="test"> 44<pre id="test">
48<script type="text/javascript"> 45<script type="text/javascript">
49try { 46try {
50 var secretKey; 47 var secretKey;
51 varpublicKey; 48 varpublicKey;
52 varplainString; 49 varplainString;
53 varencryptedString; 50 varencryptedString;
54 51
55 52
56 secretKey = "s3cr37k39"; 53 secretKey = "s3cr37k39";
57 plainString = "The Quick Brown Fox Jumps Over The Lazy Dog"; 54 plainString = "The Quick Brown Fox Jumps Over The Lazy Dog";
58 encryptedString = Clipperz.Crypto.Base.encryptUsingSecretKey(secretKey, plainString); 55 encryptedString = Clipperz.Crypto.Base.encryptUsingSecretKey(secretKey, plainString);
59 56
60 //------------------------------------------------------------------------- 57 //-------------------------------------------------------------------------
61 // 58 //
62 //Secret key encryption / decryption 59 //Secret key encryption / decryption
63 // 60 //
64 is (isUndefinedOrNull(encryptedString), false, "An encrypted string should not be empty"); 61 is (isUndefinedOrNull(encryptedString), false, "An encrypted string should not be empty");
65 is (plainString, Clipperz.Crypto.Base.decryptUsingSecretKey(secretKey, encryptedString), "I should be able to encrypt and then decrypt safely"); 62 is (plainString, Clipperz.Crypto.Base.decryptUsingSecretKey(secretKey, encryptedString), "I should be able to encrypt and then decrypt safely");
66 63
67 try { 64 try {
68 vardecryptedText; 65 vardecryptedText;
69 66
70 decryptedText = Clipperz.Crypto.Base.decryptUsingSecretKey("anotherKey", encryptedString); 67 decryptedText = Clipperz.Crypto.Base.decryptUsingSecretKey("anotherKey", encryptedString);
71 ok( false, "It should not be possible to decrypt a text with a different passphrase (decrypted text: " + decryptedText + ")" ); 68 ok( false, "It should not be possible to decrypt a text with a different passphrase (decrypted text: " + decryptedText + ")" );
72 } catch (e) { 69 } catch (e) {
73 ok( e instanceof Error, "Trying to decrypt a message with the wrong passphrase raised an error" ); 70 ok( e instanceof Error, "Trying to decrypt a message with the wrong passphrase raised an error" );
74 } 71 }
75 72
76 is (encryptedString == Clipperz.Crypto.Base.encryptUsingSecretKey(secretKey, plainString), false, "Two consecutive encryption of the same text should return different values"); 73 is (encryptedString == Clipperz.Crypto.Base.encryptUsingSecretKey(secretKey, plainString), false, "Two consecutive encryption of the same text should return different values");
77 74
78 secretKey = "trustno1"; 75 secretKey = "trustno1";
79 plainString = "59fed719f8959a468de367f77a33a7536d53b8e4d25ed49ccc89a94cd6899da90415623fb73386e9635034fb65ad5f248445a1c66703f760d64a8271ad342b1"; 76 plainString = "59fed719f8959a468de367f77a33a7536d53b8e4d25ed49ccc89a94cd6899da90415623fb73386e9635034fb65ad5f248445a1c66703f760d64a8271ad342b1";
80 encryptedString = Clipperz.Crypto.Base.encryptUsingSecretKey(secretKey, plainString); 77 encryptedString = Clipperz.Crypto.Base.encryptUsingSecretKey(secretKey, plainString);
81 is (plainString, Clipperz.Crypto.Base.decryptUsingSecretKey(secretKey, encryptedString), "I should be able to encrypt and then decrypt safely"); 78 is (plainString, Clipperz.Crypto.Base.decryptUsingSecretKey(secretKey, encryptedString), "I should be able to encrypt and then decrypt safely");
82 79
83 secretKey = "trustno1"; 80 secretKey = "trustno1";
84 plainString = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed pede. Curabitur a mi id nisi euismod rutrum. Phasellus gravida. Ut luctus. Praesent quis leo sit amet orci imperdiet malesuada. Aenean molestie mauris euismod odio. Suspendisse ullamcorper facilisis nisl. Fusce vestibulum consectetuer risus. Curabitur ut turpis eget arcu facilisis ultricies. Morbi elementum, erat vitae dictum imperdiet, nisi purus rutrum odio, eget ornare ipsum nisl in tortor. Duis vestibulum, nulla et bibendum volutpat, mauris metus facilisis elit, vel gravida tortor leo at enim. Vivamus pulvinar lorem vitae tortor. Morbi rhoncus suscipit urna. Praesent placerat tempus augue. Fusce varius dui a nisi consequat ultricies. Curabitur at nisi. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas."; 81 plainString = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed pede. Curabitur a mi id nisi euismod rutrum. Phasellus gravida. Ut luctus. Praesent quis leo sit amet orci imperdiet malesuada. Aenean molestie mauris euismod odio. Suspendisse ullamcorper facilisis nisl. Fusce vestibulum consectetuer risus. Curabitur ut turpis eget arcu facilisis ultricies. Morbi elementum, erat vitae dictum imperdiet, nisi purus rutrum odio, eget ornare ipsum nisl in tortor. Duis vestibulum, nulla et bibendum volutpat, mauris metus facilisis elit, vel gravida tortor leo at enim. Vivamus pulvinar lorem vitae tortor. Morbi rhoncus suscipit urna. Praesent placerat tempus augue. Fusce varius dui a nisi consequat ultricies. Curabitur at nisi. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.";
85 encryptedString = Clipperz.Crypto.Base.encryptUsingSecretKey(secretKey, plainString); 82 encryptedString = Clipperz.Crypto.Base.encryptUsingSecretKey(secretKey, plainString);
86 is (plainString, Clipperz.Crypto.Base.decryptUsingSecretKey(secretKey, encryptedString), "I should be able to encrypt and then decrypt safely"); 83 is (plainString, Clipperz.Crypto.Base.decryptUsingSecretKey(secretKey, encryptedString), "I should be able to encrypt and then decrypt safely");
87 84
88 secretKey = "trustno1"; 85 secretKey = "trustno1";
89 plainString = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed pede. Curabitur a mi id nisi euismod rutrum. Phasellus gravida. Ut luctus. Praesent quis leo sit amet orci imperdiet malesuada. Aenean molestie mauris euismod odio. Suspendisse ullamcorper facilisis nisl. Fusce vestibulum consectetuer risus. Curabitur ut turpis eget arcu facilisis ultricies. Morbi elementum, erat vitae dictum imperdiet, nisi purus rutrum odio, eget ornare ipsum nisl in tortor. Duis vestibulum, nulla et bibendum volutpat, mauris metus facilisis elit, vel gravida tortor leo at enim. Vivamus pulvinar lorem vitae tortor. Morbi rhoncus suscipit urna. Praesent placerat tempus augue. Fusce varius dui a nisi consequat ultricies. Curabitur at nisi. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas./n/n/nMorbi vel leo non justo condimentum convallis. Vestibulum posuere aliquam nunc. Donec magna magna, euismod nec, pharetra fringilla, tristique mattis, turpis. Duis condimentum lacus eu felis. Sed ultricies. Nullam lacinia ante id diam. Ut quis enim. Fusce at felis quis neque vehicula tempor. Sed feugiat sodales sem. Duis cursus massa in ligula. Vestibulum volutpat, risus in ornare porta, tortor orci vestibulum felis, et eleifend risus odio nec eros. Integer lorem turpis, imperdiet eu, tempor eu, ultricies nec, est. Ut congue. Morbi lacinia vehicula pede. Cras neque sapien, feugiat ac, eleifend eget, mattis et, nisl. Morbi at augue vitae massa laoreet gravida./n/n/nSuspendisse vehicula convallis sem. Sed vel urna. Proin dolor diam, malesuada in, aliquet a, sagittis et, magna. Cras at dui eu mi porta fermentum. Donec pharetra purus sed velit. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque euismod ornare neque. In odio nisi, bibendum non, vulputate ut, tincidunt a, ante. Sed risus arcu, tempus laoreet, euismod id, laoreet mollis, arcu. Ut tempor orci in nibh. Suspendisse potenti. Maecenas accumsan augue at nisl. Donec elementum diam nec metus. Sed vitae lacus sed libero varius semper. Aenean hendrerit tristique arcu. Praesent adipiscing ornare purus. Vestibulum quis eros nec risus accumsan laoreet. Duis consequat ante ut turpis. Curabitur aliquam suscipit ligula. Vivamus adipiscing./n/n/nCurabitur facilisis neque sit amet erat. Aliquam odio augue, vulputate lobortis, rutrum ut, tristique id, leo. Vivamus eu magna. Maecenas et libero. Integer porta, lorem at mollis ullamcorper, purus metus vestibulum erat, ut fringilla dui ante id mi. Morbi vitae ligula. Praesent ornare sapien sed massa. Mauris rhoncus fermentum dolor. Mauris gravida, justo et mollis malesuada, dolor erat fermentum nulla, vel suscipit leo ligula vel augue. Praesent magna enim, dignissim sed, aliquet quis, fermentum viverra, nisi. Vivamus condimentum, nisi quis posuere viverra, enim nunc faucibus lectus, mollis aliquam ipsum enim vel lacus. Suspendisse eget ligula. Aliquam ut metus et justo consectetuer ornare. Donec dapibus tristique pede. Vestibulum interdum ultricies tortor./n/n/nNunc nonummy dictum tortor. Quisque at elit a arcu nonummy elementum. Quisque auctor, risus et sodales euismod, turpis tellus consectetuer ante, quis egestas justo enim quis mi. Nunc fermentum sodales felis. Vivamus odio mi, dignissim vitae, auctor nec, tempus eget, lacus. Ut sapien massa, hendrerit eget, sagittis at, eleifend condimentum, arcu. Curabitur purus orci, facilisis vel, dapibus id, varius rutrum, tortor. Fusce accumsan viverra sem. Quisque tincidunt venenatis risus. Sed tortor justo, volutpat malesuada, sodales ut, vehicula id, magna. Nunc placerat, nibh et imperdiet ultricies, urna nulla luctus sapien, et porta mi odio ac neque. Morbi dignissim. Sed risus pede, adipiscing gravida, pharetra sit amet, convallis non, orci. Morbi adipiscing mauris id massa. Nullam fermentum. Suspendisse eget est"; 86 plainString = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed pede. Curabitur a mi id nisi euismod rutrum. Phasellus gravida. Ut luctus. Praesent quis leo sit amet orci imperdiet malesuada. Aenean molestie mauris euismod odio. Suspendisse ullamcorper facilisis nisl. Fusce vestibulum consectetuer risus. Curabitur ut turpis eget arcu facilisis ultricies. Morbi elementum, erat vitae dictum imperdiet, nisi purus rutrum odio, eget ornare ipsum nisl in tortor. Duis vestibulum, nulla et bibendum volutpat, mauris metus facilisis elit, vel gravida tortor leo at enim. Vivamus pulvinar lorem vitae tortor. Morbi rhoncus suscipit urna. Praesent placerat tempus augue. Fusce varius dui a nisi consequat ultricies. Curabitur at nisi. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas./n/n/nMorbi vel leo non justo condimentum convallis. Vestibulum posuere aliquam nunc. Donec magna magna, euismod nec, pharetra fringilla, tristique mattis, turpis. Duis condimentum lacus eu felis. Sed ultricies. Nullam lacinia ante id diam. Ut quis enim. Fusce at felis quis neque vehicula tempor. Sed feugiat sodales sem. Duis cursus massa in ligula. Vestibulum volutpat, risus in ornare porta, tortor orci vestibulum felis, et eleifend risus odio nec eros. Integer lorem turpis, imperdiet eu, tempor eu, ultricies nec, est. Ut congue. Morbi lacinia vehicula pede. Cras neque sapien, feugiat ac, eleifend eget, mattis et, nisl. Morbi at augue vitae massa laoreet gravida./n/n/nSuspendisse vehicula convallis sem. Sed vel urna. Proin dolor diam, malesuada in, aliquet a, sagittis et, magna. Cras at dui eu mi porta fermentum. Donec pharetra purus sed velit. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque euismod ornare neque. In odio nisi, bibendum non, vulputate ut, tincidunt a, ante. Sed risus arcu, tempus laoreet, euismod id, laoreet mollis, arcu. Ut tempor orci in nibh. Suspendisse potenti. Maecenas accumsan augue at nisl. Donec elementum diam nec metus. Sed vitae lacus sed libero varius semper. Aenean hendrerit tristique arcu. Praesent adipiscing ornare purus. Vestibulum quis eros nec risus accumsan laoreet. Duis consequat ante ut turpis. Curabitur aliquam suscipit ligula. Vivamus adipiscing./n/n/nCurabitur facilisis neque sit amet erat. Aliquam odio augue, vulputate lobortis, rutrum ut, tristique id, leo. Vivamus eu magna. Maecenas et libero. Integer porta, lorem at mollis ullamcorper, purus metus vestibulum erat, ut fringilla dui ante id mi. Morbi vitae ligula. Praesent ornare sapien sed massa. Mauris rhoncus fermentum dolor. Mauris gravida, justo et mollis malesuada, dolor erat fermentum nulla, vel suscipit leo ligula vel augue. Praesent magna enim, dignissim sed, aliquet quis, fermentum viverra, nisi. Vivamus condimentum, nisi quis posuere viverra, enim nunc faucibus lectus, mollis aliquam ipsum enim vel lacus. Suspendisse eget ligula. Aliquam ut metus et justo consectetuer ornare. Donec dapibus tristique pede. Vestibulum interdum ultricies tortor./n/n/nNunc nonummy dictum tortor. Quisque at elit a arcu nonummy elementum. Quisque auctor, risus et sodales euismod, turpis tellus consectetuer ante, quis egestas justo enim quis mi. Nunc fermentum sodales felis. Vivamus odio mi, dignissim vitae, auctor nec, tempus eget, lacus. Ut sapien massa, hendrerit eget, sagittis at, eleifend condimentum, arcu. Curabitur purus orci, facilisis vel, dapibus id, varius rutrum, tortor. Fusce accumsan viverra sem. Quisque tincidunt venenatis risus. Sed tortor justo, volutpat malesuada, sodales ut, vehicula id, magna. Nunc placerat, nibh et imperdiet ultricies, urna nulla luctus sapien, et porta mi odio ac neque. Morbi dignissim. Sed risus pede, adipiscing gravida, pharetra sit amet, convallis non, orci. Morbi adipiscing mauris id massa. Nullam fermentum. Suspendisse eget est";
90 encryptedString = Clipperz.Crypto.Base.encryptUsingSecretKey(secretKey, plainString); 87 encryptedString = Clipperz.Crypto.Base.encryptUsingSecretKey(secretKey, plainString);
91 is (plainString, Clipperz.Crypto.Base.decryptUsingSecretKey(secretKey, encryptedString), "I should be able to encrypt and then decrypt safely"); 88 is (plainString, Clipperz.Crypto.Base.decryptUsingSecretKey(secretKey, encryptedString), "I should be able to encrypt and then decrypt safely");
92 89
93 //secretKey = "trustno1"; 90 //secretKey = "trustno1";
94 //plainString = "{}"; 91 //plainString = "{}";
95 // plainString = "{'tags': {'personal': ['ref_1', 'ref_3'], 'business': ['ref_2', 'ref_3']}, 'records': {'ref_1': {'label': 'record_1', 'key': 'key_1'}, 'ref_2': {'label': 'record_2', 'key': 'key_2'}, 'ref_3': {'label': 'record_3', 'key': 'key_3'}}}"; 92 // plainString = "{'tags': {'personal': ['ref_1', 'ref_3'], 'business': ['ref_2', 'ref_3']}, 'records': {'ref_1': {'label': 'record_1', 'key': 'key_1'}, 'ref_2': {'label': 'record_2', 'key': 'key_2'}, 'ref_3': {'label': 'record_3', 'key': 'key_3'}}}";
96 //plainString = "{'tags': {}, 'records': {'07a5a92fcb334f757998ba14f3251f126d038318b3ac5e584bd712804c548084': {'label': 'Un bel record', 'key': '2a3f261c20a6a98dcc82b13fba013130b759f20602b4b13c5760879e087482a4'}}}"; 93 //plainString = "{'tags': {}, 'records': {'07a5a92fcb334f757998ba14f3251f126d038318b3ac5e584bd712804c548084': {'label': 'Un bel record', 'key': '2a3f261c20a6a98dcc82b13fba013130b759f20602b4b13c5760879e087482a4'}}}";
97 //encryptedString = Clipperz.Crypto.Base.encryptUsingSecretKey(secretKey, plainString); 94 //encryptedString = Clipperz.Crypto.Base.encryptUsingSecretKey(secretKey, plainString);
98 //is(encryptedString, "{}", "encrypted value"); 95 //is(encryptedString, "{}", "encrypted value");
99 96
100 97
101 //secretKey = "trustno1"; 98 //secretKey = "trustno1";
102 //encryptedString = "0d43a4544424ffa519f2e43b7a46f703884fd94ff9879479563f6f252a573b253d3e77bc4f5f30f17bd11d2907718921ab8c9e1faccbe4314793fa323eb85eaf1bfbce5f7deea601e15b781782181cbff3c649dafef39abb70e8573e4f9be220f2286b01c3bd51d5c4a79b9d44a27be3b0994667302e301ca3dc074fb1bc7abc03d12b9e58ba0249435a120858c96e8ae99570718541499ab958a8fb92b63390be070ff61fc6ef107061693ab14c1915118cc6671ab7cf99b9cca553d6b5a7c314bffcd933e0a59f056d842a47cfe8571110b4764c5225443210d99b43b80a23c20fe953de3e1329d72cfb20139fe1ca"; 99 //encryptedString = "0d43a4544424ffa519f2e43b7a46f703884fd94ff9879479563f6f252a573b253d3e77bc4f5f30f17bd11d2907718921ab8c9e1faccbe4314793fa323eb85eaf1bfbce5f7deea601e15b781782181cbff3c649dafef39abb70e8573e4f9be220f2286b01c3bd51d5c4a79b9d44a27be3b0994667302e301ca3dc074fb1bc7abc03d12b9e58ba0249435a120858c96e8ae99570718541499ab958a8fb92b63390be070ff61fc6ef107061693ab14c1915118cc6671ab7cf99b9cca553d6b5a7c314bffcd933e0a59f056d842a47cfe8571110b4764c5225443210d99b43b80a23c20fe953de3e1329d72cfb20139fe1ca";
103 //plainString = Clipperz.Crypto.Base.decryptUsingSecretKey(secretKey, encryptedString); 100 //plainString = Clipperz.Crypto.Base.decryptUsingSecretKey(secretKey, encryptedString);
104 //is(plainString, "{}", "decrypted value"); 101 //is(plainString, "{}", "decrypted value");
105 102
106 //------------------------------------------------------------------------- 103 //-------------------------------------------------------------------------
107 // 104 //
108 //Java secret key encryption / JavaScript decryption 105 //Java secret key encryption / JavaScript decryption
109 // 106 //
110 secretKey = "s3cr37k39"; 107 secretKey = "s3cr37k39";
111 plainString = "The Quick Brown Fox Jumps Over The Lazy Dog"; 108 plainString = "The Quick Brown Fox Jumps Over The Lazy Dog";
112 encryptedString = "9be538c3dde4dfab9384c0ef71dc624299fbbe71be8d1fe8991fd6cae88a883cf459d7cd56913a2b69815782cf74d7ce5c2c08034661f7f8aa59cf420e913086896840ebb45102d44d733d32de2a7dc8"; 109 encryptedString = "9be538c3dde4dfab9384c0ef71dc624299fbbe71be8d1fe8991fd6cae88a883cf459d7cd56913a2b69815782cf74d7ce5c2c08034661f7f8aa59cf420e913086896840ebb45102d44d733d32de2a7dc8";
113 is (plainString, Clipperz.Crypto.Base.decryptUsingSecretKey(secretKey, encryptedString), "I should be able to encrypt and then decrypt safely"); 110 is (plainString, Clipperz.Crypto.Base.decryptUsingSecretKey(secretKey, encryptedString), "I should be able to encrypt and then decrypt safely");
114 111
115 //------------------------------------------------------------------------- 112 //-------------------------------------------------------------------------
116 // 113 //
117 //Public key encryption -> Private key decryption 114 //Public key encryption -> Private key decryption
118 // 115 //
119 { 116 {
120 varcleanKey; 117 varcleanKey;
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/BigInt.html b/frontend/gamma/tests/tests/Clipperz/Crypto/BigInt.html
index bdb0cbc..b970a9a 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/BigInt.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/BigInt.html
@@ -1,120 +1,117 @@
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<html> 26<html>
30<head> 27<head>
31 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
32 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> 29 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script>
33 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 30 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
34 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 31 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
35 32
36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
40 37
41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Functions.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Functions.js'></script>
44</head> 41</head>
45<body> 42<body>
46<pre id="test"> 43<pre id="test">
47<script type="text/javascript"> 44<script type="text/javascript">
48try { 45try {
49 varbigInt_1; 46 varbigInt_1;
50 varbigInt_2; 47 varbigInt_2;
51 varresult; 48 varresult;
52 varexpectedResult; 49 varexpectedResult;
53 50
54 // 51 //
55 //Constructur and equality test 52 //Constructur and equality test
56 // 53 //
57 bigInt_1 = new Clipperz.Crypto.BigInt("110"); 54 bigInt_1 = new Clipperz.Crypto.BigInt("110");
58 is (bigInt_1.equals(bigInt_1), true, ""); 55 is (bigInt_1.equals(bigInt_1), true, "");
59 56
60 bigInt_1 = new Clipperz.Crypto.BigInt("110"); 57 bigInt_1 = new Clipperz.Crypto.BigInt("110");
61 bigInt_2 = new Clipperz.Crypto.BigInt("110", 10); 58 bigInt_2 = new Clipperz.Crypto.BigInt("110", 10);
62 is (bigInt_1.equals(bigInt_2), true, ""); 59 is (bigInt_1.equals(bigInt_2), true, "");
63 60
64 bigInt_1 = new Clipperz.Crypto.BigInt("110"); 61 bigInt_1 = new Clipperz.Crypto.BigInt("110");
65 bigInt_2 = new Clipperz.Crypto.BigInt(110); 62 bigInt_2 = new Clipperz.Crypto.BigInt(110);
66 is (bigInt_1.equals(bigInt_2), true, ""); 63 is (bigInt_1.equals(bigInt_2), true, "");
67 64
68 bigInt_1 = new Clipperz.Crypto.BigInt(6); 65 bigInt_1 = new Clipperz.Crypto.BigInt(6);
69 bigInt_2 = new Clipperz.Crypto.BigInt("110", 2); 66 bigInt_2 = new Clipperz.Crypto.BigInt("110", 2);
70 is (bigInt_1.equals(bigInt_2), true, ""); 67 is (bigInt_1.equals(bigInt_2), true, "");
71 68
72 bigInt_1 = new Clipperz.Crypto.BigInt(6); 69 bigInt_1 = new Clipperz.Crypto.BigInt(6);
73 bigInt_2 = new Clipperz.Crypto.BigInt("110", 3); 70 bigInt_2 = new Clipperz.Crypto.BigInt("110", 3);
74 is (bigInt_1.equals(bigInt_2), false, ""); 71 is (bigInt_1.equals(bigInt_2), false, "");
75 72
76 73
77 // 74 //
78 //Addition test 75 //Addition test
79 // 76 //
80 bigInt_1 = new Clipperz.Crypto.BigInt(6); 77 bigInt_1 = new Clipperz.Crypto.BigInt(6);
81 bigInt_2 = new Clipperz.Crypto.BigInt(110); 78 bigInt_2 = new Clipperz.Crypto.BigInt(110);
82 result = bigInt_1.add(bigInt_2); 79 result = bigInt_1.add(bigInt_2);
83 expectedResult = new Clipperz.Crypto.BigInt(116); 80 expectedResult = new Clipperz.Crypto.BigInt(116);
84 is (result.equals(expectedResult), true, ""); 81 is (result.equals(expectedResult), true, "");
85 is (result.equals(Clipperz.Crypto.BigInt.add(bigInt_1, bigInt_2)), true, "instance method === static function"); 82 is (result.equals(Clipperz.Crypto.BigInt.add(bigInt_1, bigInt_2)), true, "instance method === static function");
86 83
87 bigInt_1 = new Clipperz.Crypto.BigInt(6); 84 bigInt_1 = new Clipperz.Crypto.BigInt(6);
88 result = bigInt_1.add(6); 85 result = bigInt_1.add(6);
89 expectedResult = new Clipperz.Crypto.BigInt(12); 86 expectedResult = new Clipperz.Crypto.BigInt(12);
90 is (result.equals(expectedResult), true, ""); 87 is (result.equals(expectedResult), true, "");
91 88
92 bigInt_1 = new Clipperz.Crypto.BigInt("16161616161616161616161616161616161616161616161616161"); 89 bigInt_1 = new Clipperz.Crypto.BigInt("16161616161616161616161616161616161616161616161616161");
93 bigInt_2 = new Clipperz.Crypto.BigInt("42424242424242424242424242424242424242424242424242424"); 90 bigInt_2 = new Clipperz.Crypto.BigInt("42424242424242424242424242424242424242424242424242424");
94 result = bigInt_1.add(bigInt_2); 91 result = bigInt_1.add(bigInt_2);
95 expectedResult = new Clipperz.Crypto.BigInt("58585858585858585858585858585858585858585858585858585"); 92 expectedResult = new Clipperz.Crypto.BigInt("58585858585858585858585858585858585858585858585858585");
96 is (result.equals(expectedResult), true, ""); 93 is (result.equals(expectedResult), true, "");
97 94
98 bigInt_1 = new Clipperz.Crypto.BigInt("16161616161616161616161616161616161616161616161616161"); 95 bigInt_1 = new Clipperz.Crypto.BigInt("16161616161616161616161616161616161616161616161616161");
99 bigInt_2 = new Clipperz.Crypto.BigInt("42424242424242424242424242424242424242424242424242424"); 96 bigInt_2 = new Clipperz.Crypto.BigInt("42424242424242424242424242424242424242424242424242424");
100 result = bigInt_1.add(bigInt_2); 97 result = bigInt_1.add(bigInt_2);
101 expectedResult = new Clipperz.Crypto.BigInt("58585858585858585858585851585858585858585858585858585"); 98 expectedResult = new Clipperz.Crypto.BigInt("58585858585858585858585851585858585858585858585858585");
102 is (result.equals(expectedResult), false, ""); 99 is (result.equals(expectedResult), false, "");
103 100
104 bigInt_1 = new Clipperz.Crypto.BigInt("86161616161616161616161616161616161616161616161616161"); 101 bigInt_1 = new Clipperz.Crypto.BigInt("86161616161616161616161616161616161616161616161616161");
105 bigInt_2 = new Clipperz.Crypto.BigInt("42424242424242424242424242424242424242424242424242424"); 102 bigInt_2 = new Clipperz.Crypto.BigInt("42424242424242424242424242424242424242424242424242424");
106 result = bigInt_1.add(bigInt_2); 103 result = bigInt_1.add(bigInt_2);
107 expectedResult = new Clipperz.Crypto.BigInt("128585858585858585858585858585858585858585858585858585"); 104 expectedResult = new Clipperz.Crypto.BigInt("128585858585858585858585858585858585858585858585858585");
108 is (result.equals(expectedResult), true, ""); 105 is (result.equals(expectedResult), true, "");
109 106
110 bigInt_1 = new Clipperz.Crypto.BigInt("6541652165410321654063516540621063540654" + 107 bigInt_1 = new Clipperz.Crypto.BigInt("6541652165410321654063516540621063540654" +
111 "0654065106540654165416521654103216540635" + 108 "0654065106540654165416521654103216540635" +
112 "1654062106354065406540651065406541"); 109 "1654062106354065406540651065406541");
113 bigInt_2 = new Clipperz.Crypto.BigInt("3046540351035403510354035103510351351351" + 110 bigInt_2 = new Clipperz.Crypto.BigInt("3046540351035403510354035103510351351351" +
114 "0351350435103213540634132135401351035403" + 111 "0351350435103213540634132135401351035403" +
115 "5403540354103540"); 112 "5403540354103540");
116 result = bigInt_1.add(bigInt_2); 113 result = bigInt_1.add(bigInt_2);
117 expectedResult = new Clipperz.Crypto.BigInt("6541652165410321657110056891656467051008" + 114 expectedResult = new Clipperz.Crypto.BigInt("6541652165410321657110056891656467051008" +
118 "1005100210054167675767872089206430081269" + 115 "1005100210054167675767872089206430081269" +
119 "2975416119864419441944191419510081"); 116 "2975416119864419441944191419510081");
120 is (result.equals(expectedResult), true, ""); 117 is (result.equals(expectedResult), true, "");
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.B283.deferred.html b/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.B283.deferred.html
index ba98167..9ef9146 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.B283.deferred.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.B283.deferred.html
@@ -1,120 +1,117 @@
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<html> 26<html>
30<head> 27<head>
31<!-- - -> 28<!-- - ->
32 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 29 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
33<!- - --> 30<!- - -->
34<!-- --> 31<!-- -->
35 <script type="text/javascript" src="../../../../js/MochiKit/Base.js"></script> 32 <script type="text/javascript" src="../../../../js/MochiKit/Base.js"></script>
36 <script type="text/javascript" src="../../../../js/MochiKit/Async.js"></script> 33 <script type="text/javascript" src="../../../../js/MochiKit/Async.js"></script>
37 <script type="text/javascript" src="../../../../js/MochiKit/DOM.js"></script> 34 <script type="text/javascript" src="../../../../js/MochiKit/DOM.js"></script>
38 <script type="text/javascript" src="../../../../js/MochiKit/Logging.js"></script> 35 <script type="text/javascript" src="../../../../js/MochiKit/Logging.js"></script>
39 <script type="text/javascript" src="../../../../js/MochiKit/Iter.js"></script> 36 <script type="text/javascript" src="../../../../js/MochiKit/Iter.js"></script>
40<!-- --> 37<!-- -->
41 38
42<!-- - -> 39<!-- - ->
43 <script type="text/javascript" src="../../../../js/MochiKit/Style.js"></script> 40 <script type="text/javascript" src="../../../../js/MochiKit/Style.js"></script>
44 <script type="text/javascript" src="../../../../js/MochiKit/Signal.js"></script> 41 <script type="text/javascript" src="../../../../js/MochiKit/Signal.js"></script>
45 <script type="text/javascript" src="../../../../js/MochiKit/Color.js"></script> 42 <script type="text/javascript" src="../../../../js/MochiKit/Color.js"></script>
46 <script type="text/javascript" src="../../../../js/MochiKit/Position.js"></script> 43 <script type="text/javascript" src="../../../../js/MochiKit/Position.js"></script>
47 <script type="text/javascript" src="../../../../js/MochiKit/Visual.js"></script> 44 <script type="text/javascript" src="../../../../js/MochiKit/Visual.js"></script>
48<!- - --> 45<!- - -->
49 46
50 47
51 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 48 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
52 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 49 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
53 50
54<!--<script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>--> 51<!--<script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>-->
55<!--<script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>--> 52<!--<script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>-->
56<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>--> 53<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>-->
57 54
58 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Value.js'></script> 55 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Value.js'></script>
59 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Point.js'></script> 56 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Point.js'></script>
60 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js'></script> 57 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js'></script>
61 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Curve.js'></script> 58 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Curve.js'></script>
62 59
63 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/StandardCurves.js'></script> 60 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/StandardCurves.js'></script>
64 61
65</head> 62</head>
66<body> 63<body>
67<pre id="test"> 64<pre id="test">
68<script type="text/javascript"> 65<script type="text/javascript">
69try { 66try {
70 67
71 var deferredResult; 68 var deferredResult;
72 69
73 70
74 deferredResult = new MochiKit.Async.Deferred(); 71 deferredResult = new MochiKit.Async.Deferred();
75//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("** 1: " + res); return res;}); 72//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("** 1: " + res); return res;});
76 73
77 // 74 //
78 //ECC.Curve.multiplication 75 //ECC.Curve.multiplication
79 // 76 //
80 varcurve; 77 varcurve;
81 var f2m; 78 var f2m;
82 var f2m_improved; 79 var f2m_improved;
83 var value; 80 var value;
84 var moduledValue; 81 var moduledValue;
85 var result; 82 var result;
86 var result_improved; 83 var result_improved;
87 var expectedResul; 84 var expectedResul;
88 85
89 f2m = new Clipperz.Crypto.ECC.BinaryField.FiniteField({modulus:new Clipperz.Crypto.ECC.BinaryField.Value('08000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 000010a1', 16)}) 86 f2m = new Clipperz.Crypto.ECC.BinaryField.FiniteField({modulus:new Clipperz.Crypto.ECC.BinaryField.Value('08000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 000010a1', 16)})
90 f2m_improved = Clipperz.Crypto.ECC.StandardCurves.B283().finiteField(); 87 f2m_improved = Clipperz.Crypto.ECC.StandardCurves.B283().finiteField();
91 88
92 curve = Clipperz.Crypto.ECC.StandardCurves.B283(); 89 curve = Clipperz.Crypto.ECC.StandardCurves.B283();
93 90
94/** / 91/** /
95 value = new Clipperz.Crypto.ECC.BinaryField.Value("7b", 16); 92 value = new Clipperz.Crypto.ECC.BinaryField.Value("7b", 16);
96 result = curve.multiply(value, curve.G()); 93 result = curve.multiply(value, curve.G());
97 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Point({ 94 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Point({
98 x: new Clipperz.Crypto.ECC.BinaryField.Value('29705d23a9cda75e43984bdb9a8fd33304682da0f506a69bdbd5f36657e11b41e35fcdd', 16), 95 x: new Clipperz.Crypto.ECC.BinaryField.Value('29705d23a9cda75e43984bdb9a8fd33304682da0f506a69bdbd5f36657e11b41e35fcdd', 16),
99 y: new Clipperz.Crypto.ECC.BinaryField.Value('59157d2ace16563a905361c5206cc0775c3330f4978bddf8aa9916c451cf9951313623b', 16) 96 y: new Clipperz.Crypto.ECC.BinaryField.Value('59157d2ace16563a905361c5206cc0775c3330f4978bddf8aa9916c451cf9951313623b', 16)
100 }); 97 });
101 is(result.x().asString(16), expectedResult.x().asString(16), "ECC.Curve.multiplication: result.x does match"); 98 is(result.x().asString(16), expectedResult.x().asString(16), "ECC.Curve.multiplication: result.x does match");
102 is(result.y().asString(16), expectedResult.y().asString(16), "ECC.Curve.multiplication: result.y does match"); 99 is(result.y().asString(16), expectedResult.y().asString(16), "ECC.Curve.multiplication: result.y does match");
103/ **/ 100/ **/
104 101
105 value = new Clipperz.Crypto.ECC.BinaryField.Value("ba35032a24eb81238251d85824998bebae3b3e09f4d3845256c87585cf62416ee43191", 16); 102 value = new Clipperz.Crypto.ECC.BinaryField.Value("ba35032a24eb81238251d85824998bebae3b3e09f4d3845256c87585cf62416ee43191", 16);
106 103
107//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("** 6: " + res); return res;}); 104//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("** 6: " + res); return res;});
108 //deferredResult.addCallback(console.time, 'B283.deferred.multiply - moduled value'); 105 //deferredResult.addCallback(console.time, 'B283.deferred.multiply - moduled value');
109//deferredResult.addBoth(function(res) {MochiKit.Base.logDebug("2 - " + res); return res;}); 106//deferredResult.addBoth(function(res) {MochiKit.Base.logDebug("2 - " + res); return res;});
110//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("** 7: " + res); return res;}); 107//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("** 7: " + res); return res;});
111 deferredResult.addMethod(curve, 'deferredMultiply', value, curve.G()); 108 deferredResult.addMethod(curve, 'deferredMultiply', value, curve.G());
112//deferredResult.addBoth(function(res) {MochiKit.Base.logDebug("3 - " + res); return res;}); 109//deferredResult.addBoth(function(res) {MochiKit.Base.logDebug("3 - " + res); return res;});
113//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("** 8: " + res); return res;}); 110//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("** 8: " + res); return res;});
114 //deferredResult.addBoth(function(res) {console.timeEnd('B283.deferred.multiply - moduled value'); return res;}); 111 //deferredResult.addBoth(function(res) {console.timeEnd('B283.deferred.multiply - moduled value'); return res;});
115//deferredResult.addBoth(function(res) {MochiKit.Base.logDebug("4 - " + res); return res;}); 112//deferredResult.addBoth(function(res) {MochiKit.Base.logDebug("4 - " + res); return res;});
116//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("** 9: " + res); return res;}); 113//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("** 9: " + res); return res;});
117 deferredResult.addCallback(function(res) { 114 deferredResult.addCallback(function(res) {
118 var expectedResult; 115 var expectedResult;
119 116
120 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Point({ 117 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Point({
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.B283.html b/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.B283.html
index 3d7efaa..6024021 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.B283.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.B283.html
@@ -1,120 +1,117 @@
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<html> 26<html>
30<head> 27<head>
31 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
32 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> 29 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script>
33 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 30 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
34 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 31 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
35 32
36 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
38 35
39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
41<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC.js'></script>--> 38<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC.js'></script>-->
42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Value.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Value.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Point.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Point.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Curve.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Curve.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Functions.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Functions.js'></script>
47</head> 44</head>
48<body> 45<body>
49<pre id="test"> 46<pre id="test">
50<script type="text/javascript"> 47<script type="text/javascript">
51try { 48try {
52 // 49 //
53 //ECC.BinaryFiniteField 50 //ECC.BinaryFiniteField
54 // 51 //
55 varf2m; 52 varf2m;
56 varf2m_improved; 53 varf2m_improved;
57 var a, a1, b; 54 var a, a1, b;
58 var result; 55 var result;
59 var result_improved; 56 var result_improved;
60 var expectedResul; 57 var expectedResul;
61 58
62 f2m = new Clipperz.Crypto.ECC.BinaryField.FiniteField({modulus:new Clipperz.Crypto.ECC.BinaryField.Value('08000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 000010a1', 16)}) 59 f2m = new Clipperz.Crypto.ECC.BinaryField.FiniteField({modulus:new Clipperz.Crypto.ECC.BinaryField.Value('08000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 000010a1', 16)})
63 f2m_improved = Clipperz.Crypto.ECC.StandardCurves.B283().finiteField(); 60 f2m_improved = Clipperz.Crypto.ECC.StandardCurves.B283().finiteField();
64 a = new Clipperz.Crypto.ECC.BinaryField.Value("05c91e41 d9ca17ef 9d8a33c1 a44eba6d 368fde02 1c492077 1a46eb01 a481e5f7 f430749d", 16); 61 a = new Clipperz.Crypto.ECC.BinaryField.Value("05c91e41 d9ca17ef 9d8a33c1 a44eba6d 368fde02 1c492077 1a46eb01 a481e5f7 f430749d", 16);
65 b = new Clipperz.Crypto.ECC.BinaryField.Value("07377071 2de7d57b a803f65f 45786c06 876b8066 db75ec47 81c053b0 a0f78e2c a6ab5187", 16); 62 b = new Clipperz.Crypto.ECC.BinaryField.Value("07377071 2de7d57b a803f65f 45786c06 876b8066 db75ec47 81c053b0 a0f78e2c a6ab5187", 16);
66 63
67 // 64 //
68 //addition 65 //addition
69 // 66 //
70 result = f2m.add(a, b); 67 result = f2m.add(a, b);
71 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("2fe6e30f42dc2943589c59ee136d66bb1e45e64c73ccc309b86b8b104766bdb529b251a", 16); 68 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("2fe6e30f42dc2943589c59ee136d66bb1e45e64c73ccc309b86b8b104766bdb529b251a", 16);
72 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.add"); 69 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.add");
73 70
74 71
75 // 72 //
76 //negation 73 //negation
77 // 74 //
78 result = f2m.negate(a); 75 result = f2m.negate(a);
79 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("5c91e41d9ca17ef9d8a33c1a44eba6d368fde021c4920771a46eb01a481e5f7f430749d", 16); 76 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("5c91e41d9ca17ef9d8a33c1a44eba6d368fde021c4920771a46eb01a481e5f7f430749d", 16);
80 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.negate"); 77 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.negate");
81 78
82 79
83 // 80 //
84 //multiplication 81 //multiplication
85 // 82 //
86 result = f2m.multiply(a, b); 83 result = f2m.multiply(a, b);
87 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("2bacb89668741f6d1f7fd7d3df2f045814086adba11d8bb5f12f3f9851e3b66fbe283cb", 16); 84 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("2bacb89668741f6d1f7fd7d3df2f045814086adba11d8bb5f12f3f9851e3b66fbe283cb", 16);
88 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.multiply"); 85 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.multiply");
89 86
90 87
91 // 88 //
92 //fast multiplication 89 //fast multiplication
93 // 90 //
94 result = f2m.fastMultiply(a, b); 91 result = f2m.fastMultiply(a, b);
95 expectedResult = f2m.multiply(a, b); 92 expectedResult = f2m.multiply(a, b);
96 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.fastMultiply"); 93 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.fastMultiply");
97 94
98 a = new Clipperz.Crypto.ECC.BinaryField.Value("2fe6e30f42dc2943589c59ee136d66bb1e45e64c73ccc309b86b8b104766bdb529b251a", 16); 95 a = new Clipperz.Crypto.ECC.BinaryField.Value("2fe6e30f42dc2943589c59ee136d66bb1e45e64c73ccc309b86b8b104766bdb529b251a", 16);
99 b = new Clipperz.Crypto.ECC.BinaryField.Value("5c91e41d9ca17ef9d8a33c1a44eba6d368fde021c4920771a46eb01a481e5f7f430749d", 16); 96 b = new Clipperz.Crypto.ECC.BinaryField.Value("5c91e41d9ca17ef9d8a33c1a44eba6d368fde021c4920771a46eb01a481e5f7f430749d", 16);
100 result = f2m.fastMultiply(a, b); 97 result = f2m.fastMultiply(a, b);
101 expectedResult = f2m.multiply(a, b); 98 expectedResult = f2m.multiply(a, b);
102 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.B283.fastMultiply"); 99 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.B283.fastMultiply");
103 100
104 // 101 //
105 //square 102 //square
106 // 103 //
107 a = new Clipperz.Crypto.ECC.BinaryField.Value("1111", 16); 104 a = new Clipperz.Crypto.ECC.BinaryField.Value("1111", 16);
108 result = f2m.square(a); 105 result = f2m.square(a);
109 expectedResult = f2m.multiply(a, a); 106 expectedResult = f2m.multiply(a, a);
110 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.square"); 107 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.square");
111 108
112 a = new Clipperz.Crypto.ECC.BinaryField.Value("11111111", 16); 109 a = new Clipperz.Crypto.ECC.BinaryField.Value("11111111", 16);
113 result = f2m.square(a); 110 result = f2m.square(a);
114 expectedResult = f2m.multiply(a, a); 111 expectedResult = f2m.multiply(a, a);
115 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.square"); 112 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.square");
116 113
117 a = new Clipperz.Crypto.ECC.BinaryField.Value("5c91e41d9ca17ef9d8a33c1a44eba6d368fde021c4920771a46eb01a481e5f7f430749d", 16); 114 a = new Clipperz.Crypto.ECC.BinaryField.Value("5c91e41d9ca17ef9d8a33c1a44eba6d368fde021c4920771a46eb01a481e5f7f430749d", 16);
118 result = f2m.square(a); 115 result = f2m.square(a);
119 expectedResult = f2m.multiply(a, a); 116 expectedResult = f2m.multiply(a, a);
120 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.square"); 117 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.square");
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.html b/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.html
index 6bddb26..5a7a4f7 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.FiniteField.html
@@ -1,120 +1,117 @@
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<html> 26<html>
30<head> 27<head>
31 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
32 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> 29 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script>
33 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 30 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
34 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 31 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
35 32
36 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
38 35
39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
41<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC.js'></script>--> 38<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC.js'></script>-->
42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Value.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Value.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Point.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Point.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Curve.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Curve.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Functions.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Functions.js'></script>
47</head> 44</head>
48<body> 45<body>
49<pre id="test"> 46<pre id="test">
50<script type="text/javascript"> 47<script type="text/javascript">
51try { 48try {
52 // 49 //
53 //ECC.BinaryFiniteField 50 //ECC.BinaryFiniteField
54 // 51 //
55 varf2m; 52 varf2m;
56 varf2m_improved; 53 varf2m_improved;
57 var a, b; 54 var a, b;
58 var result; 55 var result;
59 var result_improved; 56 var result_improved;
60 var expectedResul; 57 var expectedResul;
61 58
62 f2m = new Clipperz.Crypto.ECC.BinaryField.FiniteField({modulus:new Clipperz.Crypto.ECC.BinaryField.Value('80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425', 16)}) 59 f2m = new Clipperz.Crypto.ECC.BinaryField.FiniteField({modulus:new Clipperz.Crypto.ECC.BinaryField.Value('80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000425', 16)})
63 f2m_improved = Clipperz.Crypto.ECC.StandardCurves.B571().finiteField(); 60 f2m_improved = Clipperz.Crypto.ECC.StandardCurves.B571().finiteField();
64 a = new Clipperz.Crypto.ECC.BinaryField.Value("01401ca8 7b8f1446 84a2c58a e9308c23 7789e4bf 1f36dd11 7c150b7d 6076dd1d a6197fe4 c5225a06 4db0e422 2589d5ca 50eb6bb6 b7147a03 f6152843 8a8767c6 a6c4a688 3fd6f067", 16); 61 a = new Clipperz.Crypto.ECC.BinaryField.Value("01401ca8 7b8f1446 84a2c58a e9308c23 7789e4bf 1f36dd11 7c150b7d 6076dd1d a6197fe4 c5225a06 4db0e422 2589d5ca 50eb6bb6 b7147a03 f6152843 8a8767c6 a6c4a688 3fd6f067", 16);
65 b = new Clipperz.Crypto.ECC.BinaryField.Value("0112f5c9 7e74737b 38925faf e22cea3e 12b868d4 ddea5b33 41db8fc2 e788cab7 4f0a7a3c c27087a8 93659453 69938650 a99217d5 66e13f80 dc87f082 73f7411b 6b01ef1d 399c772a", 16); 62 b = new Clipperz.Crypto.ECC.BinaryField.Value("0112f5c9 7e74737b 38925faf e22cea3e 12b868d4 ddea5b33 41db8fc2 e788cab7 4f0a7a3c c27087a8 93659453 69938650 a99217d5 66e13f80 dc87f082 73f7411b 6b01ef1d 399c772a", 16);
66 63
67 // 64 //
68 //addition 65 //addition
69 // 66 //
70 result = f2m.add(a, b); 67 result = f2m.add(a, b);
71 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("52e96105fb673dbc309a250b1c661d65318c6bc2dc86223dce84bf87fe17aae91305d80752ddaeded570714c1a539af9797c63d1f545832a92d8c1f97026ddcdc54995064a874d", 16); 68 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("52e96105fb673dbc309a250b1c661d65318c6bc2dc86223dce84bf87fe17aae91305d80752ddaeded570714c1a539af9797c63d1f545832a92d8c1f97026ddcdc54995064a874d", 16);
72 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.add"); 69 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.add");
73 70
74 71
75 // 72 //
76 //negation 73 //negation
77 // 74 //
78 result = f2m.negate(a); 75 result = f2m.negate(a);
79 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("1401ca87b8f144684a2c58ae9308c237789e4bf1f36dd117c150b7d6076dd1da6197fe4c5225a064db0e4222589d5ca50eb6bb6b7147a03f61528438a8767c6a6c4a6883fd6f067", 16); 76 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("1401ca87b8f144684a2c58ae9308c237789e4bf1f36dd117c150b7d6076dd1da6197fe4c5225a064db0e4222589d5ca50eb6bb6b7147a03f61528438a8767c6a6c4a6883fd6f067", 16);
80 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.negate"); 77 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.negate");
81 78
82 79
83 // 80 //
84 //multiplication 81 //multiplication
85 // 82 //
86 result = f2m.multiply(a, b); 83 result = f2m.multiply(a, b);
87 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("4f8e4c0ae7664b284d3b4cb1b3f9568a1ce6e6e96b5381e184fe0822cb3d5c3a3f01ffd0206355d9e5c4853472bb33cf6b2d861d6b48c39d33a360e9a63ad2f7102f92e68a12312", 16); 84 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value("4f8e4c0ae7664b284d3b4cb1b3f9568a1ce6e6e96b5381e184fe0822cb3d5c3a3f01ffd0206355d9e5c4853472bb33cf6b2d861d6b48c39d33a360e9a63ad2f7102f92e68a12312", 16);
88 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.multiply"); 85 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.multiply");
89 86
90 87
91 // 88 //
92 //fast multiplication 89 //fast multiplication
93 // 90 //
94 result = f2m.fastMultiply(a, b); 91 result = f2m.fastMultiply(a, b);
95 expectedResult = f2m.multiply(a, b); 92 expectedResult = f2m.multiply(a, b);
96 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.fastMultiply"); 93 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.fastMultiply");
97 94
98 a = new Clipperz.Crypto.ECC.BinaryField.Value("52e96105fb673dbc309a250b1c661d65318c6bc2dc86223dce84bf87fe17aae91305d80752ddaeded570714c1a539af9797c63d1f545832a92d8c1f97026ddcdc54995064a874d", 16); 95 a = new Clipperz.Crypto.ECC.BinaryField.Value("52e96105fb673dbc309a250b1c661d65318c6bc2dc86223dce84bf87fe17aae91305d80752ddaeded570714c1a539af9797c63d1f545832a92d8c1f97026ddcdc54995064a874d", 16);
99 b = new Clipperz.Crypto.ECC.BinaryField.Value("1401ca87b8f144684a2c58ae9308c237789e4bf1f36dd117c150b7d6076dd1da6197fe4c5225a064db0e4222589d5ca50eb6bb6b7147a03f61528438a8767c6a6c4a6883fd6f067", 16); 96 b = new Clipperz.Crypto.ECC.BinaryField.Value("1401ca87b8f144684a2c58ae9308c237789e4bf1f36dd117c150b7d6076dd1da6197fe4c5225a064db0e4222589d5ca50eb6bb6b7147a03f61528438a8767c6a6c4a6883fd6f067", 16);
100 result = f2m.fastMultiply(a, b); 97 result = f2m.fastMultiply(a, b);
101 expectedResult = f2m.multiply(a, b); 98 expectedResult = f2m.multiply(a, b);
102 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.fastMultiply"); 99 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.fastMultiply");
103 100
104 // 101 //
105 //square 102 //square
106 // 103 //
107 a = new Clipperz.Crypto.ECC.BinaryField.Value("1111", 16); 104 a = new Clipperz.Crypto.ECC.BinaryField.Value("1111", 16);
108 result = f2m.square(a); 105 result = f2m.square(a);
109 expectedResult = f2m.multiply(a, a); 106 expectedResult = f2m.multiply(a, a);
110 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.square"); 107 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.square");
111 108
112 a = new Clipperz.Crypto.ECC.BinaryField.Value("11111111", 16); 109 a = new Clipperz.Crypto.ECC.BinaryField.Value("11111111", 16);
113 result = f2m.square(a); 110 result = f2m.square(a);
114 expectedResult = f2m.multiply(a, a); 111 expectedResult = f2m.multiply(a, a);
115 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.square"); 112 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.square");
116 113
117 a = new Clipperz.Crypto.ECC.BinaryField.Value("1401ca87b8f144684a2c58ae9308c237789e4bf1f36dd117c150b7d6076dd1da6197fe4c5225a064db0e4222589d5ca50eb6bb6b7147a03f61528438a8767c6a6c4a6883fd6f067", 16); 114 a = new Clipperz.Crypto.ECC.BinaryField.Value("1401ca87b8f144684a2c58ae9308c237789e4bf1f36dd117c150b7d6076dd1da6197fe4c5225a064db0e4222589d5ca50eb6bb6b7147a03f61528438a8767c6a6c4a6883fd6f067", 16);
118 result = f2m.square(a); 115 result = f2m.square(a);
119 expectedResult = f2m.multiply(a, a); 116 expectedResult = f2m.multiply(a, a);
120 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.square"); 117 is(result.asString(16), expectedResult.asString(16), "ECC.BinaryFinetField.square");
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.Value.html b/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.Value.html
index 885bcc4..c58cf42 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.Value.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.BinaryField.Value.html
@@ -1,120 +1,117 @@
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<html> 26<html>
30<head> 27<head>
31 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
32 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> 29 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script>
33 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 30 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
34 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 31 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
35 32
36 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
38 35
39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
41<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC.js'></script>--> 38<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC.js'></script>-->
42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Value.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Value.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Point.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Point.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Curve.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Curve.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Functions.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Functions.js'></script>
47</head> 44</head>
48<body> 45<body>
49<pre id="test"> 46<pre id="test">
50<script type="text/javascript"> 47<script type="text/javascript">
51try { 48try {
52 var value_1; 49 var value_1;
53 var value_2; 50 var value_2;
54 51
55 value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("a", 16); 52 value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("a", 16);
56 is(value_1.asString(16), "0a"); 53 is(value_1.asString(16), "0a");
57 54
58 value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ffff", 16); 55 value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("ffff", 16);
59 is(value_1.asString(16), "ffff"); 56 is(value_1.asString(16), "ffff");
60 57
61 value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("7fff", 16); 58 value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("7fff", 16);
62 is(value_1.asString(16), "7fff"); 59 is(value_1.asString(16), "7fff");
63 60
64 is(parseInt("ffff", 16), 65535); 61 is(parseInt("ffff", 16), 65535);
65 is(parseInt("ffffff", 16), 16777215); 62 is(parseInt("ffffff", 16), 16777215);
66 is(parseInt("ffffffff", 16), 4294967295); 63 is(parseInt("ffffffff", 16), 4294967295);
67 is(parseInt("ffffffffff", 16), 1099511627775); 64 is(parseInt("ffffffffff", 16), 1099511627775);
68 is(parseInt("ffffffffffff", 16), 281474976710655); 65 is(parseInt("ffffffffffff", 16), 281474976710655);
69 is(parseInt("ffffffffffffff", 16), 72057594037927940); 66 is(parseInt("ffffffffffffff", 16), 72057594037927940);
70 is(parseInt("ffffffffffffffff", 16), 18446744073709552000); 67 is(parseInt("ffffffffffffffff", 16), 18446744073709552000);
71 is(parseInt("10000000000000000", 16), 18446744073709552001); 68 is(parseInt("10000000000000000", 16), 18446744073709552001);
72 is(parseInt("10000000000000001", 16), 18446744073709552002); 69 is(parseInt("10000000000000001", 16), 18446744073709552002);
73 is(parseInt("10000000000000009", 16), 18446744073709552010); 70 is(parseInt("10000000000000009", 16), 18446744073709552010);
74 71
75 value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("000108cbbacda1f03ea9360301045434ec7d82ba150936df08a229cbb4832ce1", 16); 72 value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("000108cbbacda1f03ea9360301045434ec7d82ba150936df08a229cbb4832ce1", 16);
76 is(value_1.wordSize(), 8, "check the number of words of a 64 char hex string using the 'wordSize' method"); 73 is(value_1.wordSize(), 8, "check the number of words of a 64 char hex string using the 'wordSize' method");
77 74
78 // 000108cb bacda1f0 3ea93603 01045434 ec7d82ba 150936df 08a229cb b4832ce1 75 // 000108cb bacda1f0 3ea93603 01045434 ec7d82ba 150936df 08a229cb b4832ce1
79 is(value_1.value()[0], parseInt("b4832ce1", 16), "word[0]"); 76 is(value_1.value()[0], parseInt("b4832ce1", 16), "word[0]");
80 is(value_1.value()[1], parseInt("08a229cb", 16), "word[1]"); 77 is(value_1.value()[1], parseInt("08a229cb", 16), "word[1]");
81 is(value_1.value()[2], parseInt("150936df", 16), "word[2]"); 78 is(value_1.value()[2], parseInt("150936df", 16), "word[2]");
82 is(value_1.value()[3], parseInt("ec7d82ba", 16), "word[3]"); 79 is(value_1.value()[3], parseInt("ec7d82ba", 16), "word[3]");
83 is(value_1.value()[4], parseInt("01045434", 16), "word[4]"); 80 is(value_1.value()[4], parseInt("01045434", 16), "word[4]");
84 is(value_1.value()[5], parseInt("3ea93603", 16), "word[5]"); 81 is(value_1.value()[5], parseInt("3ea93603", 16), "word[5]");
85 is(value_1.value()[6], parseInt("bacda1f0", 16), "word[6]"); 82 is(value_1.value()[6], parseInt("bacda1f0", 16), "word[6]");
86 is(value_1.value()[7], parseInt("000108cb", 16), "word[7]"); 83 is(value_1.value()[7], parseInt("000108cb", 16), "word[7]");
87 84
88 is(value_1.asString(16), "0108cbbacda1f03ea9360301045434ec7d82ba150936df08a229cbb4832ce1", "asString(16)"); 85 is(value_1.asString(16), "0108cbbacda1f03ea9360301045434ec7d82ba150936df08a229cbb4832ce1", "asString(16)");
89 86
90 value_1 = new Clipperz.Crypto.ECC.BinaryField.Value('10 00000000 00000000', 16); 87 value_1 = new Clipperz.Crypto.ECC.BinaryField.Value('10 00000000 00000000', 16);
91 is(value_1.wordSize(), 3, "check the number of words of a value with only a bit set on the first slot of byte at position 17"); 88 is(value_1.wordSize(), 3, "check the number of words of a value with only a bit set on the first slot of byte at position 17");
92 is(value_1.value()[0], parseInt("00000000", 16), "word[0]"); 89 is(value_1.value()[0], parseInt("00000000", 16), "word[0]");
93 is(value_1.value()[1], parseInt("00000000", 16), "word[1]"); 90 is(value_1.value()[1], parseInt("00000000", 16), "word[1]");
94 is(value_1.value()[2], parseInt("10", 16), "word[2]"); 91 is(value_1.value()[2], parseInt("10", 16), "word[2]");
95 is(value_1.asString(16), "100000000000000000", "2^17 asString(16)"); 92 is(value_1.asString(16), "100000000000000000", "2^17 asString(16)");
96 93
97 // 94 //
98 //XOR 95 //XOR
99 // 96 //
100 value_1 = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 16); 97 value_1 = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 16);
101 value_2 = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 16); 98 value_2 = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 16);
102 result = value_1.xor(value_2); 99 result = value_1.xor(value_2);
103 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('0', 16); 100 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('0', 16);
104 is(result.asString(16), expectedResult.asString(16), "a xor a = 0"); 101 is(result.asString(16), expectedResult.asString(16), "a xor a = 0");
105 102
106 // 103 //
107 value_1 = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c442 98fc1c14 9afbf4c8 996fb924 27ae41e4 649b934c a495991b 7852b855', 16); 104 value_1 = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c442 98fc1c14 9afbf4c8 996fb924 27ae41e4 649b934c a495991b 7852b855', 16);
108 value_2 = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c442 98fc1c14 9afbf4c8 996fb924 27ae41e4 649b935c a495991b 7852b855', 16); 105 value_2 = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c442 98fc1c14 9afbf4c8 996fb924 27ae41e4 649b935c a495991b 7852b855', 16);
109 result = value_1.xor(value_2); 106 result = value_1.xor(value_2);
110 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('10 00000000 00000000', 16); 107 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('10 00000000 00000000', 16);
111 is(result.asString(16), expectedResult.asString(16), "single bit difference"); 108 is(result.asString(16), expectedResult.asString(16), "single bit difference");
112 109
113 // 110 //
114 value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("01", 16); 111 value_1 = new Clipperz.Crypto.ECC.BinaryField.Value("01", 16);
115 value_2 = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b935ca495991b7852b855', 16); 112 value_2 = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b935ca495991b7852b855', 16);
116 result = value_1.xor(value_2); 113 result = value_1.xor(value_2);
117 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b935ca495991b7852b854', 16); 114 expectedResult = new Clipperz.Crypto.ECC.BinaryField.Value('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b935ca495991b7852b854', 16);
118 is(result.asString(16), expectedResult.asString(16), "01 xor value"); 115 is(result.asString(16), expectedResult.asString(16), "01 xor value");
119 116
120 // 117 //
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.K283.deferred.html b/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.K283.deferred.html
index b53a9a1..b784f66 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.K283.deferred.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/ECC.K283.deferred.html
@@ -1,120 +1,117 @@
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<html> 26<html>
30<head> 27<head>
31<!-- - -> 28<!-- - ->
32 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 29 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
33<!- - --> 30<!- - -->
34<!-- --> 31<!-- -->
35 <script type="text/javascript" src="../../../../js/MochiKit/Base.js"></script> 32 <script type="text/javascript" src="../../../../js/MochiKit/Base.js"></script>
36 <script type="text/javascript" src="../../../../js/MochiKit/Async.js"></script> 33 <script type="text/javascript" src="../../../../js/MochiKit/Async.js"></script>
37 <script type="text/javascript" src="../../../../js/MochiKit/DOM.js"></script> 34 <script type="text/javascript" src="../../../../js/MochiKit/DOM.js"></script>
38 <script type="text/javascript" src="../../../../js/MochiKit/Logging.js"></script> 35 <script type="text/javascript" src="../../../../js/MochiKit/Logging.js"></script>
39 <script type="text/javascript" src="../../../../js/MochiKit/Iter.js"></script> 36 <script type="text/javascript" src="../../../../js/MochiKit/Iter.js"></script>
40<!-- --> 37<!-- -->
41 38
42<!-- - -> 39<!-- - ->
43 <script type="text/javascript" src="../../../../js/MochiKit/Style.js"></script> 40 <script type="text/javascript" src="../../../../js/MochiKit/Style.js"></script>
44 <script type="text/javascript" src="../../../../js/MochiKit/Signal.js"></script> 41 <script type="text/javascript" src="../../../../js/MochiKit/Signal.js"></script>
45 <script type="text/javascript" src="../../../../js/MochiKit/Color.js"></script> 42 <script type="text/javascript" src="../../../../js/MochiKit/Color.js"></script>
46 <script type="text/javascript" src="../../../../js/MochiKit/Position.js"></script> 43 <script type="text/javascript" src="../../../../js/MochiKit/Position.js"></script>
47 <script type="text/javascript" src="../../../../js/MochiKit/Visual.js"></script> 44 <script type="text/javascript" src="../../../../js/MochiKit/Visual.js"></script>
48<!- - --> 45<!- - -->
49 46
50 47
51 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 48 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
52 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 49 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
53 50
54<!--<script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>--> 51<!--<script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>-->
55<!--<script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>--> 52<!--<script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>-->
56<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>--> 53<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>-->
57 54
58<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Value.js'></script>--> 55<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Value.js'></script>-->
59<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Point.js'></script>--> 56<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Point.js'></script>-->
60<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js'></script>--> 57<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/FiniteField.js'></script>-->
61<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Curve.js'></script>--> 58<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/BinaryField/Curve.js'></script>-->
62 59
63 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/Koblitz/Value.js'></script> 60 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/Koblitz/Value.js'></script>
64 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/Koblitz/Point.js'></script> 61 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/Koblitz/Point.js'></script>
65 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/Koblitz/FiniteField.js'></script> 62 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/Koblitz/FiniteField.js'></script>
66 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/Koblitz/Curve.js'></script> 63 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/Koblitz/Curve.js'></script>
67 64
68 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/StandardCurves.js'></script> 65 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/ECC/StandardCurves.js'></script>
69 66
70</head> 67</head>
71<body> 68<body>
72<pre id="test"> 69<pre id="test">
73<script type="text/javascript"> 70<script type="text/javascript">
74try { 71try {
75 72
76 var deferredResult; 73 var deferredResult;
77 74
78 75
79 deferredResult = new MochiKit.Async.Deferred(); 76 deferredResult = new MochiKit.Async.Deferred();
80//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("** 1: " + res); return res;}); 77//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("** 1: " + res); return res;});
81 78
82 // 79 //
83 //ECC.Curve.multiplication 80 //ECC.Curve.multiplication
84 // 81 //
85 varcurve; 82 varcurve;
86 var f2m; 83 var f2m;
87 var f2m_improved; 84 var f2m_improved;
88 var value; 85 var value;
89 var moduledValue; 86 var moduledValue;
90 var result; 87 var result;
91 var result_improved; 88 var result_improved;
92 var expectedResul; 89 var expectedResul;
93 90
94 f2m = new Clipperz.Crypto.ECC.Koblitz.FiniteField({modulus:new Clipperz.Crypto.ECC.Koblitz.Value('08000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 000010a1', 16)}) 91 f2m = new Clipperz.Crypto.ECC.Koblitz.FiniteField({modulus:new Clipperz.Crypto.ECC.Koblitz.Value('08000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 000010a1', 16)})
95 f2m_improved = Clipperz.Crypto.ECC.StandardCurves.K283().finiteField(); 92 f2m_improved = Clipperz.Crypto.ECC.StandardCurves.K283().finiteField();
96 93
97 curve = Clipperz.Crypto.ECC.StandardCurves.K283(); 94 curve = Clipperz.Crypto.ECC.StandardCurves.K283();
98 95
99/** / 96/** /
100 value = new Clipperz.Crypto.ECC.Koblitz.Value("7b", 16); 97 value = new Clipperz.Crypto.ECC.Koblitz.Value("7b", 16);
101 result = curve.multiply(value, curve.G()); 98 result = curve.multiply(value, curve.G());
102 expectedResult = new Clipperz.Crypto.ECC.Koblitz.Point({ 99 expectedResult = new Clipperz.Crypto.ECC.Koblitz.Point({
103 x: new Clipperz.Crypto.ECC.Koblitz.Value('29705d23a9cda75e43984bdb9a8fd33304682da0f506a69bdbd5f36657e11b41e35fcdd', 16), 100 x: new Clipperz.Crypto.ECC.Koblitz.Value('29705d23a9cda75e43984bdb9a8fd33304682da0f506a69bdbd5f36657e11b41e35fcdd', 16),
104 y: new Clipperz.Crypto.ECC.Koblitz.Value('59157d2ace16563a905361c5206cc0775c3330f4978bddf8aa9916c451cf9951313623b', 16) 101 y: new Clipperz.Crypto.ECC.Koblitz.Value('59157d2ace16563a905361c5206cc0775c3330f4978bddf8aa9916c451cf9951313623b', 16)
105 }); 102 });
106 is(result.x().asString(16), expectedResult.x().asString(16), "ECC.Curve.multiplication: result.x does match"); 103 is(result.x().asString(16), expectedResult.x().asString(16), "ECC.Curve.multiplication: result.x does match");
107 is(result.y().asString(16), expectedResult.y().asString(16), "ECC.Curve.multiplication: result.y does match"); 104 is(result.y().asString(16), expectedResult.y().asString(16), "ECC.Curve.multiplication: result.y does match");
108/ **/ 105/ **/
109 106
110 value = new Clipperz.Crypto.ECC.Koblitz.Value("ba35032a24eb81238251d85824998bebae3b3e09f4d3845256c87585cf62416ee43191", 16); 107 value = new Clipperz.Crypto.ECC.Koblitz.Value("ba35032a24eb81238251d85824998bebae3b3e09f4d3845256c87585cf62416ee43191", 16);
111 108
112//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("** 6: " + res); return res;}); 109//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("** 6: " + res); return res;});
113 //deferredResult.addCallback(console.time, 'K283.deferred.multiply - moduled value'); 110 //deferredResult.addCallback(console.time, 'K283.deferred.multiply - moduled value');
114//deferredResult.addBoth(function(res) {MochiKit.Base.logDebug("2 - " + res); return res;}); 111//deferredResult.addBoth(function(res) {MochiKit.Base.logDebug("2 - " + res); return res;});
115//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("** 7: " + res); return res;}); 112//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("** 7: " + res); return res;});
116 deferredResult.addMethod(curve, 'deferredMultiply', value, curve.G()); 113 deferredResult.addMethod(curve, 'deferredMultiply', value, curve.G());
117//deferredResult.addBoth(function(res) {MochiKit.Base.logDebug("3 - " + res); return res;}); 114//deferredResult.addBoth(function(res) {MochiKit.Base.logDebug("3 - " + res); return res;});
118//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("** 8: " + res); return res;}); 115//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("** 8: " + res); return res;});
119 //deferredResult.addBoth(function(res) {console.timeEnd('K283.deferred.multiply - moduled value'); return res;}); 116 //deferredResult.addBoth(function(res) {console.timeEnd('K283.deferred.multiply - moduled value'); return res;});
120//deferredResult.addBoth(function(res) {MochiKit.Base.logDebug("4 - " + res); return res;}); 117//deferredResult.addBoth(function(res) {MochiKit.Base.logDebug("4 - " + res); return res;});
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/JSCrypto_vs_Clipperz.html b/frontend/gamma/tests/tests/Clipperz/Crypto/JSCrypto_vs_Clipperz.html
index 1342349..2968894 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/JSCrypto_vs_Clipperz.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/JSCrypto_vs_Clipperz.html
@@ -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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.Crypto.JSCrypto_vs_Clipperz - tests</title> 28 <title>Clipperz.Crypto.JSCrypto_vs_Clipperz - tests</title>
32 29
33 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 30 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
34 31
35 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 32 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
36 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 33 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
37 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 34 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
38 35
39 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 36 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
40 37
41 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
52 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
53 50
54 <script type='text/javascript' src='./jscrypto.js'></script> 51 <script type='text/javascript' src='./jscrypto.js'></script>
55 52
56 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script> 53 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script>
57 54
58</head> 55</head>
59<body> 56<body>
60 57
61<pre id="test"> 58<pre id="test">
62 <script type="text/javascript"> 59 <script type="text/javascript">
63 var longAsciiText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam ac ipsum. Morbi mauris. Aenean ac elit id metus lobortis elementum. Proin at quam ac ipsum pellentesque adipiscing. Aenean vestibulum, nisl eu suscipit iaculis, quam pede congue mi, sit amet dapibus metus neque eget dui. Suspendisse posuere diam ac sapien. Nulla lobortis dapibus leo. Quisque ornare tortor quis turpis. Aliquam erat volutpat. Ut faucibus lacinia magna. Nunc metus leo, volutpat quis, mollis ac, sagittis ut, turpis. Quisque purus. Mauris ante enim, vehicula eu, suscipit vitae, laoreet vel, nulla. Pellentesque pede leo, aliquam quis, vehicula eget, rhoncus nec, metus. Vestibulum tellus. Suspendisse blandit. Pellentesque vel tellus. Maecenas arcu. Duis eget purus. Curabitur non pede nec odio cursus luctus. In non elit. Nullam eget nunc in nisl elementum commodo. Vivamus sollicitudin pede quis dui. Morbi commodo. Praesent a risus id urna hendrerit fermentum. Nunc ultricies tristique odio. Phasellus imperdiet, sapien eget viverra blandit, tortor risus blandit nisi, et sodales libero dolor quis nisl. Morbi vel enim. Nunc in quam. Vestibulum a magna. Fusce auctor elit in augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris tincidunt consectetuer leo. Etiam non turpis. Vestibulum eros. Praesent venenatis adipiscing augue. Pellentesque dapibus odio ac arcu rhoncus sagittis. Nullam vitae augue. Ut magna nulla, congue eu, porta in, egestas quis, ligula. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur malesuada neque non nulla. Nulla facilisi. Fusce viverra magna ut tellus. Sed rutrum pretium sapien. Vivamus dui. Cras fringilla. Nullam lorem. Vestibulum varius, purus at imperdiet fermentum, metus diam ultricies lacus, vitae aliquam ipsum libero sit amet felis. Sed eget eros ac velit commodo sollicitudin. Morbi in metus in mi viverra lacinia. Sed ut urna. Suspendisse imperdiet tellus ac velit. Duis malesuada velit sit amet sapien. Vestibulum a sapien id libero accumsan luctus. Fusce iaculis. Donec pulvinar orci ut pede. Nam placerat sem ut sem. Ut pretium bibendum nisl. Suspendisse potenti. Phasellus mollis neque in neque. Suspendisse augue magna, eleifend et, malesuada at, viverra in, nisl. Donec vel lectus in justo ultrices tristique. Aliquam erat volutpat. Morbi suscipit, risus ac volutpat mollis, risus metus hendrerit sapien, ac scelerisque est orci eu est. Quisque sit amet velit. Sed libero diam, semper id, eleifend ac, iaculis non, nulla. Donec varius tincidunt arcu. Sed quis metus eu erat adipiscing viverra. Donec odio. Aenean sagittis nisl sed purus. Fusce vel nibh quis felis accumsan bibendum. Etiam et risus ac tortor cursus pharetra. Maecenas tellus. Pellentesque nec felis id eros vehicula commodo. Aliquam interdum sagittis odio. Maecenas at lorem eget mi aliquet sagittis. Mauris quis nibh in odio sodales lacinia. Proin augue mauris, placerat a, blandit vel, tincidunt eget, ante. Quisque turpis purus, placerat eget, tempor consectetuer, aliquet ac, enim. Etiam eleifend vestibulum mi. Vivamus gravida. Morbi dolor. In hac habitasse platea dictumst. Nulla commodo lectus faucibus lorem. Phasellus aliquet pede id metus hendrerit tempus. Fusce convallis pede ac neque tempor dignissim. Sed vitae lorem sit amet justo dapibus porta. Ut quam orci, pretium non, sagittis nec, condimentum id, dolor. Sed tempor. Nunc porta rutrum leo. Nunc id sem. Sed nibh tortor, dapibus eget, feugiat a, pretium pretium, purus. Suspendisse suscipit lobortis sem. Praesent pharetra orci. Quisque molestie tristique quam. Maecenas nunc lorem, rhoncus non, venenatis sed, sodales at, felis. Quisque semper. Quisque malesuada est quis lacus. Nullam a justo. Aliquam pellentesque, ante ut congue molestie, nisl sapien posuere nisl, eu cursus nulla ligula vel nisl. Fusce commodo lacinia magna. Aenean rutrum vestibulum lorem. Pellentesque fermentum tristique ipsum. Nulla facilisi. Donec id mi eget ipsum commodo egestas. Mauris iaculis. Nulla vulputate mi at nisl. In condimentum sodales tellus. Donec metus orci, mollis vel, accumsan ac, ornare ac, lacus. Pellentesque accumsan est et tellus. Nam mollis. Aenean accumsan eros sit amet tellus. Praesent eu libero. Sed tempus urna nec dolor. Nulla facilisi. Duis eleifend rhoncus neque. Curabitur consectetuer quam eu justo. Sed metus. Vivamus risus. Aliquam erat volutpat. Aliquam erat volutpat. Nunc semper urna. Praesent molestie libero a lacus. Nullam suscipit lobortis velit. Praesent rhoncus, felis ut interdum dapibus, ipsum lectus vestibulum nulla, in interdum risus dolor eget orci. Nullam venenatis. Suspendisse laoreet, arcu a luctus consectetuer, libero ligula condimentum quam, eget elementum mauris tortor sed enim. Pellentesque leo. Nam interdum malesuada ante. Praesent fermentum nunc et dolor. Donec auctor volutpat odio. Pellentesque volutpat egestas ipsum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras ac ligula eu justo dignissim accumsan. Nullam nisi. Fusce id sem. Fusce et urna. Pellentesque commodo pharetra lorem. Donec erat. Vestibulum elit arcu, commodo et, consequat eget, posuere eget, sem. Morbi sed nulla sed neque commodo commodo. Aliquam erat volutpat. Ut id turpis a enim malesuada vestibulum. In arcu dui, dignissim vitae, blandit eu, egestas ac, arcu. In ultricies sapien vitae nisi. Proin rhoncus magna eget tortor. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In dictum. Sed volutpat pharetra quam. Mauris eget eros. Fusce malesuada dolor id pede. Praesent nec justo sed nisi vehicula varius. In scelerisque convallis nulla. Pellentesque sodales massa vulputate urna. Duis metus urna, imperdiet ac, sodales vel, ullamcorper sed, pede. Vestibulum aliquam mollis metus. Praesent tempus tristique elit. Maecenas tellus tortor, pretium id, mollis id, molestie non, turpis. Vivamus nibh magna, bibendum vitae, a."; 60 var longAsciiText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam ac ipsum. Morbi mauris. Aenean ac elit id metus lobortis elementum. Proin at quam ac ipsum pellentesque adipiscing. Aenean vestibulum, nisl eu suscipit iaculis, quam pede congue mi, sit amet dapibus metus neque eget dui. Suspendisse posuere diam ac sapien. Nulla lobortis dapibus leo. Quisque ornare tortor quis turpis. Aliquam erat volutpat. Ut faucibus lacinia magna. Nunc metus leo, volutpat quis, mollis ac, sagittis ut, turpis. Quisque purus. Mauris ante enim, vehicula eu, suscipit vitae, laoreet vel, nulla. Pellentesque pede leo, aliquam quis, vehicula eget, rhoncus nec, metus. Vestibulum tellus. Suspendisse blandit. Pellentesque vel tellus. Maecenas arcu. Duis eget purus. Curabitur non pede nec odio cursus luctus. In non elit. Nullam eget nunc in nisl elementum commodo. Vivamus sollicitudin pede quis dui. Morbi commodo. Praesent a risus id urna hendrerit fermentum. Nunc ultricies tristique odio. Phasellus imperdiet, sapien eget viverra blandit, tortor risus blandit nisi, et sodales libero dolor quis nisl. Morbi vel enim. Nunc in quam. Vestibulum a magna. Fusce auctor elit in augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris tincidunt consectetuer leo. Etiam non turpis. Vestibulum eros. Praesent venenatis adipiscing augue. Pellentesque dapibus odio ac arcu rhoncus sagittis. Nullam vitae augue. Ut magna nulla, congue eu, porta in, egestas quis, ligula. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur malesuada neque non nulla. Nulla facilisi. Fusce viverra magna ut tellus. Sed rutrum pretium sapien. Vivamus dui. Cras fringilla. Nullam lorem. Vestibulum varius, purus at imperdiet fermentum, metus diam ultricies lacus, vitae aliquam ipsum libero sit amet felis. Sed eget eros ac velit commodo sollicitudin. Morbi in metus in mi viverra lacinia. Sed ut urna. Suspendisse imperdiet tellus ac velit. Duis malesuada velit sit amet sapien. Vestibulum a sapien id libero accumsan luctus. Fusce iaculis. Donec pulvinar orci ut pede. Nam placerat sem ut sem. Ut pretium bibendum nisl. Suspendisse potenti. Phasellus mollis neque in neque. Suspendisse augue magna, eleifend et, malesuada at, viverra in, nisl. Donec vel lectus in justo ultrices tristique. Aliquam erat volutpat. Morbi suscipit, risus ac volutpat mollis, risus metus hendrerit sapien, ac scelerisque est orci eu est. Quisque sit amet velit. Sed libero diam, semper id, eleifend ac, iaculis non, nulla. Donec varius tincidunt arcu. Sed quis metus eu erat adipiscing viverra. Donec odio. Aenean sagittis nisl sed purus. Fusce vel nibh quis felis accumsan bibendum. Etiam et risus ac tortor cursus pharetra. Maecenas tellus. Pellentesque nec felis id eros vehicula commodo. Aliquam interdum sagittis odio. Maecenas at lorem eget mi aliquet sagittis. Mauris quis nibh in odio sodales lacinia. Proin augue mauris, placerat a, blandit vel, tincidunt eget, ante. Quisque turpis purus, placerat eget, tempor consectetuer, aliquet ac, enim. Etiam eleifend vestibulum mi. Vivamus gravida. Morbi dolor. In hac habitasse platea dictumst. Nulla commodo lectus faucibus lorem. Phasellus aliquet pede id metus hendrerit tempus. Fusce convallis pede ac neque tempor dignissim. Sed vitae lorem sit amet justo dapibus porta. Ut quam orci, pretium non, sagittis nec, condimentum id, dolor. Sed tempor. Nunc porta rutrum leo. Nunc id sem. Sed nibh tortor, dapibus eget, feugiat a, pretium pretium, purus. Suspendisse suscipit lobortis sem. Praesent pharetra orci. Quisque molestie tristique quam. Maecenas nunc lorem, rhoncus non, venenatis sed, sodales at, felis. Quisque semper. Quisque malesuada est quis lacus. Nullam a justo. Aliquam pellentesque, ante ut congue molestie, nisl sapien posuere nisl, eu cursus nulla ligula vel nisl. Fusce commodo lacinia magna. Aenean rutrum vestibulum lorem. Pellentesque fermentum tristique ipsum. Nulla facilisi. Donec id mi eget ipsum commodo egestas. Mauris iaculis. Nulla vulputate mi at nisl. In condimentum sodales tellus. Donec metus orci, mollis vel, accumsan ac, ornare ac, lacus. Pellentesque accumsan est et tellus. Nam mollis. Aenean accumsan eros sit amet tellus. Praesent eu libero. Sed tempus urna nec dolor. Nulla facilisi. Duis eleifend rhoncus neque. Curabitur consectetuer quam eu justo. Sed metus. Vivamus risus. Aliquam erat volutpat. Aliquam erat volutpat. Nunc semper urna. Praesent molestie libero a lacus. Nullam suscipit lobortis velit. Praesent rhoncus, felis ut interdum dapibus, ipsum lectus vestibulum nulla, in interdum risus dolor eget orci. Nullam venenatis. Suspendisse laoreet, arcu a luctus consectetuer, libero ligula condimentum quam, eget elementum mauris tortor sed enim. Pellentesque leo. Nam interdum malesuada ante. Praesent fermentum nunc et dolor. Donec auctor volutpat odio. Pellentesque volutpat egestas ipsum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras ac ligula eu justo dignissim accumsan. Nullam nisi. Fusce id sem. Fusce et urna. Pellentesque commodo pharetra lorem. Donec erat. Vestibulum elit arcu, commodo et, consequat eget, posuere eget, sem. Morbi sed nulla sed neque commodo commodo. Aliquam erat volutpat. Ut id turpis a enim malesuada vestibulum. In arcu dui, dignissim vitae, blandit eu, egestas ac, arcu. In ultricies sapien vitae nisi. Proin rhoncus magna eget tortor. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In dictum. Sed volutpat pharetra quam. Mauris eget eros. Fusce malesuada dolor id pede. Praesent nec justo sed nisi vehicula varius. In scelerisque convallis nulla. Pellentesque sodales massa vulputate urna. Duis metus urna, imperdiet ac, sodales vel, ullamcorper sed, pede. Vestibulum aliquam mollis metus. Praesent tempus tristique elit. Maecenas tellus tortor, pretium id, mollis id, molestie non, turpis. Vivamus nibh magna, bibendum vitae, a.";
64 var longIsoLatin1Text = "¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùù"; 61 var longIsoLatin1Text = "¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¢£¤¥¦§¨©ª«¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùù";
65 var longUtf8Text = "客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之"; 62 var longUtf8Text = "客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之所以能统称为汉语第客家方言简体字危及了对古代文学的研究共有找华语并不被中国政府很好的接受然而汉语之";
66 </script> 63 </script>
67 <script type="text/javascript" src="JSCrypto_vs_Clipperz.test.js"></script> 64 <script type="text/javascript" src="JSCrypto_vs_Clipperz.test.js"></script>
68</pre> 65</pre>
69</body> 66</body>
70</html> 67</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/JSCrypto_vs_Clipperz.test.js b/frontend/gamma/tests/tests/Clipperz/Crypto/JSCrypto_vs_Clipperz.test.js
index 7dc688c..1580e6c 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/JSCrypto_vs_Clipperz.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/JSCrypto_vs_Clipperz.test.js
@@ -1,120 +1,117 @@
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//function logElapsedTime(aDescription, aStartTime, anEndTime) { 26//function logElapsedTime(aDescription, aStartTime, anEndTime) {
30 //MochiKit.Logging.logDebug(aDescription + " - took " + (anEndTime - aStartTime) + "ms"); 27 //MochiKit.Logging.logDebug(aDescription + " - took " + (anEndTime - aStartTime) + "ms");
31 //SimpleTest.ok(true, aDescription + " - took " + (anEndTime - aStartTime) + "ms"); 28 //SimpleTest.ok(true, aDescription + " - took " + (anEndTime - aStartTime) + "ms");
32//} 29//}
33 30
34 var asciiTestString = longAsciiText; 31 var asciiTestString = longAsciiText;
35//asciiTestString = asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString; 32//asciiTestString = asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString;
36//asciiTestString = asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString; 33//asciiTestString = asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString;
37//asciiTestString = asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString; 34//asciiTestString = asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString;
38//asciiTestString = asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString; 35//asciiTestString = asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString + asciiTestString;
39//asciiTestString = asciiTestString + asciiTestString; 36//asciiTestString = asciiTestString + asciiTestString;
40//asciiTestString = asciiTestString + asciiTestString; 37//asciiTestString = asciiTestString + asciiTestString;
41 38
42 var isoLatin1TestString= longIsoLatin1Text; 39 var isoLatin1TestString= longIsoLatin1Text;
43//isoLatin1TestString = isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString; 40//isoLatin1TestString = isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString;
44//isoLatin1TestString = isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString; 41//isoLatin1TestString = isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString;
45//isoLatin1TestString = isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString; 42//isoLatin1TestString = isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString + isoLatin1TestString;
46//isoLatin1TestString = isoLatin1TestString + isoLatin1TestString; 43//isoLatin1TestString = isoLatin1TestString + isoLatin1TestString;
47//isoLatin1TestString = isoLatin1TestString + isoLatin1TestString; 44//isoLatin1TestString = isoLatin1TestString + isoLatin1TestString;
48 45
49 var utf8TestString = longUtf8Text; 46 var utf8TestString = longUtf8Text;
50//utf8TestString = utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString; 47//utf8TestString = utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString;
51//utf8TestString = utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString; 48//utf8TestString = utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString + utf8TestString;
52//utf8TestString = utf8TestString + utf8TestString; 49//utf8TestString = utf8TestString + utf8TestString;
53//utf8TestString = utf8TestString + utf8TestString; 50//utf8TestString = utf8TestString + utf8TestString;
54 51
55var times = { 52var times = {
56 'Clipperz': {}, 53 'Clipperz': {},
57 'JSCrypto': {} 54 'JSCrypto': {}
58}; 55};
59 56
60function appendResults (aDescription, aTimer) { 57function appendResults (aDescription, aTimer) {
61 MochiKit.DOM.appendChildNodes(MochiKit.DOM.getElement('timerTBODY'), 58 MochiKit.DOM.appendChildNodes(MochiKit.DOM.getElement('timerTBODY'),
62 MochiKit.DOM.TR(null, 59 MochiKit.DOM.TR(null,
63 MochiKit.DOM.TH({align:'left'}, aDescription), 60 MochiKit.DOM.TH({align:'left'}, aDescription),
64 MochiKit.DOM.TH(null, aTimer['ascii']['encrypt'] + ' - ' + aTimer['ascii']['decrypt'])//, 61 MochiKit.DOM.TH(null, aTimer['ascii']['encrypt'] + ' - ' + aTimer['ascii']['decrypt'])//,
65 // MochiKit.DOM.TH(null, aTimer['isoLatin1']['encrypt']+ ' - ' + aTimer['isoLatin1']['decrypt']), 62 // MochiKit.DOM.TH(null, aTimer['isoLatin1']['encrypt']+ ' - ' + aTimer['isoLatin1']['decrypt']),
66 // MochiKit.DOM.TH(null, aTimer['utf8']['encrypt'] + ' - ' + aTimer['utf8']['decrypt']) 63 // MochiKit.DOM.TH(null, aTimer['utf8']['encrypt'] + ' - ' + aTimer['utf8']['decrypt'])
67 ) 64 )
68 ); 65 );
69 66
70} 67}
71 68
72//============================================================================= 69//=============================================================================
73 70
74function timeRegularFunction (aDescription, aString, anEncryptFunction, aDecryptFunction, aTimer, aKey) { 71function timeRegularFunction (aDescription, aString, anEncryptFunction, aDecryptFunction, aTimer, aKey) {
75 var start; 72 var start;
76 var end; 73 var end;
77 var encryptTime; 74 var encryptTime;
78 var decryptTime; 75 var decryptTime;
79 var ciphertext; 76 var ciphertext;
80 var plaintext; 77 var plaintext;
81 78
82 79
83 start = new Date(); 80 start = new Date();
84 ciphertext = anEncryptFunction('trustno1', aString); 81 ciphertext = anEncryptFunction('trustno1', aString);
85 end = new Date(); 82 end = new Date();
86 encryptTime = end - start; 83 encryptTime = end - start;
87 84
88 start = new Date(); 85 start = new Date();
89 plaintext = aDecryptFunction('trustno1', ciphertext); 86 plaintext = aDecryptFunction('trustno1', ciphertext);
90 end = new Date(); 87 end = new Date();
91 decryptTime = end - start; 88 decryptTime = end - start;
92 aTimer[aKey] = { 'encrypt': encryptTime, 'decrypt': decryptTime }; 89 aTimer[aKey] = { 'encrypt': encryptTime, 'decrypt': decryptTime };
93 SimpleTest.is(aString, plaintext, aDescription); 90 SimpleTest.is(aString, plaintext, aDescription);
94} 91}
95/* 92/*
96function timeRegularFunction (anEncryptFunction, aDecryptFunction, aTimer) { 93function timeRegularFunction (anEncryptFunction, aDecryptFunction, aTimer) {
97 var start; 94 var start;
98 var end; 95 var end;
99 var encryptTime; 96 var encryptTime;
100 var decryptTime; 97 var decryptTime;
101 var ciphertext; 98 var ciphertext;
102 var plaintext; 99 var plaintext;
103 100
104 101
105 start = new Date(); 102 start = new Date();
106 ciphertext = anEncryptFunction('trustno1', asciiTestString); 103 ciphertext = anEncryptFunction('trustno1', asciiTestString);
107 end = new Date(); 104 end = new Date();
108 encryptTime = end - start; 105 encryptTime = end - start;
109 106
110 start = new Date(); 107 start = new Date();
111 plaintext = aDecryptFunction('trustno1', ciphertext); 108 plaintext = aDecryptFunction('trustno1', ciphertext);
112 end = new Date(); 109 end = new Date();
113 decryptTime = end - start; 110 decryptTime = end - start;
114 aTimer['ascii'] = { 'encrypt': encryptTime, 'decrypt': decryptTime }; 111 aTimer['ascii'] = { 'encrypt': encryptTime, 'decrypt': decryptTime };
115 SimpleTest.is(asciiTestString, plaintext, "Encrypt/decrypt the ASCII text"); 112 SimpleTest.is(asciiTestString, plaintext, "Encrypt/decrypt the ASCII text");
116 113
117 114
118 start = new Date(); 115 start = new Date();
119 ciphertext = anEncryptFunction('trustno1', isoLatin1TestString); 116 ciphertext = anEncryptFunction('trustno1', isoLatin1TestString);
120 end = new Date(); 117 end = new Date();
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/PRNG.html b/frontend/gamma/tests/tests/Clipperz/Crypto/PRNG.html
index 7ffd691..438d96f 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/PRNG.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/PRNG.html
@@ -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
29<html> 26<html>
30<head> 27<head>
31 <script> jslog_config_enabled = true; </script> 28 <script> jslog_config_enabled = true; </script>
32 29
33 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> 31 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script>
35 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 32 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
36 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 33 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
37 34
38 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
44 41
45<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/Statistics.js'></script>--> 42<!--<script type='text/javascript' src='../../../../js/Clipperz/Crypto/Statistics.js'></script>-->
46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
51</head> 48</head>
52<body> 49<body>
53<pre id="test"> 50<pre id="test">
54<script type="text/javascript"> 51<script type="text/javascript">
55test_PRNG = function() { 52test_PRNG = function() {
56 varrand1, rand2; 53 varrand1, rand2;
57 var i,c; 54 var i,c;
58 55
59 c = 10; 56 c = 10;
60 for (i=0; i<c; i++) { 57 for (i=0; i<c; i++) {
61 // jslog.debug(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32).toHexString()); 58 // jslog.debug(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32).toHexString());
62 } 59 }
63 60
64 rand1 = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(1); 61 rand1 = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(1);
65 is(rand1.byteAtIndex(0) <= 255, true, "getRandomByte returns always a single byte"); 62 is(rand1.byteAtIndex(0) <= 255, true, "getRandomByte returns always a single byte");
66 63
67 rand2 = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(1); 64 rand2 = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(1);
68 is(rand1.equals(rand2), false, "getRandomByte should almost always return two different values when called into sequence"); 65 is(rand1.equals(rand2), false, "getRandomByte should almost always return two different values when called into sequence");
69 66
70 67
71 rand1 = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32); 68 rand1 = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32);
72 rand2 = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32); 69 rand2 = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32);
73 is(rand1.equals(rand2), false, "getRandomByte should almost always return two different values when called into sequence"); 70 is(rand1.equals(rand2), false, "getRandomByte should almost always return two different values when called into sequence");
74 is(rand1.split(0,1).equals(rand2.split(0,1)), false, "getRandomByte should almost always return two different values when called into sequence"); 71 is(rand1.split(0,1).equals(rand2.split(0,1)), false, "getRandomByte should almost always return two different values when called into sequence");
75 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 1", "Value for random test"); 72 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 1", "Value for random test");
76 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 2", "Value for random test"); 73 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 2", "Value for random test");
77 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 3", "Value for random test"); 74 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 3", "Value for random test");
78 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 4", "Value for random test"); 75 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 4", "Value for random test");
79 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 5", "Value for random test"); 76 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 5", "Value for random test");
80 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 6", "Value for random test"); 77 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 6", "Value for random test");
81 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 7", "Value for random test"); 78 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 7", "Value for random test");
82 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 8", "Value for random test"); 79 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 8", "Value for random test");
83 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 9", "Value for random test"); 80 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 9", "Value for random test");
84 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 10", "Value for random test"); 81 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 10", "Value for random test");
85 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 11", "Value for random test"); 82 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 11", "Value for random test");
86 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 12", "Value for random test"); 83 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 12", "Value for random test");
87 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 13", "Value for random test"); 84 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 13", "Value for random test");
88 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 14", "Value for random test"); 85 //is(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(10000).toHexString(), "rand 14", "Value for random test");
89//jslog.debug(rand1.toHexString()); 86//jslog.debug(rand1.toHexString());
90//jslog.debug(rand2.toHexString()); 87//jslog.debug(rand2.toHexString());
91 88
92 SimpleTest.finish(); 89 SimpleTest.finish();
93} 90}
94 91
95try { 92try {
96 MochiKit.Signal.connect(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'readyToGenerateRandomBytes', test_PRNG); 93 MochiKit.Signal.connect(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'readyToGenerateRandomBytes', test_PRNG);
97 Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 94 Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
98 SimpleTest.waitForExplicitFinish(); 95 SimpleTest.waitForExplicitFinish();
99} catch (err) { 96} catch (err) {
100 97
101 var s = "test suite failure!\n"; 98 var s = "test suite failure!\n";
102 var o = {}; 99 var o = {};
103 var k = null; 100 var k = null;
104 for (k in err) { 101 for (k in err) {
105 // ensure unique keys?! 102 // ensure unique keys?!
106 if (!o[k]) { 103 if (!o[k]) {
107 s += k + ": " + err[k] + "\n"; 104 s += k + ": " + err[k] + "\n";
108 o[k] = err[k]; 105 o[k] = err[k];
109 } 106 }
110 } 107 }
111 ok ( false, s ); 108 ok ( false, s );
112} 109}
113 110
114</script> 111</script>
115</pre> 112</pre>
116</body> 113</body>
117</html> 114</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/RSA.html b/frontend/gamma/tests/tests/Clipperz/Crypto/RSA.html
index 468a987..f29f894 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/RSA.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/RSA.html
@@ -1,90 +1,87 @@
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<html> 26<html>
30<head> 27<head>
31 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
32 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> 29 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script>
33 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 30 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
34 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 31 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
35 32
36 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
38 35
39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/RSA.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/RSA.js'></script>
42 39
43</head> 40</head>
44<body> 41<body>
45<pre id="test"> 42<pre id="test">
46<script type="text/javascript"> 43<script type="text/javascript">
47try { 44try {
48 varrsaPublicKey; 45 varrsaPublicKey;
49 varrandomValue; 46 varrandomValue;
50 varpublicEncryptedValue; 47 varpublicEncryptedValue;
51 var privateEncryptedValue; 48 var privateEncryptedValue;
52 49
53 varstartTime; 50 varstartTime;
54 varendTime; 51 varendTime;
55 52
56 53
57startTime=new Date(); 54startTime=new Date();
58 rsaPublicKey = Clipperz.Crypto.RSA.generatePublicKey(512); 55 rsaPublicKey = Clipperz.Crypto.RSA.generatePublicKey(512);
59 56
60endTime=new Date(); 57endTime=new Date();
61is(true, true, 'Time to generate the RSA public key (size 512 bit): '+(endTime.getTime()-startTime.getTime())/1000.0); 58is(true, true, 'Time to generate the RSA public key (size 512 bit): '+(endTime.getTime()-startTime.getTime())/1000.0);
62 59
63 randomValue = Clipperz.Crypto.Base.generateRandomSeed(); 60 randomValue = Clipperz.Crypto.Base.generateRandomSeed();
64 publicEncryptedValue = Clipperz.Crypto.RSA.encryptUsingPublicKey(rsaPublicKey, randomValue); 61 publicEncryptedValue = Clipperz.Crypto.RSA.encryptUsingPublicKey(rsaPublicKey, randomValue);
65 privateEncryptedValue = Clipperz.Crypto.RSA.encryptUsingPrivateKey(rsaPublicKey, randomValue); 62 privateEncryptedValue = Clipperz.Crypto.RSA.encryptUsingPrivateKey(rsaPublicKey, randomValue);
66 63
67 is(publicEncryptedValue == privateEncryptedValue, false); 64 is(publicEncryptedValue == privateEncryptedValue, false);
68 is(Clipperz.Crypto.RSA.decryptUsingPrivateKey(rsaPublicKey, publicEncryptedValue), randomValue); 65 is(Clipperz.Crypto.RSA.decryptUsingPrivateKey(rsaPublicKey, publicEncryptedValue), randomValue);
69 is(Clipperz.Crypto.RSA.decryptUsingPublicKey(rsaPublicKey, privateEncryptedValue), randomValue); 66 is(Clipperz.Crypto.RSA.decryptUsingPublicKey(rsaPublicKey, privateEncryptedValue), randomValue);
70 67
71 //------------------------------------------------------------------------- 68 //-------------------------------------------------------------------------
72} catch (err) { 69} catch (err) {
73 70
74 var s = "test suite failure!\n"; 71 var s = "test suite failure!\n";
75 var o = {}; 72 var o = {};
76 var k = null; 73 var k = null;
77 for (k in err) { 74 for (k in err) {
78 // ensure unique keys?! 75 // ensure unique keys?!
79 if (!o[k]) { 76 if (!o[k]) {
80 s += k + ": " + err[k] + "\n"; 77 s += k + ": " + err[k] + "\n";
81 o[k] = err[k]; 78 o[k] = err[k];
82 } 79 }
83 } 80 }
84 ok ( false, s ); 81 ok ( false, s );
85} 82}
86 83
87</script> 84</script>
88</pre> 85</pre>
89</body> 86</body>
90</html> 87</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/SHA.html b/frontend/gamma/tests/tests/Clipperz/Crypto/SHA.html
index 1c88213..a580491 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/SHA.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/SHA.html
@@ -1,120 +1,117 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.Crypto.SHA - TEST</title> 28 <title>Clipperz.Crypto.SHA - TEST</title>
32 29
33 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 31 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
35 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 32 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
36 33
37 <script type='text/javascript' src='../../../js/JSON/json2.js'></script> 34 <script type='text/javascript' src='../../../js/JSON/json2.js'></script>
38 35
39 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
45 42
46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
47 44
48 45
49 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script> 46 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script>
50 47
51</head> 48</head>
52<body> 49<body>
53<pre id="test"> 50<pre id="test">
54<script type="text/javascript" src="SHA.test.js"></script> 51<script type="text/javascript" src="SHA.test.js"></script>
55</pre> 52</pre>
56</body> 53</body>
57</html> 54</html>
58 55
59 56
60 57
61<!-- html> 58<!-- html>
62<head> 59<head>
63 <script> 60 <script>
64 jslog_config_enabled = true; 61 jslog_config_enabled = true;
65 clipperz_profiling_enabled = true; 62 clipperz_profiling_enabled = true;
66 </script> 63 </script>
67 64
68 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 65 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
69 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> 66 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script>
70 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 67 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
71 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 68 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
72 69
73 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 70 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
74 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 71 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
75 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 72 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
76 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 73 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
77 74
78 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 75 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
79</head> 76</head>
80<body> 77<body>
81<pre id="test"> 78<pre id="test">
82<script type="text/javascript"> 79<script type="text/javascript">
83 80
84try { 81try {
85 varbyteArray; 82 varbyteArray;
86 varhash; 83 varhash;
87 var longText; 84 var longText;
88 var startTime, endTime; 85 var startTime, endTime;
89 86
90 longText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec nunc sapien, condimentum vitae, varius vel, pharetra in, augue. Mauris quam magna, pretium sit amet, accumsan id, volutpat lobortis, nibh. Fusce sagittis. Aenean justo. Curabitur euismod pede. Morbi at ante. Proin nisl leo, ultrices sed, facilisis et, nonummy sit amet, lorem. Praesent mauris tellus, pulvinar sed, nonummy vitae, rhoncus non, nunc. Proin placerat malesuada nisl. Nunc id enim. Maecenas commodo enim ac nibh. Sed condimentum, urna sit amet euismod gravida, mi urna varius odio, luctus pretium lectus justo nec felis. Ut in augue et est malesuada rhoncus. Sed vel orci. Mauris suscipit. Praesent cursus velit non turpis. Donec tristique dolor ac est. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla est sapien, vulputate eget, bibendum id, pharetra nec, mauris. Aliquam faucibus tincidunt dui. Proin iaculis. Maecenas sagittis. Integer et augue. Donec vitae urna in orci aliquet commodo. Vestibulum lorem sem, suscipit ac, placerat nec, mollis in, felis. Donec laoreet odio a mauris. Integer rutrum, sapien id varius molestie, mauris odio egestas orci, non bibendum sem felis in metus. Phasellus consectetuer lectus adipiscing mauris. Ut magna tellus, euismod ac, suscipit tincidunt, ullamcorper adipiscing, massa. Etiam orci. Phasellus a urna. Cras neque quam, laoreet at, tempus eget, euismod nec, nibh. Etiam hendrerit. Aenean vel lorem. Ut ligula lacus, congue eu, lobortis sit amet, venenatis in, magna. Nullam cursus felis quis est. Sed sem est, condimentum eu, vestibulum a, mattis vel, diam. Curabitur tincidunt pede quis pede. Sed neque diam, convallis vel, luctus at, porta id, nisl. Suspendisse potenti. Sed volutpat lobortis orci. Praesent mi. In interdum. Suspendisse suscipit ipsum eget dolor. Curabitur et tellus sed velit hendrerit varius. Cras sit amet est. Donec arcu nulla, vehicula et, pretium in, placerat id, felis. Integer mollis auctor lectus. Integer ultrices elementum sapien. Nam et erat. Nam pulvinar porta tortor. Nam at risus. Quisque nulla. Integer vestibulum, lacus id bibendum laoreet, ligula mi pharetra lorem, sit amet pharetra felis mauris quis justo. Aliquam ultricies. Duis a pede eget lorem dapibus rhoncus. Aenean eu elit non libero consectetuer viverra. Maecenas velit mi, eleifend vel, malesuada vel, condimentum quis, odio. Mauris tempus augue sed turpis. Pellentesque condimentum, lacus vitae pellentesque ultricies, risus tellus posuere nisi, et dictum turpis pede nec elit. Sed eu lectus eu justo sagittis euismod. Vestibulum lobortis, urna id mollis rhoncus, orci quam euismod ligula, at malesuada lacus magna vitae massa. Phasellus mattis fermentum velit. Nulla vulputate consequat enim. Maecenas quis neque. Curabitur sagittis facilisis neque. In elementum, eros non porttitor rhoncus, libero turpis sodales odio, vitae porta tellus purus et ante. Nullam molestie sollicitudin metus. Donec a elit. Morbi ut lacus. Donec at arcu. Quisque velit diam, interdum a, lacinia at, varius et, odio. Cras neque magna, ornare id, sollicitudin id, consequat a, est. Phasellus vestibulum est at leo. Nam facilisis, nulla dapibus condimentum pellentesque, est magna viverra ligula, at sollicitudin urna augue ut sapien. Fusce justo."; 87 longText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec nunc sapien, condimentum vitae, varius vel, pharetra in, augue. Mauris quam magna, pretium sit amet, accumsan id, volutpat lobortis, nibh. Fusce sagittis. Aenean justo. Curabitur euismod pede. Morbi at ante. Proin nisl leo, ultrices sed, facilisis et, nonummy sit amet, lorem. Praesent mauris tellus, pulvinar sed, nonummy vitae, rhoncus non, nunc. Proin placerat malesuada nisl. Nunc id enim. Maecenas commodo enim ac nibh. Sed condimentum, urna sit amet euismod gravida, mi urna varius odio, luctus pretium lectus justo nec felis. Ut in augue et est malesuada rhoncus. Sed vel orci. Mauris suscipit. Praesent cursus velit non turpis. Donec tristique dolor ac est. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla est sapien, vulputate eget, bibendum id, pharetra nec, mauris. Aliquam faucibus tincidunt dui. Proin iaculis. Maecenas sagittis. Integer et augue. Donec vitae urna in orci aliquet commodo. Vestibulum lorem sem, suscipit ac, placerat nec, mollis in, felis. Donec laoreet odio a mauris. Integer rutrum, sapien id varius molestie, mauris odio egestas orci, non bibendum sem felis in metus. Phasellus consectetuer lectus adipiscing mauris. Ut magna tellus, euismod ac, suscipit tincidunt, ullamcorper adipiscing, massa. Etiam orci. Phasellus a urna. Cras neque quam, laoreet at, tempus eget, euismod nec, nibh. Etiam hendrerit. Aenean vel lorem. Ut ligula lacus, congue eu, lobortis sit amet, venenatis in, magna. Nullam cursus felis quis est. Sed sem est, condimentum eu, vestibulum a, mattis vel, diam. Curabitur tincidunt pede quis pede. Sed neque diam, convallis vel, luctus at, porta id, nisl. Suspendisse potenti. Sed volutpat lobortis orci. Praesent mi. In interdum. Suspendisse suscipit ipsum eget dolor. Curabitur et tellus sed velit hendrerit varius. Cras sit amet est. Donec arcu nulla, vehicula et, pretium in, placerat id, felis. Integer mollis auctor lectus. Integer ultrices elementum sapien. Nam et erat. Nam pulvinar porta tortor. Nam at risus. Quisque nulla. Integer vestibulum, lacus id bibendum laoreet, ligula mi pharetra lorem, sit amet pharetra felis mauris quis justo. Aliquam ultricies. Duis a pede eget lorem dapibus rhoncus. Aenean eu elit non libero consectetuer viverra. Maecenas velit mi, eleifend vel, malesuada vel, condimentum quis, odio. Mauris tempus augue sed turpis. Pellentesque condimentum, lacus vitae pellentesque ultricies, risus tellus posuere nisi, et dictum turpis pede nec elit. Sed eu lectus eu justo sagittis euismod. Vestibulum lobortis, urna id mollis rhoncus, orci quam euismod ligula, at malesuada lacus magna vitae massa. Phasellus mattis fermentum velit. Nulla vulputate consequat enim. Maecenas quis neque. Curabitur sagittis facilisis neque. In elementum, eros non porttitor rhoncus, libero turpis sodales odio, vitae porta tellus purus et ante. Nullam molestie sollicitudin metus. Donec a elit. Morbi ut lacus. Donec at arcu. Quisque velit diam, interdum a, lacinia at, varius et, odio. Cras neque magna, ornare id, sollicitudin id, consequat a, est. Phasellus vestibulum est at leo. Nam facilisis, nulla dapibus condimentum pellentesque, est magna viverra ligula, at sollicitudin urna augue ut sapien. Fusce justo.";
91 88
92 //------------------------------------------------------------------------- 89 //-------------------------------------------------------------------------
93 // 90 //
94 //Test of SHA-256 algorithm 91 //Test of SHA-256 algorithm
95 // 92 //
96 //------------------------------------------------------------------------- 93 //-------------------------------------------------------------------------
97 94
98 byteArray = new Clipperz.ByteArray(); 95 byteArray = new Clipperz.ByteArray();
99 hash = Clipperz.Crypto.SHA.sha256(byteArray); 96 hash = Clipperz.Crypto.SHA.sha256(byteArray);
100 is(hash.toHexString(), "0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "sha256('')"); 97 is(hash.toHexString(), "0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "sha256('')");
101 98
102 byteArray = new Clipperz.ByteArray("0xbd"); 99 byteArray = new Clipperz.ByteArray("0xbd");
103 hash = Clipperz.Crypto.SHA.sha256(byteArray); 100 hash = Clipperz.Crypto.SHA.sha256(byteArray);
104 is(hash.toHexString(), "0x68325720aabd7c82f30f554b313d0570c95accbb7dc4b5aae11204c08ffe732b", "sha256('0xbd')"); 101 is(hash.toHexString(), "0x68325720aabd7c82f30f554b313d0570c95accbb7dc4b5aae11204c08ffe732b", "sha256('0xbd')");
105 102
106 byteArray = new Clipperz.ByteArray("0x5fd4"); 103 byteArray = new Clipperz.ByteArray("0x5fd4");
107 hash = Clipperz.Crypto.SHA.sha256(byteArray); 104 hash = Clipperz.Crypto.SHA.sha256(byteArray);
108 is(hash.toHexString(), "0x7c4fbf484498d21b487b9d61de8914b2eadaf2698712936d47c3ada2558f6788", "sha256('0x5fd4')"); 105 is(hash.toHexString(), "0x7c4fbf484498d21b487b9d61de8914b2eadaf2698712936d47c3ada2558f6788", "sha256('0x5fd4')");
109 106
110 byteArray = new Clipperz.ByteArray("0xc98c8e55"); 107 byteArray = new Clipperz.ByteArray("0xc98c8e55");
111 hash = Clipperz.Crypto.SHA.sha256(byteArray); 108 hash = Clipperz.Crypto.SHA.sha256(byteArray);
112 is(hash.toHexString(), "0x7abc22c0ae5af26ce93dbb94433a0e0b2e119d014f8e7f65bd56c61ccccd9504", "sha256('0xc98c8e55')"); 109 is(hash.toHexString(), "0x7abc22c0ae5af26ce93dbb94433a0e0b2e119d014f8e7f65bd56c61ccccd9504", "sha256('0xc98c8e55')");
113 110
114 byteArray = new Clipperz.ByteArray("0x0df1cd526b5a4edd"); 111 byteArray = new Clipperz.ByteArray("0x0df1cd526b5a4edd");
115 hash = Clipperz.Crypto.SHA.sha256(byteArray); 112 hash = Clipperz.Crypto.SHA.sha256(byteArray);
116 is(hash.toHexString(), "0x47f527210d6e8f940b5082fec01b7305908fa2b49ea3ae597c19a3986097153c", "sha256('0x0df1cd526b5a4edd')"); 113 is(hash.toHexString(), "0x47f527210d6e8f940b5082fec01b7305908fa2b49ea3ae597c19a3986097153c", "sha256('0x0df1cd526b5a4edd')");
117 114
118 byteArray = new Clipperz.ByteArray("0xfdf4700984ee11b70af1880d0e0fefd4"); 115 byteArray = new Clipperz.ByteArray("0xfdf4700984ee11b70af1880d0e0fefd4");
119 hash = Clipperz.Crypto.SHA.sha256(byteArray); 116 hash = Clipperz.Crypto.SHA.sha256(byteArray);
120 is(hash.toHexString(), 117 is(hash.toHexString(),
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/SHA.test.js b/frontend/gamma/tests/tests/Clipperz/Crypto/SHA.test.js
index c9f1f3b..2864aaf 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/SHA.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/SHA.test.js
@@ -1,84 +1,81 @@
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
29var testSHA = function (aValue, anExpectedResult) { 26var testSHA = function (aValue, anExpectedResult) {
30 var byteArrayValue; 27 var byteArrayValue;
31 28
32 byteArrayValue = new Clipperz.ByteArray(aValue); 29 byteArrayValue = new Clipperz.ByteArray(aValue);
33 hash = Clipperz.Crypto.SHA.sha256(byteArrayValue); 30 hash = Clipperz.Crypto.SHA.sha256(byteArrayValue);
34 is(hash.toHexString(), anExpectedResult, "sha256(' " + byteArrayValue.toHexString() + "')"); 31 is(hash.toHexString(), anExpectedResult, "sha256(' " + byteArrayValue.toHexString() + "')");
35 32
36} 33}
37 34
38 35
39var tests = { 36var tests = {
40 37
41 'basic_tests': function (someTestArgs) { 38 'basic_tests': function (someTestArgs) {
42 testSHA('', '0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'); 39 testSHA('', '0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855');
43 testSHA('0xbd', '0x68325720aabd7c82f30f554b313d0570c95accbb7dc4b5aae11204c08ffe732b'); 40 testSHA('0xbd', '0x68325720aabd7c82f30f554b313d0570c95accbb7dc4b5aae11204c08ffe732b');
44 testSHA('0x5fd4', '0x7c4fbf484498d21b487b9d61de8914b2eadaf2698712936d47c3ada2558f6788'); 41 testSHA('0x5fd4', '0x7c4fbf484498d21b487b9d61de8914b2eadaf2698712936d47c3ada2558f6788');
45 testSHA('0xc98c8e55', '0x7abc22c0ae5af26ce93dbb94433a0e0b2e119d014f8e7f65bd56c61ccccd9504'); 42 testSHA('0xc98c8e55', '0x7abc22c0ae5af26ce93dbb94433a0e0b2e119d014f8e7f65bd56c61ccccd9504');
46 testSHA('0x0df1cd526b5a4edd', '0x47f527210d6e8f940b5082fec01b7305908fa2b49ea3ae597c19a3986097153c'); 43 testSHA('0x0df1cd526b5a4edd', '0x47f527210d6e8f940b5082fec01b7305908fa2b49ea3ae597c19a3986097153c');
47 testSHA('0xfdf4700984ee11b70af1880d0e0fefd4', '0xb01ae16eed3b4a770f127b98469ba26fe3d8e9f59d8a2983214afe6cff0e6b6c'); 44 testSHA('0xfdf4700984ee11b70af1880d0e0fefd4', '0xb01ae16eed3b4a770f127b98469ba26fe3d8e9f59d8a2983214afe6cff0e6b6c');
48 testSHA('0x8cf53d90077df9a043bf8d10b470b144784411c93a4d504556834dae3ea4a5bb', '0x56059e8cb3c2978b198208bf5ca1e1ea5659b737a506324b7cec75b5ebaf057d'); 45 testSHA('0x8cf53d90077df9a043bf8d10b470b144784411c93a4d504556834dae3ea4a5bb', '0x56059e8cb3c2978b198208bf5ca1e1ea5659b737a506324b7cec75b5ebaf057d');
49 testSHA('0xeebcf5cd6b12c90db64ff71a0e08ccd956e170a50dad769480d6b1fb3eff4934cde90f9e9b930ee637a66285c10f4e8a', '0xc117b9dce689c399ec99008788cd5d24d8396fab7d96315c4f3fe6d56da63bb3'); 46 testSHA('0xeebcf5cd6b12c90db64ff71a0e08ccd956e170a50dad769480d6b1fb3eff4934cde90f9e9b930ee637a66285c10f4e8a', '0xc117b9dce689c399ec99008788cd5d24d8396fab7d96315c4f3fe6d56da63bb3');
50 testSHA('0x3592ecfd1eac618fd390e7a9c24b656532509367c21a0eac1212ac83c0b20cd896eb72b801c4d212c5452bbbf09317b50c5c9fb1997553d2bbc29bb42f5748ad', '0x105a60865830ac3a371d3843324d4bb5fa8ec0e02ddaa389ad8da4f10215c454'); 47 testSHA('0x3592ecfd1eac618fd390e7a9c24b656532509367c21a0eac1212ac83c0b20cd896eb72b801c4d212c5452bbbf09317b50c5c9fb1997553d2bbc29bb42f5748ad', '0x105a60865830ac3a371d3843324d4bb5fa8ec0e02ddaa389ad8da4f10215c454');
51 48
52 }, 49 },
53 50
54 //------------------------------------------------------------------------- 51 //-------------------------------------------------------------------------
55 52
56 'aldo_cortesi_tests': function (someTestArgs) { 53 'aldo_cortesi_tests': function (someTestArgs) {
57 testSHA('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa','0xa3f01b6939256127582ac8ae9fb47a382a244680806a3f613a118851c1ca1d47'); 54 testSHA('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa','0xa3f01b6939256127582ac8ae9fb47a382a244680806a3f613a118851c1ca1d47');
58 testSHA('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa','0xb35439a4ac6f0948b6d6f9e3c6af0f5f590ce20f1bde7090ef7970686ec6738a'); 55 testSHA('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa','0xb35439a4ac6f0948b6d6f9e3c6af0f5f590ce20f1bde7090ef7970686ec6738a');
59 testSHA('0x79', '0xa1fce4363854ff888cff4b8e7875d600c2682390412a8cf79b37d0b11148b0fa'); 56 testSHA('0x79', '0xa1fce4363854ff888cff4b8e7875d600c2682390412a8cf79b37d0b11148b0fa');
60 testSHA('0x80', '0x76be8b528d0075f7aae98d6fa57a6d3c83ae480a8469e668d7b0af968995ac71'); 57 testSHA('0x80', '0x76be8b528d0075f7aae98d6fa57a6d3c83ae480a8469e668d7b0af968995ac71');
61 }, 58 },
62 59
63 //------------------------------------------------------------------------- 60 //-------------------------------------------------------------------------
64 61
65 'longTextPerformance_test': function (someTestArgs) { 62 'longTextPerformance_test': function (someTestArgs) {
66 var longText; 63 var longText;
67 var startTime; 64 var startTime;
68 var endTime; 65 var endTime;
69 66
70 longText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec nunc sapien, condimentum vitae, varius vel, pharetra in, augue. Mauris quam magna, pretium sit amet, accumsan id, volutpat lobortis, nibh. Fusce sagittis. Aenean justo. Curabitur euismod pede. Morbi at ante. Proin nisl leo, ultrices sed, facilisis et, nonummy sit amet, lorem. Praesent mauris tellus, pulvinar sed, nonummy vitae, rhoncus non, nunc. Proin placerat malesuada nisl. Nunc id enim. Maecenas commodo enim ac nibh. Sed condimentum, urna sit amet euismod gravida, mi urna varius odio, luctus pretium lectus justo nec felis. Ut in augue et est malesuada rhoncus. Sed vel orci. Mauris suscipit. Praesent cursus velit non turpis. Donec tristique dolor ac est. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla est sapien, vulputate eget, bibendum id, pharetra nec, mauris. Aliquam faucibus tincidunt dui. Proin iaculis. Maecenas sagittis. Integer et augue. Donec vitae urna in orci aliquet commodo. Vestibulum lorem sem, suscipit ac, placerat nec, mollis in, felis. Donec laoreet odio a mauris. Integer rutrum, sapien id varius molestie, mauris odio egestas orci, non bibendum sem felis in metus. Phasellus consectetuer lectus adipiscing mauris. Ut magna tellus, euismod ac, suscipit tincidunt, ullamcorper adipiscing, massa. Etiam orci. Phasellus a urna. Cras neque quam, laoreet at, tempus eget, euismod nec, nibh. Etiam hendrerit. Aenean vel lorem. Ut ligula lacus, congue eu, lobortis sit amet, venenatis in, magna. Nullam cursus felis quis est. Sed sem est, condimentum eu, vestibulum a, mattis vel, diam. Curabitur tincidunt pede quis pede. Sed neque diam, convallis vel, luctus at, porta id, nisl. Suspendisse potenti. Sed volutpat lobortis orci. Praesent mi. In interdum. Suspendisse suscipit ipsum eget dolor. Curabitur et tellus sed velit hendrerit varius. Cras sit amet est. Donec arcu nulla, vehicula et, pretium in, placerat id, felis. Integer mollis auctor lectus. Integer ultrices elementum sapien. Nam et erat. Nam pulvinar porta tortor. Nam at risus. Quisque nulla. Integer vestibulum, lacus id bibendum laoreet, ligula mi pharetra lorem, sit amet pharetra felis mauris quis justo. Aliquam ultricies. Duis a pede eget lorem dapibus rhoncus. Aenean eu elit non libero consectetuer viverra. Maecenas velit mi, eleifend vel, malesuada vel, condimentum quis, odio. Mauris tempus augue sed turpis. Pellentesque condimentum, lacus vitae pellentesque ultricies, risus tellus posuere nisi, et dictum turpis pede nec elit. Sed eu lectus eu justo sagittis euismod. Vestibulum lobortis, urna id mollis rhoncus, orci quam euismod ligula, at malesuada lacus magna vitae massa. Phasellus mattis fermentum velit. Nulla vulputate consequat enim. Maecenas quis neque. Curabitur sagittis facilisis neque. In elementum, eros non porttitor rhoncus, libero turpis sodales odio, vitae porta tellus purus et ante. Nullam molestie sollicitudin metus. Donec a elit. Morbi ut lacus. Donec at arcu. Quisque velit diam, interdum a, lacinia at, varius et, odio. Cras neque magna, ornare id, sollicitudin id, consequat a, est. Phasellus vestibulum est at leo. Nam facilisis, nulla dapibus condimentum pellentesque, est magna viverra ligula, at sollicitudin urna augue ut sapien. Fusce justo."; 67 longText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec nunc sapien, condimentum vitae, varius vel, pharetra in, augue. Mauris quam magna, pretium sit amet, accumsan id, volutpat lobortis, nibh. Fusce sagittis. Aenean justo. Curabitur euismod pede. Morbi at ante. Proin nisl leo, ultrices sed, facilisis et, nonummy sit amet, lorem. Praesent mauris tellus, pulvinar sed, nonummy vitae, rhoncus non, nunc. Proin placerat malesuada nisl. Nunc id enim. Maecenas commodo enim ac nibh. Sed condimentum, urna sit amet euismod gravida, mi urna varius odio, luctus pretium lectus justo nec felis. Ut in augue et est malesuada rhoncus. Sed vel orci. Mauris suscipit. Praesent cursus velit non turpis. Donec tristique dolor ac est. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla est sapien, vulputate eget, bibendum id, pharetra nec, mauris. Aliquam faucibus tincidunt dui. Proin iaculis. Maecenas sagittis. Integer et augue. Donec vitae urna in orci aliquet commodo. Vestibulum lorem sem, suscipit ac, placerat nec, mollis in, felis. Donec laoreet odio a mauris. Integer rutrum, sapien id varius molestie, mauris odio egestas orci, non bibendum sem felis in metus. Phasellus consectetuer lectus adipiscing mauris. Ut magna tellus, euismod ac, suscipit tincidunt, ullamcorper adipiscing, massa. Etiam orci. Phasellus a urna. Cras neque quam, laoreet at, tempus eget, euismod nec, nibh. Etiam hendrerit. Aenean vel lorem. Ut ligula lacus, congue eu, lobortis sit amet, venenatis in, magna. Nullam cursus felis quis est. Sed sem est, condimentum eu, vestibulum a, mattis vel, diam. Curabitur tincidunt pede quis pede. Sed neque diam, convallis vel, luctus at, porta id, nisl. Suspendisse potenti. Sed volutpat lobortis orci. Praesent mi. In interdum. Suspendisse suscipit ipsum eget dolor. Curabitur et tellus sed velit hendrerit varius. Cras sit amet est. Donec arcu nulla, vehicula et, pretium in, placerat id, felis. Integer mollis auctor lectus. Integer ultrices elementum sapien. Nam et erat. Nam pulvinar porta tortor. Nam at risus. Quisque nulla. Integer vestibulum, lacus id bibendum laoreet, ligula mi pharetra lorem, sit amet pharetra felis mauris quis justo. Aliquam ultricies. Duis a pede eget lorem dapibus rhoncus. Aenean eu elit non libero consectetuer viverra. Maecenas velit mi, eleifend vel, malesuada vel, condimentum quis, odio. Mauris tempus augue sed turpis. Pellentesque condimentum, lacus vitae pellentesque ultricies, risus tellus posuere nisi, et dictum turpis pede nec elit. Sed eu lectus eu justo sagittis euismod. Vestibulum lobortis, urna id mollis rhoncus, orci quam euismod ligula, at malesuada lacus magna vitae massa. Phasellus mattis fermentum velit. Nulla vulputate consequat enim. Maecenas quis neque. Curabitur sagittis facilisis neque. In elementum, eros non porttitor rhoncus, libero turpis sodales odio, vitae porta tellus purus et ante. Nullam molestie sollicitudin metus. Donec a elit. Morbi ut lacus. Donec at arcu. Quisque velit diam, interdum a, lacinia at, varius et, odio. Cras neque magna, ornare id, sollicitudin id, consequat a, est. Phasellus vestibulum est at leo. Nam facilisis, nulla dapibus condimentum pellentesque, est magna viverra ligula, at sollicitudin urna augue ut sapien. Fusce justo.";
71 startTime = new Date(); 68 startTime = new Date();
72 testSHA(longText, '0xf6fac13c06784e0fbc61a3d25c41c9984840a8b617a2beb57cf6fa3e5e4a8949'); 69 testSHA(longText, '0xf6fac13c06784e0fbc61a3d25c41c9984840a8b617a2beb57cf6fa3e5e4a8949');
73 endTime = new Date(); 70 endTime = new Date();
74 71
75 is((endTime - startTime) < 100, true, "Long text hash performance (" + (endTime - startTime) + ")"); 72 is((endTime - startTime) < 100, true, "Long text hash performance (" + (endTime - startTime) + ")");
76 }, 73 },
77 74
78 //------------------------------------------------------------------------- 75 //-------------------------------------------------------------------------
79 'syntaxFix': MochiKit.Base.noop 76 'syntaxFix': MochiKit.Base.noop
80} 77}
81 78
82//============================================================================= 79//=============================================================================
83 80
84SimpleTest.runDeferredTests("Clipperz.Crypto.SHA", tests, {trace:false}); 81SimpleTest.runDeferredTests("Clipperz.Crypto.SHA", tests, {trace:false});
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/SRP.html b/frontend/gamma/tests/tests/Clipperz/Crypto/SRP.html
index 63278c4..d0ee153 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/SRP.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/SRP.html
@@ -1,120 +1,117 @@
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<html> 26<html>
30<head> 27<head>
31 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
32 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> 29 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script>
33 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 30 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
34 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 31 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
35 32
36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
40 37
41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
47</head> 44</head>
48<body> 45<body>
49<pre id="test"> 46<pre id="test">
50<script type="text/javascript"> 47<script type="text/javascript">
51hashString = function(aValue) { 48hashString = function(aValue) {
52 return Clipperz.Crypto.SHA.sha256(new Clipperz.ByteArray(aValue)).toHexString().substring(2) 49 return Clipperz.Crypto.SHA.sha256(new Clipperz.ByteArray(aValue)).toHexString().substring(2)
53} 50}
54try { 51try {
55 varusername; 52 varusername;
56 varpassphrase; 53 varpassphrase;
57 54
58 var C; 55 var C;
59 var P; 56 var P;
60 var encryptedText_1; 57 var encryptedText_1;
61 var encryptedText_2; 58 var encryptedText_2;
62 varsalt; 59 varsalt;
63 varx; 60 varx;
64 var v; 61 var v;
65 var v1; 62 var v1;
66 63
67 username = "giulio.cesare"; 64 username = "giulio.cesare";
68 passphrase = "trustno1"; 65 passphrase = "trustno1";
69 66
70 C = hashString(username); 67 C = hashString(username);
71 is (C, "bde3c7b5fdcd9d6ce72782ca1ae912fc4397d668fcb3a73a04e5d47852670c4a", "C"); 68 is (C, "bde3c7b5fdcd9d6ce72782ca1ae912fc4397d668fcb3a73a04e5d47852670c4a", "C");
72 69
73 P = hashString(passphrase + username); 70 P = hashString(passphrase + username);
74 is (P, "d79f5c5a04e91e1c85fb64cb6ee9481cb52c181047f69da02cd6c3ce6d058a76", "P"); 71 is (P, "d79f5c5a04e91e1c85fb64cb6ee9481cb52c181047f69da02cd6c3ce6d058a76", "P");
75 72
76 salt = "cf1fa93393ade60318b8276f1f39420098419445005a7dc9117975fe1f8d9988"; 73 salt = "cf1fa93393ade60318b8276f1f39420098419445005a7dc9117975fe1f8d9988";
77 74
78 x = hashString(salt + P); 75 x = hashString(salt + P);
79 is(x, "21fe88a158e420aade86e00b5eb12a4c19bf15482fa34c542c90b1afdbd5b5fd", "x"); 76 is(x, "21fe88a158e420aade86e00b5eb12a4c19bf15482fa34c542c90b1afdbd5b5fd", "x");
80 77
81 v = Clipperz.Crypto.SRP.g().powerModule(new Clipperz.Crypto.BigInt(x, 16), Clipperz.Crypto.SRP.n()); 78 v = Clipperz.Crypto.SRP.g().powerModule(new Clipperz.Crypto.BigInt(x, 16), Clipperz.Crypto.SRP.n());
82 is(v.asString(10), "33816467430011076413789931449607305355248467973000153409872503376381719918118", "v"); 79 is(v.asString(10), "33816467430011076413789931449607305355248467973000153409872503376381719918118", "v");
83 is(v.asString(16), "4ac37139dbf32ebabd2c43f91dd085066d3c457d059efd5902d32ed247fcb626", "v (base 16)"); 80 is(v.asString(16), "4ac37139dbf32ebabd2c43f91dd085066d3c457d059efd5902d32ed247fcb626", "v (base 16)");
84 81
85 //encryptedText_1 = Clipperz.Crypto.Base.encryptUsingSecretKey(passphrase, username); 82 //encryptedText_1 = Clipperz.Crypto.Base.encryptUsingSecretKey(passphrase, username);
86 //encryptedText_2 = Clipperz.Crypto.Base.encryptUsingSecretKey(passphrase, username); 83 //encryptedText_2 = Clipperz.Crypto.Base.encryptUsingSecretKey(passphrase, username);
87 //is (encryptedText_1 != encryptedText_2, true, "Two round of encryption (with random padding bits) should NOT produce the same result"); 84 //is (encryptedText_1 != encryptedText_2, true, "Two round of encryption (with random padding bits) should NOT produce the same result");
88 85
89 //------------------------------------------------------------------------- 86 //-------------------------------------------------------------------------
90 87
91 username = "giulio.cesare.debug"; 88 username = "giulio.cesare.debug";
92 passphrase = "trustno1"; 89 passphrase = "trustno1";
93 90
94 C = hashString(username); 91 C = hashString(username);
95 is (C, "fa1af609123b97a10d676158ed538d4657a89ac33a102b22bd9a66712039e208", "C"); 92 is (C, "fa1af609123b97a10d676158ed538d4657a89ac33a102b22bd9a66712039e208", "C");
96 93
97 P = hashString(passphrase + username); 94 P = hashString(passphrase + username);
98 is (P, "e1bfba03dd626b12f29458a6ad63fb2c01b4765548504e1e2f6b1503c82e4253", "P"); 95 is (P, "e1bfba03dd626b12f29458a6ad63fb2c01b4765548504e1e2f6b1503c82e4253", "P");
99 96
100 salt = "cf1fa93393ade60318b8276f1f39420098419445005a7dc9117975fe1f8d9988"; 97 salt = "cf1fa93393ade60318b8276f1f39420098419445005a7dc9117975fe1f8d9988";
101 98
102 x = hashString(salt + P); 99 x = hashString(salt + P);
103 is(x, "93d4af3cdcd2447a745d309826dff3161feed4b15f32db8e909ff032a2bc8fb8", "x"); 100 is(x, "93d4af3cdcd2447a745d309826dff3161feed4b15f32db8e909ff032a2bc8fb8", "x");
104 101
105 v = Clipperz.Crypto.SRP.g().powerModule(new Clipperz.Crypto.BigInt(x, 16), Clipperz.Crypto.SRP.n()); 102 v = Clipperz.Crypto.SRP.g().powerModule(new Clipperz.Crypto.BigInt(x, 16), Clipperz.Crypto.SRP.n());
106 is(v.asString(10), "115049747015252903452664067168789229427785288458366249918596663144588656606556", "v"); 103 is(v.asString(10), "115049747015252903452664067168789229427785288458366249918596663144588656606556", "v");
107 104
108 //encryptedText_1 = Clipperz.Crypto.Base.encryptUsingSecretKey(passphrase, username); 105 //encryptedText_1 = Clipperz.Crypto.Base.encryptUsingSecretKey(passphrase, username);
109 //encryptedText_2 = Clipperz.Crypto.Base.encryptUsingSecretKey(passphrase, username); 106 //encryptedText_2 = Clipperz.Crypto.Base.encryptUsingSecretKey(passphrase, username);
110 //is (encryptedText_1 != encryptedText_2, true, "Two round of encryption (with random padding bits) should NOT produce the same result"); 107 //is (encryptedText_1 != encryptedText_2, true, "Two round of encryption (with random padding bits) should NOT produce the same result");
111 108
112 //------------------------------------------------------------------------- 109 //-------------------------------------------------------------------------
113 110
114 var srpConnection; 111 var srpConnection;
115 var C, P, salt; 112 var C, P, salt;
116 113
117 C = "da8602c2f847306f4eb9acdaad925277d1fad1408f173f128a078aea15e60b1e"; 114 C = "da8602c2f847306f4eb9acdaad925277d1fad1408f173f128a078aea15e60b1e";
118 P = "77643559beca49dd21c1c31db10bb0a9009662cb504413dc3fa3b7303c7e02ba"; 115 P = "77643559beca49dd21c1c31db10bb0a9009662cb504413dc3fa3b7303c7e02ba";
119 salt ="000108cbbacda1f03ea9360301045434ec7d82ba150936df08a229cbb4832ce1"; 116 salt ="000108cbbacda1f03ea9360301045434ec7d82ba150936df08a229cbb4832ce1";
120 117
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/Usage.html b/frontend/gamma/tests/tests/Clipperz/Crypto/Usage.html
index 63f7610..8920915 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/Usage.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/Usage.html
@@ -1,120 +1,117 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.Crypto.Usage - TEST</title> 28 <title>Clipperz.Crypto.Usage - TEST</title>
32 29
33 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> 31 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script>
35 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 32 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
36 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 33 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
37 34
38 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 35 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
39 36
40 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
45 42
46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
49 46
50</head> 47</head>
51<body> 48<body>
52<pre id="test"> 49<pre id="test">
53<script type="text/javascript"> 50<script type="text/javascript">
54Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 51Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
55 52
56MochiKit.Base.update(Clipperz, { 53MochiKit.Base.update(Clipperz, {
57 'PM': { 54 'PM': {
58 'Crypto': { 55 'Crypto': {
59 'passwordEntropy': function(aValue) { 56 'passwordEntropy': function(aValue) {
60 var result; 57 var result;
61 varbitPerChar; 58 varbitPerChar;
62 59
63 bitPerChar = 4; 60 bitPerChar = 4;
64 if (/[a-z]/.test(aValue)) { 61 if (/[a-z]/.test(aValue)) {
65 bitPerChar ++; 62 bitPerChar ++;
66 } 63 }
67 if (/[A-Z]/.test(aValue)) { 64 if (/[A-Z]/.test(aValue)) {
68 bitPerChar ++; 65 bitPerChar ++;
69 } 66 }
70 if (/[^a-zA-Z0-9]/.test(aValue)) { 67 if (/[^a-zA-Z0-9]/.test(aValue)) {
71 bitPerChar ++; 68 bitPerChar ++;
72 } 69 }
73 //MochiKit.Logging.logDebug("--- bitPerChar: " + bitPerChar); 70 //MochiKit.Logging.logDebug("--- bitPerChar: " + bitPerChar);
74 71
75 result = aValue.length * bitPerChar; 72 result = aValue.length * bitPerChar;
76 73
77 return result; 74 return result;
78 } 75 }
79 } 76 }
80 } 77 }
81}) 78})
82 79
83try { 80try {
84 var keyValue; 81 var keyValue;
85 var keyEntropy; 82 var keyEntropy;
86 varkey; 83 varkey;
87 var plainText; 84 var plainText;
88 var cypherText; 85 var cypherText;
89 var randomBytes; 86 var randomBytes;
90 var hashedValue; 87 var hashedValue;
91 88
92 key = Clipperz.Crypto.SHA.sha256(new Clipperz.ByteArray("This is my long and complex passphrase")); 89 key = Clipperz.Crypto.SHA.sha256(new Clipperz.ByteArray("This is my long and complex passphrase"));
93 keyEntropy = Clipperz.PM.Crypto.passwordEntropy(key); 90 keyEntropy = Clipperz.PM.Crypto.passwordEntropy(key);
94 91
95 cypherText = Clipperz.Crypto.AES.encrypt(key, new Clipperz.ByteArray("some text to encrypt")); 92 cypherText = Clipperz.Crypto.AES.encrypt(key, new Clipperz.ByteArray("some text to encrypt"));
96 plainText = Clipperz.Crypto.AES.decrypt(key, cypherText).asString(); 93 plainText = Clipperz.Crypto.AES.decrypt(key, cypherText).asString();
97 is(plainText, "some text to encrypt"); 94 is(plainText, "some text to encrypt");
98 95
99 randomBytes = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(256/8); 96 randomBytes = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(256/8);
100 hashedValue = Clipperz.Crypto.SHA.sha256(new Clipperz.ByteArray("text to hash")); 97 hashedValue = Clipperz.Crypto.SHA.sha256(new Clipperz.ByteArray("text to hash"));
101 98
102//############################################################################# 99//#############################################################################
103 100
104} catch (err) { 101} catch (err) {
105 102
106 var s = "test suite failure!\n"; 103 var s = "test suite failure!\n";
107 var o = {}; 104 var o = {};
108 var k = null; 105 var k = null;
109 for (k in err) { 106 for (k in err) {
110 // ensure unique keys?! 107 // ensure unique keys?!
111 if (!o[k]) { 108 if (!o[k]) {
112 s += k + ": " + err[k] + "\n"; 109 s += k + ": " + err[k] + "\n";
113 o[k] = err[k]; 110 o[k] = err[k];
114 } 111 }
115 } 112 }
116 ok ( false, s ); 113 ok ( false, s );
117} 114}
118 115
119</script> 116</script>
120</pre> 117</pre>
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/index.html b/frontend/gamma/tests/tests/Clipperz/Crypto/index.html
index 67487ac..dd63ceb 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/index.html
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/index.html
@@ -1,58 +1,55 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.Crypto.* - tests</title> 28 <title>Clipperz.Crypto.* - tests</title>
32 29
33 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../../SimpleTest/TestRunner.js"></script> 31 <script type="text/javascript" src="../../../SimpleTest/TestRunner.js"></script>
35</head> 32</head>
36<body> 33<body>
37<script> 34<script>
38TestRunner.runTests( 35TestRunner.runTests(
39 'AES.html', 36 'AES.html',
40 'AES.performance.html', 37 'AES.performance.html',
41 'Base.html', 38 'Base.html',
42 'BigInt.html', 39 'BigInt.html',
43 40
44 //'ECC.B283.deferred.html', 41 //'ECC.B283.deferred.html',
45 //'ECC.BinaryField.FiniteField.html', 42 //'ECC.BinaryField.FiniteField.html',
46 //'ECC.BinaryField.FiniteField.B283.html', 43 //'ECC.BinaryField.FiniteField.B283.html',
47 //'ECC.BinaryField.Value.html', 44 //'ECC.BinaryField.Value.html',
48 //#'ECC.K283.deferred.html', 45 //#'ECC.K283.deferred.html',
49 46
50 'PRNG.html', 47 'PRNG.html',
51 //'RSA.html', 48 //'RSA.html',
52 'SHA.html', 49 'SHA.html',
53 'SRP.html', 50 'SRP.html',
54 'Usage.html' 51 'Usage.html'
55); 52);
56</script> 53</script>
57</body> 54</body>
58</html> \ No newline at end of file 55</html> \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Clipperz/Crypto/jscrypto.js b/frontend/gamma/tests/tests/Clipperz/Crypto/jscrypto.js
index e9db091..9a0d5fa 100644
--- a/frontend/gamma/tests/tests/Clipperz/Crypto/jscrypto.js
+++ b/frontend/gamma/tests/tests/Clipperz/Crypto/jscrypto.js
@@ -1,120 +1,117 @@
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/* jsCrypto 26/* jsCrypto
30Core AES 27Core AES
31 28
32Emily Stark (estark@stanford.edu) 29Emily Stark (estark@stanford.edu)
33Mike Hamburg (mhamburg@stanford.edu) 30Mike Hamburg (mhamburg@stanford.edu)
34Dan Boneh (dabo@cs.stanford.edu) 31Dan Boneh (dabo@cs.stanford.edu)
35 32
36Symmetric AES in Javascript using precomputed lookup tables for round transformations rather for speed improvements 33Symmetric AES in Javascript using precomputed lookup tables for round transformations rather for speed improvements
37and code size reduction. Provides authenticated encryption in OCB and CCM modes. 34and code size reduction. Provides authenticated encryption in OCB and CCM modes.
38Parts of this code are based on the OpenSSL implementation of AES: http://www.openssl.org 35Parts of this code are based on the OpenSSL implementation of AES: http://www.openssl.org
39 36
40Public domain, 2009. 37Public domain, 2009.
41 38
42*/ 39*/
43 40
44 41
45// CCM mode is the default 42// CCM mode is the default
46var CCM = 1, OCB = 2; 43var CCM = 1, OCB = 2;
47 44
48/* aes object constructor. Takes as arguments: 45/* aes object constructor. Takes as arguments:
49- 16-byte key, or an array of 4 32-bit words 46- 16-byte key, or an array of 4 32-bit words
50- Optionally specify a mode (aes.OCB or aes.CCM). Defaults to CCM 47- Optionally specify a mode (aes.OCB or aes.CCM). Defaults to CCM
51- Optionally specify a MAC tag length for integrity. Defaults to 16 bytes 48- Optionally specify a MAC tag length for integrity. Defaults to 16 bytes
52*/ 49*/
53function aes(key, mode, Tlen) { 50function aes(key, mode, Tlen) {
54 // initialize objects for CCM and OCB modes 51 // initialize objects for CCM and OCB modes
55 this._CCM = new cipherCCM(this); 52 this._CCM = new cipherCCM(this);
56 this._OCB = new cipherOCB(this); 53 this._OCB = new cipherOCB(this);
57 54
58 this._decryptScheduled = false; 55 this._decryptScheduled = false;
59 56
60 if (mode) this._mode = mode; 57 if (mode) this._mode = mode;
61 else this._mode = OCB; 58 else this._mode = OCB;
62 59
63 // AES round constants 60 // AES round constants
64 this._RCON = [ 61 this._RCON = [
65 [0x00, 0x00, 0x00, 0x00], 62 [0x00, 0x00, 0x00, 0x00],
66 [0x01, 0x00, 0x00, 0x00], 63 [0x01, 0x00, 0x00, 0x00],
67 [0x02, 0x00, 0x00, 0x00], 64 [0x02, 0x00, 0x00, 0x00],
68 [0x04, 0x00, 0x00, 0x00], 65 [0x04, 0x00, 0x00, 0x00],
69 [0x08, 0x00, 0x00, 0x00], 66 [0x08, 0x00, 0x00, 0x00],
70 [0x10, 0x00, 0x00, 0x00], 67 [0x10, 0x00, 0x00, 0x00],
71 [0x20, 0x00, 0x00, 0x00], 68 [0x20, 0x00, 0x00, 0x00],
72 [0x40, 0x00, 0x00, 0x00], 69 [0x40, 0x00, 0x00, 0x00],
73 [0x80, 0x00, 0x00, 0x00], 70 [0x80, 0x00, 0x00, 0x00],
74 [0x1b, 0x00, 0x00, 0x00], 71 [0x1b, 0x00, 0x00, 0x00],
75 [0x36, 0x00, 0x00, 0x00] 72 [0x36, 0x00, 0x00, 0x00]
76 ]; 73 ];
77 74
78 this._key_len = 16; 75 this._key_len = 16;
79 if (key.length == 4) { 76 if (key.length == 4) {
80 this._key = []; 77 this._key = [];
81 aes.wordsToBytes(key, this._key); 78 aes.wordsToBytes(key, this._key);
82 } 79 }
83 else 80 else
84 this._key = key; 81 this._key = key;
85 82
86 if (Tlen) this._Tlen = Tlen; 83 if (Tlen) this._Tlen = Tlen;
87 else this._Tlen = 16; // tag length in bytes 84 else this._Tlen = 16; // tag length in bytes
88 85
89 this._nr = 10; 86 this._nr = 10;
90 87
91 // initialize tables that will be precomputed 88 // initialize tables that will be precomputed
92 this._SBOX = []; 89 this._SBOX = [];
93 this._INV_SBOX = []; 90 this._INV_SBOX = [];
94 this._T = new Array(4); 91 this._T = new Array(4);
95 this._Tin = new Array(4); 92 this._Tin = new Array(4);
96 for (var i=0; i < 4; i++) { 93 for (var i=0; i < 4; i++) {
97 this._T[i] = []; 94 this._T[i] = [];
98 this._Tin[i] = []; 95 this._Tin[i] = [];
99 } 96 }
100 97
101 this._precompute(); 98 this._precompute();
102 this.scheduleEncrypt(); 99 this.scheduleEncrypt();
103 100
104 // initialize encryption and decryption buffers 101 // initialize encryption and decryption buffers
105 this._ctBuffer = []; 102 this._ctBuffer = [];
106 this._ptBuffer = []; 103 this._ptBuffer = [];
107} 104}
108 105
109 106
110////////////////// 107//////////////////
111// KEY SCHEDULING 108// KEY SCHEDULING
112////////////////// 109//////////////////
113 110
114aes.prototype.scheduleEncrypt = function () { 111aes.prototype.scheduleEncrypt = function () {
115 this._decryptScheduled = false; 112 this._decryptScheduled = false;
116 113
117 this._w = new Array(this._nr+1); 114 this._w = new Array(this._nr+1);
118 this._w[0] = new Array(4); 115 this._w[0] = new Array(4);
119 for (var i=0; i < 4; i++) 116 for (var i=0; i < 4; i++)
120 this._w[0][i] = this._key[i]; 117 this._w[0][i] = this._key[i];
diff --git a/frontend/gamma/tests/tests/Clipperz/DOM.html b/frontend/gamma/tests/tests/Clipperz/DOM.html
index 2060215..782b1fe 100644
--- a/frontend/gamma/tests/tests/Clipperz/DOM.html
+++ b/frontend/gamma/tests/tests/Clipperz/DOM.html
@@ -1,58 +1,55 @@
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<html> 26<html>
30<head> 27<head>
31 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
32 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script> 29 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script>
33 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css"> 30 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css">
34 31
35 <script type='text/javascript' src='../../../js/JSON/json2.js'></script> 32 <script type='text/javascript' src='../../../js/JSON/json2.js'></script>
36 33
37 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script> 34 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script>
38 <script type='text/javascript' src='../../../js/Clipperz/YUI/DomHelper.js'></script> 35 <script type='text/javascript' src='../../../js/Clipperz/YUI/DomHelper.js'></script>
39 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script> 36 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script>
40 <script type='text/javascript' src='../../../js/Clipperz/DOM.js'></script> 37 <script type='text/javascript' src='../../../js/Clipperz/DOM.js'></script>
41 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script> 38 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script>
42 39
43 <script type='text/javascript' src='../../../js/Clipperz/Crypto/Base.js'></script> 40 <script type='text/javascript' src='../../../js/Clipperz/Crypto/Base.js'></script>
44</head> 41</head>
45<body> 42<body>
46 43
47<pre id="test"> 44<pre id="test">
48<script> 45<script>
49 Clipperz_IEisBroken = false; 46 Clipperz_IEisBroken = false;
50</script> 47</script>
51 48
52<!--[if IE]><script> 49<!--[if IE]><script>
53Clipperz_IEisBroken = true; 50Clipperz_IEisBroken = true;
54</script><![endif]--> 51</script><![endif]-->
55<script type="text/javascript" src="DOM.test.js"></script> 52<script type="text/javascript" src="DOM.test.js"></script>
56</pre> 53</pre>
57</body> 54</body>
58</html> 55</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/DOM.test.js b/frontend/gamma/tests/tests/Clipperz/DOM.test.js
index a2aafc5..e8c6225 100644
--- a/frontend/gamma/tests/tests/Clipperz/DOM.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/DOM.test.js
@@ -1,82 +1,79 @@
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 { 26try {
30 var template; 27 var template;
31 var templateArgs; 28 var templateArgs;
32 var element; 29 var element;
33 var rowElement; 30 var rowElement;
34 var tdElement; 31 var tdElement;
35 32
36 template = Clipperz.DOM.Helper.createTemplate( 33 template = Clipperz.DOM.Helper.createTemplate(
37 [ 34 [
38 {tag:'td', children:[{tag:'img', cls:'favicon', src:'{faviconUrl}'}]}, 35 {tag:'td', children:[{tag:'img', cls:'favicon', src:'{faviconUrl}'}]},
39 {tag:'td', children:[{tag:'a', href:'#', cls:'title', html:'{cardTitle}'}]}, 36 {tag:'td', children:[{tag:'a', href:'#', cls:'title', html:'{cardTitle}'}]},
40 {tag:'td', children:[{tag:'span', cls:'directLogins', id:'{directLoginsID}'}]}, 37 {tag:'td', children:[{tag:'span', cls:'directLogins', id:'{directLoginsID}'}]},
41 {tag:'td', children:[{tag:'span', cls:'latestUpdate', html:'{latestUpdate}'}]}, 38 {tag:'td', children:[{tag:'span', cls:'latestUpdate', html:'{latestUpdate}'}]},
42 {tag:'td'} 39 {tag:'td'}
43 ] 40 ]
44 ); 41 );
45 42
46 templateArgs = { 43 templateArgs = {
47 cardTitle: "Amazon.com", 44 cardTitle: "Amazon.com",
48 directLoginsID: "Clipperz_PM_Components_directLogins_58", 45 directLoginsID: "Clipperz_PM_Components_directLogins_58",
49 faviconUrl: "http://www.amazon.com/favicon.ico", 46 faviconUrl: "http://www.amazon.com/favicon.ico",
50 latestUpdate: "", 47 latestUpdate: "",
51 reference: "13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551" 48 reference: "13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551"
52 } 49 }
53 50
54 element = Clipperz.DOM.Helper.append(document.body, {tag:'table', children:[ 51 element = Clipperz.DOM.Helper.append(document.body, {tag:'table', children:[
55 {tag:'theader'}, 52 {tag:'theader'},
56 {tag:'tbody', children:[ 53 {tag:'tbody', children:[
57 {tag:'tr', id:'testRow'} 54 {tag:'tr', id:'testRow'}
58 ]}, 55 ]},
59 {tag:'tfooter'} 56 {tag:'tfooter'}
60 ]}); 57 ]});
61 ok(element != null, "created the TABLE"); 58 ok(element != null, "created the TABLE");
62 59
63 rowElement = Clipperz.DOM.get('testRow'); 60 rowElement = Clipperz.DOM.get('testRow');
64 ok(testRow != null, "created the ROW"); 61 ok(testRow != null, "created the ROW");
65 62
66 template.append(rowElement, templateArgs); 63 template.append(rowElement, templateArgs);
67 tdElement = Clipperz.DOM.get(templateArgs['directLoginsID']); 64 tdElement = Clipperz.DOM.get(templateArgs['directLoginsID']);
68 ok(tdElement != null, "created the TD"); 65 ok(tdElement != null, "created the TD");
69 66
70} catch (err) { 67} catch (err) {
71 var s = "test suite failure!\n"; 68 var s = "test suite failure!\n";
72 var o = {}; 69 var o = {};
73 var k = null; 70 var k = null;
74 for (k in err) { 71 for (k in err) {
75 // ensure unique keys?! 72 // ensure unique keys?!
76 if (!o[k]) { 73 if (!o[k]) {
77 s += k + ": " + err[k] + "\n"; 74 s += k + ": " + err[k] + "\n";
78 o[k] = err[k]; 75 o[k] = err[k];
79 } 76 }
80 } 77 }
81 ok ( false, s ); 78 ok ( false, s );
82} 79}
diff --git a/frontend/gamma/tests/tests/Clipperz/Date.html b/frontend/gamma/tests/tests/Clipperz/Date.html
index 5712a52..1f425c8 100644
--- a/frontend/gamma/tests/tests/Clipperz/Date.html
+++ b/frontend/gamma/tests/tests/Clipperz/Date.html
@@ -1,54 +1,51 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.Date - TEST</title> 28 <title>Clipperz.Date - TEST</title>
32 29
33 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script> 31 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script>
35 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css"> 32 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css">
36 33
37 <script type='text/javascript' src='../../../js/JSON/json2.js'></script> 34 <script type='text/javascript' src='../../../js/JSON/json2.js'></script>
38 35
39 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script> 36 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script>
40 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script> 37 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script>
41 <script type='text/javascript' src='../../../js/Clipperz/Date.js'></script> 38 <script type='text/javascript' src='../../../js/Clipperz/Date.js'></script>
42 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script> 39 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script>
43 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script> 40 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script>
44 41
45 42
46 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script> 43 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script>
47 44
48</head> 45</head>
49<body> 46<body>
50<pre id="test"> 47<pre id="test">
51<script type="text/javascript" src="Date.test.js"></script> 48<script type="text/javascript" src="Date.test.js"></script>
52</pre> 49</pre>
53</body> 50</body>
54</html> 51</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/Date.test.js b/frontend/gamma/tests/tests/Clipperz/Date.test.js
index 06f7dc8..f184fd6 100644
--- a/frontend/gamma/tests/tests/Clipperz/Date.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/Date.test.js
@@ -1,66 +1,63 @@
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
29var tests = { 26var tests = {
30 27
31 '001_test': function () { 28 '001_test': function () {
32 vardate; 29 vardate;
33 var locale; 30 var locale;
34 31
35 // date = new Date(0); 32 // date = new Date(0);
36 // date.setMilliseconds(Date.parse("Fri, 21 Sep 2007 10:04:24 UTC")); 33 // date.setMilliseconds(Date.parse("Fri, 21 Sep 2007 10:04:24 UTC"));
37 34
38 date = new Date(Date.parse("Fri, 21 Sep 2007 10:04:24 UTC")); 35 date = new Date(Date.parse("Fri, 21 Sep 2007 10:04:24 UTC"));
39 36
40 locale = { 37 locale = {
41 'amDesignation':"am", 38 'amDesignation':"am",
42 'pmDesignation':"pm", 39 'pmDesignation':"pm",
43 // 'shortDateFormat':"d/m/y", 40 // 'shortDateFormat':"d/m/y",
44 // 'longDateFormat':"", 41 // 'longDateFormat':"",
45 'months': ["January", "February", "March","April", 42 'months': ["January", "February", "March","April",
46 "May", "June", "July", "August", 43 "May", "June", "July", "August",
47 "September", "October", "November", "December"], 44 "September", "October", "November", "December"],
48 'shortMonths': ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], 45 'shortMonths': ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
49 'days': ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], 46 'days': ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
50 'shortDays': ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ] 47 'shortDays': ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ]
51 } 48 }
52 49
53 is(Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(date, "d/m/y", locale), '21/09/07', "formatDate - 1"); 50 is(Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(date, "d/m/y", locale), '21/09/07', "formatDate - 1");
54 is(Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(date, "D M Y", locale), 'Fri Sep 2007', "formatDate - 2"); 51 is(Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(date, "D M Y", locale), 'Fri Sep 2007', "formatDate - 2");
55 is(Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(date, "D, d M Y", locale), 'Fri, 21 Sep 2007', "formatDate - 3"); 52 is(Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(date, "D, d M Y", locale), 'Fri, 21 Sep 2007', "formatDate - 3");
56 is(Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(date, "D, d M Y H:i:s", locale), 'Fri, 21 Sep 2007 12:04:24', "formatDate - 4"); 53 is(Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(date, "D, d M Y H:i:s", locale), 'Fri, 21 Sep 2007 12:04:24', "formatDate - 4");
57 // is(Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(date, "D, d M Y H:i:s (T)", locale), 'Fri, 21 Sep 2007 11:04:24 (CEST)', "formatDate - 5"); 54 // is(Clipperz.Date.formatDateWithPHPLikeTemplateAndLocale(date, "D, d M Y H:i:s (T)", locale), 'Fri, 21 Sep 2007 11:04:24 (CEST)', "formatDate - 5");
58 }, 55 },
59 56
60 //------------------------------------------------------------------------- 57 //-------------------------------------------------------------------------
61 'syntaxFix': MochiKit.Base.noop 58 'syntaxFix': MochiKit.Base.noop
62} 59}
63 60
64//============================================================================= 61//=============================================================================
65 62
66SimpleTest.runDeferredTests("Clipperz.Date", tests, {trace:false}); 63SimpleTest.runDeferredTests("Clipperz.Date", tests, {trace:false});
diff --git a/frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.data.js b/frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.data.js
index 5bfb8c7..3c407f7 100644
--- a/frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.data.js
+++ b/frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.data.js
@@ -1,120 +1,117 @@
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
29var testData = {} 26var testData = {}
30 27
31testData['Barb_Newman_data'] = ""; 28testData['Barb_Newman_data'] = "";
32testData['Barb_Newman_data'] = testData['Barb_Newman_data'] + 29testData['Barb_Newman_data'] = testData['Barb_Newman_data'] +
33 "[Domain Administration Account]" + "\n" + 30 "[Domain Administration Account]" + "\n" +
34 "Group: Windows" + "\n" + 31 "Group: Windows" + "\n" +
35 "User Name: _ABC" + "\n" + 32 "User Name: _ABC" + "\n" +
36 "URL: " + "\n" + 33 "URL: " + "\n" +
37 "Password: 123456" + "\n" + 34 "Password: 123456" + "\n" +
38 "Notes: " + "\n" + 35 "Notes: " + "\n" +
39 "" + "\n" + 36 "" + "\n" +
40 "[Enquiro Domain]" + "\n" + 37 "[Enquiro Domain]" + "\n" +
41 "Group: Windows" + "\n" + 38 "Group: Windows" + "\n" +
42 "User Name: ABC" + "\n" + 39 "User Name: ABC" + "\n" +
43 "URL: " + "\n" + 40 "URL: " + "\n" +
44 "Password: 123456" + "\n" + 41 "Password: 123456" + "\n" +
45 "Notes: This is an Exchange Mailbox checked by IT/Programming" + "\n" + 42 "Notes: This is an Exchange Mailbox checked by IT/Programming" + "\n" +
46 "" + "\n" + 43 "" + "\n" +
47 "[Enquiro Domain Administrator Account]" + "\n" + 44 "[Enquiro Domain Administrator Account]" + "\n" +
48 "Group: Windows" + "\n" + 45 "Group: Windows" + "\n" +
49 "User Name: ENQUIRO\ABC" + "\n" + 46 "User Name: ENQUIRO\ABC" + "\n" +
50 "URL: " + "\n" + 47 "URL: " + "\n" +
51 "Password: 123456" + "\n" + 48 "Password: 123456" + "\n" +
52 "Notes: Obsolete" + "\n" + 49 "Notes: Obsolete" + "\n" +
53 "" + "\n" + 50 "" + "\n" +
54 "[Enquiro Domain Administrator Account]" + "\n" + 51 "[Enquiro Domain Administrator Account]" + "\n" +
55 "Group: Windows" + "\n" + 52 "Group: Windows" + "\n" +
56 "User Name: ENQUIRO\ABC" + "\n" + 53 "User Name: ENQUIRO\ABC" + "\n" +
57 "URL: " + "\n" + 54 "URL: " + "\n" +
58 "Password: 123456" + "\n" + 55 "Password: 123456" + "\n" +
59 "Notes: Changed on 07 Sep 2007 by Randy Kissick" + "\n" + 56 "Notes: Changed on 07 Sep 2007 by Randy Kissick" + "\n" +
60 "" + "\n" + 57 "" + "\n" +
61 "[Enquiro Domain Previous Administrator Account]" + "\n" + 58 "[Enquiro Domain Previous Administrator Account]" + "\n" +
62 "Group: Windows" + "\n" + 59 "Group: Windows" + "\n" +
63 "User Name: ENQUIRO\ABC" + "\n" + 60 "User Name: ENQUIRO\ABC" + "\n" +
64 "URL: " + "\n" + 61 "URL: " + "\n" +
65 "Password: 123456" + "\n" + 62 "Password: 123456" + "\n" +
66 "Notes: ENSQL1" + "\n" + 63 "Notes: ENSQL1" + "\n" +
67 "" + "\n" + 64 "" + "\n" +
68 "[Local Administrator Account for most Machines]" + "\n" + 65 "[Local Administrator Account for most Machines]" + "\n" +
69 "Group: Windows" + "\n" + 66 "Group: Windows" + "\n" +
70 "User Name: ABC" + "\n" + 67 "User Name: ABC" + "\n" +
71 "URL: " + "\n" + 68 "URL: " + "\n" +
72 "Password: 123456" + "\n" + 69 "Password: 123456" + "\n" +
73 "Notes: " + "\n" + 70 "Notes: " + "\n" +
74 "" + "\n" + 71 "" + "\n" +
75 "[Local Administrator Account for some Machines]" + "\n" + 72 "[Local Administrator Account for some Machines]" + "\n" +
76 "Group: Windows" + "\n" + 73 "Group: Windows" + "\n" +
77 "User Name: ABC" + "\n" + 74 "User Name: ABC" + "\n" +
78 "URL: " + "\n" + 75 "URL: " + "\n" +
79 "Password: 123456" + "\n" + 76 "Password: 123456" + "\n" +
80 "Notes: " + "\n" + 77 "Notes: " + "\n" +
81 "" + "\n" + 78 "" + "\n" +
82 "[Bugzilla]" + "\n" + 79 "[Bugzilla]" + "\n" +
83 "Group: Hardware" + "\n" + 80 "Group: Hardware" + "\n" +
84 "User Name: ABC" + "\n" + 81 "User Name: ABC" + "\n" +
85 "URL: " + "\n" + 82 "URL: " + "\n" +
86 "Password: 123456" + "\n" + 83 "Password: 123456" + "\n" +
87 "Notes: BUGZILLA" + "\n" + 84 "Notes: BUGZILLA" + "\n" +
88 "" + "\n" + 85 "" + "\n" +
89 "[Client Services Linux Box]" + "\n" + 86 "[Client Services Linux Box]" + "\n" +
90 "Group: Hardware" + "\n" + 87 "Group: Hardware" + "\n" +
91 "User Name: ABC" + "\n" + 88 "User Name: ABC" + "\n" +
92 "URL: " + "\n" + 89 "URL: " + "\n" +
93 "Password: 123456" + "\n" + 90 "Password: 123456" + "\n" +
94 "Notes: 192.168.1.141" + "\n" + 91 "Notes: 192.168.1.141" + "\n" +
95 "" + "\n" + 92 "" + "\n" +
96 "[ENSQL2 BIOS]" + "\n" + 93 "[ENSQL2 BIOS]" + "\n" +
97 "Group: Hardware" + "\n" + 94 "Group: Hardware" + "\n" +
98 "User Name: " + "\n" + 95 "User Name: " + "\n" +
99 "URL: " + "\n" + 96 "URL: " + "\n" +
100 "Password: 123456" + "\n" + 97 "Password: 123456" + "\n" +
101 "Notes: " + "\n" + 98 "Notes: " + "\n" +
102 "" + "\n" + 99 "" + "\n" +
103 "[Eye Tracking PC]" + "\n" + 100 "[Eye Tracking PC]" + "\n" +
104 "Group: Hardware" + "\n" + 101 "Group: Hardware" + "\n" +
105 "User Name: ABC" + "\n" + 102 "User Name: ABC" + "\n" +
106 "URL: " + "\n" + 103 "URL: " + "\n" +
107 "Password: 123456" + "\n" + 104 "Password: 123456" + "\n" +
108 "Notes: " + "\n" + 105 "Notes: " + "\n" +
109 "" + "\n" + 106 "" + "\n" +
110 "[IT Linux Box (Brainiac)]" + "\n" + 107 "[IT Linux Box (Brainiac)]" + "\n" +
111 "Group: Hardware" + "\n" + 108 "Group: Hardware" + "\n" +
112 "User Name: ABC" + "\n" + 109 "User Name: ABC" + "\n" +
113 "URL: " + "\n" + 110 "URL: " + "\n" +
114 "Password: 123456" + "\n" + 111 "Password: 123456" + "\n" +
115 "Notes: " + "\n" + 112 "Notes: " + "\n" +
116 "" + "\n" + 113 "" + "\n" +
117 "[Maizal - Contract Developer Machine]" + "\n" + 114 "[Maizal - Contract Developer Machine]" + "\n" +
118 "Group: Hardware" + "\n" + 115 "Group: Hardware" + "\n" +
119 "User Name: ABC" + "\n" + 116 "User Name: ABC" + "\n" +
120 "URL: 199.185.139.69:3399" + "\n" + 117 "URL: 199.185.139.69:3399" + "\n" +
diff --git a/frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.html b/frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.html
index a8a1317..969b517 100644
--- a/frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.html
+++ b/frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.html
@@ -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
29<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.KeePassExportProcessor - test</title> 28 <title>Clipperz.KeePassExportProcessor - test</title>
32 29
33 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script> 31 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script>
35 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css"> 32 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css">
36 33
37 <script type='text/javascript' src='../../../js/JSON/json2.js'></script> 34 <script type='text/javascript' src='../../../js/JSON/json2.js'></script>
38 35
39 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script> 36 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script>
40 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script> 37 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script>
41 <script type='text/javascript' src='../../../js/Clipperz/ByteArray.js'></script> 38 <script type='text/javascript' src='../../../js/Clipperz/ByteArray.js'></script>
42 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script> 39 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script>
43 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script> 40 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script>
44 <script type='text/javascript' src='../../../js/Clipperz/KeePassExportProcessor.js'></script> 41 <script type='text/javascript' src='../../../js/Clipperz/KeePassExportProcessor.js'></script>
45 42
46 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script> 43 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script>
47 44
48 <!-- script type="text/javascript" src="./KeePassExportProcessor.data.js"></script> 45 <!-- script type="text/javascript" src="./KeePassExportProcessor.data.js"></script>
49 <script type="text/javascript" src="./KeePassExportProcessor.test.js"></script --> 46 <script type="text/javascript" src="./KeePassExportProcessor.test.js"></script -->
50 47
51</head> 48</head>
52<body> 49<body>
53 50
54<pre id="test"> 51<pre id="test">
55<script type="text/javascript" src="./KeePassExportProcessor.data.js"></script> 52<script type="text/javascript" src="./KeePassExportProcessor.data.js"></script>
56<script type="text/javascript" src="./KeePassExportProcessor.test.js"></script> 53<script type="text/javascript" src="./KeePassExportProcessor.test.js"></script>
57</pre> 54</pre>
58</body> 55</body>
59</html> 56</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.test.js b/frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.test.js
index 0ce4c91..4d1aa12 100644
--- a/frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/KeePassExportProcessor.test.js
@@ -1,120 +1,117 @@
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
29var tests = { 26var tests = {
30 27
31 //------------------------------------------------------------------------- 28 //-------------------------------------------------------------------------
32 29
33 'test1_test': function (someTestArgs) { 30 'test1_test': function (someTestArgs) {
34 var deferredResult; 31 var deferredResult;
35 varkeePassProcessor; 32 varkeePassProcessor;
36 33
37 keePassProcessor = new Clipperz.KeePassExportProcessor(); 34 keePassProcessor = new Clipperz.KeePassExportProcessor();
38 35
39 deferredResult = new Clipperz.Async.Deferred("test1_test", someTestArgs); 36 deferredResult = new Clipperz.Async.Deferred("test1_test", someTestArgs);
40 deferredResult.addCallback(function(aResult) { return "[Gmail]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.gmail.com\nPassword: NHy08ZCMYsqUeLQCawR7\n\n[del.icio.us]\nGroup: General\nUserName: joe69\nURL: http://del.icio.us\nPassword: tS1cIEeqp5y0wkU\n\n[Amazon]\nGroup: General\nUserName: jclipperz\nURL: http://www.amazon.com\nPassword: wvpkqNPIsqlI5g6XE9Tz\n\n[Paypal]\nGroup: General\nUserName: joeclipperz\nURL: http://www.paypal.com\nPassword: 24T4wIcvHnM28T3L\n\n[Technorati]\nGroup: General\nUserName: jclipperz\nURL: http://www.technorati.com\nPassword: UcVeNqF\n\n[American Airlines]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.aa.com\nPassword: AtrYbmi7lmSjR\n" }); 37 deferredResult.addCallback(function(aResult) { return "[Gmail]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.gmail.com\nPassword: NHy08ZCMYsqUeLQCawR7\n\n[del.icio.us]\nGroup: General\nUserName: joe69\nURL: http://del.icio.us\nPassword: tS1cIEeqp5y0wkU\n\n[Amazon]\nGroup: General\nUserName: jclipperz\nURL: http://www.amazon.com\nPassword: wvpkqNPIsqlI5g6XE9Tz\n\n[Paypal]\nGroup: General\nUserName: joeclipperz\nURL: http://www.paypal.com\nPassword: 24T4wIcvHnM28T3L\n\n[Technorati]\nGroup: General\nUserName: jclipperz\nURL: http://www.technorati.com\nPassword: UcVeNqF\n\n[American Airlines]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.aa.com\nPassword: AtrYbmi7lmSjR\n" });
41 deferredResult.addMethod(keePassProcessor, 'deferredParse'); 38 deferredResult.addMethod(keePassProcessor, 'deferredParse');
42 deferredResult.addCallback(function(aResult) { is(MochiKit.Base.serializeJSON(aResult), "[{\"Title\":\"Gmail\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.gmail.com\", \"Password\":\"NHy08ZCMYsqUeLQCawR7\"}, {\"Title\":\"del.icio.us\", \"Group\":\"General\", \"UserName\":\"joe69\", \"URL\":\"http://del.icio.us\", \"Password\":\"tS1cIEeqp5y0wkU\"}, {\"Title\":\"Amazon\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.amazon.com\", \"Password\":\"wvpkqNPIsqlI5g6XE9Tz\"}, {\"Title\":\"Paypal\", \"Group\":\"General\", \"UserName\":\"joeclipperz\", \"URL\":\"http://www.paypal.com\", \"Password\":\"24T4wIcvHnM28T3L\"}, {\"Title\":\"Technorati\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.technorati.com\", \"Password\":\"UcVeNqF\"}, {\"Title\":\"American Airlines\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.aa.com\", \"Password\":\"AtrYbmi7lmSjR\"}]", "first test"); }); 39 deferredResult.addCallback(function(aResult) { is(MochiKit.Base.serializeJSON(aResult), "[{\"Title\":\"Gmail\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.gmail.com\", \"Password\":\"NHy08ZCMYsqUeLQCawR7\"}, {\"Title\":\"del.icio.us\", \"Group\":\"General\", \"UserName\":\"joe69\", \"URL\":\"http://del.icio.us\", \"Password\":\"tS1cIEeqp5y0wkU\"}, {\"Title\":\"Amazon\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.amazon.com\", \"Password\":\"wvpkqNPIsqlI5g6XE9Tz\"}, {\"Title\":\"Paypal\", \"Group\":\"General\", \"UserName\":\"joeclipperz\", \"URL\":\"http://www.paypal.com\", \"Password\":\"24T4wIcvHnM28T3L\"}, {\"Title\":\"Technorati\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.technorati.com\", \"Password\":\"UcVeNqF\"}, {\"Title\":\"American Airlines\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.aa.com\", \"Password\":\"AtrYbmi7lmSjR\"}]", "first test"); });
43 deferredResult.addErrback(function(anError) { is("ERROR", anError) }); 40 deferredResult.addErrback(function(anError) { is("ERROR", anError) });
44 41
45 deferredResult.callback(); 42 deferredResult.callback();
46 43
47 return deferredResult; 44 return deferredResult;
48 }, 45 },
49 46
50 'test2_test': function (someTestArgs) { 47 'test2_test': function (someTestArgs) {
51 var deferredResult; 48 var deferredResult;
52 varkeePassProcessor; 49 varkeePassProcessor;
53 50
54 keePassProcessor = new Clipperz.KeePassExportProcessor(); 51 keePassProcessor = new Clipperz.KeePassExportProcessor();
55 52
56 deferredResult = new Clipperz.Async.Deferred("test2_test", someTestArgs); 53 deferredResult = new Clipperz.Async.Deferred("test2_test", someTestArgs);
57 deferredResult.addCallback(function(aResult) { return "[Gmail]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.gmail.com\nPassword: NHy08ZCMYsqUeLQCawR7\nNotes: Personal account\n\n[del.icio.us]\nGroup: General\nUserName: joe69\nURL: http://del.icio.us\nPassword: tS1cIEeqp5y0wkU\nNotes: social bookmarking site\n\n[Amazon]\nGroup: General\nUserName: jclipperz\nURL: http://www.amazon.com\nPassword: wvpkqNPIsqlI5g6XE9Tz\nNotes: The US online store\n\n[Paypal]\nGroup: General\nUserName: joeclipperz\nURL: http://www.paypal.com\nPassword: 24T4wIcvHnM28T3L\nNotes: Linked to my savings account\n\n[Technorati]\nGroup: General\nUserName: jclipperz\nURL: http://www.technorati.com\nPassword: UcVeNqF\nNotes: Blog ranking and searching\n\n[American Airlines]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.aa.com\nPassword: AtrYbmi7lmSjR\nNotes: Adavantages card n. 795495\n" }); 54 deferredResult.addCallback(function(aResult) { return "[Gmail]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.gmail.com\nPassword: NHy08ZCMYsqUeLQCawR7\nNotes: Personal account\n\n[del.icio.us]\nGroup: General\nUserName: joe69\nURL: http://del.icio.us\nPassword: tS1cIEeqp5y0wkU\nNotes: social bookmarking site\n\n[Amazon]\nGroup: General\nUserName: jclipperz\nURL: http://www.amazon.com\nPassword: wvpkqNPIsqlI5g6XE9Tz\nNotes: The US online store\n\n[Paypal]\nGroup: General\nUserName: joeclipperz\nURL: http://www.paypal.com\nPassword: 24T4wIcvHnM28T3L\nNotes: Linked to my savings account\n\n[Technorati]\nGroup: General\nUserName: jclipperz\nURL: http://www.technorati.com\nPassword: UcVeNqF\nNotes: Blog ranking and searching\n\n[American Airlines]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.aa.com\nPassword: AtrYbmi7lmSjR\nNotes: Adavantages card n. 795495\n" });
58 deferredResult.addMethod(keePassProcessor, 'deferredParse'); 55 deferredResult.addMethod(keePassProcessor, 'deferredParse');
59 deferredResult.addCallback(function(aResult) { is(MochiKit.Base.serializeJSON(aResult), "[{\"Title\":\"Gmail\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.gmail.com\", \"Password\":\"NHy08ZCMYsqUeLQCawR7\", \"Notes\":\"Personal account\"}, {\"Title\":\"del.icio.us\", \"Group\":\"General\", \"UserName\":\"joe69\", \"URL\":\"http://del.icio.us\", \"Password\":\"tS1cIEeqp5y0wkU\", \"Notes\":\"social bookmarking site\"}, {\"Title\":\"Amazon\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.amazon.com\", \"Password\":\"wvpkqNPIsqlI5g6XE9Tz\", \"Notes\":\"The US online store\"}, {\"Title\":\"Paypal\", \"Group\":\"General\", \"UserName\":\"joeclipperz\", \"URL\":\"http://www.paypal.com\", \"Password\":\"24T4wIcvHnM28T3L\", \"Notes\":\"Linked to my savings account\"}, {\"Title\":\"Technorati\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.technorati.com\", \"Password\":\"UcVeNqF\", \"Notes\":\"Blog ranking and searching\"}, {\"Title\":\"American Airlines\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.aa.com\", \"Password\":\"AtrYbmi7lmSjR\", \"Notes\":\"Adavantages card n. 795495\"}]", "second test"); }); 56 deferredResult.addCallback(function(aResult) { is(MochiKit.Base.serializeJSON(aResult), "[{\"Title\":\"Gmail\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.gmail.com\", \"Password\":\"NHy08ZCMYsqUeLQCawR7\", \"Notes\":\"Personal account\"}, {\"Title\":\"del.icio.us\", \"Group\":\"General\", \"UserName\":\"joe69\", \"URL\":\"http://del.icio.us\", \"Password\":\"tS1cIEeqp5y0wkU\", \"Notes\":\"social bookmarking site\"}, {\"Title\":\"Amazon\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.amazon.com\", \"Password\":\"wvpkqNPIsqlI5g6XE9Tz\", \"Notes\":\"The US online store\"}, {\"Title\":\"Paypal\", \"Group\":\"General\", \"UserName\":\"joeclipperz\", \"URL\":\"http://www.paypal.com\", \"Password\":\"24T4wIcvHnM28T3L\", \"Notes\":\"Linked to my savings account\"}, {\"Title\":\"Technorati\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.technorati.com\", \"Password\":\"UcVeNqF\", \"Notes\":\"Blog ranking and searching\"}, {\"Title\":\"American Airlines\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.aa.com\", \"Password\":\"AtrYbmi7lmSjR\", \"Notes\":\"Adavantages card n. 795495\"}]", "second test"); });
60 deferredResult.addErrback(function(anError) { is("ERROR", anError) }); 57 deferredResult.addErrback(function(anError) { is("ERROR", anError) });
61 58
62 deferredResult.callback(); 59 deferredResult.callback();
63 60
64 return deferredResult; 61 return deferredResult;
65 }, 62 },
66 63
67 'test3_test': function (someTestArgs) { 64 'test3_test': function (someTestArgs) {
68 var deferredResult; 65 var deferredResult;
69 varkeePassProcessor; 66 varkeePassProcessor;
70 67
71 keePassProcessor = new Clipperz.KeePassExportProcessor(); 68 keePassProcessor = new Clipperz.KeePassExportProcessor();
72 69
73 deferredResult = new Clipperz.Async.Deferred("test3_test", someTestArgs); 70 deferredResult = new Clipperz.Async.Deferred("test3_test", someTestArgs);
74 deferredResult.addCallback(function(aResult) { return "[Gmail]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.gmail.com\nPassword: NHy08ZCMYsqUeLQCawR7\nNotes: Personal account\nwith some notes stored\non multiple lines\n\n[del.icio.us]\nGroup: General\nUserName: joe69\nURL: http://del.icio.us\nPassword: tS1cIEeqp5y0wkU\nNotes: social bookmarking site\n\n[Amazon]\nGroup: General\nUserName: jclipperz\nURL: http://www.amazon.com\nPassword: wvpkqNPIsqlI5g6XE9Tz\nNotes: The US online store\n\n[Paypal]\nGroup: General\nUserName: joeclipperz\nURL: http://www.paypal.com\nPassword: 24T4wIcvHnM28T3L\nNotes: Linked to my savings account\n\n[Technorati]\nGroup: General\nUserName: jclipperz\nURL: http://www.technorati.com\nPassword: UcVeNqF\nNotes: Blog ranking and searching\n\n[American Airlines]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.aa.com\nPassword: AtrYbmi7lmSjR\nNotes: Adavantages card n. 795495\n" }); 71 deferredResult.addCallback(function(aResult) { return "[Gmail]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.gmail.com\nPassword: NHy08ZCMYsqUeLQCawR7\nNotes: Personal account\nwith some notes stored\non multiple lines\n\n[del.icio.us]\nGroup: General\nUserName: joe69\nURL: http://del.icio.us\nPassword: tS1cIEeqp5y0wkU\nNotes: social bookmarking site\n\n[Amazon]\nGroup: General\nUserName: jclipperz\nURL: http://www.amazon.com\nPassword: wvpkqNPIsqlI5g6XE9Tz\nNotes: The US online store\n\n[Paypal]\nGroup: General\nUserName: joeclipperz\nURL: http://www.paypal.com\nPassword: 24T4wIcvHnM28T3L\nNotes: Linked to my savings account\n\n[Technorati]\nGroup: General\nUserName: jclipperz\nURL: http://www.technorati.com\nPassword: UcVeNqF\nNotes: Blog ranking and searching\n\n[American Airlines]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.aa.com\nPassword: AtrYbmi7lmSjR\nNotes: Adavantages card n. 795495\n" });
75 deferredResult.addMethod(keePassProcessor, 'deferredParse'); 72 deferredResult.addMethod(keePassProcessor, 'deferredParse');
76 deferredResult.addCallback(function(aResult) { is(MochiKit.Base.serializeJSON(aResult), "[{\"Title\":\"Gmail\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.gmail.com\", \"Password\":\"NHy08ZCMYsqUeLQCawR7\", \"Notes\":\"Personal account\\nwith some notes stored\\non multiple lines\\n\"}, {\"Title\":\"del.icio.us\", \"Group\":\"General\", \"UserName\":\"joe69\", \"URL\":\"http://del.icio.us\", \"Password\":\"tS1cIEeqp5y0wkU\", \"Notes\":\"social bookmarking site\"}, {\"Title\":\"Amazon\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.amazon.com\", \"Password\":\"wvpkqNPIsqlI5g6XE9Tz\", \"Notes\":\"The US online store\"}, {\"Title\":\"Paypal\", \"Group\":\"General\", \"UserName\":\"joeclipperz\", \"URL\":\"http://www.paypal.com\", \"Password\":\"24T4wIcvHnM28T3L\", \"Notes\":\"Linked to my savings account\"}, {\"Title\":\"Technorati\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.technorati.com\", \"Password\":\"UcVeNqF\", \"Notes\":\"Blog ranking and searching\"}, {\"Title\":\"American Airlines\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.aa.com\", \"Password\":\"AtrYbmi7lmSjR\", \"Notes\":\"Adavantages card n. 795495\"}]", "third test"); }); 73 deferredResult.addCallback(function(aResult) { is(MochiKit.Base.serializeJSON(aResult), "[{\"Title\":\"Gmail\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.gmail.com\", \"Password\":\"NHy08ZCMYsqUeLQCawR7\", \"Notes\":\"Personal account\\nwith some notes stored\\non multiple lines\\n\"}, {\"Title\":\"del.icio.us\", \"Group\":\"General\", \"UserName\":\"joe69\", \"URL\":\"http://del.icio.us\", \"Password\":\"tS1cIEeqp5y0wkU\", \"Notes\":\"social bookmarking site\"}, {\"Title\":\"Amazon\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.amazon.com\", \"Password\":\"wvpkqNPIsqlI5g6XE9Tz\", \"Notes\":\"The US online store\"}, {\"Title\":\"Paypal\", \"Group\":\"General\", \"UserName\":\"joeclipperz\", \"URL\":\"http://www.paypal.com\", \"Password\":\"24T4wIcvHnM28T3L\", \"Notes\":\"Linked to my savings account\"}, {\"Title\":\"Technorati\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.technorati.com\", \"Password\":\"UcVeNqF\", \"Notes\":\"Blog ranking and searching\"}, {\"Title\":\"American Airlines\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.aa.com\", \"Password\":\"AtrYbmi7lmSjR\", \"Notes\":\"Adavantages card n. 795495\"}]", "third test"); });
77 deferredResult.addErrback(function(anError) { is("ERROR", anError) }); 74 deferredResult.addErrback(function(anError) { is("ERROR", anError) });
78 75
79 deferredResult.callback(); 76 deferredResult.callback();
80 77
81 return deferredResult; 78 return deferredResult;
82 }, 79 },
83 80
84 //------------------------------------------------------------------------- 81 //-------------------------------------------------------------------------
85 82
86 'Barb_Newman_test': function (someTestArgs) { 83 'Barb_Newman_test': function (someTestArgs) {
87 var deferredResult; 84 var deferredResult;
88 varkeePassProcessor; 85 varkeePassProcessor;
89 86
90 keePassProcessor = new Clipperz.KeePassExportProcessor(); 87 keePassProcessor = new Clipperz.KeePassExportProcessor();
91 88
92 deferredResult = new Clipperz.Async.Deferred("Barb_Newman_test", someTestArgs); 89 deferredResult = new Clipperz.Async.Deferred("Barb_Newman_test", someTestArgs);
93 // deferredResult.addCallback(function () { return testData['Barb_Newman_data']; }); 90 // deferredResult.addCallback(function () { return testData['Barb_Newman_data']; });
94 deferredResult.addMethod(keePassProcessor, 'deferredParse'); 91 deferredResult.addMethod(keePassProcessor, 'deferredParse');
95 deferredResult.addBoth(function(aResult) { 92 deferredResult.addBoth(function(aResult) {
96 SimpleTest.is(aResult.length, 121, "Barb's data contains 121 records"); 93 SimpleTest.is(aResult.length, 121, "Barb's data contains 121 records");
97 return aResult; 94 return aResult;
98 }); 95 });
99 deferredResult.addBoth(function(aResult) { 96 deferredResult.addBoth(function(aResult) {
100 SimpleTest.is(MochiKit.Base.serializeJSON(aResult[0]), "{\"Title\":\"Domain Administration Account\", \"Group\":\"Windows\", \"User Name\":\"_ABC\", \"URL\":\"\", \"Password\":\"123456\", \"Notes\":\"\"}", "Barb's first record data matches"); 97 SimpleTest.is(MochiKit.Base.serializeJSON(aResult[0]), "{\"Title\":\"Domain Administration Account\", \"Group\":\"Windows\", \"User Name\":\"_ABC\", \"URL\":\"\", \"Password\":\"123456\", \"Notes\":\"\"}", "Barb's first record data matches");
101 return aResult; 98 return aResult;
102 }); 99 });
103 // deferredResult.callback(); 100 // deferredResult.callback();
104 deferredResult.callback(testData['Barb_Newman_data']); 101 deferredResult.callback(testData['Barb_Newman_data']);
105 102
106 return deferredResult; 103 return deferredResult;
107 }, 104 },
108 105
109 //------------------------------------------------------------------------- 106 //-------------------------------------------------------------------------
110/* 107/*
111 'Jordan_Curzon_test': function (someTestArgs) { 108 'Jordan_Curzon_test': function (someTestArgs) {
112 var deferredResult; 109 var deferredResult;
113 varkeePassProcessor; 110 varkeePassProcessor;
114 111
115 keePassProcessor = new Clipperz.KeePassExportProcessor(); 112 keePassProcessor = new Clipperz.KeePassExportProcessor();
116 113
117 deferredResult = new Clipperz.Async.Deferred("Jordan_Curzon_test", someTestArgs); 114 deferredResult = new Clipperz.Async.Deferred("Jordan_Curzon_test", someTestArgs);
118 deferredResult.addCallback(function () { return testData['Jordan_Curzon_data']; }); 115 deferredResult.addCallback(function () { return testData['Jordan_Curzon_data']; });
119 deferredResult.addMethod(keePassProcessor, 'deferredParse'); 116 deferredResult.addMethod(keePassProcessor, 'deferredParse');
120 deferredResult.addBoth(function(aResult) { 117 deferredResult.addBoth(function(aResult) {
diff --git a/frontend/gamma/tests/tests/Clipperz/KeyValueObjectStore.html b/frontend/gamma/tests/tests/Clipperz/KeyValueObjectStore.html
index f856f98..ece8a9c 100644
--- a/frontend/gamma/tests/tests/Clipperz/KeyValueObjectStore.html
+++ b/frontend/gamma/tests/tests/Clipperz/KeyValueObjectStore.html
@@ -1,52 +1,49 @@
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<html> 26<html>
30<head> 27<head>
31 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
32 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script> 29 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script>
33 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css"> 30 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css">
34 31
35 <script type='text/javascript' src='../../../js/JSON/json2.js'></script> 32 <script type='text/javascript' src='../../../js/JSON/json2.js'></script>
36 33
37 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script> 34 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script>
38 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script> 35 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script>
39 <script type='text/javascript' src='../../../js/Clipperz/ByteArray.js'></script> 36 <script type='text/javascript' src='../../../js/Clipperz/ByteArray.js'></script>
40 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script> 37 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script>
41 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script> 38 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script>
42 39
43 <script type='text/javascript' src='../../../js/Clipperz/KeyValueObjectStore.js'></script> 40 <script type='text/javascript' src='../../../js/Clipperz/KeyValueObjectStore.js'></script>
44 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script> 41 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script>
45</head> 42</head>
46<body> 43<body>
47 44
48<pre id="test"> 45<pre id="test">
49<script type="text/javascript" src="KeyValueObjectStore.test.js"></script> 46<script type="text/javascript" src="KeyValueObjectStore.test.js"></script>
50</pre> 47</pre>
51</body> 48</body>
52</html> 49</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/KeyValueObjectStore.test.js b/frontend/gamma/tests/tests/Clipperz/KeyValueObjectStore.test.js
index 53cf5d3..ac56386 100644
--- a/frontend/gamma/tests/tests/Clipperz/KeyValueObjectStore.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/KeyValueObjectStore.test.js
@@ -1,120 +1,117 @@
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
29var tests = { 26var tests = {
30 27
31 //------------------------------------------------------------------------- 28 //-------------------------------------------------------------------------
32 29
33 'simple_tests': function() { 30 'simple_tests': function() {
34 vardeferredResult; 31 vardeferredResult;
35 32
36 deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false}); 33 deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false});
37 deferredResult.addCallback(function() { 34 deferredResult.addCallback(function() {
38 varobjectStore; 35 varobjectStore;
39 36
40 objectStore = new Clipperz.KeyValueObjectStore(); 37 objectStore = new Clipperz.KeyValueObjectStore();
41 38
42 ok(objectStore != null, "created an object store"); 39 ok(objectStore != null, "created an object store");
43 40
44 objectStore.setValue('key', "value"); 41 objectStore.setValue('key', "value");
45 is(objectStore.getValue('key'), "value", "can store and read a value to a simple key"); 42 is(objectStore.getValue('key'), "value", "can store and read a value to a simple key");
46 43
47 objectStore.setValue('key', "overwritten value"); 44 objectStore.setValue('key', "overwritten value");
48 is(objectStore.getValue('key'), "overwritten value", "using the same key overwrites the previous value"); 45 is(objectStore.getValue('key'), "overwritten value", "using the same key overwrites the previous value");
49 46
50 objectStore.setValue('record.keys', [1, 2, 3]); 47 objectStore.setValue('record.keys', [1, 2, 3]);
51 is( 48 is(
52 MochiKit.Base.compare(objectStore.getValue('record'), {'keys': [1,2,3]}), 49 MochiKit.Base.compare(objectStore.getValue('record'), {'keys': [1,2,3]}),
53 0, 50 0,
54 "getting a partial key returns the whole content associate with that key" 51 "getting a partial key returns the whole content associate with that key"
55 ); 52 );
56 is( 53 is(
57 MochiKit.Base.compare(objectStore.getValue('record.keys'), [1,2,3]), 54 MochiKit.Base.compare(objectStore.getValue('record.keys'), [1,2,3]),
58 0, 55 0,
59 "accessing data using a key.path return the matching content" 56 "accessing data using a key.path return the matching content"
60 ); 57 );
61 is( 58 is(
62 MochiKit.Base.compare(objectStore.getValue('record.keys.1'), 2), 59 MochiKit.Base.compare(objectStore.getValue('record.keys.1'), 2),
63 0, 60 0,
64 "accessing data using a key.path return the matching content, even inside an array" 61 "accessing data using a key.path return the matching content, even inside an array"
65 ); 62 );
66 63
67 is( 64 is(
68 objectStore.setValue('key', "value"), 65 objectStore.setValue('key', "value"),
69 "value", 66 "value",
70 "setting a value return the value itself, as a convenience to chain deferred methods" 67 "setting a value return the value itself, as a convenience to chain deferred methods"
71 ); 68 );
72 69
73 is( 70 is(
74 objectStore.getValue('not_set_key'), 71 objectStore.getValue('not_set_key'),
75 null, 72 null,
76 "accessing a previously undefined key will return null" 73 "accessing a previously undefined key will return null"
77 ); 74 );
78 is( 75 is(
79 objectStore.getValue('record.not_set_key'), 76 objectStore.getValue('record.not_set_key'),
80 null, 77 null,
81 "accessing a previously undefined key will return null, even if part of the path is defined" 78 "accessing a previously undefined key will return null, even if part of the path is defined"
82 ); 79 );
83 is( 80 is(
84 objectStore.getValue('not_set_path.not_set_key'), 81 objectStore.getValue('not_set_path.not_set_key'),
85 null, 82 null,
86 "accessing a previously undefined key will return null, even if using a completely undefined path" 83 "accessing a previously undefined key will return null, even if using a completely undefined path"
87 ); 84 );
88 85
89 objectStore.removeAllData(); 86 objectStore.removeAllData();
90 is( 87 is(
91 objectStore.getValue('key'), 88 objectStore.getValue('key'),
92 null, 89 null,
93 "getting a value after a 'removeAllData' return no value" 90 "getting a value after a 'removeAllData' return no value"
94 ); 91 );
95 92
96 }); 93 });
97 94
98 deferredResult.callback(); 95 deferredResult.callback();
99 96
100 return deferredResult; 97 return deferredResult;
101 }, 98 },
102 99
103 //------------------------------------------------------------------------- 100 //-------------------------------------------------------------------------
104 101
105 'simple_deferredGetOrSet_test': function () { 102 'simple_deferredGetOrSet_test': function () {
106 vardeferredResult; 103 vardeferredResult;
107 varobjectStore; 104 varobjectStore;
108 var testValue; 105 var testValue;
109 106
110 objectStore = new Clipperz.KeyValueObjectStore(); 107 objectStore = new Clipperz.KeyValueObjectStore();
111 testValue = "nifty test value"; 108 testValue = "nifty test value";
112 109
113 deferredResult = new Clipperz.Async.Deferred("simple_deferredGetOrSet_test", {trace:false}); 110 deferredResult = new Clipperz.Async.Deferred("simple_deferredGetOrSet_test", {trace:false});
114 deferredResult.addMethod(objectStore, 'setValue', 'key', testValue); 111 deferredResult.addMethod(objectStore, 'setValue', 'key', testValue);
115 deferredResult.addMethod(objectStore, 'deferredGetOrSet', 'key', function() {return testValue}); 112 deferredResult.addMethod(objectStore, 'deferredGetOrSet', 'key', function() {return testValue});
116 deferredResult.addCallback(function(aResult) { 113 deferredResult.addCallback(function(aResult) {
117 SimpleTest.is(aResult, testValue, "deferredGetOrSet works when accessing data already present on the object store"); 114 SimpleTest.is(aResult, testValue, "deferredGetOrSet works when accessing data already present on the object store");
118 }) 115 })
119 deferredResult.callback(); 116 deferredResult.callback();
120 }, 117 },
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/BookmarkletProcessor.html b/frontend/gamma/tests/tests/Clipperz/PM/BookmarkletProcessor.html
index 9bd344e..b61057c 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/BookmarkletProcessor.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/BookmarkletProcessor.html
@@ -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
29<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.PM.BookmarkletProcessor - test</title> 28 <title>Clipperz.PM.BookmarkletProcessor - test</title>
32 29
33 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 31 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
35 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 32 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
36 33
37 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 34 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
38 35
39 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
45 42
46 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/PM/BookmarkletProcessor.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/PM/BookmarkletProcessor.js'></script>
49 46
50 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script> 47 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script>
51 48
52</head> 49</head>
53<body> 50<body>
54 51
55<pre id="test"> 52<pre id="test">
56<script type="text/javascript" src="BookmarkletProcessor.test.js"></script> 53<script type="text/javascript" src="BookmarkletProcessor.test.js"></script>
57</pre> 54</pre>
58</body> 55</body>
59</html> 56</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/BookmarkletProcessor.test.js b/frontend/gamma/tests/tests/Clipperz/PM/BookmarkletProcessor.test.js
index 21776a3..45bf76b 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/BookmarkletProcessor.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/BookmarkletProcessor.test.js
@@ -1,120 +1,117 @@
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
29function testBookmarkletConfigurationString (aConfiguration, shouldFail, aMessage) { 26function testBookmarkletConfigurationString (aConfiguration, shouldFail, aMessage) {
30 //var configuration; 27 //var configuration;
31 28
32//try { 29//try {
33 //configuration = Clipperz.Base.evalJSON(aConfiguration); 30 //configuration = Clipperz.Base.evalJSON(aConfiguration);
34//} catch (exception) { 31//} catch (exception) {
35 //console.log("EXCEPTION", exception); 32 //console.log("EXCEPTION", exception);
36 //throw exception; 33 //throw exception;
37//} 34//}
38 35
39//console.log("configuration", configuration); 36//console.log("configuration", configuration);
40 37
41 if (shouldFail == true) { 38 if (shouldFail == true) {
42 try { 39 try {
43 Clipperz.PM.BookmarkletProcessor.checkBookmarkletConfiguration(aConfiguration); 40 Clipperz.PM.BookmarkletProcessor.checkBookmarkletConfiguration(aConfiguration);
44 SimpleTest.ok(false, "vulnerability not caught - " + aMessage); 41 SimpleTest.ok(false, "vulnerability not caught - " + aMessage);
45 } catch(exception) { 42 } catch(exception) {
46 SimpleTest.ok(true, "vulnerability correctly caught - " + aMessage); 43 SimpleTest.ok(true, "vulnerability correctly caught - " + aMessage);
47 } 44 }
48 } else { 45 } else {
49 try { 46 try {
50 Clipperz.PM.BookmarkletProcessor.checkBookmarkletConfiguration(aConfiguration); 47 Clipperz.PM.BookmarkletProcessor.checkBookmarkletConfiguration(aConfiguration);
51 SimpleTest.ok(true, "configuration correctly checked - " + aMessage); 48 SimpleTest.ok(true, "configuration correctly checked - " + aMessage);
52 } catch(exception) { 49 } catch(exception) {
53 SimpleTest.ok(false, "configuration wrongly caught as malicious - " + aMessage); 50 SimpleTest.ok(false, "configuration wrongly caught as malicious - " + aMessage);
54 // console.log(exception); 51 // console.log(exception);
55 } 52 }
56 } 53 }
57} 54}
58 55
59//############################################################################# 56//#############################################################################
60 57
61var tests = { 58var tests = {
62 59
63 //------------------------------------------------------------------------- 60 //-------------------------------------------------------------------------
64 61
65 'simpleAmazonConfiguration_test': function () { 62 'simpleAmazonConfiguration_test': function () {
66 var bookmarkletConfigurationString; 63 var bookmarkletConfigurationString;
67 64
68 bookmarkletConfigurationString = "{"+ 65 bookmarkletConfigurationString = "{"+
69 "\"page\": {\"title\": \"Sign In\"},\n" + 66 "\"page\": {\"title\": \"Sign In\"},\n" +
70 "\"form\": {" + 67 "\"form\": {" +
71 "\"attributes\": {" + 68 "\"attributes\": {" +
72 "\"action\": \"https://www.amazon.com/gp/flex/sign-in/select.html\",\n" + 69 "\"action\": \"https://www.amazon.com/gp/flex/sign-in/select.html\",\n" +
73 "\"method\": \"post\"" + 70 "\"method\": \"post\"" +
74 "},\n" + 71 "},\n" +
75 "\"inputs\": [" + 72 "\"inputs\": [" +
76 "{\"type\": \"hidden\",\n\"name\": \"path\",\n\"value\": \"/gp/yourstore\"},\n" + 73 "{\"type\": \"hidden\",\n\"name\": \"path\",\n\"value\": \"/gp/yourstore\"},\n" +
77 "{\"type\": \"hidden\",\n\"name\": \"useRedirectOnSuccess\",\n\"value\": \"1\"},\n" + 74 "{\"type\": \"hidden\",\n\"name\": \"useRedirectOnSuccess\",\n\"value\": \"1\"},\n" +
78 "{\"type\": \"hidden\",\n\"name\": \"query\",\n\"value\": \"signIn=1&action=sign-out&useRedirectOnSuccess=1&path=/gp/yourstore&ref_=pd_irl_gw_r\"},\n" + 75 "{\"type\": \"hidden\",\n\"name\": \"query\",\n\"value\": \"signIn=1&action=sign-out&useRedirectOnSuccess=1&path=/gp/yourstore&ref_=pd_irl_gw_r\"},\n" +
79 "{\"type\": \"hidden\",\n\"name\": \"mode\",\n\"value\": \"\"},\n" + 76 "{\"type\": \"hidden\",\n\"name\": \"mode\",\n\"value\": \"\"},\n" +
80 "{\"type\": \"hidden\",\n\"name\": \"redirectProtocol\",\n\"value\": \"\"},\n" + 77 "{\"type\": \"hidden\",\n\"name\": \"redirectProtocol\",\n\"value\": \"\"},\n" +
81 "{\"type\": \"hidden\",\n\"name\": \"pageAction\",\n\"value\": \"/gp/yourstore\"},\n" + 78 "{\"type\": \"hidden\",\n\"name\": \"pageAction\",\n\"value\": \"/gp/yourstore\"},\n" +
82 "{\"type\": \"hidden\",\n\"name\": \"disableCorpSignUp\",\n\"value\": \"\"},\n" + 79 "{\"type\": \"hidden\",\n\"name\": \"disableCorpSignUp\",\n\"value\": \"\"},\n" +
83 "{\"type\": \"hidden\",\n\"name\": \"protocol\",\n\"value\": \"https\"},\n" + 80 "{\"type\": \"hidden\",\n\"name\": \"protocol\",\n\"value\": \"https\"},\n" +
84 "{\"type\": \"hidden\",\n\"name\": \"sessionId\",\n\"value\": \"105-1479357-7902864\"},\n" + 81 "{\"type\": \"hidden\",\n\"name\": \"sessionId\",\n\"value\": \"105-1479357-7902864\"},\n" +
85 "{\"type\": \"hidden\",\n\"name\": \"referer\",\n\"value\": \"flex\"},\n" + 82 "{\"type\": \"hidden\",\n\"name\": \"referer\",\n\"value\": \"flex\"},\n" +
86 "{\"type\": \"text\",\n\"name\": \"email\",\n\"value\": \"\"},\n" + 83 "{\"type\": \"text\",\n\"name\": \"email\",\n\"value\": \"\"},\n" +
87 "{\"type\": \"password\",\n\"name\": \"password\",\n\"value\": \"\"},\n" + 84 "{\"type\": \"password\",\n\"name\": \"password\",\n\"value\": \"\"},\n" +
88 "{\"type\": \"hidden\",\n\"name\": \"metadata1\",\n\"value\": \"Firefox 3.0.3 Mac\"},\n" + 85 "{\"type\": \"hidden\",\n\"name\": \"metadata1\",\n\"value\": \"Firefox 3.0.3 Mac\"},\n" +
89 "{\"type\": \"hidden\",\n\"name\": \"metadataf1\",\n\"value\": \"\"},\n" + 86 "{\"type\": \"hidden\",\n\"name\": \"metadataf1\",\n\"value\": \"\"},\n" +
90 "{\"type\": \"hidden\",\n\"name\": \"metadata2\",\n\"value\": \"Default Plug-in Java Embedding Plugin 0.9.6.4 Shockwave Flash 90124RealPlayer Plugin QuickTime Plug-in 7.5.5 Flip4Mac Windows Media Plugin 2.2 4||1440-900-878-24-*-*-*\"},\n" + 87 "{\"type\": \"hidden\",\n\"name\": \"metadata2\",\n\"value\": \"Default Plug-in Java Embedding Plugin 0.9.6.4 Shockwave Flash 90124RealPlayer Plugin QuickTime Plug-in 7.5.5 Flip4Mac Windows Media Plugin 2.2 4||1440-900-878-24-*-*-*\"},\n" +
91 "{\"type\": \"hidden\",\n\"name\": \"metadata3\",\n\"value\": \"timezone: -1 execution time: 3\"},\n" + 88 "{\"type\": \"hidden\",\n\"name\": \"metadata3\",\n\"value\": \"timezone: -1 execution time: 3\"},\n" +
92 "{\"name\": \"action\",\n\"type\": \"radio\",\n\"options\": [" + 89 "{\"name\": \"action\",\n\"type\": \"radio\",\n\"options\": [" +
93 "{\"value\": \"new-user\",\n\"checked\": false},\n" + 90 "{\"value\": \"new-user\",\n\"checked\": false},\n" +
94 "{\"value\": \"sign-in\",\n\"checked\": true}" + 91 "{\"value\": \"sign-in\",\n\"checked\": true}" +
95 "]}" + 92 "]}" +
96 "]" + 93 "]" +
97 "},\n" + 94 "},\n" +
98 "\"version\": \"0.2.3\"" + 95 "\"version\": \"0.2.3\"" +
99 "}"; 96 "}";
100 testBookmarkletConfigurationString(bookmarkletConfigurationString, false, "regular Amazon.com configuration"); 97 testBookmarkletConfigurationString(bookmarkletConfigurationString, false, "regular Amazon.com configuration");
101 }, 98 },
102 99
103 //------------------------------------------------------------------------- 100 //-------------------------------------------------------------------------
104 101
105 'hackedConfigurationWithXSSAttackVectorReadyToBeTriggeredWhenActivatingTheDirectLogin_test': function () { 102 'hackedConfigurationWithXSSAttackVectorReadyToBeTriggeredWhenActivatingTheDirectLogin_test': function () {
106 var bookmarkletConfigurationString; 103 var bookmarkletConfigurationString;
107 104
108 bookmarkletConfigurationString = "{" + 105 bookmarkletConfigurationString = "{" +
109 "\"page\": {\"title\": \"Example Attack\"}," + 106 "\"page\": {\"title\": \"Example Attack\"}," +
110 "\"form\": { " + 107 "\"form\": { " +
111 "\"attributes\": { " + 108 "\"attributes\": { " +
112 "\"action\": \"javascript:opener.document.body.innerHTML = 'hacked!';close();\", " + 109 "\"action\": \"javascript:opener.document.body.innerHTML = 'hacked!';close();\", " +
113 "\"style\": \"-moz-binding:url('http://ha.ckers.org/xssmoz.xml#xss')\", " + 110 "\"style\": \"-moz-binding:url('http://ha.ckers.org/xssmoz.xml#xss')\", " +
114 "\"method\": null " + 111 "\"method\": null " +
115 "}, " + 112 "}, " +
116 "\"inputs\": [" + 113 "\"inputs\": [" +
117 "{\"type\": \"text\", \"name\": \"username\", \"value\": \"\"}, " + 114 "{\"type\": \"text\", \"name\": \"username\", \"value\": \"\"}, " +
118 "{\"type\": \"password\", \"name\": \"password\", \"value\": \"\"}" + 115 "{\"type\": \"password\", \"name\": \"password\", \"value\": \"\"}" +
119 "]" + 116 "]" +
120 "}," + 117 "}," +
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Connection.data.js b/frontend/gamma/tests/tests/Clipperz/PM/Connection.data.js
index 9dec232..3e01411 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/Connection.data.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Connection.data.js
@@ -1,120 +1,117 @@
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
29testData = { 26testData = {
30 27
31 //------------------------------------------------------------------------- 28 //-------------------------------------------------------------------------
32 29
33 'joe_clipperz_offline_copy_data': { 30 'joe_clipperz_offline_copy_data': {
34 users:{ 31 users:{
35 'catchAllUser': { 32 'catchAllUser': {
36 __masterkey_test_value__: 'masterkey', 33 __masterkey_test_value__: 'masterkey',
37 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00', 34 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00',
38 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00' 35 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00'
39 }, 36 },
40 'f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674': { 37 'f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674': {
41 s: '186f0c40bf73f2af236eaa6c429df225efa933050c9aae65240e93b7b362e3ee', 38 s: '186f0c40bf73f2af236eaa6c429df225efa933050c9aae65240e93b7b362e3ee',
42 v: 'ac61a6e325ecf329926a86084f591d8852d0ad3e4a6080f2adc901b82395ecaf', 39 v: 'ac61a6e325ecf329926a86084f591d8852d0ad3e4a6080f2adc901b82395ecaf',
43 version: '0.2', 40 version: '0.2',
44 maxNumberOfRecords: '100', 41 maxNumberOfRecords: '100',
45 userDetails: '{"records":{"index":{"eeda70e0392261967bda71c3764da78989c45bbd2bb7be6b941b90f81d9b81b5":"0","13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551":"1","062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80":"2","ca01bcb7691f70818feed46c9a2a91883ac543997a395535aedbb49de166690c":"3","507f38b06d587d8889698ae1ebbba7ef8f0539b82550dd25779fd9ee88fc0c7a":"4","d5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d":"5","de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4":"6","d620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045":"7","f215d89bf4583c12f5ed4f4330f488dad3fffa448f4dc784f15ef135dda2c732":"8","36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113":"9","fe21497ef7435d31f9746c132e4b5ecf5aac5f13b5961ddb55d2bdc3409f28f6":"10","6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18":"11","9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291":"12","6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a":"13","6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728":"14","8b18e8593b5bc2f7ea39a5fab222047034ef2f380fee05be0fa6e1c0972fea39":"15","084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d":"16","7bb69b6366a8012f181c01e368ba18d4f7a82bcabb4959189736ad124c4bbfbb":"17","5cdac63b317f3942da38f3a3de3b7f0e5d6678200951c6216230295550f63fb4":"18","c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065":"19"},"data":"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"},"directLogins":{"index":{"61e87fdc4f1d9112e3b30c1f6812d095dcdb24f014c83319091eb6c9899ec348":"0","989593d4c48929f0c8f1581aa96969c622807e99619ed4732026e967530a68ad":"1","9f7979368fa29f66c44bd97ecaf6c545abc800b1c7bb21b7655a68e1514c3906":"2","dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496":"3","aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584":"4","1f9bfd677b531a03168d3f8bd8afabb5357244a7bc355dff50bd6c0a072114a6":"5","a48e38845713462ecc9f827149eeaae87da882031f98ef8ebbf9ee9537b63468":"6","6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f":"7","2df54059e78f5771f23bd285cce19595b38331b73d67020424d9a1b2257db09c":"8","065cd0c270e5e8ce50e4ea8e3828dccdae18c01ab030813d756a87d03fe68784":"9","ddbc8d01300a4f10631cbde09e1246332eade3a877a2205209f9eb9e5bc9da0b":"10","9b7a30e667afc9f76ba77600658b2c13bff52432d444261d39bf3d069a160afe":"11","9fd2929cde3d32d9cbc5f1d787f2f64729a5e12a14410556b31c0c099762c46a":"12","f695fc36ac56bead80c0d20a88e01e382819c18dc268f1679551b7c83db7cb14":"13","f22dc41ffabef4b3bc8f7af804fec975bd50718098322a673cbe4aaff9464ae1":"14","03251dc1cbc5398789e4c4b45c52cfac3fcd8c1a4f19a81fa68fc6feae31d55c":"15","a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e":"16","cb9ae0bba1957075ccdbfd3b3481704d62087687a2ac7c411a4f07d444bde0f7":"17","7e1d069b7fa57c03bd7bf48807520feb953157834503aaff8c9d493f37dea69d":"18","24404059cabc63b2dbff0f42ba57183108b8189ef53ab62fa25141a1caea824b":"19","33cf9758477460a8056deef0295a1ebe65b39b392c361ceb920a83edacfe5d78":"20","e9a16316f330e3d150f6ffd194f6fd8acd1426757b097de4b88ca0db875202e4":"21"},"data":"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"},"preferences":{"data":"EZMrwxNFFd1sMGycoYE7IrlGGrfLixLUnLZmWMkFysfISe2ay3ueO0PGCApuKqh9hA=="},"oneTimePasswords":{"data":"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"},"version":"0.1"}', 42 userDetails: '{"records":{"index":{"eeda70e0392261967bda71c3764da78989c45bbd2bb7be6b941b90f81d9b81b5":"0","13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551":"1","062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80":"2","ca01bcb7691f70818feed46c9a2a91883ac543997a395535aedbb49de166690c":"3","507f38b06d587d8889698ae1ebbba7ef8f0539b82550dd25779fd9ee88fc0c7a":"4","d5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d":"5","de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4":"6","d620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045":"7","f215d89bf4583c12f5ed4f4330f488dad3fffa448f4dc784f15ef135dda2c732":"8","36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113":"9","fe21497ef7435d31f9746c132e4b5ecf5aac5f13b5961ddb55d2bdc3409f28f6":"10","6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18":"11","9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291":"12","6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a":"13","6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728":"14","8b18e8593b5bc2f7ea39a5fab222047034ef2f380fee05be0fa6e1c0972fea39":"15","084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d":"16","7bb69b6366a8012f181c01e368ba18d4f7a82bcabb4959189736ad124c4bbfbb":"17","5cdac63b317f3942da38f3a3de3b7f0e5d6678200951c6216230295550f63fb4":"18","c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065":"19"},"data":"6tqzHY7/lB/JVfDi3iJ7BIJTiX1Fih//aTUF7IDoLdlnafC9hoIQ/5lGk+/Ezilw59n11ocPN31aOA9ddFGc9oa2vQ1BdymV8F91sWGLGyWft+PRCWOqxy7U1XxvbgyRbCs0mbtSLp/qlC6gewnAXJpH6KT9oURIjKkyaR8jJ7ng6IlfGUIL2KUFnAv6KNoWO5cdXDU0nrrdSYehcApmXYlTyreHDbrFlLJ2YuR9JLvw9bDxXi/xBY1wZgwiUsGVlG3j0e4f63mJVrpmPI1jhaXD3BQD8cbl96l1ImhYe1Boz53gLq94KSk+3bkjG4GRhvlDPtvk8vdSZPsYPsbC0Cu0M4TMS70nPX7qNj5LDvzrd+S+zDj1/CW0yctRThXstrxDyG/L75k/xdZcVbMzXQHQR4OwWWFiqGOnLpyiZIHGfV5+xZ1a1uxT9TPDoDdwPuE5P1Uwh3PeGc9jatk3waQN6fo3g8PQrCOtPn7C7b6y4MEjpAG4e53HFb0B/hEfK6ApycT6QAglsA3qF/tZyZbwNCwert4pG52rIG/PODZ1XxVZHFX8VFWeSxuk/jnPpJg/pvfpRzBMyCGVDJb/i+dlwFcnOAVvqju5xXJk4mu05XrngF10NzHnVRMfxwXmdtTDYE/lDuODy1SiE5yBZlt/Ff6a0eMS/P8HLsUS8+dtz9yOIQ8rh+52nVS7F5tFWXFOvT7nfq1L4HaHCigY187Jk0Y3LCsZW6ziB5qhKZlbQxdCAx5UDNWNs/F59qxVWP5k2UagBgAJoh+iMTZAMWkaURqQxY84SVYIkm9vNZv6Jf+ppFJNn6s3ZZSUe8gmmgMPJP0Lmoh/VCPNypzR+sZULfVFpmPmNXfaAOQ875iDgvUuBWsDSBdyx2+8Q+fUO0w+W4WkDM09VGmFxrHHjfpRsOT1B3dVFti2ypyiCdkvm878pvTS2j4Obweh6+bmzE7lqOXJgtQUydKNZIb3hNbjB7LwPro6e70ctm3eM9OLFT73u+khVM2UtAhfMseEb+Ny+PldW+VgXnHFm8n5CDBHoDJPXBfJq60l6+1OnDPfB+7tIgnCVH56CZ0jFX2EbxWS63xAHNLttfMtxdbkf4AbpanqLJvNiU4P0ThW4+VNRKBid0v78WC40rWX4UTEv9HPvUA5JUsj1v6+I5UI+quCUfx0vQgeO/gAlI0YuVgDBB1ouWUSES9+U9QIGoUsVTHDo4ZOEInsnhjPbz+IFyRMoMfbiYx3gviHluxHNGYsIMFxo+yB8aW/CedyWYt54ijgViPIXhH+R8bMgFBX4JX6hu8l3NMSYvMV82ua9Pnyl7NxbwuL1S/0JAp2uh0OzGMX9iOOcFWqbWVAX7NCePAG4VTJ0wZ2iL/MUGAVG72qBWvCb1ckavQc1LTw8l2vPG6YwFf0frFHsVvZsGHRptswFTp+77U1bpn/TL2MUXJQ9gQWgCQHxE+STunbJDDWOe9FZeKkJgjqQQ2E70UFoyUp4U/H1fA5Sy9+gS8QMtOcPJ6tCbcIXnq1nif+6bDBjtQCofs59Mm7ibwnofXPGkWv8Id3SyhW9YZCYhJZss2dkMyWfqw4jDysWxQAHjxZg4qgVXA9xpwuhu7O82vMOutk7vPyEuJ4gqlDroN4aPecD405YOEXWeWrWsL2V3y5PwXBrYWq22XzJeL3PvS9usj1Vg2TtG2O3HLuB6Rm6+i7kraiRbENemst4MjLrZwYjI07ZD7DUifsrUvjA50JXXb8pjudYqwUrTKOzcE/uZ1WbSbm+2x8PYVimLtDE4/lOp34J07WV7ZxJL8yk4J4CYRxLnnS7xps8skfy6glRA8fTKRVLv+9VqVxJgE3X/G8Kfosd9K03DJbD+L+h3kvLAAZ6Xr6FpbnA5HeGXzfQ/k5lBqIS39iqT2kZKMxIOXhfwmmuTSS25nk7hD+0R1TdnnTOYQrEn8bdyPuFXzd08FxN9KSYm2H1Gdg+2h+N9UWTED7zXmv/H+gfzk5gfoNOKyWWoaEFT/NL3ky6ApzuiokUj3x+xvCwOXoozLHXhdeZYtYkIu1HlYWQx1YAk2ilg47nnRhQQaYjMvIHfsdYjdb1CpGO5K1dYlRBOCMttp+j5QVz/jCSeCrMh8dtu9ZGLEZ3QL06tqmXp03fCsvKOG0it/KuNG5EJpfb6bV+5DsZvI6k4VLXjcKvZhhh+VZSf2mr+mzFEGKBSeleZvii2g8dVyaEBms37SBFCdIwkMxFRmzo/n+1m8axx9o57NPwISU4q8eAjUK2bWrBECZaI4FwLqmlGK9hMPGB/lbrcuHtlqmv5qzo2TJb5/xoX0LyJB/FZVk5Wsm8vC+O8b7o6JDxaPkOgy07+p8Sg9wuKVy6hHrFRnZ+MEZO3Bbk74omg4+6y4HVuRCgxztzRyUiYTssFphqKBsC/e6fQN0QtSwhLSld/B5qoPMn/9CMs8UxmRbA2Ekwi+7Ss51YsWNmd8dKUqxMKWFZOQYe2dbvcYbRwKwjrARxR7d5aaQr8b96hKsWs0YkLQDn71C3AQfEUvClvDXJdJ97B9WkDHz/DQ9EaIp9+4ZSl3SIrew09vUkvUSVGU7egHzv1Oe2gf4jI/3zToRq307AzCT1tF4k0VbInDFKb8YSG35UaJAtfTENvkAQ+8KmR3gQyHRupLi6D8TNvy/03n8naG8BV8+EArzmUAgxmfv3PTipnn3bdsaIFK1+uldQXVUoHm7PgZidzOHpNXvNzgrL3c3gv7Et/s="},"directLogins":{"index":{"61e87fdc4f1d9112e3b30c1f6812d095dcdb24f014c83319091eb6c9899ec348":"0","989593d4c48929f0c8f1581aa96969c622807e99619ed4732026e967530a68ad":"1","9f7979368fa29f66c44bd97ecaf6c545abc800b1c7bb21b7655a68e1514c3906":"2","dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496":"3","aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584":"4","1f9bfd677b531a03168d3f8bd8afabb5357244a7bc355dff50bd6c0a072114a6":"5","a48e38845713462ecc9f827149eeaae87da882031f98ef8ebbf9ee9537b63468":"6","6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f":"7","2df54059e78f5771f23bd285cce19595b38331b73d67020424d9a1b2257db09c":"8","065cd0c270e5e8ce50e4ea8e3828dccdae18c01ab030813d756a87d03fe68784":"9","ddbc8d01300a4f10631cbde09e1246332eade3a877a2205209f9eb9e5bc9da0b":"10","9b7a30e667afc9f76ba77600658b2c13bff52432d444261d39bf3d069a160afe":"11","9fd2929cde3d32d9cbc5f1d787f2f64729a5e12a14410556b31c0c099762c46a":"12","f695fc36ac56bead80c0d20a88e01e382819c18dc268f1679551b7c83db7cb14":"13","f22dc41ffabef4b3bc8f7af804fec975bd50718098322a673cbe4aaff9464ae1":"14","03251dc1cbc5398789e4c4b45c52cfac3fcd8c1a4f19a81fa68fc6feae31d55c":"15","a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e":"16","cb9ae0bba1957075ccdbfd3b3481704d62087687a2ac7c411a4f07d444bde0f7":"17","7e1d069b7fa57c03bd7bf48807520feb953157834503aaff8c9d493f37dea69d":"18","24404059cabc63b2dbff0f42ba57183108b8189ef53ab62fa25141a1caea824b":"19","33cf9758477460a8056deef0295a1ebe65b39b392c361ceb920a83edacfe5d78":"20","e9a16316f330e3d150f6ffd194f6fd8acd1426757b097de4b88ca0db875202e4":"21"},"data":"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"},"preferences":{"data":"EZMrwxNFFd1sMGycoYE7IrlGGrfLixLUnLZmWMkFysfISe2ay3ueO0PGCApuKqh9hA=="},"oneTimePasswords":{"data":"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"},"version":"0.1"}',
46 statistics: 'SfGy/4mpXQdDOv+Bcfie4Yt/', 43 statistics: 'SfGy/4mpXQdDOv+Bcfie4Yt/',
47 userDetailsVersion: '0.3', 44 userDetailsVersion: '0.3',
48 records: { 45 records: {
49 '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80': { 46 '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80': {
50 data: '7sgxSQlqR+wh3g06M2+sWp7raQxjjQ9jLIz2OcEB7SckuQcXNrhMlDCbL6ncSljtzgqhioWrOB409kIG8lc7h6ekghOE/Mhi7rVwAiRfNGB7r3mYxpEXRe96O2RG7E+NcSp8ezl+5gJ9D0o1abXPeFQYGcr95hUioCfyY+xrxY8TJVwdb9nHkYvBdKV7rCl1dTxgsKWK3nlo1T7e5uyiz5YUAE6BrCtTFAqtprLI/xOpRti9C+llohS7D6s8hkCBPZfp3chKFDrgpsCBFLhXN8jrBKSjHi1PJdRQzpJsgrxyeBj0dZx3gTsYOXqrYgdIzFUo7K1Tqb30yNprBiDMr7j0YYXiSvEb7OuOIP+HTXGN+yt09bk9LggyY6Fh0e+tenjQQ3soySN/XznOBpEjXbzXoz6fR1MXVnE9GgaX99LVNqwWfq2rIBdSE/FfspRiWP3BY5jIrEkNeRclS05U1zw3K3wxOL+cB9r2IynSXnK8QcrDNNRZ0W3PhsSFfByUXuviLSEOPuJa1mYP29L9Lj/WyHL1Gyl8xLbt2H41S6+wvIleKMuc7teH6wPXbnYphvbwBowoI6HZTEFkz3dQKhhY6VF/81iCXsuaz6BjyrzFX6SkQ4S3lN1tv4opQMJFvnmHb6EkXqVWfeIXzJIJO+owL4vDOf4okpAD+HPjjlVXhq6fvyM5UBIK9+tzJW78X/zifrQOfWRIhwjVsfUdZWmZ/S35vnHWNuXkM8GBYrDysqxanDtah3U8XLAiIhFtBOzpzr6qGaNDOKKgG3K8QXT4bYHOq1rQVUwzQuKhlCyStrRMQrC5Ry251xmLy6dKfppRarVeGDtzB/30BbtFNdZmzMNG2g+Jj5tFCrEtCMvMiQEWZHMU3tGMFxDef/KKdv1fFTJC16jmaUiCHUZmNjB3EO9R6xPVcMlAVKf57n3efrpRk/GTmm9JhAFkuF/wsveH4JjPpDUdkHYFu5tHbb30sbga3ufBAXbQL4ck10S24akU/cKraFGLvuKGaR2U0i6ih911TBSf3pAfZ3RFbBhVIl+6rSknC5+IXoBR7MRstBPW/xC9pQVjN5Qyn0g3aUjUSI+q4jcTuvMl32NtTJbWRMGhfkrpVzypZTyPnIh6XJkyBghlUARXw23MlbjiZxmY4ScDmcWZRZJWIknHlqjDKFDKNnwrfnEI9qWyMDno+jA/DEQz0mnpdZYEsoz1/qAmAeDt89vx', 47 data: '7sgxSQlqR+wh3g06M2+sWp7raQxjjQ9jLIz2OcEB7SckuQcXNrhMlDCbL6ncSljtzgqhioWrOB409kIG8lc7h6ekghOE/Mhi7rVwAiRfNGB7r3mYxpEXRe96O2RG7E+NcSp8ezl+5gJ9D0o1abXPeFQYGcr95hUioCfyY+xrxY8TJVwdb9nHkYvBdKV7rCl1dTxgsKWK3nlo1T7e5uyiz5YUAE6BrCtTFAqtprLI/xOpRti9C+llohS7D6s8hkCBPZfp3chKFDrgpsCBFLhXN8jrBKSjHi1PJdRQzpJsgrxyeBj0dZx3gTsYOXqrYgdIzFUo7K1Tqb30yNprBiDMr7j0YYXiSvEb7OuOIP+HTXGN+yt09bk9LggyY6Fh0e+tenjQQ3soySN/XznOBpEjXbzXoz6fR1MXVnE9GgaX99LVNqwWfq2rIBdSE/FfspRiWP3BY5jIrEkNeRclS05U1zw3K3wxOL+cB9r2IynSXnK8QcrDNNRZ0W3PhsSFfByUXuviLSEOPuJa1mYP29L9Lj/WyHL1Gyl8xLbt2H41S6+wvIleKMuc7teH6wPXbnYphvbwBowoI6HZTEFkz3dQKhhY6VF/81iCXsuaz6BjyrzFX6SkQ4S3lN1tv4opQMJFvnmHb6EkXqVWfeIXzJIJO+owL4vDOf4okpAD+HPjjlVXhq6fvyM5UBIK9+tzJW78X/zifrQOfWRIhwjVsfUdZWmZ/S35vnHWNuXkM8GBYrDysqxanDtah3U8XLAiIhFtBOzpzr6qGaNDOKKgG3K8QXT4bYHOq1rQVUwzQuKhlCyStrRMQrC5Ry251xmLy6dKfppRarVeGDtzB/30BbtFNdZmzMNG2g+Jj5tFCrEtCMvMiQEWZHMU3tGMFxDef/KKdv1fFTJC16jmaUiCHUZmNjB3EO9R6xPVcMlAVKf57n3efrpRk/GTmm9JhAFkuF/wsveH4JjPpDUdkHYFu5tHbb30sbga3ufBAXbQL4ck10S24akU/cKraFGLvuKGaR2U0i6ih911TBSf3pAfZ3RFbBhVIl+6rSknC5+IXoBR7MRstBPW/xC9pQVjN5Qyn0g3aUjUSI+q4jcTuvMl32NtTJbWRMGhfkrpVzypZTyPnIh6XJkyBghlUARXw23MlbjiZxmY4ScDmcWZRZJWIknHlqjDKFDKNnwrfnEI9qWyMDno+jA/DEQz0mnpdZYEsoz1/qAmAeDt89vx',
51 version: '0.2', 48 version: '0.2',
52 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 49 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
53 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 50 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
54 accessDate: 'Mon Jan 19 16:10:04 CET 2009', 51 accessDate: 'Mon Jan 19 16:10:04 CET 2009',
55 currentVersion: '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3', 52 currentVersion: '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3',
56 versions: { 53 versions: {
57 '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3': { 54 '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3': {
58 header: '####', 55 header: '####',
59 data: 'GCNNIhDQjMJQZGVSf+95fPtU6eOnFWVhuGm86r8WZGVR2Gf2EjbG1OJ0ZIGpZ/AXgirCMpo5AFxJe0Bay8IYg+xmBqMFhwFxzAgJBYCIts+raSaNRipuY8dTEqDxAqD1cChcG8EhSoiFgQ0fG0I7nNEUDJi0pIt4/ygBcwvAhuAenEp9ZW+oQA0+YysPQRqkz3IieFaOoSEbe5/SqpUilV4q1gTVyzNXvrxzxx+rlvEyGFgFN+vgtUZ1NrwlPk4gVksTpylvv6CFaMGEWKhgMG6efo0rJckKosaJTu1pldJdnmMK4EKNMLOd+jZ6pEhEhYyadrA4+zYU5TlmZA6ASzTaps8piSwZodoi9qY0ch2StK4mAbzeEGe2HdfHuAU9Tyq3Ppk3+VfNdKgpQfYrQOiSlXbKzK636tzXTN/gyrfOTHjBrRl117ywibgSX63ayAYNfcLpKotC', 56 data: 'GCNNIhDQjMJQZGVSf+95fPtU6eOnFWVhuGm86r8WZGVR2Gf2EjbG1OJ0ZIGpZ/AXgirCMpo5AFxJe0Bay8IYg+xmBqMFhwFxzAgJBYCIts+raSaNRipuY8dTEqDxAqD1cChcG8EhSoiFgQ0fG0I7nNEUDJi0pIt4/ygBcwvAhuAenEp9ZW+oQA0+YysPQRqkz3IieFaOoSEbe5/SqpUilV4q1gTVyzNXvrxzxx+rlvEyGFgFN+vgtUZ1NrwlPk4gVksTpylvv6CFaMGEWKhgMG6efo0rJckKosaJTu1pldJdnmMK4EKNMLOd+jZ6pEhEhYyadrA4+zYU5TlmZA6ASzTaps8piSwZodoi9qY0ch2StK4mAbzeEGe2HdfHuAU9Tyq3Ppk3+VfNdKgpQfYrQOiSlXbKzK636tzXTN/gyrfOTHjBrRl117ywibgSX63ayAYNfcLpKotC',
60 version: '0.2', 57 version: '0.2',
61 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 58 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
62 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 59 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
63 accessDate: 'Mon Jan 19 16:10:04 CET 2009' 60 accessDate: 'Mon Jan 19 16:10:04 CET 2009'
64 } 61 }
65 } 62 }
66 }, 63 },
67 '084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d': { 64 '084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d': {
68 data: 'fGzBu1On7e/6rAoSB1a4fq/CkS8Be/T8UP5cQ93asBTWndSYu2lW4DQ4SXQXSindIi3OnNx/f6SNv/extb7OrMLREF92wXI045ipPwy+DIICb+cQNMJ82Sh4cXaIcAWcyrm+MYri3qq9LBKbpwkILcebZidJ86lmKYHJozUezmfbMcwNCljHs/gYkHVzVcuw9L52Ugc6wC7sjsshh+UH6i4/2Frlrophtx+b1vervNd8eoYiKnedHVXVfW7UJcQoF27eHFgzwYnGvRW0KNXFFhqmPb61TSkIvNdCCvBKDP4SXrWvGgzU89wipvWdUPpQ+fCT6Mp3hPRrbJxwMunmjujZOzBld/HkjnXoiNfBb5akA280WvdyzWYATrjV1ZFx8yQY8G0+lRt/MxjKDc38w4y+Rf5WeRbXboJMvFatwooHUggk6qSRmZVvgOmFmNuDRnRYIFzqK3JclhJeVasnqhR6RiGSowc1Ffr1HhcZCMnXpQABGBkZcHD/zw6YjHRyh9Plw7XAm0xb16HMDtiwt7WLJpxLH/HP99j/A2hvMGWiUiFCaYv7AzyEPTmYbN32D1IsAEE/GC3FG0HypGTBolP8wpAfTRdlvWpJz8oRRdwuLV3Pgpu+kXh5sQyeZI6tnuMPQFmRDcMN1oo3E5V5V585nVMnKTFcXhBzD4UnoV+DQNkG/+iSPybQzz/EZmucEqGEYyjI3kl4MAX8UMEUxE4JO0fF8MzyBI13nxknowAceEammx1dGVaJCoIOdhadaPVPyOzXM1Vp1erVm5k4TsxSx1pll+GOm6hVoNHIuQLDueaMEpRxMhfwc8cDyXURqRGPTgTc0bint5xVjo10fnpX1gcdc/AWL6y3tXM80NW+uFJ4GI7VzyzfcMRzTiRaGi19z8MIx8PbIVGh2sw4FhgGujNsPrpuESvUVT+17M0+v8oEoABNlcizTMFs/sA1uqlPumFASltzmViAzClOsDuCh069hFLjdk/Ex5jy4vPYlwOT8Uq9DJC9ZWuZgiI1DrhWN/8QGAEGxxbvnSZPNCQ9kpD5p+iabinLLWOAirVNgKwIRJRyAu/uR9xKd7J9Wxq8q/ii+y5lGilbo2g24wbDwrkXYVhqp/4J0g+p8Wv1NBjCTSCqV39WEizUCRHo3ee9HnQnBJQDOyTBRuz2odTJtJ5tLYjWXZRdFzFSJrEq+Z1z3oq7LnhZy3YWaFXPeKmBCemMthtNt0nL', 65 data: 'fGzBu1On7e/6rAoSB1a4fq/CkS8Be/T8UP5cQ93asBTWndSYu2lW4DQ4SXQXSindIi3OnNx/f6SNv/extb7OrMLREF92wXI045ipPwy+DIICb+cQNMJ82Sh4cXaIcAWcyrm+MYri3qq9LBKbpwkILcebZidJ86lmKYHJozUezmfbMcwNCljHs/gYkHVzVcuw9L52Ugc6wC7sjsshh+UH6i4/2Frlrophtx+b1vervNd8eoYiKnedHVXVfW7UJcQoF27eHFgzwYnGvRW0KNXFFhqmPb61TSkIvNdCCvBKDP4SXrWvGgzU89wipvWdUPpQ+fCT6Mp3hPRrbJxwMunmjujZOzBld/HkjnXoiNfBb5akA280WvdyzWYATrjV1ZFx8yQY8G0+lRt/MxjKDc38w4y+Rf5WeRbXboJMvFatwooHUggk6qSRmZVvgOmFmNuDRnRYIFzqK3JclhJeVasnqhR6RiGSowc1Ffr1HhcZCMnXpQABGBkZcHD/zw6YjHRyh9Plw7XAm0xb16HMDtiwt7WLJpxLH/HP99j/A2hvMGWiUiFCaYv7AzyEPTmYbN32D1IsAEE/GC3FG0HypGTBolP8wpAfTRdlvWpJz8oRRdwuLV3Pgpu+kXh5sQyeZI6tnuMPQFmRDcMN1oo3E5V5V585nVMnKTFcXhBzD4UnoV+DQNkG/+iSPybQzz/EZmucEqGEYyjI3kl4MAX8UMEUxE4JO0fF8MzyBI13nxknowAceEammx1dGVaJCoIOdhadaPVPyOzXM1Vp1erVm5k4TsxSx1pll+GOm6hVoNHIuQLDueaMEpRxMhfwc8cDyXURqRGPTgTc0bint5xVjo10fnpX1gcdc/AWL6y3tXM80NW+uFJ4GI7VzyzfcMRzTiRaGi19z8MIx8PbIVGh2sw4FhgGujNsPrpuESvUVT+17M0+v8oEoABNlcizTMFs/sA1uqlPumFASltzmViAzClOsDuCh069hFLjdk/Ex5jy4vPYlwOT8Uq9DJC9ZWuZgiI1DrhWN/8QGAEGxxbvnSZPNCQ9kpD5p+iabinLLWOAirVNgKwIRJRyAu/uR9xKd7J9Wxq8q/ii+y5lGilbo2g24wbDwrkXYVhqp/4J0g+p8Wv1NBjCTSCqV39WEizUCRHo3ee9HnQnBJQDOyTBRuz2odTJtJ5tLYjWXZRdFzFSJrEq+Z1z3oq7LnhZy3YWaFXPeKmBCemMthtNt0nL',
69 version: '0.3', 66 version: '0.3',
70 creationDate: 'Fri Oct 17 16:49:20 CEST 2008', 67 creationDate: 'Fri Oct 17 16:49:20 CEST 2008',
71 updateDate: 'Mon Oct 27 08:58:49 CET 2008', 68 updateDate: 'Mon Oct 27 08:58:49 CET 2008',
72 accessDate: 'Mon Jan 19 16:09:39 CET 2009', 69 accessDate: 'Mon Jan 19 16:09:39 CET 2009',
73 currentVersion: '6fd60c5709a4808444f43f7bbd872363d76703957f613076538ba2f9161206ac', 70 currentVersion: '6fd60c5709a4808444f43f7bbd872363d76703957f613076538ba2f9161206ac',
74 versions: { 71 versions: {
75 '0ae362285f103722abbd046eee2b7d10aeae6a1d05cbaf2081392ce9df882bcf': { 72 '0ae362285f103722abbd046eee2b7d10aeae6a1d05cbaf2081392ce9df882bcf': {
76 header: '####', 73 header: '####',
77 data: 'sG6TUmPSEPFpiJ5YdtghWHmHbvUK63tZCZ+Q5iz2ALas//jN+lZCBhZcjEwPEJskBkK2R0MyAh14wWGh2bBHMjsokgTe+L+x+0c/Zi0epE/IC9gtOBhsTe/hZ2e2xOGF/SbzET3DAAYXvxduZ36f7SvvFnrkkKvpj8wGSdTFcBmzqMb9DL2bRyRCLGLMzE3F1a0q5CufCIRz2TgHm+Uw+kfvvwC7ig/F/5iLW90Ypz3vmEtMEFYFHZ9a8Oh0rsXGfevbMhFqALoywzihQEe/NiB8dwn7GEdYKSQ35rhvZh29ULWOZinqmg0ONe0HYaxx7DbKsVoue57S0CIUlgHLajzHfLfqQg2sFI0OT8TnHsGg0YZ6mM2EdKmEjJiER0cP', 74 data: 'sG6TUmPSEPFpiJ5YdtghWHmHbvUK63tZCZ+Q5iz2ALas//jN+lZCBhZcjEwPEJskBkK2R0MyAh14wWGh2bBHMjsokgTe+L+x+0c/Zi0epE/IC9gtOBhsTe/hZ2e2xOGF/SbzET3DAAYXvxduZ36f7SvvFnrkkKvpj8wGSdTFcBmzqMb9DL2bRyRCLGLMzE3F1a0q5CufCIRz2TgHm+Uw+kfvvwC7ig/F/5iLW90Ypz3vmEtMEFYFHZ9a8Oh0rsXGfevbMhFqALoywzihQEe/NiB8dwn7GEdYKSQ35rhvZh29ULWOZinqmg0ONe0HYaxx7DbKsVoue57S0CIUlgHLajzHfLfqQg2sFI0OT8TnHsGg0YZ6mM2EdKmEjJiER0cP',
78 version: '0.3', 75 version: '0.3',
79 creationDate: 'Fri Oct 17 17:00:31 CEST 2008', 76 creationDate: 'Fri Oct 17 17:00:31 CEST 2008',
80 updateDate: 'Fri Oct 17 17:00:31 CEST 2008', 77 updateDate: 'Fri Oct 17 17:00:31 CEST 2008',
81 accessDate: 'Fri Oct 17 17:00:31 CEST 2008' 78 accessDate: 'Fri Oct 17 17:00:31 CEST 2008'
82 }, 79 },
83 '10f45664bbd979a92f37886f1ecc6e52e49798b16dc997aecd37259ad9b2090e': { 80 '10f45664bbd979a92f37886f1ecc6e52e49798b16dc997aecd37259ad9b2090e': {
84 header: '####', 81 header: '####',
85 data: 'RdKVaV/WWWchrCse3KtcXd47Bfm6IAwjqVUpaxoed3HeunI42AAm7xYYSjeK8edHpbNRJbhobBAX5OZtWIp/HmgkobKM8CIiWxrWz89FqyrbnPD7+fXdtgF2yTax/0sC1l0ibncdOuJKX6U829oPlXCpXIOjlomc4wEEAD/5V6FbORvdZ9IE/ME3LsG2y02cT2tIpx6+R6wC/PKXhZA2UDsTE6R2Op2BtIzpVORZLXsdyAp/4wvWQxq90i9cEpbsVQsMB10JVyNHNsRTFhIlHi9MVCaMxQvcrwRElMj/Y9x3RbsFzSGKqFLqdg7Fn/U+KYkpYtsgHv9hraPIb9lV5FH16+iItU/HBM6FGezIj1ZkoQ+dgjPfSjTZzgzDYwyb', 82 data: 'RdKVaV/WWWchrCse3KtcXd47Bfm6IAwjqVUpaxoed3HeunI42AAm7xYYSjeK8edHpbNRJbhobBAX5OZtWIp/HmgkobKM8CIiWxrWz89FqyrbnPD7+fXdtgF2yTax/0sC1l0ibncdOuJKX6U829oPlXCpXIOjlomc4wEEAD/5V6FbORvdZ9IE/ME3LsG2y02cT2tIpx6+R6wC/PKXhZA2UDsTE6R2Op2BtIzpVORZLXsdyAp/4wvWQxq90i9cEpbsVQsMB10JVyNHNsRTFhIlHi9MVCaMxQvcrwRElMj/Y9x3RbsFzSGKqFLqdg7Fn/U+KYkpYtsgHv9hraPIb9lV5FH16+iItU/HBM6FGezIj1ZkoQ+dgjPfSjTZzgzDYwyb',
86 version: '0.3', 83 version: '0.3',
87 creationDate: 'Fri Oct 17 16:49:20 CEST 2008', 84 creationDate: 'Fri Oct 17 16:49:20 CEST 2008',
88 updateDate: 'Fri Oct 17 16:49:20 CEST 2008', 85 updateDate: 'Fri Oct 17 16:49:20 CEST 2008',
89 accessDate: 'Fri Oct 17 16:54:23 CEST 2008' 86 accessDate: 'Fri Oct 17 16:54:23 CEST 2008'
90 }, 87 },
91 '2fa7b67e569d5e268d2b70b3d4d3a960d7e437e1937bcb324b67d0b9441db8ba': { 88 '2fa7b67e569d5e268d2b70b3d4d3a960d7e437e1937bcb324b67d0b9441db8ba': {
92 header: '####', 89 header: '####',
93 data: 'dpnI2qKjk0+bfyKktw4ZCWf+rWZ12hO5bda39CwD29JH7KtdpLCLe2LoLd+KKF2wOdpDsoI2iTiwRgFpt77e7DoWJABxq/0aaRCVN9XpqZo08iHiYhJyNlIszO8CdEhX+M3AeZqzTnd6fs91VfIEWggvku2Z+jwr0CbclY6FnOcNnS+1fj+W79Z9XC383GOm2ujjfo3SX/fyNQSw8aX+7AgJIRGR9uHK7M1cVfsNNTbmDb/HDgLlYZ1Pqm/9poHpmS7G4HUoRM2/WjI0R6F48dy5s8vZRi11SCnlnj5oRykScJj6wh2DltbCyesiaTpAjP6MQjTXsZzKpaosaQcQClZw+w6hDD2cA54IaBIv2j5KAHyhxDh2ERdwbdnCsDKPz4+zP+fmKfW295d4OY0l1NCSdcY+75HWTmBWRAooZeDTo7AE8m5sRwxewE0Y8J2MLUYsrs7Rl4kbZCiRRHU7cs+us3fq2DVn2OLGEbkRrK3kA9swT9W8ABqINoA79+DmDaIr6TGxe5AlHkCAl5sYAN4g42UX1NKhl4fWI1Scj9O1Ixds/1UUvqzavld0mE2cR9yt6LntjE5sQSAaexvymAJbU5IIM5NTk7NlY7G3PEvAPjcUsL9SGw==', 90 data: 'dpnI2qKjk0+bfyKktw4ZCWf+rWZ12hO5bda39CwD29JH7KtdpLCLe2LoLd+KKF2wOdpDsoI2iTiwRgFpt77e7DoWJABxq/0aaRCVN9XpqZo08iHiYhJyNlIszO8CdEhX+M3AeZqzTnd6fs91VfIEWggvku2Z+jwr0CbclY6FnOcNnS+1fj+W79Z9XC383GOm2ujjfo3SX/fyNQSw8aX+7AgJIRGR9uHK7M1cVfsNNTbmDb/HDgLlYZ1Pqm/9poHpmS7G4HUoRM2/WjI0R6F48dy5s8vZRi11SCnlnj5oRykScJj6wh2DltbCyesiaTpAjP6MQjTXsZzKpaosaQcQClZw+w6hDD2cA54IaBIv2j5KAHyhxDh2ERdwbdnCsDKPz4+zP+fmKfW295d4OY0l1NCSdcY+75HWTmBWRAooZeDTo7AE8m5sRwxewE0Y8J2MLUYsrs7Rl4kbZCiRRHU7cs+us3fq2DVn2OLGEbkRrK3kA9swT9W8ABqINoA79+DmDaIr6TGxe5AlHkCAl5sYAN4g42UX1NKhl4fWI1Scj9O1Ixds/1UUvqzavld0mE2cR9yt6LntjE5sQSAaexvymAJbU5IIM5NTk7NlY7G3PEvAPjcUsL9SGw==',
94 version: '0.3', 91 version: '0.3',
95 creationDate: 'Fri Oct 17 17:00:13 CEST 2008', 92 creationDate: 'Fri Oct 17 17:00:13 CEST 2008',
96 updateDate: 'Fri Oct 17 17:00:13 CEST 2008', 93 updateDate: 'Fri Oct 17 17:00:13 CEST 2008',
97 accessDate: 'Fri Oct 17 17:00:13 CEST 2008' 94 accessDate: 'Fri Oct 17 17:00:13 CEST 2008'
98 }, 95 },
99 '5a17723c34226d8cd663f91b11bfa14979e694e461818113ec8abf7194b46b6b': { 96 '5a17723c34226d8cd663f91b11bfa14979e694e461818113ec8abf7194b46b6b': {
100 header: '####', 97 header: '####',
101 data: 'yRTvhkoY9zDRBwFYf0G5U8zhfS1XWIUfwes6ADNnFyOrHOr7JZvZZHSgkOPnsmN/f5ngcvFaIV9X3TNTmmPLzD/ewgGVMR+ofMLyOIMGhxUDzosSd1+HKqwDZWneZ6xNsci87W8UCfJgoEGrkAtAwktqyS04pcAas74XiRGBWNcv5mHZONwGPckYUnnaVG02Zf+qif6Pp7ugdvXrgncO5oi2AMSoR8GQxMP+tX53YzLwOpabA32PDT6o+aDPwMstJNQjWCXjeYLDIlb0GjL2zgjglX5CfdGw8vNT5hwGEK2D1FkvHkw79m++9sOWd5w9WdGgtS4mrTZP3JHWC1sPqvsIpq6PsrzRrbfCFH7C4X/ya5ciOIZTCNl4dEGAif94zgN74ueY5BF31PNFtaRaQ1waKkbsrU63MrbQbBar9b0hDZoser3BdgDGb1Ecc2GbJM1HbDITttmFDrzy/Ugh2kistHx7Dci8IGgfT7K94TntRFc5R6suEqYRrmOn57YJTZYrwSgbeTqAt/KOE+gL9LawiLJ0IdSC2RQnO3yu/aOEThHxpdLIKiVJoiEQXYVnq2UpnO79GNtplNnUe1hETQ/JT0o5X1bbENyInUsFjPuitAfChXofkAysIhDOHAdifc0Y+pxOHbQLkL65ZOsEDXWSlwMcduMNdQm4LVx26GLIV6yVsaDN+hGta2CxUuSvEIMM6T5xhaPfJ4K57LVw9MbOjRXpmFQz3QgEr8ZZdUxgE+Kj6CtmsjvzXtCQ3Bv/SccTLJSR/LQ8XRdIcPoOlDDy5jSQDF/8lxkgV1V7M3+SI1iWESPT8My5C+RH32F2MNZzthYq5hIFUB3wsM/AaQ==', 98 data: 'yRTvhkoY9zDRBwFYf0G5U8zhfS1XWIUfwes6ADNnFyOrHOr7JZvZZHSgkOPnsmN/f5ngcvFaIV9X3TNTmmPLzD/ewgGVMR+ofMLyOIMGhxUDzosSd1+HKqwDZWneZ6xNsci87W8UCfJgoEGrkAtAwktqyS04pcAas74XiRGBWNcv5mHZONwGPckYUnnaVG02Zf+qif6Pp7ugdvXrgncO5oi2AMSoR8GQxMP+tX53YzLwOpabA32PDT6o+aDPwMstJNQjWCXjeYLDIlb0GjL2zgjglX5CfdGw8vNT5hwGEK2D1FkvHkw79m++9sOWd5w9WdGgtS4mrTZP3JHWC1sPqvsIpq6PsrzRrbfCFH7C4X/ya5ciOIZTCNl4dEGAif94zgN74ueY5BF31PNFtaRaQ1waKkbsrU63MrbQbBar9b0hDZoser3BdgDGb1Ecc2GbJM1HbDITttmFDrzy/Ugh2kistHx7Dci8IGgfT7K94TntRFc5R6suEqYRrmOn57YJTZYrwSgbeTqAt/KOE+gL9LawiLJ0IdSC2RQnO3yu/aOEThHxpdLIKiVJoiEQXYVnq2UpnO79GNtplNnUe1hETQ/JT0o5X1bbENyInUsFjPuitAfChXofkAysIhDOHAdifc0Y+pxOHbQLkL65ZOsEDXWSlwMcduMNdQm4LVx26GLIV6yVsaDN+hGta2CxUuSvEIMM6T5xhaPfJ4K57LVw9MbOjRXpmFQz3QgEr8ZZdUxgE+Kj6CtmsjvzXtCQ3Bv/SccTLJSR/LQ8XRdIcPoOlDDy5jSQDF/8lxkgV1V7M3+SI1iWESPT8My5C+RH32F2MNZzthYq5hIFUB3wsM/AaQ==',
102 version: '0.3', 99 version: '0.3',
103 creationDate: 'Fri Oct 17 16:59:31 CEST 2008', 100 creationDate: 'Fri Oct 17 16:59:31 CEST 2008',
104 updateDate: 'Fri Oct 17 16:59:31 CEST 2008', 101 updateDate: 'Fri Oct 17 16:59:31 CEST 2008',
105 accessDate: 'Fri Oct 17 16:59:31 CEST 2008' 102 accessDate: 'Fri Oct 17 16:59:31 CEST 2008'
106 }, 103 },
107 '6fd60c5709a4808444f43f7bbd872363d76703957f613076538ba2f9161206ac': { 104 '6fd60c5709a4808444f43f7bbd872363d76703957f613076538ba2f9161206ac': {
108 header: '####', 105 header: '####',
109 data: 'RgIWPbNN3sPkIPBE6lfvf9/EoDFLemTZe0Qh/1wZLrKxLRNzFpUk9+NmeGUp5f1hM3XjXw4cXRvP6GrWq69mz9zGja+1TA6RoW3dFMpSQkbONcrSD1mIjxV2zIvzA/Pangz0ZixbEeHCfwXLvgnevbTXXFjkti3kLHQlk2pJpM3zMl+rMJtcsefszuJ/0tE/bO7sBcFqcYgKAht2OyDQORBAGiW1kI9USKM5OOfJJIZDQ0gDhRgl2U92l3kIOO8hdnj32oRedwfKFmdSRkuMY7ykU0bMuVEVkLi/FWmhHxi66C2ovAztVtMd1IiyoNcHc4UH942GC4pT1A8YQpIHxBAJbrQVhpl9LfFkmJ7xUc6Xs5j0Nv8+z2JGCnJI/D4nDJqYW+iCYtRWu6vUmbg0vGfaYWQFGRZRk8zWfHzHXBvHU8p0QsIjYgCLKiUaU2SRRD2P7JCjeTUrm3I1OI593iPsEH9J2PHCM9OMQ8/Fsdgd7lWgH6P9jLdGUwtb1hGaq8mg3JGrHFXcrVkUEBfeR7xljeSHD7j4YahYrua9EeR8nvq6CNaOr406AWyHse9SXhaOxt8qXRLoELpyQPsaLgafUpsdLjJqHz7J76Rp77NSOtXGplKjAtU1xj+d/agaAKYCjvUJC8/APJI2890Pn7VSXr/TPc5biPEIopyVYEHFqaT4e5nZW1Ku1HXC9gwUwUI9rITG4GzIH1WMEm7oFLNUaSMrdK/UTdTJZ66ENE3B9v9cTUpR0NTkbI+iGKDnc8GHPRlr2ZJwN4KFTxi+o/kkEOBjvRHR55nRh2+dke75LS/fzHQZw5wlyqBv5ZeUZfRA7QHfkj9acR0fJSqqNX25AUzZQnRL3oVpOxFWCMU7QVf5VpnRm9OIOd/5F5EoY7Be4doM/UV9U40F3E6XPZQ8S0GKQzrDjc7jKyGPLNPLUWTmGB39mTNDHZQHh5Xv5Q==', 106 data: 'RgIWPbNN3sPkIPBE6lfvf9/EoDFLemTZe0Qh/1wZLrKxLRNzFpUk9+NmeGUp5f1hM3XjXw4cXRvP6GrWq69mz9zGja+1TA6RoW3dFMpSQkbONcrSD1mIjxV2zIvzA/Pangz0ZixbEeHCfwXLvgnevbTXXFjkti3kLHQlk2pJpM3zMl+rMJtcsefszuJ/0tE/bO7sBcFqcYgKAht2OyDQORBAGiW1kI9USKM5OOfJJIZDQ0gDhRgl2U92l3kIOO8hdnj32oRedwfKFmdSRkuMY7ykU0bMuVEVkLi/FWmhHxi66C2ovAztVtMd1IiyoNcHc4UH942GC4pT1A8YQpIHxBAJbrQVhpl9LfFkmJ7xUc6Xs5j0Nv8+z2JGCnJI/D4nDJqYW+iCYtRWu6vUmbg0vGfaYWQFGRZRk8zWfHzHXBvHU8p0QsIjYgCLKiUaU2SRRD2P7JCjeTUrm3I1OI593iPsEH9J2PHCM9OMQ8/Fsdgd7lWgH6P9jLdGUwtb1hGaq8mg3JGrHFXcrVkUEBfeR7xljeSHD7j4YahYrua9EeR8nvq6CNaOr406AWyHse9SXhaOxt8qXRLoELpyQPsaLgafUpsdLjJqHz7J76Rp77NSOtXGplKjAtU1xj+d/agaAKYCjvUJC8/APJI2890Pn7VSXr/TPc5biPEIopyVYEHFqaT4e5nZW1Ku1HXC9gwUwUI9rITG4GzIH1WMEm7oFLNUaSMrdK/UTdTJZ66ENE3B9v9cTUpR0NTkbI+iGKDnc8GHPRlr2ZJwN4KFTxi+o/kkEOBjvRHR55nRh2+dke75LS/fzHQZw5wlyqBv5ZeUZfRA7QHfkj9acR0fJSqqNX25AUzZQnRL3oVpOxFWCMU7QVf5VpnRm9OIOd/5F5EoY7Be4doM/UV9U40F3E6XPZQ8S0GKQzrDjc7jKyGPLNPLUWTmGB39mTNDHZQHh5Xv5Q==',
110 version: '0.3', 107 version: '0.3',
111 creationDate: 'Mon Oct 27 08:58:49 CET 2008', 108 creationDate: 'Mon Oct 27 08:58:49 CET 2008',
112 updateDate: 'Mon Oct 27 08:58:49 CET 2008', 109 updateDate: 'Mon Oct 27 08:58:49 CET 2008',
113 accessDate: 'Mon Jan 19 16:09:39 CET 2009' 110 accessDate: 'Mon Jan 19 16:09:39 CET 2009'
114 }, 111 },
115 'b57a2d2ffafa8029123362071c09709bb9192f06a17140440f0e41d22143148f': { 112 'b57a2d2ffafa8029123362071c09709bb9192f06a17140440f0e41d22143148f': {
116 header: '####', 113 header: '####',
117 data: 'PQ53T2Vo2D8PoLI1qNX//jLaVZFTDTYk6geT9+4RoThTxvlJ+beDPnQzgYhd9iASaF9GQEEL8JxsBnNpEPa6JPOY4ndFLmDLyFDKXMprxq1UIbzFV6kFoYAk3uCCCa3UCDzdr1KXB2CiiF9HrilaA+xkm8krAvH8I5kZD+j23gByz5cAFvXg7A77KEURpjujURL65DW5M+ceIjo6OXaPW9VO03xhqGt/M47ayObpoEGJZn+X9C8s0SE5wOXHbn38YZlRI480OMvtDAxbEYUeQKMmzu6lO4Nw5hhOUjoPSLr/i3tmDx3nPcDwnSafx6jyA4y31eW6yazqTEOP5I5ArC5mUrF7mAAiFvbHIsMoF8PLj6MONlRIOZgbf9HzCpFdt8xBrX/TXp3LaSAj2XTWgSTFI2cgmU3qqPyibvIfUsB5cVHQCXi692JpC+B85axJ0FLyMl5w3vq0txlPkf6q+dadPYDaLHGZEmDjkWScA1GM5xPJHWFwqGE7ejgXKG0sMYsMKWYk+F2LEUmMHtEvSlpgJBntvcQ1ZjYQxeu4hg5txu1ykkif6fXgkXF6wn6qu+5caeJeNhWtAB4q7WVD47111woYMdkmX7AnDTXSAQ==', 114 data: 'PQ53T2Vo2D8PoLI1qNX//jLaVZFTDTYk6geT9+4RoThTxvlJ+beDPnQzgYhd9iASaF9GQEEL8JxsBnNpEPa6JPOY4ndFLmDLyFDKXMprxq1UIbzFV6kFoYAk3uCCCa3UCDzdr1KXB2CiiF9HrilaA+xkm8krAvH8I5kZD+j23gByz5cAFvXg7A77KEURpjujURL65DW5M+ceIjo6OXaPW9VO03xhqGt/M47ayObpoEGJZn+X9C8s0SE5wOXHbn38YZlRI480OMvtDAxbEYUeQKMmzu6lO4Nw5hhOUjoPSLr/i3tmDx3nPcDwnSafx6jyA4y31eW6yazqTEOP5I5ArC5mUrF7mAAiFvbHIsMoF8PLj6MONlRIOZgbf9HzCpFdt8xBrX/TXp3LaSAj2XTWgSTFI2cgmU3qqPyibvIfUsB5cVHQCXi692JpC+B85axJ0FLyMl5w3vq0txlPkf6q+dadPYDaLHGZEmDjkWScA1GM5xPJHWFwqGE7ejgXKG0sMYsMKWYk+F2LEUmMHtEvSlpgJBntvcQ1ZjYQxeu4hg5txu1ykkif6fXgkXF6wn6qu+5caeJeNhWtAB4q7WVD47111woYMdkmX7AnDTXSAQ==',
118 version: '0.3', 115 version: '0.3',
119 creationDate: 'Fri Oct 17 16:57:17 CEST 2008', 116 creationDate: 'Fri Oct 17 16:57:17 CEST 2008',
120 updateDate: 'Fri Oct 17 16:57:17 CEST 2008', 117 updateDate: 'Fri Oct 17 16:57:17 CEST 2008',
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Connection.html b/frontend/gamma/tests/tests/Clipperz/PM/Connection.html
index 181a3bf..e2a3394 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/Connection.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Connection.html
@@ -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
29<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.PM.Connection - test</title> 28 <title>Clipperz.PM.Connection - test</title>
32 29
33 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 31 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
35 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 32 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
36 33
37 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 34 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
38 35
39 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
46 43
47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
53 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> 50 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script>
54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 51 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 52 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 53 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> 54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
59 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
60 57
61 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script> 58 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script>
62 59
63</head> 60</head>
64<body> 61<body>
65 62
66<pre id="test"> 63<pre id="test">
67<script type="text/javascript" src="Connection.data.js"></script> 64<script type="text/javascript" src="Connection.data.js"></script>
68<script type="text/javascript" src="Connection.test.js"></script> 65<script type="text/javascript" src="Connection.test.js"></script>
69</pre> 66</pre>
70</body> 67</body>
71</html> 68</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Connection.test.js b/frontend/gamma/tests/tests/Clipperz/PM/Connection.test.js
index e4d0d15..9d0036a 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/Connection.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Connection.test.js
@@ -1,120 +1,117 @@
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.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
30 27
31var tests = { 28var tests = {
32 29
33 //------------------------------------------------------------------------- 30 //-------------------------------------------------------------------------
34 31
35 'simple_tests': function () { 32 'simple_tests': function () {
36 vardeferredResult; 33 vardeferredResult;
37 34
38 deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false}); 35 deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false});
39 deferredResult.addCallback(function() { 36 deferredResult.addCallback(function() {
40 var connection; 37 var connection;
41 38
42 SimpleTest.is(Clipperz.PM.Connection.communicationProtocol.versions['current'], Clipperz.PM.Connection.SRP['1.1'], "the current connection is 1.1"); 39 SimpleTest.is(Clipperz.PM.Connection.communicationProtocol.versions['current'], Clipperz.PM.Connection.SRP['1.1'], "the current connection is 1.1");
43 40
44 connection = new Clipperz.PM.Connection.communicationProtocol.versions['current'](); 41 connection = new Clipperz.PM.Connection.communicationProtocol.versions['current']();
45 SimpleTest.ok(connection != null, "can create a connection with the 'current' communication protocol"); 42 SimpleTest.ok(connection != null, "can create a connection with the 'current' communication protocol");
46 43
47 SimpleTest.is(connection.proxy(), Clipperz.PM.Proxy.defaultProxy, "the connection uses the defaultProxy if no proxy is specified on the constructor"); 44 SimpleTest.is(connection.proxy(), Clipperz.PM.Proxy.defaultProxy, "the connection uses the defaultProxy if no proxy is specified on the constructor");
48 }); 45 });
49 46
50 deferredResult.callback(); 47 deferredResult.callback();
51 48
52 return deferredResult; 49 return deferredResult;
53 }, 50 },
54 51
55 //------------------------------------------------------------------------- 52 //-------------------------------------------------------------------------
56 53
57 'simpleProxy_tests': function () { 54 'simpleProxy_tests': function () {
58 vardeferredResult; 55 vardeferredResult;
59 56
60 deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false}); 57 deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false});
61 deferredResult.addCallback(function() { 58 deferredResult.addCallback(function() {
62 var connection; 59 var connection;
63 var proxy; 60 var proxy;
64 61
65 proxy = new Clipperz.PM.Proxy(); 62 proxy = new Clipperz.PM.Proxy();
66 connection = new Clipperz.PM.Connection.communicationProtocol.versions['current']({proxy:proxy}); 63 connection = new Clipperz.PM.Connection.communicationProtocol.versions['current']({proxy:proxy});
67 SimpleTest.is(connection.proxy(), proxy, "the connection uses the specified proxy, when present"); 64 SimpleTest.is(connection.proxy(), proxy, "the connection uses the specified proxy, when present");
68 }); 65 });
69 66
70 deferredResult.callback(); 67 deferredResult.callback();
71 68
72 return deferredResult; 69 return deferredResult;
73 }, 70 },
74 71
75 //------------------------------------------------------------------------- 72 //-------------------------------------------------------------------------
76 73
77 'login_test': function () { 74 'login_test': function () {
78 var deferredResult; 75 var deferredResult;
79 var connection; 76 var connection;
80 var proxy; 77 var proxy;
81 78
82 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:false, shouldCheckExpectedRequests:true}); 79 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:false, shouldCheckExpectedRequests:true});
83 connection = new Clipperz.PM.Connection.communicationProtocol.versions['current']({ 80 connection = new Clipperz.PM.Connection.communicationProtocol.versions['current']({
84 proxy: proxy, 81 proxy: proxy,
85 getCredentialsFunction: function() { return {username:'joe', password:'clipperz'}; } 82 getCredentialsFunction: function() { return {username:'joe', password:'clipperz'}; }
86 }); 83 });
87 84
88 deferredResult = new Clipperz.Async.Deferred("login_tests", {trace:false}); 85 deferredResult = new Clipperz.Async.Deferred("login_tests", {trace:false});
89 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']); 86 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']);
90 deferredResult.addCallback(function() { 87 deferredResult.addCallback(function() {
91 proxy.expectedRequests().unshift({ 88 proxy.expectedRequests().unshift({
92 name: "First handshake step", 89 name: "First handshake step",
93 functionName: 'handshake', 90 functionName: 'handshake',
94 parameters: { 91 parameters: {
95 parameters: { 92 parameters: {
96 message: MochiKit.Base.partial(MochiKit.Base.operator.eq, "connect"), 93 message: MochiKit.Base.partial(MochiKit.Base.operator.eq, "connect"),
97 version: MochiKit.Base.partial(MochiKit.Base.operator.eq, "0.2"), 94 version: MochiKit.Base.partial(MochiKit.Base.operator.eq, "0.2"),
98 parameters: { 95 parameters: {
99 C: MochiKit.Base.partial(MochiKit.Base.operator.eq, "f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674"), 96 C: MochiKit.Base.partial(MochiKit.Base.operator.eq, "f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674"),
100 A: MochiKit.Base.operator.truth 97 A: MochiKit.Base.operator.truth
101 } 98 }
102 } 99 }
103 } 100 }
104 }); 101 });
105 }); 102 });
106 deferredResult.addCallback(function() { 103 deferredResult.addCallback(function() {
107 proxy.expectedRequests().unshift({ 104 proxy.expectedRequests().unshift({
108 name: "Second handshake step", 105 name: "Second handshake step",
109 functionName: 'handshake', 106 functionName: 'handshake',
110 parameters: { 107 parameters: {
111 parameters: { 108 parameters: {
112 message: MochiKit.Base.partial(MochiKit.Base.operator.eq, "credentialCheck"), 109 message: MochiKit.Base.partial(MochiKit.Base.operator.eq, "credentialCheck"),
113 version: MochiKit.Base.partial(MochiKit.Base.operator.eq, "0.2"), 110 version: MochiKit.Base.partial(MochiKit.Base.operator.eq, "0.2"),
114 parameters: { 111 parameters: {
115 M1: MochiKit.Base.operator.truth 112 M1: MochiKit.Base.operator.truth
116 } 113 }
117 } 114 }
118 } 115 }
119 }); 116 });
120 }); 117 });
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Crypto.html b/frontend/gamma/tests/tests/Clipperz/PM/Crypto.html
index f95e994..044658e 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/Crypto.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Crypto.html
@@ -1,120 +1,117 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.PM.Crypto - TEST</title> 28 <title>Clipperz.PM.Crypto - TEST</title>
32 29
33 <script> 30 <script>
34 jslog_config_enabled = true; 31 jslog_config_enabled = true;
35 clipperz_profiling_enabled = true; 32 clipperz_profiling_enabled = true;
36 </script> 33 </script>
37 34
38 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 35 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
39 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 36 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
40 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 37 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
41 38
42 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 39 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
45 42
46 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
49 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 46 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
50 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
51 <script type='text/javascript' src='../../../../js/Clipperz/Profile.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/Profile.js'></script>
52 49
53 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
54 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
55 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
56 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 53 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
57 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 54 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
58 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 55 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
59 56
60 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
62 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 59 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
63 60
64 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script> 61 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script>
65<!-- 62<!--
66 <script> 63 <script>
67 MochiKit.DOM.addLoadEvent(MochiKit.Base.partial(MochiKit.LoggingPane.createLoggingPane, true)); 64 MochiKit.DOM.addLoadEvent(MochiKit.Base.partial(MochiKit.LoggingPane.createLoggingPane, true));
68 MochiKit.Logging.logger.useNativeConsole = true; 65 MochiKit.Logging.logger.useNativeConsole = true;
69 </script> 66 </script>
70--> 67-->
71</head> 68</head>
72<body> 69<body>
73<pre id="test"> 70<pre id="test">
74 71
75<script type="text/javascript"> 72<script type="text/javascript">
76 73
77 74
78Clipperz_PM_Crypt_test = function() { 75Clipperz_PM_Crypt_test = function() {
79 varkey; 76 varkey;
80 77
81 var plainData; 78 var plainData;
82 var encryptedData; 79 var encryptedData;
83 var decryptedData; 80 var decryptedData;
84 81
85 var result; 82 var result;
86 var expectedResult; 83 var expectedResult;
87 84
88 var plainText; 85 var plainText;
89 var longPlainText; 86 var longPlainText;
90 87
91 key = 'trustno1'; 88 key = 'trustno1';
92 89
93 plainText = "Lorem ipsum dolor sit amet"; 90 plainText = "Lorem ipsum dolor sit amet";
94 longPlainText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec nunc sapien, condimentum vitae, varius vel, pharetra in, augue. Mauris quam magna, pretium sit amet, accumsan id, volutpat lobortis, nibh. Fusce sagittis. Aenean justo. Curabitur euismod pede. Morbi at ante. Proin nisl leo, ultrices sed, facilisis et, nonummy sit amet, lorem. Praesent mauris tellus, pulvinar sed, nonummy vitae, rhoncus non, nunc. Proin placerat malesuada nisl. Nunc id enim. Maecenas commodo enim ac nibh. Sed condimentum, urna sit amet euismod gravida, mi urna varius odio, luctus pretium lectus justo nec felis. Ut in augue et est malesuada rhoncus. Sed vel orci. Mauris suscipit. Praesent cursus velit non turpis. Donec tristique dolor ac est. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla est sapien, vulputate eget, bibendum id, pharetra nec, mauris. Aliquam faucibus tincidunt dui. Proin iaculis. Maecenas sagittis. Integer et augue. Donec vitae urna in orci aliquet commodo. Vestibulum lorem sem, suscipit ac, placerat nec, mollis in, felis. Donec laoreet odio a mauris. Integer rutrum, sapien id varius molestie, mauris odio egestas orci, non bibendum sem felis in metus. Phasellus consectetuer lectus adipiscing mauris. Ut magna tellus, euismod ac, suscipit tincidunt, ullamcorper adipiscing, massa. Etiam orci. Phasellus a urna. Cras neque quam, laoreet at, tempus eget, euismod nec, nibh. Etiam hendrerit. Aenean vel lorem. Ut ligula lacus, congue eu, lobortis sit amet, venenatis in, magna. Nullam cursus felis quis est. Sed sem est, condimentum eu, vestibulum a, mattis vel, diam. Curabitur tincidunt pede quis pede. Sed neque diam, convallis vel, luctus at, porta id, nisl. Suspendisse potenti. Sed volutpat lobortis orci. Praesent mi. In interdum. Suspendisse suscipit ipsum eget dolor. Curabitur et tellus sed velit hendrerit varius. Cras sit amet est. Donec arcu nulla, vehicula et, pretium in, placerat id, felis. Integer mollis auctor lectus. Integer ultrices elementum sapien. Nam et erat. Nam pulvinar porta tortor. Nam at risus. Quisque nulla. Integer vestibulum, lacus id bibendum laoreet, ligula mi pharetra lorem, sit amet pharetra felis mauris quis justo. Aliquam ultricies. Duis a pede eget lorem dapibus rhoncus. Aenean eu elit non libero consectetuer viverra. Maecenas velit mi, eleifend vel, malesuada vel, condimentum quis, odio. Mauris tempus augue sed turpis. Pellentesque condimentum, lacus vitae pellentesque ultricies, risus tellus posuere nisi, et dictum turpis pede nec elit. Sed eu lectus eu justo sagittis euismod. Vestibulum lobortis, urna id mollis rhoncus, orci quam euismod ligula, at malesuada lacus magna vitae massa. Phasellus mattis fermentum velit. Nulla vulputate consequat enim. Maecenas quis neque. Curabitur sagittis facilisis neque. In elementum, eros non porttitor rhoncus, libero turpis sodales odio, vitae porta tellus purus et ante. Nullam molestie sollicitudin metus. Donec a elit. Morbi ut lacus. Donec at arcu. Quisque velit diam, interdum a, lacinia at, varius et, odio. Cras neque magna, ornare id, sollicitudin id, consequat a, est. Phasellus vestibulum est at leo. Nam facilisis, nulla dapibus condimentum pellentesque, est magna viverra ligula, at sollicitudin urna augue ut sapien. Fusce justo."; 91 longPlainText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec nunc sapien, condimentum vitae, varius vel, pharetra in, augue. Mauris quam magna, pretium sit amet, accumsan id, volutpat lobortis, nibh. Fusce sagittis. Aenean justo. Curabitur euismod pede. Morbi at ante. Proin nisl leo, ultrices sed, facilisis et, nonummy sit amet, lorem. Praesent mauris tellus, pulvinar sed, nonummy vitae, rhoncus non, nunc. Proin placerat malesuada nisl. Nunc id enim. Maecenas commodo enim ac nibh. Sed condimentum, urna sit amet euismod gravida, mi urna varius odio, luctus pretium lectus justo nec felis. Ut in augue et est malesuada rhoncus. Sed vel orci. Mauris suscipit. Praesent cursus velit non turpis. Donec tristique dolor ac est. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla est sapien, vulputate eget, bibendum id, pharetra nec, mauris. Aliquam faucibus tincidunt dui. Proin iaculis. Maecenas sagittis. Integer et augue. Donec vitae urna in orci aliquet commodo. Vestibulum lorem sem, suscipit ac, placerat nec, mollis in, felis. Donec laoreet odio a mauris. Integer rutrum, sapien id varius molestie, mauris odio egestas orci, non bibendum sem felis in metus. Phasellus consectetuer lectus adipiscing mauris. Ut magna tellus, euismod ac, suscipit tincidunt, ullamcorper adipiscing, massa. Etiam orci. Phasellus a urna. Cras neque quam, laoreet at, tempus eget, euismod nec, nibh. Etiam hendrerit. Aenean vel lorem. Ut ligula lacus, congue eu, lobortis sit amet, venenatis in, magna. Nullam cursus felis quis est. Sed sem est, condimentum eu, vestibulum a, mattis vel, diam. Curabitur tincidunt pede quis pede. Sed neque diam, convallis vel, luctus at, porta id, nisl. Suspendisse potenti. Sed volutpat lobortis orci. Praesent mi. In interdum. Suspendisse suscipit ipsum eget dolor. Curabitur et tellus sed velit hendrerit varius. Cras sit amet est. Donec arcu nulla, vehicula et, pretium in, placerat id, felis. Integer mollis auctor lectus. Integer ultrices elementum sapien. Nam et erat. Nam pulvinar porta tortor. Nam at risus. Quisque nulla. Integer vestibulum, lacus id bibendum laoreet, ligula mi pharetra lorem, sit amet pharetra felis mauris quis justo. Aliquam ultricies. Duis a pede eget lorem dapibus rhoncus. Aenean eu elit non libero consectetuer viverra. Maecenas velit mi, eleifend vel, malesuada vel, condimentum quis, odio. Mauris tempus augue sed turpis. Pellentesque condimentum, lacus vitae pellentesque ultricies, risus tellus posuere nisi, et dictum turpis pede nec elit. Sed eu lectus eu justo sagittis euismod. Vestibulum lobortis, urna id mollis rhoncus, orci quam euismod ligula, at malesuada lacus magna vitae massa. Phasellus mattis fermentum velit. Nulla vulputate consequat enim. Maecenas quis neque. Curabitur sagittis facilisis neque. In elementum, eros non porttitor rhoncus, libero turpis sodales odio, vitae porta tellus purus et ante. Nullam molestie sollicitudin metus. Donec a elit. Morbi ut lacus. Donec at arcu. Quisque velit diam, interdum a, lacinia at, varius et, odio. Cras neque magna, ornare id, sollicitudin id, consequat a, est. Phasellus vestibulum est at leo. Nam facilisis, nulla dapibus condimentum pellentesque, est magna viverra ligula, at sollicitudin urna augue ut sapien. Fusce justo.";
95 92
96 // 93 //
97 //hashing 94 //hashing
98 // 95 //
99 plainData = new Clipperz.ByteArray(plainText); 96 plainData = new Clipperz.ByteArray(plainText);
100 97
101 result = Clipperz.PM.Crypto.encryptingFunctions.versions['0.1'].hash(plainData); 98 result = Clipperz.PM.Crypto.encryptingFunctions.versions['0.1'].hash(plainData);
102 is(result.length(), (256/8), "encryptingFunctions.versions[0.1].hash generate a 256 bit signature with a short text"); 99 is(result.length(), (256/8), "encryptingFunctions.versions[0.1].hash generate a 256 bit signature with a short text");
103 100
104 result = Clipperz.PM.Crypto.encryptingFunctions.versions['0.2'].hash(plainData); 101 result = Clipperz.PM.Crypto.encryptingFunctions.versions['0.2'].hash(plainData);
105 is(result.length(), (256/8), "encryptingFunctions.versions[0.2].hash generate a 256 bit signature with a short text"); 102 is(result.length(), (256/8), "encryptingFunctions.versions[0.2].hash generate a 256 bit signature with a short text");
106 103
107 104
108 plainData = new Clipperz.ByteArray(longPlainText); 105 plainData = new Clipperz.ByteArray(longPlainText);
109 106
110 result = Clipperz.PM.Crypto.encryptingFunctions.versions['0.1'].hash(plainData); 107 result = Clipperz.PM.Crypto.encryptingFunctions.versions['0.1'].hash(plainData);
111 is(result.length(), (256/8), "encryptingFunctions.versions[0.1].hash generate a 256 bit signature with a long text"); 108 is(result.length(), (256/8), "encryptingFunctions.versions[0.1].hash generate a 256 bit signature with a long text");
112 109
113 result = Clipperz.PM.Crypto.encryptingFunctions.versions['0.2'].hash(plainData); 110 result = Clipperz.PM.Crypto.encryptingFunctions.versions['0.2'].hash(plainData);
114 is(result.length(), (256/8), "encryptingFunctions.versions[0.2].hash generate a 256 bit signature with a long text"); 111 is(result.length(), (256/8), "encryptingFunctions.versions[0.2].hash generate a 256 bit signature with a long text");
115 112
116 113
117 // 114 //
118 //encrypting / decripting 115 //encrypting / decripting
119 // 116 //
120 plainData = plainText; 117 plainData = plainText;
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Crypto_performanceEvaluation.html b/frontend/gamma/tests/tests/Clipperz/PM/Crypto_performanceEvaluation.html
index 094a58d..e8ce0bc 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/Crypto_performanceEvaluation.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Crypto_performanceEvaluation.html
@@ -1,120 +1,117 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.PM.Crypt - Performance evaluation - TEST</title> 28 <title>Clipperz.PM.Crypt - Performance evaluation - TEST</title>
32 29
33 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 31 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
35 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 32 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
36 33
37 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 34 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
38 35
39 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
43 40
44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
50 47
51 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
52 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
53 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 50 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
54 51
55<!--< script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES_other_implementation.js'>< /script> --> 52<!--< script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES_other_implementation.js'>< /script> -->
56 53
57</head> 54</head>
58<body> 55<body>
59<pre id="test"> 56<pre id="test">
60 57
61<script type="text/javascript"> 58<script type="text/javascript">
62 59
63try { 60try {
64 var key; 61 var key;
65 var shortText; 62 var shortText;
66 var longText; 63 var longText;
67 var veryLongText; 64 var veryLongText;
68 var byteArray; 65 var byteArray;
69 varplainText; 66 varplainText;
70 var encryptedText; 67 var encryptedText;
71 var decryptedText; 68 var decryptedText;
72 var startTime, endTime; 69 var startTime, endTime;
73 var startTime1, endTime1; 70 var startTime1, endTime1;
74 var ClipperzCryptoVersion; 71 var ClipperzCryptoVersion;
75 var i,c; 72 var i,c;
76 73
77 ClipperzCryptoVersion = '0.3'; 74 ClipperzCryptoVersion = '0.3';
78 Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 75 Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
79 key = 'trustno1'; 76 key = 'trustno1';
80 77
81 shortText = "Lorem ipsum dolor sit amet"; 78 shortText = "Lorem ipsum dolor sit amet";
82 longText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec nunc sapien, condimentum vitae, varius vel, pharetra in, augue. Mauris quam magna, pretium sit amet, accumsan id, volutpat lobortis, nibh. Fusce sagittis. Aenean justo. Curabitur euismod pede. Morbi at ante. Proin nisl leo, ultrices sed, facilisis et, nonummy sit amet, lorem. Praesent mauris tellus, pulvinar sed, nonummy vitae, rhoncus non, nunc. Proin placerat malesuada nisl. Nunc id enim. Maecenas commodo enim ac nibh. Sed condimentum, urna sit amet euismod gravida, mi urna varius odio, luctus pretium lectus justo nec felis. Ut in augue et est malesuada rhoncus. Sed vel orci. Mauris suscipit. Praesent cursus velit non turpis. Donec tristique dolor ac est. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla est sapien, vulputate eget, bibendum id, pharetra nec, mauris. Aliquam faucibus tincidunt dui. Proin iaculis. Maecenas sagittis. Integer et augue. Donec vitae urna in orci aliquet commodo. Vestibulum lorem sem, suscipit ac, placerat nec, mollis in, felis. Donec laoreet odio a mauris. Integer rutrum, sapien id varius molestie, mauris odio egestas orci, non bibendum sem felis in metus. Phasellus consectetuer lectus adipiscing mauris. Ut magna tellus, euismod ac, suscipit tincidunt, ullamcorper adipiscing, massa. Etiam orci. Phasellus a urna. Cras neque quam, laoreet at, tempus eget, euismod nec, nibh. Etiam hendrerit. Aenean vel lorem. Ut ligula lacus, congue eu, lobortis sit amet, venenatis in, magna. Nullam cursus felis quis est. Sed sem est, condimentum eu, vestibulum a, mattis vel, diam. Curabitur tincidunt pede quis pede. Sed neque diam, convallis vel, luctus at, porta id, nisl. Suspendisse potenti. Sed volutpat lobortis orci. Praesent mi. In interdum. Suspendisse suscipit ipsum eget dolor. Curabitur et tellus sed velit hendrerit varius. Cras sit amet est. Donec arcu nulla, vehicula et, pretium in, placerat id, felis. Integer mollis auctor lectus. Integer ultrices elementum sapien. Nam et erat. Nam pulvinar porta tortor. Nam at risus. Quisque nulla. Integer vestibulum, lacus id bibendum laoreet, ligula mi pharetra lorem, sit amet pharetra felis mauris quis justo. Aliquam ultricies. Duis a pede eget lorem dapibus rhoncus. Aenean eu elit non libero consectetuer viverra. Maecenas velit mi, eleifend vel, malesuada vel, condimentum quis, odio. Mauris tempus augue sed turpis. Pellentesque condimentum, lacus vitae pellentesque ultricies, risus tellus posuere nisi, et dictum turpis pede nec elit. Sed eu lectus eu justo sagittis euismod. Vestibulum lobortis, urna id mollis rhoncus, orci quam euismod ligula, at malesuada lacus magna vitae massa. Phasellus mattis fermentum velit. Nulla vulputate consequat enim. Maecenas quis neque. Curabitur sagittis facilisis neque. In elementum, eros non porttitor rhoncus, libero turpis sodales odio, vitae porta tellus purus et ante. Nullam molestie sollicitudin metus. Donec a elit. Morbi ut lacus. Donec at arcu. Quisque velit diam, interdum a, lacinia at, varius et, odio. Cras neque magna, ornare id, sollicitudin id, consequat a, est. Phasellus vestibulum est at leo. Nam facilisis, nulla dapibus condimentum pellentesque, est magna viverra ligula, at sollicitudin urna augue ut sapien. Fusce justo."; 79 longText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec nunc sapien, condimentum vitae, varius vel, pharetra in, augue. Mauris quam magna, pretium sit amet, accumsan id, volutpat lobortis, nibh. Fusce sagittis. Aenean justo. Curabitur euismod pede. Morbi at ante. Proin nisl leo, ultrices sed, facilisis et, nonummy sit amet, lorem. Praesent mauris tellus, pulvinar sed, nonummy vitae, rhoncus non, nunc. Proin placerat malesuada nisl. Nunc id enim. Maecenas commodo enim ac nibh. Sed condimentum, urna sit amet euismod gravida, mi urna varius odio, luctus pretium lectus justo nec felis. Ut in augue et est malesuada rhoncus. Sed vel orci. Mauris suscipit. Praesent cursus velit non turpis. Donec tristique dolor ac est. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla est sapien, vulputate eget, bibendum id, pharetra nec, mauris. Aliquam faucibus tincidunt dui. Proin iaculis. Maecenas sagittis. Integer et augue. Donec vitae urna in orci aliquet commodo. Vestibulum lorem sem, suscipit ac, placerat nec, mollis in, felis. Donec laoreet odio a mauris. Integer rutrum, sapien id varius molestie, mauris odio egestas orci, non bibendum sem felis in metus. Phasellus consectetuer lectus adipiscing mauris. Ut magna tellus, euismod ac, suscipit tincidunt, ullamcorper adipiscing, massa. Etiam orci. Phasellus a urna. Cras neque quam, laoreet at, tempus eget, euismod nec, nibh. Etiam hendrerit. Aenean vel lorem. Ut ligula lacus, congue eu, lobortis sit amet, venenatis in, magna. Nullam cursus felis quis est. Sed sem est, condimentum eu, vestibulum a, mattis vel, diam. Curabitur tincidunt pede quis pede. Sed neque diam, convallis vel, luctus at, porta id, nisl. Suspendisse potenti. Sed volutpat lobortis orci. Praesent mi. In interdum. Suspendisse suscipit ipsum eget dolor. Curabitur et tellus sed velit hendrerit varius. Cras sit amet est. Donec arcu nulla, vehicula et, pretium in, placerat id, felis. Integer mollis auctor lectus. Integer ultrices elementum sapien. Nam et erat. Nam pulvinar porta tortor. Nam at risus. Quisque nulla. Integer vestibulum, lacus id bibendum laoreet, ligula mi pharetra lorem, sit amet pharetra felis mauris quis justo. Aliquam ultricies. Duis a pede eget lorem dapibus rhoncus. Aenean eu elit non libero consectetuer viverra. Maecenas velit mi, eleifend vel, malesuada vel, condimentum quis, odio. Mauris tempus augue sed turpis. Pellentesque condimentum, lacus vitae pellentesque ultricies, risus tellus posuere nisi, et dictum turpis pede nec elit. Sed eu lectus eu justo sagittis euismod. Vestibulum lobortis, urna id mollis rhoncus, orci quam euismod ligula, at malesuada lacus magna vitae massa. Phasellus mattis fermentum velit. Nulla vulputate consequat enim. Maecenas quis neque. Curabitur sagittis facilisis neque. In elementum, eros non porttitor rhoncus, libero turpis sodales odio, vitae porta tellus purus et ante. Nullam molestie sollicitudin metus. Donec a elit. Morbi ut lacus. Donec at arcu. Quisque velit diam, interdum a, lacinia at, varius et, odio. Cras neque magna, ornare id, sollicitudin id, consequat a, est. Phasellus vestibulum est at leo. Nam facilisis, nulla dapibus condimentum pellentesque, est magna viverra ligula, at sollicitudin urna augue ut sapien. Fusce justo.";
83 veryLongText = ""; 80 veryLongText = "";
84 c = 100; 81 c = 100;
85 for (i=0; i<100; i++) { 82 for (i=0; i<100; i++) {
86 veryLongText += longText; 83 veryLongText += longText;
87 } 84 }
88 nonce = new Clipperz.ByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); 85 nonce = new Clipperz.ByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
89 86
90 87
91 //-------------------------------------------------------------- 88 //--------------------------------------------------------------
92 // 89 //
93 // longTextencryption performance 90 // longTextencryption performance
94 // 91 //
95 //-------------------------------------------------------------- 92 //--------------------------------------------------------------
96 93
97 plainText = longText; 94 plainText = longText;
98 95
99startTime = new Date(); 96startTime = new Date();
100 encryptedText = Clipperz.PM.Crypto.encryptingFunctions.versions[ClipperzCryptoVersion].encrypt(key, plainText, nonce); 97 encryptedText = Clipperz.PM.Crypto.encryptingFunctions.versions[ClipperzCryptoVersion].encrypt(key, plainText, nonce);
101endTime = new Date(); 98endTime = new Date();
102//console.log("[1] encryption time: " + (endTime - startTime)); 99//console.log("[1] encryption time: " + (endTime - startTime));
103 is((endTime - startTime < 350), true, "[1] Need to improve some more (" + (endTime - startTime) + ")"); 100 is((endTime - startTime < 350), true, "[1] Need to improve some more (" + (endTime - startTime) + ")");
104 is(encryptedText, "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", "encrypted text"); 101 is(encryptedText, "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", "encrypted text");
105 decryptedText = Clipperz.PM.Crypto.encryptingFunctions.versions[ClipperzCryptoVersion].decrypt(key, encryptedText); 102 decryptedText = Clipperz.PM.Crypto.encryptingFunctions.versions[ClipperzCryptoVersion].decrypt(key, encryptedText);
106 is(decryptedText, plainText, "encrypt <-> decrypt works (specifying the nonce)"); 103 is(decryptedText, plainText, "encrypt <-> decrypt works (specifying the nonce)");
107 104
108startTime = new Date(); 105startTime = new Date();
109 encryptedText = Clipperz.PM.Crypto.encryptingFunctions.versions[ClipperzCryptoVersion].encrypt(key, plainText); 106 encryptedText = Clipperz.PM.Crypto.encryptingFunctions.versions[ClipperzCryptoVersion].encrypt(key, plainText);
110endTime = new Date(); 107endTime = new Date();
111//console.log("[2] encryption time: " + (endTime - startTime)); 108//console.log("[2] encryption time: " + (endTime - startTime));
112 is((endTime - startTime < 350), true, "[2] Need to improve some more (" + (endTime - startTime) + ")"); 109 is((endTime - startTime < 350), true, "[2] Need to improve some more (" + (endTime - startTime) + ")");
113 decryptedText = Clipperz.PM.Crypto.encryptingFunctions.versions[ClipperzCryptoVersion].decrypt(key, encryptedText); 110 decryptedText = Clipperz.PM.Crypto.encryptingFunctions.versions[ClipperzCryptoVersion].decrypt(key, encryptedText);
114 is(decryptedText, plainText, "encrypt <-> decrypt works"); 111 is(decryptedText, plainText, "encrypt <-> decrypt works");
115 112
116 //-------------------------------------------------------------- 113 //--------------------------------------------------------------
117 // 114 //
118 // veryLongTextencryption performance 115 // veryLongTextencryption performance
119 // 116 //
120 //-------------------------------------------------------------- 117 //--------------------------------------------------------------
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Crypto_test.html b/frontend/gamma/tests/tests/Clipperz/PM/Crypto_test.html
index f5b0a60..dc01dae 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/Crypto_test.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Crypto_test.html
@@ -1,120 +1,117 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.PM.Crypto - TEST</title> 28 <title>Clipperz.PM.Crypto - TEST</title>
32 29
33 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
34 31
35 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 32 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
38 35
39 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
44 41
45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
51 48
52 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
53 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 50 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 51 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
55 52
56 53
57<!-- ================================================================================ --> <script> 54<!-- ================================================================================ --> <script>
58//MochiKit.DOM.addLoadEvent(MochiKit.Base.partial(MochiKit.LoggingPane.createLoggingPane, true)); 55//MochiKit.DOM.addLoadEvent(MochiKit.Base.partial(MochiKit.LoggingPane.createLoggingPane, true));
59//MochiKit.Logging.logger.useNativeConsole = true; 56//MochiKit.Logging.logger.useNativeConsole = true;
60 57
61//----------------------------------------------------------------------------- 58//-----------------------------------------------------------------------------
62 59
63encodePassword = function (anEvent) { 60encodePassword = function (anEvent) {
64 varusername; 61 varusername;
65 var password; 62 var password;
66 var encodedPassword; 63 var encodedPassword;
67 var srpConnection; 64 var srpConnection;
68 65
69 anEvent.stop(); 66 anEvent.stop();
70 67
71 srpConnection = new Clipperz.PM.Connection.SRP['1.1'](); 68 srpConnection = new Clipperz.PM.Connection.SRP['1.1']();
72 69
73 username = MochiKit.DOM.getElement('username').value; 70 username = MochiKit.DOM.getElement('username').value;
74 passphrase = MochiKit.DOM.getElement('passphrase').value; 71 passphrase = MochiKit.DOM.getElement('passphrase').value;
75 encodedPassword = srpConnection.normalizedCredentials({'username':username , 'password':passphrase })['password']; 72 encodedPassword = srpConnection.normalizedCredentials({'username':username , 'password':passphrase })['password'];
76 73
77 MochiKit.DOM.getElement('encodedPassword').value = encodedPassword; 74 MochiKit.DOM.getElement('encodedPassword').value = encodedPassword;
78} 75}
79 76
80//----------------------------------------------------------------------------- 77//-----------------------------------------------------------------------------
81 78
82decryptData = function (anEvent) { 79decryptData = function (anEvent) {
83 vardeferredResult; 80 vardeferredResult;
84 varkey; 81 varkey;
85 varversion; 82 varversion;
86 var value; 83 var value;
87 84
88 key = MochiKit.DOM.getElement('key').value; 85 key = MochiKit.DOM.getElement('key').value;
89 version = MochiKit.DOM.getElement('version').value; 86 version = MochiKit.DOM.getElement('version').value;
90 value = MochiKit.DOM.getElement('encryptedText').value; 87 value = MochiKit.DOM.getElement('encryptedText').value;
91 88
92 anEvent.stop(); 89 anEvent.stop();
93 90
94 deferredResult = new Clipperz.Async.Deferred("Decrypted data", {trace:false}); 91 deferredResult = new Clipperz.Async.Deferred("Decrypted data", {trace:false});
95 deferredResult.addCallback(Clipperz.PM.Crypto.deferredDecrypt, {key:key, version:version, value:value}); 92 deferredResult.addCallback(Clipperz.PM.Crypto.deferredDecrypt, {key:key, version:version, value:value});
96 deferredResult.addCallback(Clipperz.Base.serializeJSON); 93 deferredResult.addCallback(Clipperz.Base.serializeJSON);
97 deferredResult.addCallback(function (aValue) { 94 deferredResult.addCallback(function (aValue) {
98 MochiKit.DOM.getElement('decryptedText').value = aValue; 95 MochiKit.DOM.getElement('decryptedText').value = aValue;
99 }); 96 });
100 deferredResult.addErrback(alert); 97 deferredResult.addErrback(alert);
101 98
102 deferredResult.callback(); 99 deferredResult.callback();
103} 100}
104 101
105//----------------------------------------------------------------------------- 102//-----------------------------------------------------------------------------
106 103
107encryptData = function (anEvent) { 104encryptData = function (anEvent) {
108 vardeferredResult; 105 vardeferredResult;
109 varkey; 106 varkey;
110 varversion; 107 varversion;
111 var value; 108 var value;
112 109
113 key = MochiKit.DOM.getElement('key').value; 110 key = MochiKit.DOM.getElement('key').value;
114 version = MochiKit.DOM.getElement('version').value; 111 version = MochiKit.DOM.getElement('version').value;
115 value = Clipperz.Base.evalJSON(MochiKit.DOM.getElement('decryptedText').value); 112 value = Clipperz.Base.evalJSON(MochiKit.DOM.getElement('decryptedText').value);
116 113
117 anEvent.stop(); 114 anEvent.stop();
118 115
119 deferredResult = new Clipperz.Async.Deferred("Encrypted data", {trace:false}); 116 deferredResult = new Clipperz.Async.Deferred("Encrypted data", {trace:false});
120 deferredResult.addCallback(Clipperz.PM.Crypto.deferredEncrypt, {key:key, version:version, value:value}); 117 deferredResult.addCallback(Clipperz.PM.Crypto.deferredEncrypt, {key:key, version:version, value:value});
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLogin.html b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLogin.html
index e11adfd..0a5bcfb 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLogin.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLogin.html
@@ -1,103 +1,100 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.PM.DataModel.DirectLogin - test</title> 28 <title>Clipperz.PM.DataModel.DirectLogin - test</title>
32 29
33 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.js"></script> 31 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.js"></script>
35 <link rel="stylesheet" type="text/css" href="../../../../SimpleTest/test.css"> 32 <link rel="stylesheet" type="text/css" href="../../../../SimpleTest/test.css">
36 33
37 <script type='text/javascript' src='../../../../../js/JSON/json2.js'></script> 34 <script type='text/javascript' src='../../../../../js/JSON/json2.js'></script>
38 35
39 <script type='text/javascript' src='../../../../../js/Clipperz/YUI/Utils.js'></script> 36 <script type='text/javascript' src='../../../../../js/Clipperz/YUI/Utils.js'></script>
40 <script type='text/javascript' src='../../../../../js/Clipperz/Base.js'></script> 37 <script type='text/javascript' src='../../../../../js/Clipperz/Base.js'></script>
41 <script type='text/javascript' src='../../../../../js/Clipperz/Date.js'></script> 38 <script type='text/javascript' src='../../../../../js/Clipperz/Date.js'></script>
42 <script type='text/javascript' src='../../../../../js/Clipperz/ByteArray.js'></script> 39 <script type='text/javascript' src='../../../../../js/Clipperz/ByteArray.js'></script>
43 <script type='text/javascript' src='../../../../../js/Clipperz/Logging.js'></script> 40 <script type='text/javascript' src='../../../../../js/Clipperz/Logging.js'></script>
44 <script type='text/javascript' src='../../../../../js/Clipperz/Async.js'></script> 41 <script type='text/javascript' src='../../../../../js/Clipperz/Async.js'></script>
45 <script type='text/javascript' src='../../../../../js/Clipperz/Signal.js'></script> 42 <script type='text/javascript' src='../../../../../js/Clipperz/Signal.js'></script>
46 <script type='text/javascript' src='../../../../../js/Clipperz/KeyValueObjectStore.js'></script> 43 <script type='text/javascript' src='../../../../../js/Clipperz/KeyValueObjectStore.js'></script>
47 44
48 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/Base.js'></script> 45 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/Base.js'></script>
49 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/BigInt.js'></script> 46 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/BigInt.js'></script>
50 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES.js'></script> 47 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES.js'></script>
51 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SHA.js'></script> 48 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SHA.js'></script>
52 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/PRNG.js'></script> 49 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/PRNG.js'></script>
53 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SRP.js'></script> 50 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SRP.js'></script>
54 51
55 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Toll.js'></script> 52 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Toll.js'></script>
56 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy.js'></script> 53 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy.js'></script>
57 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 54 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
58 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> 55 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
59 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 56 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
60 57
61 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Connection.js'></script> 58 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Connection.js'></script>
62 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Crypto.js'></script> 59 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Crypto.js'></script>
63 60
64 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings.js'></script> 61 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings.js'></script>
65 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 62 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
66 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Date.js'></script> 63 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Date.js'></script>
67 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 64 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
68 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.js'></script> 65 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.js'></script>
69 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> 66 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script>
70 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> 67 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script>
71 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script> 68 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script>
72 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginInput.js'></script> 69 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginInput.js'></script>
73 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginBinding.js'></script> 70 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginBinding.js'></script>
74 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.js'></script> 71 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.js'></script>
75 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script> 72 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script>
76 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script> 73 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script>
77 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.Preferences.js'></script> 74 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.Preferences.js'></script>
78 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js'></script> 75 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js'></script>
79 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/OneTimePassword.js'></script> 76 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/OneTimePassword.js'></script>
80 77
81 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.Async.js"></script> 78 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.Async.js"></script>
82<script> 79<script>
83 Clipperz_IEisBroken = false; 80 Clipperz_IEisBroken = false;
84</script> 81</script>
85 82
86<!--[if IE]><script> 83<!--[if IE]><script>
87Clipperz_IEisBroken = true; 84Clipperz_IEisBroken = true;
88Clipperz_normalizedNewLine = '\x0d\x0a'; 85Clipperz_normalizedNewLine = '\x0d\x0a';
89</script><![endif]--> 86</script><![endif]-->
90 87
91</head> 88</head>
92<body> 89<body>
93 90
94<pre id="test"> 91<pre id="test">
95<script> 92<script>
96 Clipperz.PM.Strings.Languages.setSelectedLanguage('en-us'); 93 Clipperz.PM.Strings.Languages.setSelectedLanguage('en-us');
97</script> 94</script>
98<script type="text/javascript" src="User.data.js"></script> 95<script type="text/javascript" src="User.data.js"></script>
99<script type="text/javascript" src="User.data.old.js"></script> 96<script type="text/javascript" src="User.data.old.js"></script>
100<script type="text/javascript" src="DirectLogin.test.js"></script> 97<script type="text/javascript" src="DirectLogin.test.js"></script>
101</pre> 98</pre>
102</body> 99</body>
103</html> 100</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLogin.test.js b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLogin.test.js
index d385c8c..7df0971 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLogin.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLogin.test.js
@@ -1,120 +1,117 @@
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.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
30 27
31var tests = { 28var tests = {
32 29
33/* 30/*
34 user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}}); 31 user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}});
35 ... 32 ...
36 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_offline_copy_data']); 33 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_offline_copy_data']);
37 deferredResult.addMethod(user, 'getRecord', '8280842f41162b673335b63860637e8472e8bbff0efa2bc78b0dbc5e09712e13'); 34 deferredResult.addMethod(user, 'getRecord', '8280842f41162b673335b63860637e8472e8bbff0efa2bc78b0dbc5e09712e13');
38 35
39 36
40 user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}}); 37 user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}});
41 ... 38 ...
42 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']); 39 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']);
43 deferredResult.addMethod(user, 'getRecord', '5cdac63b317f3942da38f3a3de3b7f0e5d6678200951c6216230295550f63fb4'); //WEB PASSWORD (0) 40 deferredResult.addMethod(user, 'getRecord', '5cdac63b317f3942da38f3a3de3b7f0e5d6678200951c6216230295550f63fb4'); //WEB PASSWORD (0)
44 deferredResult.addMethod(user, 'getRecord', '36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113'); //DIGG (1) 41 deferredResult.addMethod(user, 'getRecord', '36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113'); //DIGG (1)
45 deferredResult.addMethod(user, 'getRecord', 'c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065'); //SAP (2) 42 deferredResult.addMethod(user, 'getRecord', 'c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065'); //SAP (2)
46 deferredResult.addMethod(user, 'getRecord', 'd5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d'); //YAHOO (4) 43 deferredResult.addMethod(user, 'getRecord', 'd5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d'); //YAHOO (4)
47 DirectLogin references 44 DirectLogin references
48 - dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496 //Yahoo! Mail 45 - dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496 //Yahoo! Mail
49 - aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584 //(Yahoo! Groups) 46 - aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584 //(Yahoo! Groups)
50 - 6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f //(Flickr) 47 - 6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f //(Flickr)
51 - a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e //(My Yahoo!) 48 - a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e //(My Yahoo!)
52*/ 49*/
53 //------------------------------------------------------------------------- 50 //-------------------------------------------------------------------------
54 51
55 'editDirectLoginLabel_test': function (someTestArgs) { 52 'editDirectLoginLabel_test': function (someTestArgs) {
56 var deferredResult; 53 var deferredResult;
57 var proxy; 54 var proxy;
58 var user; 55 var user;
59 56
60 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false}); 57 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false});
61 user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}}); 58 user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}});
62 59
63 deferredResult = new Clipperz.Async.Deferred("editDirectLoginLabel_test", someTestArgs); 60 deferredResult = new Clipperz.Async.Deferred("editDirectLoginLabel_test", someTestArgs);
64 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']); 61 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']);
65 deferredResult.addMethod(user, 'login'); 62 deferredResult.addMethod(user, 'login');
66 deferredResult.addMethod(user, 'getRecord', 'd5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d'); //YAHOO (4) 63 deferredResult.addMethod(user, 'getRecord', 'd5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d'); //YAHOO (4)
67 deferredResult.addMethodcaller('directLogins'); 64 deferredResult.addMethodcaller('directLogins');
68 deferredResult.addCallback(MochiKit.Base.itemgetter('dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496')); 65 deferredResult.addCallback(MochiKit.Base.itemgetter('dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496'));
69 deferredResult.addCallback(function (aDirectLogin) { 66 deferredResult.addCallback(function (aDirectLogin) {
70 var innerDeferredResult; 67 var innerDeferredResult;
71 var updatedLabel; 68 var updatedLabel;
72 69
73 updatedLabel = "updated Yahoo! Mail label"; 70 updatedLabel = "updated Yahoo! Mail label";
74 71
75 innerDeferredResult = new Clipperz.Async.Deferred("editDirectLoginLabel_test <inner>", someTestArgs); 72 innerDeferredResult = new Clipperz.Async.Deferred("editDirectLoginLabel_test <inner>", someTestArgs);
76 innerDeferredResult.addMethod(aDirectLogin, 'label'); 73 innerDeferredResult.addMethod(aDirectLogin, 'label');
77 innerDeferredResult.addTest("Yahoo! Mail", "The label of the selected direct login is correct."); 74 innerDeferredResult.addTest("Yahoo! Mail", "The label of the selected direct login is correct.");
78 innerDeferredResult.addMethod(aDirectLogin, 'setLabel', updatedLabel); 75 innerDeferredResult.addMethod(aDirectLogin, 'setLabel', updatedLabel);
79 76
80 innerDeferredResult.addMethod(aDirectLogin, 'label'); 77 innerDeferredResult.addMethod(aDirectLogin, 'label');
81 innerDeferredResult.addTest(updatedLabel, "The DirectLogin returns the correct label even before committing data."); 78 innerDeferredResult.addTest(updatedLabel, "The DirectLogin returns the correct label even before committing data.");
82 79
83 innerDeferredResult.addMethod(user, 'hasPendingChanges'); 80 innerDeferredResult.addMethod(user, 'hasPendingChanges');
84 innerDeferredResult.addTest(true, "When changing the label of a DirectLogin, the user should report pending changes."); 81 innerDeferredResult.addTest(true, "When changing the label of a DirectLogin, the user should report pending changes.");
85 82
86//innerDeferredResult.addCallback(function () { console.log("+_+_+_+_+_+_+_+_+_+_+_+ >>>")}); 83//innerDeferredResult.addCallback(function () { console.log("+_+_+_+_+_+_+_+_+_+_+_+ >>>")});
87 innerDeferredResult.addMethod(user, 'saveChanges'); 84 innerDeferredResult.addMethod(user, 'saveChanges');
88//innerDeferredResult.addCallback(function () { console.log("+_+_+_+_+_+_+_+_+_+_+_+ <<<")}); 85//innerDeferredResult.addCallback(function () { console.log("+_+_+_+_+_+_+_+_+_+_+_+ <<<")});
89 innerDeferredResult.addMethod(user, 'hasPendingChanges'); 86 innerDeferredResult.addMethod(user, 'hasPendingChanges');
90 innerDeferredResult.addTest(false, "After saving changes there should be no pending changes left."); 87 innerDeferredResult.addTest(false, "After saving changes there should be no pending changes left.");
91 88
92 innerDeferredResult.addMethod(aDirectLogin, 'label'); 89 innerDeferredResult.addMethod(aDirectLogin, 'label');
93 innerDeferredResult.addTest(updatedLabel, "The DirectLogin returns the correct label even after committing data."); 90 innerDeferredResult.addTest(updatedLabel, "The DirectLogin returns the correct label even after committing data.");
94 91
95 innerDeferredResult.callback(); 92 innerDeferredResult.callback();
96 93
97 return innerDeferredResult; 94 return innerDeferredResult;
98 }) 95 })
99 96
100 deferredResult.callback(); 97 deferredResult.callback();
101 98
102 return deferredResult; 99 return deferredResult;
103 }, 100 },
104 101
105 //------------------------------------------------------------------------- 102 //-------------------------------------------------------------------------
106 103
107 'editDirectLoginLabel_thanResetItToThePreviousValue_test': function (someTestArgs) { 104 'editDirectLoginLabel_thanResetItToThePreviousValue_test': function (someTestArgs) {
108 var deferredResult; 105 var deferredResult;
109 var proxy; 106 var proxy;
110 var user; 107 var user;
111 108
112 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false}); 109 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false});
113 user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}}); 110 user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}});
114 111
115 deferredResult = new Clipperz.Async.Deferred("editDirectLoginLabel_thanResetItToThePreviousValue_test", someTestArgs); 112 deferredResult = new Clipperz.Async.Deferred("editDirectLoginLabel_thanResetItToThePreviousValue_test", someTestArgs);
116 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']); 113 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']);
117 deferredResult.addMethod(user, 'login'); 114 deferredResult.addMethod(user, 'login');
118 deferredResult.addMethod(user, 'getRecord', 'd5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d'); //YAHOO (4) 115 deferredResult.addMethod(user, 'getRecord', 'd5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d'); //YAHOO (4)
119 deferredResult.addMethodcaller('directLogins'); 116 deferredResult.addMethodcaller('directLogins');
120 deferredResult.addCallback(MochiKit.Base.itemgetter('dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496')); 117 deferredResult.addCallback(MochiKit.Base.itemgetter('dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496'));
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLoginConfigurations.data.js b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLoginConfigurations.data.js
index 6c0bf49..1678515 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLoginConfigurations.data.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/DirectLoginConfigurations.data.js
@@ -1,33 +1,30 @@
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
29directLoginConfigurations = { 26directLoginConfigurations = {
30 'Yahoo! Mail':'{\n "page": {\n "title": "Yahoo! Mail"\n },\n "form": {\n "attributes": {\n "action": "https://login.yahoo.com/config/login?",\n "method": "post"\n },\n "inputs": [\n {\n "type": "hidden",\n "name": ".tries",\n "value": "1"\n },\n {\n "type": "hidden",\n "name": ".src",\n "value": "ym"\n },\n {\n "type": "hidden",\n "name": ".md5",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".hash",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".js",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".last",\n "value": ""\n },\n {\n "type": "hidden",\n "name": "promo",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".intl",\n "value": "us"\n },\n {\n "type": "hidden",\n "name": ".bypass",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".partner",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".u",\n "value": "5gp62cl2vg3ov"\n },\n {\n "type": "hidden",\n "name": ".v",\n "value": "0"\n },\n {\n "type": "hidden",\n "name": ".challenge",\n "value": "iBEY0IK6k3t9Uals32mrTos8s48p"\n },\n {\n "type": "hidden",\n "name": ".yplus",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".emailCode",\n "value": ""\n },\n {\n "type": "hidden",\n "name": "pkg",\n "value": ""\n },\n {\n "type": "hidden",\n "name": "stepid",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".ev",\n "value": ""\n },\n {\n "type": "hidden",\n "name": "hasMsgr",\n "value": "0"\n },\n {\n "type": "hidden",\n "name": ".chkP",\n "value": "Y"\n },\n {\n "type": "hidden",\n "name": ".done",\n "value": "http://mail.yahoo.com"\n },\n {\n "type": "hidden",\n "name": ".pd",\n "value": "ym_ver%3d0%26c="\n },\n {\n "type": "text",\n "name": "login",\n "value": ""\n },\n {\n "type": "password",\n "name": "passwd",\n "value": ""\n },\n {\n "type": "checkbox",\n "name": ".persistent",\n "value": "y"\n },\n {\n "type": "submit",\n "name": ".save",\n "value": "Sign In"\n }\n ]\n },\n "version": "0.2"\n}', 27 'Yahoo! Mail':'{\n "page": {\n "title": "Yahoo! Mail"\n },\n "form": {\n "attributes": {\n "action": "https://login.yahoo.com/config/login?",\n "method": "post"\n },\n "inputs": [\n {\n "type": "hidden",\n "name": ".tries",\n "value": "1"\n },\n {\n "type": "hidden",\n "name": ".src",\n "value": "ym"\n },\n {\n "type": "hidden",\n "name": ".md5",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".hash",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".js",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".last",\n "value": ""\n },\n {\n "type": "hidden",\n "name": "promo",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".intl",\n "value": "us"\n },\n {\n "type": "hidden",\n "name": ".bypass",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".partner",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".u",\n "value": "5gp62cl2vg3ov"\n },\n {\n "type": "hidden",\n "name": ".v",\n "value": "0"\n },\n {\n "type": "hidden",\n "name": ".challenge",\n "value": "iBEY0IK6k3t9Uals32mrTos8s48p"\n },\n {\n "type": "hidden",\n "name": ".yplus",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".emailCode",\n "value": ""\n },\n {\n "type": "hidden",\n "name": "pkg",\n "value": ""\n },\n {\n "type": "hidden",\n "name": "stepid",\n "value": ""\n },\n {\n "type": "hidden",\n "name": ".ev",\n "value": ""\n },\n {\n "type": "hidden",\n "name": "hasMsgr",\n "value": "0"\n },\n {\n "type": "hidden",\n "name": ".chkP",\n "value": "Y"\n },\n {\n "type": "hidden",\n "name": ".done",\n "value": "http://mail.yahoo.com"\n },\n {\n "type": "hidden",\n "name": ".pd",\n "value": "ym_ver%3d0%26c="\n },\n {\n "type": "text",\n "name": "login",\n "value": ""\n },\n {\n "type": "password",\n "name": "passwd",\n "value": ""\n },\n {\n "type": "checkbox",\n "name": ".persistent",\n "value": "y"\n },\n {\n "type": "submit",\n "name": ".save",\n "value": "Sign In"\n }\n ]\n },\n "version": "0.2"\n}',
31 'Parallels':'{"page": {"title": "Parallels Account"},\n"form": {"attributes": {"action": "https://www.parallels.com/account/",\n"method": "post"},\n"inputs": [{"type": "text",\n"name": "Email",\n"value": ""},\n{"type": "password",\n"name": "Password",\n"value": ""}]},\n"version": "0.2.3"}', 28 'Parallels':'{"page": {"title": "Parallels Account"},\n"form": {"attributes": {"action": "https://www.parallels.com/account/",\n"method": "post"},\n"inputs": [{"type": "text",\n"name": "Email",\n"value": ""},\n{"type": "password",\n"name": "Password",\n"value": ""}]},\n"version": "0.2.3"}',
32 __syntaxFix__: "syntax fix" 29 __syntaxFix__: "syntax fix"
33}; \ No newline at end of file 30}; \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.html b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.html
index 699c06d..3297ab4 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.html
@@ -1,66 +1,63 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.PM.DataModel.EncryptedRemoteObject - test</title> 28 <title>Clipperz.PM.DataModel.EncryptedRemoteObject - test</title>
32 29
33 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.js"></script> 31 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.js"></script>
35 <link rel="stylesheet" type="text/css" href="../../../../SimpleTest/test.css"> 32 <link rel="stylesheet" type="text/css" href="../../../../SimpleTest/test.css">
36 33
37 <script type='text/javascript' src='../../../../../js/JSON/json2.js'></script> 34 <script type='text/javascript' src='../../../../../js/JSON/json2.js'></script>
38 35
39 <script type='text/javascript' src='../../../../../js/Clipperz/YUI/Utils.js'></script> 36 <script type='text/javascript' src='../../../../../js/Clipperz/YUI/Utils.js'></script>
40 <script type='text/javascript' src='../../../../../js/Clipperz/Base.js'></script> 37 <script type='text/javascript' src='../../../../../js/Clipperz/Base.js'></script>
41 <script type='text/javascript' src='../../../../../js/Clipperz/ByteArray.js'></script> 38 <script type='text/javascript' src='../../../../../js/Clipperz/ByteArray.js'></script>
42 <script type='text/javascript' src='../../../../../js/Clipperz/Logging.js'></script> 39 <script type='text/javascript' src='../../../../../js/Clipperz/Logging.js'></script>
43 <script type='text/javascript' src='../../../../../js/Clipperz/Async.js'></script> 40 <script type='text/javascript' src='../../../../../js/Clipperz/Async.js'></script>
44 <script type='text/javascript' src='../../../../../js/Clipperz/Signal.js'></script> 41 <script type='text/javascript' src='../../../../../js/Clipperz/Signal.js'></script>
45 <script type='text/javascript' src='../../../../../js/Clipperz/KeyValueObjectStore.js'></script> 42 <script type='text/javascript' src='../../../../../js/Clipperz/KeyValueObjectStore.js'></script>
46 43
47 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/Base.js'></script> 44 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/Base.js'></script>
48 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/BigInt.js'></script> 45 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/BigInt.js'></script>
49 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES.js'></script> 46 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES.js'></script>
50 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SHA.js'></script> 47 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SHA.js'></script>
51 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/PRNG.js'></script> 48 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/PRNG.js'></script>
52 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SRP.js'></script> 49 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SRP.js'></script>
53 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy.js'></script> 50 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy.js'></script>
54 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Connection.js'></script> 51 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Connection.js'></script>
55 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Crypto.js'></script> 52 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Crypto.js'></script>
56 53
57 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 54 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
58 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.Async.js"></script> 55 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.Async.js"></script>
59</head> 56</head>
60<body> 57<body>
61 58
62<pre id="test"> 59<pre id="test">
63<script type="text/javascript" src="EncryptedRemoteObject.test.js"></script> 60<script type="text/javascript" src="EncryptedRemoteObject.test.js"></script>
64</pre> 61</pre>
65</body> 62</body>
66</html> 63</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.test.js b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.test.js
index 0a4fe0c..9c50c43 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/EncryptedRemoteObject.test.js
@@ -1,120 +1,117 @@
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.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
30 27
31var tests = { 28var tests = {
32 29
33 //------------------------------------------------------------------------- 30 //-------------------------------------------------------------------------
34 31
35 'simple_tests': function(someTestArgs) { 32 'simple_tests': function(someTestArgs) {
36 vardeferredResult; 33 vardeferredResult;
37 varencryptedRemoteObject; 34 varencryptedRemoteObject;
38 35
39 varkey; 36 varkey;
40 var version; 37 var version;
41 var rawData; 38 var rawData;
42 39
43 key = "just a random key"; 40 key = "just a random key";
44 version = Clipperz.PM.Crypto.encryptingFunctions.currentVersion; 41 version = Clipperz.PM.Crypto.encryptingFunctions.currentVersion;
45 rawData = "just a random text to encrypt"; 42 rawData = "just a random text to encrypt";
46 43
47 encryptedRemoteObject = new Clipperz.PM.DataModel.EncryptedRemoteObject({ 44 encryptedRemoteObject = new Clipperz.PM.DataModel.EncryptedRemoteObject({
48 'retrieveKeyFunction': MochiKit.Base.noop, 45 'retrieveKeyFunction': MochiKit.Base.noop,
49 'retrieveRemoteDataFunction':function () { return "--"}, 46 'retrieveRemoteDataFunction':function () { return "--"},
50 'encryptedDataKeypath': '--', 47 'encryptedDataKeypath': '--',
51 'encryptedVersionKeypath': '--' 48 'encryptedVersionKeypath': '--'
52 }); 49 });
53 SimpleTest.ok(encryptedRemoteObject != null, "create an encryptedRemoteObject"); 50 SimpleTest.ok(encryptedRemoteObject != null, "create an encryptedRemoteObject");
54 51
55 deferredResult = Clipperz.Async.callbacks("EncryptedRemoteObject.test - simple_tests", [ 52 deferredResult = Clipperz.Async.callbacks("EncryptedRemoteObject.test - simple_tests", [
56 MochiKit.Base.method(encryptedRemoteObject, 'getRemoteData'), 53 MochiKit.Base.method(encryptedRemoteObject, 'getRemoteData'),
57 function(aResult) { 54 function(aResult) {
58 SimpleTest.is(aResult, "--", "setting and getting serverData works"); 55 SimpleTest.is(aResult, "--", "setting and getting serverData works");
59 } 56 }
60 ], someTestArgs); 57 ], someTestArgs);
61 58
62 return deferredResult; 59 return deferredResult;
63 }, 60 },
64 61
65 //------------------------------------------------------------------------- 62 //-------------------------------------------------------------------------
66 63
67 'decrypt_test': function (someTestArgs) { 64 'decrypt_test': function (someTestArgs) {
68 vardeferredResult; 65 vardeferredResult;
69 varencryptedRemoteObject; 66 varencryptedRemoteObject;
70 varkey; 67 varkey;
71 var version; 68 var version;
72 var rawData; 69 var rawData;
73 70
74 key = "just a random key"; 71 key = "just a random key";
75 version = Clipperz.PM.Crypto.encryptingFunctions.currentVersion; 72 version = Clipperz.PM.Crypto.encryptingFunctions.currentVersion;
76 rawData = "just a random text to encrypt"; 73 rawData = "just a random text to encrypt";
77 74
78 encryptedRemoteObject = new Clipperz.PM.DataModel.EncryptedRemoteObject({ 75 encryptedRemoteObject = new Clipperz.PM.DataModel.EncryptedRemoteObject({
79 'retrieveKeyFunction': MochiKit.Base.partial(MochiKit.Async.succeed, key), 76 'retrieveKeyFunction': MochiKit.Base.partial(MochiKit.Async.succeed, key),
80 'retrieveRemoteDataFunction':MochiKit.Base.partial(Clipperz.Async.callbacks, "EncryptedRemoteObject.test - decrypt_test <encrypt data>", [ 77 'retrieveRemoteDataFunction':MochiKit.Base.partial(Clipperz.Async.callbacks, "EncryptedRemoteObject.test - decrypt_test <encrypt data>", [
81 MochiKit.Base.partial(Clipperz.PM.Crypto.deferredEncrypt, {key:key, value:rawData, version:version}), 78 MochiKit.Base.partial(Clipperz.PM.Crypto.deferredEncrypt, {key:key, value:rawData, version:version}),
82 function (someEncryptedData) { 79 function (someEncryptedData) {
83 return { 80 return {
84 'data': someEncryptedData, 81 'data': someEncryptedData,
85 'version': version 82 'version': version
86 } 83 }
87 } 84 }
88 ], someTestArgs)//, 85 ], someTestArgs)//,
89 // 'encryptedDataKeypath': 'data', 86 // 'encryptedDataKeypath': 'data',
90 // 'encryptedVersionKeypath': 'version' 87 // 'encryptedVersionKeypath': 'version'
91 }); 88 });
92 89
93 deferredResult = new Clipperz.Async.Deferred("decrypt_test", someTestArgs); 90 deferredResult = new Clipperz.Async.Deferred("decrypt_test", someTestArgs);
94 deferredResult.addMethod(encryptedRemoteObject, 'getDecryptedData'); 91 deferredResult.addMethod(encryptedRemoteObject, 'getDecryptedData');
95 deferredResult.addCallback(function (aResult) { 92 deferredResult.addCallback(function (aResult) {
96 SimpleTest.is(aResult, rawData, "encrypt and decrypt works"); 93 SimpleTest.is(aResult, rawData, "encrypt and decrypt works");
97 }) 94 })
98 deferredResult.callback(); 95 deferredResult.callback();
99 96
100 return deferredResult; 97 return deferredResult;
101 }, 98 },
102 99
103 //------------------------------------------------------------------------- 100 //-------------------------------------------------------------------------
104 101
105 'getValue_test': function (someTestArgs) { 102 'getValue_test': function (someTestArgs) {
106 vardeferredResult; 103 vardeferredResult;
107 varencryptedRemoteObject; 104 varencryptedRemoteObject;
108 varkey; 105 varkey;
109 var version; 106 var version;
110 var rawData; 107 var rawData;
111 108
112 key = "just a random key"; 109 key = "just a random key";
113 version = Clipperz.PM.Crypto.encryptingFunctions.currentVersion; 110 version = Clipperz.PM.Crypto.encryptingFunctions.currentVersion;
114 rawData = { 111 rawData = {
115 key1: 'value1', 112 key1: 'value1',
116 key2: 'value2' 113 key2: 'value2'
117 }; 114 };
118 115
119 encryptedRemoteObject = new Clipperz.PM.DataModel.EncryptedRemoteObject({ 116 encryptedRemoteObject = new Clipperz.PM.DataModel.EncryptedRemoteObject({
120 'reference': "testReference", 117 'reference': "testReference",
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/OneTimePassword.html b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/OneTimePassword.html
index a9bac22..7861b80 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/OneTimePassword.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/OneTimePassword.html
@@ -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
29<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.PM.DataModel.User - test</title> 28 <title>Clipperz.PM.DataModel.User - test</title>
32 29
33 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.js"></script> 31 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.js"></script>
35 <link rel="stylesheet" type="text/css" href="../../../../SimpleTest/test.css"> 32 <link rel="stylesheet" type="text/css" href="../../../../SimpleTest/test.css">
36 33
37 <script type='text/javascript' src='../../../../../js/JSON/json2.js'></script> 34 <script type='text/javascript' src='../../../../../js/JSON/json2.js'></script>
38 35
39 <script type='text/javascript' src='../../../../../js/Clipperz/YUI/Utils.js'></script> 36 <script type='text/javascript' src='../../../../../js/Clipperz/YUI/Utils.js'></script>
40 <script type='text/javascript' src='../../../../../js/Clipperz/Base.js'></script> 37 <script type='text/javascript' src='../../../../../js/Clipperz/Base.js'></script>
41 <script type='text/javascript' src='../../../../../js/Clipperz/Date.js'></script> 38 <script type='text/javascript' src='../../../../../js/Clipperz/Date.js'></script>
42 <script type='text/javascript' src='../../../../../js/Clipperz/ByteArray.js'></script> 39 <script type='text/javascript' src='../../../../../js/Clipperz/ByteArray.js'></script>
43 <script type='text/javascript' src='../../../../../js/Clipperz/Logging.js'></script> 40 <script type='text/javascript' src='../../../../../js/Clipperz/Logging.js'></script>
44 <script type='text/javascript' src='../../../../../js/Clipperz/Async.js'></script> 41 <script type='text/javascript' src='../../../../../js/Clipperz/Async.js'></script>
45 <script type='text/javascript' src='../../../../../js/Clipperz/Signal.js'></script> 42 <script type='text/javascript' src='../../../../../js/Clipperz/Signal.js'></script>
46 <script type='text/javascript' src='../../../../../js/Clipperz/KeyValueObjectStore.js'></script> 43 <script type='text/javascript' src='../../../../../js/Clipperz/KeyValueObjectStore.js'></script>
47 44
48 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/Base.js'></script> 45 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/Base.js'></script>
49 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/BigInt.js'></script> 46 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/BigInt.js'></script>
50 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES.js'></script> 47 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES.js'></script>
51 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SHA.js'></script> 48 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SHA.js'></script>
52 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/PRNG.js'></script> 49 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/PRNG.js'></script>
53 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SRP.js'></script> 50 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SRP.js'></script>
54 51
55 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Toll.js'></script> 52 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Toll.js'></script>
56 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy.js'></script> 53 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy.js'></script>
57 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 54 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
58 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> 55 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
59 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 56 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
60 57
61 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Connection.js'></script> 58 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Connection.js'></script>
62 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Crypto.js'></script> 59 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Crypto.js'></script>
63 60
64 <script type='text/javascript' src='../../../../../js/Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js'></script> 61 <script type='text/javascript' src='../../../../../js/Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js'></script>
65 62
66 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings.js'></script> 63 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings.js'></script>
67 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 64 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
68 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Date.js'></script> 65 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Date.js'></script>
69 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 66 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
70 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.js'></script> 67 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.js'></script>
71 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> 68 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script>
72 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> 69 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script>
73 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script> 70 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script>
74 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginInput.js'></script> 71 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginInput.js'></script>
75 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginBinding.js'></script> 72 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginBinding.js'></script>
76 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginFormValue.js'></script> 73 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginFormValue.js'></script>
77 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.js'></script> 74 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.js'></script>
78 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script> 75 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script>
79 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script> 76 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script>
80 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.Preferences.js'></script> 77 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.Preferences.js'></script>
81 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js'></script> 78 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js'></script>
82 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/OneTimePassword.js'></script> 79 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/OneTimePassword.js'></script>
83 80
84 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.Async.js"></script> 81 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.Async.js"></script>
85<script> 82<script>
86 Clipperz_IEisBroken = false; 83 Clipperz_IEisBroken = false;
87</script> 84</script>
88 85
89<!--[if IE]><script> 86<!--[if IE]><script>
90Clipperz_IEisBroken = true; 87Clipperz_IEisBroken = true;
91Clipperz_normalizedNewLine = '\x0d\x0a'; 88Clipperz_normalizedNewLine = '\x0d\x0a';
92</script><![endif]--> 89</script><![endif]-->
93 90
94</head> 91</head>
95<body> 92<body>
96 93
97<pre id="test"> 94<pre id="test">
98<script> 95<script>
99 Clipperz.PM.Strings.Languages.setSelectedLanguage('en-us'); 96 Clipperz.PM.Strings.Languages.setSelectedLanguage('en-us');
100</script> 97</script>
101<script type="text/javascript" src="User.data.js"></script> 98<script type="text/javascript" src="User.data.js"></script>
102<script type="text/javascript" src="OneTimePassword.test.js"></script> 99<script type="text/javascript" src="OneTimePassword.test.js"></script>
103</pre> 100</pre>
104</body> 101</body>
105</html> 102</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/OneTimePassword.test.js b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/OneTimePassword.test.js
index 0171714..85aae4e 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/OneTimePassword.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/OneTimePassword.test.js
@@ -1,120 +1,117 @@
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.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
30 27
31var tests = { 28var tests = {
32 29
33 //------------------------------------------------------------------------- 30 //-------------------------------------------------------------------------
34 31
35 'isValidOneTimePasswordValue_test': function (someTestArgs) { 32 'isValidOneTimePasswordValue_test': function (someTestArgs) {
36 var otp; 33 var otp;
37 var notOTP; 34 var notOTP;
38 35
39 otp = 'yaxx k7ww - f8y6 tqz5 - 58b6 th44 - 9cwv q0fg'; 36 otp = 'yaxx k7ww - f8y6 tqz5 - 58b6 th44 - 9cwv q0fg';
40 SimpleTest.is(Clipperz.PM.DataModel.OneTimePassword.isValidOneTimePasswordValue(otp), true, "isValidOneTimePasswordValue [expect true] - test 1"); 37 SimpleTest.is(Clipperz.PM.DataModel.OneTimePassword.isValidOneTimePasswordValue(otp), true, "isValidOneTimePasswordValue [expect true] - test 1");
41 38
42 notOTP = 'trustno1'; 39 notOTP = 'trustno1';
43 SimpleTest.is(Clipperz.PM.DataModel.OneTimePassword.isValidOneTimePasswordValue(notOTP), false, "isValidOneTimePasswordValue [expect false] - test 1"); 40 SimpleTest.is(Clipperz.PM.DataModel.OneTimePassword.isValidOneTimePasswordValue(notOTP), false, "isValidOneTimePasswordValue [expect false] - test 1");
44 41
45 return MochiKit.Async.succeed('done'); 42 return MochiKit.Async.succeed('done');
46 }, 43 },
47 44
48 //------------------------------------------------------------------------- 45 //-------------------------------------------------------------------------
49 46
50 'loginUsingOtp_test': function (someTestArgs) { 47 'loginUsingOtp_test': function (someTestArgs) {
51 var deferredResult; 48 var deferredResult;
52 var proxy; 49 var proxy;
53 var user, user2; 50 var user, user2;
54 var username; 51 var username;
55 var passphrase; 52 var passphrase;
56 53
57 username = "test"; 54 username = "test";
58 passphrase = "yaxx k7ww - f8y6 tqz5 - 58b6 th44 - 9cwv q0fg"; //OTP 55 passphrase = "yaxx k7ww - f8y6 tqz5 - 58b6 th44 - 9cwv q0fg"; //OTP
59 56
60 proxy =new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false}); 57 proxy =new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false});
61 user =new Clipperz.PM.DataModel.User({username:username, getPassphraseFunction:function () { return passphrase;}}); 58 user =new Clipperz.PM.DataModel.User({username:username, getPassphraseFunction:function () { return passphrase;}});
62 user2 =new Clipperz.PM.DataModel.User({username:username, getPassphraseFunction:function () { return passphrase;}}); 59 user2 =new Clipperz.PM.DataModel.User({username:username, getPassphraseFunction:function () { return passphrase;}});
63 60
64 deferredResult = new Clipperz.Async.Deferred("loginUsingOtp_test", someTestArgs); 61 deferredResult = new Clipperz.Async.Deferred("loginUsingOtp_test", someTestArgs);
65 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_with_otps']); 62 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_with_otps']);
66 63
67 deferredResult.addMethod(user, 'login'); 64 deferredResult.addMethod(user, 'login');
68 deferredResult.addMethod(user, 'getRecords'); 65 deferredResult.addMethod(user, 'getRecords');
69 deferredResult.addCallback(MochiKit.Base.itemgetter('length')); 66 deferredResult.addCallback(MochiKit.Base.itemgetter('length'));
70 deferredResult.addTest(1, "This account has one single card"); 67 deferredResult.addTest(1, "This account has one single card");
71 68
72 deferredResult.addMethod(user, 'getOneTimePasswords'); 69 deferredResult.addMethod(user, 'getOneTimePasswords');
73 deferredResult.addCallback(MochiKit.Base.itemgetter('length')); 70 deferredResult.addCallback(MochiKit.Base.itemgetter('length'));
74 deferredResult.addTest(1, "This account has one OTP"); 71 deferredResult.addTest(1, "This account has one OTP");
75 72
76 deferredResult.addMethod(user, 'getOneTimePasswords'); 73 deferredResult.addMethod(user, 'getOneTimePasswords');
77 deferredResult.addCallback(MochiKit.Base.itemgetter(0)); 74 deferredResult.addCallback(MochiKit.Base.itemgetter(0));
78 deferredResult.addCallback(MochiKit.Base.methodcaller('status')); 75 deferredResult.addCallback(MochiKit.Base.methodcaller('status'));
79 deferredResult.addTest('USED', "The available OTP has been unsed to login, and should be marked accordingly"); 76 deferredResult.addTest('USED', "The available OTP has been unsed to login, and should be marked accordingly");
80 77
81 deferredResult.addMethod(user2, 'login'); 78 deferredResult.addMethod(user2, 'login');
82 deferredResult.shouldFail("trying to login using the same OTP twice"); 79 deferredResult.shouldFail("trying to login using the same OTP twice");
83 80
84 deferredResult.callback(); 81 deferredResult.callback();
85 82
86 return deferredResult; 83 return deferredResult;
87 }, 84 },
88 85
89 //------------------------------------------------------------------------- 86 //-------------------------------------------------------------------------
90 87
91 'changePassphraseAndLoginUsingOtp_test': function (someTestArgs) { 88 'changePassphraseAndLoginUsingOtp_test': function (someTestArgs) {
92 var deferredResult; 89 var deferredResult;
93 var proxy; 90 var proxy;
94 var user; 91 var user;
95 var user2; 92 var user2;
96 var user3; 93 var user3;
97 var otp; 94 var otp;
98 95
99 otp = "yaxx k7ww - f8y6 tqz5 - 58b6 th44 - 9cwv q0fg"; //OTP 96 otp = "yaxx k7ww - f8y6 tqz5 - 58b6 th44 - 9cwv q0fg"; //OTP
100 97
101 newPassphrase = 'tset'; 98 newPassphrase = 'tset';
102 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false}); 99 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false});
103 user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}}); 100 user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}});
104 user2 = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return otp;}}); 101 user2 = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return otp;}});
105 102
106 deferredResult = new Clipperz.Async.Deferred("changePassphraseAndLoginUsingOtp_test", someTestArgs); 103 deferredResult = new Clipperz.Async.Deferred("changePassphraseAndLoginUsingOtp_test", someTestArgs);
107 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_with_otps']); 104 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_with_otps']);
108 105
109 deferredResult.addMethod(user, 'login'); 106 deferredResult.addMethod(user, 'login');
110 107
111 deferredResult.addMethod(user, 'getRecords'); 108 deferredResult.addMethod(user, 'getRecords');
112 deferredResult.addCallback(MochiKit.Base.itemgetter('length')); 109 deferredResult.addCallback(MochiKit.Base.itemgetter('length'));
113 deferredResult.addTest(1, "This account has only a single card"); 110 deferredResult.addTest(1, "This account has only a single card");
114 111
115 deferredResult.addMethod(user, 'changePassphrase', newPassphrase); 112 deferredResult.addMethod(user, 'changePassphrase', newPassphrase);
116 deferredResult.addMethod(user, 'logout'); 113 deferredResult.addMethod(user, 'logout');
117 114
118 deferredResult.addMethod(user2, 'login'); 115 deferredResult.addMethod(user2, 'login');
119 deferredResult.addMethod(user2, 'getRecords'); 116 deferredResult.addMethod(user2, 'getRecords');
120 deferredResult.addCallback(MochiKit.Base.itemgetter('length')); 117 deferredResult.addCallback(MochiKit.Base.itemgetter('length'));
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.html b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.html
index c349e0d..3685a7a 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.html
@@ -1,98 +1,95 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.PM.DataModel.Record - test</title> 28 <title>Clipperz.PM.DataModel.Record - test</title>
32 29
33 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.js"></script> 31 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.js"></script>
35 <link rel="stylesheet" type="text/css" href="../../../../SimpleTest/test.css"> 32 <link rel="stylesheet" type="text/css" href="../../../../SimpleTest/test.css">
36 33
37 <script type='text/javascript' src='../../../../../js/JSON/json2.js'></script> 34 <script type='text/javascript' src='../../../../../js/JSON/json2.js'></script>
38 35
39 <script type='text/javascript' src='../../../../../js/Clipperz/YUI/Utils.js'></script> 36 <script type='text/javascript' src='../../../../../js/Clipperz/YUI/Utils.js'></script>
40 <script type='text/javascript' src='../../../../../js/Clipperz/Base.js'></script> 37 <script type='text/javascript' src='../../../../../js/Clipperz/Base.js'></script>
41 <script type='text/javascript' src='../../../../../js/Clipperz/Date.js'></script> 38 <script type='text/javascript' src='../../../../../js/Clipperz/Date.js'></script>
42 <script type='text/javascript' src='../../../../../js/Clipperz/ByteArray.js'></script> 39 <script type='text/javascript' src='../../../../../js/Clipperz/ByteArray.js'></script>
43 <script type='text/javascript' src='../../../../../js/Clipperz/Logging.js'></script> 40 <script type='text/javascript' src='../../../../../js/Clipperz/Logging.js'></script>
44 <script type='text/javascript' src='../../../../../js/Clipperz/Async.js'></script> 41 <script type='text/javascript' src='../../../../../js/Clipperz/Async.js'></script>
45 <script type='text/javascript' src='../../../../../js/Clipperz/Signal.js'></script> 42 <script type='text/javascript' src='../../../../../js/Clipperz/Signal.js'></script>
46 <script type='text/javascript' src='../../../../../js/Clipperz/KeyValueObjectStore.js'></script> 43 <script type='text/javascript' src='../../../../../js/Clipperz/KeyValueObjectStore.js'></script>
47 44
48 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/Base.js'></script> 45 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/Base.js'></script>
49 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/BigInt.js'></script> 46 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/BigInt.js'></script>
50 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES.js'></script> 47 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES.js'></script>
51 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SHA.js'></script> 48 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SHA.js'></script>
52 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/PRNG.js'></script> 49 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/PRNG.js'></script>
53 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SRP.js'></script> 50 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SRP.js'></script>
54 51
55 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Toll.js'></script> 52 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Toll.js'></script>
56 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings.js'></script> 53 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings.js'></script>
57 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 54 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
58 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Date.js'></script> 55 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Date.js'></script>
59 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy.js'></script> 56 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy.js'></script>
60 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 57 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
61 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> 58 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
62 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 59 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
63 60
64 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Connection.js'></script> 61 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Connection.js'></script>
65 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Crypto.js'></script> 62 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Crypto.js'></script>
66 63
67 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings.js'></script> 64 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings.js'></script>
68 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 65 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
69 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Date.js'></script> 66 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Date.js'></script>
70 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 67 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
71 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.js'></script> 68 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.js'></script>
72 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> 69 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script>
73 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> 70 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script>
74 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script> 71 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script>
75 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginInput.js'></script> 72 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginInput.js'></script>
76 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginBinding.js'></script> 73 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginBinding.js'></script>
77 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginFormValue.js'></script> 74 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginFormValue.js'></script>
78 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.js'></script> 75 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.js'></script>
79 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script> 76 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script>
80 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script> 77 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script>
81 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.Preferences.js'></script> 78 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.Preferences.js'></script>
82 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js'></script> 79 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js'></script>
83 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/OneTimePassword.js'></script> 80 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/OneTimePassword.js'></script>
84 81
85 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.Async.js"></script> 82 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.Async.js"></script>
86</head> 83</head>
87<body> 84<body>
88 85
89<pre id="test"> 86<pre id="test">
90<script> 87<script>
91 Clipperz.PM.Strings.Languages.setSelectedLanguage('en-us'); 88 Clipperz.PM.Strings.Languages.setSelectedLanguage('en-us');
92</script> 89</script>
93<script type="text/javascript" src="DirectLoginConfigurations.data.js"></script> 90<script type="text/javascript" src="DirectLoginConfigurations.data.js"></script>
94<script type="text/javascript" src="User.data.js"></script> 91<script type="text/javascript" src="User.data.js"></script>
95<script type="text/javascript" src="Record.test.js"></script> 92<script type="text/javascript" src="Record.test.js"></script>
96</pre> 93</pre>
97</body> 94</body>
98</html> 95</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.test.js b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.test.js
index 7d024d9..667e2ae 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/Record.test.js
@@ -1,120 +1,117 @@
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.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
30 27
31var tests = { 28var tests = {
32 29
33 //------------------------------------------------------------------------- 30 //-------------------------------------------------------------------------
34 31
35 'recordUseOf_retrieveIndexDataFunction_and_getRemoteDataFunction_test': function (someTestArgs) { 32 'recordUseOf_retrieveIndexDataFunction_and_getRemoteDataFunction_test': function (someTestArgs) {
36 var deferredResult; 33 var deferredResult;
37 var record; 34 var record;
38 35
39//console.log("#### new Clipperz.PM.DataModel.Record [5]"); 36//console.log("#### new Clipperz.PM.DataModel.Record [5]");
40 record = new Clipperz.PM.DataModel.Record({ 37 record = new Clipperz.PM.DataModel.Record({
41 'reference': '<<< record reference >>>', 38 'reference': '<<< record reference >>>',
42 'retrieveKeyFunction': MochiKit.Base.noop, 39 'retrieveKeyFunction': MochiKit.Base.noop,
43 'retrieveRemoteDataFunction': function (aRecordReference) { 40 'retrieveRemoteDataFunction': function (aRecordReference) {
44 SimpleTest.is(aRecordReference, '<<< record reference >>>', "Record correctly passes its record reference when asking for encrypted data"); 41 SimpleTest.is(aRecordReference, '<<< record reference >>>', "Record correctly passes its record reference when asking for encrypted data");
45 return MochiKit.Async.succeed({ 42 return MochiKit.Async.succeed({
46 // fake server payload 43 // fake server payload
47 'data': "#### fake encrypted data ####", 44 'data': "#### fake encrypted data ####",
48 'version': "0.x", 45 'version': "0.x",
49 'currentVersion': { 46 'currentVersion': {
50 'reference': "<<< fake record version reference >>>", 47 'reference': "<<< fake record version reference >>>",
51 'data': "#### fake encrypted data ####", 48 'data': "#### fake encrypted data ####",
52 'version': "0.x" 49 'version': "0.x"
53 } 50 }
54 }); 51 });
55 }, 52 },
56 'updateDate': "Thu, 10 May 2007 13:01:21 UTC", 53 'updateDate': "Thu, 10 May 2007 13:01:21 UTC",
57 // 'encryptedDataKeypath': 'data', 54 // 'encryptedDataKeypath': 'data',
58 // 'encryptedVersionKeypath': 'version', 55 // 'encryptedVersionKeypath': 'version',
59 56
60 'retrieveIndexDataFunction':function (aRecordReference) { 57 'retrieveIndexDataFunction':function (aRecordReference) {
61 SimpleTest.is(aRecordReference, '<<< record reference >>>', "Record correctly passes its record reference when asking for index data"); 58 SimpleTest.is(aRecordReference, '<<< record reference >>>', "Record correctly passes its record reference when asking for index data");
62 return MochiKit.Async.succeed({ 59 return MochiKit.Async.succeed({
63 key:'<< key >>', 60 key:'<< key >>',
64 label:'<< label >>', 61 label:'<< label >>',
65 notes:'<< notes >>' 62 notes:'<< notes >>'
66 }); 63 });
67 }, 64 },
68 'updateIndexDataFunction': MochiKit.Base.noop 65 'updateIndexDataFunction': MochiKit.Base.noop
69 66
70 }); 67 });
71 68
72 deferredResult = new Clipperz.Async.Deferred("recordUseOf_retrieveIndexDataFunction_and_getEncryptedDataFunction_test", someTestArgs); 69 deferredResult = new Clipperz.Async.Deferred("recordUseOf_retrieveIndexDataFunction_and_getEncryptedDataFunction_test", someTestArgs);
73 deferredResult.addMethod(record, 'label'); 70 deferredResult.addMethod(record, 'label');
74 deferredResult.addTest('<< label >>', "Record returns the right value for label"); 71 deferredResult.addTest('<< label >>', "Record returns the right value for label");
75 deferredResult.addMethod(record, 'notes'); 72 deferredResult.addMethod(record, 'notes');
76 deferredResult.addTest('<< notes >>', "Record returns the right value for notes - even the legacy one, stored on the header"); 73 deferredResult.addTest('<< notes >>', "Record returns the right value for notes - even the legacy one, stored on the header");
77 deferredResult.addMethod(record, 'getRemoteData'); 74 deferredResult.addMethod(record, 'getRemoteData');
78 deferredResult.addCallback(Clipperz.Async.Test.isDeeply({ 'data': "#### fake encrypted data ####", 'version': "0.x", 'currentVersion': { 'reference': "<<< fake record version reference >>>", 'data': "#### fake encrypted data ####", 'version': "0.x" } }, "Record returns the expected encrypted data")); 75 deferredResult.addCallback(Clipperz.Async.Test.isDeeply({ 'data': "#### fake encrypted data ####", 'version': "0.x", 'currentVersion': { 'reference': "<<< fake record version reference >>>", 'data': "#### fake encrypted data ####", 'version': "0.x" } }, "Record returns the expected encrypted data"));
79 deferredResult.callback(); 76 deferredResult.callback();
80 77
81 return deferredResult; 78 return deferredResult;
82 }, 79 },
83 80
84 //------------------------------------------------------------------------- 81 //-------------------------------------------------------------------------
85 82
86 'createRecordWithoutAllRequiredParameters_test': function (someTestArgs) { 83 'createRecordWithoutAllRequiredParameters_test': function (someTestArgs) {
87 varrecord; 84 varrecord;
88 85
89 try { 86 try {
90//console.log("#### new Clipperz.PM.DataModel.Record [6]"); 87//console.log("#### new Clipperz.PM.DataModel.Record [6]");
91 record = new Clipperz.PM.DataModel.Record({reference:'--'}); 88 record = new Clipperz.PM.DataModel.Record({reference:'--'});
92 SimpleTest.ok(false, "creating a record without all parameters should raise an exception"); 89 SimpleTest.ok(false, "creating a record without all parameters should raise an exception");
93 } catch(exception) { 90 } catch(exception) {
94 // SimpleTest.is(exception.name, "Clipperz.Base.exception.MandatoryParameter", "creating a record without all parameters raises an exception"); 91 // SimpleTest.is(exception.name, "Clipperz.Base.exception.MandatoryParameter", "creating a record without all parameters raises an exception");
95 SimpleTest.ok(/Clipperz\.Base\.exception\.MandatoryParameter.*/.test(exception.name), "creating a record without all parameters raises an exception"); 92 SimpleTest.ok(/Clipperz\.Base\.exception\.MandatoryParameter.*/.test(exception.name), "creating a record without all parameters raises an exception");
96 } 93 }
97 }, 94 },
98 95
99 //------------------------------------------------------------------------- 96 //-------------------------------------------------------------------------
100 97
101 'recordFromOldData_version_0.1_test': function (someTestArgs) { 98 'recordFromOldData_version_0.1_test': function (someTestArgs) {
102 var deferredResult; 99 var deferredResult;
103 var proxy; 100 var proxy;
104 var user; 101 var user;
105 var recordID; 102 var recordID;
106 103
107//console.log("#### new Clipperz.PM.DataModel.Record [7]"); 104//console.log("#### new Clipperz.PM.DataModel.Record [7]");
108/* 105/*
109 record = new Clipperz.PM.DataModel.Record({ 106 record = new Clipperz.PM.DataModel.Record({
110 'reference':'05aad20ee399b11ddc923e601fcd1d096233634f2ad4c55db4f6435e5f9cc17a', 107 'reference':'05aad20ee399b11ddc923e601fcd1d096233634f2ad4c55db4f6435e5f9cc17a',
111 'retrieveKeyFunction': MochiKit.Base.partial(MochiKit.Async.succeed, 'e038652297f981d5ca917d88fa2c4c3251a12c0fa41bf7313a4d24a9738fe6c6'), 108 'retrieveKeyFunction': MochiKit.Base.partial(MochiKit.Async.succeed, 'e038652297f981d5ca917d88fa2c4c3251a12c0fa41bf7313a4d24a9738fe6c6'),
112 'retrieveRemoteDataFunction':MochiKit.Base.partial(MochiKit.Async.succeed, { 109 'retrieveRemoteDataFunction':MochiKit.Base.partial(MochiKit.Async.succeed, {
113 'data': '4ec19a7093534e7dcf7c796b889283c6cec224b1895720ba3ff43ce091dc72c61fd5ea56def418ba3f15239f73228c6c8558585311f5e6673efe57482a1f9c9fe71e921576989eace671ec543685e3ad8f976bbfa4c2dbc629fab936c227d4fd4da3a1561ea79e553bae7b758ff91762572c1448a2d18bec797e12721238ef5ba18ddf1fba8ae773a8debe1040b3b158220aec6be9c7190687139f589a30d9c8887792fd7040e3c7cf3f9999fb9dde1f9f334d17c996996d538a7e374ac93135acafdaf5fce738a1702182897b63d2cb8e308b94156473cba63dcc557d17dcbdb55fcff63d9ba5edf68c42855052e34207d6fabe94fe024c3db616b45f494da42c62224d3897e320080072cc442d4212e7b1e8d5b3d9e3c25d48f4e7c37112ef4c6b2c0c8aff0bd3ce05694370e4378701463dde26c7c0322f8a9eb5a724106039b16b35050a9a9b5717b2eec803efa962b88b9655742f5e7b180ea567449671fb5a2ce563d8b47bc25705821938192eae420391c208182a788dd06fb6448b9858a4104a14efd7717671c65cd08fd979a4da7c01712bc5d4e949a10ef1ea65caf1f07cee34b063bab01bfb7a59047fef30c3059ea652f1c92b9e72aac515ac8851756703772e1fa05384ee7f0d5c7a3c', 110 'data': '4ec19a7093534e7dcf7c796b889283c6cec224b1895720ba3ff43ce091dc72c61fd5ea56def418ba3f15239f73228c6c8558585311f5e6673efe57482a1f9c9fe71e921576989eace671ec543685e3ad8f976bbfa4c2dbc629fab936c227d4fd4da3a1561ea79e553bae7b758ff91762572c1448a2d18bec797e12721238ef5ba18ddf1fba8ae773a8debe1040b3b158220aec6be9c7190687139f589a30d9c8887792fd7040e3c7cf3f9999fb9dde1f9f334d17c996996d538a7e374ac93135acafdaf5fce738a1702182897b63d2cb8e308b94156473cba63dcc557d17dcbdb55fcff63d9ba5edf68c42855052e34207d6fabe94fe024c3db616b45f494da42c62224d3897e320080072cc442d4212e7b1e8d5b3d9e3c25d48f4e7c37112ef4c6b2c0c8aff0bd3ce05694370e4378701463dde26c7c0322f8a9eb5a724106039b16b35050a9a9b5717b2eec803efa962b88b9655742f5e7b180ea567449671fb5a2ce563d8b47bc25705821938192eae420391c208182a788dd06fb6448b9858a4104a14efd7717671c65cd08fd979a4da7c01712bc5d4e949a10ef1ea65caf1f07cee34b063bab01bfb7a59047fef30c3059ea652f1c92b9e72aac515ac8851756703772e1fa05384ee7f0d5c7a3c',
114 'version': '0.1', 111 'version': '0.1',
115 'currentVersion': { 112 'currentVersion': {
116 'reference': '05aad20ee399b11ddc923e601fcd1d096233634f2ad4c55db4f6435e5f9cc17a', 113 'reference': '05aad20ee399b11ddc923e601fcd1d096233634f2ad4c55db4f6435e5f9cc17a',
117 'data': '4ec19a7093534e7dcf7c796b889283c6cec224b1895720ba3ff43ce091dc72c61fd5ea56def418ba3f15239f73228c6c8558585311f5e6673efe57482a1f9c9fe71e921576989eace671ec543685e3ad8f976bbfa4c2dbc629fab936c227d4fd4da3a1561ea79e553bae7b758ff91762572c1448a2d18bec797e12721238ef5ba18ddf1fba8ae773a8debe1040b3b158220aec6be9c7190687139f589a30d9c8887792fd7040e3c7cf3f9999fb9dde1f9f334d17c996996d538a7e374ac93135acafdaf5fce738a1702182897b63d2cb8e308b94156473cba63dcc557d17dcbdb55fcff63d9ba5edf68c42855052e34207d6fabe94fe024c3db616b45f494da42c62224d3897e320080072cc442d4212e7b1e8d5b3d9e3c25d48f4e7c37112ef4c6b2c0c8aff0bd3ce05694370e4378701463dde26c7c0322f8a9eb5a724106039b16b35050a9a9b5717b2eec803efa962b88b9655742f5e7b180ea567449671fb5a2ce563d8b47bc25705821938192eae420391c208182a788dd06fb6448b9858a4104a14efd7717671c65cd08fd979a4da7c01712bc5d4e949a10ef1ea65caf1f07cee34b063bab01bfb7a59047fef30c3059ea652f1c92b9e72aac515ac8851756703772e1fa05384ee7f0d5c7a3c', 114 'data': '4ec19a7093534e7dcf7c796b889283c6cec224b1895720ba3ff43ce091dc72c61fd5ea56def418ba3f15239f73228c6c8558585311f5e6673efe57482a1f9c9fe71e921576989eace671ec543685e3ad8f976bbfa4c2dbc629fab936c227d4fd4da3a1561ea79e553bae7b758ff91762572c1448a2d18bec797e12721238ef5ba18ddf1fba8ae773a8debe1040b3b158220aec6be9c7190687139f589a30d9c8887792fd7040e3c7cf3f9999fb9dde1f9f334d17c996996d538a7e374ac93135acafdaf5fce738a1702182897b63d2cb8e308b94156473cba63dcc557d17dcbdb55fcff63d9ba5edf68c42855052e34207d6fabe94fe024c3db616b45f494da42c62224d3897e320080072cc442d4212e7b1e8d5b3d9e3c25d48f4e7c37112ef4c6b2c0c8aff0bd3ce05694370e4378701463dde26c7c0322f8a9eb5a724106039b16b35050a9a9b5717b2eec803efa962b88b9655742f5e7b180ea567449671fb5a2ce563d8b47bc25705821938192eae420391c208182a788dd06fb6448b9858a4104a14efd7717671c65cd08fd979a4da7c01712bc5d4e949a10ef1ea65caf1f07cee34b063bab01bfb7a59047fef30c3059ea652f1c92b9e72aac515ac8851756703772e1fa05384ee7f0d5c7a3c',
118 'version': '0.1' 115 'version': '0.1'
119 } 116 }
120 117
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.data.js b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.data.js
index 5684dbd..96c6962 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.data.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.data.js
@@ -1,120 +1,117 @@
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
29testData = { 26testData = {
30 27
31 //----------------------------------------------------------------------------- 28 //-----------------------------------------------------------------------------
32 29
33 'simpleLogin_001': function () { return { 30 'simpleLogin_001': function () { return {
34 'users': [ 31 'users': [
35 { 32 {
36 'username': "joe", 33 'username': "joe",
37 'passphrase': "eoj", 34 'passphrase': "eoj",
38 'version': "0.2", 35 'version': "0.2",
39 'connectionVersion':"0.2", 36 'connectionVersion':"0.2",
40 'records':{ 37 'records':{
41 'record 1': { 38 'record 1': {
42 'notes':"Some notes here", 39 'notes':"Some notes here",
43 'fields':[ 40 'fields':[
44 { 'name': "username", 'value': "joe", 'type': "text" }, 41 { 'name': "username", 'value': "joe", 'type': "text" },
45 { 'name': "password", 'value': "1234", 'type': "password"} 42 { 'name': "password", 'value': "1234", 'type': "password"}
46 ], 43 ],
47 'directLogins':{ 44 'directLogins':{
48 "record 1 direct login": { 45 "record 1 direct login": {
49 'configuration':"", 46 'configuration':"",
50 'bindings':[ 47 'bindings':[
51 ], 48 ],
52 'favicon':"http://www.example.com/favicon.ico" 49 'favicon':"http://www.example.com/favicon.ico"
53 } 50 }
54 } 51 }
55 } 52 }
56 }, 53 },
57 'otp':[ 54 'otp':[
58 "12345678 90abcdef 12345678 90abcdef", 55 "12345678 90abcdef 12345678 90abcdef",
59 "fedcba09 87654321 fedcba09 87654321" 56 "fedcba09 87654321 fedcba09 87654321"
60 ] 57 ]
61 } 58 }
62 ] 59 ]
63 };}(), 60 };}(),
64 61
65 //----------------------------------------------------------------------------- 62 //-----------------------------------------------------------------------------
66 63
67 'joe_clipperz_offline_copy_data': function () { return { 64 'joe_clipperz_offline_copy_data': function () { return {
68 users:{ 65 users:{
69 'catchAllUser': { 66 'catchAllUser': {
70 __masterkey_test_value__: 'masterkey', 67 __masterkey_test_value__: 'masterkey',
71 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00', 68 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00',
72 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00' 69 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00'
73 }, 70 },
74 'f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674': { 71 'f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674': {
75 s: '186f0c40bf73f2af236eaa6c429df225efa933050c9aae65240e93b7b362e3ee', 72 s: '186f0c40bf73f2af236eaa6c429df225efa933050c9aae65240e93b7b362e3ee',
76 v: 'ac61a6e325ecf329926a86084f591d8852d0ad3e4a6080f2adc901b82395ecaf', 73 v: 'ac61a6e325ecf329926a86084f591d8852d0ad3e4a6080f2adc901b82395ecaf',
77 version: '0.2', 74 version: '0.2',
78 maxNumberOfRecords: '100', 75 maxNumberOfRecords: '100',
79 userDetails: '{"records":{"index":{"eeda70e0392261967bda71c3764da78989c45bbd2bb7be6b941b90f81d9b81b5":"0","13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551":"1","062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80":"2","ca01bcb7691f70818feed46c9a2a91883ac543997a395535aedbb49de166690c":"3","507f38b06d587d8889698ae1ebbba7ef8f0539b82550dd25779fd9ee88fc0c7a":"4","d5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d":"5","de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4":"6","d620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045":"7","f215d89bf4583c12f5ed4f4330f488dad3fffa448f4dc784f15ef135dda2c732":"8","36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113":"9","fe21497ef7435d31f9746c132e4b5ecf5aac5f13b5961ddb55d2bdc3409f28f6":"10","6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18":"11","9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291":"12","6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a":"13","6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728":"14","8b18e8593b5bc2f7ea39a5fab222047034ef2f380fee05be0fa6e1c0972fea39":"15","084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d":"16","7bb69b6366a8012f181c01e368ba18d4f7a82bcabb4959189736ad124c4bbfbb":"17","5cdac63b317f3942da38f3a3de3b7f0e5d6678200951c6216230295550f63fb4":"18","c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065":"19"},"data":"6tqzHY7/lB/JVfDi3iJ7BIJTiX1Fih//aTUF7IDoLdlnafC9hoIQ/5lGk+/Ezilw59n11ocPN31aOA9ddFGc9oa2vQ1BdymV8F91sWGLGyWft+PRCWOqxy7U1XxvbgyRbCs0mbtSLp/qlC6gewnAXJpH6KT9oURIjKkyaR8jJ7ng6IlfGUIL2KUFnAv6KNoWO5cdXDU0nrrdSYehcApmXYlTyreHDbrFlLJ2YuR9JLvw9bDxXi/xBY1wZgwiUsGVlG3j0e4f63mJVrpmPI1jhaXD3BQD8cbl96l1ImhYe1Boz53gLq94KSk+3bkjG4GRhvlDPtvk8vdSZPsYPsbC0Cu0M4TMS70nPX7qNj5LDvzrd+S+zDj1/CW0yctRThXstrxDyG/L75k/xdZcVbMzXQHQR4OwWWFiqGOnLpyiZIHGfV5+xZ1a1uxT9TPDoDdwPuE5P1Uwh3PeGc9jatk3waQN6fo3g8PQrCOtPn7C7b6y4MEjpAG4e53HFb0B/hEfK6ApycT6QAglsA3qF/tZyZbwNCwert4pG52rIG/PODZ1XxVZHFX8VFWeSxuk/jnPpJg/pvfpRzBMyCGVDJb/i+dlwFcnOAVvqju5xXJk4mu05XrngF10NzHnVRMfxwXmdtTDYE/lDuODy1SiE5yBZlt/Ff6a0eMS/P8HLsUS8+dtz9yOIQ8rh+52nVS7F5tFWXFOvT7nfq1L4HaHCigY187Jk0Y3LCsZW6ziB5qhKZlbQxdCAx5UDNWNs/F59qxVWP5k2UagBgAJoh+iMTZAMWkaURqQxY84SVYIkm9vNZv6Jf+ppFJNn6s3ZZSUe8gmmgMPJP0Lmoh/VCPNypzR+sZULfVFpmPmNXfaAOQ875iDgvUuBWsDSBdyx2+8Q+fUO0w+W4WkDM09VGmFxrHHjfpRsOT1B3dVFti2ypyiCdkvm878pvTS2j4Obweh6+bmzE7lqOXJgtQUydKNZIb3hNbjB7LwPro6e70ctm3eM9OLFT73u+khVM2UtAhfMseEb+Ny+PldW+VgXnHFm8n5CDBHoDJPXBfJq60l6+1OnDPfB+7tIgnCVH56CZ0jFX2EbxWS63xAHNLttfMtxdbkf4AbpanqLJvNiU4P0ThW4+VNRKBid0v78WC40rWX4UTEv9HPvUA5JUsj1v6+I5UI+quCUfx0vQgeO/gAlI0YuVgDBB1ouWUSES9+U9QIGoUsVTHDo4ZOEInsnhjPbz+IFyRMoMfbiYx3gviHluxHNGYsIMFxo+yB8aW/CedyWYt54ijgViPIXhH+R8bMgFBX4JX6hu8l3NMSYvMV82ua9Pnyl7NxbwuL1S/0JAp2uh0OzGMX9iOOcFWqbWVAX7NCePAG4VTJ0wZ2iL/MUGAVG72qBWvCb1ckavQc1LTw8l2vPG6YwFf0frFHsVvZsGHRptswFTp+77U1bpn/TL2MUXJQ9gQWgCQHxE+STunbJDDWOe9FZeKkJgjqQQ2E70UFoyUp4U/H1fA5Sy9+gS8QMtOcPJ6tCbcIXnq1nif+6bDBjtQCofs59Mm7ibwnofXPGkWv8Id3SyhW9YZCYhJZss2dkMyWfqw4jDysWxQAHjxZg4qgVXA9xpwuhu7O82vMOutk7vPyEuJ4gqlDroN4aPecD405YOEXWeWrWsL2V3y5PwXBrYWq22XzJeL3PvS9usj1Vg2TtG2O3HLuB6Rm6+i7kraiRbENemst4MjLrZwYjI07ZD7DUifsrUvjA50JXXb8pjudYqwUrTKOzcE/uZ1WbSbm+2x8PYVimLtDE4/lOp34J07WV7ZxJL8yk4J4CYRxLnnS7xps8skfy6glRA8fTKRVLv+9VqVxJgE3X/G8Kfosd9K03DJbD+L+h3kvLAAZ6Xr6FpbnA5HeGXzfQ/k5lBqIS39iqT2kZKMxIOXhfwmmuTSS25nk7hD+0R1TdnnTOYQrEn8bdyPuFXzd08FxN9KSYm2H1Gdg+2h+N9UWTED7zXmv/H+gfzk5gfoNOKyWWoaEFT/NL3ky6ApzuiokUj3x+xvCwOXoozLHXhdeZYtYkIu1HlYWQx1YAk2ilg47nnRhQQaYjMvIHfsdYjdb1CpGO5K1dYlRBOCMttp+j5QVz/jCSeCrMh8dtu9ZGLEZ3QL06tqmXp03fCsvKOG0it/KuNG5EJpfb6bV+5DsZvI6k4VLXjcKvZhhh+VZSf2mr+mzFEGKBSeleZvii2g8dVyaEBms37SBFCdIwkMxFRmzo/n+1m8axx9o57NPwISU4q8eAjUK2bWrBECZaI4FwLqmlGK9hMPGB/lbrcuHtlqmv5qzo2TJb5/xoX0LyJB/FZVk5Wsm8vC+O8b7o6JDxaPkOgy07+p8Sg9wuKVy6hHrFRnZ+MEZO3Bbk74omg4+6y4HVuRCgxztzRyUiYTssFphqKBsC/e6fQN0QtSwhLSld/B5qoPMn/9CMs8UxmRbA2Ekwi+7Ss51YsWNmd8dKUqxMKWFZOQYe2dbvcYbRwKwjrARxR7d5aaQr8b96hKsWs0YkLQDn71C3AQfEUvClvDXJdJ97B9WkDHz/DQ9EaIp9+4ZSl3SIrew09vUkvUSVGU7egHzv1Oe2gf4jI/3zToRq307AzCT1tF4k0VbInDFKb8YSG35UaJAtfTENvkAQ+8KmR3gQyHRupLi6D8TNvy/03n8naG8BV8+EArzmUAgxmfv3PTipnn3bdsaIFK1+uldQXVUoHm7PgZidzOHpNXvNzgrL3c3gv7Et/s="},"directLogins":{"index":{"61e87fdc4f1d9112e3b30c1f6812d095dcdb24f014c83319091eb6c9899ec348":"0","989593d4c48929f0c8f1581aa96969c622807e99619ed4732026e967530a68ad":"1","9f7979368fa29f66c44bd97ecaf6c545abc800b1c7bb21b7655a68e1514c3906":"2","dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496":"3","aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584":"4","1f9bfd677b531a03168d3f8bd8afabb5357244a7bc355dff50bd6c0a072114a6":"5","a48e38845713462ecc9f827149eeaae87da882031f98ef8ebbf9ee9537b63468":"6","6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f":"7","2df54059e78f5771f23bd285cce19595b38331b73d67020424d9a1b2257db09c":"8","065cd0c270e5e8ce50e4ea8e3828dccdae18c01ab030813d756a87d03fe68784":"9","ddbc8d01300a4f10631cbde09e1246332eade3a877a2205209f9eb9e5bc9da0b":"10","9b7a30e667afc9f76ba77600658b2c13bff52432d444261d39bf3d069a160afe":"11","9fd2929cde3d32d9cbc5f1d787f2f64729a5e12a14410556b31c0c099762c46a":"12","f695fc36ac56bead80c0d20a88e01e382819c18dc268f1679551b7c83db7cb14":"13","f22dc41ffabef4b3bc8f7af804fec975bd50718098322a673cbe4aaff9464ae1":"14","03251dc1cbc5398789e4c4b45c52cfac3fcd8c1a4f19a81fa68fc6feae31d55c":"15","a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e":"16","cb9ae0bba1957075ccdbfd3b3481704d62087687a2ac7c411a4f07d444bde0f7":"17","7e1d069b7fa57c03bd7bf48807520feb953157834503aaff8c9d493f37dea69d":"18","24404059cabc63b2dbff0f42ba57183108b8189ef53ab62fa25141a1caea824b":"19","33cf9758477460a8056deef0295a1ebe65b39b392c361ceb920a83edacfe5d78":"20","e9a16316f330e3d150f6ffd194f6fd8acd1426757b097de4b88ca0db875202e4":"21"},"data":"xuiWbu5GjkueQhyH6sKg5Cn9/CSsPIjYgbhaHmjgwnnB+GL8UO5u0uURxTY6tkG2HbaFRpYZwLnqUUulEkVY6iNqJajFI0qDtrKams11cF2y9LaAalbqyv6U7EUt76d666DkXW8tf88nJ4HYfyAhhPCJ0cw5053K9BAVPbQM7fMA4MYY29k45U3HcIKNZcNqMftCc+fZB+fmZl1g7mSbrXaZyagRkwWwTdJ6/ecVOSSVOkWpckAaQWzGhwbO6zVWLtR9XQReIQZV52TwDMnV5IYJHnlw0Uvv2ZCVSu/oMN2TneW5fcIwQ0x/SRe+n4Mklzucpvasza+ZhRaRUFS53kvmbfPFI5tXqB3Z1+9S7LRLr9Ws97suTQ6G5eW6jKT2vf65ehnQJtA/gW6uwH+3IAT7ukFxO1knaRf7dRJDLuIc4Xnh+bRDnZUqfA+B+04pp6r0OS9oysD35t/HydVFeHgoyMCbL4RzduZvmu7y16WhIznn0DEfRmrYmC68C+DNcAbxeiXU8v14PgGycIg1++0v44Qor/BXfP5JW4WnYjVLW3aXN3FgI5rPuN6PqTzMn7z+eF2V28GNss5pui1xIbR2bTECAAnaRQiaz98F1LH4z5kYG1ehmyjIOLqz1nAv3Kuo7+DZKaSez4nX1oWznbXEnwd6uguukcCGpQllZoHYso/fz07e6p/9fskXPmg7LnMMHApP7Vay6XPhXV/AG0imU7uREFLbgnw3305Ey9fslmD8qCzi8LlqNALEt1TFNpAukvqodkv8V1o6zqzYNMSKaqJV4E9dWMNDpOFFTKv1FuZjZfzyPwyCcePgP7vcJGtUSYqRJwl56Ia8UA+l3FBiX8DCSW3GkG+wusf7bZ5kV6lV5DQJTScIyFxWwcECJ5S8/2QaBPTopeLo2NuMmFwjUwhBGVrDkUmtqjfb6DSfr/dR6AbmraRLXrpd/KUN7wWgp5GdLUAKNT+RdsUc0mLsLF3oT+XshfgfsQqi/pDnX9x3QfH/WuRtoywAIE5APU8Rnl+1NGsEidzeYrBnryA8VRi9vxfhuaxe3+rx1ewB1pgVSERPLF+0MYtetug01yRSxEUYJgYHxQmfnmkCoz+kKCejdpYVqKC+RzhjIMytRbFXNmS0NpRmtBxZrSIskKXjjwjUeEzMAttqAPC4IK1kt5IK+5NZPNZbf2Y8qDsWcBNXfw5sh7pJymRwPCge+S5Jy69tadeSAWpX1YMuq+By/o2KWawpokstxmE6w2RNPFhKXtGPvukoDnpV9wDFgBcoNDJctDVdIPqNolLxn6Y57HoOid6CO2s+PqQcfZSEo7V70Rk6OQ+02M0ED0/4XGq6vflc6IlQ5LO1urRT4INrAQmWdulHnmLf+HESJAc0ZICO1T73aQVaGVVHFQxDMVgaTer1UXP1xxfB1tazfJme2aycsDM1WS5lTwMRRlvgwupkzS+YwGq+nB1QFsZknKgeoacGYxQjFo6EGvszitNU+sK4U/EeAShS/nM/96c10awZVwQnal5T9sYOO31mA2pxyI4TwxkgWw2wkj38msz+8afHvPlFlqlU0UiEm7hYMj5s4L08msIY+GVc7tGgaRYklsnRFUU6s0Kql8BLPkbpdM9RAoSczy4tlGlaBAPeC6ouPgyNf1+VRfVZnqlPF063ok1KcEbd6QqQHo0kgsUMLbtdPbe752dmUo64sZXkuDKISmFEwQjn3SN4K7OOg9sk5QEz1STMvm8pazq1yb+0CE1iad5e+HoNkrGT+5GSVX+YShiItu5eyZXjZ7m8GQ2HZTA7mgv6FwGSI6o0URPIRk/UgKMCggTSat2gf3oVk+aZvRCvkGg+ISjkEKk49tQasLDAfvVjdue2JHpM1UwNhTlurHNasqnwNEzFzhflsMuM+V7dv/6/3AiJBUSC9Oyd/kWRpt5DS0nW+BkBcL5eBoofyssj0tAqxpWe+nNwCL9ljVPdytQCHWp71xEqnDxSq1KWV7u57MmBSaGStdyWtShBvEQdHQIDpXz8HVfOWOxQKttNYkupVJcbYhHNicwLzc3Ox1TaT/trfkmTXT80XXfQA83Ls1VVsYKjHDBT5/bIOx3IzjS0KNl7C5E8BuggSL69t8ogHSOKwH9CugZje3vj0BuzhZsl65k1i/pNS+vYwOifv6BhhbgWS6D2s9+a1Xi5YLGLE/EvMlw82N+o/owUluZ2vhekbYJ0HkuyrL+18l0L5B+8iJS62LzdD+hC93cGxqD9RVQA37yxzpN33l2y6teSrypYU7j2hMVv1l0Y6JU0l5itSdWT3VmWyHzdKLYNFjpA2WY3UgvsWRTJfFYzFEYUu2V6OqY7HzUiuKcVTYwB5Ky2qESzmIFiLRv0E9E+fVoYTKjk8v2gDaNwKWq7AJTabgeNaQVif3lUdZ1oQerb6aRc7PBBBKBD1YE3S8+wJ6C4MIs+XIxuJvjhhbOav5Q+G9Tk251dlt44cWQ61sCPi5pCMAgzcwRH2+ZQOZeYslt6g4XS3TorVlHveIpQkBOPvzO3fUkfUQzKPZ1QXFIBZnTLLIcsV+L/tt5kep9ucrqUjNcREPODf+nM/mQlfLGT8SLU9r2zMFkMm4zXNWswWTsXO7zm1YEErAtyggWff6gM66wz1dnNMiVXMQ=="},"preferences":{"data":"EZMrwxNFFd1sMGycoYE7IrlGGrfLixLUnLZmWMkFysfISe2ay3ueO0PGCApuKqh9hA=="},"oneTimePasswords":{"data":"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"},"version":"0.1"}', 76 userDetails: '{"records":{"index":{"eeda70e0392261967bda71c3764da78989c45bbd2bb7be6b941b90f81d9b81b5":"0","13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551":"1","062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80":"2","ca01bcb7691f70818feed46c9a2a91883ac543997a395535aedbb49de166690c":"3","507f38b06d587d8889698ae1ebbba7ef8f0539b82550dd25779fd9ee88fc0c7a":"4","d5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d":"5","de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4":"6","d620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045":"7","f215d89bf4583c12f5ed4f4330f488dad3fffa448f4dc784f15ef135dda2c732":"8","36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113":"9","fe21497ef7435d31f9746c132e4b5ecf5aac5f13b5961ddb55d2bdc3409f28f6":"10","6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18":"11","9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291":"12","6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a":"13","6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728":"14","8b18e8593b5bc2f7ea39a5fab222047034ef2f380fee05be0fa6e1c0972fea39":"15","084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d":"16","7bb69b6366a8012f181c01e368ba18d4f7a82bcabb4959189736ad124c4bbfbb":"17","5cdac63b317f3942da38f3a3de3b7f0e5d6678200951c6216230295550f63fb4":"18","c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065":"19"},"data":"6tqzHY7/lB/JVfDi3iJ7BIJTiX1Fih//aTUF7IDoLdlnafC9hoIQ/5lGk+/Ezilw59n11ocPN31aOA9ddFGc9oa2vQ1BdymV8F91sWGLGyWft+PRCWOqxy7U1XxvbgyRbCs0mbtSLp/qlC6gewnAXJpH6KT9oURIjKkyaR8jJ7ng6IlfGUIL2KUFnAv6KNoWO5cdXDU0nrrdSYehcApmXYlTyreHDbrFlLJ2YuR9JLvw9bDxXi/xBY1wZgwiUsGVlG3j0e4f63mJVrpmPI1jhaXD3BQD8cbl96l1ImhYe1Boz53gLq94KSk+3bkjG4GRhvlDPtvk8vdSZPsYPsbC0Cu0M4TMS70nPX7qNj5LDvzrd+S+zDj1/CW0yctRThXstrxDyG/L75k/xdZcVbMzXQHQR4OwWWFiqGOnLpyiZIHGfV5+xZ1a1uxT9TPDoDdwPuE5P1Uwh3PeGc9jatk3waQN6fo3g8PQrCOtPn7C7b6y4MEjpAG4e53HFb0B/hEfK6ApycT6QAglsA3qF/tZyZbwNCwert4pG52rIG/PODZ1XxVZHFX8VFWeSxuk/jnPpJg/pvfpRzBMyCGVDJb/i+dlwFcnOAVvqju5xXJk4mu05XrngF10NzHnVRMfxwXmdtTDYE/lDuODy1SiE5yBZlt/Ff6a0eMS/P8HLsUS8+dtz9yOIQ8rh+52nVS7F5tFWXFOvT7nfq1L4HaHCigY187Jk0Y3LCsZW6ziB5qhKZlbQxdCAx5UDNWNs/F59qxVWP5k2UagBgAJoh+iMTZAMWkaURqQxY84SVYIkm9vNZv6Jf+ppFJNn6s3ZZSUe8gmmgMPJP0Lmoh/VCPNypzR+sZULfVFpmPmNXfaAOQ875iDgvUuBWsDSBdyx2+8Q+fUO0w+W4WkDM09VGmFxrHHjfpRsOT1B3dVFti2ypyiCdkvm878pvTS2j4Obweh6+bmzE7lqOXJgtQUydKNZIb3hNbjB7LwPro6e70ctm3eM9OLFT73u+khVM2UtAhfMseEb+Ny+PldW+VgXnHFm8n5CDBHoDJPXBfJq60l6+1OnDPfB+7tIgnCVH56CZ0jFX2EbxWS63xAHNLttfMtxdbkf4AbpanqLJvNiU4P0ThW4+VNRKBid0v78WC40rWX4UTEv9HPvUA5JUsj1v6+I5UI+quCUfx0vQgeO/gAlI0YuVgDBB1ouWUSES9+U9QIGoUsVTHDo4ZOEInsnhjPbz+IFyRMoMfbiYx3gviHluxHNGYsIMFxo+yB8aW/CedyWYt54ijgViPIXhH+R8bMgFBX4JX6hu8l3NMSYvMV82ua9Pnyl7NxbwuL1S/0JAp2uh0OzGMX9iOOcFWqbWVAX7NCePAG4VTJ0wZ2iL/MUGAVG72qBWvCb1ckavQc1LTw8l2vPG6YwFf0frFHsVvZsGHRptswFTp+77U1bpn/TL2MUXJQ9gQWgCQHxE+STunbJDDWOe9FZeKkJgjqQQ2E70UFoyUp4U/H1fA5Sy9+gS8QMtOcPJ6tCbcIXnq1nif+6bDBjtQCofs59Mm7ibwnofXPGkWv8Id3SyhW9YZCYhJZss2dkMyWfqw4jDysWxQAHjxZg4qgVXA9xpwuhu7O82vMOutk7vPyEuJ4gqlDroN4aPecD405YOEXWeWrWsL2V3y5PwXBrYWq22XzJeL3PvS9usj1Vg2TtG2O3HLuB6Rm6+i7kraiRbENemst4MjLrZwYjI07ZD7DUifsrUvjA50JXXb8pjudYqwUrTKOzcE/uZ1WbSbm+2x8PYVimLtDE4/lOp34J07WV7ZxJL8yk4J4CYRxLnnS7xps8skfy6glRA8fTKRVLv+9VqVxJgE3X/G8Kfosd9K03DJbD+L+h3kvLAAZ6Xr6FpbnA5HeGXzfQ/k5lBqIS39iqT2kZKMxIOXhfwmmuTSS25nk7hD+0R1TdnnTOYQrEn8bdyPuFXzd08FxN9KSYm2H1Gdg+2h+N9UWTED7zXmv/H+gfzk5gfoNOKyWWoaEFT/NL3ky6ApzuiokUj3x+xvCwOXoozLHXhdeZYtYkIu1HlYWQx1YAk2ilg47nnRhQQaYjMvIHfsdYjdb1CpGO5K1dYlRBOCMttp+j5QVz/jCSeCrMh8dtu9ZGLEZ3QL06tqmXp03fCsvKOG0it/KuNG5EJpfb6bV+5DsZvI6k4VLXjcKvZhhh+VZSf2mr+mzFEGKBSeleZvii2g8dVyaEBms37SBFCdIwkMxFRmzo/n+1m8axx9o57NPwISU4q8eAjUK2bWrBECZaI4FwLqmlGK9hMPGB/lbrcuHtlqmv5qzo2TJb5/xoX0LyJB/FZVk5Wsm8vC+O8b7o6JDxaPkOgy07+p8Sg9wuKVy6hHrFRnZ+MEZO3Bbk74omg4+6y4HVuRCgxztzRyUiYTssFphqKBsC/e6fQN0QtSwhLSld/B5qoPMn/9CMs8UxmRbA2Ekwi+7Ss51YsWNmd8dKUqxMKWFZOQYe2dbvcYbRwKwjrARxR7d5aaQr8b96hKsWs0YkLQDn71C3AQfEUvClvDXJdJ97B9WkDHz/DQ9EaIp9+4ZSl3SIrew09vUkvUSVGU7egHzv1Oe2gf4jI/3zToRq307AzCT1tF4k0VbInDFKb8YSG35UaJAtfTENvkAQ+8KmR3gQyHRupLi6D8TNvy/03n8naG8BV8+EArzmUAgxmfv3PTipnn3bdsaIFK1+uldQXVUoHm7PgZidzOHpNXvNzgrL3c3gv7Et/s="},"directLogins":{"index":{"61e87fdc4f1d9112e3b30c1f6812d095dcdb24f014c83319091eb6c9899ec348":"0","989593d4c48929f0c8f1581aa96969c622807e99619ed4732026e967530a68ad":"1","9f7979368fa29f66c44bd97ecaf6c545abc800b1c7bb21b7655a68e1514c3906":"2","dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496":"3","aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584":"4","1f9bfd677b531a03168d3f8bd8afabb5357244a7bc355dff50bd6c0a072114a6":"5","a48e38845713462ecc9f827149eeaae87da882031f98ef8ebbf9ee9537b63468":"6","6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f":"7","2df54059e78f5771f23bd285cce19595b38331b73d67020424d9a1b2257db09c":"8","065cd0c270e5e8ce50e4ea8e3828dccdae18c01ab030813d756a87d03fe68784":"9","ddbc8d01300a4f10631cbde09e1246332eade3a877a2205209f9eb9e5bc9da0b":"10","9b7a30e667afc9f76ba77600658b2c13bff52432d444261d39bf3d069a160afe":"11","9fd2929cde3d32d9cbc5f1d787f2f64729a5e12a14410556b31c0c099762c46a":"12","f695fc36ac56bead80c0d20a88e01e382819c18dc268f1679551b7c83db7cb14":"13","f22dc41ffabef4b3bc8f7af804fec975bd50718098322a673cbe4aaff9464ae1":"14","03251dc1cbc5398789e4c4b45c52cfac3fcd8c1a4f19a81fa68fc6feae31d55c":"15","a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e":"16","cb9ae0bba1957075ccdbfd3b3481704d62087687a2ac7c411a4f07d444bde0f7":"17","7e1d069b7fa57c03bd7bf48807520feb953157834503aaff8c9d493f37dea69d":"18","24404059cabc63b2dbff0f42ba57183108b8189ef53ab62fa25141a1caea824b":"19","33cf9758477460a8056deef0295a1ebe65b39b392c361ceb920a83edacfe5d78":"20","e9a16316f330e3d150f6ffd194f6fd8acd1426757b097de4b88ca0db875202e4":"21"},"data":"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"},"preferences":{"data":"EZMrwxNFFd1sMGycoYE7IrlGGrfLixLUnLZmWMkFysfISe2ay3ueO0PGCApuKqh9hA=="},"oneTimePasswords":{"data":"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"},"version":"0.1"}',
80 statistics: 'SfGy/4mpXQdDOv+Bcfie4Yt/', 77 statistics: 'SfGy/4mpXQdDOv+Bcfie4Yt/',
81 userDetailsVersion: '0.3', 78 userDetailsVersion: '0.3',
82 records: { 79 records: {
83 '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80': { 80 '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80': {
84 data: '7sgxSQlqR+wh3g06M2+sWp7raQxjjQ9jLIz2OcEB7SckuQcXNrhMlDCbL6ncSljtzgqhioWrOB409kIG8lc7h6ekghOE/Mhi7rVwAiRfNGB7r3mYxpEXRe96O2RG7E+NcSp8ezl+5gJ9D0o1abXPeFQYGcr95hUioCfyY+xrxY8TJVwdb9nHkYvBdKV7rCl1dTxgsKWK3nlo1T7e5uyiz5YUAE6BrCtTFAqtprLI/xOpRti9C+llohS7D6s8hkCBPZfp3chKFDrgpsCBFLhXN8jrBKSjHi1PJdRQzpJsgrxyeBj0dZx3gTsYOXqrYgdIzFUo7K1Tqb30yNprBiDMr7j0YYXiSvEb7OuOIP+HTXGN+yt09bk9LggyY6Fh0e+tenjQQ3soySN/XznOBpEjXbzXoz6fR1MXVnE9GgaX99LVNqwWfq2rIBdSE/FfspRiWP3BY5jIrEkNeRclS05U1zw3K3wxOL+cB9r2IynSXnK8QcrDNNRZ0W3PhsSFfByUXuviLSEOPuJa1mYP29L9Lj/WyHL1Gyl8xLbt2H41S6+wvIleKMuc7teH6wPXbnYphvbwBowoI6HZTEFkz3dQKhhY6VF/81iCXsuaz6BjyrzFX6SkQ4S3lN1tv4opQMJFvnmHb6EkXqVWfeIXzJIJO+owL4vDOf4okpAD+HPjjlVXhq6fvyM5UBIK9+tzJW78X/zifrQOfWRIhwjVsfUdZWmZ/S35vnHWNuXkM8GBYrDysqxanDtah3U8XLAiIhFtBOzpzr6qGaNDOKKgG3K8QXT4bYHOq1rQVUwzQuKhlCyStrRMQrC5Ry251xmLy6dKfppRarVeGDtzB/30BbtFNdZmzMNG2g+Jj5tFCrEtCMvMiQEWZHMU3tGMFxDef/KKdv1fFTJC16jmaUiCHUZmNjB3EO9R6xPVcMlAVKf57n3efrpRk/GTmm9JhAFkuF/wsveH4JjPpDUdkHYFu5tHbb30sbga3ufBAXbQL4ck10S24akU/cKraFGLvuKGaR2U0i6ih911TBSf3pAfZ3RFbBhVIl+6rSknC5+IXoBR7MRstBPW/xC9pQVjN5Qyn0g3aUjUSI+q4jcTuvMl32NtTJbWRMGhfkrpVzypZTyPnIh6XJkyBghlUARXw23MlbjiZxmY4ScDmcWZRZJWIknHlqjDKFDKNnwrfnEI9qWyMDno+jA/DEQz0mnpdZYEsoz1/qAmAeDt89vx', 81 data: '7sgxSQlqR+wh3g06M2+sWp7raQxjjQ9jLIz2OcEB7SckuQcXNrhMlDCbL6ncSljtzgqhioWrOB409kIG8lc7h6ekghOE/Mhi7rVwAiRfNGB7r3mYxpEXRe96O2RG7E+NcSp8ezl+5gJ9D0o1abXPeFQYGcr95hUioCfyY+xrxY8TJVwdb9nHkYvBdKV7rCl1dTxgsKWK3nlo1T7e5uyiz5YUAE6BrCtTFAqtprLI/xOpRti9C+llohS7D6s8hkCBPZfp3chKFDrgpsCBFLhXN8jrBKSjHi1PJdRQzpJsgrxyeBj0dZx3gTsYOXqrYgdIzFUo7K1Tqb30yNprBiDMr7j0YYXiSvEb7OuOIP+HTXGN+yt09bk9LggyY6Fh0e+tenjQQ3soySN/XznOBpEjXbzXoz6fR1MXVnE9GgaX99LVNqwWfq2rIBdSE/FfspRiWP3BY5jIrEkNeRclS05U1zw3K3wxOL+cB9r2IynSXnK8QcrDNNRZ0W3PhsSFfByUXuviLSEOPuJa1mYP29L9Lj/WyHL1Gyl8xLbt2H41S6+wvIleKMuc7teH6wPXbnYphvbwBowoI6HZTEFkz3dQKhhY6VF/81iCXsuaz6BjyrzFX6SkQ4S3lN1tv4opQMJFvnmHb6EkXqVWfeIXzJIJO+owL4vDOf4okpAD+HPjjlVXhq6fvyM5UBIK9+tzJW78X/zifrQOfWRIhwjVsfUdZWmZ/S35vnHWNuXkM8GBYrDysqxanDtah3U8XLAiIhFtBOzpzr6qGaNDOKKgG3K8QXT4bYHOq1rQVUwzQuKhlCyStrRMQrC5Ry251xmLy6dKfppRarVeGDtzB/30BbtFNdZmzMNG2g+Jj5tFCrEtCMvMiQEWZHMU3tGMFxDef/KKdv1fFTJC16jmaUiCHUZmNjB3EO9R6xPVcMlAVKf57n3efrpRk/GTmm9JhAFkuF/wsveH4JjPpDUdkHYFu5tHbb30sbga3ufBAXbQL4ck10S24akU/cKraFGLvuKGaR2U0i6ih911TBSf3pAfZ3RFbBhVIl+6rSknC5+IXoBR7MRstBPW/xC9pQVjN5Qyn0g3aUjUSI+q4jcTuvMl32NtTJbWRMGhfkrpVzypZTyPnIh6XJkyBghlUARXw23MlbjiZxmY4ScDmcWZRZJWIknHlqjDKFDKNnwrfnEI9qWyMDno+jA/DEQz0mnpdZYEsoz1/qAmAeDt89vx',
85 version: '0.2', 82 version: '0.2',
86 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 83 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
87 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 84 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
88 accessDate: 'Mon Jan 19 16:10:04 CET 2009', 85 accessDate: 'Mon Jan 19 16:10:04 CET 2009',
89 currentVersion: '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3', 86 currentVersion: '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3',
90 versions: { 87 versions: {
91 '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3': { 88 '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3': {
92 header: '####', 89 header: '####',
93 data: 'GCNNIhDQjMJQZGVSf+95fPtU6eOnFWVhuGm86r8WZGVR2Gf2EjbG1OJ0ZIGpZ/AXgirCMpo5AFxJe0Bay8IYg+xmBqMFhwFxzAgJBYCIts+raSaNRipuY8dTEqDxAqD1cChcG8EhSoiFgQ0fG0I7nNEUDJi0pIt4/ygBcwvAhuAenEp9ZW+oQA0+YysPQRqkz3IieFaOoSEbe5/SqpUilV4q1gTVyzNXvrxzxx+rlvEyGFgFN+vgtUZ1NrwlPk4gVksTpylvv6CFaMGEWKhgMG6efo0rJckKosaJTu1pldJdnmMK4EKNMLOd+jZ6pEhEhYyadrA4+zYU5TlmZA6ASzTaps8piSwZodoi9qY0ch2StK4mAbzeEGe2HdfHuAU9Tyq3Ppk3+VfNdKgpQfYrQOiSlXbKzK636tzXTN/gyrfOTHjBrRl117ywibgSX63ayAYNfcLpKotC', 90 data: 'GCNNIhDQjMJQZGVSf+95fPtU6eOnFWVhuGm86r8WZGVR2Gf2EjbG1OJ0ZIGpZ/AXgirCMpo5AFxJe0Bay8IYg+xmBqMFhwFxzAgJBYCIts+raSaNRipuY8dTEqDxAqD1cChcG8EhSoiFgQ0fG0I7nNEUDJi0pIt4/ygBcwvAhuAenEp9ZW+oQA0+YysPQRqkz3IieFaOoSEbe5/SqpUilV4q1gTVyzNXvrxzxx+rlvEyGFgFN+vgtUZ1NrwlPk4gVksTpylvv6CFaMGEWKhgMG6efo0rJckKosaJTu1pldJdnmMK4EKNMLOd+jZ6pEhEhYyadrA4+zYU5TlmZA6ASzTaps8piSwZodoi9qY0ch2StK4mAbzeEGe2HdfHuAU9Tyq3Ppk3+VfNdKgpQfYrQOiSlXbKzK636tzXTN/gyrfOTHjBrRl117ywibgSX63ayAYNfcLpKotC',
94 version: '0.2', 91 version: '0.2',
95 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 92 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
96 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 93 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
97 accessDate: 'Mon Jan 19 16:10:04 CET 2009' 94 accessDate: 'Mon Jan 19 16:10:04 CET 2009'
98 } 95 }
99 } 96 }
100 }, 97 },
101 '084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d': { 98 '084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d': {
102 data: 'fGzBu1On7e/6rAoSB1a4fq/CkS8Be/T8UP5cQ93asBTWndSYu2lW4DQ4SXQXSindIi3OnNx/f6SNv/extb7OrMLREF92wXI045ipPwy+DIICb+cQNMJ82Sh4cXaIcAWcyrm+MYri3qq9LBKbpwkILcebZidJ86lmKYHJozUezmfbMcwNCljHs/gYkHVzVcuw9L52Ugc6wC7sjsshh+UH6i4/2Frlrophtx+b1vervNd8eoYiKnedHVXVfW7UJcQoF27eHFgzwYnGvRW0KNXFFhqmPb61TSkIvNdCCvBKDP4SXrWvGgzU89wipvWdUPpQ+fCT6Mp3hPRrbJxwMunmjujZOzBld/HkjnXoiNfBb5akA280WvdyzWYATrjV1ZFx8yQY8G0+lRt/MxjKDc38w4y+Rf5WeRbXboJMvFatwooHUggk6qSRmZVvgOmFmNuDRnRYIFzqK3JclhJeVasnqhR6RiGSowc1Ffr1HhcZCMnXpQABGBkZcHD/zw6YjHRyh9Plw7XAm0xb16HMDtiwt7WLJpxLH/HP99j/A2hvMGWiUiFCaYv7AzyEPTmYbN32D1IsAEE/GC3FG0HypGTBolP8wpAfTRdlvWpJz8oRRdwuLV3Pgpu+kXh5sQyeZI6tnuMPQFmRDcMN1oo3E5V5V585nVMnKTFcXhBzD4UnoV+DQNkG/+iSPybQzz/EZmucEqGEYyjI3kl4MAX8UMEUxE4JO0fF8MzyBI13nxknowAceEammx1dGVaJCoIOdhadaPVPyOzXM1Vp1erVm5k4TsxSx1pll+GOm6hVoNHIuQLDueaMEpRxMhfwc8cDyXURqRGPTgTc0bint5xVjo10fnpX1gcdc/AWL6y3tXM80NW+uFJ4GI7VzyzfcMRzTiRaGi19z8MIx8PbIVGh2sw4FhgGujNsPrpuESvUVT+17M0+v8oEoABNlcizTMFs/sA1uqlPumFASltzmViAzClOsDuCh069hFLjdk/Ex5jy4vPYlwOT8Uq9DJC9ZWuZgiI1DrhWN/8QGAEGxxbvnSZPNCQ9kpD5p+iabinLLWOAirVNgKwIRJRyAu/uR9xKd7J9Wxq8q/ii+y5lGilbo2g24wbDwrkXYVhqp/4J0g+p8Wv1NBjCTSCqV39WEizUCRHo3ee9HnQnBJQDOyTBRuz2odTJtJ5tLYjWXZRdFzFSJrEq+Z1z3oq7LnhZy3YWaFXPeKmBCemMthtNt0nL', 99 data: 'fGzBu1On7e/6rAoSB1a4fq/CkS8Be/T8UP5cQ93asBTWndSYu2lW4DQ4SXQXSindIi3OnNx/f6SNv/extb7OrMLREF92wXI045ipPwy+DIICb+cQNMJ82Sh4cXaIcAWcyrm+MYri3qq9LBKbpwkILcebZidJ86lmKYHJozUezmfbMcwNCljHs/gYkHVzVcuw9L52Ugc6wC7sjsshh+UH6i4/2Frlrophtx+b1vervNd8eoYiKnedHVXVfW7UJcQoF27eHFgzwYnGvRW0KNXFFhqmPb61TSkIvNdCCvBKDP4SXrWvGgzU89wipvWdUPpQ+fCT6Mp3hPRrbJxwMunmjujZOzBld/HkjnXoiNfBb5akA280WvdyzWYATrjV1ZFx8yQY8G0+lRt/MxjKDc38w4y+Rf5WeRbXboJMvFatwooHUggk6qSRmZVvgOmFmNuDRnRYIFzqK3JclhJeVasnqhR6RiGSowc1Ffr1HhcZCMnXpQABGBkZcHD/zw6YjHRyh9Plw7XAm0xb16HMDtiwt7WLJpxLH/HP99j/A2hvMGWiUiFCaYv7AzyEPTmYbN32D1IsAEE/GC3FG0HypGTBolP8wpAfTRdlvWpJz8oRRdwuLV3Pgpu+kXh5sQyeZI6tnuMPQFmRDcMN1oo3E5V5V585nVMnKTFcXhBzD4UnoV+DQNkG/+iSPybQzz/EZmucEqGEYyjI3kl4MAX8UMEUxE4JO0fF8MzyBI13nxknowAceEammx1dGVaJCoIOdhadaPVPyOzXM1Vp1erVm5k4TsxSx1pll+GOm6hVoNHIuQLDueaMEpRxMhfwc8cDyXURqRGPTgTc0bint5xVjo10fnpX1gcdc/AWL6y3tXM80NW+uFJ4GI7VzyzfcMRzTiRaGi19z8MIx8PbIVGh2sw4FhgGujNsPrpuESvUVT+17M0+v8oEoABNlcizTMFs/sA1uqlPumFASltzmViAzClOsDuCh069hFLjdk/Ex5jy4vPYlwOT8Uq9DJC9ZWuZgiI1DrhWN/8QGAEGxxbvnSZPNCQ9kpD5p+iabinLLWOAirVNgKwIRJRyAu/uR9xKd7J9Wxq8q/ii+y5lGilbo2g24wbDwrkXYVhqp/4J0g+p8Wv1NBjCTSCqV39WEizUCRHo3ee9HnQnBJQDOyTBRuz2odTJtJ5tLYjWXZRdFzFSJrEq+Z1z3oq7LnhZy3YWaFXPeKmBCemMthtNt0nL',
103 version: '0.3', 100 version: '0.3',
104 creationDate: 'Fri Oct 17 16:49:20 CEST 2008', 101 creationDate: 'Fri Oct 17 16:49:20 CEST 2008',
105 updateDate: 'Mon Oct 27 08:58:49 CET 2008', 102 updateDate: 'Mon Oct 27 08:58:49 CET 2008',
106 accessDate: 'Mon Jan 19 16:09:39 CET 2009', 103 accessDate: 'Mon Jan 19 16:09:39 CET 2009',
107 currentVersion: '6fd60c5709a4808444f43f7bbd872363d76703957f613076538ba2f9161206ac', 104 currentVersion: '6fd60c5709a4808444f43f7bbd872363d76703957f613076538ba2f9161206ac',
108 versions: { 105 versions: {
109 '0ae362285f103722abbd046eee2b7d10aeae6a1d05cbaf2081392ce9df882bcf': { 106 '0ae362285f103722abbd046eee2b7d10aeae6a1d05cbaf2081392ce9df882bcf': {
110 header: '####', 107 header: '####',
111 data: 'sG6TUmPSEPFpiJ5YdtghWHmHbvUK63tZCZ+Q5iz2ALas//jN+lZCBhZcjEwPEJskBkK2R0MyAh14wWGh2bBHMjsokgTe+L+x+0c/Zi0epE/IC9gtOBhsTe/hZ2e2xOGF/SbzET3DAAYXvxduZ36f7SvvFnrkkKvpj8wGSdTFcBmzqMb9DL2bRyRCLGLMzE3F1a0q5CufCIRz2TgHm+Uw+kfvvwC7ig/F/5iLW90Ypz3vmEtMEFYFHZ9a8Oh0rsXGfevbMhFqALoywzihQEe/NiB8dwn7GEdYKSQ35rhvZh29ULWOZinqmg0ONe0HYaxx7DbKsVoue57S0CIUlgHLajzHfLfqQg2sFI0OT8TnHsGg0YZ6mM2EdKmEjJiER0cP', 108 data: 'sG6TUmPSEPFpiJ5YdtghWHmHbvUK63tZCZ+Q5iz2ALas//jN+lZCBhZcjEwPEJskBkK2R0MyAh14wWGh2bBHMjsokgTe+L+x+0c/Zi0epE/IC9gtOBhsTe/hZ2e2xOGF/SbzET3DAAYXvxduZ36f7SvvFnrkkKvpj8wGSdTFcBmzqMb9DL2bRyRCLGLMzE3F1a0q5CufCIRz2TgHm+Uw+kfvvwC7ig/F/5iLW90Ypz3vmEtMEFYFHZ9a8Oh0rsXGfevbMhFqALoywzihQEe/NiB8dwn7GEdYKSQ35rhvZh29ULWOZinqmg0ONe0HYaxx7DbKsVoue57S0CIUlgHLajzHfLfqQg2sFI0OT8TnHsGg0YZ6mM2EdKmEjJiER0cP',
112 version: '0.3', 109 version: '0.3',
113 creationDate: 'Fri Oct 17 17:00:31 CEST 2008', 110 creationDate: 'Fri Oct 17 17:00:31 CEST 2008',
114 updateDate: 'Fri Oct 17 17:00:31 CEST 2008', 111 updateDate: 'Fri Oct 17 17:00:31 CEST 2008',
115 accessDate: 'Fri Oct 17 17:00:31 CEST 2008' 112 accessDate: 'Fri Oct 17 17:00:31 CEST 2008'
116 }, 113 },
117 '10f45664bbd979a92f37886f1ecc6e52e49798b16dc997aecd37259ad9b2090e': { 114 '10f45664bbd979a92f37886f1ecc6e52e49798b16dc997aecd37259ad9b2090e': {
118 header: '####', 115 header: '####',
119 data: 'RdKVaV/WWWchrCse3KtcXd47Bfm6IAwjqVUpaxoed3HeunI42AAm7xYYSjeK8edHpbNRJbhobBAX5OZtWIp/HmgkobKM8CIiWxrWz89FqyrbnPD7+fXdtgF2yTax/0sC1l0ibncdOuJKX6U829oPlXCpXIOjlomc4wEEAD/5V6FbORvdZ9IE/ME3LsG2y02cT2tIpx6+R6wC/PKXhZA2UDsTE6R2Op2BtIzpVORZLXsdyAp/4wvWQxq90i9cEpbsVQsMB10JVyNHNsRTFhIlHi9MVCaMxQvcrwRElMj/Y9x3RbsFzSGKqFLqdg7Fn/U+KYkpYtsgHv9hraPIb9lV5FH16+iItU/HBM6FGezIj1ZkoQ+dgjPfSjTZzgzDYwyb', 116 data: 'RdKVaV/WWWchrCse3KtcXd47Bfm6IAwjqVUpaxoed3HeunI42AAm7xYYSjeK8edHpbNRJbhobBAX5OZtWIp/HmgkobKM8CIiWxrWz89FqyrbnPD7+fXdtgF2yTax/0sC1l0ibncdOuJKX6U829oPlXCpXIOjlomc4wEEAD/5V6FbORvdZ9IE/ME3LsG2y02cT2tIpx6+R6wC/PKXhZA2UDsTE6R2Op2BtIzpVORZLXsdyAp/4wvWQxq90i9cEpbsVQsMB10JVyNHNsRTFhIlHi9MVCaMxQvcrwRElMj/Y9x3RbsFzSGKqFLqdg7Fn/U+KYkpYtsgHv9hraPIb9lV5FH16+iItU/HBM6FGezIj1ZkoQ+dgjPfSjTZzgzDYwyb',
120 version: '0.3', 117 version: '0.3',
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.data.old.js b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.data.old.js
index 1cb92c0..ed3a6a4 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.data.old.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.data.old.js
@@ -1,120 +1,117 @@
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
29MochiKit.Base.update(testData, { 26MochiKit.Base.update(testData, {
30 27
31 //------------------------------------------------------------------------- 28 //-------------------------------------------------------------------------
32 29
33 'OLD_joe_clipperz_offline_copy_data': { 30 'OLD_joe_clipperz_offline_copy_data': {
34 users:{ 31 users:{
35 'catchAllUser': { 32 'catchAllUser': {
36 __masterkey_test_value__: 'masterkey', 33 __masterkey_test_value__: 'masterkey',
37 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00', 34 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00',
38 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00' 35 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00'
39 }, 36 },
40 'f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674': { 37 'f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674': {
41 s: '097ca38b1792023d6c1ffca50606b6040c6b27a7667e355ba9e54e6d47d8bf23', 38 s: '097ca38b1792023d6c1ffca50606b6040c6b27a7667e355ba9e54e6d47d8bf23',
42 v: '34b9f3ab193bb12dc93c791637b8d80364564b9a39ed7130cd168d52876914e4', 39 v: '34b9f3ab193bb12dc93c791637b8d80364564b9a39ed7130cd168d52876914e4',
43 version: '0.2', 40 version: '0.2',
44 maxNumberOfRecords: '100', 41 maxNumberOfRecords: '100',
45 userDetails: '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', 42 userDetails: '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',
46 statistics: 'iFI3fKfuUd5Tqj/iRCJnIk7isZ2FOYPr/yNfICm2U35oUeTJ/RA+l+kbWiYrecpIEgk=', 43 statistics: 'iFI3fKfuUd5Tqj/iRCJnIk7isZ2FOYPr/yNfICm2U35oUeTJ/RA+l+kbWiYrecpIEgk=',
47 userDetailsVersion: '0.2', 44 userDetailsVersion: '0.2',
48 records: { 45 records: {
49 /* 01 */ '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80': { 46 /* 01 */ '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80': {
50 data: '7sgxSQlqR+wh3g06M2+sWp7raQxjjQ9jLIz2OcEB7SckuQcXNrhMlDCbL6ncSljtzgqhioWrOB409kIG8lc7h6ekghOE/Mhi7rVwAiRfNGB7r3mYxpEXRe96O2RG7E+NcSp8ezl+5gJ9D0o1abXPeFQYGcr95hUioCfyY+xrxY8TJVwdb9nHkYvBdKV7rCl1dTxgsKWK3nlo1T7e5uyiz5YUAE6BrCtTFAqtprLI/xOpRti9C+llohS7D6s8hkCBPZfp3chKFDrgpsCBFLhXN8jrBKSjHi1PJdRQzpJsgrxyeBj0dZx3gTsYOXqrYgdIzFUo7K1Tqb30yNprBiDMr7j0YYXiSvEb7OuOIP+HTXGN+yt09bk9LggyY6Fh0e+tenjQQ3soySN/XznOBpEjXbzXoz6fR1MXVnE9GgaX99LVNqwWfq2rIBdSE/FfspRiWP3BY5jIrEkNeRclS05U1zw3K3wxOL+cB9r2IynSXnK8QcrDNNRZ0W3PhsSFfByUXuviLSEOPuJa1mYP29L9Lj/WyHL1Gyl8xLbt2H41S6+wvIleKMuc7teH6wPXbnYphvbwBowoI6HZTEFkz3dQKhhY6VF/81iCXsuaz6BjyrzFX6SkQ4S3lN1tv4opQMJFvnmHb6EkXqVWfeIXzJIJO+owL4vDOf4okpAD+HPjjlVXhq6fvyM5UBIK9+tzJW78X/zifrQOfWRIhwjVsfUdZWmZ/S35vnHWNuXkM8GBYrDysqxanDtah3U8XLAiIhFtBOzpzr6qGaNDOKKgG3K8QXT4bYHOq1rQVUwzQuKhlCyStrRMQrC5Ry251xmLy6dKfppRarVeGDtzB/30BbtFNdZmzMNG2g+Jj5tFCrEtCMvMiQEWZHMU3tGMFxDef/KKdv1fFTJC16jmaUiCHUZmNjB3EO9R6xPVcMlAVKf57n3efrpRk/GTmm9JhAFkuF/wsveH4JjPpDUdkHYFu5tHbb30sbga3ufBAXbQL4ck10S24akU/cKraFGLvuKGaR2U0i6ih911TBSf3pAfZ3RFbBhVIl+6rSknC5+IXoBR7MRstBPW/xC9pQVjN5Qyn0g3aUjUSI+q4jcTuvMl32NtTJbWRMGhfkrpVzypZTyPnIh6XJkyBghlUARXw23MlbjiZxmY4ScDmcWZRZJWIknHlqjDKFDKNnwrfnEI9qWyMDno+jA/DEQz0mnpdZYEsoz1/qAmAeDt89vx', 47 data: '7sgxSQlqR+wh3g06M2+sWp7raQxjjQ9jLIz2OcEB7SckuQcXNrhMlDCbL6ncSljtzgqhioWrOB409kIG8lc7h6ekghOE/Mhi7rVwAiRfNGB7r3mYxpEXRe96O2RG7E+NcSp8ezl+5gJ9D0o1abXPeFQYGcr95hUioCfyY+xrxY8TJVwdb9nHkYvBdKV7rCl1dTxgsKWK3nlo1T7e5uyiz5YUAE6BrCtTFAqtprLI/xOpRti9C+llohS7D6s8hkCBPZfp3chKFDrgpsCBFLhXN8jrBKSjHi1PJdRQzpJsgrxyeBj0dZx3gTsYOXqrYgdIzFUo7K1Tqb30yNprBiDMr7j0YYXiSvEb7OuOIP+HTXGN+yt09bk9LggyY6Fh0e+tenjQQ3soySN/XznOBpEjXbzXoz6fR1MXVnE9GgaX99LVNqwWfq2rIBdSE/FfspRiWP3BY5jIrEkNeRclS05U1zw3K3wxOL+cB9r2IynSXnK8QcrDNNRZ0W3PhsSFfByUXuviLSEOPuJa1mYP29L9Lj/WyHL1Gyl8xLbt2H41S6+wvIleKMuc7teH6wPXbnYphvbwBowoI6HZTEFkz3dQKhhY6VF/81iCXsuaz6BjyrzFX6SkQ4S3lN1tv4opQMJFvnmHb6EkXqVWfeIXzJIJO+owL4vDOf4okpAD+HPjjlVXhq6fvyM5UBIK9+tzJW78X/zifrQOfWRIhwjVsfUdZWmZ/S35vnHWNuXkM8GBYrDysqxanDtah3U8XLAiIhFtBOzpzr6qGaNDOKKgG3K8QXT4bYHOq1rQVUwzQuKhlCyStrRMQrC5Ry251xmLy6dKfppRarVeGDtzB/30BbtFNdZmzMNG2g+Jj5tFCrEtCMvMiQEWZHMU3tGMFxDef/KKdv1fFTJC16jmaUiCHUZmNjB3EO9R6xPVcMlAVKf57n3efrpRk/GTmm9JhAFkuF/wsveH4JjPpDUdkHYFu5tHbb30sbga3ufBAXbQL4ck10S24akU/cKraFGLvuKGaR2U0i6ih911TBSf3pAfZ3RFbBhVIl+6rSknC5+IXoBR7MRstBPW/xC9pQVjN5Qyn0g3aUjUSI+q4jcTuvMl32NtTJbWRMGhfkrpVzypZTyPnIh6XJkyBghlUARXw23MlbjiZxmY4ScDmcWZRZJWIknHlqjDKFDKNnwrfnEI9qWyMDno+jA/DEQz0mnpdZYEsoz1/qAmAeDt89vx',
51 version: '0.2', 48 version: '0.2',
52 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 49 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
53 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 50 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
54 accessDate: 'Mon Jan 19 16:10:04 CET 2009', 51 accessDate: 'Mon Jan 19 16:10:04 CET 2009',
55 currentVersion: '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3', 52 currentVersion: '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3',
56 versions: { 53 versions: {
57 '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3': { 54 '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3': {
58 header: '####', 55 header: '####',
59 data: '.....', 56 data: '.....',
60 version: '0.2', 57 version: '0.2',
61 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 58 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
62 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 59 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
63 accessDate: 'Mon Jan 19 16:10:04 CET 2009' 60 accessDate: 'Mon Jan 19 16:10:04 CET 2009'
64 } 61 }
65 } 62 }
66 }, 63 },
67 /* 02 */ '13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551': { 64 /* 02 */ '13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551': {
68 data: '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', 65 data: '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',
69 version: '0.2', 66 version: '0.2',
70 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 67 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
71 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 68 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
72 accessDate: 'Mon Jan 19 16:10:04 CET 2009' 69 accessDate: 'Mon Jan 19 16:10:04 CET 2009'
73 }, 70 },
74 /* 03 */ '36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113': { 71 /* 03 */ '36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113': {
75 data: 'B7RNc32W4K53PWYWQ4aUkqSLV2O4bwExYXVPFT+50MHxrhYt4/yh2idYXAooF1ImaIlvyUsIbI4EnIoBQ33ed2wxuSA9HVC4+wTrE05EfjYOw66yJO6R6TbIazOs0Fob5PJCFEW6evmb6WWf5KsHwifOo+ACMHK799yZ1dxfaIEjRBmLCtnc8sTNvo8i6McAf7WCffA1vXbyVPEhxJjmrfIDqvkWsNR7jDV5xIA021WicOS0FxOnzU3FecU7EF/UPcYjTKfe8IKw4nDXSKIIgXqCdzNYsyZkw2OnMDVJoSwNdfiog3H4zFy2m9KZqPjwnHHj5BE8rdx0JuZoSnTFLR05p4KdWfOU4BrjehAWXZdudYqsovtDm9uMLgUfx4DV/JKVmGAZ49GWM1Tx7pY5PBbJRTO3674FGWYHTPEMiIpDk+zt1sYIR2YBbJTq4fFOIPsgmOfvYdTkSvdHLk0fbxoK12w+atgmXAiNgE6T7DlYT0IMZlEesw0Spchxoo7lTBUPXC93bl/JugyhoRLUof4dxFvsIvd18Gnop+h7aCVW1S3lqZ36TG/N+hlM4U54FkpHjJi2fN8M8EKF0N8n399m58RNfsX2FriUVHozdb5gpgUXnQnVaAUrtv177lz0sRO+9KqbhJ16dCDzMFLcarBvXGqWkj+ZfkpNIaoyl8KTeHTQTbSS2IwLTvs69fbMW6Mub3VD81CXyY3MXyF4hT0U3CFVD4jQg+xODNnqqrkl/LebWy/XP/HOoNTxjygEu1JcS7zCptRagNoucXVkWinyKGjR9fSEltsrXG2pm4w2qsovRB3vfYp7kx2m5I9qc11K+JKhgPUmpm0S4BnPdfpRMXq0w8kxu08Mwm1Debhrzrgjw1/s1ZtcpoFgJv4EWLboWbo+CKWYdq0AGl+b5UHREPnGOM9o9bOg3uvaOEKZyMq8wxECBjdas4wjRbMY83PcBfzCbOU+POrcbalmtwn4/ILkHPsUcaOHYcnKwkxSYIDRxQc69mHw1+vilSHUQ5dZYSWIRvV3yPe9eqZPWJsWrOyhPLCf18BoNdfbgHFL7b2KN9xLMz0tdHxVozH2TnwAavcNqAE0hVIgtyEDoT4rI7FVMSu5mCIN2KOxgXB8XREZokT1BQ8+rz6JraS3JYQNz+7Bd6iB6OaTStsFoaBkj50MszNdwhRViOCCUk4bUr45XRtyh4ZEXj/I4pyJUkhR5H8/qKKD', 72 data: 'B7RNc32W4K53PWYWQ4aUkqSLV2O4bwExYXVPFT+50MHxrhYt4/yh2idYXAooF1ImaIlvyUsIbI4EnIoBQ33ed2wxuSA9HVC4+wTrE05EfjYOw66yJO6R6TbIazOs0Fob5PJCFEW6evmb6WWf5KsHwifOo+ACMHK799yZ1dxfaIEjRBmLCtnc8sTNvo8i6McAf7WCffA1vXbyVPEhxJjmrfIDqvkWsNR7jDV5xIA021WicOS0FxOnzU3FecU7EF/UPcYjTKfe8IKw4nDXSKIIgXqCdzNYsyZkw2OnMDVJoSwNdfiog3H4zFy2m9KZqPjwnHHj5BE8rdx0JuZoSnTFLR05p4KdWfOU4BrjehAWXZdudYqsovtDm9uMLgUfx4DV/JKVmGAZ49GWM1Tx7pY5PBbJRTO3674FGWYHTPEMiIpDk+zt1sYIR2YBbJTq4fFOIPsgmOfvYdTkSvdHLk0fbxoK12w+atgmXAiNgE6T7DlYT0IMZlEesw0Spchxoo7lTBUPXC93bl/JugyhoRLUof4dxFvsIvd18Gnop+h7aCVW1S3lqZ36TG/N+hlM4U54FkpHjJi2fN8M8EKF0N8n399m58RNfsX2FriUVHozdb5gpgUXnQnVaAUrtv177lz0sRO+9KqbhJ16dCDzMFLcarBvXGqWkj+ZfkpNIaoyl8KTeHTQTbSS2IwLTvs69fbMW6Mub3VD81CXyY3MXyF4hT0U3CFVD4jQg+xODNnqqrkl/LebWy/XP/HOoNTxjygEu1JcS7zCptRagNoucXVkWinyKGjR9fSEltsrXG2pm4w2qsovRB3vfYp7kx2m5I9qc11K+JKhgPUmpm0S4BnPdfpRMXq0w8kxu08Mwm1Debhrzrgjw1/s1ZtcpoFgJv4EWLboWbo+CKWYdq0AGl+b5UHREPnGOM9o9bOg3uvaOEKZyMq8wxECBjdas4wjRbMY83PcBfzCbOU+POrcbalmtwn4/ILkHPsUcaOHYcnKwkxSYIDRxQc69mHw1+vilSHUQ5dZYSWIRvV3yPe9eqZPWJsWrOyhPLCf18BoNdfbgHFL7b2KN9xLMz0tdHxVozH2TnwAavcNqAE0hVIgtyEDoT4rI7FVMSu5mCIN2KOxgXB8XREZokT1BQ8+rz6JraS3JYQNz+7Bd6iB6OaTStsFoaBkj50MszNdwhRViOCCUk4bUr45XRtyh4ZEXj/I4pyJUkhR5H8/qKKD',
76 version: '0.2', 73 version: '0.2',
77 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 74 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
78 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 75 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
79 accessDate: 'Mon Jan 19 16:10:04 CET 2009' 76 accessDate: 'Mon Jan 19 16:10:04 CET 2009'
80 }, 77 },
81 /* 04 */ '507f38b06d587d8889698ae1ebbba7ef8f0539b82550dd25779fd9ee88fc0c7a': { 78 /* 04 */ '507f38b06d587d8889698ae1ebbba7ef8f0539b82550dd25779fd9ee88fc0c7a': {
82 data: 'ncSFmp/+n1pYUKi2fwhMCevSwFYO5irdcpOlSxC6YPOKYavK4iUbtBsilYWd0hpvUHW2ItaDwiyNFxs2Lwegex6dawKrpMYkPBcaZQDa746yACGgCkhz4MAGnUn5HCmz6xhpCVXMMKe3w2nEOjRB+pOMOeJt2n7aw0hCJ9tQ9JTFNrZOxeXrqoexrd210Rmr9FnKhLIvhNTN1/vXRqP0ys10omJ2mowzF4KoEVmz3ET6pS2d7tGjt9M/OYsH/ETWWc92doF5PO84g5/3HePaCo8NCqq4ul7AWJEbdnkxxmd7urJzIscPQPcoLxL7GfG5LhHTFyHlfFz9dNlccfA+OPftjyfjXTjLYZzbxxbi/nAB9Esqj5AoHfqaJM1ZOrZ+qAvm8Am3+HAXrqtiybDITrCLmGH9ukWDsx7R3lYTlvjArwORBUH+4w4/uYGscVm9kOYj/Rmz/ZMH9JibYFcPcOnr3rWXPFUL/XsXTrm9lzOvPyEYJmkENzd54AHC4Lr5vHpeuipWFLiJOrtn2WcgDG/DdLaYGKsmISXj74XDtP6Ee5lKOtbwwcmVNrl11UCQBEFHNybhXvpil5laKddOauLJDKtaDL/mKYPbr5YSk7HPCzRyE7HM2dC1MpBHuJ8g+hDkgU3wQcxYduKLRpuC0uOqrODigGWhVrdiKdZanlWUq9EkE3eH+E2A/CA8mHl7UNaH89XSvgV7uZyOmK7iZ+1kd9OzhBLQdJnK9qqP467Y14KsTt1E1+tqlqVAuK79QMnllaR0e3ztBRAQsyf5SD0KuSGXWz+z9/RjbhamW1s0UFRGh3voQMypU5RcYfYUA5KVg0BiVKFaiZBZKLo213hKbrgE2KoqVDEmIBFmwsu/S3EDzUY22tTB+o8ZKQiYesAUafGtnvsOLa+h6weF1ZvQVBerbD3fhb2o+d4ZyPkoRAsop+5it0QxsWuZL+J2oWybaikxIP/1ZM2ow4QZLaAVqihyHxqhF5UxZ9zrWxfp34BIPzzU9esSifrD0gXZ3mwutaCukZoijnGODJZtFOy9Rl1gyS1IbpyRbwz5O/YRl4BsD2aOk4InajT13Sa1BLPblQcrau13aeg/IzQhcUJ6n7enkrqiJFTP8N1aFAuYv8ilu0V2ymIuCLUtc4cbo7KyA+gnHhZA+DjjrhG/izOyWtQY/WtDsqvo/6ILwFk37JDjHfkchPEVcdl9qT7goG/4zTGX+lx8UTKKZJjJhLjA', 79 data: 'ncSFmp/+n1pYUKi2fwhMCevSwFYO5irdcpOlSxC6YPOKYavK4iUbtBsilYWd0hpvUHW2ItaDwiyNFxs2Lwegex6dawKrpMYkPBcaZQDa746yACGgCkhz4MAGnUn5HCmz6xhpCVXMMKe3w2nEOjRB+pOMOeJt2n7aw0hCJ9tQ9JTFNrZOxeXrqoexrd210Rmr9FnKhLIvhNTN1/vXRqP0ys10omJ2mowzF4KoEVmz3ET6pS2d7tGjt9M/OYsH/ETWWc92doF5PO84g5/3HePaCo8NCqq4ul7AWJEbdnkxxmd7urJzIscPQPcoLxL7GfG5LhHTFyHlfFz9dNlccfA+OPftjyfjXTjLYZzbxxbi/nAB9Esqj5AoHfqaJM1ZOrZ+qAvm8Am3+HAXrqtiybDITrCLmGH9ukWDsx7R3lYTlvjArwORBUH+4w4/uYGscVm9kOYj/Rmz/ZMH9JibYFcPcOnr3rWXPFUL/XsXTrm9lzOvPyEYJmkENzd54AHC4Lr5vHpeuipWFLiJOrtn2WcgDG/DdLaYGKsmISXj74XDtP6Ee5lKOtbwwcmVNrl11UCQBEFHNybhXvpil5laKddOauLJDKtaDL/mKYPbr5YSk7HPCzRyE7HM2dC1MpBHuJ8g+hDkgU3wQcxYduKLRpuC0uOqrODigGWhVrdiKdZanlWUq9EkE3eH+E2A/CA8mHl7UNaH89XSvgV7uZyOmK7iZ+1kd9OzhBLQdJnK9qqP467Y14KsTt1E1+tqlqVAuK79QMnllaR0e3ztBRAQsyf5SD0KuSGXWz+z9/RjbhamW1s0UFRGh3voQMypU5RcYfYUA5KVg0BiVKFaiZBZKLo213hKbrgE2KoqVDEmIBFmwsu/S3EDzUY22tTB+o8ZKQiYesAUafGtnvsOLa+h6weF1ZvQVBerbD3fhb2o+d4ZyPkoRAsop+5it0QxsWuZL+J2oWybaikxIP/1ZM2ow4QZLaAVqihyHxqhF5UxZ9zrWxfp34BIPzzU9esSifrD0gXZ3mwutaCukZoijnGODJZtFOy9Rl1gyS1IbpyRbwz5O/YRl4BsD2aOk4InajT13Sa1BLPblQcrau13aeg/IzQhcUJ6n7enkrqiJFTP8N1aFAuYv8ilu0V2ymIuCLUtc4cbo7KyA+gnHhZA+DjjrhG/izOyWtQY/WtDsqvo/6ILwFk37JDjHfkchPEVcdl9qT7goG/4zTGX+lx8UTKKZJjJhLjA',
83 version: '0.2', 80 version: '0.2',
84 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 81 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
85 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 82 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
86 accessDate: 'Mon Jan 19 16:10:04 CET 2009' 83 accessDate: 'Mon Jan 19 16:10:04 CET 2009'
87 }, 84 },
88 /* 05 */ '6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728': { 85 /* 05 */ '6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728': {
89 data: '3oUg1TD+Lu4ou06j/MddOTXDqRM+qSKD+6Iuzia1Hop1w7v/BXidqeoKJZQI2VY9oO9B70Nr3B3wDROF+ycy6Rq+FM/xqUGHKXn1lAaSc6Wgj6TLQ6eRF6YZKSPqTj7TDWyw/2pEWk4HjcT8drTrCaC02tzAXMhYWlYPQPW4fUdq4hawoHIdopUN3vafQuFjY47OhqXKav3bNao=', 86 data: '3oUg1TD+Lu4ou06j/MddOTXDqRM+qSKD+6Iuzia1Hop1w7v/BXidqeoKJZQI2VY9oO9B70Nr3B3wDROF+ycy6Rq+FM/xqUGHKXn1lAaSc6Wgj6TLQ6eRF6YZKSPqTj7TDWyw/2pEWk4HjcT8drTrCaC02tzAXMhYWlYPQPW4fUdq4hawoHIdopUN3vafQuFjY47OhqXKav3bNao=',
90 version: '0.2', 87 version: '0.2',
91 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 88 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
92 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 89 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
93 accessDate: 'Mon Jan 19 16:10:04 CET 2009' 90 accessDate: 'Mon Jan 19 16:10:04 CET 2009'
94 }, 91 },
95 /* 06 */ '6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a': { 92 /* 06 */ '6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a': {
96 data: 'b2mcYUi59l434kGl7ij6dBu3063UL1dToMIu3Zsa9RV9RzeLKnezJhLKunqoAm7KwiJeqDo/REexHI1cshGYtHasVXXuyJfMx1grH7yhoWnkSRF4Sax6w5E5wnGkEpGJHOxXJ9rOjWHZ7yqCUUCB/dqLw4FwPOtRb/ynkBEYztEJA6EKGJuz0vrrTOsT8HMXtj/w6MEZ7qI3fPs=', 93 data: 'b2mcYUi59l434kGl7ij6dBu3063UL1dToMIu3Zsa9RV9RzeLKnezJhLKunqoAm7KwiJeqDo/REexHI1cshGYtHasVXXuyJfMx1grH7yhoWnkSRF4Sax6w5E5wnGkEpGJHOxXJ9rOjWHZ7yqCUUCB/dqLw4FwPOtRb/ynkBEYztEJA6EKGJuz0vrrTOsT8HMXtj/w6MEZ7qI3fPs=',
97 version: '0.2', 94 version: '0.2',
98 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 95 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
99 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 96 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
100 accessDate: 'Mon Jan 19 16:10:04 CET 2009' 97 accessDate: 'Mon Jan 19 16:10:04 CET 2009'
101 }, 98 },
102 /* 07 */ '6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18': { 99 /* 07 */ '6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18': {
103 data: 'jzjPgxRHApIJA/6hiY4XCtb5+eKzHlOeoiGwfVDvip95zU7ThHbdmxOUomeyCOZ3S1SGPT4lHvqZgfVG5m5RvH3JaAIa8EY1ZElRohoX3rETVPJzI/Ov5Rp3lZjtWlu5meNrcJz811HBHrtBuJxAmSjYcY3CCal+oC2zcK2fLZR/iOQ+69ONVFhdV9KiOqzNf8IisIa1sIgFopqsdHXiZ9oLe0a7Y56q+OplyU3A+TmxKLI+Qq+WkjvdMzZDDqzYH47me5niugYPdkQwN6WQUE0sK9QPs0uU4TOwqCwN9nPH/DoQ6oXWAu2+R4iCyt6ZjLNkClbps4s8Cwz6wfFQ+4T8bcldjveJenmrYwiUzxSd/4xa34yFVXVw2OD0n8yZhtvNFvfoPy+X9z+Y4f5HlM0qzL9zYya4KwWjFQzhOxFjni9JyGM2PJ1BctB+q1J+CHuhlVjUF0Y5zIS3zFTET8jjDGBZDWB+Ao9E8fUD+0OJJUdKJ4kUfn4ZUZUG20eLBjmJqWBGYZX7UFaPv8ksahoK26Ol6FnBE4KpPStQeDgXZDzGsiLlEsxHJLUFkNtAUXozw38bWWQvi2VIFtkw/ZViPIenmSNT14kUVWdrlKQC8x0+wECeh5ffv0i8UUw3v8QC2ZE7GV0OMl4ySlRCuDCfZ53YFoB3HIR1hSZMhHlHJDPUz8JOuXdHcUQaJeNrfWoC2KkKb0ZecBj9iXooDh9yGi0g7TS7eyhlz1LHpzEWB0CPsZqhNGMxmfFWur7v2hrYzoHQOeB19ZSmWzfUwd4dRpqMp0x1lZaF97jr+yyYhnuQvuO6lru15Pg6FqjzhsNiLtaqtyoaMiHZ9veZs04qZZ9Fn3U7HeJzjZSAssdLnvopXi363cXm9JqoClyV2OemnVoRwOZN2gdSZxGeOefKR7U+lrBAbJwViMnmT0Nd7AC8C1k34iEt8HJmpztXeOgX5CQpwUPENMCUPsookFbIh7e4aByllEQy0gBbxUz8JMIWYyw98hdASnZ4s8bQfSmiMM8Iw3YxCexKB62LYYJn1UY51NSnwCtwRep+NhaKDk2d6SLh9owxnFbjhw22RriPd5f1InJycjtpvMzWLavl/hDsjjj1kWpnCUBTM46LbERmjz+s4x7fSf2FhhguBT36elz69ivXoiXI+7p0E8f8HsSwm8sgN/AA5m1svsXsdWeZFUiWtAwLg0tI8YNHlazbvFCXfIC6Uhq9eDv04iqdZ3rn2c1rwSx336A7ySTBFdxOCJ46F7ShIhNKm2N+5Qf0K5B2L882fbwqiLsa64+X9aKvufKTsd11vyf19Zivg/Ze0FWoGC8D63Nh91k6Hu32RT+uAtJIjQIZxu9yXJM9lMaRA8ieER+ghrLHaGQqF9J3WmueER3UzU1midvTynOV6g==', 100 data: 'jzjPgxRHApIJA/6hiY4XCtb5+eKzHlOeoiGwfVDvip95zU7ThHbdmxOUomeyCOZ3S1SGPT4lHvqZgfVG5m5RvH3JaAIa8EY1ZElRohoX3rETVPJzI/Ov5Rp3lZjtWlu5meNrcJz811HBHrtBuJxAmSjYcY3CCal+oC2zcK2fLZR/iOQ+69ONVFhdV9KiOqzNf8IisIa1sIgFopqsdHXiZ9oLe0a7Y56q+OplyU3A+TmxKLI+Qq+WkjvdMzZDDqzYH47me5niugYPdkQwN6WQUE0sK9QPs0uU4TOwqCwN9nPH/DoQ6oXWAu2+R4iCyt6ZjLNkClbps4s8Cwz6wfFQ+4T8bcldjveJenmrYwiUzxSd/4xa34yFVXVw2OD0n8yZhtvNFvfoPy+X9z+Y4f5HlM0qzL9zYya4KwWjFQzhOxFjni9JyGM2PJ1BctB+q1J+CHuhlVjUF0Y5zIS3zFTET8jjDGBZDWB+Ao9E8fUD+0OJJUdKJ4kUfn4ZUZUG20eLBjmJqWBGYZX7UFaPv8ksahoK26Ol6FnBE4KpPStQeDgXZDzGsiLlEsxHJLUFkNtAUXozw38bWWQvi2VIFtkw/ZViPIenmSNT14kUVWdrlKQC8x0+wECeh5ffv0i8UUw3v8QC2ZE7GV0OMl4ySlRCuDCfZ53YFoB3HIR1hSZMhHlHJDPUz8JOuXdHcUQaJeNrfWoC2KkKb0ZecBj9iXooDh9yGi0g7TS7eyhlz1LHpzEWB0CPsZqhNGMxmfFWur7v2hrYzoHQOeB19ZSmWzfUwd4dRpqMp0x1lZaF97jr+yyYhnuQvuO6lru15Pg6FqjzhsNiLtaqtyoaMiHZ9veZs04qZZ9Fn3U7HeJzjZSAssdLnvopXi363cXm9JqoClyV2OemnVoRwOZN2gdSZxGeOefKR7U+lrBAbJwViMnmT0Nd7AC8C1k34iEt8HJmpztXeOgX5CQpwUPENMCUPsookFbIh7e4aByllEQy0gBbxUz8JMIWYyw98hdASnZ4s8bQfSmiMM8Iw3YxCexKB62LYYJn1UY51NSnwCtwRep+NhaKDk2d6SLh9owxnFbjhw22RriPd5f1InJycjtpvMzWLavl/hDsjjj1kWpnCUBTM46LbERmjz+s4x7fSf2FhhguBT36elz69ivXoiXI+7p0E8f8HsSwm8sgN/AA5m1svsXsdWeZFUiWtAwLg0tI8YNHlazbvFCXfIC6Uhq9eDv04iqdZ3rn2c1rwSx336A7ySTBFdxOCJ46F7ShIhNKm2N+5Qf0K5B2L882fbwqiLsa64+X9aKvufKTsd11vyf19Zivg/Ze0FWoGC8D63Nh91k6Hu32RT+uAtJIjQIZxu9yXJM9lMaRA8ieER+ghrLHaGQqF9J3WmueER3UzU1midvTynOV6g==',
104 version: '0.2', 101 version: '0.2',
105 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 102 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
106 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 103 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
107 accessDate: 'Mon Jan 19 16:10:04 CET 2009' 104 accessDate: 'Mon Jan 19 16:10:04 CET 2009'
108 }, 105 },
109 /* 08 */ '9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291': { 106 /* 08 */ '9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291': {
110 data: 'xXZUJjgxn62OqnzAvScHJNo4WjYEFp1vQ4ueBe1sk8dH4pXZUKV6m9c1d2cLUgBj4rUNP5cC66GiFHV7G5BDZGLrfrxUlYU6BWvzAz4eG463pRDhHXQgPrhlIGDlK6ovaIsjwaifvHaEfLREoXvLFluqu406KG58guhtWdIFK0rLypyRo8uyltGbTz8wZdu8atY/JYQnb8NaAf4=', 107 data: 'xXZUJjgxn62OqnzAvScHJNo4WjYEFp1vQ4ueBe1sk8dH4pXZUKV6m9c1d2cLUgBj4rUNP5cC66GiFHV7G5BDZGLrfrxUlYU6BWvzAz4eG463pRDhHXQgPrhlIGDlK6ovaIsjwaifvHaEfLREoXvLFluqu406KG58guhtWdIFK0rLypyRo8uyltGbTz8wZdu8atY/JYQnb8NaAf4=',
111 version: '0.2', 108 version: '0.2',
112 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 109 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
113 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 110 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
114 accessDate: 'Mon Jan 19 16:10:04 CET 2009' 111 accessDate: 'Mon Jan 19 16:10:04 CET 2009'
115 }, 112 },
116 /* 09 */ 'ca01bcb7691f70818feed46c9a2a91883ac543997a395535aedbb49de166690c': { 113 /* 09 */ 'ca01bcb7691f70818feed46c9a2a91883ac543997a395535aedbb49de166690c': {
117 data: 'YXBq1ZlFhoosb2Krnk0Tk8+LKyecTeZ3UdJujrryEgvMnhGJvSVVtN3uph9gts10Kw+tF5wvdAtBFdMUpvcP3mOlbnX7+HCz+JsJcLLVvuGBU9ciwok5kRKQuvWffmP7qFLuqO2VJUj2ozjcpVssStZOrfDXWrJwYfkd9IMnOJVmCwjFeXpPlkOeHNyhjPlfZhWWlTga6xLdEXaVeZyjDegzhlhh9U3e1CLupLTwdxXtNCPRXp8gU7e/I9HP/qdnj5BzgDxaKx29v/AUcgOt3jq5oWwePXZL9nVOp6rh/UqduM88tyxEbnBQxcGj9KxTVsIh6ywzQZgnPtfrPaqX4Fvb1P9cGN80/F+/JXVgL3fvrcxJDGxZj6VYFTA+cHM6sV+F4/7wMLUVlCcn78BB6/k3DC4mYUv+8LSxfZf22bWCcSyubPTRhmCm2/sgdOloDUKT4AjfZivlpJjkYNDtNmZn/rUpMr3uLiHeWDDNB+eGqk3lAFhihBPXqDJ3o+8c9jrznedMxQPkgYD0V9ryDauY2RYjQIhmXqQlnGxpGOO2lFDGYtkwsBplPy6LDkudzJVAqp5trBR8Ty87k65hbhinGCra/DgPqIxjaN5pvZbXkOLoaIoLnE9RRGdAwfUTMIg/maNRoDKaHO0hJ3ksCflu71H9tzPjGM7BBjWjQgUvwDJOgnEPyZv+noOiHfNIq3u8CfI8e867gnEbdtd3oPYex1aBYIQ1ELAxI8szUtSeMDHOouXrZKwy04xVdC90KHnVWl49scE2QfgqV4hqzFjtuQgZOqQ50bI+duWDm7YYTwKVlo5QKy40faW6dPIfDPRsxY6M3gcL2OPBm+WMopUC/o/AFSpxPaut1DOr3mXBip0Ejam9xmJhMOUwIJDoE2U+8S2s+UJjRunLb680vqbddF24aWxpLL1Fg+hlRZ/Jz1ZajonH9ktQhoQaTl+w/4uHhMZjKH7/FaRqge2WMMwVjOd7VXNByBPia6W7VbmDk8LFCeCsC1DchcDaMj/JmoGXucqzDO/sOIby2YCBsV72ReqTNtu6SLZe4G61DWA7j+6NiOSmAutYox6VsoRsKaJYkyBgmq5hWDZmWOJ/cC1pQa9EMoXzcaEPicmXx5YE4xF15VWpI8cKTM/StLtLcqTs78Z0fQAicz8YhhNdVCGp/zcjJRPyL6XCDhpvMxcIOnU7', 114 data: 'YXBq1ZlFhoosb2Krnk0Tk8+LKyecTeZ3UdJujrryEgvMnhGJvSVVtN3uph9gts10Kw+tF5wvdAtBFdMUpvcP3mOlbnX7+HCz+JsJcLLVvuGBU9ciwok5kRKQuvWffmP7qFLuqO2VJUj2ozjcpVssStZOrfDXWrJwYfkd9IMnOJVmCwjFeXpPlkOeHNyhjPlfZhWWlTga6xLdEXaVeZyjDegzhlhh9U3e1CLupLTwdxXtNCPRXp8gU7e/I9HP/qdnj5BzgDxaKx29v/AUcgOt3jq5oWwePXZL9nVOp6rh/UqduM88tyxEbnBQxcGj9KxTVsIh6ywzQZgnPtfrPaqX4Fvb1P9cGN80/F+/JXVgL3fvrcxJDGxZj6VYFTA+cHM6sV+F4/7wMLUVlCcn78BB6/k3DC4mYUv+8LSxfZf22bWCcSyubPTRhmCm2/sgdOloDUKT4AjfZivlpJjkYNDtNmZn/rUpMr3uLiHeWDDNB+eGqk3lAFhihBPXqDJ3o+8c9jrznedMxQPkgYD0V9ryDauY2RYjQIhmXqQlnGxpGOO2lFDGYtkwsBplPy6LDkudzJVAqp5trBR8Ty87k65hbhinGCra/DgPqIxjaN5pvZbXkOLoaIoLnE9RRGdAwfUTMIg/maNRoDKaHO0hJ3ksCflu71H9tzPjGM7BBjWjQgUvwDJOgnEPyZv+noOiHfNIq3u8CfI8e867gnEbdtd3oPYex1aBYIQ1ELAxI8szUtSeMDHOouXrZKwy04xVdC90KHnVWl49scE2QfgqV4hqzFjtuQgZOqQ50bI+duWDm7YYTwKVlo5QKy40faW6dPIfDPRsxY6M3gcL2OPBm+WMopUC/o/AFSpxPaut1DOr3mXBip0Ejam9xmJhMOUwIJDoE2U+8S2s+UJjRunLb680vqbddF24aWxpLL1Fg+hlRZ/Jz1ZajonH9ktQhoQaTl+w/4uHhMZjKH7/FaRqge2WMMwVjOd7VXNByBPia6W7VbmDk8LFCeCsC1DchcDaMj/JmoGXucqzDO/sOIby2YCBsV72ReqTNtu6SLZe4G61DWA7j+6NiOSmAutYox6VsoRsKaJYkyBgmq5hWDZmWOJ/cC1pQa9EMoXzcaEPicmXx5YE4xF15VWpI8cKTM/StLtLcqTs78Z0fQAicz8YhhNdVCGp/zcjJRPyL6XCDhpvMxcIOnU7',
118 version: '0.2', 115 version: '0.2',
119 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 116 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
120 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 117 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.html b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.html
index f77bcb6..a651830 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.html
@@ -1,106 +1,103 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.PM.DataModel.User - test</title> 28 <title>Clipperz.PM.DataModel.User - test</title>
32 29
33 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.js"></script> 31 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.js"></script>
35 <link rel="stylesheet" type="text/css" href="../../../../SimpleTest/test.css"> 32 <link rel="stylesheet" type="text/css" href="../../../../SimpleTest/test.css">
36 33
37 <script type='text/javascript' src='../../../../../js/JSON/json2.js'></script> 34 <script type='text/javascript' src='../../../../../js/JSON/json2.js'></script>
38 35
39 <script type='text/javascript' src='../../../../../js/Clipperz/YUI/Utils.js'></script> 36 <script type='text/javascript' src='../../../../../js/Clipperz/YUI/Utils.js'></script>
40 <script type='text/javascript' src='../../../../../js/Clipperz/Base.js'></script> 37 <script type='text/javascript' src='../../../../../js/Clipperz/Base.js'></script>
41 <script type='text/javascript' src='../../../../../js/Clipperz/Date.js'></script> 38 <script type='text/javascript' src='../../../../../js/Clipperz/Date.js'></script>
42 <script type='text/javascript' src='../../../../../js/Clipperz/ByteArray.js'></script> 39 <script type='text/javascript' src='../../../../../js/Clipperz/ByteArray.js'></script>
43 <script type='text/javascript' src='../../../../../js/Clipperz/Logging.js'></script> 40 <script type='text/javascript' src='../../../../../js/Clipperz/Logging.js'></script>
44 <script type='text/javascript' src='../../../../../js/Clipperz/Async.js'></script> 41 <script type='text/javascript' src='../../../../../js/Clipperz/Async.js'></script>
45 <script type='text/javascript' src='../../../../../js/Clipperz/Signal.js'></script> 42 <script type='text/javascript' src='../../../../../js/Clipperz/Signal.js'></script>
46 <script type='text/javascript' src='../../../../../js/Clipperz/KeyValueObjectStore.js'></script> 43 <script type='text/javascript' src='../../../../../js/Clipperz/KeyValueObjectStore.js'></script>
47 44
48 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/Base.js'></script> 45 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/Base.js'></script>
49 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/BigInt.js'></script> 46 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/BigInt.js'></script>
50 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES.js'></script> 47 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/AES.js'></script>
51 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SHA.js'></script> 48 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SHA.js'></script>
52 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/PRNG.js'></script> 49 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/PRNG.js'></script>
53 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SRP.js'></script> 50 <script type='text/javascript' src='../../../../../js/Clipperz/Crypto/SRP.js'></script>
54 51
55 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Toll.js'></script> 52 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Toll.js'></script>
56 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy.js'></script> 53 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy.js'></script>
57 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 54 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
58 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> 55 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
59 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 56 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
60 57
61 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Connection.js'></script> 58 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Connection.js'></script>
62 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Crypto.js'></script> 59 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Crypto.js'></script>
63 60
64 <script type='text/javascript' src='../../../../../js/Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js'></script> 61 <script type='text/javascript' src='../../../../../js/Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js'></script>
65 62
66 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings.js'></script> 63 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings.js'></script>
67 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 64 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
68 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Date.js'></script> 65 <script type='text/javascript' src='../../../../../js/Clipperz/PM/Date.js'></script>
69 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 66 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
70 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.js'></script> 67 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.js'></script>
71 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> 68 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script>
72 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> 69 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script>
73 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script> 70 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script>
74 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginInput.js'></script> 71 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginInput.js'></script>
75 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginBinding.js'></script> 72 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginBinding.js'></script>
76 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginFormValue.js'></script> 73 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/DirectLoginFormValue.js'></script>
77 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.js'></script> 74 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.js'></script>
78 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script> 75 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script>
79 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script> 76 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script>
80 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.Preferences.js'></script> 77 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.Preferences.js'></script>
81 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js'></script> 78 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js'></script>
82 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/OneTimePassword.js'></script> 79 <script type='text/javascript' src='../../../../../js/Clipperz/PM/DataModel/OneTimePassword.js'></script>
83 80
84 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.Async.js"></script> 81 <script type="text/javascript" src="../../../../SimpleTest/SimpleTest.Async.js"></script>
85<script> 82<script>
86 Clipperz_IEisBroken = false; 83 Clipperz_IEisBroken = false;
87</script> 84</script>
88 85
89<!--[if IE]><script> 86<!--[if IE]><script>
90Clipperz_IEisBroken = true; 87Clipperz_IEisBroken = true;
91Clipperz_normalizedNewLine = '\x0d\x0a'; 88Clipperz_normalizedNewLine = '\x0d\x0a';
92</script><![endif]--> 89</script><![endif]-->
93 90
94</head> 91</head>
95<body> 92<body>
96 93
97<pre id="test"> 94<pre id="test">
98<script> 95<script>
99 Clipperz.PM.Strings.Languages.setSelectedLanguage('en-us'); 96 Clipperz.PM.Strings.Languages.setSelectedLanguage('en-us');
100</script> 97</script>
101<script type="text/javascript" src="User.data.js"></script> 98<script type="text/javascript" src="User.data.js"></script>
102<script type="text/javascript" src="User.data.old.js"></script> 99<script type="text/javascript" src="User.data.old.js"></script>
103<script type="text/javascript" src="User.test.js"></script> 100<script type="text/javascript" src="User.test.js"></script>
104</pre> 101</pre>
105</body> 102</body>
106</html> 103</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.test.js b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.test.js
index 4e7a21f..c9ca3d6 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/User.test.js
@@ -1,120 +1,117 @@
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.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
30 27
31var tests = { 28var tests = {
32 29
33 //------------------------------------------------------------------------- 30 //-------------------------------------------------------------------------
34 31
35 'invertIndex_test': function (someTestArgs) { 32 'invertIndex_test': function (someTestArgs) {
36 var testIndex; 33 var testIndex;
37 var invertedIndex; 34 var invertedIndex;
38 35
39 testIndex = { 36 testIndex = {
40 'key1': 'value1', 37 'key1': 'value1',
41 'key2': 'value2', 38 'key2': 'value2',
42 'key3': 'value3', 39 'key3': 'value3',
43 'key4': 'value4', 40 'key4': 'value4',
44 'key5': 'value5' 41 'key5': 'value5'
45 }; 42 };
46 43
47 invertedIndex = Clipperz.PM.DataModel.User.Header.RecordIndex.invertIndex(testIndex); 44 invertedIndex = Clipperz.PM.DataModel.User.Header.RecordIndex.invertIndex(testIndex);
48 45
49 SimpleTest.is(MochiKit.Base.keys(invertedIndex).length, MochiKit.Base.keys(testIndex).length, "the inverted index has the same number of elements as the original index"); 46 SimpleTest.is(MochiKit.Base.keys(invertedIndex).length, MochiKit.Base.keys(testIndex).length, "the inverted index has the same number of elements as the original index");
50 SimpleTest.is(invertedIndex['value1'], 'key1', "the first element has been correctly inverted"); 47 SimpleTest.is(invertedIndex['value1'], 'key1', "the first element has been correctly inverted");
51 SimpleTest.is(invertedIndex['value2'], 'key2', "the second element has been correctly inverted"); 48 SimpleTest.is(invertedIndex['value2'], 'key2', "the second element has been correctly inverted");
52 SimpleTest.is(invertedIndex['value3'], 'key3', "the third element has been correctly inverted"); 49 SimpleTest.is(invertedIndex['value3'], 'key3', "the third element has been correctly inverted");
53 SimpleTest.is(invertedIndex['value4'], 'key4', "the forth element has been correctly inverted"); 50 SimpleTest.is(invertedIndex['value4'], 'key4', "the forth element has been correctly inverted");
54 SimpleTest.is(invertedIndex['value5'], 'key5', "the fifth element has been correctly inverted"); 51 SimpleTest.is(invertedIndex['value5'], 'key5', "the fifth element has been correctly inverted");
55 return MochiKit.Async.succeed('done'); 52 return MochiKit.Async.succeed('done');
56 }, 53 },
57 54
58 //------------------------------------------------------------------------- 55 //-------------------------------------------------------------------------
59 56
60 'joe_clipperz_offline_copy_test': function(someTestArgs) { 57 'joe_clipperz_offline_copy_test': function(someTestArgs) {
61 var deferredResult; 58 var deferredResult;
62 var proxy; 59 var proxy;
63 var user; 60 var user;
64 61
65 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true}); 62 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true});
66 user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}}); 63 user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}});
67 64
68 deferredResult = new Clipperz.Async.Deferred("joe_clipperz_offline_copy_test", someTestArgs); 65 deferredResult = new Clipperz.Async.Deferred("joe_clipperz_offline_copy_test", someTestArgs);
69 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']); 66 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']);
70 deferredResult.addMethod(user, 'login'); 67 deferredResult.addMethod(user, 'login');
71 deferredResult.addMethod(user, 'getRecords'); 68 deferredResult.addMethod(user, 'getRecords');
72 deferredResult.addCallback(function (someRecords) { 69 deferredResult.addCallback(function (someRecords) {
73 is(someRecords.length, 20,"joe_clipperz_offline_copy_test - joe has 20 records"); 70 is(someRecords.length, 20,"joe_clipperz_offline_copy_test - joe has 20 records");
74 }); 71 });
75 72
76 deferredResult.addMethod(user, 'getRecords'); 73 deferredResult.addMethod(user, 'getRecords');
77 deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.methodcaller('label')); 74 deferredResult.addCallback(MochiKit.Base.map, MochiKit.Base.methodcaller('label'));
78 deferredResult.addCallback(Clipperz.Async.collectAll); 75 deferredResult.addCallback(Clipperz.Async.collectAll);
79 deferredResult.addCallback(MochiKit.Base.methodcaller('sort')); 76 deferredResult.addCallback(MochiKit.Base.methodcaller('sort'));
80 deferredResult.addCallback(function (someSortedLabels) { 77 deferredResult.addCallback(function (someSortedLabels) {
81 SimpleTest.is(someSortedLabels.length, 20, "We got all the labels"); 78 SimpleTest.is(someSortedLabels.length, 20, "We got all the labels");
82 SimpleTest.is(someSortedLabels[0], "Amazon.com", "The first label is correct"); 79 SimpleTest.is(someSortedLabels[0], "Amazon.com", "The first label is correct");
83 SimpleTest.is(someSortedLabels[1], "American Airlines", "The second label is correct"); 80 SimpleTest.is(someSortedLabels[1], "American Airlines", "The second label is correct");
84 SimpleTest.is(someSortedLabels[2], "Bloglines", "The third label is correct"); 81 SimpleTest.is(someSortedLabels[2], "Bloglines", "The third label is correct");
85 SimpleTest.is(someSortedLabels[3], "Digg", "The fourth label is correct"); 82 SimpleTest.is(someSortedLabels[3], "Digg", "The fourth label is correct");
86 SimpleTest.is(someSortedLabels[4], "Example Attack", "The fifth label is correct"); 83 SimpleTest.is(someSortedLabels[4], "Example Attack", "The fifth label is correct");
87 SimpleTest.is(someSortedLabels[5], "Expedia.com", "The sixth label is correct"); 84 SimpleTest.is(someSortedLabels[5], "Expedia.com", "The sixth label is correct");
88 SimpleTest.is(someSortedLabels[6], "Google Account", "The seventh label is correct"); 85 SimpleTest.is(someSortedLabels[6], "Google Account", "The seventh label is correct");
89 SimpleTest.is(someSortedLabels[7], "Home burglar alarm", "The eighth label is correct"); 86 SimpleTest.is(someSortedLabels[7], "Home burglar alarm", "The eighth label is correct");
90 SimpleTest.is(someSortedLabels[8], "Jaiku", "The ninth label is correct"); 87 SimpleTest.is(someSortedLabels[8], "Jaiku", "The ninth label is correct");
91 SimpleTest.is(someSortedLabels[9], "LinkedIn", "The 10th label is correct"); 88 SimpleTest.is(someSortedLabels[9], "LinkedIn", "The 10th label is correct");
92 SimpleTest.is(someSortedLabels[10], "Lufthansa", "The 11th label is correct"); 89 SimpleTest.is(someSortedLabels[10], "Lufthansa", "The 11th label is correct");
93 SimpleTest.is(someSortedLabels[11], "Microsoft Office CD Key","The 12th label is correct"); 90 SimpleTest.is(someSortedLabels[11], "Microsoft Office CD Key","The 12th label is correct");
94 SimpleTest.is(someSortedLabels[12], "MyBlogLog", "The 13th label is correct"); 91 SimpleTest.is(someSortedLabels[12], "MyBlogLog", "The 13th label is correct");
95 SimpleTest.is(someSortedLabels[13], "MySpace", "The 14th label is correct"); 92 SimpleTest.is(someSortedLabels[13], "MySpace", "The 14th label is correct");
96 SimpleTest.is(someSortedLabels[14], "SAP - Login", "The 15th label is correct"); 93 SimpleTest.is(someSortedLabels[14], "SAP - Login", "The 15th label is correct");
97 SimpleTest.is(someSortedLabels[15], "The New York Times", "The 16th label is correct"); 94 SimpleTest.is(someSortedLabels[15], "The New York Times", "The 16th label is correct");
98 SimpleTest.is(someSortedLabels[16], "Web password", "The 17th label is correct"); 95 SimpleTest.is(someSortedLabels[16], "Web password", "The 17th label is correct");
99 SimpleTest.is(someSortedLabels[17], "Web password", "The 18th label is correct"); 96 SimpleTest.is(someSortedLabels[17], "Web password", "The 18th label is correct");
100 SimpleTest.is(someSortedLabels[18], "Yahoo! Account", "The 19th label is correct"); 97 SimpleTest.is(someSortedLabels[18], "Yahoo! Account", "The 19th label is correct");
101 SimpleTest.is(someSortedLabels[19], "del.icio.us", "The 20th label is correct"); 98 SimpleTest.is(someSortedLabels[19], "del.icio.us", "The 20th label is correct");
102 }); 99 });
103 deferredResult.callback(); 100 deferredResult.callback();
104 101
105 return deferredResult; 102 return deferredResult;
106 }, 103 },
107 104
108 //------------------------------------------------------------------------- 105 //-------------------------------------------------------------------------
109 106
110 'joe_clipperz_offline_copy_getDirectLogins_test': function(someTestArgs) { 107 'joe_clipperz_offline_copy_getDirectLogins_test': function(someTestArgs) {
111 var deferredResult; 108 var deferredResult;
112 var proxy; 109 var proxy;
113 var user; 110 var user;
114 111
115 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true}); 112 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true});
116 user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}}); 113 user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}});
117 114
118 deferredResult = new Clipperz.Async.Deferred("joe_clipperz_offline_copy_getDirectLogins_test", someTestArgs); 115 deferredResult = new Clipperz.Async.Deferred("joe_clipperz_offline_copy_getDirectLogins_test", someTestArgs);
119 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']); 116 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']);
120 deferredResult.addMethod(user, 'login'); 117 deferredResult.addMethod(user, 'login');
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/index.html b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/index.html
index d762093..237c0ea 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/DataModel/index.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/DataModel/index.html
@@ -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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.PM.DataModel.* - tests</title> 28 <title>Clipperz.PM.DataModel.* - tests</title>
32 29
33 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../../../SimpleTest/TestRunner.js"></script> 31 <script type="text/javascript" src="../../../../SimpleTest/TestRunner.js"></script>
35</head> 32</head>
36<body> 33<body>
37<script> 34<script>
38TestRunner.runTests( 35TestRunner.runTests(
39 'EncryptedRemoteObject.html', 36 'EncryptedRemoteObject.html',
40 'Record.html', 37 'Record.html',
41 'DirectLogin.html', 38 'DirectLogin.html',
42 'User.html', 39 'User.html',
43 'OneTimePassword.html' 40 'OneTimePassword.html'
44); 41);
45</script> 42</script>
46</body> 43</body>
47</html> \ No newline at end of file 44</html> \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Date.html b/frontend/gamma/tests/tests/Clipperz/PM/Date.html
index 106774b..a606ca4 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/Date.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Date.html
@@ -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
29<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.PM.Date - test</title> 28 <title>Clipperz.PM.Date - test</title>
32 29
33 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
34 <!-- script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script --> 31 <!-- script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script -->
35 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 32 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
36 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 33 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
37 34
38 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 35 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
39 36
40 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
44 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
46 43
47 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script>
49 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script> 46 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script>
50 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script> 47 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script>
51 48
52</head> 49</head>
53<body> 50<body>
54<pre id="test"> 51<pre id="test">
55 <script type="text/javascript" src="Date.test.js"></script> 52 <script type="text/javascript" src="Date.test.js"></script>
56</pre> 53</pre>
57 54
58</body> 55</body>
59</html> 56</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Date.test.js b/frontend/gamma/tests/tests/Clipperz/PM/Date.test.js
index df271f1..e4b4db6 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/Date.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Date.test.js
@@ -1,90 +1,87 @@
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
29var tests = { 26var tests = {
30 27
31 //------------------------------------------------------------------------- 28 //-------------------------------------------------------------------------
32 29
33 'offlineDataParsing_test': function () { 30 'offlineDataParsing_test': function () {
34 var value; 31 var value;
35 varparsedValue; 32 varparsedValue;
36 var expectedValue; 33 var expectedValue;
37 34
38 value = 'Tue Mar 27 06:41:37 PDT 2007'; 35 value = 'Tue Mar 27 06:41:37 PDT 2007';
39 parsedValue = Clipperz.PM.Date.parse(value); 36 parsedValue = Clipperz.PM.Date.parse(value);
40 expectedValue = new Date(); 37 expectedValue = new Date();
41 expectedValue.setUTCFullYear(2007, 03 - 1, 27); 38 expectedValue.setUTCFullYear(2007, 03 - 1, 27);
42 expectedValue.setUTCHours(13, 41, 37); 39 expectedValue.setUTCHours(13, 41, 37);
43 // SimpleTest.is(parsedValue.toString(), 'Tue Mar 27 2007 15:41:37 GMT+0200 (CEST)', "the data in the format stored in the offline copy is processed correctly [1]"); 40 // SimpleTest.is(parsedValue.toString(), 'Tue Mar 27 2007 15:41:37 GMT+0200 (CEST)', "the data in the format stored in the offline copy is processed correctly [1]");
44 SimpleTest.is(parsedValue.toString(), expectedValue.toString(), "the data in the format stored in the offline copy is processed correctly [1]"); 41 SimpleTest.is(parsedValue.toString(), expectedValue.toString(), "the data in the format stored in the offline copy is processed correctly [1]");
45 42
46 value = 'Thu May 10 15:01:21 PDT 2007'; 43 value = 'Thu May 10 15:01:21 PDT 2007';
47 parsedValue = Clipperz.PM.Date.parse(value); 44 parsedValue = Clipperz.PM.Date.parse(value);
48 expectedValue = new Date(); 45 expectedValue = new Date();
49 expectedValue.setUTCFullYear(2007, 05 - 1, 10); 46 expectedValue.setUTCFullYear(2007, 05 - 1, 10);
50 expectedValue.setUTCHours(22, 01, 21); 47 expectedValue.setUTCHours(22, 01, 21);
51 // SimpleTest.is(parsedValue.toString(), 'Fri May 11 2007 00:01:21 GMT+0200 (CEST)', "the data in the format stored in the offline copy is processed correctly [3]"); 48 // SimpleTest.is(parsedValue.toString(), 'Fri May 11 2007 00:01:21 GMT+0200 (CEST)', "the data in the format stored in the offline copy is processed correctly [3]");
52 SimpleTest.is(parsedValue.toString(), expectedValue.toString(), "the data in the format stored in the offline copy is processed correctly [3]"); 49 SimpleTest.is(parsedValue.toString(), expectedValue.toString(), "the data in the format stored in the offline copy is processed correctly [3]");
53 50
54 value = 'Thu May 10 15:01:21 PST 2007'; 51 value = 'Thu May 10 15:01:21 PST 2007';
55 parsedValue = Clipperz.PM.Date.parse(value); 52 parsedValue = Clipperz.PM.Date.parse(value);
56 expectedValue = new Date(); 53 expectedValue = new Date();
57 expectedValue.setUTCFullYear(2007, 05 - 1, 10); 54 expectedValue.setUTCFullYear(2007, 05 - 1, 10);
58 expectedValue.setUTCHours(23, 01, 21); 55 expectedValue.setUTCHours(23, 01, 21);
59 // SimpleTest.is(parsedValue.toString(), 'Fri May 11 2007 01:01:21 GMT+0200 (CEST)', "the data in the format stored in the offline copy is processed correctly [3]"); 56 // SimpleTest.is(parsedValue.toString(), 'Fri May 11 2007 01:01:21 GMT+0200 (CEST)', "the data in the format stored in the offline copy is processed correctly [3]");
60 SimpleTest.is(parsedValue.toString(), expectedValue.toString(), "the data in the format stored in the offline copy is processed correctly [3]"); 57 SimpleTest.is(parsedValue.toString(), expectedValue.toString(), "the data in the format stored in the offline copy is processed correctly [3]");
61 }, 58 },
62 59
63 //------------------------------------------------------------------------- 60 //-------------------------------------------------------------------------
64 61
65 'onlineDataParsing_test': function () { 62 'onlineDataParsing_test': function () {
66 var value; 63 var value;
67 varparsedValue; 64 varparsedValue;
68 var expectedValue; 65 var expectedValue;
69 66
70 value = 'Tue, 27 March 2007 06:41:37 PDT'; 67 value = 'Tue, 27 March 2007 06:41:37 PDT';
71 parsedValue = Clipperz.PM.Date.parse(value); 68 parsedValue = Clipperz.PM.Date.parse(value);
72 expectedValue = new Date(); 69 expectedValue = new Date();
73 expectedValue.setUTCFullYear(2007, 03 - 1, 27); 70 expectedValue.setUTCFullYear(2007, 03 - 1, 27);
74 expectedValue.setUTCHours(13, 41, 37); 71 expectedValue.setUTCHours(13, 41, 37);
75 72
76 // SimpleTest.is(parsedValue.toString(), 'Tue Mar 27 2007 15:41:37 GMT+0200 (CEST)', "the data in the format returned by the server is processed correctly"); 73 // SimpleTest.is(parsedValue.toString(), 'Tue Mar 27 2007 15:41:37 GMT+0200 (CEST)', "the data in the format returned by the server is processed correctly");
77 SimpleTest.is(parsedValue.toString(), expectedValue.toString(), "the data in the format returned by the server is processed correctly"); 74 SimpleTest.is(parsedValue.toString(), expectedValue.toString(), "the data in the format returned by the server is processed correctly");
78 }, 75 },
79 76
80 //------------------------------------------------------------------------- 77 //-------------------------------------------------------------------------
81 'syntaxFix': MochiKit.Base.noop 78 'syntaxFix': MochiKit.Base.noop
82}; 79};
83 80
84//############################################################################# 81//#############################################################################
85 82
86Clipperz.PM.Strings.Languages.initSetup(); 83Clipperz.PM.Strings.Languages.initSetup();
87SimpleTest.runDeferredTests("Clipperz.PM.Date", tests, {trace:false}); 84SimpleTest.runDeferredTests("Clipperz.PM.Date", tests, {trace:false});
88 85
89 86
90 87
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Proxy.html b/frontend/gamma/tests/tests/Clipperz/PM/Proxy.html
index 573dac8..8dc533f 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/Proxy.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Proxy.html
@@ -1,65 +1,62 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.PM.Proxy - TEST</title> 28 <title>Clipperz.PM.Proxy - TEST</title>
32 29
33 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> 31 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script>
35 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 32 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
36 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 33 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
37 34
38 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
44 41
45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
51 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
52 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
53 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 50 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> 51 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script>
55 52
56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 53 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
57 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script> 54 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script>
58 55
59</head> 56</head>
60<body> 57<body>
61<pre id="test"> 58<pre id="test">
62 <script type="text/javascript" src="Proxy.test.js"></script> 59 <script type="text/javascript" src="Proxy.test.js"></script>
63</pre> 60</pre>
64</body> 61</body>
65</html> 62</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Proxy.test.js b/frontend/gamma/tests/tests/Clipperz/PM/Proxy.test.js
index 8a16a5b..8225823 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/Proxy.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Proxy.test.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
29Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
30 27
31var tests = { 28var tests = {
32 29
33 //------------------------------------------------------------------------- 30 //-------------------------------------------------------------------------
34 31
35 'simple_tests': function() { 32 'simple_tests': function() {
36 vardeferredResult; 33 vardeferredResult;
37 34
38 deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false}); 35 deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false});
39 deferredResult.addCallback(function() { 36 deferredResult.addCallback(function() {
40 var proxy; 37 var proxy;
41 38
42 proxy = new Clipperz.PM.Proxy(); 39 proxy = new Clipperz.PM.Proxy();
43 ok(proxy != null, "can create instances of the Proxy class"); 40 ok(proxy != null, "can create instances of the Proxy class");
44 is(proxy.shouldPayTolls(), false, "proxy is set to NOT pay tolls by default"); 41 is(proxy.shouldPayTolls(), false, "proxy is set to NOT pay tolls by default");
45 }); 42 });
46 43
47 deferredResult.callback(); 44 deferredResult.callback();
48 45
49 return deferredResult; 46 return deferredResult;
50 }, 47 },
51 48
52 //------------------------------------------------------------------------- 49 //-------------------------------------------------------------------------
53 50
54 'simpleTestsWithTolls_tests': function() { 51 'simpleTestsWithTolls_tests': function() {
55 vardeferredResult; 52 vardeferredResult;
56 53
57 deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false}); 54 deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false});
58 deferredResult.addCallback(function() { 55 deferredResult.addCallback(function() {
59 var proxy; 56 var proxy;
60 57
61 proxy = new Clipperz.PM.Proxy({shouldPayTolls:true}); 58 proxy = new Clipperz.PM.Proxy({shouldPayTolls:true});
62 is(proxy.shouldPayTolls(), true, "I can set Proxy to pays tolls"); 59 is(proxy.shouldPayTolls(), true, "I can set Proxy to pays tolls");
63 }); 60 });
64 61
65 deferredResult.callback(); 62 deferredResult.callback();
66 63
67 return deferredResult; 64 return deferredResult;
68 }, 65 },
69 66
70 //------------------------------------------------------------------------- 67 //-------------------------------------------------------------------------
71 'syntaxFix': MochiKit.Base.noop 68 'syntaxFix': MochiKit.Base.noop
72}; 69};
73 70
74//############################################################################# 71//#############################################################################
75 72
76runTests = function(aClassName) { 73runTests = function(aClassName) {
77 try { 74 try {
78 var deferredTests; 75 var deferredTests;
79 var aTestName; 76 var aTestName;
80 77
81 deferredTests = new Clipperz.Async.Deferred(aClassName + ".test", {trace:false}); 78 deferredTests = new Clipperz.Async.Deferred(aClassName + ".test", {trace:false});
82 79
83 aTestName = window.location.href.match(/#.*/); 80 aTestName = window.location.href.match(/#.*/);
84 if (aTestName && (aTestName != '#')) { 81 if (aTestName && (aTestName != '#')) {
85 aTestName = aTestName[0].slice(1); 82 aTestName = aTestName[0].slice(1);
86 if (aTestName in tests) { 83 if (aTestName in tests) {
87 //Clipperz.log("single test execution, via fragment identifier", aTestName); 84 //Clipperz.log("single test execution, via fragment identifier", aTestName);
88 deferredTests.addCallback(tests[aTestName]); 85 deferredTests.addCallback(tests[aTestName]);
89 deferredTests.addErrback(SimpleTest.ok, false, aTestName); 86 deferredTests.addErrback(SimpleTest.ok, false, aTestName);
90 } else { 87 } else {
91 deferredTests.addBoth(is, aTestName, null, "Wrong test name selected to run"); 88 deferredTests.addBoth(is, aTestName, null, "Wrong test name selected to run");
92 } 89 }
93 } else { 90 } else {
94 for (aTestName in tests) { 91 for (aTestName in tests) {
95 deferredTests.addCallback(tests[aTestName]); 92 deferredTests.addCallback(tests[aTestName]);
96 deferredTests.addErrback(SimpleTest.ok, false, aTestName); 93 deferredTests.addErrback(SimpleTest.ok, false, aTestName);
97 } 94 }
98 deferredTests.addBoth(is, true, true, "FINISH: completed the full stack of tests"); 95 deferredTests.addBoth(is, true, true, "FINISH: completed the full stack of tests");
99 } 96 }
100 deferredTests.addBoth(SimpleTest.finish); 97 deferredTests.addBoth(SimpleTest.finish);
101 deferredTests.callback(); 98 deferredTests.callback();
102 99
103 SimpleTest.waitForExplicitFinish(); 100 SimpleTest.waitForExplicitFinish();
104 } catch (err) { 101 } catch (err) {
105 var s = "test suite failure!\n"; 102 var s = "test suite failure!\n";
106 var o = {}; 103 var o = {};
107 var k = null; 104 var k = null;
108 for (k in err) { 105 for (k in err) {
109 // ensure unique keys?! 106 // ensure unique keys?!
110 if (!o[k]) { 107 if (!o[k]) {
111 s += k + ": " + err[k] + "\n"; 108 s += k + ": " + err[k] + "\n";
112 o[k] = err[k]; 109 o[k] = err[k];
113 } 110 }
114 } 111 }
115 ok ( false, s ); 112 ok ( false, s );
116 } 113 }
117}("Clipperz.PM.Proxy"); 114}("Clipperz.PM.Proxy");
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Toll.html b/frontend/gamma/tests/tests/Clipperz/PM/Toll.html
index 7937380..9baf167 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/Toll.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Toll.html
@@ -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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.PM.Toll - test</title> 28 <title>Clipperz.PM.Toll - test</title>
32 29
33 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> 31 <script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script>
35 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> 32 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
36 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> 33 <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">
37 34
38 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
43 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 40 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
44 41
45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 46 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
51 48
52 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script>
53 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script> 50 <script type="text/javascript" src="../../../SimpleTest/SimpleTest.Async.js"></script>
54 51
55</head> 52</head>
56<body> 53<body>
57<pre id="test"> 54<pre id="test">
58 <script type="text/javascript" src="Toll.test.js"></script> 55 <script type="text/javascript" src="Toll.test.js"></script>
59</pre> 56</pre>
60 57
61</body> 58</body>
62</html> 59</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/Toll.test.js b/frontend/gamma/tests/tests/Clipperz/PM/Toll.test.js
index b54996f..6de67c3 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/Toll.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/Toll.test.js
@@ -1,120 +1,117 @@
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.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 26Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
30 27
31var tests = { 28var tests = {
32 29
33 //------------------------------------------------------------------------- 30 //-------------------------------------------------------------------------
34/* 31/*
35 'simple_test': function() { 32 'simple_test': function() {
36 vardeferredResult; 33 vardeferredResult;
37 34
38 deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false}); 35 deferredResult = new Clipperz.Async.Deferred("simple_tests", {trace:false});
39 deferredResult.addCallback(function() { 36 deferredResult.addCallback(function() {
40 vartollTargetValue; 37 vartollTargetValue;
41 vartoll; 38 vartoll;
42 var price; 39 var price;
43 40
44 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32); 41 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32);
45 tollTargetValue = Clipperz.Crypto.SHA.sha256(tollTargetValue); 42 tollTargetValue = Clipperz.Crypto.SHA.sha256(tollTargetValue);
46 43
47 price = 1; 44 price = 1;
48 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32); 45 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32);
49 toll = new Clipperz.PM.Toll({targetValue:tollTargetValue.toHexString(), cost:price}); 46 toll = new Clipperz.PM.Toll({targetValue:tollTargetValue.toHexString(), cost:price});
50 toll.pay(); 47 toll.pay();
51 48
52 price = 5; 49 price = 5;
53 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32); 50 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32);
54 toll = new Clipperz.PM.Toll({targetValue:tollTargetValue.toHexString(), cost:price}); 51 toll = new Clipperz.PM.Toll({targetValue:tollTargetValue.toHexString(), cost:price});
55 toll.pay(); 52 toll.pay();
56 53
57 price = 6; 54 price = 6;
58 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32); 55 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32);
59 toll = new Clipperz.PM.Toll({targetValue:tollTargetValue.toHexString(), cost:price}); 56 toll = new Clipperz.PM.Toll({targetValue:tollTargetValue.toHexString(), cost:price});
60 toll.pay(); 57 toll.pay();
61 58
62 price = 7; 59 price = 7;
63 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32); 60 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32);
64 toll = new Clipperz.PM.Toll({targetValue:tollTargetValue.toHexString(), cost:price}); 61 toll = new Clipperz.PM.Toll({targetValue:tollTargetValue.toHexString(), cost:price});
65 toll.pay(); 62 toll.pay();
66 63
67 price = 7; 64 price = 7;
68 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32); 65 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32);
69 toll = new Clipperz.PM.Toll({targetValue:tollTargetValue.toHexString(), cost:price}); 66 toll = new Clipperz.PM.Toll({targetValue:tollTargetValue.toHexString(), cost:price});
70 toll.pay(); 67 toll.pay();
71 }); 68 });
72 69
73 deferredResult.callback(); 70 deferredResult.callback();
74 71
75 return deferredResult; 72 return deferredResult;
76 }, 73 },
77*/ 74*/
78 //------------------------------------------------------------------------- 75 //-------------------------------------------------------------------------
79 76
80 'deferredPay_test': function() { 77 'deferredPay_test': function() {
81 vardeferredResult; 78 vardeferredResult;
82 vartollTargetValue; 79 vartollTargetValue;
83 var toll_1, toll_5, toll_6, toll_7, toll_10, toll_16; 80 var toll_1, toll_5, toll_6, toll_7, toll_10, toll_16;
84 81
85 // tollTargetValue = Clipperz.Crypto.SHA.sha256(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32)); 82 // tollTargetValue = Clipperz.Crypto.SHA.sha256(Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32));
86 83
87 84
88 85
89 deferredResult = new Clipperz.Async.Deferred("deferredPay_tests", {trace:false}); 86 deferredResult = new Clipperz.Async.Deferred("deferredPay_tests", {trace:false});
90 87
91 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32).toHexString().substring(2); 88 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32).toHexString().substring(2);
92 toll_1 = new Clipperz.PM.Toll({targetValue:tollTargetValue, cost:1}); 89 toll_1 = new Clipperz.PM.Toll({targetValue:tollTargetValue, cost:1});
93 90
94 deferredResult.addMethod(toll_1, 'deferredPay'); 91 deferredResult.addMethod(toll_1, 'deferredPay');
95 deferredResult.addCallback(function (aResult) { 92 deferredResult.addCallback(function (aResult) {
96 SimpleTest.ok(Clipperz.PM.Toll.validate(aResult.targetValue, aResult.toll, 1), "Payed a toll of cost 1"); 93 SimpleTest.ok(Clipperz.PM.Toll.validate(aResult.targetValue, aResult.toll, 1), "Payed a toll of cost 1");
97 }); 94 });
98 deferredResult.addCallback(MochiKit.Async.wait, 1); 95 deferredResult.addCallback(MochiKit.Async.wait, 1);
99 96
100 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32).toHexString().substring(2); 97 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32).toHexString().substring(2);
101 toll_5 = new Clipperz.PM.Toll({targetValue:tollTargetValue, cost:5}); 98 toll_5 = new Clipperz.PM.Toll({targetValue:tollTargetValue, cost:5});
102 99
103 deferredResult.addMethod(toll_5, 'deferredPay'); 100 deferredResult.addMethod(toll_5, 'deferredPay');
104 deferredResult.addCallback(function (aResult) { 101 deferredResult.addCallback(function (aResult) {
105 SimpleTest.ok(Clipperz.PM.Toll.validate(aResult.targetValue, aResult.toll, 5), "Payed a toll of cost 5"); 102 SimpleTest.ok(Clipperz.PM.Toll.validate(aResult.targetValue, aResult.toll, 5), "Payed a toll of cost 5");
106 }); 103 });
107 deferredResult.addCallback(MochiKit.Async.wait, 1); 104 deferredResult.addCallback(MochiKit.Async.wait, 1);
108 105
109 106
110 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32).toHexString().substring(2); 107 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32).toHexString().substring(2);
111 toll_6 = new Clipperz.PM.Toll({targetValue:tollTargetValue, cost:6}); 108 toll_6 = new Clipperz.PM.Toll({targetValue:tollTargetValue, cost:6});
112 109
113 deferredResult.addMethod(toll_6, 'deferredPay'); 110 deferredResult.addMethod(toll_6, 'deferredPay');
114 deferredResult.addCallback(function (aResult) { 111 deferredResult.addCallback(function (aResult) {
115 SimpleTest.ok(Clipperz.PM.Toll.validate(aResult.targetValue, aResult.toll, 6), "Payed a toll of cost 6"); 112 SimpleTest.ok(Clipperz.PM.Toll.validate(aResult.targetValue, aResult.toll, 6), "Payed a toll of cost 6");
116 }); 113 });
117 deferredResult.addCallback(MochiKit.Async.wait, 1); 114 deferredResult.addCallback(MochiKit.Async.wait, 1);
118 115
119 116
120 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32).toHexString().substring(2); 117 tollTargetValue = Clipperz.Crypto.PRNG.defaultRandomGenerator().getRandomBytes(32).toHexString().substring(2);
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/MainController.html b/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/MainController.html
index 6fbdcd6..04f0e70 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/MainController.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/MainController.html
@@ -1,64 +1,61 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.PM.UI.Web.MainController - test</title> 28 <title>Clipperz.PM.UI.Web.MainController - test</title>
32 29
33 <script type="text/javascript" src="../../../../../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../../../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../../../../../../js/JSLog/jslog.js"></script> 31 <script type="text/javascript" src="../../../../../../../js/JSLog/jslog.js"></script>
35 <script type="text/javascript" src="../../../../../../SimpleTest/SimpleTest.js"></script> 32 <script type="text/javascript" src="../../../../../../SimpleTest/SimpleTest.js"></script>
36 <link rel="stylesheet" type="text/css" href="../../../../../../SimpleTest/test.css"> 33 <link rel="stylesheet" type="text/css" href="../../../../../../SimpleTest/test.css">
37 34
38 <script type='text/javascript' src='../../../../../../../js/Clipperz/YUI/Utils.js'></script> 35 <script type='text/javascript' src='../../../../../../../js/Clipperz/YUI/Utils.js'></script>
39 <script type='text/javascript' src='../../../../../../../js/Clipperz/Base.js'></script> 36 <script type='text/javascript' src='../../../../../../../js/Clipperz/Base.js'></script>
40 <script type='text/javascript' src='../../../../../../../js/Clipperz/ByteArray.js'></script> 37 <script type='text/javascript' src='../../../../../../../js/Clipperz/ByteArray.js'></script>
41 <script type='text/javascript' src='../../../../../../../js/Clipperz/Logging.js'></script> 38 <script type='text/javascript' src='../../../../../../../js/Clipperz/Logging.js'></script>
42 <script type='text/javascript' src='../../../../../../../js/Clipperz/Async.js'></script> 39 <script type='text/javascript' src='../../../../../../../js/Clipperz/Async.js'></script>
43 <script type='text/javascript' src='../../../../../../../js/Clipperz/KeyValueObjectStore.js'></script> 40 <script type='text/javascript' src='../../../../../../../js/Clipperz/KeyValueObjectStore.js'></script>
44 41
45 <script type='text/javascript' src='../../../../../../../js/Clipperz/Crypto/Base.js'></script> 42 <script type='text/javascript' src='../../../../../../../js/Clipperz/Crypto/Base.js'></script>
46 <script type='text/javascript' src='../../../../../../../js/Clipperz/Crypto/BigInt.js'></script> 43 <script type='text/javascript' src='../../../../../../../js/Clipperz/Crypto/BigInt.js'></script>
47 <script type='text/javascript' src='../../../../../../../js/Clipperz/Crypto/AES.js'></script> 44 <script type='text/javascript' src='../../../../../../../js/Clipperz/Crypto/AES.js'></script>
48 <script type='text/javascript' src='../../../../../../../js/Clipperz/Crypto/SHA.js'></script> 45 <script type='text/javascript' src='../../../../../../../js/Clipperz/Crypto/SHA.js'></script>
49 <script type='text/javascript' src='../../../../../../../js/Clipperz/Crypto/PRNG.js'></script> 46 <script type='text/javascript' src='../../../../../../../js/Clipperz/Crypto/PRNG.js'></script>
50 <script type='text/javascript' src='../../../../../../../js/Clipperz/Crypto/SRP.js'></script> 47 <script type='text/javascript' src='../../../../../../../js/Clipperz/Crypto/SRP.js'></script>
51 48
52 <script type='text/javascript' src='../../../../../../../js/Clipperz/Signal.js'></script> 49 <script type='text/javascript' src='../../../../../../../js/Clipperz/Signal.js'></script>
53 50
54 <script type='text/javascript' src='../../../../../../../js/Clipperz/PM/UI/Web/Controllers/MainController.js'></script> 51 <script type='text/javascript' src='../../../../../../../js/Clipperz/PM/UI/Web/Controllers/MainController.js'></script>
55 <script type="text/javascript" src="../../../../../../SimpleTest/SimpleTest.Async.js"></script> 52 <script type="text/javascript" src="../../../../../../SimpleTest/SimpleTest.Async.js"></script>
56 53
57</head> 54</head>
58<body> 55<body>
59<pre id="test"> 56<pre id="test">
60 <script type="text/javascript" src="MainController.test.js"></script> 57 <script type="text/javascript" src="MainController.test.js"></script>
61</pre> 58</pre>
62 59
63</body> 60</body>
64</html> 61</html>
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/MainController.test.js b/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/MainController.test.js
index 3953558..919215e 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/MainController.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/MainController.test.js
@@ -1,90 +1,87 @@
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//Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 26//Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
30 27
31var tests = { 28var tests = {
32 29
33 'isPassphraseDelegateLockSetAfterInit': function (someTestArgs) { 30 'isPassphraseDelegateLockSetAfterInit': function (someTestArgs) {
34 return Clipperz.Async.callbacks('isPassphraseDelegateLockSetAfterInit', [ 31 return Clipperz.Async.callbacks('isPassphraseDelegateLockSetAfterInit', [
35 function () { 32 function () {
36 var mainController; 33 var mainController;
37 34
38 mainController = new Clipperz.PM.UI.Web.Controllers.MainController(); 35 mainController = new Clipperz.PM.UI.Web.Controllers.MainController();
39 SimpleTest.is(true, mainController._passphraseDelegateLock.locked, 'passphraseDelegate lock is locked after MainController initialization') 36 SimpleTest.is(true, mainController._passphraseDelegateLock.locked, 'passphraseDelegate lock is locked after MainController initialization')
40 }]); 37 }]);
41 }, 38 },
42 39
43 //------------------------------------------------------------------------- 40 //-------------------------------------------------------------------------
44 41
45 'getPassphraseWithUnsetDelegate_test': function (someTestArgs) { 42 'getPassphraseWithUnsetDelegate_test': function (someTestArgs) {
46 var deferredResult; 43 var deferredResult;
47 var mainController; 44 var mainController;
48 var delegateFunction; 45 var delegateFunction;
49 46
50 mainController = new Clipperz.PM.UI.Web.Controllers.MainController(); 47 mainController = new Clipperz.PM.UI.Web.Controllers.MainController();
51 delegateFunction = function () { return "clipperz";}; 48 delegateFunction = function () { return "clipperz";};
52 49
53 MochiKit.Async.callLater(1, MochiKit.Base.method(mainController, 'setPassphraseDelegate', delegateFunction)); 50 MochiKit.Async.callLater(1, MochiKit.Base.method(mainController, 'setPassphraseDelegate', delegateFunction));
54 51
55 return Clipperz.Async.callbacks("MainController.getPassphraseWithUnsetDelegate",[ 52 return Clipperz.Async.callbacks("MainController.getPassphraseWithUnsetDelegate",[
56 MochiKit.Base.method(mainController, 'getPassphrase'), 53 MochiKit.Base.method(mainController, 'getPassphrase'),
57 function (aResult) { 54 function (aResult) {
58 SimpleTest.is(aResult, 'clipperz', "the password provided by the delegate is correct"); 55 SimpleTest.is(aResult, 'clipperz', "the password provided by the delegate is correct");
59 } 56 }
60 ], {trace:false}); 57 ], {trace:false});
61 }, 58 },
62 59
63 //------------------------------------------------------------------------- 60 //-------------------------------------------------------------------------
64 61
65 'getPassphraseWithSetDelegate_test': function (someTestArgs) { 62 'getPassphraseWithSetDelegate_test': function (someTestArgs) {
66 var deferredResult; 63 var deferredResult;
67 var mainController; 64 var mainController;
68 var delegateFunction; 65 var delegateFunction;
69 66
70 mainController = new Clipperz.PM.UI.Web.Controllers.MainController(); 67 mainController = new Clipperz.PM.UI.Web.Controllers.MainController();
71 delegateFunction = function () {return "clipperz";}; 68 delegateFunction = function () {return "clipperz";};
72 69
73 return Clipperz.Async.callbacks("MainController.getPassphraseWithSetDelegate_test",[ 70 return Clipperz.Async.callbacks("MainController.getPassphraseWithSetDelegate_test",[
74 MochiKit.Base.method(mainController, 'setPassphraseDelegate', delegateFunction), 71 MochiKit.Base.method(mainController, 'setPassphraseDelegate', delegateFunction),
75 MochiKit.Base.method(mainController, 'getPassphrase'), 72 MochiKit.Base.method(mainController, 'getPassphrase'),
76 function (aResult) { 73 function (aResult) {
77 SimpleTest.is(aResult, 'clipperz', "the password provided by the delegate is correct"); 74 SimpleTest.is(aResult, 'clipperz', "the password provided by the delegate is correct");
78 } 75 }
79 ], {trace:false}); 76 ], {trace:false});
80 }, 77 },
81 78
82 //------------------------------------------------------------------------- 79 //-------------------------------------------------------------------------
83 'syntaxFix': MochiKit.Base.noop 80 'syntaxFix': MochiKit.Base.noop
84}; 81};
85 82
86 83
87 84
88//############################################################################# 85//#############################################################################
89 86
90SimpleTest.runDeferredTests("Clipperz.PM.UI.Web.Controllers.MainController", tests, {trace:false}); 87SimpleTest.runDeferredTests("Clipperz.PM.UI.Web.Controllers.MainController", tests, {trace:false});
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/index.html b/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/index.html
index f3283b6..3f04d4f 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/index.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/Controllers/index.html
@@ -1,46 +1,43 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.PM.UI.Web.Controllers.* - tests</title> 28 <title>Clipperz.PM.UI.Web.Controllers.* - tests</title>
32 29
33 <script type="text/javascript" src="../../../../../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../../../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../../../../../SimpleTest/TestRunner.js"></script> 31 <script type="text/javascript" src="../../../../../../SimpleTest/TestRunner.js"></script>
35</head> 32</head>
36<body> 33<body>
37<script> 34<script>
38TestRunner.runTests( 35TestRunner.runTests(
39// 36//
40 //This is still a complete mess. 37 //This is still a complete mess.
41// 38//
42 'MainController.html' 39 'MainController.html'
43); 40);
44</script> 41</script>
45</body> 42</body>
46</html> \ No newline at end of file 43</html> \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/index.html b/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/index.html
index 9afa73d..250a70d 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/index.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/UI/Web/index.html
@@ -1,45 +1,42 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.PM.UI.Web* - tests</title> 28 <title>Clipperz.PM.UI.Web* - tests</title>
32 29
33 <script type="text/javascript" src="../../../../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../../../../SimpleTest/TestRunner.js"></script> 31 <script type="text/javascript" src="../../../../../SimpleTest/TestRunner.js"></script>
35</head> 32</head>
36<body> 33<body>
37<script> 34<script>
38TestRunner.runTests( 35TestRunner.runTests(
39// 36//
40 //This is still a complete mess. 37 //This is still a complete mess.
41// 38//
42); 39);
43</script> 40</script>
44</body> 41</body>
45</html> \ No newline at end of file 42</html> \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/UI/index.html b/frontend/gamma/tests/tests/Clipperz/PM/UI/index.html
index 867362b..d46ced1 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/UI/index.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/UI/index.html
@@ -1,45 +1,42 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.PM.UI.* - tests</title> 28 <title>Clipperz.PM.UI.* - tests</title>
32 29
33 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../../../SimpleTest/TestRunner.js"></script> 31 <script type="text/javascript" src="../../../../SimpleTest/TestRunner.js"></script>
35</head> 32</head>
36<body> 33<body>
37<script> 34<script>
38TestRunner.runTests( 35TestRunner.runTests(
39// 36//
40 //This is still a complete mess. 37 //This is still a complete mess.
41// 38//
42); 39);
43</script> 40</script>
44</body> 41</body>
45</html> \ No newline at end of file 42</html> \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Clipperz/PM/index.html b/frontend/gamma/tests/tests/Clipperz/PM/index.html
index acc45f7..b9bede1 100644
--- a/frontend/gamma/tests/tests/Clipperz/PM/index.html
+++ b/frontend/gamma/tests/tests/Clipperz/PM/index.html
@@ -1,56 +1,53 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.PM.* - tests</title> 28 <title>Clipperz.PM.* - tests</title>
32 29
33 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../../SimpleTest/TestRunner.js"></script> 31 <script type="text/javascript" src="../../../SimpleTest/TestRunner.js"></script>
35</head> 32</head>
36<body> 33<body>
37<script> 34<script>
38TestRunner.runTests( 35TestRunner.runTests(
39// 36//
40 //This is still a complete mess. 37 //This is still a complete mess.
41// 38//
42 //'BookmarkletProcessor.html', 39 //'BookmarkletProcessor.html',
43 'Connection.html', 40 'Connection.html',
44 'Crypto.html', 41 'Crypto.html',
45 //'Crypto_other_implementation_comparison.html', 42 //'Crypto_other_implementation_comparison.html',
46 'Crypto_performanceEvaluation.html', 43 'Crypto_performanceEvaluation.html',
47 //'CryptoPerformance_ByteArrayArray.html', 44 //'CryptoPerformance_ByteArrayArray.html',
48 //'CryptoPerformance_ByteArrayHex.html', 45 //'CryptoPerformance_ByteArrayHex.html',
49 //'CryptoPerformance_ByteArrayString.html', 46 //'CryptoPerformance_ByteArrayString.html',
50 'Date.html', 47 'Date.html',
51 'Proxy.html', 48 'Proxy.html',
52 'Toll.html' 49 'Toll.html'
53); 50);
54</script> 51</script>
55</body> 52</body>
56</html> \ No newline at end of file 53</html> \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Clipperz/RoboFormExportProcessor.html b/frontend/gamma/tests/tests/Clipperz/RoboFormExportProcessor.html
index 7fe9a84..87cde0f 100644
--- a/frontend/gamma/tests/tests/Clipperz/RoboFormExportProcessor.html
+++ b/frontend/gamma/tests/tests/Clipperz/RoboFormExportProcessor.html
@@ -1,120 +1,117 @@
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<html> 26<html>
30<head> 27<head>
31 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
32 <script type="text/javascript" src="../../../js/JSLog/jslog.js"></script> 29 <script type="text/javascript" src="../../../js/JSLog/jslog.js"></script>
33 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script> 30 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script>
34 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css"> 31 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css">
35 32
36 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script> 33 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script>
37 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script> 34 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script> 35 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script>
39 <script type='text/javascript' src='../../../js/Clipperz/KeePassExportProcessor.js'></script> 36 <script type='text/javascript' src='../../../js/Clipperz/KeePassExportProcessor.js'></script>
40 37
41 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script> 38 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script>
42</head> 39</head>
43<body> 40<body>
44<pre id="test"> 41<pre id="test">
45<script type="text/javascript"> 42<script type="text/javascript">
46try { 43try {
47 var deferredResult; 44 var deferredResult;
48 varkeePassProcessor; 45 varkeePassProcessor;
49 46
50 keePassProcessor = new Clipperz.KeePassExportProcessor(); 47 keePassProcessor = new Clipperz.KeePassExportProcessor();
51 48
52 deferredResult = new MochiKit.Async.Deferred(); 49 deferredResult = new MochiKit.Async.Deferred();
53 50
54 deferredResult.addCallback(function(aResult) { return "[Gmail]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.gmail.com\nPassword: NHy08ZCMYsqUeLQCawR7\n\n[del.icio.us]\nGroup: General\nUserName: joe69\nURL: http://del.icio.us\nPassword: tS1cIEeqp5y0wkU\n\n[Amazon]\nGroup: General\nUserName: jclipperz\nURL: http://www.amazon.com\nPassword: wvpkqNPIsqlI5g6XE9Tz\n\n[Paypal]\nGroup: General\nUserName: joeclipperz\nURL: http://www.paypal.com\nPassword: 24T4wIcvHnM28T3L\n\n[Technorati]\nGroup: General\nUserName: jclipperz\nURL: http://www.technorati.com\nPassword: UcVeNqF\n\n[American Airlines]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.aa.com\nPassword: AtrYbmi7lmSjR\n" }); 51 deferredResult.addCallback(function(aResult) { return "[Gmail]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.gmail.com\nPassword: NHy08ZCMYsqUeLQCawR7\n\n[del.icio.us]\nGroup: General\nUserName: joe69\nURL: http://del.icio.us\nPassword: tS1cIEeqp5y0wkU\n\n[Amazon]\nGroup: General\nUserName: jclipperz\nURL: http://www.amazon.com\nPassword: wvpkqNPIsqlI5g6XE9Tz\n\n[Paypal]\nGroup: General\nUserName: joeclipperz\nURL: http://www.paypal.com\nPassword: 24T4wIcvHnM28T3L\n\n[Technorati]\nGroup: General\nUserName: jclipperz\nURL: http://www.technorati.com\nPassword: UcVeNqF\n\n[American Airlines]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.aa.com\nPassword: AtrYbmi7lmSjR\n" });
55 deferredResult.addCallback(MochiKit.Base.method(keePassProcessor, 'deferredParse')); 52 deferredResult.addCallback(MochiKit.Base.method(keePassProcessor, 'deferredParse'));
56 deferredResult.addCallback(function(aResult) { is(MochiKit.Base.serializeJSON(aResult), "[{\"Title\":\"Gmail\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.gmail.com\", \"Password\":\"NHy08ZCMYsqUeLQCawR7\"}, {\"Title\":\"del.icio.us\", \"Group\":\"General\", \"UserName\":\"joe69\", \"URL\":\"http://del.icio.us\", \"Password\":\"tS1cIEeqp5y0wkU\"}, {\"Title\":\"Amazon\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.amazon.com\", \"Password\":\"wvpkqNPIsqlI5g6XE9Tz\"}, {\"Title\":\"Paypal\", \"Group\":\"General\", \"UserName\":\"joeclipperz\", \"URL\":\"http://www.paypal.com\", \"Password\":\"24T4wIcvHnM28T3L\"}, {\"Title\":\"Technorati\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.technorati.com\", \"Password\":\"UcVeNqF\"}, {\"Title\":\"American Airlines\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.aa.com\", \"Password\":\"AtrYbmi7lmSjR\"}]", "first test"); }); 53 deferredResult.addCallback(function(aResult) { is(MochiKit.Base.serializeJSON(aResult), "[{\"Title\":\"Gmail\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.gmail.com\", \"Password\":\"NHy08ZCMYsqUeLQCawR7\"}, {\"Title\":\"del.icio.us\", \"Group\":\"General\", \"UserName\":\"joe69\", \"URL\":\"http://del.icio.us\", \"Password\":\"tS1cIEeqp5y0wkU\"}, {\"Title\":\"Amazon\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.amazon.com\", \"Password\":\"wvpkqNPIsqlI5g6XE9Tz\"}, {\"Title\":\"Paypal\", \"Group\":\"General\", \"UserName\":\"joeclipperz\", \"URL\":\"http://www.paypal.com\", \"Password\":\"24T4wIcvHnM28T3L\"}, {\"Title\":\"Technorati\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.technorati.com\", \"Password\":\"UcVeNqF\"}, {\"Title\":\"American Airlines\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.aa.com\", \"Password\":\"AtrYbmi7lmSjR\"}]", "first test"); });
57 deferredResult.addErrback(function(anError) { is("ERROR", anError) }); 54 deferredResult.addErrback(function(anError) { is("ERROR", anError) });
58 55
59 deferredResult.addCallback(function(aResult) { return "[Gmail]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.gmail.com\nPassword: NHy08ZCMYsqUeLQCawR7\nNotes: Personal account\n\n[del.icio.us]\nGroup: General\nUserName: joe69\nURL: http://del.icio.us\nPassword: tS1cIEeqp5y0wkU\nNotes: social bookmarking site\n\n[Amazon]\nGroup: General\nUserName: jclipperz\nURL: http://www.amazon.com\nPassword: wvpkqNPIsqlI5g6XE9Tz\nNotes: The US online store\n\n[Paypal]\nGroup: General\nUserName: joeclipperz\nURL: http://www.paypal.com\nPassword: 24T4wIcvHnM28T3L\nNotes: Linked to my savings account\n\n[Technorati]\nGroup: General\nUserName: jclipperz\nURL: http://www.technorati.com\nPassword: UcVeNqF\nNotes: Blog ranking and searching\n\n[American Airlines]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.aa.com\nPassword: AtrYbmi7lmSjR\nNotes: Adavantages card n. 795495\n" }); 56 deferredResult.addCallback(function(aResult) { return "[Gmail]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.gmail.com\nPassword: NHy08ZCMYsqUeLQCawR7\nNotes: Personal account\n\n[del.icio.us]\nGroup: General\nUserName: joe69\nURL: http://del.icio.us\nPassword: tS1cIEeqp5y0wkU\nNotes: social bookmarking site\n\n[Amazon]\nGroup: General\nUserName: jclipperz\nURL: http://www.amazon.com\nPassword: wvpkqNPIsqlI5g6XE9Tz\nNotes: The US online store\n\n[Paypal]\nGroup: General\nUserName: joeclipperz\nURL: http://www.paypal.com\nPassword: 24T4wIcvHnM28T3L\nNotes: Linked to my savings account\n\n[Technorati]\nGroup: General\nUserName: jclipperz\nURL: http://www.technorati.com\nPassword: UcVeNqF\nNotes: Blog ranking and searching\n\n[American Airlines]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.aa.com\nPassword: AtrYbmi7lmSjR\nNotes: Adavantages card n. 795495\n" });
60 deferredResult.addCallback(MochiKit.Base.method(keePassProcessor, 'deferredParse')); 57 deferredResult.addCallback(MochiKit.Base.method(keePassProcessor, 'deferredParse'));
61 deferredResult.addCallback(function(aResult) { is(MochiKit.Base.serializeJSON(aResult), "[{\"Title\":\"Gmail\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.gmail.com\", \"Password\":\"NHy08ZCMYsqUeLQCawR7\", \"Notes\":\"Personal account\"}, {\"Title\":\"del.icio.us\", \"Group\":\"General\", \"UserName\":\"joe69\", \"URL\":\"http://del.icio.us\", \"Password\":\"tS1cIEeqp5y0wkU\", \"Notes\":\"social bookmarking site\"}, {\"Title\":\"Amazon\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.amazon.com\", \"Password\":\"wvpkqNPIsqlI5g6XE9Tz\", \"Notes\":\"The US online store\"}, {\"Title\":\"Paypal\", \"Group\":\"General\", \"UserName\":\"joeclipperz\", \"URL\":\"http://www.paypal.com\", \"Password\":\"24T4wIcvHnM28T3L\", \"Notes\":\"Linked to my savings account\"}, {\"Title\":\"Technorati\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.technorati.com\", \"Password\":\"UcVeNqF\", \"Notes\":\"Blog ranking and searching\"}, {\"Title\":\"American Airlines\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.aa.com\", \"Password\":\"AtrYbmi7lmSjR\", \"Notes\":\"Adavantages card n. 795495\"}]", "second test"); }); 58 deferredResult.addCallback(function(aResult) { is(MochiKit.Base.serializeJSON(aResult), "[{\"Title\":\"Gmail\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.gmail.com\", \"Password\":\"NHy08ZCMYsqUeLQCawR7\", \"Notes\":\"Personal account\"}, {\"Title\":\"del.icio.us\", \"Group\":\"General\", \"UserName\":\"joe69\", \"URL\":\"http://del.icio.us\", \"Password\":\"tS1cIEeqp5y0wkU\", \"Notes\":\"social bookmarking site\"}, {\"Title\":\"Amazon\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.amazon.com\", \"Password\":\"wvpkqNPIsqlI5g6XE9Tz\", \"Notes\":\"The US online store\"}, {\"Title\":\"Paypal\", \"Group\":\"General\", \"UserName\":\"joeclipperz\", \"URL\":\"http://www.paypal.com\", \"Password\":\"24T4wIcvHnM28T3L\", \"Notes\":\"Linked to my savings account\"}, {\"Title\":\"Technorati\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.technorati.com\", \"Password\":\"UcVeNqF\", \"Notes\":\"Blog ranking and searching\"}, {\"Title\":\"American Airlines\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.aa.com\", \"Password\":\"AtrYbmi7lmSjR\", \"Notes\":\"Adavantages card n. 795495\"}]", "second test"); });
62 deferredResult.addErrback(function(anError) { is("ERROR", anError) }); 59 deferredResult.addErrback(function(anError) { is("ERROR", anError) });
63 60
64 deferredResult.addCallback(function(aResult) { return "[Gmail]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.gmail.com\nPassword: NHy08ZCMYsqUeLQCawR7\nNotes: Personal account\nwith some notes stored\non multiple lines\n\n[del.icio.us]\nGroup: General\nUserName: joe69\nURL: http://del.icio.us\nPassword: tS1cIEeqp5y0wkU\nNotes: social bookmarking site\n\n[Amazon]\nGroup: General\nUserName: jclipperz\nURL: http://www.amazon.com\nPassword: wvpkqNPIsqlI5g6XE9Tz\nNotes: The US online store\n\n[Paypal]\nGroup: General\nUserName: joeclipperz\nURL: http://www.paypal.com\nPassword: 24T4wIcvHnM28T3L\nNotes: Linked to my savings account\n\n[Technorati]\nGroup: General\nUserName: jclipperz\nURL: http://www.technorati.com\nPassword: UcVeNqF\nNotes: Blog ranking and searching\n\n[American Airlines]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.aa.com\nPassword: AtrYbmi7lmSjR\nNotes: Adavantages card n. 795495\n" }); 61 deferredResult.addCallback(function(aResult) { return "[Gmail]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.gmail.com\nPassword: NHy08ZCMYsqUeLQCawR7\nNotes: Personal account\nwith some notes stored\non multiple lines\n\n[del.icio.us]\nGroup: General\nUserName: joe69\nURL: http://del.icio.us\nPassword: tS1cIEeqp5y0wkU\nNotes: social bookmarking site\n\n[Amazon]\nGroup: General\nUserName: jclipperz\nURL: http://www.amazon.com\nPassword: wvpkqNPIsqlI5g6XE9Tz\nNotes: The US online store\n\n[Paypal]\nGroup: General\nUserName: joeclipperz\nURL: http://www.paypal.com\nPassword: 24T4wIcvHnM28T3L\nNotes: Linked to my savings account\n\n[Technorati]\nGroup: General\nUserName: jclipperz\nURL: http://www.technorati.com\nPassword: UcVeNqF\nNotes: Blog ranking and searching\n\n[American Airlines]\nGroup: General\nUserName: joe.clipperz\nURL: http://www.aa.com\nPassword: AtrYbmi7lmSjR\nNotes: Adavantages card n. 795495\n" });
65 deferredResult.addCallback(MochiKit.Base.method(keePassProcessor, 'deferredParse')); 62 deferredResult.addCallback(MochiKit.Base.method(keePassProcessor, 'deferredParse'));
66 deferredResult.addCallback(function(aResult) { is(MochiKit.Base.serializeJSON(aResult), "[{\"Title\":\"Gmail\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.gmail.com\", \"Password\":\"NHy08ZCMYsqUeLQCawR7\", \"Notes\":\"Personal account\\nwith some notes stored\\non multiple lines\\n\"}, {\"Title\":\"del.icio.us\", \"Group\":\"General\", \"UserName\":\"joe69\", \"URL\":\"http://del.icio.us\", \"Password\":\"tS1cIEeqp5y0wkU\", \"Notes\":\"social bookmarking site\"}, {\"Title\":\"Amazon\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.amazon.com\", \"Password\":\"wvpkqNPIsqlI5g6XE9Tz\", \"Notes\":\"The US online store\"}, {\"Title\":\"Paypal\", \"Group\":\"General\", \"UserName\":\"joeclipperz\", \"URL\":\"http://www.paypal.com\", \"Password\":\"24T4wIcvHnM28T3L\", \"Notes\":\"Linked to my savings account\"}, {\"Title\":\"Technorati\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.technorati.com\", \"Password\":\"UcVeNqF\", \"Notes\":\"Blog ranking and searching\"}, {\"Title\":\"American Airlines\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.aa.com\", \"Password\":\"AtrYbmi7lmSjR\", \"Notes\":\"Adavantages card n. 795495\"}]", "third test"); }); 63 deferredResult.addCallback(function(aResult) { is(MochiKit.Base.serializeJSON(aResult), "[{\"Title\":\"Gmail\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.gmail.com\", \"Password\":\"NHy08ZCMYsqUeLQCawR7\", \"Notes\":\"Personal account\\nwith some notes stored\\non multiple lines\\n\"}, {\"Title\":\"del.icio.us\", \"Group\":\"General\", \"UserName\":\"joe69\", \"URL\":\"http://del.icio.us\", \"Password\":\"tS1cIEeqp5y0wkU\", \"Notes\":\"social bookmarking site\"}, {\"Title\":\"Amazon\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.amazon.com\", \"Password\":\"wvpkqNPIsqlI5g6XE9Tz\", \"Notes\":\"The US online store\"}, {\"Title\":\"Paypal\", \"Group\":\"General\", \"UserName\":\"joeclipperz\", \"URL\":\"http://www.paypal.com\", \"Password\":\"24T4wIcvHnM28T3L\", \"Notes\":\"Linked to my savings account\"}, {\"Title\":\"Technorati\", \"Group\":\"General\", \"UserName\":\"jclipperz\", \"URL\":\"http://www.technorati.com\", \"Password\":\"UcVeNqF\", \"Notes\":\"Blog ranking and searching\"}, {\"Title\":\"American Airlines\", \"Group\":\"General\", \"UserName\":\"joe.clipperz\", \"URL\":\"http://www.aa.com\", \"Password\":\"AtrYbmi7lmSjR\", \"Notes\":\"Adavantages card n. 795495\"}]", "third test"); });
67 deferredResult.addErrback(function(anError) { is("ERROR", anError) }); 64 deferredResult.addErrback(function(anError) { is("ERROR", anError) });
68 65
69 66
70 67
71 deferredResult.addBoth(SimpleTest.finish); 68 deferredResult.addBoth(SimpleTest.finish);
72 deferredResult.callback(); 69 deferredResult.callback();
73 70
74/* 71/*
75 var set; 72 var set;
76 varobject1; 73 varobject1;
77 varobject2; 74 varobject2;
78 var object3; 75 var object3;
79 76
80 set = new Clipperz.Set(); 77 set = new Clipperz.Set();
81 78
82 object1 = new Object(); 79 object1 = new Object();
83 object2 = new Object(); 80 object2 = new Object();
84 object3 = new Object(); 81 object3 = new Object();
85 82
86 object1.label = "object 1"; 83 object1.label = "object 1";
87 object2.label = "object 2"; 84 object2.label = "object 2";
88 object3.label = "object 3"; 85 object3.label = "object 3";
89 86
90 is(set.size(), 0, "A new set should be empty"); 87 is(set.size(), 0, "A new set should be empty");
91 88
92 set.add(object1); 89 set.add(object1);
93 is(set.size(), 1); 90 is(set.size(), 1);
94 is(set.contains(object1), true); 91 is(set.contains(object1), true);
95 is(set.contains(object2), false); 92 is(set.contains(object2), false);
96 93
97 set.add(object1); 94 set.add(object1);
98 is(set.size(), 1, "Adding the same object twice does not change the set content"); 95 is(set.size(), 1, "Adding the same object twice does not change the set content");
99 is(set.contains(object1), true); 96 is(set.contains(object1), true);
100 is(set.contains(object2), false); 97 is(set.contains(object2), false);
101 98
102 set.add(object2); 99 set.add(object2);
103 is(set.size(), 2); 100 is(set.size(), 2);
104 is(set.contains(object1), true); 101 is(set.contains(object1), true);
105 is(set.contains(object2), true); 102 is(set.contains(object2), true);
106 is(set.contains(object3), false); 103 is(set.contains(object3), false);
107 104
108 set.remove(object1); 105 set.remove(object1);
109 is(set.size(), 1, "Size check after removing an object"); 106 is(set.size(), 1, "Size check after removing an object");
110 is(set.contains(object1), false); 107 is(set.contains(object1), false);
111 is(set.contains(object2), true); 108 is(set.contains(object2), true);
112 is(set.contains(object3), false); 109 is(set.contains(object3), false);
113 110
114 set.remove(object1); 111 set.remove(object1);
115 is(set.size(), 1, "Removing twice the same object does not change the set content"); 112 is(set.size(), 1, "Removing twice the same object does not change the set content");
116 is(set.contains(object1), false); 113 is(set.contains(object1), false);
117 is(set.contains(object2), true); 114 is(set.contains(object2), true);
118 is(set.contains(object3), false); 115 is(set.contains(object3), false);
119 116
120 set.empty(); 117 set.empty();
diff --git a/frontend/gamma/tests/tests/Clipperz/Set.html b/frontend/gamma/tests/tests/Clipperz/Set.html
index e5814bc..82bb249 100644
--- a/frontend/gamma/tests/tests/Clipperz/Set.html
+++ b/frontend/gamma/tests/tests/Clipperz/Set.html
@@ -1,54 +1,51 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.Set - test</title> 28 <title>Clipperz.Set - test</title>
32 29
33 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 30 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
34 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script> 31 <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script>
35 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css"> 32 <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css">
36 33
37 <script type='text/javascript' src='../../../js/JSON/json2.js'></script> 34 <script type='text/javascript' src='../../../js/JSON/json2.js'></script>
38 35
39 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script> 36 <script type='text/javascript' src='../../../js/Clipperz/YUI/Utils.js'></script>
40 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script> 37 <script type='text/javascript' src='../../../js/Clipperz/Base.js'></script>
41 <script type='text/javascript' src='../../../js/Clipperz/Set.js'></script> 38 <script type='text/javascript' src='../../../js/Clipperz/Set.js'></script>
42 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script> 39 <script type='text/javascript' src='../../../js/Clipperz/Logging.js'></script>
43 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script> 40 <script type='text/javascript' src='../../../js/Clipperz/Async.js'></script>
44 41
45 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script> 42 <script type="text/javascript" src="../../SimpleTest/SimpleTest.Async.js"></script>
46</head> 43</head>
47<body> 44<body>
48 45
49<pre id="test"> 46<pre id="test">
50<script type="text/javascript" src="Set.test.js"></script> 47<script type="text/javascript" src="Set.test.js"></script>
51</pre> 48</pre>
52</body> 49</body>
53</html> 50</html>
54 51
diff --git a/frontend/gamma/tests/tests/Clipperz/Set.test.js b/frontend/gamma/tests/tests/Clipperz/Set.test.js
index 8122b07..f908816 100644
--- a/frontend/gamma/tests/tests/Clipperz/Set.test.js
+++ b/frontend/gamma/tests/tests/Clipperz/Set.test.js
@@ -1,120 +1,117 @@
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
29var tests = { 26var tests = {
30 27
31 //------------------------------------------------------------------------- 28 //-------------------------------------------------------------------------
32 29
33 'set_test': function (someTestArgs) { 30 'set_test': function (someTestArgs) {
34 var deferredResult; 31 var deferredResult;
35 32
36 deferredResult = new Clipperz.Async.Deferred("set_test", someTestArgs); 33 deferredResult = new Clipperz.Async.Deferred("set_test", someTestArgs);
37 deferredResult.addCallback(function () { 34 deferredResult.addCallback(function () {
38 var set; 35 var set;
39 varobject1; 36 varobject1;
40 varobject2; 37 varobject2;
41 var object3; 38 var object3;
42 39
43 set = new Clipperz.Set(); 40 set = new Clipperz.Set();
44 41
45 object1 = new Object(); 42 object1 = new Object();
46 object2 = new Object(); 43 object2 = new Object();
47 object3 = new Object(); 44 object3 = new Object();
48 45
49 object1.label = "object 1"; 46 object1.label = "object 1";
50 object2.label = "object 2"; 47 object2.label = "object 2";
51 object3.label = "object 3"; 48 object3.label = "object 3";
52 49
53 is(set.size(), 0, "A new set should be empty"); 50 is(set.size(), 0, "A new set should be empty");
54 51
55 set.add(object1); 52 set.add(object1);
56 is(set.size(), 1); 53 is(set.size(), 1);
57 is(set.contains(object1), true); 54 is(set.contains(object1), true);
58 is(set.contains(object2), false); 55 is(set.contains(object2), false);
59 56
60 set.add(object1); 57 set.add(object1);
61 is(set.size(), 1, "Adding the same object twice does not change the set content"); 58 is(set.size(), 1, "Adding the same object twice does not change the set content");
62 is(set.contains(object1), true); 59 is(set.contains(object1), true);
63 is(set.contains(object2), false); 60 is(set.contains(object2), false);
64 61
65 set.add(object2); 62 set.add(object2);
66 is(set.size(), 2); 63 is(set.size(), 2);
67 is(set.contains(object1), true); 64 is(set.contains(object1), true);
68 is(set.contains(object2), true); 65 is(set.contains(object2), true);
69 is(set.contains(object3), false); 66 is(set.contains(object3), false);
70 67
71 set.remove(object1); 68 set.remove(object1);
72 is(set.size(), 1, "Size check after removing an object"); 69 is(set.size(), 1, "Size check after removing an object");
73 is(set.contains(object1), false); 70 is(set.contains(object1), false);
74 is(set.contains(object2), true); 71 is(set.contains(object2), true);
75 is(set.contains(object3), false); 72 is(set.contains(object3), false);
76 73
77 set.remove(object1); 74 set.remove(object1);
78 is(set.size(), 1, "Removing twice the same object does not change the set content"); 75 is(set.size(), 1, "Removing twice the same object does not change the set content");
79 is(set.contains(object1), false); 76 is(set.contains(object1), false);
80 is(set.contains(object2), true); 77 is(set.contains(object2), true);
81 is(set.contains(object3), false); 78 is(set.contains(object3), false);
82 79
83 set.empty(); 80 set.empty();
84 is(set.size(), 0); 81 is(set.size(), 0);
85 82
86 { 83 {
87 varitems; 84 varitems;
88 varpopulatedSet; 85 varpopulatedSet;
89 86
90 items = ["item1", "item2", "item3"]; 87 items = ["item1", "item2", "item3"];
91 88
92 populatedSet = new Clipperz.Set({'items': items}); 89 populatedSet = new Clipperz.Set({'items': items});
93 is(populatedSet.size(), 3); 90 is(populatedSet.size(), 3);
94 is(populatedSet.contains("item1"), true); 91 is(populatedSet.contains("item1"), true);
95 is(populatedSet.contains("item4"), false); 92 is(populatedSet.contains("item4"), false);
96 93
97 items.splice(0, items.length); 94 items.splice(0, items.length);
98 is(populatedSet.size(), 3); 95 is(populatedSet.size(), 3);
99 } 96 }
100 97
101 { 98 {
102 varitems; 99 varitems;
103 vardeletedItems; 100 vardeletedItems;
104 101
105 items = ["item1", "item2", "item3"]; 102 items = ["item1", "item2", "item3"];
106 103
107 set = new Clipperz.Set({'items': items}); 104 set = new Clipperz.Set({'items': items});
108 deletedItems = ["item1"]; 105 deletedItems = ["item1"];
109 set.remove(deletedItems); 106 set.remove(deletedItems);
110 is(set.size(), 2, "here I am"); 107 is(set.size(), 2, "here I am");
111 is(set.contains("item1"), false); 108 is(set.contains("item1"), false);
112 is(set.contains("item2"), true); 109 is(set.contains("item2"), true);
113 110
114 set = new Clipperz.Set({'items': items}); 111 set = new Clipperz.Set({'items': items});
115 deletedItems = ["item1", "item2"]; 112 deletedItems = ["item1", "item2"];
116 set.remove(deletedItems); 113 set.remove(deletedItems);
117 is(set.size(), 1); 114 is(set.size(), 1);
118 is(set.contains("item1"), false); 115 is(set.contains("item1"), false);
119 is(set.contains("item2"), false); 116 is(set.contains("item2"), false);
120 117
diff --git a/frontend/gamma/tests/tests/Clipperz/index.html b/frontend/gamma/tests/tests/Clipperz/index.html
index b4c4992..d4556eb 100644
--- a/frontend/gamma/tests/tests/Clipperz/index.html
+++ b/frontend/gamma/tests/tests/Clipperz/index.html
@@ -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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz.* - tests</title> 28 <title>Clipperz.* - tests</title>
32 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 29 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
33 <script type="text/javascript" src="../../SimpleTest/TestRunner.js"></script> 30 <script type="text/javascript" src="../../SimpleTest/TestRunner.js"></script>
34</head> 31</head>
35<body> 32<body>
36<script> 33<script>
37TestRunner.runTests( 34TestRunner.runTests(
38 'Async.html', 35 'Async.html',
39 'Base.html', 36 'Base.html',
40 'ByteArray.html', 37 'ByteArray.html',
41 'Date.html', 38 'Date.html',
42 'DOM.html', 39 'DOM.html',
43 'KeePassExportProcessor.html', 40 'KeePassExportProcessor.html',
44 'RoboFormExportProcessor.html', 41 'RoboFormExportProcessor.html',
45 'Set.html' 42 'Set.html'
46); 43);
47</script> 44</script>
48</body> 45</body>
49</html> \ No newline at end of file 46</html> \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Clipperz/index_googleCode.html b/frontend/gamma/tests/tests/Clipperz/index_googleCode.html
index 6e3249c..3878809 100644
--- a/frontend/gamma/tests/tests/Clipperz/index_googleCode.html
+++ b/frontend/gamma/tests/tests/Clipperz/index_googleCode.html
@@ -1,50 +1,47 @@
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<html> 26<html>
30<head> 27<head>
31 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
32 <script type="text/javascript" src="../../SimpleTest/TestRunner.js"></script> 29 <script type="text/javascript" src="../../SimpleTest/TestRunner.js"></script>
33</head> 30</head>
34<body> 31<body>
35<script> 32<script>
36TestRunner.runTests( 33TestRunner.runTests(
37 'Base.html', 34 'Base.html',
38 'ByteArray.html', 35 'ByteArray.html',
39 'NotificationCenter.html', 36 'NotificationCenter.html',
40 'Set.html', 37 'Set.html',
41 'Crypto/AES.html', 38 'Crypto/AES.html',
42 'Crypto/BigInt.html', 39 'Crypto/BigInt.html',
43 'Crypto/PRNG.html', 40 'Crypto/PRNG.html',
44 'Crypto/SHA.html', 41 'Crypto/SHA.html',
45 'Crypto/ECC.html', 42 'Crypto/ECC.html',
46 'Crypto/SRP.html' 43 'Crypto/SRP.html'
47); 44);
48</script> 45</script>
49</body> 46</body>
50</html> \ No newline at end of file 47</html> \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Clipperz/index_testECC.html b/frontend/gamma/tests/tests/Clipperz/index_testECC.html
index 46572ab..bac17d1 100644
--- a/frontend/gamma/tests/tests/Clipperz/index_testECC.html
+++ b/frontend/gamma/tests/tests/Clipperz/index_testECC.html
@@ -1,50 +1,47 @@
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<html> 26<html>
30<head> 27<head>
31 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> 28 <script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script>
32 <script type="text/javascript" src="../../SimpleTest/TestRunner.js"></script> 29 <script type="text/javascript" src="../../SimpleTest/TestRunner.js"></script>
33</head> 30</head>
34<body> 31<body>
35<script> 32<script>
36TestRunner.runTests( 33TestRunner.runTests(
37 //'Base.html', 34 //'Base.html',
38 'ByteArray.html', 35 'ByteArray.html',
39 //'Crypto/AES.html', 36 //'Crypto/AES.html',
40 'Crypto/BigInt.html', 37 'Crypto/BigInt.html',
41 //'Crypto/PRNG.html', 38 //'Crypto/PRNG.html',
42 //'Crypto/SHA.html', 39 //'Crypto/SHA.html',
43 //'Crypto/SRP.html', 40 //'Crypto/SRP.html',
44 //'Crypto/ECC.html', 41 //'Crypto/ECC.html',
45 'Crypto/ECC.BinaryField.FiniteField.html', 42 'Crypto/ECC.BinaryField.FiniteField.html',
46 'Crypto/ECC.BinaryField.Value.html' 43 'Crypto/ECC.BinaryField.Value.html'
47); 44);
48</script> 45</script>
49</body> 46</body>
50</html> \ No newline at end of file 47</html> \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Components/CardDialogEditing/CardDialogEditing_test.js b/frontend/gamma/tests/tests/Components/CardDialogEditing/CardDialogEditing_test.js
index 21b6af6..d2136af 100644
--- a/frontend/gamma/tests/tests/Components/CardDialogEditing/CardDialogEditing_test.js
+++ b/frontend/gamma/tests/tests/Components/CardDialogEditing/CardDialogEditing_test.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.Tests.CardDialogEditing'); 26Clipperz.Base.module('Clipperz.Tests.CardDialogEditing');
30 27
31Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 28Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
32Clipperz.PM.Strings.Languages.initSetup(); 29Clipperz.PM.Strings.Languages.initSetup();
33 30
34Clipperz.Tests.CardDialogEditing.Tester = function(args) { 31Clipperz.Tests.CardDialogEditing.Tester = function(args) {
35 args = args || {}; 32 args = args || {};
36 33
37 Clipperz.Tests.CardDialogEditing.Tester.superclass.constructor.call(this, args); 34 Clipperz.Tests.CardDialogEditing.Tester.superclass.constructor.call(this, args);
38 //#this._user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}}); 35 //#this._user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}});
39 this._user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}}); 36 this._user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}});
40 37
41 return this; 38 return this;
42}; 39};
43 40
44Clipperz.Base.extend(Clipperz.Tests.CardDialogEditing.Tester, Object, { 41Clipperz.Base.extend(Clipperz.Tests.CardDialogEditing.Tester, Object, {
45 42
46 'toString': function() { 43 'toString': function() {
47 return "Clipperz.Tests.CardDialogEditing.Tester"; 44 return "Clipperz.Tests.CardDialogEditing.Tester";
48 }, 45 },
49 46
50 //------------------------------------------------------------------------- 47 //-------------------------------------------------------------------------
51 48
52 'user': function () { 49 'user': function () {
53 return this._user; 50 return this._user;
54 }, 51 },
55 52
56 //------------------------------------------------------------------------- 53 //-------------------------------------------------------------------------
57 54
58 'run': function () { 55 'run': function () {
59 var deferredResult; 56 var deferredResult;
60 var proxy; 57 var proxy;
61 varcardDialogController; 58 varcardDialogController;
62 varcardDialogComponent; 59 varcardDialogComponent;
63 60
64 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false}); 61 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false});
65 62
66 deferredResult = new Clipperz.Async.Deferred("CardDialogEditing_test.init", {trace:false}); 63 deferredResult = new Clipperz.Async.Deferred("CardDialogEditing_test.init", {trace:false});
67 //# deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_offline_copy_data']); 64 //# deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_offline_copy_data']);
68 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data_newVersion']); 65 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data_newVersion']);
69 deferredResult.addMethod(this.user(), 'login'); 66 deferredResult.addMethod(this.user(), 'login');
70 //# deferredResult.addMethod(this.user(), 'getRecord', '8280842f41162b673335b63860637e8472e8bbff0efa2bc78b0dbc5e09712e13'); 67 //# deferredResult.addMethod(this.user(), 'getRecord', '8280842f41162b673335b63860637e8472e8bbff0efa2bc78b0dbc5e09712e13');
71 68
72 // deferredResult.addMethod(this.user(), 'getRecord', '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80'); //Linkedin 69 // deferredResult.addMethod(this.user(), 'getRecord', '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80'); //Linkedin
73 // deferredResult.addMethod(this.user(), 'getRecord', '084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d'); //Example Attack 70 // deferredResult.addMethod(this.user(), 'getRecord', '084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d'); //Example Attack
74 deferredResult.addMethod(this.user(), 'getRecord', '13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551'); //Amazon 71 deferredResult.addMethod(this.user(), 'getRecord', '13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551'); //Amazon
75 // deferredResult.addMethod(this.user(), 'getRecord', '507f38b06d587d8889698ae1ebbba7ef8f0539b82550dd25779fd9ee88fc0c7a'); //MyBlogLog 72 // deferredResult.addMethod(this.user(), 'getRecord', '507f38b06d587d8889698ae1ebbba7ef8f0539b82550dd25779fd9ee88fc0c7a'); //MyBlogLog
76 // deferredResult.addMethod(this.user(), 'getRecord', '6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728'); //Del.icio.us 73 // deferredResult.addMethod(this.user(), 'getRecord', '6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728'); //Del.icio.us
77 // deferredResult.addMethod(this.user(), 'getRecord', '6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a'); //Microsoft Office Key 74 // deferredResult.addMethod(this.user(), 'getRecord', '6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a'); //Microsoft Office Key
78 // deferredResult.addMethod(this.user(), 'getRecord', '6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18'); //The NewYork Times 75 // deferredResult.addMethod(this.user(), 'getRecord', '6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18'); //The NewYork Times
79 // deferredResult.addMethod(this.user(), 'getRecord', '7bb69b6366a8012f181c01e368ba18d4f7a82bcabb4959189736ad124c4bbfbb'); //Web Password 76 // deferredResult.addMethod(this.user(), 'getRecord', '7bb69b6366a8012f181c01e368ba18d4f7a82bcabb4959189736ad124c4bbfbb'); //Web Password
80 // deferredResult.addMethod(this.user(), 'getRecord', '8b18e8593b5bc2f7ea39a5fab222047034ef2f380fee05be0fa6e1c0972fea39'); //Jaiku 77 // deferredResult.addMethod(this.user(), 'getRecord', '8b18e8593b5bc2f7ea39a5fab222047034ef2f380fee05be0fa6e1c0972fea39'); //Jaiku
81 // deferredResult.addMethod(this.user(), 'getRecord', '9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291'); //Home Burglar Alarm 78 // deferredResult.addMethod(this.user(), 'getRecord', '9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291'); //Home Burglar Alarm
82 // deferredResult.addMethod(this.user(), 'getRecord', 'ca01bcb7691f70818feed46c9a2a91883ac543997a395535aedbb49de166690c'); //MySpace 79 // deferredResult.addMethod(this.user(), 'getRecord', 'ca01bcb7691f70818feed46c9a2a91883ac543997a395535aedbb49de166690c'); //MySpace
83 // deferredResult.addMethod(this.user(), 'getRecord', 'd620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045'); //American Airlines 80 // deferredResult.addMethod(this.user(), 'getRecord', 'd620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045'); //American Airlines
84 // deferredResult.addMethod(this.user(), 'getRecord', 'de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4'); //Luftansa 81 // deferredResult.addMethod(this.user(), 'getRecord', 'de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4'); //Luftansa
85 // deferredResult.addMethod(this.user(), 'getRecord', 'eeda70e0392261967bda71c3764da78989c45bbd2bb7be6b941b90f81d9b81b5'); //Google Account 82 // deferredResult.addMethod(this.user(), 'getRecord', 'eeda70e0392261967bda71c3764da78989c45bbd2bb7be6b941b90f81d9b81b5'); //Google Account
86 // deferredResult.addMethod(this.user(), 'getRecord', 'f215d89bf4583c12f5ed4f4330f488dad3fffa448f4dc784f15ef135dda2c732'); //Expedia 83 // deferredResult.addMethod(this.user(), 'getRecord', 'f215d89bf4583c12f5ed4f4330f488dad3fffa448f4dc784f15ef135dda2c732'); //Expedia
87 // deferredResult.addMethod(this.user(), 'getRecord', 'fe21497ef7435d31f9746c132e4b5ecf5aac5f13b5961ddb55d2bdc3409f28f6'); //Bloglines 84 // deferredResult.addMethod(this.user(), 'getRecord', 'fe21497ef7435d31f9746c132e4b5ecf5aac5f13b5961ddb55d2bdc3409f28f6'); //Bloglines
88 85
89 // deferredResult.addMethod(this.user(), 'getRecord', '5cdac63b317f3942da38f3a3de3b7f0e5d6678200951c6216230295550f63fb4'); //WEB PASSWORD (0) 86 // deferredResult.addMethod(this.user(), 'getRecord', '5cdac63b317f3942da38f3a3de3b7f0e5d6678200951c6216230295550f63fb4'); //WEB PASSWORD (0)
90 // deferredResult.addMethod(this.user(), 'getRecord', '36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113'); //DIGG (1) 87 // deferredResult.addMethod(this.user(), 'getRecord', '36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113'); //DIGG (1)
91 // deferredResult.addMethod(this.user(), 'getRecord', 'c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065'); //SAP (2) 88 // deferredResult.addMethod(this.user(), 'getRecord', 'c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065'); //SAP (2)
92 // deferredResult.addMethod(this.user(), 'getRecord', 'd5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d'); //YAHOO (4) 89 // deferredResult.addMethod(this.user(), 'getRecord', 'd5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d'); //YAHOO (4)
93 90
94 // deferredResult.addMethod(this.user(), 'createNewRecord'); 91 // deferredResult.addMethod(this.user(), 'createNewRecord');
95 92
96/* 93/*
97 deferredResult.addCallback(function (aRecord) { 94 deferredResult.addCallback(function (aRecord) {
98 return Clipperz.Async.callbacks("CardDialogEditing_test.init - setup new record", [ 95 return Clipperz.Async.callbacks("CardDialogEditing_test.init - setup new record", [
99 MochiKit.Base.method(aRecord, 'setLabel', "Clipperz staging site"), 96 MochiKit.Base.method(aRecord, 'setLabel', "Clipperz staging site"),
100 MochiKit.Base.method(aRecord, 'addField', {'label':"URL", 'value':"http://d6.clipperz.com", 'isHidden':false}), 97 MochiKit.Base.method(aRecord, 'addField', {'label':"URL", 'value':"http://d6.clipperz.com", 'isHidden':false}),
101 MochiKit.Base.method(aRecord, 'addField', {'label':"USERNAME", 'value':"staging", 'isHidden':false}), 98 MochiKit.Base.method(aRecord, 'addField', {'label':"USERNAME", 'value':"staging", 'isHidden':false}),
102 MochiKit.Base.method(aRecord, 'addField', {'label':"PASSWORD", 'value':"drupal", 'isHidden':true}), 99 MochiKit.Base.method(aRecord, 'addField', {'label':"PASSWORD", 'value':"drupal", 'isHidden':true}),
103 100
104 MochiKit.Base.method(aRecord, 'createNewDirectLogin'), 101 MochiKit.Base.method(aRecord, 'createNewDirectLogin'),
105 function (aDirectLogin) { 102 function (aDirectLogin) {
106 return Clipperz.Async.callbacks("CardDialogEditing_test.init - setup new record [directLogin]", [ 103 return Clipperz.Async.callbacks("CardDialogEditing_test.init - setup new record [directLogin]", [
107 MochiKit.Base.method(aDirectLogin, 'setLabel', 'Clipperz staging site'), 104 MochiKit.Base.method(aDirectLogin, 'setLabel', 'Clipperz staging site'),
108 MochiKit.Base.method(aDirectLogin, 'setFavicon', 'http://www.apple.com/favicon.ico'), 105 MochiKit.Base.method(aDirectLogin, 'setFavicon', 'http://www.apple.com/favicon.ico'),
109 MochiKit.Base.method(aDirectLogin, 'setBookmarkletConfiguration', '{ "page":{"title":"HTTP authentication"},\n "form":{"attributes": {\n "action":"",\n "type":"http_auth"\n }, "inputs": [\n {"type":"text","name":"url","value":""},\n {"type":"text","name":"username","value":""},\n {"type":"password","name":"password","value":""}\n ]}, "version":"0.2.3"}'), 106 MochiKit.Base.method(aDirectLogin, 'setBookmarkletConfiguration', '{ "page":{"title":"HTTP authentication"},\n "form":{"attributes": {\n "action":"",\n "type":"http_auth"\n }, "inputs": [\n {"type":"text","name":"url","value":""},\n {"type":"text","name":"username","value":""},\n {"type":"password","name":"password","value":""}\n ]}, "version":"0.2.3"}'),
110 107
111 MochiKit.Base.method(aDirectLogin, 'bindFormFieldWithLabelToRecordFieldWithLabel', 'url', 'URL'), 108 MochiKit.Base.method(aDirectLogin, 'bindFormFieldWithLabelToRecordFieldWithLabel', 'url', 'URL'),
112 MochiKit.Base.method(aDirectLogin, 'bindFormFieldWithLabelToRecordFieldWithLabel', 'username', 'USERNAME'), 109 MochiKit.Base.method(aDirectLogin, 'bindFormFieldWithLabelToRecordFieldWithLabel', 'username', 'USERNAME'),
113 MochiKit.Base.method(aDirectLogin, 'bindFormFieldWithLabelToRecordFieldWithLabel', 'password', 'PASSWORD') 110 MochiKit.Base.method(aDirectLogin, 'bindFormFieldWithLabelToRecordFieldWithLabel', 'password', 'PASSWORD')
114 ], {trace:false}); 111 ], {trace:false});
115 }, 112 },
116 MochiKit.Base.partial(MochiKit.Async.succeed, aRecord) 113 MochiKit.Base.partial(MochiKit.Async.succeed, aRecord)
117 ], {trace:false}); 114 ], {trace:false});
118 }); 115 });
119 116
120 // deferredResult.addMethod(this.user(), 'createNewRecord'); 117 // deferredResult.addMethod(this.user(), 'createNewRecord');
diff --git a/frontend/gamma/tests/tests/Components/CardDialogEditing/User.data.js b/frontend/gamma/tests/tests/Components/CardDialogEditing/User.data.js
index 8065144..0e55ff5 100644
--- a/frontend/gamma/tests/tests/Components/CardDialogEditing/User.data.js
+++ b/frontend/gamma/tests/tests/Components/CardDialogEditing/User.data.js
@@ -1,120 +1,117 @@
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
29testData = { 26testData = {
30 27
31 //------------------------------------------------------------------------- 28 //-------------------------------------------------------------------------
32 29
33 'simpleLogin_001': { 30 'simpleLogin_001': {
34 'users': [ 31 'users': [
35 { 32 {
36 'username': "joe", 33 'username': "joe",
37 'passphrase': "eoj", 34 'passphrase': "eoj",
38 'version': "0.2", 35 'version': "0.2",
39 'connectionVersion':"0.2", 36 'connectionVersion':"0.2",
40 'records':{ 37 'records':{
41 'record 1': { 38 'record 1': {
42 'notes':"Some notes here", 39 'notes':"Some notes here",
43 'fields':[ 40 'fields':[
44 { 'name': "username", 'value': "joe", 'type': "text" }, 41 { 'name': "username", 'value': "joe", 'type': "text" },
45 { 'name': "password", 'value': "1234", 'type': "password"} 42 { 'name': "password", 'value': "1234", 'type': "password"}
46 ], 43 ],
47 'directLogins':{ 44 'directLogins':{
48 "record 1 direct login": { 45 "record 1 direct login": {
49 'configuration':"", 46 'configuration':"",
50 'bindings':[ 47 'bindings':[
51 ], 48 ],
52 'favicon':"http://www.example.com/favicon.ico" 49 'favicon':"http://www.example.com/favicon.ico"
53 } 50 }
54 } 51 }
55 } 52 }
56 }, 53 },
57 'otp':[ 54 'otp':[
58 "12345678 90abcdef 12345678 90abcdef", 55 "12345678 90abcdef 12345678 90abcdef",
59 "fedcba09 87654321 fedcba09 87654321" 56 "fedcba09 87654321 fedcba09 87654321"
60 ] 57 ]
61 } 58 }
62 ] 59 ]
63 }, 60 },
64 61
65 //------------------------------------------------------------------------- 62 //-------------------------------------------------------------------------
66 63
67 'joe_clipperz_offline_copy_data': { 64 'joe_clipperz_offline_copy_data': {
68 users:{ 65 users:{
69 'catchAllUser': { 66 'catchAllUser': {
70 __masterkey_test_value__: 'masterkey', 67 __masterkey_test_value__: 'masterkey',
71 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00', 68 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00',
72 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00' 69 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00'
73 }, 70 },
74 'f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674': { 71 'f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674': {
75 s: '186f0c40bf73f2af236eaa6c429df225efa933050c9aae65240e93b7b362e3ee', 72 s: '186f0c40bf73f2af236eaa6c429df225efa933050c9aae65240e93b7b362e3ee',
76 v: 'ac61a6e325ecf329926a86084f591d8852d0ad3e4a6080f2adc901b82395ecaf', 73 v: 'ac61a6e325ecf329926a86084f591d8852d0ad3e4a6080f2adc901b82395ecaf',
77 version: '0.2', 74 version: '0.2',
78 maxNumberOfRecords: '100', 75 maxNumberOfRecords: '100',
79 userDetails: '{"records":{"index":{"eeda70e0392261967bda71c3764da78989c45bbd2bb7be6b941b90f81d9b81b5":"0","13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551":"1","062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80":"2","ca01bcb7691f70818feed46c9a2a91883ac543997a395535aedbb49de166690c":"3","507f38b06d587d8889698ae1ebbba7ef8f0539b82550dd25779fd9ee88fc0c7a":"4","d5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d":"5","de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4":"6","d620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045":"7","f215d89bf4583c12f5ed4f4330f488dad3fffa448f4dc784f15ef135dda2c732":"8","36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113":"9","fe21497ef7435d31f9746c132e4b5ecf5aac5f13b5961ddb55d2bdc3409f28f6":"10","6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18":"11","9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291":"12","6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a":"13","6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728":"14","8b18e8593b5bc2f7ea39a5fab222047034ef2f380fee05be0fa6e1c0972fea39":"15","084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d":"16","7bb69b6366a8012f181c01e368ba18d4f7a82bcabb4959189736ad124c4bbfbb":"17","5cdac63b317f3942da38f3a3de3b7f0e5d6678200951c6216230295550f63fb4":"18","c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065":"19"},"data":"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"},"directLogins":{"index":{"61e87fdc4f1d9112e3b30c1f6812d095dcdb24f014c83319091eb6c9899ec348":"0","989593d4c48929f0c8f1581aa96969c622807e99619ed4732026e967530a68ad":"1","9f7979368fa29f66c44bd97ecaf6c545abc800b1c7bb21b7655a68e1514c3906":"2","dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496":"3","aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584":"4","1f9bfd677b531a03168d3f8bd8afabb5357244a7bc355dff50bd6c0a072114a6":"5","a48e38845713462ecc9f827149eeaae87da882031f98ef8ebbf9ee9537b63468":"6","6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f":"7","2df54059e78f5771f23bd285cce19595b38331b73d67020424d9a1b2257db09c":"8","065cd0c270e5e8ce50e4ea8e3828dccdae18c01ab030813d756a87d03fe68784":"9","ddbc8d01300a4f10631cbde09e1246332eade3a877a2205209f9eb9e5bc9da0b":"10","9b7a30e667afc9f76ba77600658b2c13bff52432d444261d39bf3d069a160afe":"11","9fd2929cde3d32d9cbc5f1d787f2f64729a5e12a14410556b31c0c099762c46a":"12","f695fc36ac56bead80c0d20a88e01e382819c18dc268f1679551b7c83db7cb14":"13","f22dc41ffabef4b3bc8f7af804fec975bd50718098322a673cbe4aaff9464ae1":"14","03251dc1cbc5398789e4c4b45c52cfac3fcd8c1a4f19a81fa68fc6feae31d55c":"15","a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e":"16","cb9ae0bba1957075ccdbfd3b3481704d62087687a2ac7c411a4f07d444bde0f7":"17","7e1d069b7fa57c03bd7bf48807520feb953157834503aaff8c9d493f37dea69d":"18","24404059cabc63b2dbff0f42ba57183108b8189ef53ab62fa25141a1caea824b":"19","33cf9758477460a8056deef0295a1ebe65b39b392c361ceb920a83edacfe5d78":"20","e9a16316f330e3d150f6ffd194f6fd8acd1426757b097de4b88ca0db875202e4":"21"},"data":"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"},"preferences":{"data":"EZMrwxNFFd1sMGycoYE7IrlGGrfLixLUnLZmWMkFysfISe2ay3ueO0PGCApuKqh9hA=="},"oneTimePasswords":{"data":"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"},"version":"0.1"}', 76 userDetails: '{"records":{"index":{"eeda70e0392261967bda71c3764da78989c45bbd2bb7be6b941b90f81d9b81b5":"0","13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551":"1","062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80":"2","ca01bcb7691f70818feed46c9a2a91883ac543997a395535aedbb49de166690c":"3","507f38b06d587d8889698ae1ebbba7ef8f0539b82550dd25779fd9ee88fc0c7a":"4","d5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d":"5","de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4":"6","d620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045":"7","f215d89bf4583c12f5ed4f4330f488dad3fffa448f4dc784f15ef135dda2c732":"8","36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113":"9","fe21497ef7435d31f9746c132e4b5ecf5aac5f13b5961ddb55d2bdc3409f28f6":"10","6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18":"11","9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291":"12","6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a":"13","6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728":"14","8b18e8593b5bc2f7ea39a5fab222047034ef2f380fee05be0fa6e1c0972fea39":"15","084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d":"16","7bb69b6366a8012f181c01e368ba18d4f7a82bcabb4959189736ad124c4bbfbb":"17","5cdac63b317f3942da38f3a3de3b7f0e5d6678200951c6216230295550f63fb4":"18","c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065":"19"},"data":"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"},"directLogins":{"index":{"61e87fdc4f1d9112e3b30c1f6812d095dcdb24f014c83319091eb6c9899ec348":"0","989593d4c48929f0c8f1581aa96969c622807e99619ed4732026e967530a68ad":"1","9f7979368fa29f66c44bd97ecaf6c545abc800b1c7bb21b7655a68e1514c3906":"2","dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496":"3","aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584":"4","1f9bfd677b531a03168d3f8bd8afabb5357244a7bc355dff50bd6c0a072114a6":"5","a48e38845713462ecc9f827149eeaae87da882031f98ef8ebbf9ee9537b63468":"6","6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f":"7","2df54059e78f5771f23bd285cce19595b38331b73d67020424d9a1b2257db09c":"8","065cd0c270e5e8ce50e4ea8e3828dccdae18c01ab030813d756a87d03fe68784":"9","ddbc8d01300a4f10631cbde09e1246332eade3a877a2205209f9eb9e5bc9da0b":"10","9b7a30e667afc9f76ba77600658b2c13bff52432d444261d39bf3d069a160afe":"11","9fd2929cde3d32d9cbc5f1d787f2f64729a5e12a14410556b31c0c099762c46a":"12","f695fc36ac56bead80c0d20a88e01e382819c18dc268f1679551b7c83db7cb14":"13","f22dc41ffabef4b3bc8f7af804fec975bd50718098322a673cbe4aaff9464ae1":"14","03251dc1cbc5398789e4c4b45c52cfac3fcd8c1a4f19a81fa68fc6feae31d55c":"15","a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e":"16","cb9ae0bba1957075ccdbfd3b3481704d62087687a2ac7c411a4f07d444bde0f7":"17","7e1d069b7fa57c03bd7bf48807520feb953157834503aaff8c9d493f37dea69d":"18","24404059cabc63b2dbff0f42ba57183108b8189ef53ab62fa25141a1caea824b":"19","33cf9758477460a8056deef0295a1ebe65b39b392c361ceb920a83edacfe5d78":"20","e9a16316f330e3d150f6ffd194f6fd8acd1426757b097de4b88ca0db875202e4":"21"},"data":"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"},"preferences":{"data":"EZMrwxNFFd1sMGycoYE7IrlGGrfLixLUnLZmWMkFysfISe2ay3ueO0PGCApuKqh9hA=="},"oneTimePasswords":{"data":"jufmL1KVY0YBl8MSaL413hGtw12I/+sFnumcfeVku9RRMBmXaXCfE/vYnraxZyPxJxVS3qFRWDKsSGR3pScdACSwlBD+mzjifRn2SCfXWutD1/oJiqiMvq3YFzwyZJiXx+oS5u8DOTieQT9HZYt0pUmAod9QHiq2NAkueVjvRkZI1saRlWGtNXCaJIHwpuFJpHBDSD//6D9DYeTdVUeFEbej+4oNYpBCkyE1G2OL6q50YRBYp9yARRiy9juKHRWFvZiSeMGEJQS0f2gaP+xZkb9Z4qrfDgAZ1F7oDbPksr2SOYlSsm0bqa6c+7Wtopdo63Urf7Ze3Wg9n8TGBk6H88boseR8e3sHudlmtO1oLxcB9p3z/NTceF6SvWyJWTxHeMe6O72dZVmSnZlXhD/IJamRt13HLk3g05d8oXfrXM3iMhIGQ+EsXMxZfKdXlZpyYtjWD5tcQTKz7M5Qo3SFmdkwDu4jH5ke+bD8CeluDcMaHF6KHfdV8nEsmsjGwrH6lqSCT/9kBO5ETqUJKloOhJpFpNS/EN7nxjXF/QbqnUmWV4wngdyYmk9goNZNfZv7C2ouiyys55/QEfGsIsvEPPSfO670oJuncTyfFngFj2tdh2JpJ5vytuoRNLOm7XPM3hDCvZCOpUnjbm+jt4AvdOGU7ID8a2mtZFjb2noP5emAxTg6MO6f3+44eTkUcbCDskO5fe6jd0pTdODk21Ilp7WUjFwxEdJG8tRrGYpLooProJExamL7WShm/S/nhJL4+euW+1UIDjcZJA+a7aGdMSC63qBvrEsNyf57SDBk/o2eNJHs2sndCzgvK42IKGKcipq9D1Gyos9JQsA3My9ARMt68V/5FfzOkgPO6mblOsQMoTyQj/OCLzITEBfqA5IufhljSEkD3CLkfkeVwVf1NB2SsTPXJFChnynfsK7cMFy0O2XBNByCRTQDqBDBYo673tI1KTGnT4gLSAwCt96lq8UkEdt51jjkAJcvBXkbswuw3hvhtzLJ302hkN9CIHJrEN0oss5mWlxIxYrCyqE3ABME3FCR9r+V7exuIaQn6mdJTkMcRbYmVQQkexsROh2cdx8I/tuMN4ECWEAL948k9vEPZfgaQirWnrTtHoxLzNAUBDSQfzYXd8yr0T4vAHLnXaUalWPgLamJJ3eR+LDFcDQVvFkaomsF3RpOIS5fswTBFuRKGKEBSIINc9AyC4DtkSmDMTF2S0TgpnGdK94ZS8C/PM8WEsX738echa5qZG5qG0f+koOUUrbaORcDqaktCuDmsgFTYiUv1JxFskTvS/t/EM2Y0MEKVLZBsoG+4WXz4XEE0VJFoI9glaYll96WH/iMbaVXRnDwjyE62CAk/8DXIf//MJQVyO6ElFsvCrDfH03yLpCJhqwHv+mD5sRctVaq6Cp5Ts3bzdFeiLCX9rhSaqdG5AuMk4dCInlywxrsOvBfNaDBjX7NGCULri6px2T53FNiH6ineVjr9TfgY2uoMyevLiQsGd3GHS4wnxiUfIyz7/Yav5an4o82cHhMVOLvfKwF8C2dJQDg9woJ3ju1ha66UA2XGScJVd93w3OWco78+giXBE96R3CebxgaWQ5Zif6nI+FJnw6OipaRgd7EyrLrQTWadvTiYLfDknlsxFZd4XVs33/3xxF3RyoVsIFO7cpEX/BLVB69v+1TJvLdiyGwSl5FUKbrcrXycZ67uTKtHyAI/vrzwwoQxYV8e32xW86blEjH4pq/Zrijm1wGw7IrD9fYVgEO7nnWpE/ac85LrDaJpGOdZ+slcVWM6THHR9boKJGLtuc8V81gDVNtZ/f4Hx5YXZWKIIfpe57BybWejdQ8ZACWK+mXOGczyXJ88B4nIvaKnRlhSszQryAZzSqJry2k3t1v73BzL48TZWJ6yu1rFmqAUk2V5DCA4XnyHfPuiG8hZfTuu1YXQ+iBgbyDipTwozQqyTv3SxLBPTFxKZLuabMn7ZTo/kLXGfVO/2va58bv6kzW6WjwZ0D481N1Nyd1kZUw1lyxXklcAzZqaHUiIsy+/5DgV/qULYFqEBMNMA7QvBfRN4VZRlnNiemgzkBQXj+JGJOWZMz5cvss291rj1fAe91s10nkZoaddDrvfgfjTq6n9XLSyGSmnrIDMLVc9+YuDtuaQ4gwuiLG2X57Jzrc/Xy7jdZ82G1j+cfT/8Pvb40i1K9aid0Z3xl/tm7jBAqQ91Ehkbo6c8jUVPaQsRcfTumtsNf+Xa5PJmQtEGEPCUlGN6F7eFB5eOLXQFdsLRL1x+SzhS7k3aDri9sTMwYQij26AexwwzAPqcOOkkfbYf0lov5Gxx0LhsZAetDZCRFlxjDRDS8jE8dKBBXkWFazF8K2rdQXKNlclwezCEDBwUWhoJs/H5ndJ38MpSPfKo1YsVvlxi4QFyOTDPJIstCCvYnCjj1r7SrkRrbcuevITRTxD4FKgPCdsYFlGfhS1zWb23DWYWo6fPQ1/zlnN01gZStxsZKepB3NnxbTSjBgTSmzG6RzZajv6BtqivtvOa1hI2KZQtVGCDU2+NGmfbJ5TTJehYiTEPeBF9TfLRP9rktQTUngj2ohv+1TDL0jL3YWiSA9TJzYonsincEVy1aRUeGVazWF2Rrq2o4hCBp12BfuMGHOdVkg9rMXdusyl2y75YyEkcBNMz4zi8i1lVhjUg16rCR48uKJ9QO2KBbjoGTx13uxIXTR8ufXx6mW7iW3qVx+6k7BQGKlMo1G64O8HQ2UrboS/tCqlP0W+7XB2C3EaZMqfKeYcuzM4MLkM6CT2GKYmJPyevXLKE749BM8zRQUcrWieAxmyD+g0QQ4T1fl0RTNEFB1/0BIg3fQQHCLGUTahXwt0EluG9iNPVgmFwwBHybH6gmIEZ4xnD8I7QPwgYY3JF407NdLkHjOuXrP+GODGEvX49MMaUigUUO2fkdw9EJbaidhx6j1EsFpQrz4Lt/5sAu5c9B/365TXtnNnmaPkaFj1q+3ezVXUroimRqxZ9BMaTm7J1hjubO+Dxjb2QlR/UApvQ0ty8aZpmIrMi0xjfoodIMiH6IYdw3VRZSqup7irWWpnJhef2qqtcpoxdiYZaFyf5u2XpZqEnAJpTupqOg+qJN/7aQt6ZmP7POFPwUwzwAsfTYk2EwMlTVAXrawZZEYu2JZ4kIjazo1LgyuuWTieEuONnye8Hr9p70RjwWUdlErlPSCKKn6JRdsM2no13F3151cfgx8I02J9vDuiNa3vfJfmRnBOly5jq6Wlnm2rJN6YYQHwbikoq3lJvkX5ZANDRKFlMWKK42+fXLBuofAZShFt6xvlY384aYsv3EcR42GOLrgYPQy0a7lr/FS4mM2ErNwNYnCz/xTuPBjgXXplbAnyA3jpKdPN1EfUM1oA4kZjECmkXZOuyEQxrndS9eOGbPM6S131zpdWEw9dWSZdkSI34+OkLfAKf6W6z4G4Z+cMRrkYLHs+BavJOum4XTjyyXHIKhQiqz9mgEf+ulodXi+LNsbq1eCcGPWrGg+GNwN1SjJHZm78gidyrlEF6xuPCaZRvGQtk59nuJULOZWkC3Ns/EcFiAql8cu37Lp842fsHHeCVOq0e8ZII4TPg9HKPwDD4HLSg4frBzyeZwK0nN30C5ATCxWdL4Q60cKtZyIEM7Kn1a/vifsAbe019Ui3ovTOCYiTCAdOLaAL/NdpgWA/fDNOsTlPvnEYkq+4+bV3Wyye9ddxICD4TnC2yvXvjw4C/WnYYceJy5R4KamIJueEGIHGp22/0DSF3H4ji3QoUDiFB/H+CA8A2q9LO9q0NYcf2P5q2MfdJGu4bd49g68mltj35pRnGQaafflXY9VmMfrlAbBYfUnsKOb3DOUpq8asveE41/6WkGcXFIuSABcbBf0cHIfBn41wRWQhoCm/JL8pfqEZC/paBdFBRW4FjKkxhbg4BPvBL0aQyGGkU8eH8tr8nm4YN1HMFF/s3s8+9FPoBxPuXLoGSg7Rvdz+g=="},"version":"0.1"}',
80 statistics: 'SfGy/4mpXQdDOv+Bcfie4Yt/', 77 statistics: 'SfGy/4mpXQdDOv+Bcfie4Yt/',
81 userDetailsVersion: '0.3', 78 userDetailsVersion: '0.3',
82 records: { 79 records: {
83 '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80': { 80 '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80': {
84 data: '7sgxSQlqR+wh3g06M2+sWp7raQxjjQ9jLIz2OcEB7SckuQcXNrhMlDCbL6ncSljtzgqhioWrOB409kIG8lc7h6ekghOE/Mhi7rVwAiRfNGB7r3mYxpEXRe96O2RG7E+NcSp8ezl+5gJ9D0o1abXPeFQYGcr95hUioCfyY+xrxY8TJVwdb9nHkYvBdKV7rCl1dTxgsKWK3nlo1T7e5uyiz5YUAE6BrCtTFAqtprLI/xOpRti9C+llohS7D6s8hkCBPZfp3chKFDrgpsCBFLhXN8jrBKSjHi1PJdRQzpJsgrxyeBj0dZx3gTsYOXqrYgdIzFUo7K1Tqb30yNprBiDMr7j0YYXiSvEb7OuOIP+HTXGN+yt09bk9LggyY6Fh0e+tenjQQ3soySN/XznOBpEjXbzXoz6fR1MXVnE9GgaX99LVNqwWfq2rIBdSE/FfspRiWP3BY5jIrEkNeRclS05U1zw3K3wxOL+cB9r2IynSXnK8QcrDNNRZ0W3PhsSFfByUXuviLSEOPuJa1mYP29L9Lj/WyHL1Gyl8xLbt2H41S6+wvIleKMuc7teH6wPXbnYphvbwBowoI6HZTEFkz3dQKhhY6VF/81iCXsuaz6BjyrzFX6SkQ4S3lN1tv4opQMJFvnmHb6EkXqVWfeIXzJIJO+owL4vDOf4okpAD+HPjjlVXhq6fvyM5UBIK9+tzJW78X/zifrQOfWRIhwjVsfUdZWmZ/S35vnHWNuXkM8GBYrDysqxanDtah3U8XLAiIhFtBOzpzr6qGaNDOKKgG3K8QXT4bYHOq1rQVUwzQuKhlCyStrRMQrC5Ry251xmLy6dKfppRarVeGDtzB/30BbtFNdZmzMNG2g+Jj5tFCrEtCMvMiQEWZHMU3tGMFxDef/KKdv1fFTJC16jmaUiCHUZmNjB3EO9R6xPVcMlAVKf57n3efrpRk/GTmm9JhAFkuF/wsveH4JjPpDUdkHYFu5tHbb30sbga3ufBAXbQL4ck10S24akU/cKraFGLvuKGaR2U0i6ih911TBSf3pAfZ3RFbBhVIl+6rSknC5+IXoBR7MRstBPW/xC9pQVjN5Qyn0g3aUjUSI+q4jcTuvMl32NtTJbWRMGhfkrpVzypZTyPnIh6XJkyBghlUARXw23MlbjiZxmY4ScDmcWZRZJWIknHlqjDKFDKNnwrfnEI9qWyMDno+jA/DEQz0mnpdZYEsoz1/qAmAeDt89vx', 81 data: '7sgxSQlqR+wh3g06M2+sWp7raQxjjQ9jLIz2OcEB7SckuQcXNrhMlDCbL6ncSljtzgqhioWrOB409kIG8lc7h6ekghOE/Mhi7rVwAiRfNGB7r3mYxpEXRe96O2RG7E+NcSp8ezl+5gJ9D0o1abXPeFQYGcr95hUioCfyY+xrxY8TJVwdb9nHkYvBdKV7rCl1dTxgsKWK3nlo1T7e5uyiz5YUAE6BrCtTFAqtprLI/xOpRti9C+llohS7D6s8hkCBPZfp3chKFDrgpsCBFLhXN8jrBKSjHi1PJdRQzpJsgrxyeBj0dZx3gTsYOXqrYgdIzFUo7K1Tqb30yNprBiDMr7j0YYXiSvEb7OuOIP+HTXGN+yt09bk9LggyY6Fh0e+tenjQQ3soySN/XznOBpEjXbzXoz6fR1MXVnE9GgaX99LVNqwWfq2rIBdSE/FfspRiWP3BY5jIrEkNeRclS05U1zw3K3wxOL+cB9r2IynSXnK8QcrDNNRZ0W3PhsSFfByUXuviLSEOPuJa1mYP29L9Lj/WyHL1Gyl8xLbt2H41S6+wvIleKMuc7teH6wPXbnYphvbwBowoI6HZTEFkz3dQKhhY6VF/81iCXsuaz6BjyrzFX6SkQ4S3lN1tv4opQMJFvnmHb6EkXqVWfeIXzJIJO+owL4vDOf4okpAD+HPjjlVXhq6fvyM5UBIK9+tzJW78X/zifrQOfWRIhwjVsfUdZWmZ/S35vnHWNuXkM8GBYrDysqxanDtah3U8XLAiIhFtBOzpzr6qGaNDOKKgG3K8QXT4bYHOq1rQVUwzQuKhlCyStrRMQrC5Ry251xmLy6dKfppRarVeGDtzB/30BbtFNdZmzMNG2g+Jj5tFCrEtCMvMiQEWZHMU3tGMFxDef/KKdv1fFTJC16jmaUiCHUZmNjB3EO9R6xPVcMlAVKf57n3efrpRk/GTmm9JhAFkuF/wsveH4JjPpDUdkHYFu5tHbb30sbga3ufBAXbQL4ck10S24akU/cKraFGLvuKGaR2U0i6ih911TBSf3pAfZ3RFbBhVIl+6rSknC5+IXoBR7MRstBPW/xC9pQVjN5Qyn0g3aUjUSI+q4jcTuvMl32NtTJbWRMGhfkrpVzypZTyPnIh6XJkyBghlUARXw23MlbjiZxmY4ScDmcWZRZJWIknHlqjDKFDKNnwrfnEI9qWyMDno+jA/DEQz0mnpdZYEsoz1/qAmAeDt89vx',
85 version: '0.2', 82 version: '0.2',
86 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 83 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
87 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 84 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
88 accessDate: 'Mon Jan 19 16:10:04 CET 2009', 85 accessDate: 'Mon Jan 19 16:10:04 CET 2009',
89 currentVersion: '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3', 86 currentVersion: '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3',
90 versions: { 87 versions: {
91 '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3': { 88 '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3': {
92 header: '####', 89 header: '####',
93 data: 'GCNNIhDQjMJQZGVSf+95fPtU6eOnFWVhuGm86r8WZGVR2Gf2EjbG1OJ0ZIGpZ/AXgirCMpo5AFxJe0Bay8IYg+xmBqMFhwFxzAgJBYCIts+raSaNRipuY8dTEqDxAqD1cChcG8EhSoiFgQ0fG0I7nNEUDJi0pIt4/ygBcwvAhuAenEp9ZW+oQA0+YysPQRqkz3IieFaOoSEbe5/SqpUilV4q1gTVyzNXvrxzxx+rlvEyGFgFN+vgtUZ1NrwlPk4gVksTpylvv6CFaMGEWKhgMG6efo0rJckKosaJTu1pldJdnmMK4EKNMLOd+jZ6pEhEhYyadrA4+zYU5TlmZA6ASzTaps8piSwZodoi9qY0ch2StK4mAbzeEGe2HdfHuAU9Tyq3Ppk3+VfNdKgpQfYrQOiSlXbKzK636tzXTN/gyrfOTHjBrRl117ywibgSX63ayAYNfcLpKotC', 90 data: 'GCNNIhDQjMJQZGVSf+95fPtU6eOnFWVhuGm86r8WZGVR2Gf2EjbG1OJ0ZIGpZ/AXgirCMpo5AFxJe0Bay8IYg+xmBqMFhwFxzAgJBYCIts+raSaNRipuY8dTEqDxAqD1cChcG8EhSoiFgQ0fG0I7nNEUDJi0pIt4/ygBcwvAhuAenEp9ZW+oQA0+YysPQRqkz3IieFaOoSEbe5/SqpUilV4q1gTVyzNXvrxzxx+rlvEyGFgFN+vgtUZ1NrwlPk4gVksTpylvv6CFaMGEWKhgMG6efo0rJckKosaJTu1pldJdnmMK4EKNMLOd+jZ6pEhEhYyadrA4+zYU5TlmZA6ASzTaps8piSwZodoi9qY0ch2StK4mAbzeEGe2HdfHuAU9Tyq3Ppk3+VfNdKgpQfYrQOiSlXbKzK636tzXTN/gyrfOTHjBrRl117ywibgSX63ayAYNfcLpKotC',
94 version: '0.2', 91 version: '0.2',
95 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 92 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
96 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 93 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
97 accessDate: 'Mon Jan 19 16:10:04 CET 2009' 94 accessDate: 'Mon Jan 19 16:10:04 CET 2009'
98 } 95 }
99 } 96 }
100 }, 97 },
101 '084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d': { 98 '084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d': {
102 data: 'fGzBu1On7e/6rAoSB1a4fq/CkS8Be/T8UP5cQ93asBTWndSYu2lW4DQ4SXQXSindIi3OnNx/f6SNv/extb7OrMLREF92wXI045ipPwy+DIICb+cQNMJ82Sh4cXaIcAWcyrm+MYri3qq9LBKbpwkILcebZidJ86lmKYHJozUezmfbMcwNCljHs/gYkHVzVcuw9L52Ugc6wC7sjsshh+UH6i4/2Frlrophtx+b1vervNd8eoYiKnedHVXVfW7UJcQoF27eHFgzwYnGvRW0KNXFFhqmPb61TSkIvNdCCvBKDP4SXrWvGgzU89wipvWdUPpQ+fCT6Mp3hPRrbJxwMunmjujZOzBld/HkjnXoiNfBb5akA280WvdyzWYATrjV1ZFx8yQY8G0+lRt/MxjKDc38w4y+Rf5WeRbXboJMvFatwooHUggk6qSRmZVvgOmFmNuDRnRYIFzqK3JclhJeVasnqhR6RiGSowc1Ffr1HhcZCMnXpQABGBkZcHD/zw6YjHRyh9Plw7XAm0xb16HMDtiwt7WLJpxLH/HP99j/A2hvMGWiUiFCaYv7AzyEPTmYbN32D1IsAEE/GC3FG0HypGTBolP8wpAfTRdlvWpJz8oRRdwuLV3Pgpu+kXh5sQyeZI6tnuMPQFmRDcMN1oo3E5V5V585nVMnKTFcXhBzD4UnoV+DQNkG/+iSPybQzz/EZmucEqGEYyjI3kl4MAX8UMEUxE4JO0fF8MzyBI13nxknowAceEammx1dGVaJCoIOdhadaPVPyOzXM1Vp1erVm5k4TsxSx1pll+GOm6hVoNHIuQLDueaMEpRxMhfwc8cDyXURqRGPTgTc0bint5xVjo10fnpX1gcdc/AWL6y3tXM80NW+uFJ4GI7VzyzfcMRzTiRaGi19z8MIx8PbIVGh2sw4FhgGujNsPrpuESvUVT+17M0+v8oEoABNlcizTMFs/sA1uqlPumFASltzmViAzClOsDuCh069hFLjdk/Ex5jy4vPYlwOT8Uq9DJC9ZWuZgiI1DrhWN/8QGAEGxxbvnSZPNCQ9kpD5p+iabinLLWOAirVNgKwIRJRyAu/uR9xKd7J9Wxq8q/ii+y5lGilbo2g24wbDwrkXYVhqp/4J0g+p8Wv1NBjCTSCqV39WEizUCRHo3ee9HnQnBJQDOyTBRuz2odTJtJ5tLYjWXZRdFzFSJrEq+Z1z3oq7LnhZy3YWaFXPeKmBCemMthtNt0nL', 99 data: 'fGzBu1On7e/6rAoSB1a4fq/CkS8Be/T8UP5cQ93asBTWndSYu2lW4DQ4SXQXSindIi3OnNx/f6SNv/extb7OrMLREF92wXI045ipPwy+DIICb+cQNMJ82Sh4cXaIcAWcyrm+MYri3qq9LBKbpwkILcebZidJ86lmKYHJozUezmfbMcwNCljHs/gYkHVzVcuw9L52Ugc6wC7sjsshh+UH6i4/2Frlrophtx+b1vervNd8eoYiKnedHVXVfW7UJcQoF27eHFgzwYnGvRW0KNXFFhqmPb61TSkIvNdCCvBKDP4SXrWvGgzU89wipvWdUPpQ+fCT6Mp3hPRrbJxwMunmjujZOzBld/HkjnXoiNfBb5akA280WvdyzWYATrjV1ZFx8yQY8G0+lRt/MxjKDc38w4y+Rf5WeRbXboJMvFatwooHUggk6qSRmZVvgOmFmNuDRnRYIFzqK3JclhJeVasnqhR6RiGSowc1Ffr1HhcZCMnXpQABGBkZcHD/zw6YjHRyh9Plw7XAm0xb16HMDtiwt7WLJpxLH/HP99j/A2hvMGWiUiFCaYv7AzyEPTmYbN32D1IsAEE/GC3FG0HypGTBolP8wpAfTRdlvWpJz8oRRdwuLV3Pgpu+kXh5sQyeZI6tnuMPQFmRDcMN1oo3E5V5V585nVMnKTFcXhBzD4UnoV+DQNkG/+iSPybQzz/EZmucEqGEYyjI3kl4MAX8UMEUxE4JO0fF8MzyBI13nxknowAceEammx1dGVaJCoIOdhadaPVPyOzXM1Vp1erVm5k4TsxSx1pll+GOm6hVoNHIuQLDueaMEpRxMhfwc8cDyXURqRGPTgTc0bint5xVjo10fnpX1gcdc/AWL6y3tXM80NW+uFJ4GI7VzyzfcMRzTiRaGi19z8MIx8PbIVGh2sw4FhgGujNsPrpuESvUVT+17M0+v8oEoABNlcizTMFs/sA1uqlPumFASltzmViAzClOsDuCh069hFLjdk/Ex5jy4vPYlwOT8Uq9DJC9ZWuZgiI1DrhWN/8QGAEGxxbvnSZPNCQ9kpD5p+iabinLLWOAirVNgKwIRJRyAu/uR9xKd7J9Wxq8q/ii+y5lGilbo2g24wbDwrkXYVhqp/4J0g+p8Wv1NBjCTSCqV39WEizUCRHo3ee9HnQnBJQDOyTBRuz2odTJtJ5tLYjWXZRdFzFSJrEq+Z1z3oq7LnhZy3YWaFXPeKmBCemMthtNt0nL',
103 version: '0.3', 100 version: '0.3',
104 creationDate: 'Fri Oct 17 16:49:20 CEST 2008', 101 creationDate: 'Fri Oct 17 16:49:20 CEST 2008',
105 updateDate: 'Mon Oct 27 08:58:49 CET 2008', 102 updateDate: 'Mon Oct 27 08:58:49 CET 2008',
106 accessDate: 'Mon Jan 19 16:09:39 CET 2009', 103 accessDate: 'Mon Jan 19 16:09:39 CET 2009',
107 currentVersion: '6fd60c5709a4808444f43f7bbd872363d76703957f613076538ba2f9161206ac', 104 currentVersion: '6fd60c5709a4808444f43f7bbd872363d76703957f613076538ba2f9161206ac',
108 versions: { 105 versions: {
109 '0ae362285f103722abbd046eee2b7d10aeae6a1d05cbaf2081392ce9df882bcf': { 106 '0ae362285f103722abbd046eee2b7d10aeae6a1d05cbaf2081392ce9df882bcf': {
110 header: '####', 107 header: '####',
111 data: 'sG6TUmPSEPFpiJ5YdtghWHmHbvUK63tZCZ+Q5iz2ALas//jN+lZCBhZcjEwPEJskBkK2R0MyAh14wWGh2bBHMjsokgTe+L+x+0c/Zi0epE/IC9gtOBhsTe/hZ2e2xOGF/SbzET3DAAYXvxduZ36f7SvvFnrkkKvpj8wGSdTFcBmzqMb9DL2bRyRCLGLMzE3F1a0q5CufCIRz2TgHm+Uw+kfvvwC7ig/F/5iLW90Ypz3vmEtMEFYFHZ9a8Oh0rsXGfevbMhFqALoywzihQEe/NiB8dwn7GEdYKSQ35rhvZh29ULWOZinqmg0ONe0HYaxx7DbKsVoue57S0CIUlgHLajzHfLfqQg2sFI0OT8TnHsGg0YZ6mM2EdKmEjJiER0cP', 108 data: 'sG6TUmPSEPFpiJ5YdtghWHmHbvUK63tZCZ+Q5iz2ALas//jN+lZCBhZcjEwPEJskBkK2R0MyAh14wWGh2bBHMjsokgTe+L+x+0c/Zi0epE/IC9gtOBhsTe/hZ2e2xOGF/SbzET3DAAYXvxduZ36f7SvvFnrkkKvpj8wGSdTFcBmzqMb9DL2bRyRCLGLMzE3F1a0q5CufCIRz2TgHm+Uw+kfvvwC7ig/F/5iLW90Ypz3vmEtMEFYFHZ9a8Oh0rsXGfevbMhFqALoywzihQEe/NiB8dwn7GEdYKSQ35rhvZh29ULWOZinqmg0ONe0HYaxx7DbKsVoue57S0CIUlgHLajzHfLfqQg2sFI0OT8TnHsGg0YZ6mM2EdKmEjJiER0cP',
112 version: '0.3', 109 version: '0.3',
113 creationDate: 'Fri Oct 17 17:00:31 CEST 2008', 110 creationDate: 'Fri Oct 17 17:00:31 CEST 2008',
114 updateDate: 'Fri Oct 17 17:00:31 CEST 2008', 111 updateDate: 'Fri Oct 17 17:00:31 CEST 2008',
115 accessDate: 'Fri Oct 17 17:00:31 CEST 2008' 112 accessDate: 'Fri Oct 17 17:00:31 CEST 2008'
116 }, 113 },
117 '10f45664bbd979a92f37886f1ecc6e52e49798b16dc997aecd37259ad9b2090e': { 114 '10f45664bbd979a92f37886f1ecc6e52e49798b16dc997aecd37259ad9b2090e': {
118 header: '####', 115 header: '####',
119 data: 'RdKVaV/WWWchrCse3KtcXd47Bfm6IAwjqVUpaxoed3HeunI42AAm7xYYSjeK8edHpbNRJbhobBAX5OZtWIp/HmgkobKM8CIiWxrWz89FqyrbnPD7+fXdtgF2yTax/0sC1l0ibncdOuJKX6U829oPlXCpXIOjlomc4wEEAD/5V6FbORvdZ9IE/ME3LsG2y02cT2tIpx6+R6wC/PKXhZA2UDsTE6R2Op2BtIzpVORZLXsdyAp/4wvWQxq90i9cEpbsVQsMB10JVyNHNsRTFhIlHi9MVCaMxQvcrwRElMj/Y9x3RbsFzSGKqFLqdg7Fn/U+KYkpYtsgHv9hraPIb9lV5FH16+iItU/HBM6FGezIj1ZkoQ+dgjPfSjTZzgzDYwyb', 116 data: 'RdKVaV/WWWchrCse3KtcXd47Bfm6IAwjqVUpaxoed3HeunI42AAm7xYYSjeK8edHpbNRJbhobBAX5OZtWIp/HmgkobKM8CIiWxrWz89FqyrbnPD7+fXdtgF2yTax/0sC1l0ibncdOuJKX6U829oPlXCpXIOjlomc4wEEAD/5V6FbORvdZ9IE/ME3LsG2y02cT2tIpx6+R6wC/PKXhZA2UDsTE6R2Op2BtIzpVORZLXsdyAp/4wvWQxq90i9cEpbsVQsMB10JVyNHNsRTFhIlHi9MVCaMxQvcrwRElMj/Y9x3RbsFzSGKqFLqdg7Fn/U+KYkpYtsgHv9hraPIb9lV5FH16+iItU/HBM6FGezIj1ZkoQ+dgjPfSjTZzgzDYwyb',
120 version: '0.3', 117 version: '0.3',
diff --git a/frontend/gamma/tests/tests/Components/CardDialogEditing/dragAndDrop_test.js b/frontend/gamma/tests/tests/Components/CardDialogEditing/dragAndDrop_test.js
index e805e34..91909fa 100644
--- a/frontend/gamma/tests/tests/Components/CardDialogEditing/dragAndDrop_test.js
+++ b/frontend/gamma/tests/tests/Components/CardDialogEditing/dragAndDrop_test.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.Tests.DragAndDrop'); 26Clipperz.Base.module('Clipperz.Tests.DragAndDrop');
30 27
31Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 28Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
32Clipperz.PM.Strings.Languages.initSetup(); 29Clipperz.PM.Strings.Languages.initSetup();
33 30
34Clipperz.Tests.DragAndDrop.Tester = function(args) { 31Clipperz.Tests.DragAndDrop.Tester = function(args) {
35 args = args || {}; 32 args = args || {};
36 33
37 Clipperz.Tests.DragAndDrop.Tester.superclass.constructor.call(this, args); 34 Clipperz.Tests.DragAndDrop.Tester.superclass.constructor.call(this, args);
38 this._user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}}); 35 this._user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}});
39 36
40 return this; 37 return this;
41}; 38};
42 39
43Clipperz.Base.extend(Clipperz.Tests.DragAndDrop.Tester, Object, { 40Clipperz.Base.extend(Clipperz.Tests.DragAndDrop.Tester, Object, {
44 41
45 'toString': function() { 42 'toString': function() {
46 return "Clipperz.Tests.DragAndDrop.Tester"; 43 return "Clipperz.Tests.DragAndDrop.Tester";
47 }, 44 },
48 45
49 //------------------------------------------------------------------------- 46 //-------------------------------------------------------------------------
50 47
51 'user': function () { 48 'user': function () {
52 return this._user; 49 return this._user;
53 }, 50 },
54 51
55 //------------------------------------------------------------------------- 52 //-------------------------------------------------------------------------
56 53
57 'run': function () { 54 'run': function () {
58 var deferredResult; 55 var deferredResult;
59 var proxy; 56 var proxy;
60 varcardDialogController; 57 varcardDialogController;
61 varcardDialogComponent; 58 varcardDialogComponent;
62 59
63 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false}); 60 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false});
64 61
65 deferredResult = new Clipperz.Async.Deferred("DragAndDrop_test.init", {trace:false}); 62 deferredResult = new Clipperz.Async.Deferred("DragAndDrop_test.init", {trace:false});
66 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_offline_copy_data']); 63 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_offline_copy_data']);
67 deferredResult.addMethod(this.user(), 'login'); 64 deferredResult.addMethod(this.user(), 'login');
68 deferredResult.addMethod(this.user(), 'getRecord', '8280842f41162b673335b63860637e8472e8bbff0efa2bc78b0dbc5e09712e13'); 65 deferredResult.addMethod(this.user(), 'getRecord', '8280842f41162b673335b63860637e8472e8bbff0efa2bc78b0dbc5e09712e13');
69 deferredResult.addCallback(MochiKit.Base.bind(function (aRecord) { 66 deferredResult.addCallback(MochiKit.Base.bind(function (aRecord) {
70 cardDialogController = new Clipperz.PM.UI.Web.Controllers.CardDialogController({record:aRecord, delegate:this}); 67 cardDialogController = new Clipperz.PM.UI.Web.Controllers.CardDialogController({record:aRecord, delegate:this});
71 cardDialogController.run(); 68 cardDialogController.run();
72 69
73 cardDialogController.showPasswordTooltip('**********', MochiKit.DOM.getElement('Clipperz_PM_Components_actionLink_63')); 70 cardDialogController.showPasswordTooltip('**********', MochiKit.DOM.getElement('Clipperz_PM_Components_actionLink_63'));
74 }, this)); 71 }, this));
75 deferredResult.callback(); 72 deferredResult.callback();
76 73
77 return deferredResult; 74 return deferredResult;
78 }, 75 },
79 76
80 //========================================================================= 77 //=========================================================================
81 78
82 'saveChanges': function () { 79 'saveChanges': function () {
83 return this.user().saveChanges(); 80 return this.user().saveChanges();
84 }, 81 },
85 82
86 //------------------------------------------------------------------------- 83 //-------------------------------------------------------------------------
87 84
88 'hasPendingChanges': function () { 85 'hasPendingChanges': function () {
89 return this.user().hasPendingChanges(); 86 return this.user().hasPendingChanges();
90 }, 87 },
91 88
92 //------------------------------------------------------------------------- 89 //-------------------------------------------------------------------------
93 90
94 'revertChanges': function () { 91 'revertChanges': function () {
95 return this.user().revertChanges(); 92 return this.user().revertChanges();
96 }, 93 },
97 94
98 //========================================================================= 95 //=========================================================================
99 __syntaxFix__: "syntax fix" 96 __syntaxFix__: "syntax fix"
100}); 97});
101 98
102 99
103 100
104 101
105 102
106 103
107 104
108 105
109 106
110 107
111 108
112 109
113 110
114 111
115 112
116 113
117 114
118 115
119 116
120 117
diff --git a/frontend/gamma/tests/tests/Components/CardDialogEditing/index.html b/frontend/gamma/tests/tests/Components/CardDialogEditing/index.html
index 7cc0961..e484719 100644
--- a/frontend/gamma/tests/tests/Components/CardDialogEditing/index.html
+++ b/frontend/gamma/tests/tests/Components/CardDialogEditing/index.html
@@ -1,120 +1,117 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Card Dialog EDITING - test</title> 28 <title>Card Dialog EDITING - test</title>
32 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 29 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
33 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 30 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
34 31
35 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 32 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
43 40
44 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
49 46
50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
53 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
54 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
55 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
56 53
57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> 54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script>
58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
59 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
60 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> 57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
62 59
63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 60 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
64 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
65 62
66 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script> 63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script>
67 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 64 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
68 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script> 65 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script>
69 <script type='text/javascript' src='../../../../js/Clipperz/PM/BookmarkletProcessor.js'></script> 66 <script type='text/javascript' src='../../../../js/Clipperz/PM/BookmarkletProcessor.js'></script>
70 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 67 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
71 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script> 68 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script>
72 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> 69 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script>
73 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> 70 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script>
74 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script> 71 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script>
75 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLoginInput.js'></script> 72 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLoginInput.js'></script>
76 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLoginBinding.js'></script> 73 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLoginBinding.js'></script>
77 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLoginFormValue.js'></script> 74 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLoginFormValue.js'></script>
78 <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Field.js'></script --> 75 <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Field.js'></script -->
79 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.js'></script> 76 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.js'></script>
80 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script> 77 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script>
81 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script> 78 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script>
82 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Preferences.js'></script> 79 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Preferences.js'></script>
83 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js'></script> 80 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js'></script>
84 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/OneTimePassword.js'></script> 81 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/OneTimePassword.js'></script>
85 82
86 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/BaseComponent.js'></script> 83 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/BaseComponent.js'></script>
87 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ComponentSlot.js'></script> 84 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ComponentSlot.js'></script>
88 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/FaviconComponent.js'></script> 85 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/FaviconComponent.js'></script>
89 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js'></script> 86 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js'></script>
90 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ProgressBar.js'></script> 87 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ProgressBar.js'></script>
91 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js'></script> 88 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js'></script>
92 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js'></script> 89 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js'></script>
93 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Tooltip.js'></script> 90 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Tooltip.js'></script>
94 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js'></script> 91 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js'></script>
95 92
96 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/RulerComponent.js'></script> 93 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/RulerComponent.js'></script>
97 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogComponent.js'></script> 94 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogComponent.js'></script>
98 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js'></script> 95 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js'></script>
99 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogRecordDirectLoginComponent.js'></script> 96 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogRecordDirectLoginComponent.js'></script>
100 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DirectLoginEditingComponent.js'></script> 97 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DirectLoginEditingComponent.js'></script>
101 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DirectLoginEditingBindingComponent.js'></script> 98 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DirectLoginEditingBindingComponent.js'></script>
102 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DirectLoginEditingFormValueComponent.js'></script> 99 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DirectLoginEditingFormValueComponent.js'></script>
103 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/BookmarkletComponent.js'></script> 100 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/BookmarkletComponent.js'></script>
104 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/PasswordTooltip.js'></script> 101 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/PasswordTooltip.js'></script>
105 102
106 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/ProgressBarController.js'></script> 103 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/ProgressBarController.js'></script>
107 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js'></script> 104 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js'></script>
108 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js'></script> 105 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/DirectLoginRunner.js'></script>
109 106
110 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/DirectLoginWizardController.js'></script> 107 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/DirectLoginWizardController.js'></script>
111 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/CardDialogController.js'></script> 108 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/CardDialogController.js'></script>
112 109
113 <script type='text/javascript' src='./User.data.js'></script> 110 <script type='text/javascript' src='./User.data.js'></script>
114 <script type='text/javascript' src='./CardDialogEditing_test.js'></script> 111 <script type='text/javascript' src='./CardDialogEditing_test.js'></script>
115<script> 112<script>
116 Clipperz_IEisBroken = false; 113 Clipperz_IEisBroken = false;
117</script> 114</script>
118 115
119<!--[if IE]><script> 116<!--[if IE]><script>
120Clipperz_IEisBroken = true; 117Clipperz_IEisBroken = true;
diff --git a/frontend/gamma/tests/tests/Components/CardDialogNew/User.data.js b/frontend/gamma/tests/tests/Components/CardDialogNew/User.data.js
index dac8b45..49abe46 100644
--- a/frontend/gamma/tests/tests/Components/CardDialogNew/User.data.js
+++ b/frontend/gamma/tests/tests/Components/CardDialogNew/User.data.js
@@ -1,120 +1,117 @@
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
29testData = { 26testData = {
30 27
31 //------------------------------------------------------------------------- 28 //-------------------------------------------------------------------------
32 29
33 'simpleLogin_001': { 30 'simpleLogin_001': {
34 'users': [ 31 'users': [
35 { 32 {
36 'username': "joe", 33 'username': "joe",
37 'passphrase': "eoj", 34 'passphrase': "eoj",
38 'version': "0.2", 35 'version': "0.2",
39 'connectionVersion':"0.2", 36 'connectionVersion':"0.2",
40 'records':{ 37 'records':{
41 'record 1': { 38 'record 1': {
42 'notes':"Some notes here", 39 'notes':"Some notes here",
43 'fields':[ 40 'fields':[
44 { 'name': "username", 'value': "joe", 'type': "text" }, 41 { 'name': "username", 'value': "joe", 'type': "text" },
45 { 'name': "password", 'value': "1234", 'type': "password"} 42 { 'name': "password", 'value': "1234", 'type': "password"}
46 ], 43 ],
47 'directLogins':{ 44 'directLogins':{
48 "record 1 direct login": { 45 "record 1 direct login": {
49 'configuration':"", 46 'configuration':"",
50 'bindings':[ 47 'bindings':[
51 ], 48 ],
52 'favicon':"http://www.example.com/favicon.ico" 49 'favicon':"http://www.example.com/favicon.ico"
53 } 50 }
54 } 51 }
55 } 52 }
56 }, 53 },
57 'otp':[ 54 'otp':[
58 "12345678 90abcdef 12345678 90abcdef", 55 "12345678 90abcdef 12345678 90abcdef",
59 "fedcba09 87654321 fedcba09 87654321" 56 "fedcba09 87654321 fedcba09 87654321"
60 ] 57 ]
61 } 58 }
62 ] 59 ]
63 }, 60 },
64 61
65 //------------------------------------------------------------------------- 62 //-------------------------------------------------------------------------
66 63
67 'joe_clipperz_offline_copy_data': { 64 'joe_clipperz_offline_copy_data': {
68 users:{ 65 users:{
69 'catchAllUser': { 66 'catchAllUser': {
70 __masterkey_test_value__: 'masterkey', 67 __masterkey_test_value__: 'masterkey',
71 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00', 68 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00',
72 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00' 69 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00'
73 }, 70 },
74 'f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674': { 71 'f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674': {
75 s: '186f0c40bf73f2af236eaa6c429df225efa933050c9aae65240e93b7b362e3ee', 72 s: '186f0c40bf73f2af236eaa6c429df225efa933050c9aae65240e93b7b362e3ee',
76 v: 'ac61a6e325ecf329926a86084f591d8852d0ad3e4a6080f2adc901b82395ecaf', 73 v: 'ac61a6e325ecf329926a86084f591d8852d0ad3e4a6080f2adc901b82395ecaf',
77 version: '0.2', 74 version: '0.2',
78 maxNumberOfRecords: '100', 75 maxNumberOfRecords: '100',
79 userDetails: '{"records":{"index":{"eeda70e0392261967bda71c3764da78989c45bbd2bb7be6b941b90f81d9b81b5":"0","13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551":"1","062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80":"2","ca01bcb7691f70818feed46c9a2a91883ac543997a395535aedbb49de166690c":"3","507f38b06d587d8889698ae1ebbba7ef8f0539b82550dd25779fd9ee88fc0c7a":"4","d5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d":"5","de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4":"6","d620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045":"7","f215d89bf4583c12f5ed4f4330f488dad3fffa448f4dc784f15ef135dda2c732":"8","36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113":"9","fe21497ef7435d31f9746c132e4b5ecf5aac5f13b5961ddb55d2bdc3409f28f6":"10","6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18":"11","9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291":"12","6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a":"13","6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728":"14","8b18e8593b5bc2f7ea39a5fab222047034ef2f380fee05be0fa6e1c0972fea39":"15","084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d":"16","7bb69b6366a8012f181c01e368ba18d4f7a82bcabb4959189736ad124c4bbfbb":"17","5cdac63b317f3942da38f3a3de3b7f0e5d6678200951c6216230295550f63fb4":"18","c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065":"19"},"data":"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"},"directLogins":{"index":{"61e87fdc4f1d9112e3b30c1f6812d095dcdb24f014c83319091eb6c9899ec348":"0","989593d4c48929f0c8f1581aa96969c622807e99619ed4732026e967530a68ad":"1","9f7979368fa29f66c44bd97ecaf6c545abc800b1c7bb21b7655a68e1514c3906":"2","dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496":"3","aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584":"4","1f9bfd677b531a03168d3f8bd8afabb5357244a7bc355dff50bd6c0a072114a6":"5","a48e38845713462ecc9f827149eeaae87da882031f98ef8ebbf9ee9537b63468":"6","6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f":"7","2df54059e78f5771f23bd285cce19595b38331b73d67020424d9a1b2257db09c":"8","065cd0c270e5e8ce50e4ea8e3828dccdae18c01ab030813d756a87d03fe68784":"9","ddbc8d01300a4f10631cbde09e1246332eade3a877a2205209f9eb9e5bc9da0b":"10","9b7a30e667afc9f76ba77600658b2c13bff52432d444261d39bf3d069a160afe":"11","9fd2929cde3d32d9cbc5f1d787f2f64729a5e12a14410556b31c0c099762c46a":"12","f695fc36ac56bead80c0d20a88e01e382819c18dc268f1679551b7c83db7cb14":"13","f22dc41ffabef4b3bc8f7af804fec975bd50718098322a673cbe4aaff9464ae1":"14","03251dc1cbc5398789e4c4b45c52cfac3fcd8c1a4f19a81fa68fc6feae31d55c":"15","a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e":"16","cb9ae0bba1957075ccdbfd3b3481704d62087687a2ac7c411a4f07d444bde0f7":"17","7e1d069b7fa57c03bd7bf48807520feb953157834503aaff8c9d493f37dea69d":"18","24404059cabc63b2dbff0f42ba57183108b8189ef53ab62fa25141a1caea824b":"19","33cf9758477460a8056deef0295a1ebe65b39b392c361ceb920a83edacfe5d78":"20","e9a16316f330e3d150f6ffd194f6fd8acd1426757b097de4b88ca0db875202e4":"21"},"data":"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"},"preferences":{"data":"EZMrwxNFFd1sMGycoYE7IrlGGrfLixLUnLZmWMkFysfISe2ay3ueO0PGCApuKqh9hA=="},"oneTimePasswords":{"data":"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"},"version":"0.1"}', 76 userDetails: '{"records":{"index":{"eeda70e0392261967bda71c3764da78989c45bbd2bb7be6b941b90f81d9b81b5":"0","13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551":"1","062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80":"2","ca01bcb7691f70818feed46c9a2a91883ac543997a395535aedbb49de166690c":"3","507f38b06d587d8889698ae1ebbba7ef8f0539b82550dd25779fd9ee88fc0c7a":"4","d5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d":"5","de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4":"6","d620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045":"7","f215d89bf4583c12f5ed4f4330f488dad3fffa448f4dc784f15ef135dda2c732":"8","36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113":"9","fe21497ef7435d31f9746c132e4b5ecf5aac5f13b5961ddb55d2bdc3409f28f6":"10","6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18":"11","9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291":"12","6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a":"13","6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728":"14","8b18e8593b5bc2f7ea39a5fab222047034ef2f380fee05be0fa6e1c0972fea39":"15","084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d":"16","7bb69b6366a8012f181c01e368ba18d4f7a82bcabb4959189736ad124c4bbfbb":"17","5cdac63b317f3942da38f3a3de3b7f0e5d6678200951c6216230295550f63fb4":"18","c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065":"19"},"data":"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"},"directLogins":{"index":{"61e87fdc4f1d9112e3b30c1f6812d095dcdb24f014c83319091eb6c9899ec348":"0","989593d4c48929f0c8f1581aa96969c622807e99619ed4732026e967530a68ad":"1","9f7979368fa29f66c44bd97ecaf6c545abc800b1c7bb21b7655a68e1514c3906":"2","dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496":"3","aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584":"4","1f9bfd677b531a03168d3f8bd8afabb5357244a7bc355dff50bd6c0a072114a6":"5","a48e38845713462ecc9f827149eeaae87da882031f98ef8ebbf9ee9537b63468":"6","6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f":"7","2df54059e78f5771f23bd285cce19595b38331b73d67020424d9a1b2257db09c":"8","065cd0c270e5e8ce50e4ea8e3828dccdae18c01ab030813d756a87d03fe68784":"9","ddbc8d01300a4f10631cbde09e1246332eade3a877a2205209f9eb9e5bc9da0b":"10","9b7a30e667afc9f76ba77600658b2c13bff52432d444261d39bf3d069a160afe":"11","9fd2929cde3d32d9cbc5f1d787f2f64729a5e12a14410556b31c0c099762c46a":"12","f695fc36ac56bead80c0d20a88e01e382819c18dc268f1679551b7c83db7cb14":"13","f22dc41ffabef4b3bc8f7af804fec975bd50718098322a673cbe4aaff9464ae1":"14","03251dc1cbc5398789e4c4b45c52cfac3fcd8c1a4f19a81fa68fc6feae31d55c":"15","a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e":"16","cb9ae0bba1957075ccdbfd3b3481704d62087687a2ac7c411a4f07d444bde0f7":"17","7e1d069b7fa57c03bd7bf48807520feb953157834503aaff8c9d493f37dea69d":"18","24404059cabc63b2dbff0f42ba57183108b8189ef53ab62fa25141a1caea824b":"19","33cf9758477460a8056deef0295a1ebe65b39b392c361ceb920a83edacfe5d78":"20","e9a16316f330e3d150f6ffd194f6fd8acd1426757b097de4b88ca0db875202e4":"21"},"data":"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"},"preferences":{"data":"EZMrwxNFFd1sMGycoYE7IrlGGrfLixLUnLZmWMkFysfISe2ay3ueO0PGCApuKqh9hA=="},"oneTimePasswords":{"data":"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"},"version":"0.1"}',
80 statistics: 'SfGy/4mpXQdDOv+Bcfie4Yt/', 77 statistics: 'SfGy/4mpXQdDOv+Bcfie4Yt/',
81 userDetailsVersion: '0.3', 78 userDetailsVersion: '0.3',
82 records: { 79 records: {
83 '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80': { 80 '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80': {
84 data: '7sgxSQlqR+wh3g06M2+sWp7raQxjjQ9jLIz2OcEB7SckuQcXNrhMlDCbL6ncSljtzgqhioWrOB409kIG8lc7h6ekghOE/Mhi7rVwAiRfNGB7r3mYxpEXRe96O2RG7E+NcSp8ezl+5gJ9D0o1abXPeFQYGcr95hUioCfyY+xrxY8TJVwdb9nHkYvBdKV7rCl1dTxgsKWK3nlo1T7e5uyiz5YUAE6BrCtTFAqtprLI/xOpRti9C+llohS7D6s8hkCBPZfp3chKFDrgpsCBFLhXN8jrBKSjHi1PJdRQzpJsgrxyeBj0dZx3gTsYOXqrYgdIzFUo7K1Tqb30yNprBiDMr7j0YYXiSvEb7OuOIP+HTXGN+yt09bk9LggyY6Fh0e+tenjQQ3soySN/XznOBpEjXbzXoz6fR1MXVnE9GgaX99LVNqwWfq2rIBdSE/FfspRiWP3BY5jIrEkNeRclS05U1zw3K3wxOL+cB9r2IynSXnK8QcrDNNRZ0W3PhsSFfByUXuviLSEOPuJa1mYP29L9Lj/WyHL1Gyl8xLbt2H41S6+wvIleKMuc7teH6wPXbnYphvbwBowoI6HZTEFkz3dQKhhY6VF/81iCXsuaz6BjyrzFX6SkQ4S3lN1tv4opQMJFvnmHb6EkXqVWfeIXzJIJO+owL4vDOf4okpAD+HPjjlVXhq6fvyM5UBIK9+tzJW78X/zifrQOfWRIhwjVsfUdZWmZ/S35vnHWNuXkM8GBYrDysqxanDtah3U8XLAiIhFtBOzpzr6qGaNDOKKgG3K8QXT4bYHOq1rQVUwzQuKhlCyStrRMQrC5Ry251xmLy6dKfppRarVeGDtzB/30BbtFNdZmzMNG2g+Jj5tFCrEtCMvMiQEWZHMU3tGMFxDef/KKdv1fFTJC16jmaUiCHUZmNjB3EO9R6xPVcMlAVKf57n3efrpRk/GTmm9JhAFkuF/wsveH4JjPpDUdkHYFu5tHbb30sbga3ufBAXbQL4ck10S24akU/cKraFGLvuKGaR2U0i6ih911TBSf3pAfZ3RFbBhVIl+6rSknC5+IXoBR7MRstBPW/xC9pQVjN5Qyn0g3aUjUSI+q4jcTuvMl32NtTJbWRMGhfkrpVzypZTyPnIh6XJkyBghlUARXw23MlbjiZxmY4ScDmcWZRZJWIknHlqjDKFDKNnwrfnEI9qWyMDno+jA/DEQz0mnpdZYEsoz1/qAmAeDt89vx', 81 data: '7sgxSQlqR+wh3g06M2+sWp7raQxjjQ9jLIz2OcEB7SckuQcXNrhMlDCbL6ncSljtzgqhioWrOB409kIG8lc7h6ekghOE/Mhi7rVwAiRfNGB7r3mYxpEXRe96O2RG7E+NcSp8ezl+5gJ9D0o1abXPeFQYGcr95hUioCfyY+xrxY8TJVwdb9nHkYvBdKV7rCl1dTxgsKWK3nlo1T7e5uyiz5YUAE6BrCtTFAqtprLI/xOpRti9C+llohS7D6s8hkCBPZfp3chKFDrgpsCBFLhXN8jrBKSjHi1PJdRQzpJsgrxyeBj0dZx3gTsYOXqrYgdIzFUo7K1Tqb30yNprBiDMr7j0YYXiSvEb7OuOIP+HTXGN+yt09bk9LggyY6Fh0e+tenjQQ3soySN/XznOBpEjXbzXoz6fR1MXVnE9GgaX99LVNqwWfq2rIBdSE/FfspRiWP3BY5jIrEkNeRclS05U1zw3K3wxOL+cB9r2IynSXnK8QcrDNNRZ0W3PhsSFfByUXuviLSEOPuJa1mYP29L9Lj/WyHL1Gyl8xLbt2H41S6+wvIleKMuc7teH6wPXbnYphvbwBowoI6HZTEFkz3dQKhhY6VF/81iCXsuaz6BjyrzFX6SkQ4S3lN1tv4opQMJFvnmHb6EkXqVWfeIXzJIJO+owL4vDOf4okpAD+HPjjlVXhq6fvyM5UBIK9+tzJW78X/zifrQOfWRIhwjVsfUdZWmZ/S35vnHWNuXkM8GBYrDysqxanDtah3U8XLAiIhFtBOzpzr6qGaNDOKKgG3K8QXT4bYHOq1rQVUwzQuKhlCyStrRMQrC5Ry251xmLy6dKfppRarVeGDtzB/30BbtFNdZmzMNG2g+Jj5tFCrEtCMvMiQEWZHMU3tGMFxDef/KKdv1fFTJC16jmaUiCHUZmNjB3EO9R6xPVcMlAVKf57n3efrpRk/GTmm9JhAFkuF/wsveH4JjPpDUdkHYFu5tHbb30sbga3ufBAXbQL4ck10S24akU/cKraFGLvuKGaR2U0i6ih911TBSf3pAfZ3RFbBhVIl+6rSknC5+IXoBR7MRstBPW/xC9pQVjN5Qyn0g3aUjUSI+q4jcTuvMl32NtTJbWRMGhfkrpVzypZTyPnIh6XJkyBghlUARXw23MlbjiZxmY4ScDmcWZRZJWIknHlqjDKFDKNnwrfnEI9qWyMDno+jA/DEQz0mnpdZYEsoz1/qAmAeDt89vx',
85 version: '0.2', 82 version: '0.2',
86 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 83 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
87 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 84 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
88 accessDate: 'Mon Jan 19 16:10:04 CET 2009', 85 accessDate: 'Mon Jan 19 16:10:04 CET 2009',
89 currentVersion: '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3', 86 currentVersion: '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3',
90 versions: { 87 versions: {
91 '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3': { 88 '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3': {
92 header: '####', 89 header: '####',
93 data: 'GCNNIhDQjMJQZGVSf+95fPtU6eOnFWVhuGm86r8WZGVR2Gf2EjbG1OJ0ZIGpZ/AXgirCMpo5AFxJe0Bay8IYg+xmBqMFhwFxzAgJBYCIts+raSaNRipuY8dTEqDxAqD1cChcG8EhSoiFgQ0fG0I7nNEUDJi0pIt4/ygBcwvAhuAenEp9ZW+oQA0+YysPQRqkz3IieFaOoSEbe5/SqpUilV4q1gTVyzNXvrxzxx+rlvEyGFgFN+vgtUZ1NrwlPk4gVksTpylvv6CFaMGEWKhgMG6efo0rJckKosaJTu1pldJdnmMK4EKNMLOd+jZ6pEhEhYyadrA4+zYU5TlmZA6ASzTaps8piSwZodoi9qY0ch2StK4mAbzeEGe2HdfHuAU9Tyq3Ppk3+VfNdKgpQfYrQOiSlXbKzK636tzXTN/gyrfOTHjBrRl117ywibgSX63ayAYNfcLpKotC', 90 data: 'GCNNIhDQjMJQZGVSf+95fPtU6eOnFWVhuGm86r8WZGVR2Gf2EjbG1OJ0ZIGpZ/AXgirCMpo5AFxJe0Bay8IYg+xmBqMFhwFxzAgJBYCIts+raSaNRipuY8dTEqDxAqD1cChcG8EhSoiFgQ0fG0I7nNEUDJi0pIt4/ygBcwvAhuAenEp9ZW+oQA0+YysPQRqkz3IieFaOoSEbe5/SqpUilV4q1gTVyzNXvrxzxx+rlvEyGFgFN+vgtUZ1NrwlPk4gVksTpylvv6CFaMGEWKhgMG6efo0rJckKosaJTu1pldJdnmMK4EKNMLOd+jZ6pEhEhYyadrA4+zYU5TlmZA6ASzTaps8piSwZodoi9qY0ch2StK4mAbzeEGe2HdfHuAU9Tyq3Ppk3+VfNdKgpQfYrQOiSlXbKzK636tzXTN/gyrfOTHjBrRl117ywibgSX63ayAYNfcLpKotC',
94 version: '0.2', 91 version: '0.2',
95 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 92 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
96 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 93 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
97 accessDate: 'Mon Jan 19 16:10:04 CET 2009' 94 accessDate: 'Mon Jan 19 16:10:04 CET 2009'
98 } 95 }
99 } 96 }
100 }, 97 },
101 '084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d': { 98 '084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d': {
102 data: 'fGzBu1On7e/6rAoSB1a4fq/CkS8Be/T8UP5cQ93asBTWndSYu2lW4DQ4SXQXSindIi3OnNx/f6SNv/extb7OrMLREF92wXI045ipPwy+DIICb+cQNMJ82Sh4cXaIcAWcyrm+MYri3qq9LBKbpwkILcebZidJ86lmKYHJozUezmfbMcwNCljHs/gYkHVzVcuw9L52Ugc6wC7sjsshh+UH6i4/2Frlrophtx+b1vervNd8eoYiKnedHVXVfW7UJcQoF27eHFgzwYnGvRW0KNXFFhqmPb61TSkIvNdCCvBKDP4SXrWvGgzU89wipvWdUPpQ+fCT6Mp3hPRrbJxwMunmjujZOzBld/HkjnXoiNfBb5akA280WvdyzWYATrjV1ZFx8yQY8G0+lRt/MxjKDc38w4y+Rf5WeRbXboJMvFatwooHUggk6qSRmZVvgOmFmNuDRnRYIFzqK3JclhJeVasnqhR6RiGSowc1Ffr1HhcZCMnXpQABGBkZcHD/zw6YjHRyh9Plw7XAm0xb16HMDtiwt7WLJpxLH/HP99j/A2hvMGWiUiFCaYv7AzyEPTmYbN32D1IsAEE/GC3FG0HypGTBolP8wpAfTRdlvWpJz8oRRdwuLV3Pgpu+kXh5sQyeZI6tnuMPQFmRDcMN1oo3E5V5V585nVMnKTFcXhBzD4UnoV+DQNkG/+iSPybQzz/EZmucEqGEYyjI3kl4MAX8UMEUxE4JO0fF8MzyBI13nxknowAceEammx1dGVaJCoIOdhadaPVPyOzXM1Vp1erVm5k4TsxSx1pll+GOm6hVoNHIuQLDueaMEpRxMhfwc8cDyXURqRGPTgTc0bint5xVjo10fnpX1gcdc/AWL6y3tXM80NW+uFJ4GI7VzyzfcMRzTiRaGi19z8MIx8PbIVGh2sw4FhgGujNsPrpuESvUVT+17M0+v8oEoABNlcizTMFs/sA1uqlPumFASltzmViAzClOsDuCh069hFLjdk/Ex5jy4vPYlwOT8Uq9DJC9ZWuZgiI1DrhWN/8QGAEGxxbvnSZPNCQ9kpD5p+iabinLLWOAirVNgKwIRJRyAu/uR9xKd7J9Wxq8q/ii+y5lGilbo2g24wbDwrkXYVhqp/4J0g+p8Wv1NBjCTSCqV39WEizUCRHo3ee9HnQnBJQDOyTBRuz2odTJtJ5tLYjWXZRdFzFSJrEq+Z1z3oq7LnhZy3YWaFXPeKmBCemMthtNt0nL', 99 data: 'fGzBu1On7e/6rAoSB1a4fq/CkS8Be/T8UP5cQ93asBTWndSYu2lW4DQ4SXQXSindIi3OnNx/f6SNv/extb7OrMLREF92wXI045ipPwy+DIICb+cQNMJ82Sh4cXaIcAWcyrm+MYri3qq9LBKbpwkILcebZidJ86lmKYHJozUezmfbMcwNCljHs/gYkHVzVcuw9L52Ugc6wC7sjsshh+UH6i4/2Frlrophtx+b1vervNd8eoYiKnedHVXVfW7UJcQoF27eHFgzwYnGvRW0KNXFFhqmPb61TSkIvNdCCvBKDP4SXrWvGgzU89wipvWdUPpQ+fCT6Mp3hPRrbJxwMunmjujZOzBld/HkjnXoiNfBb5akA280WvdyzWYATrjV1ZFx8yQY8G0+lRt/MxjKDc38w4y+Rf5WeRbXboJMvFatwooHUggk6qSRmZVvgOmFmNuDRnRYIFzqK3JclhJeVasnqhR6RiGSowc1Ffr1HhcZCMnXpQABGBkZcHD/zw6YjHRyh9Plw7XAm0xb16HMDtiwt7WLJpxLH/HP99j/A2hvMGWiUiFCaYv7AzyEPTmYbN32D1IsAEE/GC3FG0HypGTBolP8wpAfTRdlvWpJz8oRRdwuLV3Pgpu+kXh5sQyeZI6tnuMPQFmRDcMN1oo3E5V5V585nVMnKTFcXhBzD4UnoV+DQNkG/+iSPybQzz/EZmucEqGEYyjI3kl4MAX8UMEUxE4JO0fF8MzyBI13nxknowAceEammx1dGVaJCoIOdhadaPVPyOzXM1Vp1erVm5k4TsxSx1pll+GOm6hVoNHIuQLDueaMEpRxMhfwc8cDyXURqRGPTgTc0bint5xVjo10fnpX1gcdc/AWL6y3tXM80NW+uFJ4GI7VzyzfcMRzTiRaGi19z8MIx8PbIVGh2sw4FhgGujNsPrpuESvUVT+17M0+v8oEoABNlcizTMFs/sA1uqlPumFASltzmViAzClOsDuCh069hFLjdk/Ex5jy4vPYlwOT8Uq9DJC9ZWuZgiI1DrhWN/8QGAEGxxbvnSZPNCQ9kpD5p+iabinLLWOAirVNgKwIRJRyAu/uR9xKd7J9Wxq8q/ii+y5lGilbo2g24wbDwrkXYVhqp/4J0g+p8Wv1NBjCTSCqV39WEizUCRHo3ee9HnQnBJQDOyTBRuz2odTJtJ5tLYjWXZRdFzFSJrEq+Z1z3oq7LnhZy3YWaFXPeKmBCemMthtNt0nL',
103 version: '0.3', 100 version: '0.3',
104 creationDate: 'Fri Oct 17 16:49:20 CEST 2008', 101 creationDate: 'Fri Oct 17 16:49:20 CEST 2008',
105 updateDate: 'Mon Oct 27 08:58:49 CET 2008', 102 updateDate: 'Mon Oct 27 08:58:49 CET 2008',
106 accessDate: 'Mon Jan 19 16:09:39 CET 2009', 103 accessDate: 'Mon Jan 19 16:09:39 CET 2009',
107 currentVersion: '6fd60c5709a4808444f43f7bbd872363d76703957f613076538ba2f9161206ac', 104 currentVersion: '6fd60c5709a4808444f43f7bbd872363d76703957f613076538ba2f9161206ac',
108 versions: { 105 versions: {
109 '0ae362285f103722abbd046eee2b7d10aeae6a1d05cbaf2081392ce9df882bcf': { 106 '0ae362285f103722abbd046eee2b7d10aeae6a1d05cbaf2081392ce9df882bcf': {
110 header: '####', 107 header: '####',
111 data: 'sG6TUmPSEPFpiJ5YdtghWHmHbvUK63tZCZ+Q5iz2ALas//jN+lZCBhZcjEwPEJskBkK2R0MyAh14wWGh2bBHMjsokgTe+L+x+0c/Zi0epE/IC9gtOBhsTe/hZ2e2xOGF/SbzET3DAAYXvxduZ36f7SvvFnrkkKvpj8wGSdTFcBmzqMb9DL2bRyRCLGLMzE3F1a0q5CufCIRz2TgHm+Uw+kfvvwC7ig/F/5iLW90Ypz3vmEtMEFYFHZ9a8Oh0rsXGfevbMhFqALoywzihQEe/NiB8dwn7GEdYKSQ35rhvZh29ULWOZinqmg0ONe0HYaxx7DbKsVoue57S0CIUlgHLajzHfLfqQg2sFI0OT8TnHsGg0YZ6mM2EdKmEjJiER0cP', 108 data: 'sG6TUmPSEPFpiJ5YdtghWHmHbvUK63tZCZ+Q5iz2ALas//jN+lZCBhZcjEwPEJskBkK2R0MyAh14wWGh2bBHMjsokgTe+L+x+0c/Zi0epE/IC9gtOBhsTe/hZ2e2xOGF/SbzET3DAAYXvxduZ36f7SvvFnrkkKvpj8wGSdTFcBmzqMb9DL2bRyRCLGLMzE3F1a0q5CufCIRz2TgHm+Uw+kfvvwC7ig/F/5iLW90Ypz3vmEtMEFYFHZ9a8Oh0rsXGfevbMhFqALoywzihQEe/NiB8dwn7GEdYKSQ35rhvZh29ULWOZinqmg0ONe0HYaxx7DbKsVoue57S0CIUlgHLajzHfLfqQg2sFI0OT8TnHsGg0YZ6mM2EdKmEjJiER0cP',
112 version: '0.3', 109 version: '0.3',
113 creationDate: 'Fri Oct 17 17:00:31 CEST 2008', 110 creationDate: 'Fri Oct 17 17:00:31 CEST 2008',
114 updateDate: 'Fri Oct 17 17:00:31 CEST 2008', 111 updateDate: 'Fri Oct 17 17:00:31 CEST 2008',
115 accessDate: 'Fri Oct 17 17:00:31 CEST 2008' 112 accessDate: 'Fri Oct 17 17:00:31 CEST 2008'
116 }, 113 },
117 '10f45664bbd979a92f37886f1ecc6e52e49798b16dc997aecd37259ad9b2090e': { 114 '10f45664bbd979a92f37886f1ecc6e52e49798b16dc997aecd37259ad9b2090e': {
118 header: '####', 115 header: '####',
119 data: 'RdKVaV/WWWchrCse3KtcXd47Bfm6IAwjqVUpaxoed3HeunI42AAm7xYYSjeK8edHpbNRJbhobBAX5OZtWIp/HmgkobKM8CIiWxrWz89FqyrbnPD7+fXdtgF2yTax/0sC1l0ibncdOuJKX6U829oPlXCpXIOjlomc4wEEAD/5V6FbORvdZ9IE/ME3LsG2y02cT2tIpx6+R6wC/PKXhZA2UDsTE6R2Op2BtIzpVORZLXsdyAp/4wvWQxq90i9cEpbsVQsMB10JVyNHNsRTFhIlHi9MVCaMxQvcrwRElMj/Y9x3RbsFzSGKqFLqdg7Fn/U+KYkpYtsgHv9hraPIb9lV5FH16+iItU/HBM6FGezIj1ZkoQ+dgjPfSjTZzgzDYwyb', 116 data: 'RdKVaV/WWWchrCse3KtcXd47Bfm6IAwjqVUpaxoed3HeunI42AAm7xYYSjeK8edHpbNRJbhobBAX5OZtWIp/HmgkobKM8CIiWxrWz89FqyrbnPD7+fXdtgF2yTax/0sC1l0ibncdOuJKX6U829oPlXCpXIOjlomc4wEEAD/5V6FbORvdZ9IE/ME3LsG2y02cT2tIpx6+R6wC/PKXhZA2UDsTE6R2Op2BtIzpVORZLXsdyAp/4wvWQxq90i9cEpbsVQsMB10JVyNHNsRTFhIlHi9MVCaMxQvcrwRElMj/Y9x3RbsFzSGKqFLqdg7Fn/U+KYkpYtsgHv9hraPIb9lV5FH16+iItU/HBM6FGezIj1ZkoQ+dgjPfSjTZzgzDYwyb',
120 version: '0.3', 117 version: '0.3',
diff --git a/frontend/gamma/tests/tests/Components/CardDialogNew/cardDialogNew_test.js b/frontend/gamma/tests/tests/Components/CardDialogNew/cardDialogNew_test.js
index e2b21bc..60a2757 100644
--- a/frontend/gamma/tests/tests/Components/CardDialogNew/cardDialogNew_test.js
+++ b/frontend/gamma/tests/tests/Components/CardDialogNew/cardDialogNew_test.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.Tests.CardDialogNew'); 26Clipperz.Base.module('Clipperz.Tests.CardDialogNew');
30 27
31Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 28Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
32Clipperz.PM.Strings.Languages.initSetup(); 29Clipperz.PM.Strings.Languages.initSetup();
33 30
34Clipperz.Tests.CardDialogNew.Tester = function(args) { 31Clipperz.Tests.CardDialogNew.Tester = function(args) {
35 args = args || {}; 32 args = args || {};
36 33
37 Clipperz.Tests.CardDialogNew.Tester.superclass.constructor.call(this, args); 34 Clipperz.Tests.CardDialogNew.Tester.superclass.constructor.call(this, args);
38 this._user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}}); 35 this._user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}});
39 36
40 return this; 37 return this;
41}; 38};
42 39
43Clipperz.Base.extend(Clipperz.Tests.CardDialogNew.Tester, Object, { 40Clipperz.Base.extend(Clipperz.Tests.CardDialogNew.Tester, Object, {
44 41
45 'toString': function() { 42 'toString': function() {
46 return "Clipperz.Tests.CardDialogNew.Tester"; 43 return "Clipperz.Tests.CardDialogNew.Tester";
47 }, 44 },
48 45
49 //------------------------------------------------------------------------- 46 //-------------------------------------------------------------------------
50 47
51 'user': function () { 48 'user': function () {
52 return this._user; 49 return this._user;
53 }, 50 },
54 51
55 //------------------------------------------------------------------------- 52 //-------------------------------------------------------------------------
56 53
57 'run': function () { 54 'run': function () {
58 var deferredResult; 55 var deferredResult;
59 var proxy; 56 var proxy;
60 varcardDialogController; 57 varcardDialogController;
61 varcardDialogComponent; 58 varcardDialogComponent;
62 59
63 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false}); 60 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false});
64 61
65 deferredResult = new Clipperz.Async.Deferred("cardDialogNew_test.init", {trace:false}); 62 deferredResult = new Clipperz.Async.Deferred("cardDialogNew_test.init", {trace:false});
66 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_offline_copy_data']); 63 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_offline_copy_data']);
67 deferredResult.addMethod(this.user(), 'login'); 64 deferredResult.addMethod(this.user(), 'login');
68 // deferredResult.addMethod(this.user(), 'getRecord', '8280842f41162b673335b63860637e8472e8bbff0efa2bc78b0dbc5e09712e13'); 65 // deferredResult.addMethod(this.user(), 'getRecord', '8280842f41162b673335b63860637e8472e8bbff0efa2bc78b0dbc5e09712e13');
69 deferredResult.addMethod(this.user(), 'createNewRecord'); 66 deferredResult.addMethod(this.user(), 'createNewRecord');
70 deferredResult.addCallback(MochiKit.Base.bind(function (aRecord) { 67 deferredResult.addCallback(MochiKit.Base.bind(function (aRecord) {
71 cardDialogController = new Clipperz.PM.UI.Web.Controllers.CardDialogController({record:aRecord, delegate:this}); 68 cardDialogController = new Clipperz.PM.UI.Web.Controllers.CardDialogController({record:aRecord, delegate:this});
72 cardDialogController.run(); 69 cardDialogController.run();
73 }, this)); 70 }, this));
74 deferredResult.callback(); 71 deferredResult.callback();
75 72
76 return deferredResult; 73 return deferredResult;
77 }, 74 },
78 75
79 //========================================================================= 76 //=========================================================================
80 77
81 'saveChanges': function () { 78 'saveChanges': function () {
82 return this.user().saveChanges(); 79 return this.user().saveChanges();
83 }, 80 },
84 81
85 //------------------------------------------------------------------------- 82 //-------------------------------------------------------------------------
86 83
87 'hasPendingChanges': function () { 84 'hasPendingChanges': function () {
88 return this.user().hasPendingChanges(); 85 return this.user().hasPendingChanges();
89 }, 86 },
90 87
91 //------------------------------------------------------------------------- 88 //-------------------------------------------------------------------------
92 89
93 'revertChanges': function () { 90 'revertChanges': function () {
94 return this.user().revertChanges(); 91 return this.user().revertChanges();
95 }, 92 },
96 93
97 //========================================================================= 94 //=========================================================================
98 __syntaxFix__: "syntax fix" 95 __syntaxFix__: "syntax fix"
99}); 96});
100 97
101 98
102 99
103 100
104 101
105 102
106 103
107 104
108 105
109 106
110 107
111 108
112 109
113 110
114 111
115 112
116 113
117 114
118 115
119 116
120init = function () { 117init = function () {
diff --git a/frontend/gamma/tests/tests/Components/CardDialogNew/index.html b/frontend/gamma/tests/tests/Components/CardDialogNew/index.html
index 1e0061a..2d502b4 100644
--- a/frontend/gamma/tests/tests/Components/CardDialogNew/index.html
+++ b/frontend/gamma/tests/tests/Components/CardDialogNew/index.html
@@ -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
29<html> 26<html>
30<head> 27<head>
31 <title>Card Dialog NEW - test</title> 28 <title>Card Dialog NEW - test</title>
32 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 29 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
33 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 30 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
34 31
35 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 32 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
43 40
44 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
49 46
50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
53 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
54 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
55 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
56 53
57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> 54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script>
58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
59 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
60 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> 57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
62 59
63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 60 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
64 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
65 62
66 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script> 63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script>
67 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 64 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
68 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script> 65 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script>
69 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 66 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
70 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script> 67 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script>
71 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> 68 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script>
72 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> 69 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script>
73 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script> 70 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script>
74 <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Field.js'></script --> 71 <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Field.js'></script -->
75 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.js'></script> 72 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.js'></script>
76 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script> 73 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script>
77 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script> 74 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script>
78 75
79 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/BaseComponent.js'></script> 76 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/BaseComponent.js'></script>
80 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Button.js'></script> 77 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Button.js'></script>
81 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ComponentSlot.js'></script> 78 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ComponentSlot.js'></script>
82 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js'></script> 79 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js'></script>
83 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ProgressBar.js'></script> 80 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ProgressBar.js'></script>
84 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js'></script> 81 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js'></script>
85 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js'></script> 82 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js'></script>
86 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Tooltip.js'></script> 83 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Tooltip.js'></script>
87 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js'></script> 84 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js'></script>
88 85
89 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogComponent.js'></script> 86 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogComponent.js'></script>
90 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js'></script> 87 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js'></script>
91 88
92 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/ProgressBarController.js'></script> 89 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/ProgressBarController.js'></script>
93 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js'></script> 90 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js'></script>
94 91
95 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/CardDialogController.js'></script> 92 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/CardDialogController.js'></script>
96 93
97 <script type='text/javascript' src='./User.data.js'></script> 94 <script type='text/javascript' src='./User.data.js'></script>
98 <script type='text/javascript' src='./cardDialogNew_test.js'></script> 95 <script type='text/javascript' src='./cardDialogNew_test.js'></script>
99<script> 96<script>
100 Clipperz_IEisBroken = false; 97 Clipperz_IEisBroken = false;
101</script> 98</script>
102 99
103<!--[if IE]><script> 100<!--[if IE]><script>
104Clipperz_IEisBroken = true; 101Clipperz_IEisBroken = true;
105</script><![endif]--> 102</script><![endif]-->
106 103
107 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/clipperz.css" /> 104 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/clipperz.css" />
108 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/compact.css" /> 105 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/compact.css" />
109 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/ytheme-clipperz.css" /> 106 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/ytheme-clipperz.css" />
110 107
111</head> 108</head>
112<body> 109<body>
113 110
114<div id="tableWrapper"></div> 111<div id="tableWrapper"></div>
115 112
116</body> 113</body>
117</html> 114</html>
diff --git a/frontend/gamma/tests/tests/Components/FullApp/User.data.js b/frontend/gamma/tests/tests/Components/FullApp/User.data.js
index b76ccad..7194f6a 100644
--- a/frontend/gamma/tests/tests/Components/FullApp/User.data.js
+++ b/frontend/gamma/tests/tests/Components/FullApp/User.data.js
@@ -1,120 +1,117 @@
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
29testData = { 26testData = {
30 27
31 //------------------------------------------------------------------------- 28 //-------------------------------------------------------------------------
32 29
33 'testData': { 30 'testData': {
34 users:{ 31 users:{
35 'catchAllUser': { 32 'catchAllUser': {
36 __masterkey_test_value__: 'masterkey', 33 __masterkey_test_value__: 'masterkey',
37 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00', 34 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00',
38 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00' 35 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00'
39 }, 36 },
40 37
41 /* tt/tt - empty, just created, account*/ 38 /* tt/tt - empty, just created, account*/
42 'afaadd70f647886043b9196c861dc04f5605baeab3812ea23707fcba08c4a54f': { 39 'afaadd70f647886043b9196c861dc04f5605baeab3812ea23707fcba08c4a54f': {
43 s: 'df781ec363a380a0bb171d7d4c226248259272a964f04fa2340c77ff84bbc594', 40 s: 'df781ec363a380a0bb171d7d4c226248259272a964f04fa2340c77ff84bbc594',
44 v: 'eca214d990ec971a61cd9c5082e62c2d241f8e1ec805a2c26b1d31612747bfb0', 41 v: 'eca214d990ec971a61cd9c5082e62c2d241f8e1ec805a2c26b1d31612747bfb0',
45 version: '0.2', 42 version: '0.2',
46 maxNumberOfRecords: '100', 43 maxNumberOfRecords: '100',
47 userDetails: '{"records":{"index":{},"data":"q/wNeY/xf7Sujn5CIxEYPRSF"},"directLogins":{"index":{},"data":"qcVwiiyOYeDHFZq5T06iF1Wp"},"preferences":{"data":"7ONKfKQk9GYGnlRxFgTgAd4J"},"oneTimePasswords":{"data":"GD66ZNSIqkRl1UxhwyrsSm5r"},"version":"0.1"}', 44 userDetails: '{"records":{"index":{},"data":"q/wNeY/xf7Sujn5CIxEYPRSF"},"directLogins":{"index":{},"data":"qcVwiiyOYeDHFZq5T06iF1Wp"},"preferences":{"data":"7ONKfKQk9GYGnlRxFgTgAd4J"},"oneTimePasswords":{"data":"GD66ZNSIqkRl1UxhwyrsSm5r"},"version":"0.1"}',
48 statistics: 'tfQF+BrjAQUWyiXWOMkWApmq', 45 statistics: 'tfQF+BrjAQUWyiXWOMkWApmq',
49 userDetailsVersion: '0.3', 46 userDetailsVersion: '0.3',
50 records: { 47 records: {
51 48
52 } 49 }
53 }, 50 },
54 51
55 /* tt/tt - account with "wrong" direct login*/ 52 /* tt/tt - account with "wrong" direct login*/
56 /* 'afaadd70f647886043b9196c861dc04f5605baeab3812ea23707fcba08c4a54f': { 53 /* 'afaadd70f647886043b9196c861dc04f5605baeab3812ea23707fcba08c4a54f': {
57 s: 'df781ec363a380a0bb171d7d4c226248259272a964f04fa2340c77ff84bbc594', 54 s: 'df781ec363a380a0bb171d7d4c226248259272a964f04fa2340c77ff84bbc594',
58 v: 'eca214d990ec971a61cd9c5082e62c2d241f8e1ec805a2c26b1d31612747bfb0', 55 v: 'eca214d990ec971a61cd9c5082e62c2d241f8e1ec805a2c26b1d31612747bfb0',
59 version: '0.2', 56 version: '0.2',
60 maxNumberOfRecords: '100', 57 maxNumberOfRecords: '100',
61 userDetails: '{"records":{"index":{"8bcad18cc9613d794ca052c02e91198f7d5b6e1b7d595f21b21ea53a72e56aab":"1"},"data":"/+RHG+JLrFhZLYga2H9hsPyugT5bbiPwmNgY/RqE2g90FXfsCOvJ6TnfHX6ufeVfJ5+jUq/mRhWMlKdIqROSBLRL5EbL7i881EyKMNE24zpzUWm9zN6HcATPO2iNvDjsZjv2dEP9QWtAabw4Hc7UB+39WQ=="},"directLogins":{"index":{"dd9c1f84d06d67fe1ca5826b52bf46e56407e7f9d87fb7b7b927831920955338":1},"data":"ZF6BZYAVIJi3xrCPs6XWHwZDveEonG/5WJVKwIXbCGa5fr1myopvpqYbWI09tPCCktlMKP/X/SiIyBxlq7Z953VpOHWx0AYqTpRnw8PfJ+0BJDEblBFCZ8ZZfkZXcfYmNoY7"},"preferences":{"data":"IpjYNIHTXtE/pZvR8TjotEnR"},"oneTimePasswords":{"data":"1ibPl0R6S/LGBFFyH9pio1Oo"},"version":"0.1"}', 58 userDetails: '{"records":{"index":{"8bcad18cc9613d794ca052c02e91198f7d5b6e1b7d595f21b21ea53a72e56aab":"1"},"data":"/+RHG+JLrFhZLYga2H9hsPyugT5bbiPwmNgY/RqE2g90FXfsCOvJ6TnfHX6ufeVfJ5+jUq/mRhWMlKdIqROSBLRL5EbL7i881EyKMNE24zpzUWm9zN6HcATPO2iNvDjsZjv2dEP9QWtAabw4Hc7UB+39WQ=="},"directLogins":{"index":{"dd9c1f84d06d67fe1ca5826b52bf46e56407e7f9d87fb7b7b927831920955338":1},"data":"ZF6BZYAVIJi3xrCPs6XWHwZDveEonG/5WJVKwIXbCGa5fr1myopvpqYbWI09tPCCktlMKP/X/SiIyBxlq7Z953VpOHWx0AYqTpRnw8PfJ+0BJDEblBFCZ8ZZfkZXcfYmNoY7"},"preferences":{"data":"IpjYNIHTXtE/pZvR8TjotEnR"},"oneTimePasswords":{"data":"1ibPl0R6S/LGBFFyH9pio1Oo"},"version":"0.1"}',
62 statistics: 'XhiWkdDyHzuviv5bdxOY/2Q5', 59 statistics: 'XhiWkdDyHzuviv5bdxOY/2Q5',
63 userDetailsVersion: '0.3', 60 userDetailsVersion: '0.3',
64 records: { 61 records: {
65 '8bcad18cc9613d794ca052c02e91198f7d5b6e1b7d595f21b21ea53a72e56aab': { 62 '8bcad18cc9613d794ca052c02e91198f7d5b6e1b7d595f21b21ea53a72e56aab': {
66 data: '93QXl+c+JmQo4WTl4rYLYb/oHehjntAroteeHd6HqrUiXYoi+02GYrYcKfvE5wgMWvOwvQ4kVdUv5ksa3gJaUzhrpY5GLM3EV3agEkQ6yuKwHgfmAQvES1c6tcw15lNTzGiZ7PHhBrW5I5H6Le0Mf10uW1DOyu6gFl+W5OarbBBGyQmRmASy+CW2l3/lY5pOFxUq3qlkwW/o4KrSiwKOFh3HDvxOQKwovm0v3puLu+NsuL5rz5blUIZpj+CsOmZUhtU5FC5s6iO2L1uj3w8+Yxu279p249H1bv1zxo1zSBpP507uuRH8dKOLsu7JI6PO+UC8PLqVhPU7fHhDhNleurE7AsUo6eHocG0DhxCAm3xeobm1K2iPd0iRprcuRXmwa8HWRDJHTItbQr9D+cnQTT7/DwneRdQzpMaVZHZcKqtAzz07jboy98plrigu03tV2MkXt2veIMLBofxxHqgZ0NJhcfrVta4FlJsrd1vO9RUkoHl+qPJqQZIVGZzoT0rdHS/nLd614EHJSfRYIl+drUEUchIidbRnMzvPTBo2s6bVfUPcQksVop4E85wMo15ah2BHzUe4vjkmM+Ki8ecUVH8jRR5fmZhCGpBFML5U7o+rERYABFuwwRC9FfCXMtmClHc2LypP+iu+lI/VycdHg/m8skQVeCDBv892vqehUs1CpeVAxMtYOJcFtm6roQNPxJe1EI/j4PAi3SEYPCFev1F7u1g4bw4cG5jCGJx6U3qTTYMX5A06dHf4iSSOUeCsrP5U+VJY0KLhU3E66DzOxNIrIyYN6iOJxKCbhH7ILfGdWAV3MlZZOpVoSIqiR7oZo2PwovtudF5tOy9lhz7SEFYLvuQy8r4mqFC7qMVnXJRrBPDZcQDTdXLG33YV6dWX17QpGrpyvPhX5/UDv8E7zc8PdO1YfJmzL1rpArlIXF1EOsLa6BqjQp5bkIlHKugQMjnn3tf4sYK0OhPskbKidfNm59NedQODEoUr5NGwmjSAqTCokt1D7q0K3vMK', 63 data: '93QXl+c+JmQo4WTl4rYLYb/oHehjntAroteeHd6HqrUiXYoi+02GYrYcKfvE5wgMWvOwvQ4kVdUv5ksa3gJaUzhrpY5GLM3EV3agEkQ6yuKwHgfmAQvES1c6tcw15lNTzGiZ7PHhBrW5I5H6Le0Mf10uW1DOyu6gFl+W5OarbBBGyQmRmASy+CW2l3/lY5pOFxUq3qlkwW/o4KrSiwKOFh3HDvxOQKwovm0v3puLu+NsuL5rz5blUIZpj+CsOmZUhtU5FC5s6iO2L1uj3w8+Yxu279p249H1bv1zxo1zSBpP507uuRH8dKOLsu7JI6PO+UC8PLqVhPU7fHhDhNleurE7AsUo6eHocG0DhxCAm3xeobm1K2iPd0iRprcuRXmwa8HWRDJHTItbQr9D+cnQTT7/DwneRdQzpMaVZHZcKqtAzz07jboy98plrigu03tV2MkXt2veIMLBofxxHqgZ0NJhcfrVta4FlJsrd1vO9RUkoHl+qPJqQZIVGZzoT0rdHS/nLd614EHJSfRYIl+drUEUchIidbRnMzvPTBo2s6bVfUPcQksVop4E85wMo15ah2BHzUe4vjkmM+Ki8ecUVH8jRR5fmZhCGpBFML5U7o+rERYABFuwwRC9FfCXMtmClHc2LypP+iu+lI/VycdHg/m8skQVeCDBv892vqehUs1CpeVAxMtYOJcFtm6roQNPxJe1EI/j4PAi3SEYPCFev1F7u1g4bw4cG5jCGJx6U3qTTYMX5A06dHf4iSSOUeCsrP5U+VJY0KLhU3E66DzOxNIrIyYN6iOJxKCbhH7ILfGdWAV3MlZZOpVoSIqiR7oZo2PwovtudF5tOy9lhz7SEFYLvuQy8r4mqFC7qMVnXJRrBPDZcQDTdXLG33YV6dWX17QpGrpyvPhX5/UDv8E7zc8PdO1YfJmzL1rpArlIXF1EOsLa6BqjQp5bkIlHKugQMjnn3tf4sYK0OhPskbKidfNm59NedQODEoUr5NGwmjSAqTCokt1D7q0K3vMK',
67 version: '0.3', 64 version: '0.3',
68 creationDate: 'Wed Jan 20 16:53:47 CET 2010', 65 creationDate: 'Wed Jan 20 16:53:47 CET 2010',
69 updateDate: 'Wed Jan 20 16:53:47 CET 2010', 66 updateDate: 'Wed Jan 20 16:53:47 CET 2010',
70 accessDate: 'Wed Jan 20 16:53:47 CET 2010', 67 accessDate: 'Wed Jan 20 16:53:47 CET 2010',
71 currentVersion: '79047c5ca148b2915014c44d75874cfedf3caee20cd9f97a87ba2a291ccec741', 68 currentVersion: '79047c5ca148b2915014c44d75874cfedf3caee20cd9f97a87ba2a291ccec741',
72 versions: { 69 versions: {
73 '79047c5ca148b2915014c44d75874cfedf3caee20cd9f97a87ba2a291ccec741': { 70 '79047c5ca148b2915014c44d75874cfedf3caee20cd9f97a87ba2a291ccec741': {
74 header: '####', 71 header: '####',
75 data: 'mqqGPhRw/397NUZH6B8XJW1y5rMDZD6u7WUuEU77zcNXYEHFNQq319u0G/qD5E63kbI/kHsNXZFFKmNGw5IxDiteWSfYG4RiiapsUxe3ZgsFDDBHFrD5NSrMdIzLFSoNel+1mZUps9AcmkelhkXSCqRiGPyiPIKq7wKXF+Ql6j1AsnCMOCJLlJdTZPqIUUaTYD4z/tvTOS1xRdUiaRjw7cCh2yMms1c5V//3J0xbO10kEC8xvA8nhJnQqsMh2P4h6QFzAZtXYKMehJXwQ5ap7W327EMnCdXw2N0pv9Lr5S9khN/9oTMy2tMIGtN+UZ684zTiAP+479xES6OvmVL04nGyCarIqMNu7oclR75Qv2U14CNRA3gIaMPv', 72 data: 'mqqGPhRw/397NUZH6B8XJW1y5rMDZD6u7WUuEU77zcNXYEHFNQq319u0G/qD5E63kbI/kHsNXZFFKmNGw5IxDiteWSfYG4RiiapsUxe3ZgsFDDBHFrD5NSrMdIzLFSoNel+1mZUps9AcmkelhkXSCqRiGPyiPIKq7wKXF+Ql6j1AsnCMOCJLlJdTZPqIUUaTYD4z/tvTOS1xRdUiaRjw7cCh2yMms1c5V//3J0xbO10kEC8xvA8nhJnQqsMh2P4h6QFzAZtXYKMehJXwQ5ap7W327EMnCdXw2N0pv9Lr5S9khN/9oTMy2tMIGtN+UZ684zTiAP+479xES6OvmVL04nGyCarIqMNu7oclR75Qv2U14CNRA3gIaMPv',
76 version: '0.3', 73 version: '0.3',
77 creationDate: 'Wed Jan 20 16:53:47 CET 2010', 74 creationDate: 'Wed Jan 20 16:53:47 CET 2010',
78 updateDate: 'Wed Jan 20 16:53:47 CET 2010', 75 updateDate: 'Wed Jan 20 16:53:47 CET 2010',
79 accessDate: 'Wed Jan 20 16:53:47 CET 2010' 76 accessDate: 'Wed Jan 20 16:53:47 CET 2010'
80 } 77 }
81 } 78 }
82 } 79 }
83 } 80 }
84 }, 81 },
85*/ 82*/
86 /* tt/tt with "fixed" direct login*/ 83 /* tt/tt with "fixed" direct login*/
87 /* 'afaadd70f647886043b9196c861dc04f5605baeab3812ea23707fcba08c4a54f': { 84 /* 'afaadd70f647886043b9196c861dc04f5605baeab3812ea23707fcba08c4a54f': {
88 s: 'df781ec363a380a0bb171d7d4c226248259272a964f04fa2340c77ff84bbc594', 85 s: 'df781ec363a380a0bb171d7d4c226248259272a964f04fa2340c77ff84bbc594',
89 v: 'eca214d990ec971a61cd9c5082e62c2d241f8e1ec805a2c26b1d31612747bfb0', 86 v: 'eca214d990ec971a61cd9c5082e62c2d241f8e1ec805a2c26b1d31612747bfb0',
90 version: '0.2', 87 version: '0.2',
91 maxNumberOfRecords: '100', 88 maxNumberOfRecords: '100',
92 userDetails: '{"records":{"index":{"8bcad18cc9613d794ca052c02e91198f7d5b6e1b7d595f21b21ea53a72e56aab":"0"},"data":"K6sV3xYDTHn1PDHmbVhG3PogarwMtHCliSEGaJ5eev/RQv7MW9TCP5efsjATRT4eheX7JkXAoLo+sgMVr2fTyu7f7K0IEYp3mCi27T/TmtTM3b8FoaVfmXWEjN0FGx7N6gK6+lZxhFueRxsOha1+fTLDBg=="},"directLogins":{"index":{"dd9c1f84d06d67fe1ca5826b52bf46e56407e7f9d87fb7b7b927831920955338":"0"},"data":"9aUwb/5nIlAOPKz62xTwylK0dilpWVVEJBag5+LydmBwWxTmlfcB+OO6jGnMgDrjif3LVhWFjfKVSoZs5hSpPvhsSDPaLf5vQhF4igRaQpWI9QhBdfmv3QvZ57ei/gfcal346F4="},"preferences":{"data":"IpjYNIHTXtE/pZvR8TjotEnR"},"oneTimePasswords":{"data":"1ibPl0R6S/LGBFFyH9pio1Oo"},"version":"0.1"}', 89 userDetails: '{"records":{"index":{"8bcad18cc9613d794ca052c02e91198f7d5b6e1b7d595f21b21ea53a72e56aab":"0"},"data":"K6sV3xYDTHn1PDHmbVhG3PogarwMtHCliSEGaJ5eev/RQv7MW9TCP5efsjATRT4eheX7JkXAoLo+sgMVr2fTyu7f7K0IEYp3mCi27T/TmtTM3b8FoaVfmXWEjN0FGx7N6gK6+lZxhFueRxsOha1+fTLDBg=="},"directLogins":{"index":{"dd9c1f84d06d67fe1ca5826b52bf46e56407e7f9d87fb7b7b927831920955338":"0"},"data":"9aUwb/5nIlAOPKz62xTwylK0dilpWVVEJBag5+LydmBwWxTmlfcB+OO6jGnMgDrjif3LVhWFjfKVSoZs5hSpPvhsSDPaLf5vQhF4igRaQpWI9QhBdfmv3QvZ57ei/gfcal346F4="},"preferences":{"data":"IpjYNIHTXtE/pZvR8TjotEnR"},"oneTimePasswords":{"data":"1ibPl0R6S/LGBFFyH9pio1Oo"},"version":"0.1"}',
93 statistics: 'GHHkZjW0QLdUq6CPnVuDLh86', 90 statistics: 'GHHkZjW0QLdUq6CPnVuDLh86',
94 userDetailsVersion: '0.3', 91 userDetailsVersion: '0.3',
95 records: { 92 records: {
96 '8bcad18cc9613d794ca052c02e91198f7d5b6e1b7d595f21b21ea53a72e56aab': { 93 '8bcad18cc9613d794ca052c02e91198f7d5b6e1b7d595f21b21ea53a72e56aab': {
97 data: 'SOcANZTLo4dsjpsPghF2+TndV9+1uYhGjup3StEa1kiFHHzDK6kDZkKwjhP0mxFgixlQHZBnvgsW/xdHGXdmj1RHtaNdHlte7W1Wq5MHbH4XE9bJzQAvQmop8OETgGz7Khp4BbUMVLIXhxoJmP3rMx7ulQHds+WN+S5u+iB73y5nkJwfOXrXDjwwlL1vER92XHE1VJZAjkYRB/xes6SLcITaG9LYVSGSVAhtLIzkmrAvPHPIpZSOI4NQnAMEVPllwtMlWQBEeerN7PIKImyaUd9zPzP+v0S1V+kUyioizScsDdVuaNKa+yqwFKvYYy61nobv3Mg+Fo3EGqY7GOiO7AklRTreZoOkZAdogQlA1DZuIBNSbpcMvm5MoP+PsU3HFSb/Vioo+QEcgTWqVyDNuFGZpkOI2iIBuQCwLmsCwB1JaE/1cCd1fEpOWyiFep0vxwi0ZrtRZQowQd2Ua3UIoaG5u5WoYEMYoH7FFi6Djda4Rf4gxed8rPLE+cNTI/p67OKlbAfr8iz3YZknaH+CXp9pPr7V7xXBCWNxo5DnFPeeqqrxjTAbkeg/Rp2hJeN7/zi0TSWKDUTXfkuUNyewHOHb7M+MIvC1F1CtmqLuU3h8RDINYgPtZTtTk68YBmOG88xYTtClr4kKxmp1scrV3nJ7af+IGoVKZpRAwBJYT3HV33vzO9W35zl14eZ0vVuNoHMNsh9uDxjCwRyPtQzVpQuTIYnHHoO5R17XyIfe599BOSBAGimciprURN3llC2H8YhRtMilQRYvEDVsC+mVZmGAeEdQ5o/AehnpBuVKErRBzotWe6bNMkIQqWfwCLQFBb6ap1gT5hbacrJM4AlaPgOdQsyX9npd3yN/tzjVA1IqWLnoaEXq9EfWXhBuT+juMfSQ2Y8bPbpBKZmWWL06T2fVkaZJN0VFtBXGi0XRFJngPskApLunZOfBYq831jSi8/Z937QVTQKWwOz6rLE8covE3mxJ53gDVcOlvqD9s/NGXbmnt2GnlWhVKpzhTIJ812Hr050/2AI9ZmWnv+ypSqeQ3l0BFh4D+xfk5NRv+dKbxANheZnfZMhR6u8F+jX/W3hUtNCIMQc2vLSQ', 94 data: 'SOcANZTLo4dsjpsPghF2+TndV9+1uYhGjup3StEa1kiFHHzDK6kDZkKwjhP0mxFgixlQHZBnvgsW/xdHGXdmj1RHtaNdHlte7W1Wq5MHbH4XE9bJzQAvQmop8OETgGz7Khp4BbUMVLIXhxoJmP3rMx7ulQHds+WN+S5u+iB73y5nkJwfOXrXDjwwlL1vER92XHE1VJZAjkYRB/xes6SLcITaG9LYVSGSVAhtLIzkmrAvPHPIpZSOI4NQnAMEVPllwtMlWQBEeerN7PIKImyaUd9zPzP+v0S1V+kUyioizScsDdVuaNKa+yqwFKvYYy61nobv3Mg+Fo3EGqY7GOiO7AklRTreZoOkZAdogQlA1DZuIBNSbpcMvm5MoP+PsU3HFSb/Vioo+QEcgTWqVyDNuFGZpkOI2iIBuQCwLmsCwB1JaE/1cCd1fEpOWyiFep0vxwi0ZrtRZQowQd2Ua3UIoaG5u5WoYEMYoH7FFi6Djda4Rf4gxed8rPLE+cNTI/p67OKlbAfr8iz3YZknaH+CXp9pPr7V7xXBCWNxo5DnFPeeqqrxjTAbkeg/Rp2hJeN7/zi0TSWKDUTXfkuUNyewHOHb7M+MIvC1F1CtmqLuU3h8RDINYgPtZTtTk68YBmOG88xYTtClr4kKxmp1scrV3nJ7af+IGoVKZpRAwBJYT3HV33vzO9W35zl14eZ0vVuNoHMNsh9uDxjCwRyPtQzVpQuTIYnHHoO5R17XyIfe599BOSBAGimciprURN3llC2H8YhRtMilQRYvEDVsC+mVZmGAeEdQ5o/AehnpBuVKErRBzotWe6bNMkIQqWfwCLQFBb6ap1gT5hbacrJM4AlaPgOdQsyX9npd3yN/tzjVA1IqWLnoaEXq9EfWXhBuT+juMfSQ2Y8bPbpBKZmWWL06T2fVkaZJN0VFtBXGi0XRFJngPskApLunZOfBYq831jSi8/Z937QVTQKWwOz6rLE8covE3mxJ53gDVcOlvqD9s/NGXbmnt2GnlWhVKpzhTIJ812Hr050/2AI9ZmWnv+ypSqeQ3l0BFh4D+xfk5NRv+dKbxANheZnfZMhR6u8F+jX/W3hUtNCIMQc2vLSQ',
98 version: '0.3', 95 version: '0.3',
99 creationDate: 'Wed Jan 20 16:53:47 CET 2010', 96 creationDate: 'Wed Jan 20 16:53:47 CET 2010',
100 updateDate: 'Wed Jan 20 16:54:56 CET 2010', 97 updateDate: 'Wed Jan 20 16:54:56 CET 2010',
101 accessDate: 'Wed Jan 20 16:54:56 CET 2010', 98 accessDate: 'Wed Jan 20 16:54:56 CET 2010',
102 currentVersion: 'c0a8f723bf44e0aae1d69f6f85f8e1b747dfbe5ca0d78c5ebda16b32cf17e16d', 99 currentVersion: 'c0a8f723bf44e0aae1d69f6f85f8e1b747dfbe5ca0d78c5ebda16b32cf17e16d',
103 versions: { 100 versions: {
104 '79047c5ca148b2915014c44d75874cfedf3caee20cd9f97a87ba2a291ccec741': { 101 '79047c5ca148b2915014c44d75874cfedf3caee20cd9f97a87ba2a291ccec741': {
105 header: '####', 102 header: '####',
106 data: 'mqqGPhRw/397NUZH6B8XJW1y5rMDZD6u7WUuEU77zcNXYEHFNQq319u0G/qD5E63kbI/kHsNXZFFKmNGw5IxDiteWSfYG4RiiapsUxe3ZgsFDDBHFrD5NSrMdIzLFSoNel+1mZUps9AcmkelhkXSCqRiGPyiPIKq7wKXF+Ql6j1AsnCMOCJLlJdTZPqIUUaTYD4z/tvTOS1xRdUiaRjw7cCh2yMms1c5V//3J0xbO10kEC8xvA8nhJnQqsMh2P4h6QFzAZtXYKMehJXwQ5ap7W327EMnCdXw2N0pv9Lr5S9khN/9oTMy2tMIGtN+UZ684zTiAP+479xES6OvmVL04nGyCarIqMNu7oclR75Qv2U14CNRA3gIaMPv', 103 data: 'mqqGPhRw/397NUZH6B8XJW1y5rMDZD6u7WUuEU77zcNXYEHFNQq319u0G/qD5E63kbI/kHsNXZFFKmNGw5IxDiteWSfYG4RiiapsUxe3ZgsFDDBHFrD5NSrMdIzLFSoNel+1mZUps9AcmkelhkXSCqRiGPyiPIKq7wKXF+Ql6j1AsnCMOCJLlJdTZPqIUUaTYD4z/tvTOS1xRdUiaRjw7cCh2yMms1c5V//3J0xbO10kEC8xvA8nhJnQqsMh2P4h6QFzAZtXYKMehJXwQ5ap7W327EMnCdXw2N0pv9Lr5S9khN/9oTMy2tMIGtN+UZ684zTiAP+479xES6OvmVL04nGyCarIqMNu7oclR75Qv2U14CNRA3gIaMPv',
107 version: '0.3', 104 version: '0.3',
108 creationDate: 'Wed Jan 20 16:53:47 CET 2010', 105 creationDate: 'Wed Jan 20 16:53:47 CET 2010',
109 updateDate: 'Wed Jan 20 16:53:47 CET 2010', 106 updateDate: 'Wed Jan 20 16:53:47 CET 2010',
110 accessDate: 'Wed Jan 20 16:54:26 CET 2010' 107 accessDate: 'Wed Jan 20 16:54:26 CET 2010'
111 }, 108 },
112 'c0a8f723bf44e0aae1d69f6f85f8e1b747dfbe5ca0d78c5ebda16b32cf17e16d': { 109 'c0a8f723bf44e0aae1d69f6f85f8e1b747dfbe5ca0d78c5ebda16b32cf17e16d': {
113 header: '####', 110 header: '####',
114 data: 'ky36e85TGmGQ+O9FXAhHRXEz5eBQogwuyAEgjpsHaSUM22TowYEw/NkWMg4oT4M2DGIYoTyXatvea859F3kMWM5hUe16PaG9J8HzQcEnaTRmi5oe0cMJAlg6pl7ypLt9kUiqDoMIM4lM/eKO8E/bRZWnU1EsxjehYjQQUoeoSyyTAOhHlLfXS99TzCXFrJjO5rAgaJ7iAjNOcQ8Bm6ECau5ao9AVd5hqgMDEmLJhRwygcGHSTek3i3I4o0jIImcqpfNko/4SbEC4p7+V5Rggr1IG5DkeYfKuyqxgulJbtdkcWxAqPReKXUOkmSGlRTje8rjTTLx1Jv7QCc0hLDYc5pLd8j/G7mOwLG1nLTMeNekljKNCTLAhQ+ccDDq35Jv1cNhmA/icmRlMkztbsR7tzqFs+drQ', 111 data: 'ky36e85TGmGQ+O9FXAhHRXEz5eBQogwuyAEgjpsHaSUM22TowYEw/NkWMg4oT4M2DGIYoTyXatvea859F3kMWM5hUe16PaG9J8HzQcEnaTRmi5oe0cMJAlg6pl7ypLt9kUiqDoMIM4lM/eKO8E/bRZWnU1EsxjehYjQQUoeoSyyTAOhHlLfXS99TzCXFrJjO5rAgaJ7iAjNOcQ8Bm6ECau5ao9AVd5hqgMDEmLJhRwygcGHSTek3i3I4o0jIImcqpfNko/4SbEC4p7+V5Rggr1IG5DkeYfKuyqxgulJbtdkcWxAqPReKXUOkmSGlRTje8rjTTLx1Jv7QCc0hLDYc5pLd8j/G7mOwLG1nLTMeNekljKNCTLAhQ+ccDDq35Jv1cNhmA/icmRlMkztbsR7tzqFs+drQ',
115 version: '0.3', 112 version: '0.3',
116 previousVersion: '79047c5ca148b2915014c44d75874cfedf3caee20cd9f97a87ba2a291ccec741', 113 previousVersion: '79047c5ca148b2915014c44d75874cfedf3caee20cd9f97a87ba2a291ccec741',
117 previousVersionKey: 'aLMGf0ucGPaKLVv+AunJaZWDg+gGncnBu2Bf7QseH3ma/jcMOZCNHNd44mNPKfZPyoXYZi6/ToxkJh6Nu8PmOL/SsHTlf8FBZxrNm1i7ZS2b3A==', 114 previousVersionKey: 'aLMGf0ucGPaKLVv+AunJaZWDg+gGncnBu2Bf7QseH3ma/jcMOZCNHNd44mNPKfZPyoXYZi6/ToxkJh6Nu8PmOL/SsHTlf8FBZxrNm1i7ZS2b3A==',
118 creationDate: 'Wed Jan 20 16:54:56 CET 2010', 115 creationDate: 'Wed Jan 20 16:54:56 CET 2010',
119 updateDate: 'Wed Jan 20 16:54:56 CET 2010', 116 updateDate: 'Wed Jan 20 16:54:56 CET 2010',
120 accessDate: 'Wed Jan 20 16:54:56 CET 2010' 117 accessDate: 'Wed Jan 20 16:54:56 CET 2010'
diff --git a/frontend/gamma/tests/tests/Components/FullApp/index.html b/frontend/gamma/tests/tests/Components/FullApp/index.html
index d42d112..bc00fa7 100644
--- a/frontend/gamma/tests/tests/Components/FullApp/index.html
+++ b/frontend/gamma/tests/tests/Components/FullApp/index.html
@@ -1,120 +1,117 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Clipperz - online password manager - debug</title> 28 <title>Clipperz - online password manager - debug</title>
32 <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 29 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
33 30
34 31
35 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/clipperz.css" /> 32 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/clipperz.css" />
36 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/compact.css" /> 33 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/compact.css" />
37 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/ytheme-clipperz.css" /> 34 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/ytheme-clipperz.css" />
38 35
39 <link rel="shortcut icon" href="./clipperz.ico" /> 36 <link rel="shortcut icon" href="./clipperz.ico" />
40 37
41 <meta name="description" content="Login to your web accounts with just one click. Never type a password again! Use multiple complex passwords and forget them. A password manager that enhances your online security." /> 38 <meta name="description" content="Login to your web accounts with just one click. Never type a password again! Use multiple complex passwords and forget them. A password manager that enhances your online security." />
42 <meta name="keywords" content="password manager,gestor de contraseñas,gerenciador de senhas,Kennwortmanager,passwords,security,privacy,cryptography" /> 39 <meta name="keywords" content="password manager,gestor de contraseñas,gerenciador de senhas,Kennwortmanager,passwords,security,privacy,cryptography" />
43 40
44<script> 41<script>
45 Clipperz_IEisBroken = false; 42 Clipperz_IEisBroken = false;
46 Clipperz_normalizedNewLine = '\n'; 43 Clipperz_normalizedNewLine = '\n';
47 Clipperz_dumpUrl = "/dump/"; 44 Clipperz_dumpUrl = "/dump/";
48</script> 45</script>
49 46
50<!--[if IE]><script> 47<!--[if IE]><script>
51Clipperz_IEisBroken = true; 48Clipperz_IEisBroken = true;
52Clipperz_normalizedNewLine = '\x0d\x0a'; 49Clipperz_normalizedNewLine = '\x0d\x0a';
53</script><![endif]--> 50</script><![endif]-->
54 51
55 52
56 <script type='text/javascript' src='../../../../js/bookmarklet.js'></script> 53 <script type='text/javascript' src='../../../../js/bookmarklet.js'></script>
57 <script type='text/javascript' src='../../../../js/bookmarklet_ie.js'></script> 54 <script type='text/javascript' src='../../../../js/bookmarklet_ie.js'></script>
58 55
59 <script type='text/javascript' src='../../../../js/MochiKit/Base.js'></script> 56 <script type='text/javascript' src='../../../../js/MochiKit/Base.js'></script>
60 <script type='text/javascript' src='../../../../js/MochiKit/Iter.js'></script> 57 <script type='text/javascript' src='../../../../js/MochiKit/Iter.js'></script>
61 <script type='text/javascript' src='../../../../js/MochiKit/Logging.js'></script> 58 <script type='text/javascript' src='../../../../js/MochiKit/Logging.js'></script>
62 <script type='text/javascript' src='../../../../js/MochiKit/Format.js'></script> 59 <script type='text/javascript' src='../../../../js/MochiKit/Format.js'></script>
63 <script type='text/javascript' src='../../../../js/MochiKit/Async.js'></script> 60 <script type='text/javascript' src='../../../../js/MochiKit/Async.js'></script>
64 <script type='text/javascript' src='../../../../js/MochiKit/DOM.js'></script> 61 <script type='text/javascript' src='../../../../js/MochiKit/DOM.js'></script>
65 <script type='text/javascript' src='../../../../js/MochiKit/Style.js'></script> 62 <script type='text/javascript' src='../../../../js/MochiKit/Style.js'></script>
66 <script type='text/javascript' src='../../../../js/MochiKit/LoggingPane.js'></script> 63 <script type='text/javascript' src='../../../../js/MochiKit/LoggingPane.js'></script>
67 <script type='text/javascript' src='../../../../js/MochiKit/Color.js'></script> 64 <script type='text/javascript' src='../../../../js/MochiKit/Color.js'></script>
68 <script type='text/javascript' src='../../../../js/MochiKit/Signal.js'></script> 65 <script type='text/javascript' src='../../../../js/MochiKit/Signal.js'></script>
69 <script type='text/javascript' src='../../../../js/MochiKit/Position.js'></script> 66 <script type='text/javascript' src='../../../../js/MochiKit/Position.js'></script>
70 <script type='text/javascript' src='../../../../js/MochiKit/Selector.js'></script> 67 <script type='text/javascript' src='../../../../js/MochiKit/Selector.js'></script>
71 <script type='text/javascript' src='../../../../js/MochiKit/Visual.js'></script> 68 <script type='text/javascript' src='../../../../js/MochiKit/Visual.js'></script>
72 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 69 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
73 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 70 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
74 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 71 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
75 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 72 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
76 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 73 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
77 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 74 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
78 <script type='text/javascript' src='../../../../js/Clipperz/CSVProcessor.js'></script> 75 <script type='text/javascript' src='../../../../js/Clipperz/CSVProcessor.js'></script>
79 <script type='text/javascript' src='../../../../js/Clipperz/KeePassExportProcessor.js'></script> 76 <script type='text/javascript' src='../../../../js/Clipperz/KeePassExportProcessor.js'></script>
80 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script> 77 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script>
81 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 78 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
82 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 79 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
83 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script> 80 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script>
84 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script> 81 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script>
85 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script> 82 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script>
86 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script> 83 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script>
87 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 84 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
88 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 85 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
89 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 86 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
90 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 87 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
91 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 88 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
92 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 89 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
93 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 90 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
94 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/RSA.js'></script> 91 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/RSA.js'></script>
95 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_defaults.js'></script> 92 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_defaults.js'></script>
96 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 93 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
97 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script> 94 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script>
98 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script> 95 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script>
99 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> 96 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script>
100 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 97 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
101 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.JSON.js'></script> 98 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.JSON.js'></script>
102 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 99 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
103 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 100 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
104 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 101 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
105 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 102 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
106 <script type='text/javascript' src='../../../../js/Clipperz/PM/BookmarkletProcessor.js'></script> 103 <script type='text/javascript' src='../../../../js/Clipperz/PM/BookmarkletProcessor.js'></script>
107 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 104 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
108 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.js'></script> 105 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.js'></script>
109 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script> 106 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script>
110 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script> 107 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script>
111 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Preferences.js'></script> 108 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Preferences.js'></script>
112 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js'></script> 109 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js'></script>
113 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script> 110 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script>
114 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> 111 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script>
115 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> 112 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script>
116 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script> 113 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script>
117 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLoginInput.js'></script> 114 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLoginInput.js'></script>
118 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLoginBinding.js'></script> 115 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLoginBinding.js'></script>
119 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLoginFormValue.js'></script> 116 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLoginFormValue.js'></script>
120 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/OneTimePassword.js'></script> 117 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/OneTimePassword.js'></script>
diff --git a/frontend/gamma/tests/tests/Components/FullApp/main_test.js b/frontend/gamma/tests/tests/Components/FullApp/main_test.js
index fa21581..b13972a 100644
--- a/frontend/gamma/tests/tests/Components/FullApp/main_test.js
+++ b/frontend/gamma/tests/tests/Components/FullApp/main_test.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
29function _pm_logEvent(anEvent) { 26function _pm_logEvent(anEvent) {
30 //console.log("####", anEvent); 27 //console.log("####", anEvent);
31 28
32 anEvent.preventDefault(); 29 anEvent.preventDefault();
33} 30}
34 31
35function handleGenericDeferredError(anError) { 32function handleGenericDeferredError(anError) {
36 var result; 33 var result;
37 34
38 if (anError instanceof MochiKit.Async.CancelledError) { 35 if (anError instanceof MochiKit.Async.CancelledError) {
39 result = anError; 36 result = anError;
40 } else { 37 } else {
41MochiKit.Logging.logError("## MainController - GENERIC ERROR" + "\n" + "==>> " + anError + " <<==\n" + anError.stack); 38MochiKit.Logging.logError("## MainController - GENERIC ERROR" + "\n" + "==>> " + anError + " <<==\n" + anError.stack);
42//console.log(anError); 39//console.log(anError);
43 result = new MochiKit.Async.CancelledError(anError); 40 result = new MochiKit.Async.CancelledError(anError);
44 } 41 }
45 42
46 return result; 43 return result;
47} 44}
48 45
49 46
50Clipperz.PM.RunTime = {}; 47Clipperz.PM.RunTime = {};
51 48
52 49
53function run() { 50function run() {
54 var shouldShowRegistrationForm; 51 var shouldShowRegistrationForm;
55 var useCompactDesign; 52 var useCompactDesign;
56 var controllerParameters; 53 var controllerParameters;
57 //var iPhoneDesign; 54 //var iPhoneDesign;
58 55
59 //MochiKit.Signal.connect(document.body, 'onkeydown', _pm_logEvent); 56 //MochiKit.Signal.connect(document.body, 'onkeydown', _pm_logEvent);
60 //MochiKit.Signal.connect(document.body, 'onkeypress', _pm_logEvent); 57 //MochiKit.Signal.connect(document.body, 'onkeypress', _pm_logEvent);
61 //MochiKit.Signal.connect(document.body, 'onclick', _pm_logEvent); 58 //MochiKit.Signal.connect(document.body, 'onclick', _pm_logEvent);
62 59
63 controllerParameters = {}; 60 controllerParameters = {};
64 61
65 MochiKit.DOM.removeElement('javaScriptAlert'); 62 MochiKit.DOM.removeElement('javaScriptAlert');
66 Clipperz.PM.Strings.Languages.initSetup(); 63 Clipperz.PM.Strings.Languages.initSetup();
67 64
68 if (window.location.search.indexOf('registration') != -1) { 65 if (window.location.search.indexOf('registration') != -1) {
69 shouldShowRegistrationForm = true; 66 shouldShowRegistrationForm = true;
70 } else { 67 } else {
71 shouldShowRegistrationForm = false; 68 shouldShowRegistrationForm = false;
72 } 69 }
73 70
74 if (window.location.search.indexOf('autocomplete') != -1) { 71 if (window.location.search.indexOf('autocomplete') != -1) {
75 controllerParameters['autocomplete'] = 'on' 72 controllerParameters['autocomplete'] = 'on'
76 } 73 }
77 74
78 //if ((window.location.search.indexOf('iPhone') != -1) || (navigator.userAgent.match('iPhone'))) { 75 //if ((window.location.search.indexOf('iPhone') != -1) || (navigator.userAgent.match('iPhone'))) {
79 // iPhoneDesign = true; 76 // iPhoneDesign = true;
80 //} else { 77 //} else {
81 // iPhoneDesign = false; 78 // iPhoneDesign = false;
82 //} 79 //}
83 80
84 if (window.location.search.indexOf('compact') != -1) { 81 if (window.location.search.indexOf('compact') != -1) {
85 useCompactDesign = true; 82 useCompactDesign = true;
86 } else { 83 } else {
87 useCompactDesign = false; 84 useCompactDesign = false;
88 } 85 }
89 86
90 if (useCompactDesign == true) { 87 if (useCompactDesign == true) {
91 Clipperz.PM.RunTime.mainController = new Clipperz.PM.UI.Compact.Controllers.MainController(controllerParameters); 88 Clipperz.PM.RunTime.mainController = new Clipperz.PM.UI.Compact.Controllers.MainController(controllerParameters);
92 //} else if (iPhoneDesign == true) { 89 //} else if (iPhoneDesign == true) {
93 // Clipperz.PM.RunTime.mainController = new Clipperz.PM.UI.iPhone.Controllers.MainController(); 90 // Clipperz.PM.RunTime.mainController = new Clipperz.PM.UI.iPhone.Controllers.MainController();
94 } else { 91 } else {
95 Clipperz.PM.RunTime.mainController = new Clipperz.PM.UI.Web.Controllers.MainController(controllerParameters); 92 Clipperz.PM.RunTime.mainController = new Clipperz.PM.UI.Web.Controllers.MainController(controllerParameters);
96 } 93 }
97 94
98 Clipperz.PM.RunTime.mainController.run(shouldShowRegistrationForm); 95 Clipperz.PM.RunTime.mainController.run(shouldShowRegistrationForm);
99 96
100//Clipperz.log("HASH: " + window.location.hash); 97//Clipperz.log("HASH: " + window.location.hash);
101 //if (window.location.hash != "") { 98 //if (window.location.hash != "") {
102 // window.location.hash = "" 99 // window.location.hash = ""
103 //} 100 //}
104//Clipperz.log("HASH cleaned"); 101//Clipperz.log("HASH cleaned");
105 //#credentials=base64encoded({username:'joe', passphrase:'clipperz'}) 102 //#credentials=base64encoded({username:'joe', passphrase:'clipperz'})
106 //MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'doLogin', {username:'joe', passphrase:'clipperz'}); 103 //MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'doLogin', {username:'joe', passphrase:'clipperz'});
107} 104}
108 105
109Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 106Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
110 107
111var proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false}); 108var proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false});
112proxy.dataStore().setupWithEncryptedData(testData['testData']); 109proxy.dataStore().setupWithEncryptedData(testData['testData']);
113 110
114MochiKit.DOM.addLoadEvent(run); 111MochiKit.DOM.addLoadEvent(run);
diff --git a/frontend/gamma/tests/tests/Components/GridLayout/GridLayout_test.js b/frontend/gamma/tests/tests/Components/GridLayout/GridLayout_test.js
index 1c06468..15244b6 100644
--- a/frontend/gamma/tests/tests/Components/GridLayout/GridLayout_test.js
+++ b/frontend/gamma/tests/tests/Components/GridLayout/GridLayout_test.js
@@ -1,119 +1,116 @@
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.Base.module('Clipperz.Tests.GridLayout'); 26Clipperz.Base.module('Clipperz.Tests.GridLayout');
30 27
31Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 28Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
32Clipperz.PM.Strings.Languages.initSetup(); 29Clipperz.PM.Strings.Languages.initSetup();
33 30
34Clipperz.Tests.GridLayout.Tester = function(args) { 31Clipperz.Tests.GridLayout.Tester = function(args) {
35 args = args || {}; 32 args = args || {};
36 33
37 Clipperz.Tests.GridLayout.Tester.superclass.constructor.call(this, args); 34 Clipperz.Tests.GridLayout.Tester.superclass.constructor.call(this, args);
38 //#this._user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}}); 35 //#this._user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}});
39 this._user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}}); 36 this._user = new Clipperz.PM.DataModel.User({username:'joe', getPassphraseFunction:function () { return 'clipperz';}});
40 37
41 return this; 38 return this;
42}; 39};
43 40
44Clipperz.Base.extend(Clipperz.Tests.GridLayout.Tester, Object, { 41Clipperz.Base.extend(Clipperz.Tests.GridLayout.Tester, Object, {
45 42
46 'toString': function() { 43 'toString': function() {
47 return "Clipperz.Tests.GridLayout.Tester"; 44 return "Clipperz.Tests.GridLayout.Tester";
48 }, 45 },
49 46
50 //------------------------------------------------------------------------- 47 //-------------------------------------------------------------------------
51 48
52 'user': function () { 49 'user': function () {
53 return this._user; 50 return this._user;
54 }, 51 },
55 52
56 //------------------------------------------------------------------------- 53 //-------------------------------------------------------------------------
57 54
58 'run': function () { 55 'run': function () {
59 var deferredResult; 56 var deferredResult;
60 var proxy; 57 var proxy;
61 varcardDialogController; 58 varcardDialogController;
62 varcardDialogComponent; 59 varcardDialogComponent;
63 varcomponent; 60 varcomponent;
64 varfilterController; 61 varfilterController;
65 var cardsController; 62 var cardsController;
66 63
67 filterController = new Clipperz.PM.UI.Web.Controllers.FilterController(); 64 filterController = new Clipperz.PM.UI.Web.Controllers.FilterController();
68 cardsController = new Clipperz.PM.UI.Web.Controllers.CardsController({'filterController':filterController}); 65 cardsController = new Clipperz.PM.UI.Web.Controllers.CardsController({'filterController':filterController});
69 66
70 component = new Clipperz.Tests.GridLayout.TestPageComponent({element:MochiKit.DOM.getElement('component')}); 67 component = new Clipperz.Tests.GridLayout.TestPageComponent({element:MochiKit.DOM.getElement('component')});
71 68
72 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false}); 69 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false});
73 70
74 deferredResult = new Clipperz.Async.Deferred("GridLayout_test.init", {trace:false}); 71 deferredResult = new Clipperz.Async.Deferred("GridLayout_test.init", {trace:false});
75 //# deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_offline_copy_data']); 72 //# deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_offline_copy_data']);
76 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']); 73 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['joe_clipperz_offline_copy_data']);
77 deferredResult.addMethod(this.user(), 'login'); 74 deferredResult.addMethod(this.user(), 'login');
78 75
79 deferredResult.addMethod(cardsController,'run', {slot:component.slotNamed('cardList'), user:this.user()}); 76 deferredResult.addMethod(cardsController,'run', {slot:component.slotNamed('cardList'), user:this.user()});
80 // deferredResult.addMethod(xxxxController,'run', {slot:component.slotNamed('cardGrid'), user:this.user()}); 77 // deferredResult.addMethod(xxxxController,'run', {slot:component.slotNamed('cardGrid'), user:this.user()});
81 78
82 deferredResult.callback(); 79 deferredResult.callback();
83 80
84 return deferredResult; 81 return deferredResult;
85 }, 82 },
86 83
87 //========================================================================= 84 //=========================================================================
88 85
89 'saveChanges': function () { 86 'saveChanges': function () {
90 return this.user().saveChanges(); 87 return this.user().saveChanges();
91 }, 88 },
92 89
93 //------------------------------------------------------------------------- 90 //-------------------------------------------------------------------------
94 91
95 'hasPendingChanges': function () { 92 'hasPendingChanges': function () {
96 return this.user().hasPendingChanges(); 93 return this.user().hasPendingChanges();
97 }, 94 },
98 95
99 //------------------------------------------------------------------------- 96 //-------------------------------------------------------------------------
100 97
101 'revertChanges': function () { 98 'revertChanges': function () {
102 return this.user().revertChanges(); 99 return this.user().revertChanges();
103 }, 100 },
104 101
105 //========================================================================= 102 //=========================================================================
106 __syntaxFix__: "syntax fix" 103 __syntaxFix__: "syntax fix"
107}); 104});
108 105
109 106
110 107
111 108
112init = function () { 109init = function () {
113 vartester; 110 vartester;
114 111
115 tester = new Clipperz.Tests.GridLayout.Tester(); 112 tester = new Clipperz.Tests.GridLayout.Tester();
116 tester.run(); 113 tester.run();
117}; 114};
118 115
119MochiKit.DOM.addLoadEvent(init); 116MochiKit.DOM.addLoadEvent(init);
diff --git a/frontend/gamma/tests/tests/Components/GridLayout/TestPageComponent.js b/frontend/gamma/tests/tests/Components/GridLayout/TestPageComponent.js
index a98f041..a066001 100644
--- a/frontend/gamma/tests/tests/Components/GridLayout/TestPageComponent.js
+++ b/frontend/gamma/tests/tests/Components/GridLayout/TestPageComponent.js
@@ -1,102 +1,99 @@
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.Base.module('Clipperz.Tests.GridLayout'); 26Clipperz.Base.module('Clipperz.Tests.GridLayout');
30 27
31Clipperz.Tests.GridLayout.TestPageComponent = function(args) { 28Clipperz.Tests.GridLayout.TestPageComponent = function(args) {
32 args = args || {}; 29 args = args || {};
33 Clipperz.Tests.GridLayout.TestPageComponent.superclass.constructor.call(this, args); 30 Clipperz.Tests.GridLayout.TestPageComponent.superclass.constructor.call(this, args);
34 31
35 this._element = args.element || null; 32 this._element = args.element || null;
36 33
37 this._slots = { 34 this._slots = {
38 'cardList' : this.getId('cardList'), 35 'cardList' : this.getId('cardList'),
39 'cardGrid' : this.getId('cardGrid') 36 'cardGrid' : this.getId('cardGrid')
40 }; 37 };
41 38
42 this.render(); 39 this.render();
43 40
44 41
45 return this; 42 return this;
46} 43}
47 44
48//============================================================================= 45//=============================================================================
49 46
50Clipperz.Base.extend(Clipperz.Tests.GridLayout.TestPageComponent, Clipperz.PM.UI.Common.Components.BaseComponent, { 47Clipperz.Base.extend(Clipperz.Tests.GridLayout.TestPageComponent, Clipperz.PM.UI.Common.Components.BaseComponent, {
51 48
52 //------------------------------------------------------------------------- 49 //-------------------------------------------------------------------------
53 50
54 'toString': function () { 51 'toString': function () {
55 return "Clipperz.Tests.GridLayout.TestPageComponent component"; 52 return "Clipperz.Tests.GridLayout.TestPageComponent component";
56 }, 53 },
57 54
58 //------------------------------------------------------------------------- 55 //-------------------------------------------------------------------------
59 56
60 'renderSelf': function(/*aContainer, aPosition*/) { 57 'renderSelf': function(/*aContainer, aPosition*/) {
61 this.append(this.element(), [ 58 this.append(this.element(), [
62 {tag:'ul', cls:'testTabs', style:'', children:[ 59 {tag:'ul', cls:'testTabs', style:'', children:[
63 {tag:'li', id:this.getId('list'), children:[{tag:'span', html:'list'}]}, 60 {tag:'li', id:this.getId('list'), children:[{tag:'span', html:'list'}]},
64 {tag:'li', id:this.getId('grid'), children:[{tag:'span', html:'grid'}]} 61 {tag:'li', id:this.getId('grid'), children:[{tag:'span', html:'grid'}]}
65 ]}, 62 ]},
66 {tag:'ul', cls:'testPanels', children:[ 63 {tag:'ul', cls:'testPanels', children:[
67 {tag:'li', id:this.getId('listPanel'), children:[ 64 {tag:'li', id:this.getId('listPanel'), children:[
68 {tag:'div', /*id:this.getId('mainPanels'),*/ cls:'mainPanels', children:[ 65 {tag:'div', /*id:this.getId('mainPanels'),*/ cls:'mainPanels', children:[
69 {tag:'div', id:this.getId('cardList'), cls:'gridComponent cardGrid'} 66 {tag:'div', id:this.getId('cardList'), cls:'gridComponent cardGrid'}
70 ]} 67 ]}
71 ]}, 68 ]},
72 {tag:'li', id:this.getId('gridPanel'), children:[ 69 {tag:'li', id:this.getId('gridPanel'), children:[
73 {tag:'div', /*id:this.getId('mainPanels'),*/ cls:'mainPanels', children:[ 70 {tag:'div', /*id:this.getId('mainPanels'),*/ cls:'mainPanels', children:[
74 // {tag:'div', id:this.getId('cardGrid'), cls:'gridComponent cardGrid'} 71 // {tag:'div', id:this.getId('cardGrid'), cls:'gridComponent cardGrid'}
75 {tag:'h1', html:"Ciao"} 72 {tag:'h1', html:"Ciao"}
76 ]} 73 ]}
77 ]} 74 ]}
78 ]} 75 ]}
79 ]); 76 ]);
80 77
81 // this.append(this.element(), {tag:'div', id:this.getId('mainPanels'), cls:'mainPanels'}); 78 // this.append(this.element(), {tag:'div', id:this.getId('mainPanels'), cls:'mainPanels'});
82 // this.append(this.getId('mainPanels'), {tag:'div', id:this.getId('cardGrid'), cls:'gridComponent cardGrid'}); 79 // this.append(this.getId('mainPanels'), {tag:'div', id:this.getId('cardGrid'), cls:'gridComponent cardGrid'});
83 80
84 new Clipperz.PM.UI.Common.Controllers.TabPanelController({ 81 new Clipperz.PM.UI.Common.Controllers.TabPanelController({
85 component:this, 82 component:this,
86 configuration: { 83 configuration: {
87 'LIST': { 84 'LIST': {
88 tab:'list', 85 tab:'list',
89 panel:'listPanel' 86 panel:'listPanel'
90 }, 87 },
91 'GRID': { 88 'GRID': {
92 tab:'grid', 89 tab:'grid',
93 panel:'gridPanel' 90 panel:'gridPanel'
94 } 91 }
95 } 92 }
96 }); 93 });
97 }, 94 },
98 95
99 //------------------------------------------------------------------------- 96 //-------------------------------------------------------------------------
100 97
101 __syntaxFix__: "syntax fix" 98 __syntaxFix__: "syntax fix"
102}); 99});
diff --git a/frontend/gamma/tests/tests/Components/GridLayout/User.data.js b/frontend/gamma/tests/tests/Components/GridLayout/User.data.js
index 6fec8c9..142e511 100644
--- a/frontend/gamma/tests/tests/Components/GridLayout/User.data.js
+++ b/frontend/gamma/tests/tests/Components/GridLayout/User.data.js
@@ -1,120 +1,117 @@
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
29testData = { 26testData = {
30 27
31 //------------------------------------------------------------------------- 28 //-------------------------------------------------------------------------
32 29
33 'simpleLogin_001': { 30 'simpleLogin_001': {
34 'users': [ 31 'users': [
35 { 32 {
36 'username': "joe", 33 'username': "joe",
37 'passphrase': "eoj", 34 'passphrase': "eoj",
38 'version': "0.2", 35 'version': "0.2",
39 'connectionVersion':"0.2", 36 'connectionVersion':"0.2",
40 'records':{ 37 'records':{
41 'record 1': { 38 'record 1': {
42 'notes':"Some notes here", 39 'notes':"Some notes here",
43 'fields':[ 40 'fields':[
44 { 'name': "username", 'value': "joe", 'type': "text" }, 41 { 'name': "username", 'value': "joe", 'type': "text" },
45 { 'name': "password", 'value': "1234", 'type': "password"} 42 { 'name': "password", 'value': "1234", 'type': "password"}
46 ], 43 ],
47 'directLogins':{ 44 'directLogins':{
48 "record 1 direct login": { 45 "record 1 direct login": {
49 'configuration':"", 46 'configuration':"",
50 'bindings':[ 47 'bindings':[
51 ], 48 ],
52 'favicon':"http://www.example.com/favicon.ico" 49 'favicon':"http://www.example.com/favicon.ico"
53 } 50 }
54 } 51 }
55 } 52 }
56 }, 53 },
57 'otp':[ 54 'otp':[
58 "12345678 90abcdef 12345678 90abcdef", 55 "12345678 90abcdef 12345678 90abcdef",
59 "fedcba09 87654321 fedcba09 87654321" 56 "fedcba09 87654321 fedcba09 87654321"
60 ] 57 ]
61 } 58 }
62 ] 59 ]
63 }, 60 },
64 61
65 //------------------------------------------------------------------------- 62 //-------------------------------------------------------------------------
66 63
67 'joe_clipperz_offline_copy_data': { 64 'joe_clipperz_offline_copy_data': {
68 users:{ 65 users:{
69 'catchAllUser': { 66 'catchAllUser': {
70 __masterkey_test_value__: 'masterkey', 67 __masterkey_test_value__: 'masterkey',
71 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00', 68 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00',
72 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00' 69 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00'
73 }, 70 },
74 'f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674': { 71 'f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674': {
75 s: '186f0c40bf73f2af236eaa6c429df225efa933050c9aae65240e93b7b362e3ee', 72 s: '186f0c40bf73f2af236eaa6c429df225efa933050c9aae65240e93b7b362e3ee',
76 v: 'ac61a6e325ecf329926a86084f591d8852d0ad3e4a6080f2adc901b82395ecaf', 73 v: 'ac61a6e325ecf329926a86084f591d8852d0ad3e4a6080f2adc901b82395ecaf',
77 version: '0.2', 74 version: '0.2',
78 maxNumberOfRecords: '100', 75 maxNumberOfRecords: '100',
79 userDetails: '{"records":{"index":{"eeda70e0392261967bda71c3764da78989c45bbd2bb7be6b941b90f81d9b81b5":"0","13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551":"1","062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80":"2","ca01bcb7691f70818feed46c9a2a91883ac543997a395535aedbb49de166690c":"3","507f38b06d587d8889698ae1ebbba7ef8f0539b82550dd25779fd9ee88fc0c7a":"4","d5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d":"5","de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4":"6","d620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045":"7","f215d89bf4583c12f5ed4f4330f488dad3fffa448f4dc784f15ef135dda2c732":"8","36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113":"9","fe21497ef7435d31f9746c132e4b5ecf5aac5f13b5961ddb55d2bdc3409f28f6":"10","6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18":"11","9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291":"12","6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a":"13","6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728":"14","8b18e8593b5bc2f7ea39a5fab222047034ef2f380fee05be0fa6e1c0972fea39":"15","084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d":"16","7bb69b6366a8012f181c01e368ba18d4f7a82bcabb4959189736ad124c4bbfbb":"17","5cdac63b317f3942da38f3a3de3b7f0e5d6678200951c6216230295550f63fb4":"18","c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065":"19"},"data":"6tqzHY7/lB/JVfDi3iJ7BIJTiX1Fih//aTUF7IDoLdlnafC9hoIQ/5lGk+/Ezilw59n11ocPN31aOA9ddFGc9oa2vQ1BdymV8F91sWGLGyWft+PRCWOqxy7U1XxvbgyRbCs0mbtSLp/qlC6gewnAXJpH6KT9oURIjKkyaR8jJ7ng6IlfGUIL2KUFnAv6KNoWO5cdXDU0nrrdSYehcApmXYlTyreHDbrFlLJ2YuR9JLvw9bDxXi/xBY1wZgwiUsGVlG3j0e4f63mJVrpmPI1jhaXD3BQD8cbl96l1ImhYe1Boz53gLq94KSk+3bkjG4GRhvlDPtvk8vdSZPsYPsbC0Cu0M4TMS70nPX7qNj5LDvzrd+S+zDj1/CW0yctRThXstrxDyG/L75k/xdZcVbMzXQHQR4OwWWFiqGOnLpyiZIHGfV5+xZ1a1uxT9TPDoDdwPuE5P1Uwh3PeGc9jatk3waQN6fo3g8PQrCOtPn7C7b6y4MEjpAG4e53HFb0B/hEfK6ApycT6QAglsA3qF/tZyZbwNCwert4pG52rIG/PODZ1XxVZHFX8VFWeSxuk/jnPpJg/pvfpRzBMyCGVDJb/i+dlwFcnOAVvqju5xXJk4mu05XrngF10NzHnVRMfxwXmdtTDYE/lDuODy1SiE5yBZlt/Ff6a0eMS/P8HLsUS8+dtz9yOIQ8rh+52nVS7F5tFWXFOvT7nfq1L4HaHCigY187Jk0Y3LCsZW6ziB5qhKZlbQxdCAx5UDNWNs/F59qxVWP5k2UagBgAJoh+iMTZAMWkaURqQxY84SVYIkm9vNZv6Jf+ppFJNn6s3ZZSUe8gmmgMPJP0Lmoh/VCPNypzR+sZULfVFpmPmNXfaAOQ875iDgvUuBWsDSBdyx2+8Q+fUO0w+W4WkDM09VGmFxrHHjfpRsOT1B3dVFti2ypyiCdkvm878pvTS2j4Obweh6+bmzE7lqOXJgtQUydKNZIb3hNbjB7LwPro6e70ctm3eM9OLFT73u+khVM2UtAhfMseEb+Ny+PldW+VgXnHFm8n5CDBHoDJPXBfJq60l6+1OnDPfB+7tIgnCVH56CZ0jFX2EbxWS63xAHNLttfMtxdbkf4AbpanqLJvNiU4P0ThW4+VNRKBid0v78WC40rWX4UTEv9HPvUA5JUsj1v6+I5UI+quCUfx0vQgeO/gAlI0YuVgDBB1ouWUSES9+U9QIGoUsVTHDo4ZOEInsnhjPbz+IFyRMoMfbiYx3gviHluxHNGYsIMFxo+yB8aW/CedyWYt54ijgViPIXhH+R8bMgFBX4JX6hu8l3NMSYvMV82ua9Pnyl7NxbwuL1S/0JAp2uh0OzGMX9iOOcFWqbWVAX7NCePAG4VTJ0wZ2iL/MUGAVG72qBWvCb1ckavQc1LTw8l2vPG6YwFf0frFHsVvZsGHRptswFTp+77U1bpn/TL2MUXJQ9gQWgCQHxE+STunbJDDWOe9FZeKkJgjqQQ2E70UFoyUp4U/H1fA5Sy9+gS8QMtOcPJ6tCbcIXnq1nif+6bDBjtQCofs59Mm7ibwnofXPGkWv8Id3SyhW9YZCYhJZss2dkMyWfqw4jDysWxQAHjxZg4qgVXA9xpwuhu7O82vMOutk7vPyEuJ4gqlDroN4aPecD405YOEXWeWrWsL2V3y5PwXBrYWq22XzJeL3PvS9usj1Vg2TtG2O3HLuB6Rm6+i7kraiRbENemst4MjLrZwYjI07ZD7DUifsrUvjA50JXXb8pjudYqwUrTKOzcE/uZ1WbSbm+2x8PYVimLtDE4/lOp34J07WV7ZxJL8yk4J4CYRxLnnS7xps8skfy6glRA8fTKRVLv+9VqVxJgE3X/G8Kfosd9K03DJbD+L+h3kvLAAZ6Xr6FpbnA5HeGXzfQ/k5lBqIS39iqT2kZKMxIOXhfwmmuTSS25nk7hD+0R1TdnnTOYQrEn8bdyPuFXzd08FxN9KSYm2H1Gdg+2h+N9UWTED7zXmv/H+gfzk5gfoNOKyWWoaEFT/NL3ky6ApzuiokUj3x+xvCwOXoozLHXhdeZYtYkIu1HlYWQx1YAk2ilg47nnRhQQaYjMvIHfsdYjdb1CpGO5K1dYlRBOCMttp+j5QVz/jCSeCrMh8dtu9ZGLEZ3QL06tqmXp03fCsvKOG0it/KuNG5EJpfb6bV+5DsZvI6k4VLXjcKvZhhh+VZSf2mr+mzFEGKBSeleZvii2g8dVyaEBms37SBFCdIwkMxFRmzo/n+1m8axx9o57NPwISU4q8eAjUK2bWrBECZaI4FwLqmlGK9hMPGB/lbrcuHtlqmv5qzo2TJb5/xoX0LyJB/FZVk5Wsm8vC+O8b7o6JDxaPkOgy07+p8Sg9wuKVy6hHrFRnZ+MEZO3Bbk74omg4+6y4HVuRCgxztzRyUiYTssFphqKBsC/e6fQN0QtSwhLSld/B5qoPMn/9CMs8UxmRbA2Ekwi+7Ss51YsWNmd8dKUqxMKWFZOQYe2dbvcYbRwKwjrARxR7d5aaQr8b96hKsWs0YkLQDn71C3AQfEUvClvDXJdJ97B9WkDHz/DQ9EaIp9+4ZSl3SIrew09vUkvUSVGU7egHzv1Oe2gf4jI/3zToRq307AzCT1tF4k0VbInDFKb8YSG35UaJAtfTENvkAQ+8KmR3gQyHRupLi6D8TNvy/03n8naG8BV8+EArzmUAgxmfv3PTipnn3bdsaIFK1+uldQXVUoHm7PgZidzOHpNXvNzgrL3c3gv7Et/s="},"directLogins":{"index":{"61e87fdc4f1d9112e3b30c1f6812d095dcdb24f014c83319091eb6c9899ec348":"0","989593d4c48929f0c8f1581aa96969c622807e99619ed4732026e967530a68ad":"1","9f7979368fa29f66c44bd97ecaf6c545abc800b1c7bb21b7655a68e1514c3906":"2","dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496":"3","aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584":"4","1f9bfd677b531a03168d3f8bd8afabb5357244a7bc355dff50bd6c0a072114a6":"5","a48e38845713462ecc9f827149eeaae87da882031f98ef8ebbf9ee9537b63468":"6","6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f":"7","2df54059e78f5771f23bd285cce19595b38331b73d67020424d9a1b2257db09c":"8","065cd0c270e5e8ce50e4ea8e3828dccdae18c01ab030813d756a87d03fe68784":"9","ddbc8d01300a4f10631cbde09e1246332eade3a877a2205209f9eb9e5bc9da0b":"10","9b7a30e667afc9f76ba77600658b2c13bff52432d444261d39bf3d069a160afe":"11","9fd2929cde3d32d9cbc5f1d787f2f64729a5e12a14410556b31c0c099762c46a":"12","f695fc36ac56bead80c0d20a88e01e382819c18dc268f1679551b7c83db7cb14":"13","f22dc41ffabef4b3bc8f7af804fec975bd50718098322a673cbe4aaff9464ae1":"14","03251dc1cbc5398789e4c4b45c52cfac3fcd8c1a4f19a81fa68fc6feae31d55c":"15","a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e":"16","cb9ae0bba1957075ccdbfd3b3481704d62087687a2ac7c411a4f07d444bde0f7":"17","7e1d069b7fa57c03bd7bf48807520feb953157834503aaff8c9d493f37dea69d":"18","24404059cabc63b2dbff0f42ba57183108b8189ef53ab62fa25141a1caea824b":"19","33cf9758477460a8056deef0295a1ebe65b39b392c361ceb920a83edacfe5d78":"20","e9a16316f330e3d150f6ffd194f6fd8acd1426757b097de4b88ca0db875202e4":"21"},"data":"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"},"preferences":{"data":"EZMrwxNFFd1sMGycoYE7IrlGGrfLixLUnLZmWMkFysfISe2ay3ueO0PGCApuKqh9hA=="},"oneTimePasswords":{"data":"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"},"version":"0.1"}', 76 userDetails: '{"records":{"index":{"eeda70e0392261967bda71c3764da78989c45bbd2bb7be6b941b90f81d9b81b5":"0","13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551":"1","062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80":"2","ca01bcb7691f70818feed46c9a2a91883ac543997a395535aedbb49de166690c":"3","507f38b06d587d8889698ae1ebbba7ef8f0539b82550dd25779fd9ee88fc0c7a":"4","d5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d":"5","de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4":"6","d620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045":"7","f215d89bf4583c12f5ed4f4330f488dad3fffa448f4dc784f15ef135dda2c732":"8","36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113":"9","fe21497ef7435d31f9746c132e4b5ecf5aac5f13b5961ddb55d2bdc3409f28f6":"10","6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18":"11","9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291":"12","6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a":"13","6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728":"14","8b18e8593b5bc2f7ea39a5fab222047034ef2f380fee05be0fa6e1c0972fea39":"15","084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d":"16","7bb69b6366a8012f181c01e368ba18d4f7a82bcabb4959189736ad124c4bbfbb":"17","5cdac63b317f3942da38f3a3de3b7f0e5d6678200951c6216230295550f63fb4":"18","c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065":"19"},"data":"6tqzHY7/lB/JVfDi3iJ7BIJTiX1Fih//aTUF7IDoLdlnafC9hoIQ/5lGk+/Ezilw59n11ocPN31aOA9ddFGc9oa2vQ1BdymV8F91sWGLGyWft+PRCWOqxy7U1XxvbgyRbCs0mbtSLp/qlC6gewnAXJpH6KT9oURIjKkyaR8jJ7ng6IlfGUIL2KUFnAv6KNoWO5cdXDU0nrrdSYehcApmXYlTyreHDbrFlLJ2YuR9JLvw9bDxXi/xBY1wZgwiUsGVlG3j0e4f63mJVrpmPI1jhaXD3BQD8cbl96l1ImhYe1Boz53gLq94KSk+3bkjG4GRhvlDPtvk8vdSZPsYPsbC0Cu0M4TMS70nPX7qNj5LDvzrd+S+zDj1/CW0yctRThXstrxDyG/L75k/xdZcVbMzXQHQR4OwWWFiqGOnLpyiZIHGfV5+xZ1a1uxT9TPDoDdwPuE5P1Uwh3PeGc9jatk3waQN6fo3g8PQrCOtPn7C7b6y4MEjpAG4e53HFb0B/hEfK6ApycT6QAglsA3qF/tZyZbwNCwert4pG52rIG/PODZ1XxVZHFX8VFWeSxuk/jnPpJg/pvfpRzBMyCGVDJb/i+dlwFcnOAVvqju5xXJk4mu05XrngF10NzHnVRMfxwXmdtTDYE/lDuODy1SiE5yBZlt/Ff6a0eMS/P8HLsUS8+dtz9yOIQ8rh+52nVS7F5tFWXFOvT7nfq1L4HaHCigY187Jk0Y3LCsZW6ziB5qhKZlbQxdCAx5UDNWNs/F59qxVWP5k2UagBgAJoh+iMTZAMWkaURqQxY84SVYIkm9vNZv6Jf+ppFJNn6s3ZZSUe8gmmgMPJP0Lmoh/VCPNypzR+sZULfVFpmPmNXfaAOQ875iDgvUuBWsDSBdyx2+8Q+fUO0w+W4WkDM09VGmFxrHHjfpRsOT1B3dVFti2ypyiCdkvm878pvTS2j4Obweh6+bmzE7lqOXJgtQUydKNZIb3hNbjB7LwPro6e70ctm3eM9OLFT73u+khVM2UtAhfMseEb+Ny+PldW+VgXnHFm8n5CDBHoDJPXBfJq60l6+1OnDPfB+7tIgnCVH56CZ0jFX2EbxWS63xAHNLttfMtxdbkf4AbpanqLJvNiU4P0ThW4+VNRKBid0v78WC40rWX4UTEv9HPvUA5JUsj1v6+I5UI+quCUfx0vQgeO/gAlI0YuVgDBB1ouWUSES9+U9QIGoUsVTHDo4ZOEInsnhjPbz+IFyRMoMfbiYx3gviHluxHNGYsIMFxo+yB8aW/CedyWYt54ijgViPIXhH+R8bMgFBX4JX6hu8l3NMSYvMV82ua9Pnyl7NxbwuL1S/0JAp2uh0OzGMX9iOOcFWqbWVAX7NCePAG4VTJ0wZ2iL/MUGAVG72qBWvCb1ckavQc1LTw8l2vPG6YwFf0frFHsVvZsGHRptswFTp+77U1bpn/TL2MUXJQ9gQWgCQHxE+STunbJDDWOe9FZeKkJgjqQQ2E70UFoyUp4U/H1fA5Sy9+gS8QMtOcPJ6tCbcIXnq1nif+6bDBjtQCofs59Mm7ibwnofXPGkWv8Id3SyhW9YZCYhJZss2dkMyWfqw4jDysWxQAHjxZg4qgVXA9xpwuhu7O82vMOutk7vPyEuJ4gqlDroN4aPecD405YOEXWeWrWsL2V3y5PwXBrYWq22XzJeL3PvS9usj1Vg2TtG2O3HLuB6Rm6+i7kraiRbENemst4MjLrZwYjI07ZD7DUifsrUvjA50JXXb8pjudYqwUrTKOzcE/uZ1WbSbm+2x8PYVimLtDE4/lOp34J07WV7ZxJL8yk4J4CYRxLnnS7xps8skfy6glRA8fTKRVLv+9VqVxJgE3X/G8Kfosd9K03DJbD+L+h3kvLAAZ6Xr6FpbnA5HeGXzfQ/k5lBqIS39iqT2kZKMxIOXhfwmmuTSS25nk7hD+0R1TdnnTOYQrEn8bdyPuFXzd08FxN9KSYm2H1Gdg+2h+N9UWTED7zXmv/H+gfzk5gfoNOKyWWoaEFT/NL3ky6ApzuiokUj3x+xvCwOXoozLHXhdeZYtYkIu1HlYWQx1YAk2ilg47nnRhQQaYjMvIHfsdYjdb1CpGO5K1dYlRBOCMttp+j5QVz/jCSeCrMh8dtu9ZGLEZ3QL06tqmXp03fCsvKOG0it/KuNG5EJpfb6bV+5DsZvI6k4VLXjcKvZhhh+VZSf2mr+mzFEGKBSeleZvii2g8dVyaEBms37SBFCdIwkMxFRmzo/n+1m8axx9o57NPwISU4q8eAjUK2bWrBECZaI4FwLqmlGK9hMPGB/lbrcuHtlqmv5qzo2TJb5/xoX0LyJB/FZVk5Wsm8vC+O8b7o6JDxaPkOgy07+p8Sg9wuKVy6hHrFRnZ+MEZO3Bbk74omg4+6y4HVuRCgxztzRyUiYTssFphqKBsC/e6fQN0QtSwhLSld/B5qoPMn/9CMs8UxmRbA2Ekwi+7Ss51YsWNmd8dKUqxMKWFZOQYe2dbvcYbRwKwjrARxR7d5aaQr8b96hKsWs0YkLQDn71C3AQfEUvClvDXJdJ97B9WkDHz/DQ9EaIp9+4ZSl3SIrew09vUkvUSVGU7egHzv1Oe2gf4jI/3zToRq307AzCT1tF4k0VbInDFKb8YSG35UaJAtfTENvkAQ+8KmR3gQyHRupLi6D8TNvy/03n8naG8BV8+EArzmUAgxmfv3PTipnn3bdsaIFK1+uldQXVUoHm7PgZidzOHpNXvNzgrL3c3gv7Et/s="},"directLogins":{"index":{"61e87fdc4f1d9112e3b30c1f6812d095dcdb24f014c83319091eb6c9899ec348":"0","989593d4c48929f0c8f1581aa96969c622807e99619ed4732026e967530a68ad":"1","9f7979368fa29f66c44bd97ecaf6c545abc800b1c7bb21b7655a68e1514c3906":"2","dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496":"3","aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584":"4","1f9bfd677b531a03168d3f8bd8afabb5357244a7bc355dff50bd6c0a072114a6":"5","a48e38845713462ecc9f827149eeaae87da882031f98ef8ebbf9ee9537b63468":"6","6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f":"7","2df54059e78f5771f23bd285cce19595b38331b73d67020424d9a1b2257db09c":"8","065cd0c270e5e8ce50e4ea8e3828dccdae18c01ab030813d756a87d03fe68784":"9","ddbc8d01300a4f10631cbde09e1246332eade3a877a2205209f9eb9e5bc9da0b":"10","9b7a30e667afc9f76ba77600658b2c13bff52432d444261d39bf3d069a160afe":"11","9fd2929cde3d32d9cbc5f1d787f2f64729a5e12a14410556b31c0c099762c46a":"12","f695fc36ac56bead80c0d20a88e01e382819c18dc268f1679551b7c83db7cb14":"13","f22dc41ffabef4b3bc8f7af804fec975bd50718098322a673cbe4aaff9464ae1":"14","03251dc1cbc5398789e4c4b45c52cfac3fcd8c1a4f19a81fa68fc6feae31d55c":"15","a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e":"16","cb9ae0bba1957075ccdbfd3b3481704d62087687a2ac7c411a4f07d444bde0f7":"17","7e1d069b7fa57c03bd7bf48807520feb953157834503aaff8c9d493f37dea69d":"18","24404059cabc63b2dbff0f42ba57183108b8189ef53ab62fa25141a1caea824b":"19","33cf9758477460a8056deef0295a1ebe65b39b392c361ceb920a83edacfe5d78":"20","e9a16316f330e3d150f6ffd194f6fd8acd1426757b097de4b88ca0db875202e4":"21"},"data":"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"},"preferences":{"data":"EZMrwxNFFd1sMGycoYE7IrlGGrfLixLUnLZmWMkFysfISe2ay3ueO0PGCApuKqh9hA=="},"oneTimePasswords":{"data":"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"},"version":"0.1"}',
80 statistics: 'SfGy/4mpXQdDOv+Bcfie4Yt/', 77 statistics: 'SfGy/4mpXQdDOv+Bcfie4Yt/',
81 userDetailsVersion: '0.3', 78 userDetailsVersion: '0.3',
82 records: { 79 records: {
83 '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80': { 80 '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80': {
84 data: '7sgxSQlqR+wh3g06M2+sWp7raQxjjQ9jLIz2OcEB7SckuQcXNrhMlDCbL6ncSljtzgqhioWrOB409kIG8lc7h6ekghOE/Mhi7rVwAiRfNGB7r3mYxpEXRe96O2RG7E+NcSp8ezl+5gJ9D0o1abXPeFQYGcr95hUioCfyY+xrxY8TJVwdb9nHkYvBdKV7rCl1dTxgsKWK3nlo1T7e5uyiz5YUAE6BrCtTFAqtprLI/xOpRti9C+llohS7D6s8hkCBPZfp3chKFDrgpsCBFLhXN8jrBKSjHi1PJdRQzpJsgrxyeBj0dZx3gTsYOXqrYgdIzFUo7K1Tqb30yNprBiDMr7j0YYXiSvEb7OuOIP+HTXGN+yt09bk9LggyY6Fh0e+tenjQQ3soySN/XznOBpEjXbzXoz6fR1MXVnE9GgaX99LVNqwWfq2rIBdSE/FfspRiWP3BY5jIrEkNeRclS05U1zw3K3wxOL+cB9r2IynSXnK8QcrDNNRZ0W3PhsSFfByUXuviLSEOPuJa1mYP29L9Lj/WyHL1Gyl8xLbt2H41S6+wvIleKMuc7teH6wPXbnYphvbwBowoI6HZTEFkz3dQKhhY6VF/81iCXsuaz6BjyrzFX6SkQ4S3lN1tv4opQMJFvnmHb6EkXqVWfeIXzJIJO+owL4vDOf4okpAD+HPjjlVXhq6fvyM5UBIK9+tzJW78X/zifrQOfWRIhwjVsfUdZWmZ/S35vnHWNuXkM8GBYrDysqxanDtah3U8XLAiIhFtBOzpzr6qGaNDOKKgG3K8QXT4bYHOq1rQVUwzQuKhlCyStrRMQrC5Ry251xmLy6dKfppRarVeGDtzB/30BbtFNdZmzMNG2g+Jj5tFCrEtCMvMiQEWZHMU3tGMFxDef/KKdv1fFTJC16jmaUiCHUZmNjB3EO9R6xPVcMlAVKf57n3efrpRk/GTmm9JhAFkuF/wsveH4JjPpDUdkHYFu5tHbb30sbga3ufBAXbQL4ck10S24akU/cKraFGLvuKGaR2U0i6ih911TBSf3pAfZ3RFbBhVIl+6rSknC5+IXoBR7MRstBPW/xC9pQVjN5Qyn0g3aUjUSI+q4jcTuvMl32NtTJbWRMGhfkrpVzypZTyPnIh6XJkyBghlUARXw23MlbjiZxmY4ScDmcWZRZJWIknHlqjDKFDKNnwrfnEI9qWyMDno+jA/DEQz0mnpdZYEsoz1/qAmAeDt89vx', 81 data: '7sgxSQlqR+wh3g06M2+sWp7raQxjjQ9jLIz2OcEB7SckuQcXNrhMlDCbL6ncSljtzgqhioWrOB409kIG8lc7h6ekghOE/Mhi7rVwAiRfNGB7r3mYxpEXRe96O2RG7E+NcSp8ezl+5gJ9D0o1abXPeFQYGcr95hUioCfyY+xrxY8TJVwdb9nHkYvBdKV7rCl1dTxgsKWK3nlo1T7e5uyiz5YUAE6BrCtTFAqtprLI/xOpRti9C+llohS7D6s8hkCBPZfp3chKFDrgpsCBFLhXN8jrBKSjHi1PJdRQzpJsgrxyeBj0dZx3gTsYOXqrYgdIzFUo7K1Tqb30yNprBiDMr7j0YYXiSvEb7OuOIP+HTXGN+yt09bk9LggyY6Fh0e+tenjQQ3soySN/XznOBpEjXbzXoz6fR1MXVnE9GgaX99LVNqwWfq2rIBdSE/FfspRiWP3BY5jIrEkNeRclS05U1zw3K3wxOL+cB9r2IynSXnK8QcrDNNRZ0W3PhsSFfByUXuviLSEOPuJa1mYP29L9Lj/WyHL1Gyl8xLbt2H41S6+wvIleKMuc7teH6wPXbnYphvbwBowoI6HZTEFkz3dQKhhY6VF/81iCXsuaz6BjyrzFX6SkQ4S3lN1tv4opQMJFvnmHb6EkXqVWfeIXzJIJO+owL4vDOf4okpAD+HPjjlVXhq6fvyM5UBIK9+tzJW78X/zifrQOfWRIhwjVsfUdZWmZ/S35vnHWNuXkM8GBYrDysqxanDtah3U8XLAiIhFtBOzpzr6qGaNDOKKgG3K8QXT4bYHOq1rQVUwzQuKhlCyStrRMQrC5Ry251xmLy6dKfppRarVeGDtzB/30BbtFNdZmzMNG2g+Jj5tFCrEtCMvMiQEWZHMU3tGMFxDef/KKdv1fFTJC16jmaUiCHUZmNjB3EO9R6xPVcMlAVKf57n3efrpRk/GTmm9JhAFkuF/wsveH4JjPpDUdkHYFu5tHbb30sbga3ufBAXbQL4ck10S24akU/cKraFGLvuKGaR2U0i6ih911TBSf3pAfZ3RFbBhVIl+6rSknC5+IXoBR7MRstBPW/xC9pQVjN5Qyn0g3aUjUSI+q4jcTuvMl32NtTJbWRMGhfkrpVzypZTyPnIh6XJkyBghlUARXw23MlbjiZxmY4ScDmcWZRZJWIknHlqjDKFDKNnwrfnEI9qWyMDno+jA/DEQz0mnpdZYEsoz1/qAmAeDt89vx',
85 version: '0.2', 82 version: '0.2',
86 creationDate: 'Wed Mar 14 15:46:44 PDT 2007', 83 creationDate: 'Wed Mar 14 15:46:44 PDT 2007',
87 updateDate: 'Wed Mar 14 15:46:44 PDT 2007', 84 updateDate: 'Wed Mar 14 15:46:44 PDT 2007',
88 accessDate: 'Mon Jan 19 16:10:04 PDT 2009', 85 accessDate: 'Mon Jan 19 16:10:04 PDT 2009',
89 currentVersion: '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3', 86 currentVersion: '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3',
90 versions: { 87 versions: {
91 '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3': { 88 '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3': {
92 header: '####', 89 header: '####',
93 data: 'GCNNIhDQjMJQZGVSf+95fPtU6eOnFWVhuGm86r8WZGVR2Gf2EjbG1OJ0ZIGpZ/AXgirCMpo5AFxJe0Bay8IYg+xmBqMFhwFxzAgJBYCIts+raSaNRipuY8dTEqDxAqD1cChcG8EhSoiFgQ0fG0I7nNEUDJi0pIt4/ygBcwvAhuAenEp9ZW+oQA0+YysPQRqkz3IieFaOoSEbe5/SqpUilV4q1gTVyzNXvrxzxx+rlvEyGFgFN+vgtUZ1NrwlPk4gVksTpylvv6CFaMGEWKhgMG6efo0rJckKosaJTu1pldJdnmMK4EKNMLOd+jZ6pEhEhYyadrA4+zYU5TlmZA6ASzTaps8piSwZodoi9qY0ch2StK4mAbzeEGe2HdfHuAU9Tyq3Ppk3+VfNdKgpQfYrQOiSlXbKzK636tzXTN/gyrfOTHjBrRl117ywibgSX63ayAYNfcLpKotC', 90 data: 'GCNNIhDQjMJQZGVSf+95fPtU6eOnFWVhuGm86r8WZGVR2Gf2EjbG1OJ0ZIGpZ/AXgirCMpo5AFxJe0Bay8IYg+xmBqMFhwFxzAgJBYCIts+raSaNRipuY8dTEqDxAqD1cChcG8EhSoiFgQ0fG0I7nNEUDJi0pIt4/ygBcwvAhuAenEp9ZW+oQA0+YysPQRqkz3IieFaOoSEbe5/SqpUilV4q1gTVyzNXvrxzxx+rlvEyGFgFN+vgtUZ1NrwlPk4gVksTpylvv6CFaMGEWKhgMG6efo0rJckKosaJTu1pldJdnmMK4EKNMLOd+jZ6pEhEhYyadrA4+zYU5TlmZA6ASzTaps8piSwZodoi9qY0ch2StK4mAbzeEGe2HdfHuAU9Tyq3Ppk3+VfNdKgpQfYrQOiSlXbKzK636tzXTN/gyrfOTHjBrRl117ywibgSX63ayAYNfcLpKotC',
94 version: '0.2', 91 version: '0.2',
95 creationDate: 'Wed Mar 14 15:46:44 PDT 2007', 92 creationDate: 'Wed Mar 14 15:46:44 PDT 2007',
96 updateDate: 'Wed Mar 14 15:46:44 PDT 2007', 93 updateDate: 'Wed Mar 14 15:46:44 PDT 2007',
97 accessDate: 'Mon Jan 19 16:10:04 PDT 2009' 94 accessDate: 'Mon Jan 19 16:10:04 PDT 2009'
98 } 95 }
99 } 96 }
100 }, 97 },
101 '084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d': { 98 '084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d': {
102 data: 'fGzBu1On7e/6rAoSB1a4fq/CkS8Be/T8UP5cQ93asBTWndSYu2lW4DQ4SXQXSindIi3OnNx/f6SNv/extb7OrMLREF92wXI045ipPwy+DIICb+cQNMJ82Sh4cXaIcAWcyrm+MYri3qq9LBKbpwkILcebZidJ86lmKYHJozUezmfbMcwNCljHs/gYkHVzVcuw9L52Ugc6wC7sjsshh+UH6i4/2Frlrophtx+b1vervNd8eoYiKnedHVXVfW7UJcQoF27eHFgzwYnGvRW0KNXFFhqmPb61TSkIvNdCCvBKDP4SXrWvGgzU89wipvWdUPpQ+fCT6Mp3hPRrbJxwMunmjujZOzBld/HkjnXoiNfBb5akA280WvdyzWYATrjV1ZFx8yQY8G0+lRt/MxjKDc38w4y+Rf5WeRbXboJMvFatwooHUggk6qSRmZVvgOmFmNuDRnRYIFzqK3JclhJeVasnqhR6RiGSowc1Ffr1HhcZCMnXpQABGBkZcHD/zw6YjHRyh9Plw7XAm0xb16HMDtiwt7WLJpxLH/HP99j/A2hvMGWiUiFCaYv7AzyEPTmYbN32D1IsAEE/GC3FG0HypGTBolP8wpAfTRdlvWpJz8oRRdwuLV3Pgpu+kXh5sQyeZI6tnuMPQFmRDcMN1oo3E5V5V585nVMnKTFcXhBzD4UnoV+DQNkG/+iSPybQzz/EZmucEqGEYyjI3kl4MAX8UMEUxE4JO0fF8MzyBI13nxknowAceEammx1dGVaJCoIOdhadaPVPyOzXM1Vp1erVm5k4TsxSx1pll+GOm6hVoNHIuQLDueaMEpRxMhfwc8cDyXURqRGPTgTc0bint5xVjo10fnpX1gcdc/AWL6y3tXM80NW+uFJ4GI7VzyzfcMRzTiRaGi19z8MIx8PbIVGh2sw4FhgGujNsPrpuESvUVT+17M0+v8oEoABNlcizTMFs/sA1uqlPumFASltzmViAzClOsDuCh069hFLjdk/Ex5jy4vPYlwOT8Uq9DJC9ZWuZgiI1DrhWN/8QGAEGxxbvnSZPNCQ9kpD5p+iabinLLWOAirVNgKwIRJRyAu/uR9xKd7J9Wxq8q/ii+y5lGilbo2g24wbDwrkXYVhqp/4J0g+p8Wv1NBjCTSCqV39WEizUCRHo3ee9HnQnBJQDOyTBRuz2odTJtJ5tLYjWXZRdFzFSJrEq+Z1z3oq7LnhZy3YWaFXPeKmBCemMthtNt0nL', 99 data: 'fGzBu1On7e/6rAoSB1a4fq/CkS8Be/T8UP5cQ93asBTWndSYu2lW4DQ4SXQXSindIi3OnNx/f6SNv/extb7OrMLREF92wXI045ipPwy+DIICb+cQNMJ82Sh4cXaIcAWcyrm+MYri3qq9LBKbpwkILcebZidJ86lmKYHJozUezmfbMcwNCljHs/gYkHVzVcuw9L52Ugc6wC7sjsshh+UH6i4/2Frlrophtx+b1vervNd8eoYiKnedHVXVfW7UJcQoF27eHFgzwYnGvRW0KNXFFhqmPb61TSkIvNdCCvBKDP4SXrWvGgzU89wipvWdUPpQ+fCT6Mp3hPRrbJxwMunmjujZOzBld/HkjnXoiNfBb5akA280WvdyzWYATrjV1ZFx8yQY8G0+lRt/MxjKDc38w4y+Rf5WeRbXboJMvFatwooHUggk6qSRmZVvgOmFmNuDRnRYIFzqK3JclhJeVasnqhR6RiGSowc1Ffr1HhcZCMnXpQABGBkZcHD/zw6YjHRyh9Plw7XAm0xb16HMDtiwt7WLJpxLH/HP99j/A2hvMGWiUiFCaYv7AzyEPTmYbN32D1IsAEE/GC3FG0HypGTBolP8wpAfTRdlvWpJz8oRRdwuLV3Pgpu+kXh5sQyeZI6tnuMPQFmRDcMN1oo3E5V5V585nVMnKTFcXhBzD4UnoV+DQNkG/+iSPybQzz/EZmucEqGEYyjI3kl4MAX8UMEUxE4JO0fF8MzyBI13nxknowAceEammx1dGVaJCoIOdhadaPVPyOzXM1Vp1erVm5k4TsxSx1pll+GOm6hVoNHIuQLDueaMEpRxMhfwc8cDyXURqRGPTgTc0bint5xVjo10fnpX1gcdc/AWL6y3tXM80NW+uFJ4GI7VzyzfcMRzTiRaGi19z8MIx8PbIVGh2sw4FhgGujNsPrpuESvUVT+17M0+v8oEoABNlcizTMFs/sA1uqlPumFASltzmViAzClOsDuCh069hFLjdk/Ex5jy4vPYlwOT8Uq9DJC9ZWuZgiI1DrhWN/8QGAEGxxbvnSZPNCQ9kpD5p+iabinLLWOAirVNgKwIRJRyAu/uR9xKd7J9Wxq8q/ii+y5lGilbo2g24wbDwrkXYVhqp/4J0g+p8Wv1NBjCTSCqV39WEizUCRHo3ee9HnQnBJQDOyTBRuz2odTJtJ5tLYjWXZRdFzFSJrEq+Z1z3oq7LnhZy3YWaFXPeKmBCemMthtNt0nL',
103 version: '0.3', 100 version: '0.3',
104 creationDate: 'Fri Oct 17 16:49:20 PDT 2008', 101 creationDate: 'Fri Oct 17 16:49:20 PDT 2008',
105 updateDate: 'Mon Oct 27 08:58:49 PDT 2008', 102 updateDate: 'Mon Oct 27 08:58:49 PDT 2008',
106 accessDate: 'Mon Jan 19 16:09:39 PDT 2009', 103 accessDate: 'Mon Jan 19 16:09:39 PDT 2009',
107 currentVersion: '6fd60c5709a4808444f43f7bbd872363d76703957f613076538ba2f9161206ac', 104 currentVersion: '6fd60c5709a4808444f43f7bbd872363d76703957f613076538ba2f9161206ac',
108 versions: { 105 versions: {
109 '0ae362285f103722abbd046eee2b7d10aeae6a1d05cbaf2081392ce9df882bcf': { 106 '0ae362285f103722abbd046eee2b7d10aeae6a1d05cbaf2081392ce9df882bcf': {
110 header: '####', 107 header: '####',
111 data: 'sG6TUmPSEPFpiJ5YdtghWHmHbvUK63tZCZ+Q5iz2ALas//jN+lZCBhZcjEwPEJskBkK2R0MyAh14wWGh2bBHMjsokgTe+L+x+0c/Zi0epE/IC9gtOBhsTe/hZ2e2xOGF/SbzET3DAAYXvxduZ36f7SvvFnrkkKvpj8wGSdTFcBmzqMb9DL2bRyRCLGLMzE3F1a0q5CufCIRz2TgHm+Uw+kfvvwC7ig/F/5iLW90Ypz3vmEtMEFYFHZ9a8Oh0rsXGfevbMhFqALoywzihQEe/NiB8dwn7GEdYKSQ35rhvZh29ULWOZinqmg0ONe0HYaxx7DbKsVoue57S0CIUlgHLajzHfLfqQg2sFI0OT8TnHsGg0YZ6mM2EdKmEjJiER0cP', 108 data: 'sG6TUmPSEPFpiJ5YdtghWHmHbvUK63tZCZ+Q5iz2ALas//jN+lZCBhZcjEwPEJskBkK2R0MyAh14wWGh2bBHMjsokgTe+L+x+0c/Zi0epE/IC9gtOBhsTe/hZ2e2xOGF/SbzET3DAAYXvxduZ36f7SvvFnrkkKvpj8wGSdTFcBmzqMb9DL2bRyRCLGLMzE3F1a0q5CufCIRz2TgHm+Uw+kfvvwC7ig/F/5iLW90Ypz3vmEtMEFYFHZ9a8Oh0rsXGfevbMhFqALoywzihQEe/NiB8dwn7GEdYKSQ35rhvZh29ULWOZinqmg0ONe0HYaxx7DbKsVoue57S0CIUlgHLajzHfLfqQg2sFI0OT8TnHsGg0YZ6mM2EdKmEjJiER0cP',
112 version: '0.3', 109 version: '0.3',
113 creationDate: 'Fri Oct 17 17:00:31 PDT 2008', 110 creationDate: 'Fri Oct 17 17:00:31 PDT 2008',
114 updateDate: 'Fri Oct 17 17:00:31 PDT 2008', 111 updateDate: 'Fri Oct 17 17:00:31 PDT 2008',
115 accessDate: 'Fri Oct 17 17:00:31 PDT 2008' 112 accessDate: 'Fri Oct 17 17:00:31 PDT 2008'
116 }, 113 },
117 '10f45664bbd979a92f37886f1ecc6e52e49798b16dc997aecd37259ad9b2090e': { 114 '10f45664bbd979a92f37886f1ecc6e52e49798b16dc997aecd37259ad9b2090e': {
118 header: '####', 115 header: '####',
119 data: 'RdKVaV/WWWchrCse3KtcXd47Bfm6IAwjqVUpaxoed3HeunI42AAm7xYYSjeK8edHpbNRJbhobBAX5OZtWIp/HmgkobKM8CIiWxrWz89FqyrbnPD7+fXdtgF2yTax/0sC1l0ibncdOuJKX6U829oPlXCpXIOjlomc4wEEAD/5V6FbORvdZ9IE/ME3LsG2y02cT2tIpx6+R6wC/PKXhZA2UDsTE6R2Op2BtIzpVORZLXsdyAp/4wvWQxq90i9cEpbsVQsMB10JVyNHNsRTFhIlHi9MVCaMxQvcrwRElMj/Y9x3RbsFzSGKqFLqdg7Fn/U+KYkpYtsgHv9hraPIb9lV5FH16+iItU/HBM6FGezIj1ZkoQ+dgjPfSjTZzgzDYwyb', 116 data: 'RdKVaV/WWWchrCse3KtcXd47Bfm6IAwjqVUpaxoed3HeunI42AAm7xYYSjeK8edHpbNRJbhobBAX5OZtWIp/HmgkobKM8CIiWxrWz89FqyrbnPD7+fXdtgF2yTax/0sC1l0ibncdOuJKX6U829oPlXCpXIOjlomc4wEEAD/5V6FbORvdZ9IE/ME3LsG2y02cT2tIpx6+R6wC/PKXhZA2UDsTE6R2Op2BtIzpVORZLXsdyAp/4wvWQxq90i9cEpbsVQsMB10JVyNHNsRTFhIlHi9MVCaMxQvcrwRElMj/Y9x3RbsFzSGKqFLqdg7Fn/U+KYkpYtsgHv9hraPIb9lV5FH16+iItU/HBM6FGezIj1ZkoQ+dgjPfSjTZzgzDYwyb',
120 version: '0.3', 117 version: '0.3',
diff --git a/frontend/gamma/tests/tests/Components/GridLayout/index.html b/frontend/gamma/tests/tests/Components/GridLayout/index.html
index 0208a82..f1ed116 100644
--- a/frontend/gamma/tests/tests/Components/GridLayout/index.html
+++ b/frontend/gamma/tests/tests/Components/GridLayout/index.html
@@ -1,120 +1,117 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Card Dialog EDITING - test</title> 28 <title>Card Dialog EDITING - test</title>
32 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 29 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
33 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 30 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
34 31
35 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 32 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
43 40
44 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
49 46
50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
53 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
54 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
55 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
56 53
57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> 54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script>
58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
59 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
60 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> 57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
62 59
63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 60 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
64 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
65 62
66 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script> 63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script>
67 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_defaults.js'></script> 64 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_defaults.js'></script>
68 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 65 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
69 66
70 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script> 67 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script>
71 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 68 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
72 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script> 69 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script>
73 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> 70 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script>
74 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> 71 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script>
75 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script> 72 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script>
76 <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Field.js'></script --> 73 <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Field.js'></script -->
77 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.js'></script> 74 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.js'></script>
78 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script> 75 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script>
79 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script> 76 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script>
80 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Preferences.js'></script> 77 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Preferences.js'></script>
81 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js'></script> 78 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.OneTimePasswords.js'></script>
82 79
83 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/BaseComponent.js'></script> 80 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/BaseComponent.js'></script>
84 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ComponentSlot.js'></script> 81 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ComponentSlot.js'></script>
85 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js'></script> 82 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js'></script>
86 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ProgressBar.js'></script> 83 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ProgressBar.js'></script>
87 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js'></script> 84 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js'></script>
88 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js'></script> 85 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js'></script>
89 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Tooltip.js'></script> 86 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Tooltip.js'></script>
90 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js'></script> 87 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js'></script>
91 88
92 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogComponent.js'></script> 89 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogComponent.js'></script>
93 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js'></script> 90 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js'></script>
94 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogRecordDirectLoginComponent.js'></script> 91 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogRecordDirectLoginComponent.js'></script>
95 92
96 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/ProgressBarController.js'></script> 93 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/ProgressBarController.js'></script>
97 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js'></script> 94 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js'></script>
98 95
99 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/ColumnManager.js'></script> 96 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/ColumnManager.js'></script>
100 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/FaviconColumnManager.js'></script> 97 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/FaviconColumnManager.js'></script>
101 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/LinkColumnManager.js'></script> 98 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/LinkColumnManager.js'></script>
102 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DirectLoginsColumnManager.js'></script> 99 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DirectLoginsColumnManager.js'></script>
103 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DateColumnManager.js'></script> 100 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DateColumnManager.js'></script>
104 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DeleteObjectColumnManager.js'></script> 101 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/DeleteObjectColumnManager.js'></script>
105 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/GridComponent.js'></script> 102 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/GridComponent.js'></script>
106 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/BookmarkletComponent.js'></script> 103 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/BookmarkletComponent.js'></script>
107 104
108 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/FilterController.js'></script> 105 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/FilterController.js'></script>
109 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/GridController.js'></script> 106 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/GridController.js'></script>
110 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/CardsController.js'></script> 107 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/CardsController.js'></script>
111 108
112 <script type='text/javascript' src='./User.data.js'></script> 109 <script type='text/javascript' src='./User.data.js'></script>
113 <script type='text/javascript' src='./TestPageComponent.js'></script> 110 <script type='text/javascript' src='./TestPageComponent.js'></script>
114 <script type='text/javascript' src='./GridLayout_test.js'></script> 111 <script type='text/javascript' src='./GridLayout_test.js'></script>
115<script> 112<script>
116 Clipperz_IEisBroken = false; 113 Clipperz_IEisBroken = false;
117</script> 114</script>
118 115
119<!--[if IE]><script> 116<!--[if IE]><script>
120Clipperz_IEisBroken = true; 117Clipperz_IEisBroken = true;
diff --git a/frontend/gamma/tests/tests/Components/GridLayout/test.css b/frontend/gamma/tests/tests/Components/GridLayout/test.css
index 21abd07..e5983f4 100644
--- a/frontend/gamma/tests/tests/Components/GridLayout/test.css
+++ b/frontend/gamma/tests/tests/Components/GridLayout/test.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
29ul.testTabs { 26ul.testTabs {
30 list-style-type: none; 27 list-style-type: none;
31 padding: 0px; 28 padding: 0px;
32 padding-bottom: 30px; 29 padding-bottom: 30px;
33} 30}
34 31
35ul.testTabs li { 32ul.testTabs li {
36 display: inline-table; 33 display: inline-table;
37 padding: 0px 10px; 34 padding: 0px 10px;
38} 35}
39 36
40ul.testPanels { 37ul.testPanels {
41 list-style-type: none; 38 list-style-type: none;
42 padding: 0px; 39 padding: 0px;
43} \ No newline at end of file 40} \ No newline at end of file
diff --git a/frontend/gamma/tests/tests/Components/ProgressBar/index.html b/frontend/gamma/tests/tests/Components/ProgressBar/index.html
index d72aae0..295c2c6 100644
--- a/frontend/gamma/tests/tests/Components/ProgressBar/index.html
+++ b/frontend/gamma/tests/tests/Components/ProgressBar/index.html
@@ -1,120 +1,117 @@
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<html> 26<html>
30<head> 27<head>
31 <title>ProgressBar - test</title> 28 <title>ProgressBar - test</title>
32 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 29 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
33 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 30 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
34 31
35 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 32 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
43 40
44 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
49 46
50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
53 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
54 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
55 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
56 53
57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> 54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script>
58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
59 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
60 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> 57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
62 59
63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 60 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
64 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
65 62
66 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script> 63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script>
67 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 64 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
68 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script> 65 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script>
69 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 66 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
70 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script> 67 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script>
71 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> 68 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script>
72 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> 69 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script>
73 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script> 70 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script>
74 <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Field.js'></script --> 71 <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Field.js'></script -->
75 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.js'></script> 72 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.js'></script>
76 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script> 73 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script>
77 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script> 74 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script>
78 75
79 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/BaseComponent.js'></script> 76 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/BaseComponent.js'></script>
80 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ComponentSlot.js'></script> 77 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ComponentSlot.js'></script>
81 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js'></script> 78 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js'></script>
82 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ProgressBar.js'></script> 79 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ProgressBar.js'></script>
83 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js'></script> 80 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js'></script>
84 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js'></script> 81 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js'></script>
85 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Tooltip.js'></script> 82 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Tooltip.js'></script>
86 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js'></script> 83 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js'></script>
87 84
88 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/ProgressBarController.js'></script> 85 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/ProgressBarController.js'></script>
89 86
90 <script type='text/javascript' src='./progressBar_test.js'></script> 87 <script type='text/javascript' src='./progressBar_test.js'></script>
91<script> 88<script>
92 Clipperz_IEisBroken = false; 89 Clipperz_IEisBroken = false;
93</script> 90</script>
94 91
95<!--[if IE]><script> 92<!--[if IE]><script>
96Clipperz_IEisBroken = true; 93Clipperz_IEisBroken = true;
97</script><![endif]--> 94</script><![endif]-->
98 95
99 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/clipperz.css" /> 96 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/clipperz.css" />
100 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/compact.css" /> 97 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/compact.css" />
101 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/ytheme-clipperz.css" /> 98 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/ytheme-clipperz.css" />
102 99
103</head> 100</head>
104<body> 101<body>
105 102
106<table border="0" cellpadding="50"><tr><td> 103<table border="0" cellpadding="50"><tr><td>
107 <div id="progressBar_5"></div><hr> 104 <div id="progressBar_5"></div><hr>
108 <div id="progressBar_10"></div><hr> 105 <div id="progressBar_10"></div><hr>
109 <div id="progressBar_15"></div><hr> 106 <div id="progressBar_15"></div><hr>
110 <div id="progressBar_20"></div><hr> 107 <div id="progressBar_20"></div><hr>
111 <div id="progressBar_50"></div><hr> 108 <div id="progressBar_50"></div><hr>
112</td><td> 109</td><td>
113 <div id="progressBar_80"></div><hr> 110 <div id="progressBar_80"></div><hr>
114 <div id="progressBar_85"></div><hr> 111 <div id="progressBar_85"></div><hr>
115 <div id="progressBar_90"></div><hr> 112 <div id="progressBar_90"></div><hr>
116 <div id="progressBar_95"></div><hr> 113 <div id="progressBar_95"></div><hr>
117 <div id="progressBar_100"></div><hr> 114 <div id="progressBar_100"></div><hr>
118</td></tr>></table> 115</td></tr>></table>
119</body> 116</body>
120</html> 117</html>
diff --git a/frontend/gamma/tests/tests/Components/ProgressBar/progressBar_test.js b/frontend/gamma/tests/tests/Components/ProgressBar/progressBar_test.js
index 822081a..8e2ce51 100644
--- a/frontend/gamma/tests/tests/Components/ProgressBar/progressBar_test.js
+++ b/frontend/gamma/tests/tests/Components/ProgressBar/progressBar_test.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.Tests.ProgressBar'); 26Clipperz.Base.module('Clipperz.Tests.ProgressBar');
30 27
31Clipperz.PM.Strings.Languages.initSetup(); 28Clipperz.PM.Strings.Languages.initSetup();
32 29
33Clipperz.Tests.ProgressBar.Tester = function(args) { 30Clipperz.Tests.ProgressBar.Tester = function(args) {
34 args = args || {}; 31 args = args || {};
35 32
36 Clipperz.Tests.ProgressBar.Tester.superclass.constructor.call(this, args); 33 Clipperz.Tests.ProgressBar.Tester.superclass.constructor.call(this, args);
37 34
38 return this; 35 return this;
39}; 36};
40 37
41Clipperz.Base.extend(Clipperz.Tests.ProgressBar.Tester, Object, { 38Clipperz.Base.extend(Clipperz.Tests.ProgressBar.Tester, Object, {
42 39
43 'toString': function() { 40 'toString': function() {
44 return "Clipperz.Tests.ProgressBar.Tester"; 41 return "Clipperz.Tests.ProgressBar.Tester";
45 }, 42 },
46 43
47 //------------------------------------------------------------------------- 44 //-------------------------------------------------------------------------
48 45
49 'run': function () { 46 'run': function () {
50 var progressBar; 47 var progressBar;
51/* 48/*
52<div id="progressBar_5"></div><hr> 49<div id="progressBar_5"></div><hr>
53<div id="progressBar_10"></div><hr> 50<div id="progressBar_10"></div><hr>
54<div id="progressBar_15"></div><hr> 51<div id="progressBar_15"></div><hr>
55<div id="progressBar_20"></div><hr> 52<div id="progressBar_20"></div><hr>
56<div id="progressBar_50"></div><hr> 53<div id="progressBar_50"></div><hr>
57<div id="progressBar_80"></div><hr> 54<div id="progressBar_80"></div><hr>
58<div id="progressBar_85"></div><hr> 55<div id="progressBar_85"></div><hr>
59<div id="progressBar_90"></div><hr> 56<div id="progressBar_90"></div><hr>
60<div id="progressBar_95"></div><hr> 57<div id="progressBar_95"></div><hr>
61<div id="progressBar_100"></div><hr> 58<div id="progressBar_100"></div><hr>
62*/ 59*/
63 60
64 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_5')}); 61 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_5')});
65 progressBar.updateProgressHandler('5'); 62 progressBar.updateProgressHandler('5');
66 63
67 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_10')}); 64 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_10')});
68 progressBar.updateProgressHandler('10'); 65 progressBar.updateProgressHandler('10');
69 66
70 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_15')}); 67 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_15')});
71 progressBar.updateProgressHandler('15'); 68 progressBar.updateProgressHandler('15');
72 69
73 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_20')}); 70 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_20')});
74 progressBar.updateProgressHandler('20'); 71 progressBar.updateProgressHandler('20');
75 72
76 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_50')}); 73 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_50')});
77 progressBar.updateProgressHandler('50'); 74 progressBar.updateProgressHandler('50');
78 75
79 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_80')}); 76 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_80')});
80 progressBar.updateProgressHandler('80'); 77 progressBar.updateProgressHandler('80');
81 78
82 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_85')}); 79 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_85')});
83 progressBar.updateProgressHandler('85'); 80 progressBar.updateProgressHandler('85');
84 81
85 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_90')}); 82 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_90')});
86 progressBar.updateProgressHandler('90'); 83 progressBar.updateProgressHandler('90');
87 84
88 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_95')}); 85 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_95')});
89 progressBar.updateProgressHandler('95'); 86 progressBar.updateProgressHandler('95');
90 87
91 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_100')}); 88 progressBar = new Clipperz.PM.UI.Common.Components.ProgressBar({'element':MochiKit.DOM.getElement('progressBar_100')});
92 progressBar.updateProgressHandler('100'); 89 progressBar.updateProgressHandler('100');
93 }, 90 },
94 91
95 //========================================================================= 92 //=========================================================================
96 __syntaxFix__: "syntax fix" 93 __syntaxFix__: "syntax fix"
97}); 94});
98 95
99 96
100 97
101 98
102 99
103 100
104 101
105 102
106 103
107 104
108 105
109 106
110 107
111 108
112 109
113 110
114 111
115 112
116 113
117 114
118init = function () { 115init = function () {
119 vartester; 116 vartester;
120 117
diff --git a/frontend/gamma/tests/tests/Components/SimpleMessagePanel/index.html b/frontend/gamma/tests/tests/Components/SimpleMessagePanel/index.html
index ac1585f..f09d9f6 100644
--- a/frontend/gamma/tests/tests/Components/SimpleMessagePanel/index.html
+++ b/frontend/gamma/tests/tests/Components/SimpleMessagePanel/index.html
@@ -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<html> 26<html>
30<head> 27<head>
31 <title>Simple Message Panel - test</title> 28 <title>Simple Message Panel - test</title>
32 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 29 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
33 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 30 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
34 31
35 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 32 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
43 40
44 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
49 46
50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
53 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
54 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
55 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
56 53
57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> 54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script>
58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
59 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
60 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> 57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
62 59
63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 60 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
64 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
65 62
66 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script> 63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script>
67 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 64 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
68 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script> 65 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script>
69 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 66 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
70 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script> 67 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script>
71 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> 68 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script>
72 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> 69 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script>
73 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script> 70 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script>
74 <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Field.js'></script --> 71 <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Field.js'></script -->
75 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.js'></script> 72 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.js'></script>
76 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script> 73 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script>
77 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script> 74 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script>
78 75
79 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/BaseComponent.js'></script> 76 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/BaseComponent.js'></script>
80 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Button.js'></script> 77 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Button.js'></script>
81 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ComponentSlot.js'></script> 78 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ComponentSlot.js'></script>
82 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js'></script> 79 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js'></script>
83 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ProgressBar.js'></script> 80 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ProgressBar.js'></script>
84 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js'></script> 81 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js'></script>
85 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js'></script> 82 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js'></script>
86 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Tooltip.js'></script> 83 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Tooltip.js'></script>
87 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js'></script> 84 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js'></script>
88 85
89 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogComponent.js'></script> 86 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogComponent.js'></script>
90 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js'></script> 87 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js'></script>
91 88
92 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js'></script> 89 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js'></script>
93 90
94 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/CardDialogController.js'></script> 91 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/CardDialogController.js'></script>
95 92
96 <script type='text/javascript' src='./simpleMessagePanel_test.js'></script> 93 <script type='text/javascript' src='./simpleMessagePanel_test.js'></script>
97<script> 94<script>
98 Clipperz_IEisBroken = false; 95 Clipperz_IEisBroken = false;
99</script> 96</script>
100 97
101<!--[if IE]><script> 98<!--[if IE]><script>
102Clipperz_IEisBroken = true; 99Clipperz_IEisBroken = true;
103</script><![endif]--> 100</script><![endif]-->
104 101
105 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/clipperz.css" /> 102 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/clipperz.css" />
106 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/compact.css" /> 103 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/compact.css" />
107 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/ytheme-clipperz.css" /> 104 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/ytheme-clipperz.css" />
108 105
109</head> 106</head>
110<body> 107<body>
111 108
112<div id="tableWrapper"></div> 109<div id="tableWrapper"></div>
113 110
114</body> 111</body>
115</html> 112</html>
diff --git a/frontend/gamma/tests/tests/Components/SimpleMessagePanel/simpleMessagePanel_test.js b/frontend/gamma/tests/tests/Components/SimpleMessagePanel/simpleMessagePanel_test.js
index 85128d6..8513909 100644
--- a/frontend/gamma/tests/tests/Components/SimpleMessagePanel/simpleMessagePanel_test.js
+++ b/frontend/gamma/tests/tests/Components/SimpleMessagePanel/simpleMessagePanel_test.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
29Clipperz.Base.module('Clipperz.Tests.SimpleMessagePanel'); 26Clipperz.Base.module('Clipperz.Tests.SimpleMessagePanel');
30 27
31Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 28Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
32Clipperz.PM.Strings.Languages.initSetup(); 29Clipperz.PM.Strings.Languages.initSetup();
33 30
34Clipperz.Tests.SimpleMessagePanel.Tester = function(args) { 31Clipperz.Tests.SimpleMessagePanel.Tester = function(args) {
35 args = args || {}; 32 args = args || {};
36 33
37 Clipperz.Tests.SimpleMessagePanel.Tester.superclass.constructor.call(this, args); 34 Clipperz.Tests.SimpleMessagePanel.Tester.superclass.constructor.call(this, args);
38 //this._user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}}); 35 //this._user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:function () { return 'test';}});
39 36
40 return this; 37 return this;
41}; 38};
42 39
43Clipperz.Base.extend(Clipperz.Tests.SimpleMessagePanel.Tester, Object, { 40Clipperz.Base.extend(Clipperz.Tests.SimpleMessagePanel.Tester, Object, {
44 41
45 'toString': function() { 42 'toString': function() {
46 return "Clipperz.Tests.SimpleMessagePanel.Tester"; 43 return "Clipperz.Tests.SimpleMessagePanel.Tester";
47 }, 44 },
48 45
49 //------------------------------------------------------------------------- 46 //-------------------------------------------------------------------------
50/* 47/*
51 'user': function () { 48 'user': function () {
52 return this._user; 49 return this._user;
53 }, 50 },
54*/ 51*/
55 //------------------------------------------------------------------------- 52 //-------------------------------------------------------------------------
56 53
57 'run': function () { 54 'run': function () {
58 var deferredResult; 55 var deferredResult;
59 var confirmationDialog; 56 var confirmationDialog;
60 57
61 confirmationDialog = new Clipperz.PM.UI.Common.Components.SimpleMessagePanel({ 58 confirmationDialog = new Clipperz.PM.UI.Common.Components.SimpleMessagePanel({
62 title:"Alert", 59 title:"Alert",
63 text:"Should lost pending changes? But I must explain to you how all this mistaken idea of denouncing pleasure and praising pain was born and I will give you a complete account of the system, and expound the actual teachings of the great explorer of the truth, the master-builder of human happiness", 60 text:"Should lost pending changes? But I must explain to you how all this mistaken idea of denouncing pleasure and praising pain was born and I will give you a complete account of the system, and expound the actual teachings of the great explorer of the truth, the master-builder of human happiness",
64 type:'ALERT', 61 type:'ALERT',
65 buttons: [ 62 buttons: [
66 {text:"Cancel",result:'CANCEL', isDefault:true}, 63 {text:"Cancel",result:'CANCEL', isDefault:true},
67 {text:"Ok", result:'OK'} 64 {text:"Ok", result:'OK'}
68 ] 65 ]
69 }); 66 });
70 67
71 deferredResult = new Clipperz.Async.Deferred("CardDialogComponent.askConfirmationForLoosingPendingChanges", {trace:false}); 68 deferredResult = new Clipperz.Async.Deferred("CardDialogComponent.askConfirmationForLoosingPendingChanges", {trace:false});
72 deferredResult.addMethod(confirmationDialog, 'deferredShow', { 69 deferredResult.addMethod(confirmationDialog, 'deferredShow', {
73 'openFromElement': null, 70 'openFromElement': null,
74 'onOkCloseToElement': null, //this.getElement('cancelButton'), 71 'onOkCloseToElement': null, //this.getElement('cancelButton'),
75 'onCancelCloseToElement':null 72 'onCancelCloseToElement':null
76 }); 73 });
77 deferredResult.callback(); 74 deferredResult.callback();
78 75
79 return deferredResult; 76 return deferredResult;
80 }, 77 },
81 78
82 //========================================================================= 79 //=========================================================================
83 __syntaxFix__: "syntax fix" 80 __syntaxFix__: "syntax fix"
84}); 81});
85 82
86 83
87 84
88init = function () { 85init = function () {
89 vartester; 86 vartester;
90 87
91 tester = new Clipperz.Tests.SimpleMessagePanel.Tester(); 88 tester = new Clipperz.Tests.SimpleMessagePanel.Tester();
92 tester.run(); 89 tester.run();
93}; 90};
94 91
95MochiKit.DOM.addLoadEvent(init); 92MochiKit.DOM.addLoadEvent(init);
diff --git a/frontend/gamma/tests/tests/Components/Tooltips/index.html b/frontend/gamma/tests/tests/Components/Tooltips/index.html
index 471eca9..02c6c34 100644
--- a/frontend/gamma/tests/tests/Components/Tooltips/index.html
+++ b/frontend/gamma/tests/tests/Components/Tooltips/index.html
@@ -1,120 +1,117 @@
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<html> 26<html>
30<head> 27<head>
31 <title>TOOLTIPS - test</title> 28 <title>TOOLTIPS - test</title>
32 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 29 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
33 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 30 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
34 31
35 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 32 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
43 40
44 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
49 46
50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
53 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
54 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
55 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
56 53
57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> 54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script>
58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
59 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
60 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> 57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
62 59
63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 60 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
64 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
65 62
66 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script> 63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script>
67 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 64 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
68 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script> 65 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script>
69 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 66 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
70 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script> 67 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script>
71 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> 68 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script>
72 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> 69 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script>
73 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script> 70 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script>
74 <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Field.js'></script --> 71 <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Field.js'></script -->
75 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.js'></script> 72 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.js'></script>
76 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script> 73 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script>
77 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script> 74 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script>
78 75
79 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/BaseComponent.js'></script> 76 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/BaseComponent.js'></script>
80 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ComponentSlot.js'></script> 77 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ComponentSlot.js'></script>
81 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js'></script> 78 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js'></script>
82 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ProgressBar.js'></script> 79 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ProgressBar.js'></script>
83 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js'></script> 80 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js'></script>
84 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js'></script> 81 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js'></script>
85 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Tooltip.js'></script> 82 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Tooltip.js'></script>
86 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js'></script> 83 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js'></script>
87 84
88 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogComponent.js'></script> 85 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogComponent.js'></script>
89 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js'></script> 86 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js'></script>
90 87
91 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/ProgressBarController.js'></script> 88 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/ProgressBarController.js'></script>
92 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js'></script> 89 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js'></script>
93 90
94 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/CardDialogController.js'></script> 91 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/CardDialogController.js'></script>
95 92
96 <script type='text/javascript' src='./tooltips_test.js'></script> 93 <script type='text/javascript' src='./tooltips_test.js'></script>
97<script> 94<script>
98 Clipperz_IEisBroken = false; 95 Clipperz_IEisBroken = false;
99</script> 96</script>
100 97
101<!--[if IE]><script> 98<!--[if IE]><script>
102Clipperz_IEisBroken = true; 99Clipperz_IEisBroken = true;
103</script><![endif]--> 100</script><![endif]-->
104 101
105 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/clipperz.css" /> 102 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/clipperz.css" />
106 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/compact.css" /> 103 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/compact.css" />
107 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/ytheme-clipperz.css" /> 104 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/ytheme-clipperz.css" />
108 105
109<style> 106<style>
110 107
111div.leftColumn { 108div.leftColumn {
112 float:left; 109 float:left;
113} 110}
114 111
115div.rightColumn { 112div.rightColumn {
116 float:left; 113 float:left;
117} 114}
118 115
119div.boxWrapper { 116div.boxWrapper {
120 padding: 70px 200px; 117 padding: 70px 200px;
diff --git a/frontend/gamma/tests/tests/Components/Tooltips/tooltips_test.js b/frontend/gamma/tests/tests/Components/Tooltips/tooltips_test.js
index 37c0e71..9ed1c05 100644
--- a/frontend/gamma/tests/tests/Components/Tooltips/tooltips_test.js
+++ b/frontend/gamma/tests/tests/Components/Tooltips/tooltips_test.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
29Clipperz.Base.module('Clipperz.Tests.Tooltips'); 26Clipperz.Base.module('Clipperz.Tests.Tooltips');
30 27
31Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 28Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
32Clipperz.PM.Strings.Languages.initSetup(); 29Clipperz.PM.Strings.Languages.initSetup();
33 30
34Clipperz.Tests.Tooltips.Tester = function(args) { 31Clipperz.Tests.Tooltips.Tester = function(args) {
35 args = args || {}; 32 args = args || {};
36 33
37 Clipperz.Tests.Tooltips.Tester.superclass.constructor.call(this, args); 34 Clipperz.Tests.Tooltips.Tester.superclass.constructor.call(this, args);
38 35
39 return this; 36 return this;
40}; 37};
41 38
42Clipperz.Base.extend(Clipperz.Tests.Tooltips.Tester, Object, { 39Clipperz.Base.extend(Clipperz.Tests.Tooltips.Tester, Object, {
43 40
44 'toString': function() { 41 'toString': function() {
45 return "Clipperz.Tests.Tooltips.Tester"; 42 return "Clipperz.Tests.Tooltips.Tester";
46 }, 43 },
47 44
48 //------------------------------------------------------------------------- 45 //-------------------------------------------------------------------------
49 46
50 'run': function () { 47 'run': function () {
51 vartooltip; 48 vartooltip;
52 49
53//Clipperz.log("================== ABOVE =================="); 50//Clipperz.log("================== ABOVE ==================");
54 tooltip = new Clipperz.PM.UI.Common.Components.Tooltip({ 51 tooltip = new Clipperz.PM.UI.Common.Components.Tooltip({
55 'element':MochiKit.DOM.getElement('ABOVE'), 52 'element':MochiKit.DOM.getElement('ABOVE'),
56 'text': "Tooltip displayed above the element", 53 'text': "Tooltip displayed above the element",
57 'position':'ABOVE' 54 'position':'ABOVE'
58 }); 55 });
59 tooltip.show(); 56 tooltip.show();
60 57
61//Clipperz.log("================== BELOW =================="); 58//Clipperz.log("================== BELOW ==================");
62 tooltip = new Clipperz.PM.UI.Common.Components.Tooltip({ 59 tooltip = new Clipperz.PM.UI.Common.Components.Tooltip({
63 'element':MochiKit.DOM.getElement('BELOW'), 60 'element':MochiKit.DOM.getElement('BELOW'),
64 'text': "Tooltip displayed below the element", 61 'text': "Tooltip displayed below the element",
65 'position':'BELOW' 62 'position':'BELOW'
66 }); 63 });
67 tooltip.show(); 64 tooltip.show();
68 65
69//Clipperz.log("================== LEFT =================="); 66//Clipperz.log("================== LEFT ==================");
70 tooltip = new Clipperz.PM.UI.Common.Components.Tooltip({ 67 tooltip = new Clipperz.PM.UI.Common.Components.Tooltip({
71 'element':MochiKit.DOM.getElement('LEFT'), 68 'element':MochiKit.DOM.getElement('LEFT'),
72 'text': "Tooltip displayed to the left of the element", 69 'text': "Tooltip displayed to the left of the element",
73 'position':'LEFT' 70 'position':'LEFT'
74 }); 71 });
75 tooltip.show(); 72 tooltip.show();
76 73
77//Clipperz.log("================== RIGHT =================="); 74//Clipperz.log("================== RIGHT ==================");
78 tooltip = new Clipperz.PM.UI.Common.Components.Tooltip({ 75 tooltip = new Clipperz.PM.UI.Common.Components.Tooltip({
79 'element':MochiKit.DOM.getElement('RIGHT'), 76 'element':MochiKit.DOM.getElement('RIGHT'),
80 'text': "Tooltip displayed to the right the element", 77 'text': "Tooltip displayed to the right the element",
81 'position':'RIGHT' 78 'position':'RIGHT'
82 }); 79 });
83 tooltip.show(); 80 tooltip.show();
84 81
85 }, 82 },
86 83
87 //========================================================================= 84 //=========================================================================
88 __syntaxFix__: "syntax fix" 85 __syntaxFix__: "syntax fix"
89}); 86});
90 87
91 88
92 89
93 90
94 91
95 92
96 93
97 94
98 95
99 96
100 97
101 98
102 99
103 100
104 101
105 102
106 103
107 104
108 105
109 106
110init = function () { 107init = function () {
111 vartester; 108 vartester;
112 109
113 tester = new Clipperz.Tests.Tooltips.Tester(); 110 tester = new Clipperz.Tests.Tooltips.Tester();
114 tester.run(); 111 tester.run();
115}; 112};
116 113
117MochiKit.DOM.addLoadEvent(init); 114MochiKit.DOM.addLoadEvent(init);
diff --git a/frontend/gamma/tests/tests/Components/UnlockPassword/User.data.js b/frontend/gamma/tests/tests/Components/UnlockPassword/User.data.js
index dac8b45..49abe46 100644
--- a/frontend/gamma/tests/tests/Components/UnlockPassword/User.data.js
+++ b/frontend/gamma/tests/tests/Components/UnlockPassword/User.data.js
@@ -1,120 +1,117 @@
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
29testData = { 26testData = {
30 27
31 //------------------------------------------------------------------------- 28 //-------------------------------------------------------------------------
32 29
33 'simpleLogin_001': { 30 'simpleLogin_001': {
34 'users': [ 31 'users': [
35 { 32 {
36 'username': "joe", 33 'username': "joe",
37 'passphrase': "eoj", 34 'passphrase': "eoj",
38 'version': "0.2", 35 'version': "0.2",
39 'connectionVersion':"0.2", 36 'connectionVersion':"0.2",
40 'records':{ 37 'records':{
41 'record 1': { 38 'record 1': {
42 'notes':"Some notes here", 39 'notes':"Some notes here",
43 'fields':[ 40 'fields':[
44 { 'name': "username", 'value': "joe", 'type': "text" }, 41 { 'name': "username", 'value': "joe", 'type': "text" },
45 { 'name': "password", 'value': "1234", 'type': "password"} 42 { 'name': "password", 'value': "1234", 'type': "password"}
46 ], 43 ],
47 'directLogins':{ 44 'directLogins':{
48 "record 1 direct login": { 45 "record 1 direct login": {
49 'configuration':"", 46 'configuration':"",
50 'bindings':[ 47 'bindings':[
51 ], 48 ],
52 'favicon':"http://www.example.com/favicon.ico" 49 'favicon':"http://www.example.com/favicon.ico"
53 } 50 }
54 } 51 }
55 } 52 }
56 }, 53 },
57 'otp':[ 54 'otp':[
58 "12345678 90abcdef 12345678 90abcdef", 55 "12345678 90abcdef 12345678 90abcdef",
59 "fedcba09 87654321 fedcba09 87654321" 56 "fedcba09 87654321 fedcba09 87654321"
60 ] 57 ]
61 } 58 }
62 ] 59 ]
63 }, 60 },
64 61
65 //------------------------------------------------------------------------- 62 //-------------------------------------------------------------------------
66 63
67 'joe_clipperz_offline_copy_data': { 64 'joe_clipperz_offline_copy_data': {
68 users:{ 65 users:{
69 'catchAllUser': { 66 'catchAllUser': {
70 __masterkey_test_value__: 'masterkey', 67 __masterkey_test_value__: 'masterkey',
71 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00', 68 s: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00',
72 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00' 69 v: '112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00'
73 }, 70 },
74 'f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674': { 71 'f527cdd90d0d47f8524b4e165398ad1455eba515d04abd101d1e93b3c6ae0674': {
75 s: '186f0c40bf73f2af236eaa6c429df225efa933050c9aae65240e93b7b362e3ee', 72 s: '186f0c40bf73f2af236eaa6c429df225efa933050c9aae65240e93b7b362e3ee',
76 v: 'ac61a6e325ecf329926a86084f591d8852d0ad3e4a6080f2adc901b82395ecaf', 73 v: 'ac61a6e325ecf329926a86084f591d8852d0ad3e4a6080f2adc901b82395ecaf',
77 version: '0.2', 74 version: '0.2',
78 maxNumberOfRecords: '100', 75 maxNumberOfRecords: '100',
79 userDetails: '{"records":{"index":{"eeda70e0392261967bda71c3764da78989c45bbd2bb7be6b941b90f81d9b81b5":"0","13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551":"1","062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80":"2","ca01bcb7691f70818feed46c9a2a91883ac543997a395535aedbb49de166690c":"3","507f38b06d587d8889698ae1ebbba7ef8f0539b82550dd25779fd9ee88fc0c7a":"4","d5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d":"5","de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4":"6","d620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045":"7","f215d89bf4583c12f5ed4f4330f488dad3fffa448f4dc784f15ef135dda2c732":"8","36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113":"9","fe21497ef7435d31f9746c132e4b5ecf5aac5f13b5961ddb55d2bdc3409f28f6":"10","6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18":"11","9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291":"12","6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a":"13","6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728":"14","8b18e8593b5bc2f7ea39a5fab222047034ef2f380fee05be0fa6e1c0972fea39":"15","084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d":"16","7bb69b6366a8012f181c01e368ba18d4f7a82bcabb4959189736ad124c4bbfbb":"17","5cdac63b317f3942da38f3a3de3b7f0e5d6678200951c6216230295550f63fb4":"18","c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065":"19"},"data":"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"},"directLogins":{"index":{"61e87fdc4f1d9112e3b30c1f6812d095dcdb24f014c83319091eb6c9899ec348":"0","989593d4c48929f0c8f1581aa96969c622807e99619ed4732026e967530a68ad":"1","9f7979368fa29f66c44bd97ecaf6c545abc800b1c7bb21b7655a68e1514c3906":"2","dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496":"3","aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584":"4","1f9bfd677b531a03168d3f8bd8afabb5357244a7bc355dff50bd6c0a072114a6":"5","a48e38845713462ecc9f827149eeaae87da882031f98ef8ebbf9ee9537b63468":"6","6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f":"7","2df54059e78f5771f23bd285cce19595b38331b73d67020424d9a1b2257db09c":"8","065cd0c270e5e8ce50e4ea8e3828dccdae18c01ab030813d756a87d03fe68784":"9","ddbc8d01300a4f10631cbde09e1246332eade3a877a2205209f9eb9e5bc9da0b":"10","9b7a30e667afc9f76ba77600658b2c13bff52432d444261d39bf3d069a160afe":"11","9fd2929cde3d32d9cbc5f1d787f2f64729a5e12a14410556b31c0c099762c46a":"12","f695fc36ac56bead80c0d20a88e01e382819c18dc268f1679551b7c83db7cb14":"13","f22dc41ffabef4b3bc8f7af804fec975bd50718098322a673cbe4aaff9464ae1":"14","03251dc1cbc5398789e4c4b45c52cfac3fcd8c1a4f19a81fa68fc6feae31d55c":"15","a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e":"16","cb9ae0bba1957075ccdbfd3b3481704d62087687a2ac7c411a4f07d444bde0f7":"17","7e1d069b7fa57c03bd7bf48807520feb953157834503aaff8c9d493f37dea69d":"18","24404059cabc63b2dbff0f42ba57183108b8189ef53ab62fa25141a1caea824b":"19","33cf9758477460a8056deef0295a1ebe65b39b392c361ceb920a83edacfe5d78":"20","e9a16316f330e3d150f6ffd194f6fd8acd1426757b097de4b88ca0db875202e4":"21"},"data":"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"},"preferences":{"data":"EZMrwxNFFd1sMGycoYE7IrlGGrfLixLUnLZmWMkFysfISe2ay3ueO0PGCApuKqh9hA=="},"oneTimePasswords":{"data":"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"},"version":"0.1"}', 76 userDetails: '{"records":{"index":{"eeda70e0392261967bda71c3764da78989c45bbd2bb7be6b941b90f81d9b81b5":"0","13a5e52976337ab210903cd04872588e1b21fb72bc183e91aa25c494b8138551":"1","062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80":"2","ca01bcb7691f70818feed46c9a2a91883ac543997a395535aedbb49de166690c":"3","507f38b06d587d8889698ae1ebbba7ef8f0539b82550dd25779fd9ee88fc0c7a":"4","d5f700b9c3367c39551ea49e00a9ab20dae09dd79d46047b983fc7c4bfaa050d":"5","de13c0d036234c44214062bc0a89e5f127470c464333493a485729f43cdc26e4":"6","d620764a656bfd4e1d3758500d5db72e460a0cf729d56ed1a7755b5725c50045":"7","f215d89bf4583c12f5ed4f4330f488dad3fffa448f4dc784f15ef135dda2c732":"8","36ec1a41118813ced3553534fa2607d781cba687768db305beed368a8e06e113":"9","fe21497ef7435d31f9746c132e4b5ecf5aac5f13b5961ddb55d2bdc3409f28f6":"10","6d45c2fec275b7482d41c76b20507100cfb6ab49922b876f9dd3040d361f4a18":"11","9dcd2a8a0fcb7e57d234dc4fea347f020a6a01793e40cf56a0d22379e590e291":"12","6c25be8e145efb26a1abd59590522f73fb2e3dbc139af2217074d9e2ba92c16a":"13","6026370f3db3860d2c46a08e389a7e906dc14f98c8444b21be9a7e9f405a2728":"14","8b18e8593b5bc2f7ea39a5fab222047034ef2f380fee05be0fa6e1c0972fea39":"15","084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d":"16","7bb69b6366a8012f181c01e368ba18d4f7a82bcabb4959189736ad124c4bbfbb":"17","5cdac63b317f3942da38f3a3de3b7f0e5d6678200951c6216230295550f63fb4":"18","c0ce9130ca365bb02418d4305ea1d29e49c3f0e96d44b9d3cb6b4b6843d25065":"19"},"data":"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"},"directLogins":{"index":{"61e87fdc4f1d9112e3b30c1f6812d095dcdb24f014c83319091eb6c9899ec348":"0","989593d4c48929f0c8f1581aa96969c622807e99619ed4732026e967530a68ad":"1","9f7979368fa29f66c44bd97ecaf6c545abc800b1c7bb21b7655a68e1514c3906":"2","dba0db679802f0e6aa6d0b7a6aaf42350aabc5f057409edd99a268a92ebb6496":"3","aa18149164302d5dbe7e2d3724565b9550e00887b49978559783b2e38c625584":"4","1f9bfd677b531a03168d3f8bd8afabb5357244a7bc355dff50bd6c0a072114a6":"5","a48e38845713462ecc9f827149eeaae87da882031f98ef8ebbf9ee9537b63468":"6","6f7bbc4e42ea462b5246e6f51c3f86056bec50601ce2de6067c8c1d26f21c07f":"7","2df54059e78f5771f23bd285cce19595b38331b73d67020424d9a1b2257db09c":"8","065cd0c270e5e8ce50e4ea8e3828dccdae18c01ab030813d756a87d03fe68784":"9","ddbc8d01300a4f10631cbde09e1246332eade3a877a2205209f9eb9e5bc9da0b":"10","9b7a30e667afc9f76ba77600658b2c13bff52432d444261d39bf3d069a160afe":"11","9fd2929cde3d32d9cbc5f1d787f2f64729a5e12a14410556b31c0c099762c46a":"12","f695fc36ac56bead80c0d20a88e01e382819c18dc268f1679551b7c83db7cb14":"13","f22dc41ffabef4b3bc8f7af804fec975bd50718098322a673cbe4aaff9464ae1":"14","03251dc1cbc5398789e4c4b45c52cfac3fcd8c1a4f19a81fa68fc6feae31d55c":"15","a7b32e72502804bf2946a2a8856139cbbb759c5777e6b3e673db1fdf7e3bd06e":"16","cb9ae0bba1957075ccdbfd3b3481704d62087687a2ac7c411a4f07d444bde0f7":"17","7e1d069b7fa57c03bd7bf48807520feb953157834503aaff8c9d493f37dea69d":"18","24404059cabc63b2dbff0f42ba57183108b8189ef53ab62fa25141a1caea824b":"19","33cf9758477460a8056deef0295a1ebe65b39b392c361ceb920a83edacfe5d78":"20","e9a16316f330e3d150f6ffd194f6fd8acd1426757b097de4b88ca0db875202e4":"21"},"data":"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"},"preferences":{"data":"EZMrwxNFFd1sMGycoYE7IrlGGrfLixLUnLZmWMkFysfISe2ay3ueO0PGCApuKqh9hA=="},"oneTimePasswords":{"data":"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"},"version":"0.1"}',
80 statistics: 'SfGy/4mpXQdDOv+Bcfie4Yt/', 77 statistics: 'SfGy/4mpXQdDOv+Bcfie4Yt/',
81 userDetailsVersion: '0.3', 78 userDetailsVersion: '0.3',
82 records: { 79 records: {
83 '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80': { 80 '062af892bcfba49ffcff05c56d99b7af2d508358e39c058c2e1fc83531436f80': {
84 data: '7sgxSQlqR+wh3g06M2+sWp7raQxjjQ9jLIz2OcEB7SckuQcXNrhMlDCbL6ncSljtzgqhioWrOB409kIG8lc7h6ekghOE/Mhi7rVwAiRfNGB7r3mYxpEXRe96O2RG7E+NcSp8ezl+5gJ9D0o1abXPeFQYGcr95hUioCfyY+xrxY8TJVwdb9nHkYvBdKV7rCl1dTxgsKWK3nlo1T7e5uyiz5YUAE6BrCtTFAqtprLI/xOpRti9C+llohS7D6s8hkCBPZfp3chKFDrgpsCBFLhXN8jrBKSjHi1PJdRQzpJsgrxyeBj0dZx3gTsYOXqrYgdIzFUo7K1Tqb30yNprBiDMr7j0YYXiSvEb7OuOIP+HTXGN+yt09bk9LggyY6Fh0e+tenjQQ3soySN/XznOBpEjXbzXoz6fR1MXVnE9GgaX99LVNqwWfq2rIBdSE/FfspRiWP3BY5jIrEkNeRclS05U1zw3K3wxOL+cB9r2IynSXnK8QcrDNNRZ0W3PhsSFfByUXuviLSEOPuJa1mYP29L9Lj/WyHL1Gyl8xLbt2H41S6+wvIleKMuc7teH6wPXbnYphvbwBowoI6HZTEFkz3dQKhhY6VF/81iCXsuaz6BjyrzFX6SkQ4S3lN1tv4opQMJFvnmHb6EkXqVWfeIXzJIJO+owL4vDOf4okpAD+HPjjlVXhq6fvyM5UBIK9+tzJW78X/zifrQOfWRIhwjVsfUdZWmZ/S35vnHWNuXkM8GBYrDysqxanDtah3U8XLAiIhFtBOzpzr6qGaNDOKKgG3K8QXT4bYHOq1rQVUwzQuKhlCyStrRMQrC5Ry251xmLy6dKfppRarVeGDtzB/30BbtFNdZmzMNG2g+Jj5tFCrEtCMvMiQEWZHMU3tGMFxDef/KKdv1fFTJC16jmaUiCHUZmNjB3EO9R6xPVcMlAVKf57n3efrpRk/GTmm9JhAFkuF/wsveH4JjPpDUdkHYFu5tHbb30sbga3ufBAXbQL4ck10S24akU/cKraFGLvuKGaR2U0i6ih911TBSf3pAfZ3RFbBhVIl+6rSknC5+IXoBR7MRstBPW/xC9pQVjN5Qyn0g3aUjUSI+q4jcTuvMl32NtTJbWRMGhfkrpVzypZTyPnIh6XJkyBghlUARXw23MlbjiZxmY4ScDmcWZRZJWIknHlqjDKFDKNnwrfnEI9qWyMDno+jA/DEQz0mnpdZYEsoz1/qAmAeDt89vx', 81 data: '7sgxSQlqR+wh3g06M2+sWp7raQxjjQ9jLIz2OcEB7SckuQcXNrhMlDCbL6ncSljtzgqhioWrOB409kIG8lc7h6ekghOE/Mhi7rVwAiRfNGB7r3mYxpEXRe96O2RG7E+NcSp8ezl+5gJ9D0o1abXPeFQYGcr95hUioCfyY+xrxY8TJVwdb9nHkYvBdKV7rCl1dTxgsKWK3nlo1T7e5uyiz5YUAE6BrCtTFAqtprLI/xOpRti9C+llohS7D6s8hkCBPZfp3chKFDrgpsCBFLhXN8jrBKSjHi1PJdRQzpJsgrxyeBj0dZx3gTsYOXqrYgdIzFUo7K1Tqb30yNprBiDMr7j0YYXiSvEb7OuOIP+HTXGN+yt09bk9LggyY6Fh0e+tenjQQ3soySN/XznOBpEjXbzXoz6fR1MXVnE9GgaX99LVNqwWfq2rIBdSE/FfspRiWP3BY5jIrEkNeRclS05U1zw3K3wxOL+cB9r2IynSXnK8QcrDNNRZ0W3PhsSFfByUXuviLSEOPuJa1mYP29L9Lj/WyHL1Gyl8xLbt2H41S6+wvIleKMuc7teH6wPXbnYphvbwBowoI6HZTEFkz3dQKhhY6VF/81iCXsuaz6BjyrzFX6SkQ4S3lN1tv4opQMJFvnmHb6EkXqVWfeIXzJIJO+owL4vDOf4okpAD+HPjjlVXhq6fvyM5UBIK9+tzJW78X/zifrQOfWRIhwjVsfUdZWmZ/S35vnHWNuXkM8GBYrDysqxanDtah3U8XLAiIhFtBOzpzr6qGaNDOKKgG3K8QXT4bYHOq1rQVUwzQuKhlCyStrRMQrC5Ry251xmLy6dKfppRarVeGDtzB/30BbtFNdZmzMNG2g+Jj5tFCrEtCMvMiQEWZHMU3tGMFxDef/KKdv1fFTJC16jmaUiCHUZmNjB3EO9R6xPVcMlAVKf57n3efrpRk/GTmm9JhAFkuF/wsveH4JjPpDUdkHYFu5tHbb30sbga3ufBAXbQL4ck10S24akU/cKraFGLvuKGaR2U0i6ih911TBSf3pAfZ3RFbBhVIl+6rSknC5+IXoBR7MRstBPW/xC9pQVjN5Qyn0g3aUjUSI+q4jcTuvMl32NtTJbWRMGhfkrpVzypZTyPnIh6XJkyBghlUARXw23MlbjiZxmY4ScDmcWZRZJWIknHlqjDKFDKNnwrfnEI9qWyMDno+jA/DEQz0mnpdZYEsoz1/qAmAeDt89vx',
85 version: '0.2', 82 version: '0.2',
86 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 83 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
87 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 84 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
88 accessDate: 'Mon Jan 19 16:10:04 CET 2009', 85 accessDate: 'Mon Jan 19 16:10:04 CET 2009',
89 currentVersion: '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3', 86 currentVersion: '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3',
90 versions: { 87 versions: {
91 '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3': { 88 '4a70ca20167875a936d4540f19980e972c20f329a65d85e9b0ce709f1fc7c7e3': {
92 header: '####', 89 header: '####',
93 data: 'GCNNIhDQjMJQZGVSf+95fPtU6eOnFWVhuGm86r8WZGVR2Gf2EjbG1OJ0ZIGpZ/AXgirCMpo5AFxJe0Bay8IYg+xmBqMFhwFxzAgJBYCIts+raSaNRipuY8dTEqDxAqD1cChcG8EhSoiFgQ0fG0I7nNEUDJi0pIt4/ygBcwvAhuAenEp9ZW+oQA0+YysPQRqkz3IieFaOoSEbe5/SqpUilV4q1gTVyzNXvrxzxx+rlvEyGFgFN+vgtUZ1NrwlPk4gVksTpylvv6CFaMGEWKhgMG6efo0rJckKosaJTu1pldJdnmMK4EKNMLOd+jZ6pEhEhYyadrA4+zYU5TlmZA6ASzTaps8piSwZodoi9qY0ch2StK4mAbzeEGe2HdfHuAU9Tyq3Ppk3+VfNdKgpQfYrQOiSlXbKzK636tzXTN/gyrfOTHjBrRl117ywibgSX63ayAYNfcLpKotC', 90 data: 'GCNNIhDQjMJQZGVSf+95fPtU6eOnFWVhuGm86r8WZGVR2Gf2EjbG1OJ0ZIGpZ/AXgirCMpo5AFxJe0Bay8IYg+xmBqMFhwFxzAgJBYCIts+raSaNRipuY8dTEqDxAqD1cChcG8EhSoiFgQ0fG0I7nNEUDJi0pIt4/ygBcwvAhuAenEp9ZW+oQA0+YysPQRqkz3IieFaOoSEbe5/SqpUilV4q1gTVyzNXvrxzxx+rlvEyGFgFN+vgtUZ1NrwlPk4gVksTpylvv6CFaMGEWKhgMG6efo0rJckKosaJTu1pldJdnmMK4EKNMLOd+jZ6pEhEhYyadrA4+zYU5TlmZA6ASzTaps8piSwZodoi9qY0ch2StK4mAbzeEGe2HdfHuAU9Tyq3Ppk3+VfNdKgpQfYrQOiSlXbKzK636tzXTN/gyrfOTHjBrRl117ywibgSX63ayAYNfcLpKotC',
94 version: '0.2', 91 version: '0.2',
95 creationDate: 'Wed Mar 14 15:46:44 CET 2007', 92 creationDate: 'Wed Mar 14 15:46:44 CET 2007',
96 updateDate: 'Wed Mar 14 15:46:44 CET 2007', 93 updateDate: 'Wed Mar 14 15:46:44 CET 2007',
97 accessDate: 'Mon Jan 19 16:10:04 CET 2009' 94 accessDate: 'Mon Jan 19 16:10:04 CET 2009'
98 } 95 }
99 } 96 }
100 }, 97 },
101 '084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d': { 98 '084e23120544603f0297368fd3891a3818e0fe13488e2f2c6079913c8d1bed8d': {
102 data: 'fGzBu1On7e/6rAoSB1a4fq/CkS8Be/T8UP5cQ93asBTWndSYu2lW4DQ4SXQXSindIi3OnNx/f6SNv/extb7OrMLREF92wXI045ipPwy+DIICb+cQNMJ82Sh4cXaIcAWcyrm+MYri3qq9LBKbpwkILcebZidJ86lmKYHJozUezmfbMcwNCljHs/gYkHVzVcuw9L52Ugc6wC7sjsshh+UH6i4/2Frlrophtx+b1vervNd8eoYiKnedHVXVfW7UJcQoF27eHFgzwYnGvRW0KNXFFhqmPb61TSkIvNdCCvBKDP4SXrWvGgzU89wipvWdUPpQ+fCT6Mp3hPRrbJxwMunmjujZOzBld/HkjnXoiNfBb5akA280WvdyzWYATrjV1ZFx8yQY8G0+lRt/MxjKDc38w4y+Rf5WeRbXboJMvFatwooHUggk6qSRmZVvgOmFmNuDRnRYIFzqK3JclhJeVasnqhR6RiGSowc1Ffr1HhcZCMnXpQABGBkZcHD/zw6YjHRyh9Plw7XAm0xb16HMDtiwt7WLJpxLH/HP99j/A2hvMGWiUiFCaYv7AzyEPTmYbN32D1IsAEE/GC3FG0HypGTBolP8wpAfTRdlvWpJz8oRRdwuLV3Pgpu+kXh5sQyeZI6tnuMPQFmRDcMN1oo3E5V5V585nVMnKTFcXhBzD4UnoV+DQNkG/+iSPybQzz/EZmucEqGEYyjI3kl4MAX8UMEUxE4JO0fF8MzyBI13nxknowAceEammx1dGVaJCoIOdhadaPVPyOzXM1Vp1erVm5k4TsxSx1pll+GOm6hVoNHIuQLDueaMEpRxMhfwc8cDyXURqRGPTgTc0bint5xVjo10fnpX1gcdc/AWL6y3tXM80NW+uFJ4GI7VzyzfcMRzTiRaGi19z8MIx8PbIVGh2sw4FhgGujNsPrpuESvUVT+17M0+v8oEoABNlcizTMFs/sA1uqlPumFASltzmViAzClOsDuCh069hFLjdk/Ex5jy4vPYlwOT8Uq9DJC9ZWuZgiI1DrhWN/8QGAEGxxbvnSZPNCQ9kpD5p+iabinLLWOAirVNgKwIRJRyAu/uR9xKd7J9Wxq8q/ii+y5lGilbo2g24wbDwrkXYVhqp/4J0g+p8Wv1NBjCTSCqV39WEizUCRHo3ee9HnQnBJQDOyTBRuz2odTJtJ5tLYjWXZRdFzFSJrEq+Z1z3oq7LnhZy3YWaFXPeKmBCemMthtNt0nL', 99 data: 'fGzBu1On7e/6rAoSB1a4fq/CkS8Be/T8UP5cQ93asBTWndSYu2lW4DQ4SXQXSindIi3OnNx/f6SNv/extb7OrMLREF92wXI045ipPwy+DIICb+cQNMJ82Sh4cXaIcAWcyrm+MYri3qq9LBKbpwkILcebZidJ86lmKYHJozUezmfbMcwNCljHs/gYkHVzVcuw9L52Ugc6wC7sjsshh+UH6i4/2Frlrophtx+b1vervNd8eoYiKnedHVXVfW7UJcQoF27eHFgzwYnGvRW0KNXFFhqmPb61TSkIvNdCCvBKDP4SXrWvGgzU89wipvWdUPpQ+fCT6Mp3hPRrbJxwMunmjujZOzBld/HkjnXoiNfBb5akA280WvdyzWYATrjV1ZFx8yQY8G0+lRt/MxjKDc38w4y+Rf5WeRbXboJMvFatwooHUggk6qSRmZVvgOmFmNuDRnRYIFzqK3JclhJeVasnqhR6RiGSowc1Ffr1HhcZCMnXpQABGBkZcHD/zw6YjHRyh9Plw7XAm0xb16HMDtiwt7WLJpxLH/HP99j/A2hvMGWiUiFCaYv7AzyEPTmYbN32D1IsAEE/GC3FG0HypGTBolP8wpAfTRdlvWpJz8oRRdwuLV3Pgpu+kXh5sQyeZI6tnuMPQFmRDcMN1oo3E5V5V585nVMnKTFcXhBzD4UnoV+DQNkG/+iSPybQzz/EZmucEqGEYyjI3kl4MAX8UMEUxE4JO0fF8MzyBI13nxknowAceEammx1dGVaJCoIOdhadaPVPyOzXM1Vp1erVm5k4TsxSx1pll+GOm6hVoNHIuQLDueaMEpRxMhfwc8cDyXURqRGPTgTc0bint5xVjo10fnpX1gcdc/AWL6y3tXM80NW+uFJ4GI7VzyzfcMRzTiRaGi19z8MIx8PbIVGh2sw4FhgGujNsPrpuESvUVT+17M0+v8oEoABNlcizTMFs/sA1uqlPumFASltzmViAzClOsDuCh069hFLjdk/Ex5jy4vPYlwOT8Uq9DJC9ZWuZgiI1DrhWN/8QGAEGxxbvnSZPNCQ9kpD5p+iabinLLWOAirVNgKwIRJRyAu/uR9xKd7J9Wxq8q/ii+y5lGilbo2g24wbDwrkXYVhqp/4J0g+p8Wv1NBjCTSCqV39WEizUCRHo3ee9HnQnBJQDOyTBRuz2odTJtJ5tLYjWXZRdFzFSJrEq+Z1z3oq7LnhZy3YWaFXPeKmBCemMthtNt0nL',
103 version: '0.3', 100 version: '0.3',
104 creationDate: 'Fri Oct 17 16:49:20 CEST 2008', 101 creationDate: 'Fri Oct 17 16:49:20 CEST 2008',
105 updateDate: 'Mon Oct 27 08:58:49 CET 2008', 102 updateDate: 'Mon Oct 27 08:58:49 CET 2008',
106 accessDate: 'Mon Jan 19 16:09:39 CET 2009', 103 accessDate: 'Mon Jan 19 16:09:39 CET 2009',
107 currentVersion: '6fd60c5709a4808444f43f7bbd872363d76703957f613076538ba2f9161206ac', 104 currentVersion: '6fd60c5709a4808444f43f7bbd872363d76703957f613076538ba2f9161206ac',
108 versions: { 105 versions: {
109 '0ae362285f103722abbd046eee2b7d10aeae6a1d05cbaf2081392ce9df882bcf': { 106 '0ae362285f103722abbd046eee2b7d10aeae6a1d05cbaf2081392ce9df882bcf': {
110 header: '####', 107 header: '####',
111 data: 'sG6TUmPSEPFpiJ5YdtghWHmHbvUK63tZCZ+Q5iz2ALas//jN+lZCBhZcjEwPEJskBkK2R0MyAh14wWGh2bBHMjsokgTe+L+x+0c/Zi0epE/IC9gtOBhsTe/hZ2e2xOGF/SbzET3DAAYXvxduZ36f7SvvFnrkkKvpj8wGSdTFcBmzqMb9DL2bRyRCLGLMzE3F1a0q5CufCIRz2TgHm+Uw+kfvvwC7ig/F/5iLW90Ypz3vmEtMEFYFHZ9a8Oh0rsXGfevbMhFqALoywzihQEe/NiB8dwn7GEdYKSQ35rhvZh29ULWOZinqmg0ONe0HYaxx7DbKsVoue57S0CIUlgHLajzHfLfqQg2sFI0OT8TnHsGg0YZ6mM2EdKmEjJiER0cP', 108 data: 'sG6TUmPSEPFpiJ5YdtghWHmHbvUK63tZCZ+Q5iz2ALas//jN+lZCBhZcjEwPEJskBkK2R0MyAh14wWGh2bBHMjsokgTe+L+x+0c/Zi0epE/IC9gtOBhsTe/hZ2e2xOGF/SbzET3DAAYXvxduZ36f7SvvFnrkkKvpj8wGSdTFcBmzqMb9DL2bRyRCLGLMzE3F1a0q5CufCIRz2TgHm+Uw+kfvvwC7ig/F/5iLW90Ypz3vmEtMEFYFHZ9a8Oh0rsXGfevbMhFqALoywzihQEe/NiB8dwn7GEdYKSQ35rhvZh29ULWOZinqmg0ONe0HYaxx7DbKsVoue57S0CIUlgHLajzHfLfqQg2sFI0OT8TnHsGg0YZ6mM2EdKmEjJiER0cP',
112 version: '0.3', 109 version: '0.3',
113 creationDate: 'Fri Oct 17 17:00:31 CEST 2008', 110 creationDate: 'Fri Oct 17 17:00:31 CEST 2008',
114 updateDate: 'Fri Oct 17 17:00:31 CEST 2008', 111 updateDate: 'Fri Oct 17 17:00:31 CEST 2008',
115 accessDate: 'Fri Oct 17 17:00:31 CEST 2008' 112 accessDate: 'Fri Oct 17 17:00:31 CEST 2008'
116 }, 113 },
117 '10f45664bbd979a92f37886f1ecc6e52e49798b16dc997aecd37259ad9b2090e': { 114 '10f45664bbd979a92f37886f1ecc6e52e49798b16dc997aecd37259ad9b2090e': {
118 header: '####', 115 header: '####',
119 data: 'RdKVaV/WWWchrCse3KtcXd47Bfm6IAwjqVUpaxoed3HeunI42AAm7xYYSjeK8edHpbNRJbhobBAX5OZtWIp/HmgkobKM8CIiWxrWz89FqyrbnPD7+fXdtgF2yTax/0sC1l0ibncdOuJKX6U829oPlXCpXIOjlomc4wEEAD/5V6FbORvdZ9IE/ME3LsG2y02cT2tIpx6+R6wC/PKXhZA2UDsTE6R2Op2BtIzpVORZLXsdyAp/4wvWQxq90i9cEpbsVQsMB10JVyNHNsRTFhIlHi9MVCaMxQvcrwRElMj/Y9x3RbsFzSGKqFLqdg7Fn/U+KYkpYtsgHv9hraPIb9lV5FH16+iItU/HBM6FGezIj1ZkoQ+dgjPfSjTZzgzDYwyb', 116 data: 'RdKVaV/WWWchrCse3KtcXd47Bfm6IAwjqVUpaxoed3HeunI42AAm7xYYSjeK8edHpbNRJbhobBAX5OZtWIp/HmgkobKM8CIiWxrWz89FqyrbnPD7+fXdtgF2yTax/0sC1l0ibncdOuJKX6U829oPlXCpXIOjlomc4wEEAD/5V6FbORvdZ9IE/ME3LsG2y02cT2tIpx6+R6wC/PKXhZA2UDsTE6R2Op2BtIzpVORZLXsdyAp/4wvWQxq90i9cEpbsVQsMB10JVyNHNsRTFhIlHi9MVCaMxQvcrwRElMj/Y9x3RbsFzSGKqFLqdg7Fn/U+KYkpYtsgHv9hraPIb9lV5FH16+iItU/HBM6FGezIj1ZkoQ+dgjPfSjTZzgzDYwyb',
120 version: '0.3', 117 version: '0.3',
diff --git a/frontend/gamma/tests/tests/Components/UnlockPassword/index.html b/frontend/gamma/tests/tests/Components/UnlockPassword/index.html
index 5534068..7a5e95b 100644
--- a/frontend/gamma/tests/tests/Components/UnlockPassword/index.html
+++ b/frontend/gamma/tests/tests/Components/UnlockPassword/index.html
@@ -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
29<html> 26<html>
30<head> 27<head>
31 <title>UnlockPassword - test</title> 28 <title>UnlockPassword - test</title>
32 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 29 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
33 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 30 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
34 31
35 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 32 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
43 40
44 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
49 46
50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script> 47 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/Base.js'></script>
51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script> 48 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/BigInt.js'></script>
52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script> 49 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/AES.js'></script>
53 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script> 50 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SHA.js'></script>
54 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script> 51 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/PRNG.js'></script>
55 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script> 52 <script type='text/javascript' src='../../../../js/Clipperz/Crypto/SRP.js'></script>
56 53
57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script> 54 <script type='text/javascript' src='../../../../js/Clipperz/PM/Toll.js'></script>
58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script> 55 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy.js'></script>
59 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script> 56 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.js'></script>
60 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script> 57 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Test.js'></script>
61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script> 58 <script type='text/javascript' src='../../../../js/Clipperz/PM/Proxy/Proxy.Offline.DataStore.js'></script>
62 59
63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script> 60 <script type='text/javascript' src='../../../../js/Clipperz/PM/Connection.js'></script>
64 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script> 61 <script type='text/javascript' src='../../../../js/Clipperz/PM/Crypto.js'></script>
65 62
66 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script> 63 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings.js'></script>
67 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script> 64 <script type='text/javascript' src='../../../../js/Clipperz/PM/Strings/Strings_en-US.js'></script>
68 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script> 65 <script type='text/javascript' src='../../../../js/Clipperz/PM/Date.js'></script>
69 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script> 66 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/EncryptedRemoteObject.js'></script>
70 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script> 67 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.js'></script>
71 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script> 68 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.js'></script>
72 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script> 69 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Version.Field.js'></script>
73 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script> 70 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/DirectLogin.js'></script>
74 <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Field.js'></script --> 71 <!-- script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/Record.Field.js'></script -->
75 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.js'></script> 72 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.js'></script>
76 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script> 73 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.Legacy.js'></script>
77 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script> 74 <script type='text/javascript' src='../../../../js/Clipperz/PM/DataModel/User.Header.RecordIndex.js'></script>
78 75
79 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/BaseComponent.js'></script> 76 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/BaseComponent.js'></script>
80 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Button.js'></script> 77 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Button.js'></script>
81 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ComponentSlot.js'></script> 78 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ComponentSlot.js'></script>
82 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js'></script> 79 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/PasswordEntropyDisplay.js'></script>
83 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ProgressBar.js'></script> 80 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/ProgressBar.js'></script>
84 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js'></script> 81 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/SimpleMessagePanel.js'></script>
85 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js'></script> 82 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TabPanelComponent.js'></script>
86 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Tooltip.js'></script> 83 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/Tooltip.js'></script>
87 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js'></script> 84 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Components/TranslatorWidget.js'></script>
88 85
89 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogComponent.js'></script> 86 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogComponent.js'></script>
90 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js'></script> 87 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/CardDialogRecordFieldComponent.js'></script>
91 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/UnlockPasswordComponent.js'></script> 88 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Components/UnlockPasswordComponent.js'></script>
92 89
93 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js'></script> 90 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Common/Controllers/TabPanelController.js'></script>
94 91
95 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/CardDialogController.js'></script> 92 <script type='text/javascript' src='../../../../js/Clipperz/PM/UI/Web/Controllers/CardDialogController.js'></script>
96 93
97 <script type='text/javascript' src='./User.data.js'></script> 94 <script type='text/javascript' src='./User.data.js'></script>
98 <script type='text/javascript' src='./unlockPassword_test.js'></script> 95 <script type='text/javascript' src='./unlockPassword_test.js'></script>
99<script> 96<script>
100 Clipperz_IEisBroken = false; 97 Clipperz_IEisBroken = false;
101</script> 98</script>
102 99
103<!--[if IE]><script> 100<!--[if IE]><script>
104Clipperz_IEisBroken = true; 101Clipperz_IEisBroken = true;
105</script><![endif]--> 102</script><![endif]-->
106 103
107 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/clipperz.css" /> 104 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/clipperz.css" />
108 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/compact.css" /> 105 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/compact.css" />
109 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/ytheme-clipperz.css" /> 106 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/ytheme-clipperz.css" />
110 107
111</head> 108</head>
112<body> 109<body>
113 110
114<div id="tableWrapper"></div> 111<div id="tableWrapper"></div>
115 112
116</body> 113</body>
117</html> 114</html>
diff --git a/frontend/gamma/tests/tests/Components/UnlockPassword/unlockPassword_test.js b/frontend/gamma/tests/tests/Components/UnlockPassword/unlockPassword_test.js
index 87f3275..80a8c30 100644
--- a/frontend/gamma/tests/tests/Components/UnlockPassword/unlockPassword_test.js
+++ b/frontend/gamma/tests/tests/Components/UnlockPassword/unlockPassword_test.js
@@ -1,120 +1,117 @@
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.Base.module('Clipperz.Tests.SimpleMessagePanel'); 26Clipperz.Base.module('Clipperz.Tests.SimpleMessagePanel');
30 27
31Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose(); 28Clipperz.Crypto.PRNG.defaultRandomGenerator().fastEntropyAccumulationForTestingPurpose();
32Clipperz.PM.Strings.Languages.initSetup(); 29Clipperz.PM.Strings.Languages.initSetup();
33 30
34Clipperz.Tests.SimpleMessagePanel.Tester = function(args) { 31Clipperz.Tests.SimpleMessagePanel.Tester = function(args) {
35 args = args || {}; 32 args = args || {};
36 33
37 Clipperz.Tests.SimpleMessagePanel.Tester.superclass.constructor.call(this, args); 34 Clipperz.Tests.SimpleMessagePanel.Tester.superclass.constructor.call(this, args);
38 35
39 this._user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:MochiKit.Base.method(this, 'getUserPassphrase')}); 36 this._user = new Clipperz.PM.DataModel.User({username:'test', getPassphraseFunction:MochiKit.Base.method(this, 'getUserPassphrase')});
40 this._unlockPasswordComponent = new Clipperz.PM.UI.Web.Components.UnlockPasswordComponent({ 37 this._unlockPasswordComponent = new Clipperz.PM.UI.Web.Components.UnlockPasswordComponent({
41 'title':"Unlock account", 38 'title':"Unlock account",
42 'text': "Insert the passprase to unlock the account", 39 'text': "Insert the passprase to unlock the account",
43 'type': 'INFO', 40 'type': 'INFO',
44 'buttons': [ 41 'buttons': [
45 {text:"Cancel",result:'CANCEL'}, 42 {text:"Cancel",result:'CANCEL'},
46 {text:"Unlock", result:'OK',isDefault:true} 43 {text:"Unlock", result:'OK',isDefault:true}
47 ], 44 ],
48 'openFromElement': null, 45 'openFromElement': null,
49 'onOkCloseToElement': null, //this.getElement('cancelButton'), 46 'onOkCloseToElement': null, //this.getElement('cancelButton'),
50 'onCancelCloseToElement':null 47 'onCancelCloseToElement':null
51 }); 48 });
52 49
53 return this; 50 return this;
54}; 51};
55 52
56Clipperz.Base.extend(Clipperz.Tests.SimpleMessagePanel.Tester, Object, { 53Clipperz.Base.extend(Clipperz.Tests.SimpleMessagePanel.Tester, Object, {
57 54
58 'toString': function() { 55 'toString': function() {
59 return "Clipperz.Tests.SimpleMessagePanel.Tester"; 56 return "Clipperz.Tests.SimpleMessagePanel.Tester";
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 'unlockPasswordComponent': function () { 65 'unlockPasswordComponent': function () {
69 return this._unlockPasswordComponent; 66 return this._unlockPasswordComponent;
70 }, 67 },
71 68
72 //------------------------------------------------------------------------- 69 //-------------------------------------------------------------------------
73 70
74 'run': function () { 71 'run': function () {
75 var deferredResult; 72 var deferredResult;
76 var proxy; 73 var proxy;
77 74
78 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false}); 75 proxy = new Clipperz.PM.Proxy.Test({shouldPayTolls:true, isDefault:true, readOnly:false});
79 76
80 deferredResult = new Clipperz.Async.Deferred("unlockPassword_test.run", {trace:false}); 77 deferredResult = new Clipperz.Async.Deferred("unlockPassword_test.run", {trace:false});
81 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_offline_copy_data']); 78 deferredResult.addMethod(proxy.dataStore(), 'setupWithEncryptedData', testData['test_test_offline_copy_data']);
82 deferredResult.addMethod(this.user(), 'login'); 79 deferredResult.addMethod(this.user(), 'login');
83 deferredResult.addMethod(this.user(), 'getRecord', '8280842f41162b673335b63860637e8472e8bbff0efa2bc78b0dbc5e09712e13'); 80 deferredResult.addMethod(this.user(), 'getRecord', '8280842f41162b673335b63860637e8472e8bbff0efa2bc78b0dbc5e09712e13');
84 // deferredResult.addCallback(MochiKit.Base.bind(function (aRecord) { 81 // deferredResult.addCallback(MochiKit.Base.bind(function (aRecord) {
85 // cardDialogController = new Clipperz.PM.UI.Web.Controllers.CardDialogController({record:aRecord, delegate:this}); 82 // cardDialogController = new Clipperz.PM.UI.Web.Controllers.CardDialogController({record:aRecord, delegate:this});
86 // cardDialogController.run(); 83 // cardDialogController.run();
87 // }, this)); 84 // }, this));
88 deferredResult.callback(); 85 deferredResult.callback();
89 86
90 return deferredResult; 87 return deferredResult;
91 }, 88 },
92 89
93 //========================================================================= 90 //=========================================================================
94 91
95 'getUserPassphrase': function () { 92 'getUserPassphrase': function () {
96 return this.unlockPasswordComponent().getPassphrase(); 93 return this.unlockPasswordComponent().getPassphrase();
97/* 94/*
98 var deferredResult; 95 var deferredResult;
99 var confirmationDialog; 96 var confirmationDialog;
100 97
101 confirmationDialog = new Clipperz.PM.UI.Web.Components.UnlockPasswordComponent({ 98 confirmationDialog = new Clipperz.PM.UI.Web.Components.UnlockPasswordComponent({
102 title:"Unlock account", 99 title:"Unlock account",
103 text:"Insert the passprase to unlock the account", 100 text:"Insert the passprase to unlock the account",
104 type:'INFO', 101 type:'INFO',
105 buttons: [ 102 buttons: [
106 {text:"Cancel",result:'CANCEL'}, 103 {text:"Cancel",result:'CANCEL'},
107 {text:"Unlock", result:'OK',isDefault:true} 104 {text:"Unlock", result:'OK',isDefault:true}
108 ] 105 ]
109 }); 106 });
110 107
111 deferredResult = new Clipperz.Async.Deferred("CardDialogComponent.askConfirmationForLoosingPendingChanges", {trace:false}); 108 deferredResult = new Clipperz.Async.Deferred("CardDialogComponent.askConfirmationForLoosingPendingChanges", {trace:false});
112 deferredResult.addMethod(confirmationDialog, 'deferredShow', { 109 deferredResult.addMethod(confirmationDialog, 'deferredShow', {
113 'openFromElement': null, 110 'openFromElement': null,
114 'onOkCloseToElement': null, //this.getElement('cancelButton'), 111 'onOkCloseToElement': null, //this.getElement('cancelButton'),
115 'onCancelCloseToElement':null 112 'onCancelCloseToElement':null
116 }); 113 });
117 deferredResult.callback(); 114 deferredResult.callback();
118 115
119 return deferredResult; 116 return deferredResult;
120*/ 117*/
diff --git a/frontend/gamma/tests/tests/Components/crossWindowsBookmarklet/CrossWindowsBookmarklet_test.js b/frontend/gamma/tests/tests/Components/crossWindowsBookmarklet/CrossWindowsBookmarklet_test.js
index cb80473..9908c6a 100644
--- a/frontend/gamma/tests/tests/Components/crossWindowsBookmarklet/CrossWindowsBookmarklet_test.js
+++ b/frontend/gamma/tests/tests/Components/crossWindowsBookmarklet/CrossWindowsBookmarklet_test.js
@@ -1,66 +1,63 @@
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
29newWindow = function (anEvent) { 26newWindow = function (anEvent) {
30 var windowURL; 27 var windowURL;
31 var htmlString; 28 var htmlString;
32 var newWindow; 29 var newWindow;
33 30
34 anEvent.preventDefault(); 31 anEvent.preventDefault();
35 32
36 //htmlString = '<html><head><title>TARGET WINDOW</title></head><body><h3>this is the target window</h3></body></html>'; 33 //htmlString = '<html><head><title>TARGET WINDOW</title></head><body><h3>this is the target window</h3></body></html>';
37 // windowURL = 'data:text/html;charset=utf-8;base64,' + (new Clipperz.ByteArray(htmlString)).toBase64String(); 34 // windowURL = 'data:text/html;charset=utf-8;base64,' + (new Clipperz.ByteArray(htmlString)).toBase64String();
38 35
39 //newWindow = window.open(windowURL, 'CrossWindowsBookmarklet_TEST'); 36 //newWindow = window.open(windowURL, 'CrossWindowsBookmarklet_TEST');
40 newWindow = window.open('http://mail.google.com', 'CrossWindowsBookmarklet_TEST'); 37 newWindow = window.open('http://mail.google.com', 'CrossWindowsBookmarklet_TEST');
41 MochiKit.Signal.connect(newWindow, 'onload', targetWindowDidLoad) 38 MochiKit.Signal.connect(newWindow, 'onload', targetWindowDidLoad)
42 console.log("new window", newWindow); 39 console.log("new window", newWindow);
43 40
44 MochiKit.Async.callLater(2, runBookmarkletScript); 41 MochiKit.Async.callLater(2, runBookmarkletScript);
45}; 42};
46 43
47targetWindowDidLoad = function () { 44targetWindowDidLoad = function () {
48//console.log(">>> targetWindowDidLoad") 45//console.log(">>> targetWindowDidLoad")
49 runBookmarkletScript(null); 46 runBookmarkletScript(null);
50}; 47};
51 48
52runBookmarkletScript = function (anEvent) { 49runBookmarkletScript = function (anEvent) {
53 if (anEvent != null) { 50 if (anEvent != null) {
54 anEvent.preventDefault(); 51 anEvent.preventDefault();
55 } 52 }
56 53
57 window.open('javascript:_cble=null;ilf=function(_1){var%20_2;var%20_3;var%20i,c;_3=0;_2=_1.elements;c=_2.length;for(i=0;i%3Cc;i++){if(_2[i].type==%22password%22){_3++;}}return(_3==1);};flf=function(_6,_7){var%20_8;var%20_9;var%20i,c;_8=null;try{_9=_6.getElementsByTagName(%22form%22);c=_9.length;for(i=0;(i%3Cc)&&(_8==null);i++){if(ilf(_9[i])){_8=_9[i];}}if((_8==null)&&(_7==0)){var%20_c;_c=_6.getElementsByTagName(%22iframe%22);c=_c.length;for(i=0;(i%3Cc)&&(_8==null);i++){_8=flf(_c[i].contentDocument,(_7+1));}}}catch(e){_cble=e;}return%20_8;};iev=function(_d){var%20_e;if((_d.tagName.toLowerCase()==%22input%22)&&(_d.getAttribute(%22name%22)!=null)){_e={};_e.type=_d.getAttribute(%22type%22)||%22text%22;_e.name=_d.getAttribute(%22name%22);_e.value=_d.value;if(_d.type.toLowerCase()==%22radio%22){_e.checked=_d.checked;}}else{if((_d.tagName.toLowerCase()==%22select%22)&&(_d.getAttribute(%22name%22)!=null)){var%20_f;var%20c,i;_e={};_e.type=%22select%22;_e.name=_d.getAttribute(%22name%22);_e.options=[];_f=_d.options;c=_f.length;for(i=0;i%3Cc;i++){var%20_12;_12={};_12.selected=_f[i].selected;_12.label=_f[i].label||_f[i].innerHTML;_12.value=_f[i].value;_e.options.push(_12);}}else{_e=null;}}return%20_e;};fp=function(_13){var%20_14;var%20i,c;var%20_17;if(_13==null){_14=null;}else{var%20_18;var%20_19;_14={};_18={};_17=_13.action;if(_17.constructor!=String){_17=_13.getAttribute(%22action%22);}if(%2f^https?%5c:%5c%2f%5c%2f.*%2f.test(_17)){_17=_17;}else{if(%2f^%5c%2f.*%2f.test(_17)){_17=window.location.protocol+%22%2f%22+%22%2f%22+window.location.hostname+_17;}else{_17=window.location.href.replace(%2f%5c%2f[^%5c%2f]*$%2f,%22%2f%22+_17);}}_14.attributes={};_14.attributes.action=_17;_14.attributes.method=_13.getAttribute(%22method%22);_14.inputs=[];c=_13.elements.length;for(i=0;i%3Cc;i++){var%20_1a;var%20_1b;_1a=_13.elements[i];_1b=iev(_1a);if(_1b!=null){if(_1b.type!=%22radio%22){_14.inputs.push(_1b);}else{var%20_1c;var%20_1d;_1c=_18[_1b.name];if(_1c==null){_1c={};_1c.name=_1b.name;_1c.type=%22radio%22;_1c.options=[];_18[_1b.name]=_1c;}_1d={};_1d.value=_1b.value;_1d.checked=_1b.checked;_1c.options.push(_1d);}}}for(_19%20in%20_18){if(typeof(_18[_19])!=%22function%22){_14.inputs.push(_18[_19]);}}}return%20_14;};pp=function(){var%20_1e;_1e={};_1e[%22title%22]=document.title;return%20_1e;};rs=function(o){return(%22%5c%22%22+o.replace(%2f([%22%5c%5c])%2fg,%22%5c%5c$1%22)+%22%5c%22%22).replace(%2f[%5cf]%2fg,%22%5c%5cf%22).replace(%2f[%5cb]%2fg,%22%5c%5cb%22).replace(%2f[%5cn]%2fg,%22%5c%5cn%22).replace(%2f[%5ct]%2fg,%22%5c%5ct%22).replace(%2f[%5cr]%2fg,%22%5c%5cr%22);};sj=function(o){var%20_21=typeof(o);if(_21==%22number%22||_21==%22boolean%22){return%20o+%22%22;}else{if(o===null){return%20%22null%22;}}if(_21==%22string%22){return%20rs(o);}var%20me=arguments.callee;if(_21!=%22function%22&&typeof(o.length)==%22number%22){var%20res=[];for(var%20i=0;i%3Co.length;i++){var%20val=me(o[i]);if(typeof(val)!=%22string%22){val=%22undefined%22;}res.push(val);}return%20%22[%22+res.join(%22,%5cn%22)+%22]%22;}if(_21==%22undefined%22){throw%20new%20TypeError(%22error%22);}res=[];for(var%20k%20in%20o){if(typeof(o[k])!=%22function%22){var%20_27;if(typeof(k)==%22number%22){_27=%22%5c%22%22+k+%22%5c%22%22;}else{if(typeof(k)==%22string%22){_27=rs(k);}else{continue;}}val=me(o[k]);if(typeof(val)!=%22string%22){continue;}res.push(_27+%22:%22+%22%20%22+val);}}return%20%22{%22+res.join(%22,%5cn%22)+%22}%22;};closeBookmarklet=function(){var%20_28;_28=document.getElementById(%22clipperz_bookmarklet%22);_28.parentNode.removeChild(_28);};lfp=function(_29,_2a){var%20_2b;var%20_2c;var%20_2d;var%20_2e;var%20_2f;var%20_30;var%20_31;var%20_32;_2c=%22http%3a%2f%2fwww.clipperz.com%2f%22;_2d=_2c+%22help%2fbookmarklet%22;_2e=%22data:image%2fpng;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAAAXCAYAAABOMABkAAAACXBIWXMAAAsTAAALEwEAmpwYAAANJ2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjardd5NJRv2AfwaxbGMmbGGHsY2Xcle%2fYtkWzZUpKdYSYmScqSlDVLKNoo2oQWEonqR5YkyZKtyJKlFLJkmfcPqd7feZfznvNefzzneu7nj%2ft+7nM+3%2fvcAHgNdxqNggSAwCB6sK2ZIdnJ2YWM6QQM4IAXsCDi7hFCM7C2toT%2fuhAA852AAABoV3Cn0SjwfytcsJOzCwBCHgBIPuu9PgCQDq739gBAOkKn0QEQvgBA8vB19wRARACAfLC9rREA4iYA4HzW+woAwB1c7xsAABfq4UMHQHQDMBODPP2CADBTAMy6nl4hHgA4eQDw9AzxCATApQKAVWAg1RMA9xEApD1owXQAPAsAKDg5u5DXl7w3AWAbPwCLxZ+xI5kAZXkA0rv+jIk9AuBxB8hP%2fjM2awsIAEDwtIZ4q2xd30GsIQDTAIMxKwmASQdYTWMwlvMZjNVrAKg+gFqKx+Hg0I39RrQA%2fG%2fv6%2f%2f8q1AIACQAQhxRiAxHRaAjmE4wR2FiWE6yGrPWsZ1mP4ON50jClRN8OdOIaVzppHPcmTyZvNl8dQJUwdxNuUKXhBvIh0XzN18Ta5U4Jlko1SZzQvaOXKdCjOJdpZ4tp7feV%2fmgmqRWrj6omaJVqT2qk6H7VG%2fCIMvwudFXkxzTerMZ8ys7myzmd+Vbvd79xvqNTZvtiv3tPR0OnY5dTt0u6L33XPv29e8fcPtw4ONBrMdjz2GvEe9RnzHfz37jAdyUZ4Ffgr5Sp2nfDn0PngmZo88d%2fhE6f2QhbPHoUvjPYysRK8dXI2WiOmIQJ5GxqFPoOKbTzGcw8SwJrIlsSezJ2BSOs7hUfBohnTODeI4rk5TFnc1znvcCXw5%2frsBFwUubLgtdEb4qkkfOF722+bpYgXihxA2pm1K3pG%2fL3JG9M1lEuStfrFCiVKp8b8v9LQ+2PtxWplquVj7%2fKLRC%2fbFGpVaV9pPt1duf6jxdq4ms1Xum%2f9zgheE%2fRnXouth6k5emDWaN5k3mzWzNia8sWixfW7XiWs++sW6zeWvbTmxPf2fXYd+5p4unK7vb8b1Tj0uvQG9un2u%2f68C+D8Ifrnx0GzwwJDqU%2f+ngsMeI56jEaOGY92efcd8JmYnbk%2f5TAV8oXxW+Fk8HfaN+p81smbk%2fGzwX8oM+rzpfvhC6GLZ09OfRZa3lqpVjqxFrOmtPGQwAhBgSh%2fyGakbfYcpgjsD4sNizGrFtY5fCSnHw4XjxfAQ+Tm6iJJc0SYPbkmc%2fbwhfCn+JQLPguBCXsJqID%2fm86EsxhLiOxCHJe1LTMtKyFLkqBZSigVKa8uBWGZW4bV1qsuo0jTotXu2w7a90efSo+s8NxY2OGbeZCpuF7ag2X7LYYum1K9OqzRpnY2YbZldg%2f86BzVHf6ZDzJZf6vdP7RPbvdgs%2fkO9ed3Dck9tLz9vJ54TvVb9a%2f%2f6ApUCuIDmqMc33UERwakg+vexwQ2jvkYmw+XDUMc4I8nH5E6qR+lEW0btj9p48EOt1ihJHPx18Jio+KuFkYnxSenJiSs7ZC6nZaWnpFzPSz2Vlns+6mX3jfPGFmzl3cksuPrn05HLdlVdX2%2fLa89uvtV%2fvLRguHLsxdHPk1vTt73emi77enSmeLpksnbo3dn%2fwwdDDnrK28sZHtRWPHpdUXqxKfxJVHfh0b41F7fZnss+Jz5defPynqe5hfcbL4Aa7RrUmwSZGc8+rhy0Jr11axVpH3zxoO%2f7WpB3X3v%2fuaod%2fp0rnaldLd8b7fT0yPbO9lX0x%2fRYDpIGBD7c+hgxqD6GHmj6dG94%2fIjUyNVo5Fv155zj3eP%2fE9UnKlOrU2pfGr+nTe7+Jf5v6%2fmAmYtZsjjjX%2faNgnrqguYhafLmU9nPvstjyl5Xy1ag1cwYPgwEAJxFhyHCUNqoSfZxJj6mGORpzisWUpY41ju00ewJ2J7aZIxmXjE8h7Ca0cqYS07kySBnc9tzveLJ4s%2fjO8+cI5Armbroo5CrUL3xF5Co5TzRvc57YNfHrEgWShVI3pG%2fK3JL1k52Quy1fpHBXsVipRLl0y72t91UebHuoWq5Wrl6uEaaxqFmpValdtf2JTrXuCd01vRr9WoNnhs+NXhjHmqBN6kzrzV7uaDBv3NlkkWiJtXy1q8Xq9e5W61Qbgk2b7Vu7dvt3ezodshx5HLucup3fu%2fTszXUVdO3b17%2f%2fg9vHAx%2fd8w6KHhzy+OQ57DXiXegjuZ4g%2fhMBdyjylKn%2flCKzv1Ok4qjG0aXwn8eWI1aOr55Yi2REQwzyd5JgzmDiWeIbE3Ymsidhk7EpHGfxqYQ0zt9ZwpPNe57vV5Zs+jtL8oeueVwXKxAvlLwhuZEmRfJ3FYoV%2f8oSlbJt5aqP1CvUH2tUalZpP9Gu3v5Ut0b3rxwxqTd9adpg1rijybzZ4lXo682tVm+s26zf2rQf75DtdOhy7I7pUep16YsbUPkQP6g6lDTsOao9ljbuN+n%2fhTJN%2fZ4w5zJ%2fdilx1ZbBAFg%2f+wAAmNUAsuQAHHIA7PIB4uQApNwAeG4CWHMA2GsCkkkYkDo0QOzU2Tg%2fAAEEEAJFMARnCIFUKIVFBBlhgQhD3ES8Rowh8UgzZDSyGrmC0kFFo+pRK2hRtDO6EP2DyZTpFFMJ0zSzGXMe8yiGG+OKqWbBsGiyxLJMsmqxUllr2RTYotgq2HHs0ezvsSRsEPYzhwnHSY5BnDvuOR6F98ZPEWwIWYRVznjOGaIWsYBLnauAa5rkRlrg9uMu55HjecnrzYfhu80vwX+Ef07gkqCZ4Oymq0LiQhHCCOEyEX+yKLlH9NzmzZujxPBireJpEnskBSSHpO5IG0nfkjGU5ZQdlHsgf1rBVVFFCas0pvzPlvytMSqe28xU5dW41FbURzWyNXGatVql2nnbz+mc0Y3UO6J%2fyIBi6Gfka+xrEmAaZEbfccw8dudZi1zLW7sqrBp391l%2ft8XYCdtr7LFzoDmmOBU7v3GZdeXbp7vf2y31QJX7Zw9eTzOvo95Ffnz+1gEJlLogJNWAFn3oRQgz3eJwepj4UWr4kwi24y4niiIZ0faxyFOucY%2fOcMUfSmhLzkxZSnVLq89QOpeTHXL+U45dbt3l4qsSeZeu8RYSbqTcwt0+eze7RKj0+n2FMuPytgr3x9+reZ8W1Rq+oNfh64sadjYntCi8bnsT2l7fQesS7G7ok+zv%2fpAwqDdcNOr5WWS854vDNM+3rpmcObeFqaWy5UgGH4MBAEhgA16QAT1wgsOQCRUwgMAglBFuiBREDWIWKYt0Q+Yg36HwqF2oJFQLmgO9G52J7mUiM%2fkxlTItMhsxn2V+j5HAHMa8YCGyeLJUsLKzurIWs6HZ9rM9ZGdj92CvwXJjadgWDlmOZI4pnCWuBM+Bp+I7CfqE65w4zlDOXqIp8R4XmSuda40UQvrC7c89wUPhmeGl887zhfMj+JMEBARuC2oK1m9y2DQuFCXML1wuYiMyQY4TlRRt2Bwkxiv2VNxDAivxTDJISkTqrXS8jKHMqmyVXIS8jvyCQo3iGSV7ZVHl6S01W9NU%2fLcZqwqrLqt1qD%2fWuKQZreWj7bhdR0dJV1SPqI82QBnMGH43mjaeNBk1nTWb3PFjJ9KCZMm7a4uV7u7d1rY2AbZH7XLt7+955dDruOJMclHaa+V6aN+F%2fXVuY+6sB5U9fD1zvGq8v%2fnK+Hn5Zwd0BAoG7aHm0j4HS4eE0htDhY6EhDWFix1LiZg44RzZEK0WUxBLPJVymngmK4EvMTdZNeV1qlfaz4zkTPWskfOXc%2fwv7rksc5Upb+ra84KyGxduxd3xuOtaYnpP48G2MsVHCo+lqySqpWuUn+m92FFn85LSeKg5reVq65O2gXZGp0i3To9nX+JA5cepT%2fwjhmNR4zcnh78KfPOeuTw3uiC9FLRcvoZgMACAGQggBIbgDKlQCm837G+4X1ePxqOd0T+YTJlyfnlfw7iyiLDEskyy2rPWsimwXWTHsUezL2CDsJ85PHHuuE94b%2fwUIYSwyhlP5CEWcKlzNZHcSAvcqb9NW%2fHP%2ffJsLYwQLvtl2WZd8i%2fHoTKGfxv+I%2fiX37eatVqlf+z+kfvfu%2f2f1PoM+vH5W%2f9bbWjPv93G3P5bbtLWP3KzmDfsXtLc0Hs9Y8NvEXFD8IOKDcNVJ9cVP+vZcNw43pzw6p+WrNdtb0LfCrXXd9A6S7viuht6Qvsk+wMGjD8kDOoNnf50cLhoZH60%2fbPIeMCE+aT0FOaLw9fC6bhvPt93zMjOss9+nXvz48F81oL9wtRi7JLhT6mfo8uRK3wrl1c5V2NXF9auMxIZDID1+xIAALAZUSnUYLKlkTH8%2f1Yg5fDGHEgAwHoF7bEDACIASPvRze0BgAQAWmAEVKAAFYKBDJZgBMa%2fnmTw+P3FD2D9LgcAwEwAuOgIAFCzeCzq3%2fPSvcLoAABGVNrRYD8fXzrZgEajeJGNqIG0w3SvYHmyeZCHojx5q7KyKgDAfwBYjP%2fgNJJdnQAAAARnQU1BAADY6%2fUcFKoAAAAgY0hSTQAAbZgAAHOOAADeVAAAgmQAAHjTAADDvAAAMucAABx04zkiNwAACnFJREFUeNrsnHts1FUWxz+%2f32%2fenemL0sLQ0kIfUh5ioQiCQGtFRNmCWElFWFwDEohgQNmwJVAx+pcEWERJLFZFDQ93eSgiAtsl8iyV1LYLpaWtpVBK2Q6lj5npvH6zf7QMjFOUxXUTy++bTGZy55x7z9w53zn3nHMzgtfr9aJAgYJuofo1yuXldaxZ8zEej0zv3qGsXbsQg0HL9u0F7NjxTwDS01NYsmSGstMK7j+CtLfbKSmpRpZloqN74%2fHIANTXN3Hy5FkkSSQmJkrZZQX3J0FEUUCrVSPLXtTqW1PFxvYhLe0hRFEiObm%2fsssK7k+C3AlZWRPIypqg7K6CnkmQ8vI6jhz5gZqaBjwemX79evHww4MYM2YIarX0i5NWV1+hqqoeALM5gmHDBgBQUlJNWVkNXi+MHp1MbGwUu3cfpbi4GpfLTXx8X6ZMGc3AgX395jt1qpyqqssApKWlEBxsYM+eo5SV1QKQmNiPp54aQ3R0RLf2uFweTp06y4kTZ6mvtxAcbGDo0DgefzyViIhgP9mqqnqf7QMHmklKiubs2Vr27j1Oc3M7K%2f+STWhHIdhugCB2vwFeGdRGiJkEolrxsp5CEJfLw7p1O9m27R+0t9vxeGQ8HhmNRkV+%2fn5GjnyAN998ibi47vMKQeh8%2fvLL46xduwNJkpg+fTwbN74CwOHDZ1i%2f%2fgtEUWT+%2fKnU1l7l0KHvAdBoVEiSyNat37J8eTZZWRN98+7efYzPPz+IWq1iyZIZFBaWc+LE2QC93Ny5TJqU6mdTXd01cnM%2f5tSpszidLlwuD5IkIkkieXn7eOONFxk%2f%2fkGf%2fJ49x9iw4W8AvPbaTMrLzeTmfkR7ux2tXseSRZMJPf4qNJyH238rhK4HgAcINcPsMtCGK17WUwjyzjvbyc%2ffT1CQjtBQI6mpgzAYdBQXV2CxtFFYeI6lSzexdWsOJpP+jpNqNGqCgw2AgF6vvW1chcmkJyhIz969x7Ba7aSlPURUVDjl5bVcvHiVjg4na9Z8TEREKGlpwwHQ6dSYTAaMRh2ffnoQh8PFpEmphIQYKSur5upVC62tNlas+ICIiFBSUhIAaGpqZdGi9Vy4cBmNRsWgQfEkJfWnoaGJ0tJqrl69ztKl7%2fHhh39m+PB4n+0mkx6tVsOZMxfYvr2gkxxaNSqpixHGEDAZQKXrSsYk8AKO64AIHhdIkuJdPYkgJSXV7NhRgNGoRxQF3n57HpMnjwKgtraR+fPfoa6ukaKi8+za9R1z507+VQvb7U4WL36WRYumAWCzOVi27H2OHy9Flr1s2fK1jyA3Icte3G6ZlSvnMGtWBgDXr7fxyisbKSurwmZz8dFHB0hJ6YxYmzfv9ZFjxoyJrF79RySp81i0adNuNm%2fei9XawaZNe8jLe81vLbVaorS0Go1GxUsvPcUjjwxGlr2E946EJ%2feBx9EZMgSh8xh1+EX48evOqOIGBk5TokcPgO8QfeDAaTo6nLhcbjIyUn3kAIiLi2LhwmlkZIwkM3OcX8XqXuB0uhk8OJZ58572jRkMWl599VkMBh1qtYqKiotUV1%2f5iZ6LUaMG+cgBEB5uYvHiZxBFEa1Www8%2fVHL9ehs2m4MjR4rRaFSEhZlYsOAPPnIAzJ07mZiYSFQqkeLiSl%2fecTsZvV6ZnJzZ5OS8QHp6ChkZIwgyGkAXAUH9IMgMhr5QtrmLHBI4PDDoGZiwQfGunhRBzp+%2fhEolIcteRo16IEBwxozxzJgx%2fn+yqMvlZtiwAWg0%2fkRLSOiH2RxBVdVlXC43dXWNxMebfe+73R5GjEgMmG%2fw4FgiI8O4dq2ZlhYrjY3NSJKAxdKKWq3C7fbw1lufBujZbB1IkoTV2kFFxSUSEvr55WOxsX2YMuXhn%2f8wJX+FE6tBJYLTA3ETYdJW%2fBMUBb9rgng8MnZ7B6IoIIoCvXoF%2f8bLejGZDAGjarVEUJDeR4bWVluATHBwUMBYUJAOrVbti052uwNBEHA4XBiNOhwOFwcPFvHTWzU6nRZRhI4OJ42NzX7veTweoqMj%2fXKoAFTthGPLOsnhliFqKEzeBiqj4lk9iSCSJKLRqJFlkGUZi6U1QLClxUp9fVNnjmrU079%2f5K9YVuDGDWu35Vir1d5pmErCYAh0zhs32gLGrNYOHA5XF8lUaLVq37PT6SYiIoS1axd2fUbZp6fValCpJJxON9HRvbstNtwRlwvg8J%2fg5nwhMTDli84jl4Ked8RKSDBTWHgOlUqiqKiCmTPT%2fATz8%2ffzwQf7AC+zZk1i1ao597yoWq2itLQam83hR4Iff2zgypUmJElCq5WIje3jb2yXbV6vF+FmTRmoqLiExdKCIAiYTHqiosLR6dT06hXMtWvN2O0OBgwwB5Sna2oasFhakSQxoB%2fys7CUwLfZ4LJ1lnZ14fD0bggdpHhUT03Sp04di0ajQq1WUVBwhq++OukTKiqqYPfuo77k%2fPa+wb1Ao1FRWXmJd9%2fdhdvt8VWj1q37AputA5fLTVJSf5KSov30tFoNxcWV5OV97Ru7csXChg1%2fx+Vy43A4efDBeCIigjEa9UycOByn001bm42NG3fR1mb36R05UsLs2W8xc+Yb5OTkIct3eanZWg%2f7n4P2f3cm5YIIo9+EsEFgvXLbox7cVsXDekoEGTEikdmznyAvbx8Gg47c3Hy2bStApRKpqKjDbndis3WQmfloQPn1XmA06snP38%2fRo6VERYVTW9vAtWvNiKIIyLz88tRu9QwGHevX7+SbbwoJDw%2fmwoVLNDe3IQgiBoOa+fNv6S1YkElhYTlVVfUcOnSasrJq+vePwmq1U1l5CbvdiU6nYdmy57o9znV%2ftPoOLBdAowZkECT4%2fm0oXP2TUl0bpL0Pg+cpXtYTCAKwfHk2JpOBzz47iMXSysmT%2f+JmjmI06snOzmDFiudvS2RlX8fdZgvyJcFOp4vWVhuSJGG3OwIWdTicTJ06DoNByyefHKC0tMbXEe%2fVK5jXX8%2fuloQOh5Pnn3+clhYbO3cW4PHI6PUaAMzmXqxcOcfXJASIigrjvfeWsmbNJ5w+fY6amltXYDQaFVFRYSxZ8ixTpoy+5ddOF21tdkRR9OVD%2fumTt7NT7nTd3AXoaAiUcwIuJYL0KIKIosCiRdPIzBzHsWOlXLzYCECfPuGkpj7AkCFxfsqJidFs3ry0qyKk8VV8MjPHkZwciyAImM2B96Pcbhm9Xs2qVXPIyBhBYeE57HYnMTGRpKen3PFOldvtISQkiJycF3jyyVTOnKnE6XQzcGBfHntsBJGRoQE6cXFRbNnyOkVFFZSWVtPU1IJGoyIxMZqxY4fSu3eIn%2fz06Y8ydOgABEEgMjIs0AjzeJi24873sHy%2fHk7oM1rxsJ5EkJuIjo4gO%2fuxX1QOCzMG3H0CiI83+%2fUvuvUfT2e0GTt2CGPHDrlrg29WodLTU0hPT7krHUkSGTMmmTFjkn9RNiGhn18%2fJPBsGAMJMYrn3G9JugIFCu4ygvxWcDrdWK0O3+v%2fTq%2fjv9ZToOB3RZAnnhhFTEwkoigwYMDdN9SysiYwcmQisuwlOTlW+dYU%2fN8gKP9qokDBnfGfAQA9nOAwz2UemwAAAABJRU5ErkJgggo=%22;_2f=%22data:image%2fpng;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAGlCAYAAABAwstlAAANMWlDQ1BJQ0MgUHJvZmlsZQAAeJyV13k0lG0fB%2fDfLIxlzDDGHkb2XWQPWSJL9mwpMXbDTAyplCUpRJZQtKBoU5RIJKqHLAnJklBUZCmFSJZ5%2f5Dqfc553ue81x%2f3+d2%2f+9znuu77nM%2f3OhcAXsuTRqMgASA4hB5qb2ZEcnF1I2F6AAM44AMsiHqSw2iGtrZW8I9jvgcQAABdip40GiUc3ZFJftCtapBvLz7n36D0z+8BAAAu1MXVDQChAABEv7V6KwAQvdZqRwAg7qfT6AAIfwAgkv09vQEQUQCgEOpobwyAuAoAOL+1ugoAcF5rdRMA4CLIfnQARB8AMyHEOyAEADMFwKzv7RNGBsApAIC3dxg5GACXBgDWwcFUbwDcWwCQIdNC6QB4FgBQdHF1I60teVcSwGYBABbL3739WQAVBQAyO373xO8B8HoCFKb87s3aAwIAELztYb5qqgAAgMAaATANMRizUgCYDICVdAZjqZDBWLkEgBoAqKeQw0Mjfv4vBKIN4N%2fu177550AhAJAACAlEMfIgKgodxXSEOQYTx3KU1YS1ge04+wlsIsdJXCWnP1c6IZ07g3iaJ4s3iy+Hv0GQKpS3IU%2f4vEgTKVyscOMl8XbJQ1LF0p2yR+RuyPcoxindVO7fdFz1jtob9ZMalZrD2qk61bqjepn6Dw0mDLONHht%2f3pZr2mg2Y37RosVyfkeh9XObDtsOu077ZcfrO7udepx7Xfrc0Ltuuw%2fsHtwz5PFm71svLPm+93ufD76jfmP+HwPGg3goj4I%2fhXymTtO+7PsaOhM2R58L%2fxYxv38h8vuBxYM%2fDi1HLR9eiZaN6Y5DHEXGo46hE5iOM5%2fAJLIksSaznWRPwaZynMKl4dM5M7gyCae5s4jZPDm8Z%2fjO8ucK5AmeEzq%2f4YLwRZF80QJSodiljZfFiySKJa9IX5W+JnNd9obcjckSyk2FW4qlymUqtzfd2VSuendzhXqlRuX8vYgqzfta1To1ug+21G55qPdwtS663uDR1seGT4z+Mm5AN8Q3bntq2mTWbN5i3srWmvzMss3quXU7rv1Uh22n3Qv7LkJXxkuHbseenb28vTl9zq9c+t1eC77OG3AfdB%2fa%2fUbkzcW3HsN7R8RGCt95vSd%2f8B6VHC0e8%2f3oN+4%2fITtxfTJwKugT5bPi51vTIV+oX2kzm2buzIbOhX2jz6vPVy5EfI9cPPDjwJLOUs3yoZWoVb3VhwwGAEIciUN+QbWibzBlMkdh%2fFgcWY3ZNrNLY6U5+HF8eH5Ofi4eghS3DFGLx4p3D18Yf6pAqWCr0Lgwt4iGqB%2fpjNhTcYSEnuQ+qdvS07IychT5GkWUkqFyusqwqqxawuZeDTlNmlaDDp9u5JZn+rwG1K2PjSSMD5l0moqYRW6vNV+03GTlsyPLutMWZ2dmH+lQ5PjSic15q8s+1%2fNujbumd4vusfE4uLfQs8Fr3JvHx8DXxe+If35AfeBg0GIwd4g81YTmvy8qNC2skF4R3hTxev9E5PxB1CGuKNJhhSPq0VtjLGNt4nYd3Rvvc4ySQD8eeiImMSbpaHLiyYyU5NTcU2fTctLTM85lZpzOzjqTfTXnyplbZ6%2fm3sgrPffg%2fIMLDRef5XcWdBV2Xeq6%2fLroffHYlZGrH65NX%2f96Y7rk882ZW9Olk2VTt8fuDJeP3O2v6Kxsvldfde9+afW5mowHMbXBD3fVWdZveST3mPB48cnbv1oa7jZmPg1tcmjWaBFqYbT2P7vblvTcrV28fbSjvPPwi21duK7Bl%2fndgT1qPSu9bX2Zr3b3y%2fbPvq4eiBu0HCIODb259jZsWHcEPdLy7vT7PR+kP0yNVo%2fFfrQY5xkfnLg8SZlSn1r91Pw5Y3rXF4kvU1%2fLZ6JmzeYIc33fiuapC9rfUd+fLqb%2f2LUkvvRpuXIlZtWcwctgAMBRRCTyIEoXVY0+zGTAVMcciznGYsrSwJrAdpw9CWuBbeVIwaXgUzltONu50ggZ3JnETB5Hnpe82XzZ%2fGcEcgXzhPI2nBN2Fx4UuSiaTyoQK9hYIH5J4rJkkVSx9BWZq7LX5ALkJuSvK5Qo3lS6pVyqUrbptuodtfLNd9UrNSo1K7Uitb5rV+tU69ZseaBXq39Ef9Wgbmu94SOjx8ZPTOK3obc1mDaaPd3eZN5s0WKZbIW1erajzfq5Tbttmh2nXaf9C4cux5c7e5yynXmde136XF+59e%2fKcxdyH9g9uOeNx9u9bz0LvMS8RsjvvN%2f7fPAt9pNaS5DAiaAbFAXK1H+lyOyvFKk6oHVg8eCPQ0tRy4dXjqxGM2IhDvkrSTAnMIksic1JFsnsJ7Ep2FSOU%2fg0znSuX1nCm8N3hv9nlmz4M0sKRy6RL4sXSRRLXZFaT5MShZuKt5T+yBK1is2V6vc0qzTva1Vr1+g+0K3d8lC%2fTv+PHNnWaPrUtMmseXuLeavls4jnG9utO2w7bV%2fYdR3ulutx6nXui+tXfu02kDCk9iZxWH3k5HvvUd2x9PGAycBPlGnq16Q5t%2flTi8kr9gwGwNreBwDArAGQLQ%2fglAvgUAiQIA8g7QHAexXAlgPAURuQTCKA1KMBwkJvff8ABHCCMCiBEbhCGKRBGXxHkBCWiEjEVcRzxBgSjzRDxiJrkcsoPVQsqhG1jBZDu6KL0d+YTJmOMZUyTTObMRcwj2J4MO6YWhYMizZLPMskqw4rlbWeTZEthq2KHccey%2f4KS8SGYD9ybOM4yjGM88Q9xqPwvvgpTjvObM4VrkSuGYIOoYhbk7uIe5roQVzgCeCp5JXnfcrny4%2fhvy4gKbBfYE7wvJCZ0OyGfGEJ4SgRhEiFaCBJjNQvdnrjxo0x4njxdol0yZ1SglIj0jdkjGWuyRrJcckNy5crHFd0V1JTxiqPqfy1qVA1Ts17s5m6gga3xrLmqFaONk67XqdMt2DLab0T+tEG+7fuM6QYBRj7m%2fhvCzINMaNvP2Qeb3HKMs%2fq2o4q62abAduv9hgHEUetnQ5ONOdUl1uuHW6z7vy79ff4eqTtrfH8SObzNvM54FsSwB9oG5REaQhBUg1psfuehDHTLcMzIiUOUA8+iGI77HakJJoR6xiPPOaecO8Ed+K+pM6UrNTFNI%2f0xkzl07k5YWfe5TrkNVy4lS9ZcP4SXzHnldRruOunbuaUCpddvqNYYVLZWeV5%2f2st38OSeqMn9AZ8Y0mTRWtSm+Lzzo6IrsZuWq9QX9OA1GDfm6Rhg%2fclo94fRcf7PzlN837pncmd81iYWqxYimbwMxgAgAQ24ANZMAAXCIcsqIIhBAahgvBApCLqELNIOaQHMhf5EoVH7UCdRLWhOdA26Cz0ayYSUwBTGdN3ZmPmU8yvMJKYcMwTFgKLN0sVKzurO+stNjTbHra77GzsZPY6LA+Whm3jkONI4ZjCWeFK8Rx4Kr6HcyvnZS4cVwTXa4Ip4TY3iTuDe5UYRvzEE8gzwUvhneGj883zHxRACJwUFBS8LqQt1LjBacO4cIyIgEilqJ3oBClBTEqsaWOIOJ%2f4QwmyJFbykVSItKj0C5lEWSPZFbka+SgFPYUFxTqlE8qOKmIq05vqVNPVAjebqIuoL2l0a97XOq8dq+On67xFT09ZX8yAsBVtiDKcMfpqPG0yuW3UdNZscvs3C6Ql0YpvxyZrfRsbW3u7IPsDDnmOd3Y+c3rtvOxKdFPeZe2+b%2ffZPQ0eY56sXipkf+9cnzrfL%2f6yAT6BOUHdwUIhO6l5tI+hMmER9OYI4f1hkS0HxQ+lRk0ccY1uitWIK4onHEs9TjiRncSfnJeinvo8zSf9R2ZKlmb2hzMXcgPP7bwgm89UMHXpcVHFlbPXEm6Qb7qXmt7WKt9coXRP8b5MjWStTJ3KI4Mn2xvsnlKa97Wmt+W3P+gc6mL0iPbp9XsPJA9Vv516J%2fDBaCxm%2fOrk+8+CX3xnLsyNLsgshixVriIYDABgBk4QBiNwhTQogxfr9tfdr6lH49Gu6G9Mpky5P72vYtxZRFniWSZZHVnr2RTZzrHj2GPZF7Ah2I8c3jhP3Du8L36KM4xzhSuRwEso4tbkbiF6EBd40n6ZthaY++nZVgQhUvHTst2a5J+OI2SN%2fjT8W%2fBPvy+063XKftv9Lfef3f4vtX7DAfyBtn9XG9H%2fd7dx1%2f+Ue1L1t9xs5nW757XX9V7OXPdbQlgXXF61brjm6JriR%2f3rjpvHW5Oe%2fdWW%2fbyzI+KFcFdjN62nrDehr6k%2fYkBqMGjI5E3SsMHI8Xde70s+zI92fRQdD5own5SZwnxy+lw8nfDF7+v2GblZ9tnPcx3fyuezFxwXpr7HLxr9kP4xuhS9zL98YYVrJX5lYfUyI5nBAFg7LwEAAJsxlUINJVkZm%2fzL4e7%2fHcGU8PU5kACA9QnZ6QAABACQCaCbOwIAEQB0wBioQAEqhAIJrMAYTH5eSUD+9SQAYO0sBwDAzAlwzhkAoO77oZi%2fz0v3iaQDABhTaQdCA%2fz86SRDGo3iQzKmBtPC6T6hCiTzELKSAklVRUUdAOA%2f67wHk5DqTvYAAA7ISURBVHic7d1NjNz3Xcfx78w+2Y7tJo5rjEOVh6YoNaWAcqgSIiFURYVWEEJIT9wRF4SK4AZCQoJLIwWJCxcuHCo1TaJIqE3CgyrIg+K2qKVpm0DzUMWpHSdO4ti7ftjdGQ6zf+9%2f%2f95N7Zm1vZ%2fk9ZL+mp3Z2ZnxYd%2f6%2fn7z33EVAAAAAAAAAAAAAABsJb0P2fMCm2d4pZ%2fwSoSj+xy9DW7f6P7A1deN00bXL2vELlccuo%2fbX7mtHavu9cv5eoDJDda5Pqy1sepe31SbHYj247Uj1V%2fnst%2f6md4GjwFsDetFqTkGrWO9729auKY364HqwumpX1VTtRqnqc71dtDWm7aAq2%2fY+bq53o7Ucufr5noTs+7jjG2zgtVEph2n5uuZqpo6cOCOj+39yK2fn5nZ8dler39Tr9ff1+v1rtmk5weukOFwOD8cDo4NB4OfnFta+Pe33n3x8SNHDh2uUagWazVayzVqQzdeY9uMaaY9ITWxml45Zm644c4b9u05+Bcz03NfrOpNbcLzAVvKcHlx8czXjh7%2f%2fpePHDn0eo2itdQ6lmvt0nFskwarvYxrh2q6quYO3vrFz+%2fc+dG%2fr15v54TPA2xxw+Fw%2fuTJo1964aWHH6+qszUKV3O0l41jLw8nmXg2itVMVW3%2f9ME%2f%2fKPt26%2f%2fcq%2fXm5vgOYAQvV5vdnZ21xf2XPfx08feev75zrc3ZQ9rkgmrvQxsQjVTVdtu+%2fh9X9i1a%2f8%2f9nq9NY9%2f8y37655776zP3HFb7d+%2fp3bs0DJIs7Bwto4efbuee%2faFeuzRZ+qVl4+u+f5wWIMTJ177k%2f995bFvVNWZGk1bZ2t1edhMW5ds3GB196xmaxSruX37fu2mGw%2fc+a%2ftDfXp6an60z%2f7%2fbrv%2fruq3++v%2f4hAnMFgUA8%2f9FQ9+MAjtbS0fP724XA4%2f%2fJr3%2fzd48d%2f8GqNonWmqs7V6r7WWPtZ4y4Jm2A1pyrM1Cha2z9x02%2f%2f1fT07K82d5yenqoH%2f+GP6+7P3V6dgQsI1+v16pc+dWN9+lduricf%2f04NBsPm9tkd266%2f9o03v%2feftbpv1d58rxpjmThJsJpTF2aqaq6q5vbu%2feWb9u659e+qeufHqC%2f9+R%2fU3Z+7fcynARLccMPe2r17Rz3z9A%2fP3zY9PfuJhbMnvnHmzPH3au27hGOf4jDO+qx7GkOz2T67b89tv9U+deHmW%2fbXffffNc7rAsLcd%2f9ddfMt+1u39Kb2XX%2fw7qraXqvbRu1zNC95yTXJhlL77PWZqpqdm939G+073HPvnfas4EOi3+%2fXPffeuea27XPX%2fXqNVmCztTrcTNWFf5J3cc8x5mtb7x3CuX5%2f+hfad%2frMHbeN+fBAou7vfH9q5kBVbatRsGZr7YR1ycYNVvtPcM4vCfv9qb3tO+3fv2fMhwcSdX%2fnp3pT19dowmpOe2omrO4nuFyUcfewmssmXNNVNdPr9be37+g8K%2fhw6f7O9%2fpTzXTV7F+NHauqyZaE7T2sZsoC6Gomq+a4Ypvu3Y+D6XcOgK7uR0t1+3HRJt10735CA0BX+93Bsaerqsmmom4lncYOrGe9yeqKB6vqwkkLoGviUDUmnbAAfpaN3hG8ome6t1+ICQvYyHr%2fW9ZVWRIC%2fCybthoTLCDGJKc1AIzrii4Ju2tRAQPez0a9uGJ%2fSwhwsd6vGxfdFHtYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEmCRYw84BsJFN6cU4wRIo4FJ1mzF8n+9taNwJS7CAzXBJLbGHBcTYzGCZuoD1bFobNnXCGg6Wz7SvLyyc3cyHB7a47u%2f8YLB8trZQsAY1ejGDqhouD5beaX%2fz6NG3J3x4IEn3d355sHhi5cvmzbpBTfDG3STBGrReSFXVcHn53BvtOzz37AsTPDyQpvs7v7R05q26MFLdy4u2GUvCwcqxPL9w7L%2fb33js0WdqMBis%2f1PAB8pgMKjHHn1mzW2n5o8+X1XLreOKnofVPflr0D6OvvU%2fh4bD4flCvfLy0Xr4oafGfW1AkIcfeqpeefno+evD4XBw7Pj3v1udTrSOS47XJOdhtZ94qaqWTp16%2fY35hWNPt+%2f44AOP1LcOvTjm0wAJvnXoxXrwgUfW3HZq%2fsi35+ffOFYrfajVKasdrEsyNebr61fV9MrPz6wcs1U1d%2frsu0f2XveLv9nr9aerqgaDYT35+Hdq9+4d9cmDH6terzfmUwJbzWAwqK999b%2fqr%2f%2fyn2tpabl1+%2fLZH7%2f6xD8tLs6%2fXVWnqmqhqs5U1dmqOldVi7Uar4s2TrB6K0d%2f5ZiqUbxmq2rm3LmTg15v+p1dOw%2fc3utVb%2fTih%2fXM0z+s%2f%2fi379bi4nJds3Nbzc3N1szM9BhPD1xNCwtn67XX3qzHv%2f7t+tu%2f+Up9%2fV8O1WCwOiwNh8Ph60cOfeWdd%2f%2fvxaqabx1nVo52sC5pyhpn3OnV6mQ1W1XbqmpnVe2qqo9U1bVVteeWGz%2f7O9dfd9vv9YxU8KExHA6Hbx7%2fwROvvvbNJ6vqnap6d+XyRFW9V6NJ63SNJq1mmXjR0Rp3wqoaTVdNvJpjujneOfHK4RrU8Z07f%2f6TzfIQ+OAaDJbOHf7pcw8fPvLsszVaBp6q1emqvSRcrFGsmr2sizbuHlbV6rKwuZyq1YD1q6p%2fcv6nx989+ZPnt81du3N2dtfPmbbgg2c4HA7eO3n4+R+%2f+sRX3z3x0ks1CtXJ1uXCytGOVROsSzJuQJowNRPVtqrasXLsWjl2ty6v2b597%2f6P7jn4qd07D9w6PbP9uumpuWv6%2femZMZ8fuEoGg6XFpeWz84uLp0+cPHX45Tff%2ftGPTp8+%2fmaNlnpNqN5rHfMrtzVLwXO19rysizZJsLob7ttWjmtqtKe1s1ZitfL19pVjbuX+zbuMzZRW5dMjYCtqn5nenNK0XKNpabFGETpTq0u%2f9nTVLAtP1yhUzZQ11qkN4+4tNS+613rh7eVhr%2fWPa8a%2fsyvHbK0Ga7rzc1XjRxS4fAaty2Y6WqrR736zN7VQq9NU83V7qmqfyjDWeViTboZ3a9trHe1gnavRP+p0rR+s9pQlWLD1dKerQY1+55upqZmymv2qM63Lc7X6juBYoWpMEqzmxW%2f0vabCzT%2fqdI2WjLM1OiWiWU62gyVWsDW1%2fySv2TBvJqxmgmomrTO19iTRJljt0xjGitZmTVhVo9gsdm5vV3i2RtGaqbXTVfPuYjtW9rLg6lvv0xWaCamJTxOi9v5Uc9nEqrnfRB8tUzV5sKounLQWa+3oOFOre1hNrJrztjaarkxacPWtF5b23xA3IWoum32q9qkL7VhNtBys2pxgNdqbcu1gNWNjO1TN0d5sb09VggVbR3sqan7P25vn3T9ubp9n1XSgasJYVW1+GLonk645kbTWn6zaobIUhK2ne1pD1doYtb9u9qgm+hiZjVyOSaZ7TlW%2fLlz6rffOoKkKtrbup4a2V1ODdW6rWrtdNLHLGYn1YtTdrxIqyNKelNofk77esemuVCy6z7NRqMQLtq71%2fvfmsf4H53FttUBstdcD+D9HAQAAAAAAAAAAAAAAIN3%2fA%2fPNWgCA%2fF3MAAAAAElFTkSuQmCCCg==%22;_30=%22data:image%2fpng;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAIAAAC0D9CtAAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGiSURBVHjaYvz%2f%2fz8DiYAFU+jhg5cXLtx9%2f+4LLy+nlpa8hpYsIyMjTj03rj%2fu71l74fxdZEEFRfG8wkBrG224CCPcbfv2XKivWfjr1x+s7snM8U1IcoOwmeA24NEABNOnbN698yyKHqCTIBrcPU2WrKiIjHYEsh2c9BctK0tMcYeomdC37sePXyAW0G0P7r8wM8yBoFs3n%2fwHgwP7L%2f79+xfI+Pnzl6VpHkR27+7zQBGQPcie3rr5JIRh76DHxASS3bHtzN8%2f%2fyCCF87fgbrt%2ffsvcD3Ll+4%2feOASnPvg%2fsuO1hVwLjACoHqA8QAXBfrB1k4HOaDjEl3hXF4+LqgeYMTBRZNS3CFOAtoAEUlIdGNmgQaVlrYcVA8wpoHmQUT377v469fvTRuOR4W1zZi25cf3X6DAAPuHi4vd1l4XEadHj1wtypsB0QY0Fe5pZHZOvn9svAsifoBJAxjTEDZcETLbw8s0Js4ZPe0AATCmgRH35vUn5BQAdFJSqgdQAzylMqLlBWBMHztyDRgPoHTNxwX0NNAP%2fPzcyGoYycg%2fAAEGABYVzxqE3YcJAAAAAElFTkSuQmCCCg==%22;_2b=document.createElement(%22div%22);_2b.setAttribute(%22id%22,%22clipperz_bookmarklet%22);_32=%22%22;_32+=%22%3Cstyle%3Ediv#ClipperzBackgroundDIV{width:290px;height:420px;padding:20px%200px%200px%2020px;margin:0px;border:0px;background-color:transparent;background-repeat:no-repeat;position:absolute;z-index:20000;top:40px;left:40px;background-image:url(%22+_2f+%22)}%3C%2fstyle%3E%22;_32+=%22%3Cdiv%20style=%5c%22border:0px;margin:0px;padding:0px;padding-left:10px;%5c%22%3E%22+%22%3Cimg%20style=%5c%22padding-top:5px;%5c%22%20src=%5c%22%22+_2e+%22%5c%22%3E%22+%22%3Ca%20href=%5c%22javascript:closeBookmarklet();%5c%22%3E%22+%22%3Cimg%20style=%5c%22padding-left:28px;padding-bottom:10px;%5c%22%20border=0%20src=%5c%22%22+_30+%22%5c%22%3E%22+%22%3C%2fa%3E%22+%22%3C%2fdiv%3E%22;if((_29!=null)&&(_2a==null)){_32+=%22%3Cdiv%20style=%5c%22width:255px;border-top:1px%20dotted%20%23336;%5c%22%3E%22+%22%3Cdiv%20style=%5c%22line-height:10pt;margin-right:10px;margin-top:5px;padding:5px%2010px;color:%23666;text-align:left;font-family:sans-serif;%5c%22%3E%22+%22%3Cp%20style=%5c%22margin:0px;font-weight:bold;font-size:10pt;font-family:sans-serif;%5c%22%3EHow%20to%20add%20a%20new%20card%20or%20a%20direct%20login%20to%20an%20existing%20card%20for%20this%20website:%3C%2fp%3E%22+%22%3Col%20style=%5c%22padding:0px%200px%200px%2020px;font-size:9pt;font-family:sans-serif;%5c%22%3E%22+%22%3Cli%3ECopy%20the%20content%20of%20the%20text%20area%20below(Ctrl-C)%3C%2fli%3E%22+%22%3Cli%3EGo%20to%20your%20Clipperz%20account%3C%2fli%3E%22+%22%3Cli%3EClick%20%5c%22Add%20new%20card%5c%22%20or%20select%20the%20related%20card%3C%2fli%3E%22+%22%3Cli%3EPaste%20the%20direct%20login%20configuration(Ctrl-V)%3C%2fli%3E%22+%22%3Cli%3EComplete%20and%20review%20the%20details,then%20click%20%5c%22Save%5c%22%3C%2fli%3E%22+%22%3C%2fol%3E%22+%22%3C%2fdiv%3E%22+%22%3C%2fdiv%3E%22;_32+=%22%3Ctextarea%20id=%5c%22bookmarklet_textarea%5c%22%20style=%5c%22border:2px%20solid%20%23333366;font-family:sans-serif;font-size:8pt;color:%23336;width:240px;height:135px;padding:4px;background-color:white;margin:0px%2010px;%5c%22%3E%22+sj(_29)+%22%3C%2ftextarea%3E%22;}else{if((_29==null)&&(_2a==null)){_32+=%22%3Cdiv%3ENo%20login%20form%20has%20been%20found%20on%20the%20page%3C%2fdiv%3E%3Cdiv%3EGet%20some%20help%20%3Ca%20href=%5c%22%23%5c%22%3Ehere%3C%2fa%3E%3C%2fdiv%3E%22;}else{_32+=%22%3Cdiv%3EAn%20error%20happened%20while%20processing%20the%20page%3C%2fdiv%3E%3Cdiv%3EGet%20some%20help%20%3Ca%20href=%5c%22%23%5c%22%3Ehere%3C%2fa%3E%3C%2fdiv%3E%3Cdiv%3E%22+_2a.name+%22%20-%20%22+_2a.message+%22%3C%2fdiv%3E%22;}}_2b.innerHTML=%22%3Cdiv%20id=%5c%22ClipperzBackgroundDIV%5c%22%3E%22+_32+%22%3C%2fdiv%3E%22;document.body.appendChild(_2b);if((_29!=null)&&(_2a==null)){_31=document.getElementById(%22bookmarklet_textarea%22);_31.focus();_31.select();}};getLoginFormConfiguration=function(){var%20_33;try{_33={};_33.page=pp();_33.form=fp(flf(document,0));_33.version=%220.2.3%22;lfp(_33,_cble);}catch(e){lfp(_33,e);}};getLoginFormConfiguration();', 'CrossWindowsBookmarklet_TEST'); 54 window.open('javascript:_cble=null;ilf=function(_1){var%20_2;var%20_3;var%20i,c;_3=0;_2=_1.elements;c=_2.length;for(i=0;i%3Cc;i++){if(_2[i].type==%22password%22){_3++;}}return(_3==1);};flf=function(_6,_7){var%20_8;var%20_9;var%20i,c;_8=null;try{_9=_6.getElementsByTagName(%22form%22);c=_9.length;for(i=0;(i%3Cc)&&(_8==null);i++){if(ilf(_9[i])){_8=_9[i];}}if((_8==null)&&(_7==0)){var%20_c;_c=_6.getElementsByTagName(%22iframe%22);c=_c.length;for(i=0;(i%3Cc)&&(_8==null);i++){_8=flf(_c[i].contentDocument,(_7+1));}}}catch(e){_cble=e;}return%20_8;};iev=function(_d){var%20_e;if((_d.tagName.toLowerCase()==%22input%22)&&(_d.getAttribute(%22name%22)!=null)){_e={};_e.type=_d.getAttribute(%22type%22)||%22text%22;_e.name=_d.getAttribute(%22name%22);_e.value=_d.value;if(_d.type.toLowerCase()==%22radio%22){_e.checked=_d.checked;}}else{if((_d.tagName.toLowerCase()==%22select%22)&&(_d.getAttribute(%22name%22)!=null)){var%20_f;var%20c,i;_e={};_e.type=%22select%22;_e.name=_d.getAttribute(%22name%22);_e.options=[];_f=_d.options;c=_f.length;for(i=0;i%3Cc;i++){var%20_12;_12={};_12.selected=_f[i].selected;_12.label=_f[i].label||_f[i].innerHTML;_12.value=_f[i].value;_e.options.push(_12);}}else{_e=null;}}return%20_e;};fp=function(_13){var%20_14;var%20i,c;var%20_17;if(_13==null){_14=null;}else{var%20_18;var%20_19;_14={};_18={};_17=_13.action;if(_17.constructor!=String){_17=_13.getAttribute(%22action%22);}if(%2f^https?%5c:%5c%2f%5c%2f.*%2f.test(_17)){_17=_17;}else{if(%2f^%5c%2f.*%2f.test(_17)){_17=window.location.protocol+%22%2f%22+%22%2f%22+window.location.hostname+_17;}else{_17=window.location.href.replace(%2f%5c%2f[^%5c%2f]*$%2f,%22%2f%22+_17);}}_14.attributes={};_14.attributes.action=_17;_14.attributes.method=_13.getAttribute(%22method%22);_14.inputs=[];c=_13.elements.length;for(i=0;i%3Cc;i++){var%20_1a;var%20_1b;_1a=_13.elements[i];_1b=iev(_1a);if(_1b!=null){if(_1b.type!=%22radio%22){_14.inputs.push(_1b);}else{var%20_1c;var%20_1d;_1c=_18[_1b.name];if(_1c==null){_1c={};_1c.name=_1b.name;_1c.type=%22radio%22;_1c.options=[];_18[_1b.name]=_1c;}_1d={};_1d.value=_1b.value;_1d.checked=_1b.checked;_1c.options.push(_1d);}}}for(_19%20in%20_18){if(typeof(_18[_19])!=%22function%22){_14.inputs.push(_18[_19]);}}}return%20_14;};pp=function(){var%20_1e;_1e={};_1e[%22title%22]=document.title;return%20_1e;};rs=function(o){return(%22%5c%22%22+o.replace(%2f([%22%5c%5c])%2fg,%22%5c%5c$1%22)+%22%5c%22%22).replace(%2f[%5cf]%2fg,%22%5c%5cf%22).replace(%2f[%5cb]%2fg,%22%5c%5cb%22).replace(%2f[%5cn]%2fg,%22%5c%5cn%22).replace(%2f[%5ct]%2fg,%22%5c%5ct%22).replace(%2f[%5cr]%2fg,%22%5c%5cr%22);};sj=function(o){var%20_21=typeof(o);if(_21==%22number%22||_21==%22boolean%22){return%20o+%22%22;}else{if(o===null){return%20%22null%22;}}if(_21==%22string%22){return%20rs(o);}var%20me=arguments.callee;if(_21!=%22function%22&&typeof(o.length)==%22number%22){var%20res=[];for(var%20i=0;i%3Co.length;i++){var%20val=me(o[i]);if(typeof(val)!=%22string%22){val=%22undefined%22;}res.push(val);}return%20%22[%22+res.join(%22,%5cn%22)+%22]%22;}if(_21==%22undefined%22){throw%20new%20TypeError(%22error%22);}res=[];for(var%20k%20in%20o){if(typeof(o[k])!=%22function%22){var%20_27;if(typeof(k)==%22number%22){_27=%22%5c%22%22+k+%22%5c%22%22;}else{if(typeof(k)==%22string%22){_27=rs(k);}else{continue;}}val=me(o[k]);if(typeof(val)!=%22string%22){continue;}res.push(_27+%22:%22+%22%20%22+val);}}return%20%22{%22+res.join(%22,%5cn%22)+%22}%22;};closeBookmarklet=function(){var%20_28;_28=document.getElementById(%22clipperz_bookmarklet%22);_28.parentNode.removeChild(_28);};lfp=function(_29,_2a){var%20_2b;var%20_2c;var%20_2d;var%20_2e;var%20_2f;var%20_30;var%20_31;var%20_32;_2c=%22http%3a%2f%2fwww.clipperz.com%2f%22;_2d=_2c+%22help%2fbookmarklet%22;_2e=%22data:image%2fpng;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAAAXCAYAAABOMABkAAAACXBIWXMAAAsTAAALEwEAmpwYAAANJ2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjardd5NJRv2AfwaxbGMmbGGHsY2Xcle%2fYtkWzZUpKdYSYmScqSlDVLKNoo2oQWEonqR5YkyZKtyJKlFLJkmfcPqd7feZfznvNefzzneu7nj%2ft+7nM+3%2fvcAHgNdxqNggSAwCB6sK2ZIdnJ2YWM6QQM4IAXsCDi7hFCM7C2toT%2fuhAA852AAABoV3Cn0SjwfytcsJOzCwBCHgBIPuu9PgCQDq739gBAOkKn0QEQvgBA8vB19wRARACAfLC9rREA4iYA4HzW+woAwB1c7xsAABfq4UMHQHQDMBODPP2CADBTAMy6nl4hHgA4eQDw9AzxCATApQKAVWAg1RMA9xEApD1owXQAPAsAKDg5u5DXl7w3AWAbPwCLxZ+xI5kAZXkA0rv+jIk9AuBxB8hP%2fjM2awsIAEDwtIZ4q2xd30GsIQDTAIMxKwmASQdYTWMwlvMZjNVrAKg+gFqKx+Hg0I39RrQA%2fG%2fv6%2f%2f8q1AIACQAQhxRiAxHRaAjmE4wR2FiWE6yGrPWsZ1mP4ON50jClRN8OdOIaVzppHPcmTyZvNl8dQJUwdxNuUKXhBvIh0XzN18Ta5U4Jlko1SZzQvaOXKdCjOJdpZ4tp7feV%2fmgmqRWrj6omaJVqT2qk6H7VG%2fCIMvwudFXkxzTerMZ8ys7myzmd+Vbvd79xvqNTZvtiv3tPR0OnY5dTt0u6L33XPv29e8fcPtw4ONBrMdjz2GvEe9RnzHfz37jAdyUZ4Ffgr5Sp2nfDn0PngmZo88d%2fhE6f2QhbPHoUvjPYysRK8dXI2WiOmIQJ5GxqFPoOKbTzGcw8SwJrIlsSezJ2BSOs7hUfBohnTODeI4rk5TFnc1znvcCXw5%2frsBFwUubLgtdEb4qkkfOF722+bpYgXihxA2pm1K3pG%2fL3JG9M1lEuStfrFCiVKp8b8v9LQ+2PtxWplquVj7%2fKLRC%2fbFGpVaV9pPt1duf6jxdq4ms1Xum%2f9zgheE%2fRnXouth6k5emDWaN5k3mzWzNia8sWixfW7XiWs++sW6zeWvbTmxPf2fXYd+5p4unK7vb8b1Tj0uvQG9un2u%2f68C+D8Ifrnx0GzwwJDqU%2f+ngsMeI56jEaOGY92efcd8JmYnbk%2f5TAV8oXxW+Fk8HfaN+p81smbk%2fGzwX8oM+rzpfvhC6GLZ09OfRZa3lqpVjqxFrOmtPGQwAhBgSh%2fyGakbfYcpgjsD4sNizGrFtY5fCSnHw4XjxfAQ+Tm6iJJc0SYPbkmc%2fbwhfCn+JQLPguBCXsJqID%2fm86EsxhLiOxCHJe1LTMtKyFLkqBZSigVKa8uBWGZW4bV1qsuo0jTotXu2w7a90efSo+s8NxY2OGbeZCpuF7ag2X7LYYum1K9OqzRpnY2YbZldg%2f86BzVHf6ZDzJZf6vdP7RPbvdgs%2fkO9ed3Dck9tLz9vJ54TvVb9a%2f%2f6ApUCuIDmqMc33UERwakg+vexwQ2jvkYmw+XDUMc4I8nH5E6qR+lEW0btj9p48EOt1ihJHPx18Jio+KuFkYnxSenJiSs7ZC6nZaWnpFzPSz2Vlns+6mX3jfPGFmzl3cksuPrn05HLdlVdX2%2fLa89uvtV%2fvLRguHLsxdHPk1vTt73emi77enSmeLpksnbo3dn%2fwwdDDnrK28sZHtRWPHpdUXqxKfxJVHfh0b41F7fZnss+Jz5defPynqe5hfcbL4Aa7RrUmwSZGc8+rhy0Jr11axVpH3zxoO%2f7WpB3X3v%2fuaod%2fp0rnaldLd8b7fT0yPbO9lX0x%2fRYDpIGBD7c+hgxqD6GHmj6dG94%2fIjUyNVo5Fv155zj3eP%2fE9UnKlOrU2pfGr+nTe7+Jf5v6%2fmAmYtZsjjjX%2faNgnrqguYhafLmU9nPvstjyl5Xy1ag1cwYPgwEAJxFhyHCUNqoSfZxJj6mGORpzisWUpY41ju00ewJ2J7aZIxmXjE8h7Ca0cqYS07kySBnc9tzveLJ4s%2fjO8+cI5Armbroo5CrUL3xF5Co5TzRvc57YNfHrEgWShVI3pG%2fK3JL1k52Quy1fpHBXsVipRLl0y72t91UebHuoWq5Wrl6uEaaxqFmpValdtf2JTrXuCd01vRr9WoNnhs+NXhjHmqBN6kzrzV7uaDBv3NlkkWiJtXy1q8Xq9e5W61Qbgk2b7Vu7dvt3ezodshx5HLucup3fu%2fTszXUVdO3b17%2f%2fg9vHAx%2fd8w6KHhzy+OQ57DXiXegjuZ4g%2fhMBdyjylKn%2flCKzv1Ok4qjG0aXwn8eWI1aOr55Yi2REQwzyd5JgzmDiWeIbE3Ymsidhk7EpHGfxqYQ0zt9ZwpPNe57vV5Zs+jtL8oeueVwXKxAvlLwhuZEmRfJ3FYoV%2f8oSlbJt5aqP1CvUH2tUalZpP9Gu3v5Ut0b3rxwxqTd9adpg1rijybzZ4lXo682tVm+s26zf2rQf75DtdOhy7I7pUep16YsbUPkQP6g6lDTsOao9ljbuN+n%2fhTJN%2fZ4w5zJ%2fdilx1ZbBAFg%2f+wAAmNUAsuQAHHIA7PIB4uQApNwAeG4CWHMA2GsCkkkYkDo0QOzU2Tg%2fAAEEEAJFMARnCIFUKIVFBBlhgQhD3ES8Rowh8UgzZDSyGrmC0kFFo+pRK2hRtDO6EP2DyZTpFFMJ0zSzGXMe8yiGG+OKqWbBsGiyxLJMsmqxUllr2RTYotgq2HHs0ezvsSRsEPYzhwnHSY5BnDvuOR6F98ZPEWwIWYRVznjOGaIWsYBLnauAa5rkRlrg9uMu55HjecnrzYfhu80vwX+Ef07gkqCZ4Oymq0LiQhHCCOEyEX+yKLlH9NzmzZujxPBireJpEnskBSSHpO5IG0nfkjGU5ZQdlHsgf1rBVVFFCas0pvzPlvytMSqe28xU5dW41FbURzWyNXGatVql2nnbz+mc0Y3UO6J%2fyIBi6Gfka+xrEmAaZEbfccw8dudZi1zLW7sqrBp391l%2ft8XYCdtr7LFzoDmmOBU7v3GZdeXbp7vf2y31QJX7Zw9eTzOvo95Ffnz+1gEJlLogJNWAFn3oRQgz3eJwepj4UWr4kwi24y4niiIZ0faxyFOucY%2fOcMUfSmhLzkxZSnVLq89QOpeTHXL+U45dbt3l4qsSeZeu8RYSbqTcwt0+eze7RKj0+n2FMuPytgr3x9+reZ8W1Rq+oNfh64sadjYntCi8bnsT2l7fQesS7G7ok+zv%2fpAwqDdcNOr5WWS854vDNM+3rpmcObeFqaWy5UgGH4MBAEhgA16QAT1wgsOQCRUwgMAglBFuiBREDWIWKYt0Q+Yg36HwqF2oJFQLmgO9G52J7mUiM%2fkxlTItMhsxn2V+j5HAHMa8YCGyeLJUsLKzurIWs6HZ9rM9ZGdj92CvwXJjadgWDlmOZI4pnCWuBM+Bp+I7CfqE65w4zlDOXqIp8R4XmSuda40UQvrC7c89wUPhmeGl887zhfMj+JMEBARuC2oK1m9y2DQuFCXML1wuYiMyQY4TlRRt2Bwkxiv2VNxDAivxTDJISkTqrXS8jKHMqmyVXIS8jvyCQo3iGSV7ZVHl6S01W9NU%2fLcZqwqrLqt1qD%2fWuKQZreWj7bhdR0dJV1SPqI82QBnMGH43mjaeNBk1nTWb3PFjJ9KCZMm7a4uV7u7d1rY2AbZH7XLt7+955dDruOJMclHaa+V6aN+F%2fXVuY+6sB5U9fD1zvGq8v%2fnK+Hn5Zwd0BAoG7aHm0j4HS4eE0htDhY6EhDWFix1LiZg44RzZEK0WUxBLPJVymngmK4EvMTdZNeV1qlfaz4zkTPWskfOXc%2fwv7rksc5Upb+ra84KyGxduxd3xuOtaYnpP48G2MsVHCo+lqySqpWuUn+m92FFn85LSeKg5reVq65O2gXZGp0i3To9nX+JA5cepT%2fwjhmNR4zcnh78KfPOeuTw3uiC9FLRcvoZgMACAGQggBIbgDKlQCm837G+4X1ePxqOd0T+YTJlyfnlfw7iyiLDEskyy2rPWsimwXWTHsUezL2CDsJ85PHHuuE94b%2fwUIYSwyhlP5CEWcKlzNZHcSAvcqb9NW%2fHP%2ffJsLYwQLvtl2WZd8i%2fHoTKGfxv+I%2fiX37eatVqlf+z+kfvfu%2f2f1PoM+vH5W%2f9bbWjPv93G3P5bbtLWP3KzmDfsXtLc0Hs9Y8NvEXFD8IOKDcNVJ9cVP+vZcNw43pzw6p+WrNdtb0LfCrXXd9A6S7viuht6Qvsk+wMGjD8kDOoNnf50cLhoZH60%2fbPIeMCE+aT0FOaLw9fC6bhvPt93zMjOss9+nXvz48F81oL9wtRi7JLhT6mfo8uRK3wrl1c5V2NXF9auMxIZDID1+xIAALAZUSnUYLKlkTH8%2f1Yg5fDGHEgAwHoF7bEDACIASPvRze0BgAQAWmAEVKAAFYKBDJZgBMa%2fnmTw+P3FD2D9LgcAwEwAuOgIAFCzeCzq3%2fPSvcLoAABGVNrRYD8fXzrZgEajeJGNqIG0w3SvYHmyeZCHojx5q7KyKgDAfwBYjP%2fgNJJdnQAAAARnQU1BAADY6%2fUcFKoAAAAgY0hSTQAAbZgAAHOOAADeVAAAgmQAAHjTAADDvAAAMucAABx04zkiNwAACnFJREFUeNrsnHts1FUWxz+%2f32%2fenemL0sLQ0kIfUh5ioQiCQGtFRNmCWElFWFwDEohgQNmwJVAx+pcEWERJLFZFDQ93eSgiAtsl8iyV1LYLpaWtpVBK2Q6lj5npvH6zf7QMjFOUxXUTy++bTGZy55x7z9w53zn3nHMzgtfr9aJAgYJuofo1yuXldaxZ8zEej0zv3qGsXbsQg0HL9u0F7NjxTwDS01NYsmSGstMK7j+CtLfbKSmpRpZloqN74%2fHIANTXN3Hy5FkkSSQmJkrZZQX3J0FEUUCrVSPLXtTqW1PFxvYhLe0hRFEiObm%2fsssK7k+C3AlZWRPIypqg7K6CnkmQ8vI6jhz5gZqaBjwemX79evHww4MYM2YIarX0i5NWV1+hqqoeALM5gmHDBgBQUlJNWVkNXi+MHp1MbGwUu3cfpbi4GpfLTXx8X6ZMGc3AgX395jt1qpyqqssApKWlEBxsYM+eo5SV1QKQmNiPp54aQ3R0RLf2uFweTp06y4kTZ6mvtxAcbGDo0DgefzyViIhgP9mqqnqf7QMHmklKiubs2Vr27j1Oc3M7K%2f+STWhHIdhugCB2vwFeGdRGiJkEolrxsp5CEJfLw7p1O9m27R+0t9vxeGQ8HhmNRkV+%2fn5GjnyAN998ibi47vMKQeh8%2fvLL46xduwNJkpg+fTwbN74CwOHDZ1i%2f%2fgtEUWT+%2fKnU1l7l0KHvAdBoVEiSyNat37J8eTZZWRN98+7efYzPPz+IWq1iyZIZFBaWc+LE2QC93Ny5TJqU6mdTXd01cnM%2f5tSpszidLlwuD5IkIkkieXn7eOONFxk%2f%2fkGf%2fJ49x9iw4W8AvPbaTMrLzeTmfkR7ux2tXseSRZMJPf4qNJyH238rhK4HgAcINcPsMtCGK17WUwjyzjvbyc%2ffT1CQjtBQI6mpgzAYdBQXV2CxtFFYeI6lSzexdWsOJpP+jpNqNGqCgw2AgF6vvW1chcmkJyhIz969x7Ba7aSlPURUVDjl5bVcvHiVjg4na9Z8TEREKGlpwwHQ6dSYTAaMRh2ffnoQh8PFpEmphIQYKSur5upVC62tNlas+ICIiFBSUhIAaGpqZdGi9Vy4cBmNRsWgQfEkJfWnoaGJ0tJqrl69ztKl7%2fHhh39m+PB4n+0mkx6tVsOZMxfYvr2gkxxaNSqpixHGEDAZQKXrSsYk8AKO64AIHhdIkuJdPYkgJSXV7NhRgNGoRxQF3n57HpMnjwKgtraR+fPfoa6ukaKi8+za9R1z507+VQvb7U4WL36WRYumAWCzOVi27H2OHy9Flr1s2fK1jyA3Icte3G6ZlSvnMGtWBgDXr7fxyisbKSurwmZz8dFHB0hJ6YxYmzfv9ZFjxoyJrF79RySp81i0adNuNm%2fei9XawaZNe8jLe81vLbVaorS0Go1GxUsvPcUjjwxGlr2E946EJ%2feBx9EZMgSh8xh1+EX48evOqOIGBk5TokcPgO8QfeDAaTo6nLhcbjIyUn3kAIiLi2LhwmlkZIwkM3OcX8XqXuB0uhk8OJZ58572jRkMWl599VkMBh1qtYqKiotUV1%2f5iZ6LUaMG+cgBEB5uYvHiZxBFEa1Www8%2fVHL9ehs2m4MjR4rRaFSEhZlYsOAPPnIAzJ07mZiYSFQqkeLiSl%2fecTsZvV6ZnJzZ5OS8QHp6ChkZIwgyGkAXAUH9IMgMhr5QtrmLHBI4PDDoGZiwQfGunhRBzp+%2fhEolIcteRo16IEBwxozxzJgx%2fn+yqMvlZtiwAWg0%2fkRLSOiH2RxBVdVlXC43dXWNxMebfe+73R5GjEgMmG%2fw4FgiI8O4dq2ZlhYrjY3NSJKAxdKKWq3C7fbw1lufBujZbB1IkoTV2kFFxSUSEvr55WOxsX2YMuXhn%2f8wJX+FE6tBJYLTA3ETYdJW%2fBMUBb9rgng8MnZ7B6IoIIoCvXoF%2f8bLejGZDAGjarVEUJDeR4bWVluATHBwUMBYUJAOrVbti052uwNBEHA4XBiNOhwOFwcPFvHTWzU6nRZRhI4OJ42NzX7veTweoqMj%2fXKoAFTthGPLOsnhliFqKEzeBiqj4lk9iSCSJKLRqJFlkGUZi6U1QLClxUp9fVNnjmrU079%2f5K9YVuDGDWu35Vir1d5pmErCYAh0zhs32gLGrNYOHA5XF8lUaLVq37PT6SYiIoS1axd2fUbZp6fValCpJJxON9HRvbstNtwRlwvg8J%2fg5nwhMTDli84jl4Ked8RKSDBTWHgOlUqiqKiCmTPT%2fATz8%2ffzwQf7AC+zZk1i1ao597yoWq2itLQam83hR4Iff2zgypUmJElCq5WIje3jb2yXbV6vF+FmTRmoqLiExdKCIAiYTHqiosLR6dT06hXMtWvN2O0OBgwwB5Sna2oasFhakSQxoB%2fys7CUwLfZ4LJ1lnZ14fD0bggdpHhUT03Sp04di0ajQq1WUVBwhq++OukTKiqqYPfuo77k%2fPa+wb1Ao1FRWXmJd9%2fdhdvt8VWj1q37AputA5fLTVJSf5KSov30tFoNxcWV5OV97Ru7csXChg1%2fx+Vy43A4efDBeCIigjEa9UycOByn001bm42NG3fR1mb36R05UsLs2W8xc+Yb5OTkIct3eanZWg%2f7n4P2f3cm5YIIo9+EsEFgvXLbox7cVsXDekoEGTEikdmznyAvbx8Gg47c3Hy2bStApRKpqKjDbndis3WQmfloQPn1XmA06snP38%2fRo6VERYVTW9vAtWvNiKIIyLz88tRu9QwGHevX7+SbbwoJDw%2fmwoVLNDe3IQgiBoOa+fNv6S1YkElhYTlVVfUcOnSasrJq+vePwmq1U1l5CbvdiU6nYdmy57o9znV%2ftPoOLBdAowZkECT4%2fm0oXP2TUl0bpL0Pg+cpXtYTCAKwfHk2JpOBzz47iMXSysmT%2f+JmjmI06snOzmDFiudvS2RlX8fdZgvyJcFOp4vWVhuSJGG3OwIWdTicTJ06DoNByyefHKC0tMbXEe%2fVK5jXX8%2fuloQOh5Pnn3+clhYbO3cW4PHI6PUaAMzmXqxcOcfXJASIigrjvfeWsmbNJ5w+fY6amltXYDQaFVFRYSxZ8ixTpoy+5ddOF21tdkRR9OVD%2fumTt7NT7nTd3AXoaAiUcwIuJYL0KIKIosCiRdPIzBzHsWOlXLzYCECfPuGkpj7AkCFxfsqJidFs3ry0qyKk8VV8MjPHkZwciyAImM2B96Pcbhm9Xs2qVXPIyBhBYeE57HYnMTGRpKen3PFOldvtISQkiJycF3jyyVTOnKnE6XQzcGBfHntsBJGRoQE6cXFRbNnyOkVFFZSWVtPU1IJGoyIxMZqxY4fSu3eIn%2fz06Y8ydOgABEEgMjIs0AjzeJi24873sHy%2fHk7oM1rxsJ5EkJuIjo4gO%2fuxX1QOCzMG3H0CiI83+%2fUvuvUfT2e0GTt2CGPHDrlrg29WodLTU0hPT7krHUkSGTMmmTFjkn9RNiGhn18%2fJPBsGAMJMYrn3G9JugIFCu4ygvxWcDrdWK0O3+v%2fTq%2fjv9ZToOB3RZAnnhhFTEwkoigwYMDdN9SysiYwcmQisuwlOTlW+dYU%2fN8gKP9qokDBnfGfAQA9nOAwz2UemwAAAABJRU5ErkJgggo=%22;_2f=%22data:image%2fpng;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAGlCAYAAABAwstlAAANMWlDQ1BJQ0MgUHJvZmlsZQAAeJyV13k0lG0fB%2fDfLIxlzDDGHkb2XWQPWSJL9mwpMXbDTAyplCUpRJZQtKBoU5RIJKqHLAnJklBUZCmFSJZ5%2f5Dqfc553ue81x%2f3+d2%2f+9znuu77nM%2f3OhcAXsuTRqMgASA4hB5qb2ZEcnF1I2F6AAM44AMsiHqSw2iGtrZW8I9jvgcQAABdip40GiUc3ZFJftCtapBvLz7n36D0z+8BAAAu1MXVDQChAABEv7V6KwAQvdZqRwAg7qfT6AAIfwAgkv09vQEQUQCgEOpobwyAuAoAOL+1ugoAcF5rdRMA4CLIfnQARB8AMyHEOyAEADMFwKzv7RNGBsApAIC3dxg5GACXBgDWwcFUbwDcWwCQIdNC6QB4FgBQdHF1I60teVcSwGYBABbL3739WQAVBQAyO373xO8B8HoCFKb87s3aAwIAELztYb5qqgAAgMAaATANMRizUgCYDICVdAZjqZDBWLkEgBoAqKeQw0Mjfv4vBKIN4N%2fu177550AhAJAACAlEMfIgKgodxXSEOQYTx3KU1YS1ge04+wlsIsdJXCWnP1c6IZ07g3iaJ4s3iy+Hv0GQKpS3IU%2f4vEgTKVyscOMl8XbJQ1LF0p2yR+RuyPcoxindVO7fdFz1jtob9ZMalZrD2qk61bqjepn6Dw0mDLONHht%2f3pZr2mg2Y37RosVyfkeh9XObDtsOu077ZcfrO7udepx7Xfrc0Ltuuw%2fsHtwz5PFm71svLPm+93ufD76jfmP+HwPGg3goj4I%2fhXymTtO+7PsaOhM2R58L%2fxYxv38h8vuBxYM%2fDi1HLR9eiZaN6Y5DHEXGo46hE5iOM5%2fAJLIksSaznWRPwaZynMKl4dM5M7gyCae5s4jZPDm8Z%2fjO8ucK5AmeEzq%2f4YLwRZF80QJSodiljZfFiySKJa9IX5W+JnNd9obcjckSyk2FW4qlymUqtzfd2VSuendzhXqlRuX8vYgqzfta1To1ug+21G55qPdwtS663uDR1seGT4z+Mm5AN8Q3bntq2mTWbN5i3srWmvzMss3quXU7rv1Uh22n3Qv7LkJXxkuHbseenb28vTl9zq9c+t1eC77OG3AfdB%2fa%2fUbkzcW3HsN7R8RGCt95vSd%2f8B6VHC0e8%2f3oN+4%2fITtxfTJwKugT5bPi51vTIV+oX2kzm2buzIbOhX2jz6vPVy5EfI9cPPDjwJLOUs3yoZWoVb3VhwwGAEIciUN+QbWibzBlMkdh%2fFgcWY3ZNrNLY6U5+HF8eH5Ofi4eghS3DFGLx4p3D18Yf6pAqWCr0Lgwt4iGqB%2fpjNhTcYSEnuQ+qdvS07IychT5GkWUkqFyusqwqqxawuZeDTlNmlaDDp9u5JZn+rwG1K2PjSSMD5l0moqYRW6vNV+03GTlsyPLutMWZ2dmH+lQ5PjSic15q8s+1%2fNujbumd4vusfE4uLfQs8Fr3JvHx8DXxe+If35AfeBg0GIwd4g81YTmvy8qNC2skF4R3hTxev9E5PxB1CGuKNJhhSPq0VtjLGNt4nYd3Rvvc4ySQD8eeiImMSbpaHLiyYyU5NTcU2fTctLTM85lZpzOzjqTfTXnyplbZ6%2fm3sgrPffg%2fIMLDRef5XcWdBV2Xeq6%2fLroffHYlZGrH65NX%2f96Y7rk882ZW9Olk2VTt8fuDJeP3O2v6Kxsvldfde9+afW5mowHMbXBD3fVWdZveST3mPB48cnbv1oa7jZmPg1tcmjWaBFqYbT2P7vblvTcrV28fbSjvPPwi21duK7Bl%2fndgT1qPSu9bX2Zr3b3y%2fbPvq4eiBu0HCIODb259jZsWHcEPdLy7vT7PR+kP0yNVo%2fFfrQY5xkfnLg8SZlSn1r91Pw5Y3rXF4kvU1%2fLZ6JmzeYIc33fiuapC9rfUd+fLqb%2f2LUkvvRpuXIlZtWcwctgAMBRRCTyIEoXVY0+zGTAVMcciznGYsrSwJrAdpw9CWuBbeVIwaXgUzltONu50ggZ3JnETB5Hnpe82XzZ%2fGcEcgXzhPI2nBN2Fx4UuSiaTyoQK9hYIH5J4rJkkVSx9BWZq7LX5ALkJuSvK5Qo3lS6pVyqUrbptuodtfLNd9UrNSo1K7Uitb5rV+tU69ZseaBXq39Ef9Wgbmu94SOjx8ZPTOK3obc1mDaaPd3eZN5s0WKZbIW1erajzfq5Tbttmh2nXaf9C4cux5c7e5yynXmde136XF+59e%2fKcxdyH9g9uOeNx9u9bz0LvMS8RsjvvN%2f7fPAt9pNaS5DAiaAbFAXK1H+lyOyvFKk6oHVg8eCPQ0tRy4dXjqxGM2IhDvkrSTAnMIksic1JFsnsJ7Ep2FSOU%2fg0znSuX1nCm8N3hv9nlmz4M0sKRy6RL4sXSRRLXZFaT5MShZuKt5T+yBK1is2V6vc0qzTva1Vr1+g+0K3d8lC%2fTv+PHNnWaPrUtMmseXuLeavls4jnG9utO2w7bV%2fYdR3ulutx6nXui+tXfu02kDCk9iZxWH3k5HvvUd2x9PGAycBPlGnq16Q5t%2flTi8kr9gwGwNreBwDArAGQLQ%2fglAvgUAiQIA8g7QHAexXAlgPAURuQTCKA1KMBwkJvff8ABHCCMCiBEbhCGKRBGXxHkBCWiEjEVcRzxBgSjzRDxiJrkcsoPVQsqhG1jBZDu6KL0d+YTJmOMZUyTTObMRcwj2J4MO6YWhYMizZLPMskqw4rlbWeTZEthq2KHccey%2f4KS8SGYD9ybOM4yjGM88Q9xqPwvvgpTjvObM4VrkSuGYIOoYhbk7uIe5roQVzgCeCp5JXnfcrny4%2fhvy4gKbBfYE7wvJCZ0OyGfGEJ4SgRhEiFaCBJjNQvdnrjxo0x4njxdol0yZ1SglIj0jdkjGWuyRrJcckNy5crHFd0V1JTxiqPqfy1qVA1Ts17s5m6gga3xrLmqFaONk67XqdMt2DLab0T+tEG+7fuM6QYBRj7m%2fhvCzINMaNvP2Qeb3HKMs%2fq2o4q62abAduv9hgHEUetnQ5ONOdUl1uuHW6z7vy79ff4eqTtrfH8SObzNvM54FsSwB9oG5REaQhBUg1psfuehDHTLcMzIiUOUA8+iGI77HakJJoR6xiPPOaecO8Ed+K+pM6UrNTFNI%2f0xkzl07k5YWfe5TrkNVy4lS9ZcP4SXzHnldRruOunbuaUCpddvqNYYVLZWeV5%2f2st38OSeqMn9AZ8Y0mTRWtSm+Lzzo6IrsZuWq9QX9OA1GDfm6Rhg%2fclo94fRcf7PzlN837pncmd81iYWqxYimbwMxgAgAQ24ANZMAAXCIcsqIIhBAahgvBApCLqELNIOaQHMhf5EoVH7UCdRLWhOdA26Cz0ayYSUwBTGdN3ZmPmU8yvMJKYcMwTFgKLN0sVKzurO+stNjTbHra77GzsZPY6LA+Whm3jkONI4ZjCWeFK8Rx4Kr6HcyvnZS4cVwTXa4Ip4TY3iTuDe5UYRvzEE8gzwUvhneGj883zHxRACJwUFBS8LqQt1LjBacO4cIyIgEilqJ3oBClBTEqsaWOIOJ%2f4QwmyJFbykVSItKj0C5lEWSPZFbka+SgFPYUFxTqlE8qOKmIq05vqVNPVAjebqIuoL2l0a97XOq8dq+On67xFT09ZX8yAsBVtiDKcMfpqPG0yuW3UdNZscvs3C6Ql0YpvxyZrfRsbW3u7IPsDDnmOd3Y+c3rtvOxKdFPeZe2+b%2ffZPQ0eY56sXipkf+9cnzrfL%2f6yAT6BOUHdwUIhO6l5tI+hMmER9OYI4f1hkS0HxQ+lRk0ccY1uitWIK4onHEs9TjiRncSfnJeinvo8zSf9R2ZKlmb2hzMXcgPP7bwgm89UMHXpcVHFlbPXEm6Qb7qXmt7WKt9coXRP8b5MjWStTJ3KI4Mn2xvsnlKa97Wmt+W3P+gc6mL0iPbp9XsPJA9Vv516J%2fDBaCxm%2fOrk+8+CX3xnLsyNLsgshixVriIYDABgBk4QBiNwhTQogxfr9tfdr6lH49Gu6G9Mpky5P72vYtxZRFniWSZZHVnr2RTZzrHj2GPZF7Ah2I8c3jhP3Du8L36KM4xzhSuRwEso4tbkbiF6EBd40n6ZthaY++nZVgQhUvHTst2a5J+OI2SN%2fjT8W%2fBPvy+063XKftv9Lfef3f4vtX7DAfyBtn9XG9H%2fd7dx1%2f+Ue1L1t9xs5nW757XX9V7OXPdbQlgXXF61brjm6JriR%2f3rjpvHW5Oe%2fdWW%2fbyzI+KFcFdjN62nrDehr6k%2fYkBqMGjI5E3SsMHI8Xde70s+zI92fRQdD5own5SZwnxy+lw8nfDF7+v2GblZ9tnPcx3fyuezFxwXpr7HLxr9kP4xuhS9zL98YYVrJX5lYfUyI5nBAFg7LwEAAJsxlUINJVkZm%2fzL4e7%2fHcGU8PU5kACA9QnZ6QAABACQCaCbOwIAEQB0wBioQAEqhAIJrMAYTH5eSUD+9SQAYO0sBwDAzAlwzhkAoO77oZi%2fz0v3iaQDABhTaQdCA%2fz86SRDGo3iQzKmBtPC6T6hCiTzELKSAklVRUUdAOA%2f67wHk5DqTvYAAA7ISURBVHic7d1NjNz3Xcfx78w+2Y7tJo5rjEOVh6YoNaWAcqgSIiFURYVWEEJIT9wRF4SK4AZCQoJLIwWJCxcuHCo1TaJIqE3CgyrIg+K2qKVpm0DzUMWpHSdO4ti7ftjdGQ6zf+9%2f%2f95N7Zm1vZ%2fk9ZL+mp3Z2ZnxYd%2f6%2fn7z33EVAAAAAAAAAAAAAABsJb0P2fMCm2d4pZ%2fwSoSj+xy9DW7f6P7A1deN00bXL2vELlccuo%2fbX7mtHavu9cv5eoDJDda5Pqy1sepe31SbHYj247Uj1V%2fnst%2f6md4GjwFsDetFqTkGrWO9729auKY364HqwumpX1VTtRqnqc71dtDWm7aAq2%2fY+bq53o7Ucufr5noTs+7jjG2zgtVEph2n5uuZqpo6cOCOj+39yK2fn5nZ8dler39Tr9ff1+v1rtmk5weukOFwOD8cDo4NB4OfnFta+Pe33n3x8SNHDh2uUagWazVayzVqQzdeY9uMaaY9ITWxml45Zm644c4b9u05+Bcz03NfrOpNbcLzAVvKcHlx8czXjh7%2f%2fpePHDn0eo2itdQ6lmvt0nFskwarvYxrh2q6quYO3vrFz+%2fc+dG%2fr15v54TPA2xxw+Fw%2fuTJo1964aWHH6+qszUKV3O0l41jLw8nmXg2itVMVW3%2f9ME%2f%2fKPt26%2f%2fcq%2fXm5vgOYAQvV5vdnZ21xf2XPfx08feev75zrc3ZQ9rkgmrvQxsQjVTVdtu+%2fh9X9i1a%2f8%2f9nq9NY9%2f8y37655776zP3HFb7d+%2fp3bs0DJIs7Bwto4efbuee%2faFeuzRZ+qVl4+u+f5wWIMTJ177k%2f995bFvVNWZGk1bZ2t1edhMW5ds3GB196xmaxSruX37fu2mGw%2fc+a%2ftDfXp6an60z%2f7%2fbrv%2fruq3++v%2f4hAnMFgUA8%2f9FQ9+MAjtbS0fP724XA4%2f%2fJr3%2fzd48d%2f8GqNonWmqs7V6r7WWPtZ4y4Jm2A1pyrM1Cha2z9x02%2f%2f1fT07K82d5yenqoH%2f+GP6+7P3V6dgQsI1+v16pc+dWN9+lduricf%2f04NBsPm9tkd266%2f9o03v%2feftbpv1d58rxpjmThJsJpTF2aqaq6q5vbu%2feWb9u659e+qeufHqC%2f9+R%2fU3Z+7fcynARLccMPe2r17Rz3z9A%2fP3zY9PfuJhbMnvnHmzPH3au27hGOf4jDO+qx7GkOz2T67b89tv9U+deHmW%2fbXffffNc7rAsLcd%2f9ddfMt+1u39Kb2XX%2fw7qraXqvbRu1zNC95yTXJhlL77PWZqpqdm939G+073HPvnfas4EOi3+%2fXPffeuea27XPX%2fXqNVmCztTrcTNWFf5J3cc8x5mtb7x3CuX5%2f+hfad%2frMHbeN+fBAou7vfH9q5kBVbatRsGZr7YR1ycYNVvtPcM4vCfv9qb3tO+3fv2fMhwcSdX%2fnp3pT19dowmpOe2omrO4nuFyUcfewmssmXNNVNdPr9be37+g8K%2fhw6f7O9%2fpTzXTV7F+NHauqyZaE7T2sZsoC6Gomq+a4Ypvu3Y+D6XcOgK7uR0t1+3HRJt10735CA0BX+93Bsaerqsmmom4lncYOrGe9yeqKB6vqwkkLoGviUDUmnbAAfpaN3hG8ome6t1+ICQvYyHr%2fW9ZVWRIC%2fCybthoTLCDGJKc1AIzrii4Ju2tRAQPez0a9uGJ%2fSwhwsd6vGxfdFHtYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEECwghmABMQQLiCFYQAzBAmIIFhBDsIAYggXEmCRYw84BsJFN6cU4wRIo4FJ1mzF8n+9taNwJS7CAzXBJLbGHBcTYzGCZuoD1bFobNnXCGg6Wz7SvLyyc3cyHB7a47u%2f8YLB8trZQsAY1ejGDqhouD5beaX%2fz6NG3J3x4IEn3d355sHhi5cvmzbpBTfDG3STBGrReSFXVcHn53BvtOzz37AsTPDyQpvs7v7R05q26MFLdy4u2GUvCwcqxPL9w7L%2fb33js0WdqMBis%2f1PAB8pgMKjHHn1mzW2n5o8+X1XLreOKnofVPflr0D6OvvU%2fh4bD4flCvfLy0Xr4oafGfW1AkIcfeqpeefno+evD4XBw7Pj3v1udTrSOS47XJOdhtZ94qaqWTp16%2fY35hWNPt+%2f44AOP1LcOvTjm0wAJvnXoxXrwgUfW3HZq%2fsi35+ffOFYrfajVKasdrEsyNebr61fV9MrPz6wcs1U1d%2frsu0f2XveLv9nr9aerqgaDYT35+Hdq9+4d9cmDH6terzfmUwJbzWAwqK999b%2fqr%2f%2fyn2tpabl1+%2fLZH7%2f6xD8tLs6%2fXVWnqmqhqs5U1dmqOldVi7Uar4s2TrB6K0d%2f5ZiqUbxmq2rm3LmTg15v+p1dOw%2fc3utVb%2fTih%2fXM0z+s%2f%2fi379bi4nJds3Nbzc3N1szM9BhPD1xNCwtn67XX3qzHv%2f7t+tu%2f+Up9%2fV8O1WCwOiwNh8Ph60cOfeWdd%2f%2fvxaqabx1nVo52sC5pyhpn3OnV6mQ1W1XbqmpnVe2qqo9U1bVVteeWGz%2f7O9dfd9vv9YxU8KExHA6Hbx7%2fwROvvvbNJ6vqnap6d+XyRFW9V6NJ63SNJq1mmXjR0Rp3wqoaTVdNvJpjujneOfHK4RrU8Z07f%2f6TzfIQ+OAaDJbOHf7pcw8fPvLsszVaBp6q1emqvSRcrFGsmr2sizbuHlbV6rKwuZyq1YD1q6p%2fcv6nx989+ZPnt81du3N2dtfPmbbgg2c4HA7eO3n4+R+%2f+sRX3z3x0ks1CtXJ1uXCytGOVROsSzJuQJowNRPVtqrasXLsWjl2ty6v2b597%2f6P7jn4qd07D9w6PbP9uumpuWv6%2femZMZ8fuEoGg6XFpeWz84uLp0+cPHX45Tff%2ftGPTp8+%2fmaNlnpNqN5rHfMrtzVLwXO19rysizZJsLob7ttWjmtqtKe1s1ZitfL19pVjbuX+zbuMzZRW5dMjYCtqn5nenNK0XKNpabFGETpTq0u%2f9nTVLAtP1yhUzZQ11qkN4+4tNS+613rh7eVhr%2fWPa8a%2fsyvHbK0Ga7rzc1XjRxS4fAaty2Y6WqrR736zN7VQq9NU83V7qmqfyjDWeViTboZ3a9trHe1gnavRP+p0rR+s9pQlWLD1dKerQY1+55upqZmymv2qM63Lc7X6juBYoWpMEqzmxW%2f0vabCzT%2fqdI2WjLM1OiWiWU62gyVWsDW1%2fySv2TBvJqxmgmomrTO19iTRJljt0xjGitZmTVhVo9gsdm5vV3i2RtGaqbXTVfPuYjtW9rLg6lvv0xWaCamJTxOi9v5Uc9nEqrnfRB8tUzV5sKounLQWa+3oOFOre1hNrJrztjaarkxacPWtF5b23xA3IWoum32q9qkL7VhNtBys2pxgNdqbcu1gNWNjO1TN0d5sb09VggVbR3sqan7P25vn3T9ubp9n1XSgasJYVW1+GLonk645kbTWn6zaobIUhK2ne1pD1doYtb9u9qgm+hiZjVyOSaZ7TlW%2fLlz6rffOoKkKtrbup4a2V1ODdW6rWrtdNLHLGYn1YtTdrxIqyNKelNofk77esemuVCy6z7NRqMQLtq71%2fvfmsf4H53FttUBstdcD+D9HAQAAAAAAAAAAAAAAIN3%2fA%2fPNWgCA%2fF3MAAAAAElFTkSuQmCCCg==%22;_30=%22data:image%2fpng;charset=utf-8;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAIAAAC0D9CtAAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGiSURBVHjaYvz%2f%2fz8DiYAFU+jhg5cXLtx9%2f+4LLy+nlpa8hpYsIyMjTj03rj%2fu71l74fxdZEEFRfG8wkBrG224CCPcbfv2XKivWfjr1x+s7snM8U1IcoOwmeA24NEABNOnbN698yyKHqCTIBrcPU2WrKiIjHYEsh2c9BctK0tMcYeomdC37sePXyAW0G0P7r8wM8yBoFs3n%2fwHgwP7L%2f79+xfI+Pnzl6VpHkR27+7zQBGQPcie3rr5JIRh76DHxASS3bHtzN8%2f%2fyCCF87fgbrt%2ffsvcD3Ll+4%2feOASnPvg%2fsuO1hVwLjACoHqA8QAXBfrB1k4HOaDjEl3hXF4+LqgeYMTBRZNS3CFOAtoAEUlIdGNmgQaVlrYcVA8wpoHmQUT377v469fvTRuOR4W1zZi25cf3X6DAAPuHi4vd1l4XEadHj1wtypsB0QY0Fe5pZHZOvn9svAsifoBJAxjTEDZcETLbw8s0Js4ZPe0AATCmgRH35vUn5BQAdFJSqgdQAzylMqLlBWBMHztyDRgPoHTNxwX0NNAP%2fPzcyGoYycg%2fAAEGABYVzxqE3YcJAAAAAElFTkSuQmCCCg==%22;_2b=document.createElement(%22div%22);_2b.setAttribute(%22id%22,%22clipperz_bookmarklet%22);_32=%22%22;_32+=%22%3Cstyle%3Ediv#ClipperzBackgroundDIV{width:290px;height:420px;padding:20px%200px%200px%2020px;margin:0px;border:0px;background-color:transparent;background-repeat:no-repeat;position:absolute;z-index:20000;top:40px;left:40px;background-image:url(%22+_2f+%22)}%3C%2fstyle%3E%22;_32+=%22%3Cdiv%20style=%5c%22border:0px;margin:0px;padding:0px;padding-left:10px;%5c%22%3E%22+%22%3Cimg%20style=%5c%22padding-top:5px;%5c%22%20src=%5c%22%22+_2e+%22%5c%22%3E%22+%22%3Ca%20href=%5c%22javascript:closeBookmarklet();%5c%22%3E%22+%22%3Cimg%20style=%5c%22padding-left:28px;padding-bottom:10px;%5c%22%20border=0%20src=%5c%22%22+_30+%22%5c%22%3E%22+%22%3C%2fa%3E%22+%22%3C%2fdiv%3E%22;if((_29!=null)&&(_2a==null)){_32+=%22%3Cdiv%20style=%5c%22width:255px;border-top:1px%20dotted%20%23336;%5c%22%3E%22+%22%3Cdiv%20style=%5c%22line-height:10pt;margin-right:10px;margin-top:5px;padding:5px%2010px;color:%23666;text-align:left;font-family:sans-serif;%5c%22%3E%22+%22%3Cp%20style=%5c%22margin:0px;font-weight:bold;font-size:10pt;font-family:sans-serif;%5c%22%3EHow%20to%20add%20a%20new%20card%20or%20a%20direct%20login%20to%20an%20existing%20card%20for%20this%20website:%3C%2fp%3E%22+%22%3Col%20style=%5c%22padding:0px%200px%200px%2020px;font-size:9pt;font-family:sans-serif;%5c%22%3E%22+%22%3Cli%3ECopy%20the%20content%20of%20the%20text%20area%20below(Ctrl-C)%3C%2fli%3E%22+%22%3Cli%3EGo%20to%20your%20Clipperz%20account%3C%2fli%3E%22+%22%3Cli%3EClick%20%5c%22Add%20new%20card%5c%22%20or%20select%20the%20related%20card%3C%2fli%3E%22+%22%3Cli%3EPaste%20the%20direct%20login%20configuration(Ctrl-V)%3C%2fli%3E%22+%22%3Cli%3EComplete%20and%20review%20the%20details,then%20click%20%5c%22Save%5c%22%3C%2fli%3E%22+%22%3C%2fol%3E%22+%22%3C%2fdiv%3E%22+%22%3C%2fdiv%3E%22;_32+=%22%3Ctextarea%20id=%5c%22bookmarklet_textarea%5c%22%20style=%5c%22border:2px%20solid%20%23333366;font-family:sans-serif;font-size:8pt;color:%23336;width:240px;height:135px;padding:4px;background-color:white;margin:0px%2010px;%5c%22%3E%22+sj(_29)+%22%3C%2ftextarea%3E%22;}else{if((_29==null)&&(_2a==null)){_32+=%22%3Cdiv%3ENo%20login%20form%20has%20been%20found%20on%20the%20page%3C%2fdiv%3E%3Cdiv%3EGet%20some%20help%20%3Ca%20href=%5c%22%23%5c%22%3Ehere%3C%2fa%3E%3C%2fdiv%3E%22;}else{_32+=%22%3Cdiv%3EAn%20error%20happened%20while%20processing%20the%20page%3C%2fdiv%3E%3Cdiv%3EGet%20some%20help%20%3Ca%20href=%5c%22%23%5c%22%3Ehere%3C%2fa%3E%3C%2fdiv%3E%3Cdiv%3E%22+_2a.name+%22%20-%20%22+_2a.message+%22%3C%2fdiv%3E%22;}}_2b.innerHTML=%22%3Cdiv%20id=%5c%22ClipperzBackgroundDIV%5c%22%3E%22+_32+%22%3C%2fdiv%3E%22;document.body.appendChild(_2b);if((_29!=null)&&(_2a==null)){_31=document.getElementById(%22bookmarklet_textarea%22);_31.focus();_31.select();}};getLoginFormConfiguration=function(){var%20_33;try{_33={};_33.page=pp();_33.form=fp(flf(document,0));_33.version=%220.2.3%22;lfp(_33,_cble);}catch(e){lfp(_33,e);}};getLoginFormConfiguration();', 'CrossWindowsBookmarklet_TEST');
58 console.log("runBookmarkletScript"); 55 console.log("runBookmarkletScript");
59}; 56};
60 57
61init = function () { 58init = function () {
62 MochiKit.Signal.connect('newWindow', 'onclick', newWindow); 59 MochiKit.Signal.connect('newWindow', 'onclick', newWindow);
63 MochiKit.Signal.connect('runBookmarkletScript', 'onclick', runBookmarkletScript); 60 MochiKit.Signal.connect('runBookmarkletScript', 'onclick', runBookmarkletScript);
64}; 61};
65 62
66MochiKit.DOM.addLoadEvent(init); 63MochiKit.DOM.addLoadEvent(init);
diff --git a/frontend/gamma/tests/tests/Components/crossWindowsBookmarklet/index.html b/frontend/gamma/tests/tests/Components/crossWindowsBookmarklet/index.html
index 10e2f2e..50928d2 100644
--- a/frontend/gamma/tests/tests/Components/crossWindowsBookmarklet/index.html
+++ b/frontend/gamma/tests/tests/Components/crossWindowsBookmarklet/index.html
@@ -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
29<html> 26<html>
30<head> 27<head>
31 <title>Cross Window Bookmarklet execution - test</title> 28 <title>Cross Window Bookmarklet execution - test</title>
32 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> 29 <script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script>
33 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script> 30 <script type='text/javascript' src='../../../../js/JSON/json2.js'></script>
34 31
35 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script> 32 <script type='text/javascript' src='../../../../js/Clipperz/YUI/Utils.js'></script>
36 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script> 33 <script type='text/javascript' src='../../../../js/Clipperz/YUI/DomHelper.js'></script>
37 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script> 34 <script type='text/javascript' src='../../../../js/Clipperz/Base.js'></script>
38 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script> 35 <script type='text/javascript' src='../../../../js/Clipperz/Date.js'></script>
39 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script> 36 <script type='text/javascript' src='../../../../js/Clipperz/DOM.js'></script>
40 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script> 37 <script type='text/javascript' src='../../../../js/Clipperz/ByteArray.js'></script>
41 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script> 38 <script type='text/javascript' src='../../../../js/Clipperz/Logging.js'></script>
42 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script> 39 <script type='text/javascript' src='../../../../js/Clipperz/Async.js'></script>
43 40
44 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script> 41 <script type='text/javascript' src='../../../../js/Clipperz/Signal.js'></script>
45 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script> 42 <script type='text/javascript' src='../../../../js/Clipperz/Style.js'></script>
46 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script> 43 <script type='text/javascript' src='../../../../js/Clipperz/Visual.js'></script>
47 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script> 44 <script type='text/javascript' src='../../../../js/Clipperz/Set.js'></script>
48 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script> 45 <script type='text/javascript' src='../../../../js/Clipperz/KeyValueObjectStore.js'></script>
49 46
50 <script type='text/javascript' src='./CrossWindowsBookmarklet_test.js'></script> 47 <script type='text/javascript' src='./CrossWindowsBookmarklet_test.js'></script>
51<script> 48<script>
52 Clipperz_IEisBroken = false; 49 Clipperz_IEisBroken = false;
53</script> 50</script>
54 51
55<!--[if IE]><script> 52<!--[if IE]><script>
56Clipperz_IEisBroken = true; 53Clipperz_IEisBroken = true;
57</script><![endif]--> 54</script><![endif]-->
58 55
59 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/clipperz.css" /> 56 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/clipperz.css" />
60 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/compact.css" /> 57 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/compact.css" />
61 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/ytheme-clipperz.css" /> 58 <link rel="stylesheet" type="text/css" href="../../../../css/clipperz/ytheme-clipperz.css" />
62 59
63</head> 60</head>
64<body> 61<body>
65 62
66<div id="tableWrapper"></div> 63<div id="tableWrapper"></div>
67 64
68<ul> 65<ul>
69 <li><a href="#" id="newWindow">open window</a></li> 66 <li><a href="#" id="newWindow">open window</a></li>
70 <li><a href="#" id="runBookmarkletScript">run bookmarklet script</a></li> 67 <li><a href="#" id="runBookmarkletScript">run bookmarklet script</a></li>
71</ul> 68</ul>
72</body> 69</body>
73</html> 70</html>
diff --git a/frontend/gamma/tests/tests/index.html b/frontend/gamma/tests/tests/index.html
index 75b8e95..9775f93 100644
--- a/frontend/gamma/tests/tests/index.html
+++ b/frontend/gamma/tests/tests/index.html
@@ -1,48 +1,45 @@
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<html> 26<html>
30<head> 27<head>
31 <title>Complete TEST suite</title> 28 <title>Complete TEST suite</title>
32 <script type="text/javascript" src="../../js/MochiKit/MochiKit.js"></script> 29 <script type="text/javascript" src="../../js/MochiKit/MochiKit.js"></script>
33 <script type="text/javascript" src="../SimpleTest/TestRunner.js"></script> 30 <script type="text/javascript" src="../SimpleTest/TestRunner.js"></script>
34</head> 31</head>
35<body> 32<body>
36<script> 33<script>
37TestRunner.runTests( 34TestRunner.runTests(
38 'Clipperz/index.html', 35 'Clipperz/index.html',
39 'Clipperz/Crypto/index.html', 36 'Clipperz/Crypto/index.html',
40 'Clipperz/PM/index.html', 37 'Clipperz/PM/index.html',
41 'Clipperz/PM/DataModel/index.html', 38 'Clipperz/PM/DataModel/index.html',
42 'Clipperz/PM/UI/index.html', 39 'Clipperz/PM/UI/index.html',
43 'Clipperz/PM/UI/Web/index.html', 40 'Clipperz/PM/UI/Web/index.html',
44 'Clipperz/PM/UI/Web/Controllers/index.html' 41 'Clipperz/PM/UI/Web/Controllers/index.html'
45); 42);
46</script> 43</script>
47</body> 44</body>
48</html> \ No newline at end of file 45</html> \ No newline at end of file