see ChangeLog
Monotone-Revision: 9054022ef1ca8aeba6e34842d27d9b94ce002b89 Monotone-Author: dev-unix.inverse.qc.ca Monotone-Date: 2006-06-15T19:34:10 Monotone-Branch: ca.inverse.sogo
@@ -0,0 +1,5 @@
|
||||
The default theme icons are derived from the icons provided as
|
||||
part of the Mozilla Thunderbird application.
|
||||
The licensing terms of Mozilla Thunderbird are available in the
|
||||
LICENSE-thunderbird.txt file.
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
2005-07-30 Helge Hess <helge.hess@opengroupware.org>
|
||||
|
||||
* mailer.js: use standard 'view' instead of 'tb.view' method
|
||||
|
||||
2005-07-22 Helge Hess <helge.hess@opengroupware.org>
|
||||
|
||||
* mailer-toolbar.css: fixed send and attach buttons to use 24x24 images
|
||||
|
||||
2005-07-22 Marcus Mueller <znek@mulle-kybernetik.com>
|
||||
|
||||
* mailer.js: added labels for error messages
|
||||
|
||||
* mailer.js: added validation of recipients
|
||||
|
||||
* layout2or3_xlib.js: added (currently used by UIxMailToEditor for
|
||||
height calculation)
|
||||
|
||||
* layout2or3_xlib.txt: added, contains documentation/license for
|
||||
layout2or3_xlib.js
|
||||
|
||||
* mailer-compose.css: fixed padding for table entries
|
||||
|
||||
* mailer.js: moved layout2or3_xlib JavaScript to own file
|
||||
|
||||
2005-07-21 Helge Hess <helge.hess@opengroupware.org>
|
||||
|
||||
* mailer.css: moved compose styles to own file, mailer-compose.css
|
||||
|
||||
* mailer-toolbar.css: fixed positioning for 24x24 icons
|
||||
|
||||
* mailer.css: moved toolbar to own file, mailer-toolbar.css
|
||||
|
||||
2005-07-21 Marcus Mueller <znek@mulle-kybernetik.com>
|
||||
|
||||
* tbtb_anais.png: new icon for Anais
|
||||
|
||||
* mailer.css: added tbicon_anais for Anais icon
|
||||
|
||||
2005-07-21 Helge Hess <helge.hess@opengroupware.org>
|
||||
|
||||
* mailer.js: fixed a Linux Firefox issue with using POST in
|
||||
XMLHttpRequest (must pass an empty string for a send, not 'null')
|
||||
|
||||
* mailer.js: fixed a bug with calling the opener on errors
|
||||
|
||||
2005-07-20 Helge Hess <helge.hess@opengroupware.org>
|
||||
|
||||
* mailer.js: use POST instead of GET for toggling the mail read flag,
|
||||
aded uixDeleteSelectedMessages() function to bulk delete mails from
|
||||
the selection
|
||||
|
||||
* UIxAppointmentEditor.js: properly use getDate() instead of getDay()
|
||||
for date comparison (#1478)
|
||||
|
||||
* UIxAppointmentEditor.js: properly validate startdate/enddate so that
|
||||
startdate is always before the enddate (#1478)
|
||||
|
||||
2005-07-18 Helge Hess <helge.hess@opengroupware.org>
|
||||
|
||||
* generic.js: added regex for email field checks
|
||||
|
||||
* uix.css: added .homepagefont class (as it was used in the deprecated
|
||||
uix.css inside Common
|
||||
|
||||
2005-07-12 Helge Hess <helge.hess@opengroupware.org>
|
||||
|
||||
* mailer.js: increased size of compose panel by 40px to avoid scrolling
|
||||
when recipients are added
|
||||
|
||||
2005-03-02 Helge Hess <helge.hess@opengroupware.org>
|
||||
|
||||
* generic.js: fixed a JS bug
|
||||
|
||||
2005-02-24 Helge Hess <helge.hess@opengroupware.org>
|
||||
|
||||
* generic.js: added query dict parsing and generation functions
|
||||
|
||||
* created ChangeLog
|
||||
@@ -0,0 +1,567 @@
|
||||
MOZILLA PUBLIC LICENSE
|
||||
Version 1.1
|
||||
|
||||
---------------
|
||||
|
||||
1. Definitions.
|
||||
|
||||
1.0.1. "Commercial Use" means distribution or otherwise making the
|
||||
Covered Code available to a third party.
|
||||
|
||||
1.1. "Contributor" means each entity that creates or contributes to
|
||||
the creation of Modifications.
|
||||
|
||||
1.2. "Contributor Version" means the combination of the Original
|
||||
Code, prior Modifications used by a Contributor, and the Modifications
|
||||
made by that particular Contributor.
|
||||
|
||||
1.3. "Covered Code" means the Original Code or Modifications or the
|
||||
combination of the Original Code and Modifications, in each case
|
||||
including portions thereof.
|
||||
|
||||
1.4. "Electronic Distribution Mechanism" means a mechanism generally
|
||||
accepted in the software development community for the electronic
|
||||
transfer of data.
|
||||
|
||||
1.5. "Executable" means Covered Code in any form other than Source
|
||||
Code.
|
||||
|
||||
1.6. "Initial Developer" means the individual or entity identified
|
||||
as the Initial Developer in the Source Code notice required by Exhibit
|
||||
A.
|
||||
|
||||
1.7. "Larger Work" means a work which combines Covered Code or
|
||||
portions thereof with code not governed by the terms of this License.
|
||||
|
||||
1.8. "License" means this document.
|
||||
|
||||
1.8.1. "Licensable" means having the right to grant, to the maximum
|
||||
extent possible, whether at the time of the initial grant or
|
||||
subsequently acquired, any and all of the rights conveyed herein.
|
||||
|
||||
1.9. "Modifications" means any addition to or deletion from the
|
||||
substance or structure of either the Original Code or any previous
|
||||
Modifications. When Covered Code is released as a series of files, a
|
||||
Modification is:
|
||||
A. Any addition to or deletion from the contents of a file
|
||||
containing Original Code or previous Modifications.
|
||||
|
||||
B. Any new file that contains any part of the Original Code or
|
||||
previous Modifications.
|
||||
|
||||
1.10. "Original Code" means Source Code of computer software code
|
||||
which is described in the Source Code notice required by Exhibit A as
|
||||
Original Code, and which, at the time of its release under this
|
||||
License is not already Covered Code governed by this License.
|
||||
|
||||
1.10.1. "Patent Claims" means any patent claim(s), now owned or
|
||||
hereafter acquired, including without limitation, method, process,
|
||||
and apparatus claims, in any patent Licensable by grantor.
|
||||
|
||||
1.11. "Source Code" means the preferred form of the Covered Code for
|
||||
making modifications to it, including all modules it contains, plus
|
||||
any associated interface definition files, scripts used to control
|
||||
compilation and installation of an Executable, or source code
|
||||
differential comparisons against either the Original Code or another
|
||||
well known, available Covered Code of the Contributor's choice. The
|
||||
Source Code can be in a compressed or archival form, provided the
|
||||
appropriate decompression or de-archiving software is widely available
|
||||
for no charge.
|
||||
|
||||
1.12. "You" (or "Your") means an individual or a legal entity
|
||||
exercising rights under, and complying with all of the terms of, this
|
||||
License or a future version of this License issued under Section 6.1.
|
||||
For legal entities, "You" includes any entity which controls, is
|
||||
controlled by, or is under common control with You. For purposes of
|
||||
this definition, "control" means (a) the power, direct or indirect,
|
||||
to cause the direction or management of such entity, whether by
|
||||
contract or otherwise, or (b) ownership of more than fifty percent
|
||||
(50%) of the outstanding shares or beneficial ownership of such
|
||||
entity.
|
||||
|
||||
2. Source Code License.
|
||||
|
||||
2.1. The Initial Developer Grant.
|
||||
The Initial Developer hereby grants You a world-wide, royalty-free,
|
||||
non-exclusive license, subject to third party intellectual property
|
||||
claims:
|
||||
(a) under intellectual property rights (other than patent or
|
||||
trademark) Licensable by Initial Developer to use, reproduce,
|
||||
modify, display, perform, sublicense and distribute the Original
|
||||
Code (or portions thereof) with or without Modifications, and/or
|
||||
as part of a Larger Work; and
|
||||
|
||||
(b) under Patents Claims infringed by the making, using or
|
||||
selling of Original Code, to make, have made, use, practice,
|
||||
sell, and offer for sale, and/or otherwise dispose of the
|
||||
Original Code (or portions thereof).
|
||||
|
||||
(c) the licenses granted in this Section 2.1(a) and (b) are
|
||||
effective on the date Initial Developer first distributes
|
||||
Original Code under the terms of this License.
|
||||
|
||||
(d) Notwithstanding Section 2.1(b) above, no patent license is
|
||||
granted: 1) for code that You delete from the Original Code; 2)
|
||||
separate from the Original Code; or 3) for infringements caused
|
||||
by: i) the modification of the Original Code or ii) the
|
||||
combination of the Original Code with other software or devices.
|
||||
|
||||
2.2. Contributor Grant.
|
||||
Subject to third party intellectual property claims, each Contributor
|
||||
hereby grants You a world-wide, royalty-free, non-exclusive license
|
||||
|
||||
(a) under intellectual property rights (other than patent or
|
||||
trademark) Licensable by Contributor, to use, reproduce, modify,
|
||||
display, perform, sublicense and distribute the Modifications
|
||||
created by such Contributor (or portions thereof) either on an
|
||||
unmodified basis, with other Modifications, as Covered Code
|
||||
and/or as part of a Larger Work; and
|
||||
|
||||
(b) under Patent Claims infringed by the making, using, or
|
||||
selling of Modifications made by that Contributor either alone
|
||||
and/or in combination with its Contributor Version (or portions
|
||||
of such combination), to make, use, sell, offer for sale, have
|
||||
made, and/or otherwise dispose of: 1) Modifications made by that
|
||||
Contributor (or portions thereof); and 2) the combination of
|
||||
Modifications made by that Contributor with its Contributor
|
||||
Version (or portions of such combination).
|
||||
|
||||
(c) the licenses granted in Sections 2.2(a) and 2.2(b) are
|
||||
effective on the date Contributor first makes Commercial Use of
|
||||
the Covered Code.
|
||||
|
||||
(d) Notwithstanding Section 2.2(b) above, no patent license is
|
||||
granted: 1) for any code that Contributor has deleted from the
|
||||
Contributor Version; 2) separate from the Contributor Version;
|
||||
3) for infringements caused by: i) third party modifications of
|
||||
Contributor Version or ii) the combination of Modifications made
|
||||
by that Contributor with other software (except as part of the
|
||||
Contributor Version) or other devices; or 4) under Patent Claims
|
||||
infringed by Covered Code in the absence of Modifications made by
|
||||
that Contributor.
|
||||
|
||||
3. Distribution Obligations.
|
||||
|
||||
3.1. Application of License.
|
||||
The Modifications which You create or to which You contribute are
|
||||
governed by the terms of this License, including without limitation
|
||||
Section 2.2. The Source Code version of Covered Code may be
|
||||
distributed only under the terms of this License or a future version
|
||||
of this License released under Section 6.1, and You must include a
|
||||
copy of this License with every copy of the Source Code You
|
||||
distribute. You may not offer or impose any terms on any Source Code
|
||||
version that alters or restricts the applicable version of this
|
||||
License or the recipients' rights hereunder. However, You may include
|
||||
an additional document offering the additional rights described in
|
||||
Section 3.5.
|
||||
|
||||
3.2. Availability of Source Code.
|
||||
Any Modification which You create or to which You contribute must be
|
||||
made available in Source Code form under the terms of this License
|
||||
either on the same media as an Executable version or via an accepted
|
||||
Electronic Distribution Mechanism to anyone to whom you made an
|
||||
Executable version available; and if made available via Electronic
|
||||
Distribution Mechanism, must remain available for at least twelve (12)
|
||||
months after the date it initially became available, or at least six
|
||||
(6) months after a subsequent version of that particular Modification
|
||||
has been made available to such recipients. You are responsible for
|
||||
ensuring that the Source Code version remains available even if the
|
||||
Electronic Distribution Mechanism is maintained by a third party.
|
||||
|
||||
3.3. Description of Modifications.
|
||||
You must cause all Covered Code to which You contribute to contain a
|
||||
file documenting the changes You made to create that Covered Code and
|
||||
the date of any change. You must include a prominent statement that
|
||||
the Modification is derived, directly or indirectly, from Original
|
||||
Code provided by the Initial Developer and including the name of the
|
||||
Initial Developer in (a) the Source Code, and (b) in any notice in an
|
||||
Executable version or related documentation in which You describe the
|
||||
origin or ownership of the Covered Code.
|
||||
|
||||
3.4. Intellectual Property Matters
|
||||
(a) Third Party Claims.
|
||||
If Contributor has knowledge that a license under a third party's
|
||||
intellectual property rights is required to exercise the rights
|
||||
granted by such Contributor under Sections 2.1 or 2.2,
|
||||
Contributor must include a text file with the Source Code
|
||||
distribution titled "LEGAL" which describes the claim and the
|
||||
party making the claim in sufficient detail that a recipient will
|
||||
know whom to contact. If Contributor obtains such knowledge after
|
||||
the Modification is made available as described in Section 3.2,
|
||||
Contributor shall promptly modify the LEGAL file in all copies
|
||||
Contributor makes available thereafter and shall take other steps
|
||||
(such as notifying appropriate mailing lists or newsgroups)
|
||||
reasonably calculated to inform those who received the Covered
|
||||
Code that new knowledge has been obtained.
|
||||
|
||||
(b) Contributor APIs.
|
||||
If Contributor's Modifications include an application programming
|
||||
interface and Contributor has knowledge of patent licenses which
|
||||
are reasonably necessary to implement that API, Contributor must
|
||||
also include this information in the LEGAL file.
|
||||
|
||||
(c) Representations.
|
||||
Contributor represents that, except as disclosed pursuant to
|
||||
Section 3.4(a) above, Contributor believes that Contributor's
|
||||
Modifications are Contributor's original creation(s) and/or
|
||||
Contributor has sufficient rights to grant the rights conveyed by
|
||||
this License.
|
||||
|
||||
3.5. Required Notices.
|
||||
You must duplicate the notice in Exhibit A in each file of the Source
|
||||
Code. If it is not possible to put such notice in a particular Source
|
||||
Code file due to its structure, then You must include such notice in a
|
||||
location (such as a relevant directory) where a user would be likely
|
||||
to look for such a notice. If You created one or more Modification(s)
|
||||
You may add your name as a Contributor to the notice described in
|
||||
Exhibit A. You must also duplicate this License in any documentation
|
||||
for the Source Code where You describe recipients' rights or ownership
|
||||
rights relating to Covered Code. You may choose to offer, and to
|
||||
charge a fee for, warranty, support, indemnity or liability
|
||||
obligations to one or more recipients of Covered Code. However, You
|
||||
may do so only on Your own behalf, and not on behalf of the Initial
|
||||
Developer or any Contributor. You must make it absolutely clear than
|
||||
any such warranty, support, indemnity or liability obligation is
|
||||
offered by You alone, and You hereby agree to indemnify the Initial
|
||||
Developer and every Contributor for any liability incurred by the
|
||||
Initial Developer or such Contributor as a result of warranty,
|
||||
support, indemnity or liability terms You offer.
|
||||
|
||||
3.6. Distribution of Executable Versions.
|
||||
You may distribute Covered Code in Executable form only if the
|
||||
requirements of Section 3.1-3.5 have been met for that Covered Code,
|
||||
and if You include a notice stating that the Source Code version of
|
||||
the Covered Code is available under the terms of this License,
|
||||
including a description of how and where You have fulfilled the
|
||||
obligations of Section 3.2. The notice must be conspicuously included
|
||||
in any notice in an Executable version, related documentation or
|
||||
collateral in which You describe recipients' rights relating to the
|
||||
Covered Code. You may distribute the Executable version of Covered
|
||||
Code or ownership rights under a license of Your choice, which may
|
||||
contain terms different from this License, provided that You are in
|
||||
compliance with the terms of this License and that the license for the
|
||||
Executable version does not attempt to limit or alter the recipient's
|
||||
rights in the Source Code version from the rights set forth in this
|
||||
License. If You distribute the Executable version under a different
|
||||
license You must make it absolutely clear that any terms which differ
|
||||
from this License are offered by You alone, not by the Initial
|
||||
Developer or any Contributor. You hereby agree to indemnify the
|
||||
Initial Developer and every Contributor for any liability incurred by
|
||||
the Initial Developer or such Contributor as a result of any such
|
||||
terms You offer.
|
||||
|
||||
3.7. Larger Works.
|
||||
You may create a Larger Work by combining Covered Code with other code
|
||||
not governed by the terms of this License and distribute the Larger
|
||||
Work as a single product. In such a case, You must make sure the
|
||||
requirements of this License are fulfilled for the Covered Code.
|
||||
|
||||
4. Inability to Comply Due to Statute or Regulation.
|
||||
|
||||
If it is impossible for You to comply with any of the terms of this
|
||||
License with respect to some or all of the Covered Code due to
|
||||
statute, judicial order, or regulation then You must: (a) comply with
|
||||
the terms of this License to the maximum extent possible; and (b)
|
||||
describe the limitations and the code they affect. Such description
|
||||
must be included in the LEGAL file described in Section 3.4 and must
|
||||
be included with all distributions of the Source Code. Except to the
|
||||
extent prohibited by statute or regulation, such description must be
|
||||
sufficiently detailed for a recipient of ordinary skill to be able to
|
||||
understand it.
|
||||
|
||||
5. Application of this License.
|
||||
|
||||
This License applies to code to which the Initial Developer has
|
||||
attached the notice in Exhibit A and to related Covered Code.
|
||||
|
||||
6. Versions of the License.
|
||||
|
||||
6.1. New Versions.
|
||||
Netscape Communications Corporation ("Netscape") may publish revised
|
||||
and/or new versions of the License from time to time. Each version
|
||||
will be given a distinguishing version number.
|
||||
|
||||
6.2. Effect of New Versions.
|
||||
Once Covered Code has been published under a particular version of the
|
||||
License, You may always continue to use it under the terms of that
|
||||
version. You may also choose to use such Covered Code under the terms
|
||||
of any subsequent version of the License published by Netscape. No one
|
||||
other than Netscape has the right to modify the terms applicable to
|
||||
Covered Code created under this License.
|
||||
|
||||
6.3. Derivative Works.
|
||||
If You create or use a modified version of this License (which you may
|
||||
only do in order to apply it to code which is not already Covered Code
|
||||
governed by this License), You must (a) rename Your license so that
|
||||
the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
|
||||
"MPL", "NPL" or any confusingly similar phrase do not appear in your
|
||||
license (except to note that your license differs from this License)
|
||||
and (b) otherwise make it clear that Your version of the license
|
||||
contains terms which differ from the Mozilla Public License and
|
||||
Netscape Public License. (Filling in the name of the Initial
|
||||
Developer, Original Code or Contributor in the notice described in
|
||||
Exhibit A shall not of themselves be deemed to be modifications of
|
||||
this License.)
|
||||
|
||||
7. DISCLAIMER OF WARRANTY.
|
||||
|
||||
COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
|
||||
WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
|
||||
DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
|
||||
THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
|
||||
IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
|
||||
YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
|
||||
COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
|
||||
OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
|
||||
ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
|
||||
|
||||
8. TERMINATION.
|
||||
|
||||
8.1. This License and the rights granted hereunder will terminate
|
||||
automatically if You fail to comply with terms herein and fail to cure
|
||||
such breach within 30 days of becoming aware of the breach. All
|
||||
sublicenses to the Covered Code which are properly granted shall
|
||||
survive any termination of this License. Provisions which, by their
|
||||
nature, must remain in effect beyond the termination of this License
|
||||
shall survive.
|
||||
|
||||
8.2. If You initiate litigation by asserting a patent infringement
|
||||
claim (excluding declatory judgment actions) against Initial Developer
|
||||
or a Contributor (the Initial Developer or Contributor against whom
|
||||
You file such action is referred to as "Participant") alleging that:
|
||||
|
||||
(a) such Participant's Contributor Version directly or indirectly
|
||||
infringes any patent, then any and all rights granted by such
|
||||
Participant to You under Sections 2.1 and/or 2.2 of this License
|
||||
shall, upon 60 days notice from Participant terminate prospectively,
|
||||
unless if within 60 days after receipt of notice You either: (i)
|
||||
agree in writing to pay Participant a mutually agreeable reasonable
|
||||
royalty for Your past and future use of Modifications made by such
|
||||
Participant, or (ii) withdraw Your litigation claim with respect to
|
||||
the Contributor Version against such Participant. If within 60 days
|
||||
of notice, a reasonable royalty and payment arrangement are not
|
||||
mutually agreed upon in writing by the parties or the litigation claim
|
||||
is not withdrawn, the rights granted by Participant to You under
|
||||
Sections 2.1 and/or 2.2 automatically terminate at the expiration of
|
||||
the 60 day notice period specified above.
|
||||
|
||||
(b) any software, hardware, or device, other than such Participant's
|
||||
Contributor Version, directly or indirectly infringes any patent, then
|
||||
any rights granted to You by such Participant under Sections 2.1(b)
|
||||
and 2.2(b) are revoked effective as of the date You first made, used,
|
||||
sold, distributed, or had made, Modifications made by that
|
||||
Participant.
|
||||
|
||||
8.3. If You assert a patent infringement claim against Participant
|
||||
alleging that such Participant's Contributor Version directly or
|
||||
indirectly infringes any patent where such claim is resolved (such as
|
||||
by license or settlement) prior to the initiation of patent
|
||||
infringement litigation, then the reasonable value of the licenses
|
||||
granted by such Participant under Sections 2.1 or 2.2 shall be taken
|
||||
into account in determining the amount or value of any payment or
|
||||
license.
|
||||
|
||||
8.4. In the event of termination under Sections 8.1 or 8.2 above,
|
||||
all end user license agreements (excluding distributors and resellers)
|
||||
which have been validly granted by You or any distributor hereunder
|
||||
prior to termination shall survive termination.
|
||||
|
||||
9. LIMITATION OF LIABILITY.
|
||||
|
||||
UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
|
||||
(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
|
||||
DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
|
||||
OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
|
||||
ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
|
||||
CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
|
||||
WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
|
||||
COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
|
||||
INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
|
||||
LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
|
||||
RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
|
||||
PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
|
||||
EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
|
||||
THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
|
||||
|
||||
10. U.S. GOVERNMENT END USERS.
|
||||
|
||||
The Covered Code is a "commercial item," as that term is defined in
|
||||
48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
|
||||
software" and "commercial computer software documentation," as such
|
||||
terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
|
||||
C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
|
||||
all U.S. Government End Users acquire Covered Code with only those
|
||||
rights set forth herein.
|
||||
|
||||
11. MISCELLANEOUS.
|
||||
|
||||
This License represents the complete agreement concerning subject
|
||||
matter hereof. If any provision of this License is held to be
|
||||
unenforceable, such provision shall be reformed only to the extent
|
||||
necessary to make it enforceable. This License shall be governed by
|
||||
California law provisions (except to the extent applicable law, if
|
||||
any, provides otherwise), excluding its conflict-of-law provisions.
|
||||
With respect to disputes in which at least one party is a citizen of,
|
||||
or an entity chartered or registered to do business in the United
|
||||
States of America, any litigation relating to this License shall be
|
||||
subject to the jurisdiction of the Federal Courts of the Northern
|
||||
District of California, with venue lying in Santa Clara County,
|
||||
California, with the losing party responsible for costs, including
|
||||
without limitation, court costs and reasonable attorneys' fees and
|
||||
expenses. The application of the United Nations Convention on
|
||||
Contracts for the International Sale of Goods is expressly excluded.
|
||||
Any law or regulation which provides that the language of a contract
|
||||
shall be construed against the drafter shall not apply to this
|
||||
License.
|
||||
|
||||
12. RESPONSIBILITY FOR CLAIMS.
|
||||
|
||||
As between Initial Developer and the Contributors, each party is
|
||||
responsible for claims and damages arising, directly or indirectly,
|
||||
out of its utilization of rights under this License and You agree to
|
||||
work with Initial Developer and Contributors to distribute such
|
||||
responsibility on an equitable basis. Nothing herein is intended or
|
||||
shall be deemed to constitute any admission of liability.
|
||||
|
||||
13. MULTIPLE-LICENSED CODE.
|
||||
|
||||
Initial Developer may designate portions of the Covered Code as
|
||||
"Multiple-Licensed". "Multiple-Licensed" means that the Initial
|
||||
Developer permits you to utilize portions of the Covered Code under
|
||||
Your choice of the NPL or the alternative licenses, if any, specified
|
||||
by the Initial Developer in the file described in Exhibit A.
|
||||
|
||||
EXHIBIT A -Mozilla Public License.
|
||||
|
||||
``The contents of this file are subject to the Mozilla Public License
|
||||
Version 1.1 (the "License"); you may not use this file except in
|
||||
compliance with the License. You may obtain a copy of the License at
|
||||
http://www.mozilla.org/MPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS IS"
|
||||
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
||||
License for the specific language governing rights and limitations
|
||||
under the License.
|
||||
|
||||
The Original Code is ______________________________________.
|
||||
|
||||
The Initial Developer of the Original Code is ________________________.
|
||||
Portions created by ______________________ are Copyright (C) ______
|
||||
_______________________. All Rights Reserved.
|
||||
|
||||
Contributor(s): ______________________________________.
|
||||
|
||||
Alternatively, the contents of this file may be used under the terms
|
||||
of the _____ license (the "[___] License"), in which case the
|
||||
provisions of [______] License are applicable instead of those
|
||||
above. If you wish to allow use of your version of this file only
|
||||
under the terms of the [____] License and not to allow others to use
|
||||
your version of this file under the MPL, indicate your decision by
|
||||
deleting the provisions above and replace them with the notice and
|
||||
other provisions required by the [___] License. If you do not delete
|
||||
the provisions above, a recipient may use your version of this file
|
||||
under either the MPL or the [___] License."
|
||||
|
||||
[NOTE: The text of this Exhibit A may differ slightly from the text of
|
||||
the notices in the Source Code files of the Original Code. You should
|
||||
use the text of this Exhibit A rather than the text found in the
|
||||
Original Code Source Code for Your Modifications.]
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
AMENDMENTS
|
||||
|
||||
The Netscape Public License Version 1.1 ("NPL") consists of the
|
||||
Mozilla Public License Version 1.1 with the following Amendments,
|
||||
including Exhibit A-Netscape Public License. Files identified with
|
||||
"Exhibit A-Netscape Public License" are governed by the Netscape
|
||||
Public License Version 1.1.
|
||||
|
||||
Additional Terms applicable to the Netscape Public License.
|
||||
I. Effect.
|
||||
These additional terms described in this Netscape Public
|
||||
License -- Amendments shall apply to the Mozilla Communicator
|
||||
client code and to all Covered Code under this License.
|
||||
|
||||
II. "Netscape's Branded Code" means Covered Code that Netscape
|
||||
distributes and/or permits others to distribute under one or more
|
||||
trademark(s) which are controlled by Netscape but which are not
|
||||
licensed for use under this License.
|
||||
|
||||
III. Netscape and logo.
|
||||
This License does not grant any rights to use the trademarks
|
||||
"Netscape", the "Netscape N and horizon" logo or the "Netscape
|
||||
lighthouse" logo, "Netcenter", "Gecko", "Java" or "JavaScript",
|
||||
"Smart Browsing" even if such marks are included in the Original
|
||||
Code or Modifications.
|
||||
|
||||
IV. Inability to Comply Due to Contractual Obligation.
|
||||
Prior to licensing the Original Code under this License, Netscape
|
||||
has licensed third party code for use in Netscape's Branded Code.
|
||||
To the extent that Netscape is limited contractually from making
|
||||
such third party code available under this License, Netscape may
|
||||
choose to reintegrate such code into Covered Code without being
|
||||
required to distribute such code in Source Code form, even if
|
||||
such code would otherwise be considered "Modifications" under
|
||||
this License.
|
||||
|
||||
V. Use of Modifications and Covered Code by Initial Developer.
|
||||
V.1. In General.
|
||||
The obligations of Section 3 apply to Netscape, except to
|
||||
the extent specified in this Amendment, Section V.2 and V.3.
|
||||
|
||||
V.2. Other Products.
|
||||
Netscape may include Covered Code in products other than the
|
||||
Netscape's Branded Code which are released by Netscape
|
||||
during the two (2) years following the release date of the
|
||||
Original Code, without such additional products becoming
|
||||
subject to the terms of this License, and may license such
|
||||
additional products on different terms from those contained
|
||||
in this License.
|
||||
|
||||
V.3. Alternative Licensing.
|
||||
Netscape may license the Source Code of Netscape's Branded
|
||||
Code, including Modifications incorporated therein, without
|
||||
such Netscape Branded Code becoming subject to the terms of
|
||||
this License, and may license such Netscape Branded Code on
|
||||
different terms from those contained in this License.
|
||||
|
||||
VI. Litigation.
|
||||
Notwithstanding the limitations of Section 11 above, the
|
||||
provisions regarding litigation in Section 11(a), (b) and (c) of
|
||||
the License shall apply to all disputes relating to this License.
|
||||
|
||||
EXHIBIT A-Netscape Public License.
|
||||
|
||||
"The contents of this file are subject to the Netscape Public
|
||||
License Version 1.1 (the "License"); you may not use this file
|
||||
except in compliance with the License. You may obtain a copy of
|
||||
the License at http://www.mozilla.org/NPL/
|
||||
|
||||
Software distributed under the License is distributed on an "AS
|
||||
IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
implied. See the License for the specific language governing
|
||||
rights and limitations under the License.
|
||||
|
||||
The Original Code is Mozilla Communicator client code, released
|
||||
March 31, 1998.
|
||||
|
||||
The Initial Developer of the Original Code is Netscape
|
||||
Communications Corporation. Portions created by Netscape are
|
||||
Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
||||
Rights Reserved.
|
||||
|
||||
Contributor(s): ______________________________________.
|
||||
|
||||
Alternatively, the contents of this file may be used under the
|
||||
terms of the _____ license (the "[___] License"), in which case
|
||||
the provisions of [______] License are applicable instead of
|
||||
those above. If you wish to allow use of your version of this
|
||||
file only under the terms of the [____] License and not to allow
|
||||
others to use your version of this file under the NPL, indicate
|
||||
your decision by deleting the provisions above and replace them
|
||||
with the notice and other provisions required by the [___]
|
||||
License. If you do not delete the provisions above, a recipient
|
||||
may use your version of this file under either the NPL or the
|
||||
[___] License."
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
@@ -0,0 +1,93 @@
|
||||
/*
|
||||
Copyright (C) 2005 SKYRIX Software AG
|
||||
|
||||
This file is part of OpenGroupware.org.
|
||||
|
||||
OGo is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU Lesser General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
OGo is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with OGo; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA.
|
||||
*/
|
||||
|
||||
function uixEarlierDate(date1, date2) {
|
||||
// can this be done in a sane way?
|
||||
if (date1.getYear() < date2.getYear()) return date1;
|
||||
if (date1.getYear() > date2.getYear()) return date2;
|
||||
// same year
|
||||
if (date1.getMonth() < date2.getMonth()) return date1;
|
||||
if (date1.getMonth() > date2.getMonth()) return date2;
|
||||
// same month
|
||||
if (date1.getDate() < date2.getDate()) return date1;
|
||||
if (date1.getDate() > date2.getDate()) return date2;
|
||||
// same day
|
||||
return null;
|
||||
}
|
||||
|
||||
function validateAptEditor() {
|
||||
var e, startdate, enddate, tmpdate;
|
||||
|
||||
e = document.getElementById('summary');
|
||||
if (e.value.length == 0) {
|
||||
if (!confirm(labels.validate_notitle))
|
||||
return false;
|
||||
}
|
||||
|
||||
e = document.getElementById('startTime_date');
|
||||
if (e.value.length != 10) {
|
||||
alert(labels.validate_invalid_startdate);
|
||||
return false;
|
||||
}
|
||||
startdate = calendar_startTime_date.prs_date(e.value);
|
||||
if (startdate == null) {
|
||||
alert(labels.validate_invalid_startdate);
|
||||
return false;
|
||||
}
|
||||
|
||||
e = document.getElementById('endTime_date');
|
||||
if (e.value.length != 10) {
|
||||
alert(labels.validate_invalid_enddate);
|
||||
return false;
|
||||
}
|
||||
enddate = calendar_endTime_date.prs_date(e.value);
|
||||
if (enddate == null) {
|
||||
alert(labels.validate_invalid_enddate);
|
||||
return false;
|
||||
}
|
||||
|
||||
tmpdate = uixEarlierDate(startdate, enddate);
|
||||
if (tmpdate == enddate) {
|
||||
alert(labels.validate_endbeforestart);
|
||||
return false;
|
||||
}
|
||||
else if (tmpdate == null /* means: same date */) {
|
||||
// TODO: check time
|
||||
var start, end;
|
||||
|
||||
start = document.forms[0]['startTime_time_hour'].value;
|
||||
end = document.forms[0]['endTime_time_hour'].value;
|
||||
if (start > end) {
|
||||
alert(labels.validate_endbeforestart);
|
||||
return false;
|
||||
}
|
||||
else if (start == end) {
|
||||
start = document.forms[0]['startTime_time_minute'].value;
|
||||
end = document.forms[0]['endTime_time_minute'].value;
|
||||
if (start > end) {
|
||||
alert(labels.validate_endbeforestart);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
/*
|
||||
Copyright (C) 2005 SKYRIX Software AG
|
||||
|
||||
This file is part of OpenGroupware.org.
|
||||
|
||||
OGo is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU Lesser General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
OGo is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with OGo; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA.
|
||||
*/
|
||||
|
||||
|
||||
function unescapeCallbackParameter(s) {
|
||||
if(!s || s.length == 0)
|
||||
return s;
|
||||
s = s.replace(/'/g, "'");
|
||||
s = s.replace(/"/g, '"');
|
||||
return s;
|
||||
}
|
||||
|
||||
function copyContact(type, email, uid, sn,
|
||||
cn, givenName, telephoneNumber, facsimileTelephoneNumber,
|
||||
mobile, postalAddress, homePostalAddress,
|
||||
departmentNumber, l)
|
||||
{
|
||||
// var type = arguments[0];
|
||||
// var email = arguments[1];
|
||||
// var uid = arguments[2];
|
||||
// var sn = arguments[3];
|
||||
// var givenName = arguments[4];
|
||||
// var telephoneNumber = arguments[5];
|
||||
// var facsimileTelephoneNumber = arguments[6];
|
||||
// var mobile = arguments[7];
|
||||
// var postalAddress = arguments[8];
|
||||
// var homePostalAddress = arguments[9];
|
||||
// var departmentNumber = arguments[10];
|
||||
// var l = arguments[11];
|
||||
var e;
|
||||
e = document.getElementById('cn');
|
||||
e.setAttribute('value', unescapeCallbackParameter(cn));
|
||||
e = document.getElementById('email');
|
||||
e.setAttribute('value', email);
|
||||
e = document.getElementById('sn');
|
||||
e.setAttribute('value', unescapeCallbackParameter(sn));
|
||||
e = document.getElementById('givenName');
|
||||
e.setAttribute('value', unescapeCallbackParameter(givenName));
|
||||
e = document.getElementById('telephoneNumber');
|
||||
e.setAttribute('value', telephoneNumber);
|
||||
e = document.getElementById('facsimileTelephoneNumber');
|
||||
e.setAttribute('value', facsimileTelephoneNumber);
|
||||
e = document.getElementById('mobile');
|
||||
e.setAttribute('value', mobile);
|
||||
e = document.getElementById('postalAddress');
|
||||
e.setAttribute('value', unescapeCallbackParameter(postalAddress));
|
||||
e = document.getElementById('homePostalAddress');
|
||||
e.setAttribute('value', unescapeCallbackParameter(homePostalAddress));
|
||||
e = document.getElementById('departmentNumber');
|
||||
e.setAttribute('value', unescapeCallbackParameter(departmentNumber));
|
||||
e = document.getElementById('l');
|
||||
e.setAttribute('value', unescapeCallbackParameter(l));
|
||||
};
|
||||
|
||||
function validateContactEditor() {
|
||||
var e;
|
||||
|
||||
e = document.getElementById('email');
|
||||
if (e.value.length == 0)
|
||||
return true;
|
||||
if (uixEmailRegex.test(e.value) != true)
|
||||
return confirm(labels.invalidemailwarn);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
Copyright (C) 2005 SKYRIX Software AG
|
||||
|
||||
This file is part of OpenGroupware.org.
|
||||
|
||||
OGo is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU Lesser General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
OGo is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with OGo; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA.
|
||||
*/
|
||||
|
||||
function updateAttachmentListInEditorWindow(sender) {
|
||||
var attachments;
|
||||
|
||||
attachments = this.getAttachmentNames();
|
||||
window.opener.updateInlineAttachmentList(this, attachments);
|
||||
}
|
||||
|
||||
function getAttachmentNames() {
|
||||
var e, s, names;
|
||||
|
||||
e = document.getElementById('attachmentList');
|
||||
s = e.innerHTML;
|
||||
/* remove trailing delimiter */
|
||||
s = s.substr(0, s.length - 1);
|
||||
if (s == '') return null;
|
||||
|
||||
/* probably no OS allows '/' in a file name */
|
||||
names = s.split('/');
|
||||
return names;
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
var rowSelectionCount = 0;
|
||||
|
||||
validateControls();
|
||||
|
||||
function showElement(e, shouldShow) {
|
||||
e.style.display = shouldShow ? "" : "none";
|
||||
}
|
||||
|
||||
function enableElement(e, shouldEnable) {
|
||||
if(!e)
|
||||
return;
|
||||
if(shouldEnable) {
|
||||
if(e.hasAttribute("disabled"))
|
||||
e.removeAttribute("disabled");
|
||||
}
|
||||
else {
|
||||
e.setAttribute("disabled", "1");
|
||||
}
|
||||
}
|
||||
|
||||
function toggleRowSelectionStatus(sender) {
|
||||
rowID = sender.value;
|
||||
tr = document.getElementById(rowID);
|
||||
if(sender.checked) {
|
||||
tr.className = "tableview_selected";
|
||||
rowSelectionCount += 1;
|
||||
}
|
||||
else {
|
||||
tr.className = "tableview";
|
||||
rowSelectionCount -= 1;
|
||||
}
|
||||
this.validateControls();
|
||||
}
|
||||
|
||||
function validateControls() {
|
||||
var e = document.getElementById("moveto");
|
||||
this.enableElement(e, rowSelectionCount > 0);
|
||||
}
|
||||
|
||||
function moveTo(uri) {
|
||||
alert("MoveTo: " + uri);
|
||||
}
|
||||
@@ -0,0 +1,227 @@
|
||||
/*
|
||||
Copyright (C) 2005 SKYRIX Software AG
|
||||
|
||||
This file is part of OpenGroupware.org.
|
||||
|
||||
OGo is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU Lesser General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
OGo is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with OGo; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA.
|
||||
*/
|
||||
|
||||
/* Dependencies:
|
||||
* It's required that "currentIndex" is defined in a top level context.
|
||||
*
|
||||
* Exports:
|
||||
* defines UIxRecipientSelectorHasRecipients() returning a bool for the
|
||||
* surrounding context to check.
|
||||
*/
|
||||
|
||||
var lastIndex = currentIndex;
|
||||
|
||||
function sanitizedCn(cn) {
|
||||
var parts;
|
||||
parts = cn.split(', ');
|
||||
if(parts.length == 1)
|
||||
return cn;
|
||||
return parts[0];
|
||||
}
|
||||
|
||||
function hasAddress(email) {
|
||||
var e = document.getElementById(email);
|
||||
if(e)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
function rememberAddress(email) {
|
||||
var list, span, idx;
|
||||
|
||||
list = document.getElementById('addr_addresses');
|
||||
span = document.createElement('span');
|
||||
span.id = email;
|
||||
idx = document.createTextNode(currentIndex);
|
||||
span.appendChild(idx);
|
||||
list.appendChild(span);
|
||||
}
|
||||
|
||||
function checkAddresses() {
|
||||
alert("addressCount: " + this.getAddressCount() + " currentIndex: " + currentIndex + " lastIndex: " + lastIndex);
|
||||
}
|
||||
|
||||
function addAddress(type, email, uid, sn, cn, dn) {
|
||||
var shouldAddRow, s, e;
|
||||
|
||||
shouldAddRow = true;
|
||||
if (cn)
|
||||
s = this.sanitizedCn(cn) + ' <' + email + '>';
|
||||
else
|
||||
s = email;
|
||||
|
||||
if(this.hasAddress(email))
|
||||
return;
|
||||
|
||||
e = document.getElementById('addr_0');
|
||||
if(e.value == '') {
|
||||
e.value = s;
|
||||
shouldAddRow = false;
|
||||
}
|
||||
if(shouldAddRow) {
|
||||
this.fancyAddRow(false, s);
|
||||
}
|
||||
this.rememberAddress(email);
|
||||
}
|
||||
|
||||
function fancyAddRow(shouldEdit, text) {
|
||||
var addr, table, lastChild, proto, row, select, input;
|
||||
|
||||
addr = document.getElementById('addr_' + lastIndex);
|
||||
if (addr && addr.value == '') {
|
||||
input = document.getElementById('compose_subject_input');
|
||||
if (input && input.value != '') {
|
||||
input.focus();
|
||||
input.select();
|
||||
return;
|
||||
}
|
||||
}
|
||||
table = this.getTable();
|
||||
lastChild = document.getElementById('row_last');
|
||||
|
||||
currentIndex++;
|
||||
|
||||
proto = document.getElementById('row_' + lastIndex);
|
||||
row = proto.cloneNode(true);
|
||||
row.id = 'row_' + currentIndex;
|
||||
|
||||
// select popup
|
||||
select = row.childNodes[1].childNodes[1];
|
||||
select.name = 'popup_' + currentIndex;
|
||||
select.value = proto.childNodes[1].childNodes[1].value;
|
||||
input = row.childNodes[3].childNodes[1];
|
||||
input.name = 'addr_' + currentIndex;
|
||||
input.id = 'addr_' + currentIndex;
|
||||
input.value = text;
|
||||
|
||||
table.insertBefore(row, lastChild);
|
||||
|
||||
if(shouldEdit) {
|
||||
input.focus();
|
||||
input.select();
|
||||
}
|
||||
this.adjustInlineAttachmentListHeight(this);
|
||||
}
|
||||
|
||||
function addressFieldGotFocus(sender) {
|
||||
var idx;
|
||||
|
||||
idx = this.getIndexFromIdentifier(sender.id);
|
||||
if ((lastIndex == idx) || (idx == 0)) return;
|
||||
this.removeLastEditedRowIfEmpty();
|
||||
}
|
||||
function addressFieldLostFocus(sender) {
|
||||
lastIndex = this.getIndexFromIdentifier(sender.id);
|
||||
}
|
||||
|
||||
function removeLastEditedRowIfEmpty() {
|
||||
var idx, addr, table, senderRow;
|
||||
|
||||
idx = lastIndex;
|
||||
if (idx == 0) return;
|
||||
addr = document.getElementById('addr_' + idx);
|
||||
if (!addr) return;
|
||||
if (addr.value != '') return;
|
||||
addr = this.findAddressWithIndex(idx);
|
||||
if(addr) {
|
||||
var addresses = document.getElementById('addr_addresses');
|
||||
addresses.removeChild(addr);
|
||||
}
|
||||
table = this.getTable();
|
||||
senderRow = this.findRowWithIndex(idx);
|
||||
table.removeChild(senderRow);
|
||||
this.adjustInlineAttachmentListHeight(this);
|
||||
}
|
||||
|
||||
function findAddressWithIndex(idx) {
|
||||
var list, i, count, addr, idx
|
||||
list = document.getElementById('addr_addresses').childNodes;
|
||||
count = list.length;
|
||||
for(i = 0; i < count; i++) {
|
||||
addr = list[i];
|
||||
if(addr.innerHTML == idx)
|
||||
return addr;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function findRowWithIndex(idx) {
|
||||
var id = 'row_' + idx;
|
||||
return document.getElementById(id);
|
||||
}
|
||||
|
||||
function getIndexFromIdentifier(id) {
|
||||
return id.split('_')[1];
|
||||
}
|
||||
|
||||
function getTable() {
|
||||
return document.getElementById('addr_table').childNodes[1];
|
||||
};
|
||||
|
||||
function getAddressIDs() {
|
||||
var table, rows, i, count, addressIDs;
|
||||
|
||||
addressIDs = new Array();
|
||||
|
||||
table = this.getTable();
|
||||
rows = table.childNodes;
|
||||
count = rows.length;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
var row, rowId;
|
||||
|
||||
row = table.childNodes[i];
|
||||
rowId = row.id;
|
||||
if (rowId && rowId != 'row_last') {
|
||||
var idx;
|
||||
|
||||
idx = this.getIndexFromIdentifier(rowId);
|
||||
addressIDs.push(idx);
|
||||
}
|
||||
}
|
||||
return addressIDs;
|
||||
}
|
||||
|
||||
function getAddressCount() {
|
||||
var addressCount, addressIDs, i, count;
|
||||
|
||||
addressCount = 0;
|
||||
addressIDs = this.getAddressIDs();
|
||||
count = addressIDs.length;
|
||||
for (i = 0; i < count; i++) {
|
||||
var idx, input;
|
||||
|
||||
idx = addressIDs[i];
|
||||
input = document.getElementById('addr_' + idx);
|
||||
if (input.value != '')
|
||||
addressCount++;
|
||||
}
|
||||
return addressCount;
|
||||
}
|
||||
|
||||
function UIxRecipientSelectorHasRecipients() {
|
||||
var count;
|
||||
|
||||
count = this.getAddressCount();
|
||||
if (count > 0)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
After Width: | Height: | Size: 100 B |
|
After Width: | Height: | Size: 102 B |
|
After Width: | Height: | Size: 43 B |
|
After Width: | Height: | Size: 47 B |
|
After Width: | Height: | Size: 47 B |
|
After Width: | Height: | Size: 43 B |
|
After Width: | Height: | Size: 102 B |
|
After Width: | Height: | Size: 101 B |
@@ -0,0 +1,845 @@
|
||||
.aptview_title {
|
||||
font-size: 10pt;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
color: #000000;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.aptview_text {
|
||||
font-size: 10pt;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
/* appointments */
|
||||
|
||||
.apt_organizer {
|
||||
color: #0033cc ! important;
|
||||
}
|
||||
.apt_organizer a {
|
||||
color: #0033cc ! important;
|
||||
}
|
||||
.apt_other {
|
||||
color: #000000 ! important;
|
||||
}
|
||||
.apt_other a {
|
||||
color: #000000 ! important;
|
||||
}
|
||||
|
||||
.apt_nonparticipant {
|
||||
font-style: italic ! important;
|
||||
}
|
||||
.apt_participant {
|
||||
}
|
||||
|
||||
.apt_private {
|
||||
}
|
||||
|
||||
.apt_prio0, .apt_prio5, .apt_prio6, .apt_prio7, .apt_prio8, .apt_prio9 {
|
||||
font-weight: normal ! important;
|
||||
}
|
||||
.apt_prio1, .apt_prio2, .apt_prio3, .apt_prio4 {
|
||||
font-weight: bold ! important;
|
||||
}
|
||||
|
||||
|
||||
.apt_other_print {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.aptprintview_apt_other {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
|
||||
/* Anais */
|
||||
|
||||
.anais_me {
|
||||
color: #0000FF;
|
||||
}
|
||||
|
||||
.anais_uids {
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
|
||||
/* schedule */
|
||||
|
||||
.schedoverview {
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
letter-spacing: 0pt;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
.titlefont {
|
||||
font-size: 12pt;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.titleheader {
|
||||
background-color: #d8d8d0;
|
||||
}
|
||||
|
||||
.buttonheader {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
th.schedoverview_title {
|
||||
font-size: 10pt;
|
||||
font-weight: bold;
|
||||
text-align: left;
|
||||
background-color: #e8e8e0;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
th.schedoverview {
|
||||
font-size: 10pt;
|
||||
font-weight: bold;
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
td.schedoverview {
|
||||
font-size: 10pt;
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.schedoverview a {
|
||||
color: #000000;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
font-size: 10pt;
|
||||
letter-spacing: 0pt;
|
||||
padding: 0px;
|
||||
text-decoration: none;
|
||||
}
|
||||
.schedoverview a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
|
||||
/* day overview */
|
||||
|
||||
.dayoverview {
|
||||
font-size: 8pt;
|
||||
}
|
||||
|
||||
.dayoverview_content {
|
||||
padding: 1px;
|
||||
margin: 0px 0px 0px 0px;
|
||||
vertical-align: top;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
letter-spacing: 0pt;
|
||||
}
|
||||
|
||||
.dayoverview_content_time {
|
||||
background-color: #d2d2cc;
|
||||
text-align: center;
|
||||
font-size: 9pt;
|
||||
}
|
||||
|
||||
.dayoverview_content_time_link {
|
||||
font-size: 8pt;
|
||||
}
|
||||
.dayoverview_content_time_link a {
|
||||
color: #0033cc;
|
||||
text-decoration: none;
|
||||
}
|
||||
.dayoverview_content_time_link a:hover {
|
||||
color: #ff0000;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.dayoverview_content_apts {
|
||||
color: #0033cc;
|
||||
background-color: #e8e8e0;
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.dayoverview_cal {
|
||||
color: #000000;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
font-size: 10pt;
|
||||
letter-spacing: 0pt;
|
||||
padding: 0px 0px 0px 0px;
|
||||
margin: 0px 0px 0px 0px;
|
||||
}
|
||||
|
||||
.dayoverview_cal table {
|
||||
padding: 0px 0px 0px 0px;
|
||||
margin: 0px 0px 0px 0px;
|
||||
}
|
||||
|
||||
.dayoverview_cal td {
|
||||
padding: 0px 0px 0px 0px;
|
||||
margin: 0px 0px 0px 0px;
|
||||
}
|
||||
|
||||
.dayoverview_cal a {
|
||||
color: #000000;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
font-size: 10pt;
|
||||
letter-spacing: 0pt;
|
||||
padding: 0px;
|
||||
text-decoration: none;
|
||||
}
|
||||
.dayoverview_cal a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.dayoverview_cal_title {
|
||||
background-color: #d2d2cc;
|
||||
text-align: center;
|
||||
font-size: 10pt;
|
||||
font-weight: bold;
|
||||
letter-spacing: 0pt;
|
||||
}
|
||||
|
||||
.dayoverview_cal_day_header {
|
||||
background-color: #d2d2cc;
|
||||
text-align: center;
|
||||
vertical-align: top;
|
||||
font-size: 11pt;
|
||||
// width: 24px;
|
||||
// padding: 2px 2px 2px 2px;
|
||||
// margin: 2px 2px 2px 2px;
|
||||
}
|
||||
|
||||
.dayoverview_cal_content {
|
||||
color: #0033cc;
|
||||
background-color: #e8e8e0;
|
||||
text-align: center;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.dayoverview_cal_content_hilite {
|
||||
color: #0033cc;
|
||||
background-color: #fffff0;
|
||||
text-align: center;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.dayoverview_cal_content_selected {
|
||||
color: #ff0000;
|
||||
}
|
||||
.dayoverview_cal_content_selected a {
|
||||
color: #ff0000;
|
||||
}
|
||||
.dayoverview_cal_content_selected a:hover {
|
||||
color: #ff0000;
|
||||
}
|
||||
|
||||
.dayoverview_cal_content_dimmed {
|
||||
color: #0033cc;
|
||||
background-color: #d2d2cc;
|
||||
text-align: center;
|
||||
vertical-align: top;
|
||||
}
|
||||
.dayoverview_cal_content_dimmed a {
|
||||
color: #5a5a5a;
|
||||
}
|
||||
.dayoverview_cal_content_dimmed a:hover {
|
||||
color: #5a5a5a;
|
||||
}
|
||||
|
||||
|
||||
/* day printview */
|
||||
|
||||
.dayprintview {
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
letter-spacing: 0pt;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
td.dayprintview_time {
|
||||
font-size: 10pt;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
td.dayprintview_content {
|
||||
font-size: 10pt;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
h1.dayprintview, h2.dayprintview {
|
||||
font-size: 11pt;
|
||||
font-weight: bold;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h1.dayprintview {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.dayprintview_apt_other {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
|
||||
/* week overview */
|
||||
|
||||
.weekoverview_title {
|
||||
font-size: 10pt;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
letter-spacing: 0pt;
|
||||
color: #000000;
|
||||
background-color: #d2d2cc;
|
||||
}
|
||||
|
||||
.weekoverview_title a {
|
||||
color: #0033cc;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.weekoverview_title_hilite {
|
||||
font-size: 10pt;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
letter-spacing: 0pt;
|
||||
color: #000000;
|
||||
background-color: #d2d2cc;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.weekoverview_title_hilite a {
|
||||
color: #0033cc;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.weekoverview_title_daylink {
|
||||
font-size: 12pt;
|
||||
color: #0033cc;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.weekoverview_title_newlink {
|
||||
font-size: 8pt;
|
||||
}
|
||||
|
||||
.weekoverview_holidayinfo {
|
||||
font-size: 8pt;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.weekoverview_content {
|
||||
color: #FFFFFF;
|
||||
background-color: #e8e8e0;
|
||||
}
|
||||
|
||||
.weekoverview_content a {
|
||||
color: #0000FF;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
letter-spacing: 0pt;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.weekoverview_content_hilite {
|
||||
background-color: #fffff0;
|
||||
}
|
||||
|
||||
.weekoverview_content_hilite a {
|
||||
color: #0000FF;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
letter-spacing: 0pt;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
|
||||
/* week columnsview */
|
||||
|
||||
.weekcolumnsview {
|
||||
}
|
||||
|
||||
.weekcolumnsview_title {
|
||||
font-size: 10pt;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
letter-spacing: 0pt;
|
||||
color: #000000;
|
||||
background-color: #d2d2cc;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.weekcolumnsview_title a {
|
||||
color: #0033cc;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.weekcolumnsview_title_hilite {
|
||||
font-size: 10pt;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
letter-spacing: 0pt;
|
||||
color: #000000;
|
||||
background-color: #d2d2cc;
|
||||
font-weight: bold;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.weekcolumnsview_title_hilite a {
|
||||
color: #0033cc;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.weekcolumnsview_title_daylink {
|
||||
font-size: 12pt;
|
||||
color: #0033cc;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.weekcolumnsview_title_newlink {
|
||||
font-size: 8pt;
|
||||
}
|
||||
|
||||
.weekcolumnsview_holidayinfo {
|
||||
font-size: 8pt;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.weekcolumnsview_content {
|
||||
color: #FFFFFF;
|
||||
background-color: #e8e8e0;
|
||||
}
|
||||
|
||||
.weekcolumnsview_content a {
|
||||
color: #0000FF;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
letter-spacing: 0pt;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.weekcolumnsview_content_hilite {
|
||||
background-color: #fffff0;
|
||||
}
|
||||
|
||||
.weekcolumnsview_content_hilite a {
|
||||
color: #0000FF;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
letter-spacing: 0pt;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.weekcolumnsview_cal {
|
||||
color: #000000;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
font-size: 10pt;
|
||||
letter-spacing: 0pt;
|
||||
padding: 0px 0px 0px 0px;
|
||||
margin: 0px 0px 0px 0px;
|
||||
}
|
||||
|
||||
.weekcolumnsview_cal table {
|
||||
padding: 0px 0px 0px 0px;
|
||||
margin: 0px 0px 0px 0px;
|
||||
}
|
||||
|
||||
.weekcolumnsview_cal td {
|
||||
padding: 0px 0px 0px 0px;
|
||||
margin: 0px 0px 0px 0px;
|
||||
}
|
||||
|
||||
.weekcolumnsview_cal a {
|
||||
color: #000000;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
font-size: 10pt;
|
||||
letter-spacing: 0pt;
|
||||
padding: 0px;
|
||||
text-decoration: none;
|
||||
}
|
||||
.weekcolumnsview_cal a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.weekcolumnsview_cal_title {
|
||||
background-color: #d2d2cc;
|
||||
text-align: center;
|
||||
font-size: 10pt;
|
||||
font-weight: bold;
|
||||
letter-spacing: 0pt;
|
||||
}
|
||||
|
||||
.weekcolumnsview_cal_day_header {
|
||||
background-color: #d2d2cc;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
font-size: 11pt;
|
||||
width: 20px;
|
||||
padding: 2px 2px 2px 2px;
|
||||
margin: 2px 2px 2px 2px;
|
||||
}
|
||||
|
||||
.weekcolumnsview_cal_content {
|
||||
color: #000000;
|
||||
background-color: #e8e8e0;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
font-size: 10pt;
|
||||
letter-spacing: 0pt;
|
||||
}
|
||||
|
||||
.weekcolumnsview_cal_content_hilite {
|
||||
color: #000000;
|
||||
background-color: #fffff0;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
font-size: 10pt;
|
||||
letter-spacing: 0pt;
|
||||
}
|
||||
|
||||
.weekcolumnsview_cal_content_dimmed {
|
||||
color: #5a5a5a;
|
||||
background-color: #d2d2cc;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
font-size: 10pt;
|
||||
letter-spacing: 0pt;
|
||||
}
|
||||
|
||||
.weekcolumnsview_cal_week {
|
||||
background-color: #d2d2cc;
|
||||
width: 16pt;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
|
||||
/* week printview */
|
||||
|
||||
td.weekprintview {
|
||||
border: 1px solid;
|
||||
}
|
||||
|
||||
h1.weekprintview, h2.weekprintview {
|
||||
font-size: 10pt;
|
||||
font-weight: bold;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h1.weekprintview {
|
||||
font-size: 12pt;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.weekprintview_title {
|
||||
font-size: 11pt;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
letter-spacing: 0pt;
|
||||
}
|
||||
|
||||
.weekprintview_title_hilite a {
|
||||
color: #0033cc;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.weekprintview_holidayinfo {
|
||||
font-size: 10pt;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.weekprintview_content, .weekprintview_apt_time {
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
.weekprintview_apt_time {
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.weekprintview_apt_time_other {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.weekprintview_apt_other {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
|
||||
/* month overview */
|
||||
|
||||
.monthoverview {
|
||||
color: #000000;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
font-size: 7pt;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
letter-spacing: 0pt;
|
||||
text-decoration: none;
|
||||
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.monthoverview a {
|
||||
color: #0033cc;
|
||||
}
|
||||
|
||||
.monthoverview a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.monthoverview_title {
|
||||
background-color: #d2d2cc;
|
||||
font-size: 10pt;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.monthoverview_week {
|
||||
background-color: #d2d2cc;
|
||||
width: 16pt;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.monthoverview_week a {
|
||||
color: #000000;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
.monthoverview_week_hilite {
|
||||
background-color: #fffff0;
|
||||
width: 16pt;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.monthoverview_week_hilite a {
|
||||
color: #000000;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
.monthoverview_content {
|
||||
background-color: #e8e8e0;
|
||||
font-size: 7pt;
|
||||
height: 60;
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
.monthoverview_content a {
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.monthoverview_content_hilite {
|
||||
background-color: #fffff0;
|
||||
font-size: 7pt;
|
||||
height: 60;
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
.monthoverview_content_hilite a {
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.monthoverview_content_dimmed {
|
||||
background-color: #d2d2cc;
|
||||
font-size: 7pt;
|
||||
height: 60;
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
.monthoverview_content_dimmed a {
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
}
|
||||
.monthoverview_day {
|
||||
// text-align: left;
|
||||
// vertical-align: top;
|
||||
}
|
||||
|
||||
.monthoverview_day a {
|
||||
color: #000000;
|
||||
font-size: 12pt;
|
||||
}
|
||||
|
||||
.monthoverview_day_new a {
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.monthoverview_day_new a:hover {
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
color: #ff0000;
|
||||
}
|
||||
|
||||
.monthoverview_content_link {
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
|
||||
/* month printview */
|
||||
|
||||
.monthprintview {
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
letter-spacing: 0pt;
|
||||
font-size: 9pt;
|
||||
}
|
||||
|
||||
h1.monthprintview_header, h2.monthprintview_header {
|
||||
font-size: 10pt;
|
||||
font-weight: bold;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h1.monthprintview_header {
|
||||
font-size: 12pt;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.monthprintview_title {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.monthprintview_week {
|
||||
width: 16pt;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.monthprintview_apt, .monthprintview_apt_time {
|
||||
font-size: 7pt;
|
||||
}
|
||||
|
||||
.monthprintview_apt_time {
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.monthprintview_apt_time_other {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.monthprintview_apt_other {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
td.monthprintview_content {
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
font-size: 12pt;
|
||||
height: 60;
|
||||
}
|
||||
|
||||
td.monthprintview_content_dimmed {
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
font-size: 12pt;
|
||||
height: 60;
|
||||
}
|
||||
|
||||
|
||||
/* year overview */
|
||||
|
||||
.yearoverview {
|
||||
color: #000000;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
font-size: 10pt;
|
||||
letter-spacing: 0pt;
|
||||
padding: 0px 0px 0px 0px;
|
||||
margin: 0px 0px 0px 0px;
|
||||
}
|
||||
|
||||
.yearoverview table {
|
||||
padding: 0px 0px 0px 0px;
|
||||
margin: 0px 0px 0px 0px;
|
||||
}
|
||||
|
||||
.yearoverview td {
|
||||
padding: 0px 0px 0px 0px;
|
||||
margin: 0px 0px 0px 0px;
|
||||
}
|
||||
|
||||
.yearoverview a {
|
||||
color: #000000;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
font-size: 10pt;
|
||||
letter-spacing: 0pt;
|
||||
padding: 0px;
|
||||
text-decoration: none;
|
||||
}
|
||||
.yearoverview a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.yearoverview_title {
|
||||
background-color: #d2d2cc;
|
||||
text-align: center;
|
||||
font-size: 10pt;
|
||||
font-weight: bold;
|
||||
letter-spacing: 0pt;
|
||||
}
|
||||
|
||||
.yearoverview_day_header {
|
||||
background-color: #d2d2cc;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
font-size: 10pt;
|
||||
width: 18px; /* this delimits all td's! */
|
||||
}
|
||||
|
||||
.yearoverview_content {
|
||||
color: #0033cc;
|
||||
background-color: #e8e8e0;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
}
|
||||
.yearoverview_content a {
|
||||
color: #0033cc;
|
||||
}
|
||||
.yearoverview_content a:hover {
|
||||
color: #ff0000;
|
||||
}
|
||||
|
||||
.yearoverview_content_hilite {
|
||||
color: #0033cc;
|
||||
background-color: #fffff0;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
}
|
||||
.yearoverview_content_hilite a {
|
||||
color: #0033cc;
|
||||
}
|
||||
.yearoverview_content_hilite a:hover {
|
||||
color: #ff0000;
|
||||
}
|
||||
|
||||
.yearoverview_content_dimmed {
|
||||
color: #0033cc;
|
||||
background-color: #d2d2cc;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.yearoverview_content_dimmed a {
|
||||
color: #0033cc;
|
||||
}
|
||||
.yearoverview_content_dimmed a:hover {
|
||||
color: #ff0000;
|
||||
}
|
||||
|
||||
.yearoverview_week {
|
||||
background-color: #d2d2cc;
|
||||
width: 16pt;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.yearoverview_week_hilite {
|
||||
background-color: #fffff0;
|
||||
width: 16pt;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
After Width: | Height: | Size: 96 B |
|
After Width: | Height: | Size: 49 B |
|
After Width: | Height: | Size: 118 B |
@@ -0,0 +1,168 @@
|
||||
/*
|
||||
Copyright (C) 2005 SKYRIX Software AG
|
||||
|
||||
This file is part of OpenGroupware.org.
|
||||
|
||||
OGo is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU Lesser General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
OGo is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with OGo; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA.
|
||||
*/
|
||||
/* some generic JavaScript code for SOGo */
|
||||
|
||||
// TODO: replace things with Prototype where applicable
|
||||
|
||||
/* generic stuff */
|
||||
|
||||
function ml_stripActionInURL(url) {
|
||||
if (url[url.length - 1] != '/') {
|
||||
var i;
|
||||
|
||||
i = url.lastIndexOf("/");
|
||||
if (i != -1) url = url.substring(0, i);
|
||||
}
|
||||
if (url[url.length - 1] != '/') // ensure trailing slash
|
||||
url = url + "/";
|
||||
return url;
|
||||
}
|
||||
|
||||
/* emails */
|
||||
|
||||
var uixEmailUsr =
|
||||
"([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")";
|
||||
var uixEmailDomain =
|
||||
"([a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,5}";
|
||||
var uixEmailRegex = new RegExp("^"+uixEmailUsr+"\@"+uixEmailDomain+"$");
|
||||
|
||||
/* escaping */
|
||||
|
||||
function escapeHTML(s) {
|
||||
s = s.replace(/&/g, "&");
|
||||
s = s.replace(/</g, "<");
|
||||
s = s.replace(/>/g, ">");
|
||||
s = s.replace(/"/g, """);
|
||||
return s;
|
||||
}
|
||||
function unescapeHTML(s) {
|
||||
s = s.replace(/</g, "<");
|
||||
s = s.replace(/>/g, ">");
|
||||
s = s.replace(/"/g, '"');
|
||||
s = s.replace(/&/g, "&");
|
||||
return s;
|
||||
}
|
||||
|
||||
function createHTTPClient() {
|
||||
// http://developer.apple.com/internet/webcontent/xmlhttpreq.html
|
||||
if (typeof XMLHttpRequest != "undefined")
|
||||
return new XMLHttpRequest();
|
||||
|
||||
try { return new ActiveXObject("Msxml2.XMLHTTP"); }
|
||||
catch (e) { }
|
||||
try { return new ActiveXObject("Microsoft.XMLHTTP"); }
|
||||
catch (e) { }
|
||||
return null;
|
||||
}
|
||||
|
||||
function resetSelection(win) {
|
||||
var t = "";
|
||||
if (win && win.getSelection) {
|
||||
t = win.getSelection().toString();
|
||||
win.getSelection().removeAllRanges();
|
||||
}
|
||||
return t;
|
||||
}
|
||||
|
||||
function refreshOpener() {
|
||||
if (window.opener && !window.opener.closed) {
|
||||
window.opener.location.reload();
|
||||
}
|
||||
}
|
||||
|
||||
/* query string */
|
||||
|
||||
function parseQueryString() {
|
||||
var queryArray, queryDict
|
||||
var key, value, s, idx;
|
||||
queryDict.length = 0;
|
||||
|
||||
queryDict = new Array();
|
||||
queryArray = location.search.substr(1).split('&');
|
||||
for (var i in queryArray) {
|
||||
if (!queryArray[i]) continue ;
|
||||
s = queryArray[i];
|
||||
idx = s.indexOf("=");
|
||||
if (idx == -1) {
|
||||
key = s;
|
||||
value = "";
|
||||
}
|
||||
else {
|
||||
key = s.substr(0, idx);
|
||||
value = unescape(s.substr(idx + 1));
|
||||
}
|
||||
|
||||
if (typeof queryDict[key] == 'undefined')
|
||||
queryDict.length++;
|
||||
|
||||
queryDict[key] = value;
|
||||
}
|
||||
return queryDict;
|
||||
}
|
||||
|
||||
function generateQueryString(queryDict) {
|
||||
var s = "";
|
||||
for (var key in queryDict) {
|
||||
if (s.length == 0)
|
||||
s = "?";
|
||||
else
|
||||
s = s + "&";
|
||||
s = s + key + "=" + escape(queryDict[key]);
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
function getQueryParaArray(s) {
|
||||
if (s.charAt(0) == "?") s = s.substr(1, s.length - 1);
|
||||
return s.split("&");
|
||||
}
|
||||
function getQueryParaValue(s, name) {
|
||||
var t;
|
||||
|
||||
t = getQueryParaArray(s);
|
||||
for (var i = 0; i < t.length; i++) {
|
||||
var s = t[i];
|
||||
|
||||
if (s.indexOf(name) != 0)
|
||||
continue;
|
||||
|
||||
s = s.substr(name.length, s.length - name.length);
|
||||
return decodeURIComponent(s);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/* opener callback */
|
||||
|
||||
function triggerOpenerCallback() {
|
||||
/* this code has some issue if the folder has no proper trailing slash! */
|
||||
if (window.opener && !window.opener.closed) {
|
||||
var t, cburl;
|
||||
|
||||
t = getQueryParaValue(window.location.search, "openerurl=");
|
||||
cburl = window.opener.location.href;
|
||||
if (cburl[cburl.length - 1] != "/") {
|
||||
cburl = cburl.substr(0, cburl.lastIndexOf("/") + 1);
|
||||
}
|
||||
cburl = cburl + t;
|
||||
window.opener.location.href = cburl;
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 215 B |
|
After Width: | Height: | Size: 552 B |
|
After Width: | Height: | Size: 368 B |
|
After Width: | Height: | Size: 538 B |
|
After Width: | Height: | Size: 79 B |
|
After Width: | Height: | Size: 85 B |
@@ -0,0 +1,511 @@
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
X Library, Copyright (C) 2001,2002,2003,2004,2005 Michael Foster (Cross-Browser.com).
|
||||
Distributed under the terms of the GNU LGPL. This file contains contributor copyrights,
|
||||
license information and documentation for a customized X library.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
layout2or3_xlib.txt compiled with XC v0.22b for layout2or3_xlib.js
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
globals, Copyright (C) 2001,2002,2003,2004,2005 Michael Foster (Cross-Browser.com)
|
||||
|
||||
[Revisions]
|
||||
|
||||
r2, ?, mf, added more sniffer vars
|
||||
r1, 31Mar04, mf, put in it's own file for use with XC
|
||||
|
||||
[Description]
|
||||
|
||||
The following global variables are available.
|
||||
|
||||
xVersion - X version string (in _header.js)
|
||||
|
||||
xUA - lowercase user-agent string
|
||||
xIE4Up - true if browser is IE 4 or greater
|
||||
xIE4 - true if browser is IE 4.x
|
||||
xIE5 - true if browser is IE 5.x
|
||||
xNN4 - true if browser is Netscape Navigator 4.x
|
||||
xOp5or6 - true if browser is Opera 5.x or 6.x
|
||||
xOp7 - true if browser is Opera 7.x
|
||||
xMoz - true if browser is Mozilla, etc.
|
||||
xMac - true if OS is Mac
|
||||
|
||||
For some browsers, the window resize and scroll events are simulated.
|
||||
Some of the following variables may be used.
|
||||
|
||||
xPCW - previous clientWidth
|
||||
xPCH - previous clientHeight
|
||||
xREL - resize event listener
|
||||
xPSL - previous scrollLeft
|
||||
xPST - previous scrollTop
|
||||
xSEL - scroll event listener
|
||||
|
||||
[Invocation]
|
||||
|
||||
|
||||
[Parameters]
|
||||
|
||||
|
||||
[Return]
|
||||
|
||||
|
||||
[Dependencies]
|
||||
|
||||
|
||||
[Demos]
|
||||
|
||||
|
||||
[Notes]
|
||||
|
||||
As much as possible, object-detection is used instead of browser-detection.
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
xGetElementById, Copyright (C) 2001,2002,2003,2004,2005 Michael Foster (Cross-Browser.com)
|
||||
|
||||
[Revisions]
|
||||
|
||||
r1, 31Mar04, mf, put in it's own file for use with XC
|
||||
|
||||
[Description]
|
||||
|
||||
|
||||
[Invocation]
|
||||
|
||||
xGetElementById(ele)
|
||||
|
||||
[Parameters]
|
||||
|
||||
ele - id string or object reference
|
||||
|
||||
[Return]
|
||||
|
||||
|
||||
[Dependencies]
|
||||
|
||||
|
||||
[Demos]
|
||||
|
||||
|
||||
[Notes]
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
xStr, Copyright (C) 2001,2002,2003,2004,2005 Michael Foster (Cross-Browser.com)
|
||||
|
||||
[Revisions]
|
||||
|
||||
r1, 31Mar04, mf, put in it's own file for use with XC
|
||||
|
||||
[Description]
|
||||
|
||||
|
||||
[Invocation]
|
||||
|
||||
xStr(ref[, etc])
|
||||
|
||||
[Parameters]
|
||||
|
||||
|
||||
[Return]
|
||||
|
||||
Returns true if all its arguments are 'string' type.
|
||||
|
||||
[Dependencies]
|
||||
|
||||
|
||||
[Demos]
|
||||
|
||||
|
||||
[Notes]
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
xScrollLeft, Copyright (C) 2001,2002,2003,2004,2005 Michael Foster (Cross-Browser.com)
|
||||
|
||||
[Revisions]
|
||||
|
||||
r2, ?, mf, added external window support
|
||||
r1, 31Mar04, mf, put in it's own file for use with XC
|
||||
|
||||
[Description]
|
||||
|
||||
|
||||
[Invocation]
|
||||
|
||||
xScrollLeft(e, bWin)
|
||||
|
||||
[Parameters]
|
||||
|
||||
ele - id string or object reference. If undefined return document scrollLeft.
|
||||
|
||||
[Return]
|
||||
|
||||
Return the number of pixels the element (or window) has scrolled horizontally.
|
||||
|
||||
[Dependencies]
|
||||
|
||||
xGetElementById, xDef, xNum
|
||||
|
||||
[Demos]
|
||||
|
||||
|
||||
[Notes]
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
xScrollTop, Copyright (C) 2001,2002,2003,2004,2005 Michael Foster (Cross-Browser.com)
|
||||
|
||||
[Revisions]
|
||||
|
||||
r2, ?, mf, added external window support
|
||||
r1, 31Mar04, mf, put in it's own file for use with XC
|
||||
|
||||
[Description]
|
||||
|
||||
|
||||
[Invocation]
|
||||
|
||||
xScrollTop(ele)
|
||||
|
||||
[Parameters]
|
||||
|
||||
ele - id string or object reference. If undefined return document scrollTop.
|
||||
|
||||
[Return]
|
||||
|
||||
Return the number of pixels the element (or window) has scrolled vertically.
|
||||
|
||||
[Dependencies]
|
||||
|
||||
xGetElementById, xDef, xNum
|
||||
|
||||
[Demos]
|
||||
|
||||
|
||||
[Notes]
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
xHeight, Copyright (C) 2001,2002,2003,2004,2005 Michael Foster (Cross-Browser.com)
|
||||
|
||||
[Revisions]
|
||||
|
||||
r3, 12Mar05, mf, Changed xSetCH to use xGetComputedStyle and removed xGetCS.
|
||||
Made xSetCH inline. Reduces width/height funtions about 200 bytes.
|
||||
r2, 14May04, mf, xHeight now accepts zero as valid
|
||||
r1, 31Mar04, mf, put in it's own file for use with XC
|
||||
|
||||
[Description]
|
||||
|
||||
Return and optionally set the element's height.
|
||||
|
||||
[Invocation]
|
||||
|
||||
xHeight(ele[, uH])
|
||||
|
||||
[Parameters]
|
||||
|
||||
ele - id string or object reference
|
||||
uH - unsigned integer height; it is rounded to an integer
|
||||
|
||||
[Return]
|
||||
|
||||
|
||||
[Dependencies]
|
||||
|
||||
xgetelementbyid, xnum, xdef, xstr, xgetcomputedstyle
|
||||
|
||||
[Demos]
|
||||
|
||||
|
||||
[Notes]
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
xClientWidth, Copyright (C) 2001,2002,2003,2004,2005 Michael Foster (Cross-Browser.com)
|
||||
|
||||
[Revisions]
|
||||
|
||||
r2, 27Jan05, mf, Moz update for xClientWidth/xClientHeight, check for 'CSS1Compat' (experimental?).
|
||||
r1, 31Mar04, mf, put in it's own file for use with XC
|
||||
|
||||
[Description]
|
||||
|
||||
|
||||
[Invocation]
|
||||
|
||||
xClientWidth()
|
||||
|
||||
[Parameters]
|
||||
|
||||
None
|
||||
|
||||
[Return]
|
||||
|
||||
|
||||
[Dependencies]
|
||||
|
||||
xOp5or6, xDef
|
||||
|
||||
[Demos]
|
||||
|
||||
|
||||
[Notes]
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
xClientHeight, Copyright (C) 2001,2002,2003,2004,2005 Michael Foster (Cross-Browser.com)
|
||||
|
||||
[Revisions]
|
||||
|
||||
r2, 27Jan05, mf, Moz update for xClientWidth/xClientHeight, check for 'CSS1Compat' (experimental?).
|
||||
r1, 31Mar04, mf, put in it's own file for use with XC
|
||||
|
||||
[Description]
|
||||
|
||||
|
||||
[Invocation]
|
||||
|
||||
xClientHeight()
|
||||
|
||||
[Parameters]
|
||||
|
||||
None
|
||||
|
||||
[Return]
|
||||
|
||||
|
||||
[Dependencies]
|
||||
|
||||
xOp5or6, xDef
|
||||
|
||||
[Demos]
|
||||
|
||||
|
||||
[Notes]
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
xAddEventListener, Copyright (C) 2001,2002,2003,2004,2005 Michael Foster (Cross-Browser.com)
|
||||
|
||||
[Revisions]
|
||||
|
||||
r2, 14Mar05, mf, reduced 136 bytes with shorter parameter names.
|
||||
r1, 31Mar04, mf, put in it's own file for use with XC
|
||||
|
||||
[Description]
|
||||
|
||||
Register an event listener on the element. For some browsers
|
||||
the window.onscroll and window.onresize events are simulated.
|
||||
|
||||
[Invocation]
|
||||
|
||||
xAddEventListener(ele, sEventType, fnEventListener[, bCapture])
|
||||
|
||||
[Parameters]
|
||||
|
||||
ele - id string or object reference
|
||||
sEventType - string event type ('mousemove', 'click', 'resize', etc.)
|
||||
fnEventListener - reference to the listener function
|
||||
bCapture - boolean capture event flag
|
||||
|
||||
[Return]
|
||||
|
||||
void
|
||||
|
||||
[Dependencies]
|
||||
|
||||
xGetElementById, xIE4Up, xOp7,
|
||||
xClientWidth, xClientHeight, xScrollLeft, xScrollTop
|
||||
|
||||
[Demos]
|
||||
|
||||
|
||||
[Notes]
|
||||
|
||||
13Mar05, mf, The 2 sim events add a lot of weight - find a solution!!!
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
xGetComputedStyle, Copyright (C) 2001,2002,2003,2004,2005 Michael Foster (Cross-Browser.com)
|
||||
|
||||
[Revisions]
|
||||
|
||||
r5, 14Mar05, mf, reduced by about 20 bytes
|
||||
r4, 12Mar05, mf, return null on error
|
||||
r3, ?, mf, added some error checking
|
||||
r2, 23Aug04, mf, option to parseInt or return string
|
||||
r1, 31Mar04, mf, put in it's own file for use with XC
|
||||
|
||||
[Description]
|
||||
|
||||
For sProp use the css property name, not the object property name.
|
||||
For finding width this works in Moz and Op, but in IE this only works
|
||||
if padding and border use pixel units in the CSS.
|
||||
|
||||
[Invocation]
|
||||
|
||||
xGetComputedStyle(oEle, sProp[, bInt])
|
||||
|
||||
[Parameters]
|
||||
|
||||
oEle - element object
|
||||
sProp - css property name
|
||||
bInt - if true, return value is an integer
|
||||
|
||||
[Return]
|
||||
|
||||
|
||||
[Dependencies]
|
||||
|
||||
|
||||
[Demos]
|
||||
|
||||
|
||||
[Notes]
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
xShow, Copyright (C) 2001,2002,2003,2004,2005 Michael Foster (Cross-Browser.com)
|
||||
|
||||
[Revisions]
|
||||
|
||||
r3, 27Jan05, mf, Bug-fixes for xShow/xHide (Dave/dlowther).
|
||||
r2, ?, mf, changed to use xVisibility
|
||||
r1, 31Mar04, mf, put in it's own file for use with XC
|
||||
|
||||
[Description]
|
||||
|
||||
Set the element's visibility to 'visible' ('show' for NN4).
|
||||
|
||||
[Invocation]
|
||||
|
||||
xShow(ele)
|
||||
|
||||
[Parameters]
|
||||
|
||||
ele - id string or object reference
|
||||
|
||||
[Return]
|
||||
|
||||
|
||||
[Dependencies]
|
||||
|
||||
xVisibility
|
||||
|
||||
[Demos]
|
||||
|
||||
|
||||
[Notes]
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
xDef, Copyright (C) 2001,2002,2003,2004,2005 Michael Foster (Cross-Browser.com)
|
||||
|
||||
[Revisions]
|
||||
|
||||
r1, 31Mar04, mf, put in it's own file for use with XC
|
||||
|
||||
[Description]
|
||||
|
||||
|
||||
[Invocation]
|
||||
|
||||
xDef(ref[, ...])
|
||||
|
||||
[Parameters]
|
||||
|
||||
Can take any number and any type of arguments.
|
||||
|
||||
[Return]
|
||||
|
||||
Return true if all arguments are defined.
|
||||
|
||||
[Dependencies]
|
||||
|
||||
|
||||
[Demos]
|
||||
|
||||
|
||||
[Notes]
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
xNum, Copyright (C) 2001,2002,2003,2004,2005 Michael Foster (Cross-Browser.com)
|
||||
|
||||
[Revisions]
|
||||
|
||||
r2, 2Apr05, mf, also return false if isNaN, suggested by pgira at SPF
|
||||
r1, 31Mar04, mf, put in it's own file for use with XC
|
||||
|
||||
[Description]
|
||||
|
||||
|
||||
[Invocation]
|
||||
|
||||
xNum(ref, etc)
|
||||
|
||||
[Parameters]
|
||||
|
||||
|
||||
[Return]
|
||||
|
||||
Return true if all arguments are of type 'number', else false.
|
||||
Also returns false if isNaN.
|
||||
|
||||
[Dependencies]
|
||||
|
||||
None
|
||||
|
||||
[Demos]
|
||||
|
||||
|
||||
[Notes]
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
xVisibility, Copyright (C) 2001,2002,2003,2004,2005 Michael Foster (Cross-Browser.com)
|
||||
|
||||
[Revisions]
|
||||
|
||||
r1
|
||||
|
||||
[Description]
|
||||
|
||||
Return and optionally set the element's visibility.
|
||||
|
||||
[Invocation]
|
||||
|
||||
xVisibility(ele, bShow)
|
||||
|
||||
[Parameters]
|
||||
|
||||
ele - id string or object reference
|
||||
bShow - true = show, false = hide
|
||||
|
||||
[Return]
|
||||
|
||||
|
||||
[Dependencies]
|
||||
|
||||
xGetElementById, xDef
|
||||
|
||||
[Demos]
|
||||
|
||||
|
||||
[Notes]
|
||||
|
||||
|
After Width: | Height: | Size: 264 B |
|
After Width: | Height: | Size: 262 B |
|
After Width: | Height: | Size: 234 B |
|
After Width: | Height: | Size: 2.1 KiB |
@@ -0,0 +1,79 @@
|
||||
/* CSS for compose panel */
|
||||
|
||||
div#compose_panel div table {
|
||||
padding: 2px;
|
||||
}
|
||||
table#compose_table {
|
||||
border-bottom-color: #808080;
|
||||
border-bottom-width: 1;
|
||||
border-bottom-style: solid;
|
||||
}
|
||||
|
||||
td#compose_leftside {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
td#compose_rightside {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
div#compose_fromline {
|
||||
}
|
||||
div#compose_toselection {
|
||||
}
|
||||
div#compose_internetmarker {
|
||||
padding: 8px;
|
||||
text-align: center;
|
||||
background-color: white;
|
||||
border-color: red;
|
||||
border-width: 2px;
|
||||
border-style: solid;
|
||||
}
|
||||
div#compose_attachments {
|
||||
padding-top: 4px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
div#compose_attachments_list {
|
||||
width: 100%;
|
||||
height: 100px;
|
||||
background-color: #FFFFFF;
|
||||
font-size: 10px;
|
||||
margin-left: 0px;
|
||||
padding: 2px;
|
||||
border-color: #c3c3c3;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
}
|
||||
|
||||
div#compose_subject {
|
||||
// border-bottom-color: #808080;
|
||||
// border-bottom-width: 1;
|
||||
// border-bottom-style: solid;
|
||||
}
|
||||
div#compose_text {
|
||||
border-top-color: white;
|
||||
border-top-width: 1;
|
||||
border-top-style: solid;
|
||||
}
|
||||
|
||||
div#compose_toselection select {
|
||||
font-size: 10px;
|
||||
}
|
||||
div#compose_toselection input {
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
input#compose_subject_input {
|
||||
font-size: 10px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.compose_label {
|
||||
font-size: 11px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
div#compose_text textarea {
|
||||
width: 100%;
|
||||
height: 280px;
|
||||
}
|
||||
@@ -0,0 +1,114 @@
|
||||
/* toolbar for mailer application */
|
||||
|
||||
table.tb_maintable {
|
||||
width: 100%;
|
||||
position: fixed;
|
||||
top: 0px; /* this is patched when the linkbar is on */
|
||||
height: 40px; /* 48px; */
|
||||
z-index: 100;
|
||||
}
|
||||
td.tb_logocell {
|
||||
width: 24px; /* 36px; */
|
||||
padding-right: 8px;
|
||||
}
|
||||
div.tb_consumer { /* consumes the spaces taken by the toolbar */
|
||||
height: 52px; /* 58px; */ /* this is patched when the linkbar is on */
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.tb_toolbar {
|
||||
height: 22px; /* was 30 */
|
||||
}
|
||||
.tb_toolbar_group { /* not used currently? */
|
||||
height: 22px; /* was 30 */
|
||||
padding-right: 16px;
|
||||
}
|
||||
|
||||
.tb_icon {
|
||||
text-align: center;
|
||||
}
|
||||
.tb_label {
|
||||
font-size: 11px;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
color: #000000;
|
||||
text-align: center;
|
||||
}
|
||||
.tb_spacer {
|
||||
width: 16px;
|
||||
}
|
||||
|
||||
.tb_icon a {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 0px auto;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.tbicon_logo {
|
||||
background-image: url(lori_32x32.png);
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
/* TODO: hover, doesn't work this way
|
||||
as soon as I add ".tbicon_getmail" it stops working
|
||||
TODO: we also need to draw a border around the full cell (not too easy))
|
||||
=> probably we need to move to real icons
|
||||
|
||||
.tb_icon a:hover .tbicon_getmail {
|
||||
background-image: url(tb-mail-write-off-24x24.png);
|
||||
}
|
||||
*/
|
||||
|
||||
.tbicon_getmail {
|
||||
background-image: url(tb-mail-getmail-flat-24x24.png);
|
||||
}
|
||||
.tbicon_compose {
|
||||
background-image: url(tb-mail-write-flat-24x24.png);
|
||||
}
|
||||
.tbicon_addressbook {
|
||||
background-image: url(tb-mail-addressbook-flat-24x24.png);
|
||||
}
|
||||
.tbicon_anais {
|
||||
background-image: url(tbtb_anais.png);
|
||||
}
|
||||
.tbicon_reply {
|
||||
background-image: url(tb-mail-reply-flat-24x24.png);
|
||||
}
|
||||
.tbicon_replyall {
|
||||
background-image: url(tb-mail-replyall-flat-24x24.png);
|
||||
}
|
||||
.tbicon_forward {
|
||||
background-image: url(tb-mail-forward-flat-24x24.png);
|
||||
}
|
||||
.tbicon_delete {
|
||||
background-image: url(tb-mail-delete-flat-24x24.png);
|
||||
}
|
||||
.tbicon_trash {
|
||||
background-image: url(tb-mail-junk-flat-24x24.png);
|
||||
}
|
||||
.tbicon_junk {
|
||||
background-image: url(tb-mail-junk-flat-24x24.png);
|
||||
}
|
||||
.tbicon_print {
|
||||
background-image: url(tb-mail-print-flat-24x24.png);
|
||||
}
|
||||
.tbicon_stop {
|
||||
background-image: url(tb-mail-stop-flat-24x24.png);
|
||||
}
|
||||
|
||||
.tbicon_send {
|
||||
background-image: url(tb-compose-send-flat-24x24.png);
|
||||
}
|
||||
.tbicon_attach {
|
||||
background-image: url(tb-compose-attach-flat-24x24.png);
|
||||
}
|
||||
.tbicon_save {
|
||||
background-image: url(tb-mail-file-flat-24x24.png);
|
||||
}
|
||||
.tbicon_folderadd {
|
||||
background-image: url(tbtb_folderadd.png);
|
||||
}
|
||||
.tbicon_folderdel {
|
||||
background-image: url(tbtb_folderdel.png);
|
||||
}
|
||||
@@ -0,0 +1,423 @@
|
||||
/*
|
||||
Copyright (C) 2005 SKYRIX Software AG
|
||||
|
||||
This file is part of OpenGroupware.org.
|
||||
|
||||
OGo is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU Lesser General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
OGo is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with OGo; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA.
|
||||
*/
|
||||
/* TODO: is the section below used in the mailer? */
|
||||
|
||||
.aptview_title {
|
||||
font-size: 10pt;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
color: #000000;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.aptview_text {
|
||||
font-size: 10pt;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.apt_other {
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.apt_other_print {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.anais_me {
|
||||
color: #0000FF;
|
||||
}
|
||||
|
||||
.anais_uids {
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
|
||||
/* new stuff for Thunderbird like mailer */
|
||||
|
||||
.vertframerow {
|
||||
border-top-color: white;
|
||||
border-top-width: 1;
|
||||
border-top-style: solid;
|
||||
border-bottom-color: #808080;
|
||||
border-bottom-width: 1;
|
||||
border-bottom-style: solid;
|
||||
|
||||
background-color: #D4D0C8;
|
||||
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
font-size: 10pt;
|
||||
}
|
||||
.foldercell {
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
font-size: 10pt;
|
||||
width: 25%;
|
||||
}
|
||||
.contentcell {
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
font-size: 10pt;
|
||||
}
|
||||
.embedwhite_out {
|
||||
border-width: 1;
|
||||
border-style: solid;
|
||||
border-top-color: #808080;
|
||||
border-left-color: #808080;
|
||||
border-bottom-color: white;
|
||||
border-right-color: white;
|
||||
}
|
||||
.embedwhite_in {
|
||||
border-width: 1;
|
||||
border-style: solid;
|
||||
border-top-color: #808080; /* TODO */
|
||||
border-left-color: #808080; /* TODO */
|
||||
border-bottom-color: #808080;
|
||||
border-right-color: #808080;
|
||||
|
||||
background-color: white;
|
||||
/* height: 300px; */
|
||||
/* height: 100%; */
|
||||
}
|
||||
.titlediv {
|
||||
height: 24px;
|
||||
vertical-align: middle;
|
||||
padding-top: 6px;
|
||||
padding-left: 6px;
|
||||
}
|
||||
table.titletable {
|
||||
height: 24px;
|
||||
vertical-align: middle;
|
||||
padding-top: 6px;
|
||||
padding-left: 6px;
|
||||
}
|
||||
td.titlecell {
|
||||
height: 22px;
|
||||
vertical-align: middle;
|
||||
padding-bottom: 2px;
|
||||
white-space: nowrap;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
.whitesec_title {
|
||||
background-color: #D4D0C8;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.treecell {
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
font-size: 10pt;
|
||||
color: black;
|
||||
vertical-align: bottom;
|
||||
padding-left: 4px; /* move away from the icon */
|
||||
padding-right: 2px; /* move away from the right border */
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/* mail tableview */
|
||||
|
||||
.tableview {
|
||||
font-size: 9pt;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
vertical-align: top;
|
||||
}
|
||||
.tableview td {
|
||||
border-top-width: 1px;
|
||||
border-top-color: white;
|
||||
border-bottom-width: 1px;
|
||||
border-bottom-color: white;
|
||||
}
|
||||
|
||||
.tableview_selected {
|
||||
font-size: 9pt;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
vertical-align: top;
|
||||
background-color: #ffffcc;
|
||||
}
|
||||
|
||||
.tableview_highlight {
|
||||
font-size: 9pt;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
vertical-align: top;
|
||||
background-color: #D4D0C8;
|
||||
}
|
||||
.tableview_highlight td {
|
||||
border-top-width: 1px;
|
||||
border-bottom-width: 1px;
|
||||
border-top-style: solid;
|
||||
border-bottom-style: solid;
|
||||
border-top-color: #808080;
|
||||
border-bottom-color: #808080;
|
||||
}
|
||||
|
||||
td.tbtv_navcell {
|
||||
border-width: 1;
|
||||
border-style: solid;
|
||||
border-top-color: white;
|
||||
border-left-color: white;
|
||||
border-bottom-color: #808080;
|
||||
border-right-color: #808080;
|
||||
padding-top: 4px;
|
||||
padding-bottom: 3px;
|
||||
padding-left: 4px;
|
||||
padding-right: 4px;
|
||||
|
||||
background-color: #D4D0C8;
|
||||
}
|
||||
|
||||
td.tbtv_headercell {
|
||||
border-width: 1;
|
||||
border-style: solid;
|
||||
border-top-color: white;
|
||||
border-left-color: white;
|
||||
border-bottom-color: #808080;
|
||||
border-right-color: #808080;
|
||||
padding-top: 4px;
|
||||
padding-bottom: 3px;
|
||||
padding-left: 4px;
|
||||
padding-right: 4px;
|
||||
|
||||
background-color: #D4D0C8;
|
||||
}
|
||||
|
||||
td.tbtv_actcell {
|
||||
border-width: 1;
|
||||
border-style: solid;
|
||||
border-top-color: #808080;
|
||||
border-left-color: #808080;
|
||||
border-bottom-color: #808080;
|
||||
border-right-color: #808080;
|
||||
padding-top: 4px;
|
||||
padding-bottom: 3px;
|
||||
padding-left: 4px;
|
||||
padding-right: 4px;
|
||||
|
||||
background-color: #D4D0C8;
|
||||
}
|
||||
|
||||
td.tbtv_headercell a {
|
||||
margin: 0px auto;
|
||||
display: block;
|
||||
color: black;
|
||||
}
|
||||
td.tbtv_headercell a:hover {
|
||||
margin: 0px auto;
|
||||
display: block;
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
/* background-color: #C4C0B8; */
|
||||
}
|
||||
|
||||
td.tbtv_headercell img.tbtv_sortcell {
|
||||
text-align: right;
|
||||
border: 0px;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
}
|
||||
|
||||
span.mailer_datefield {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
div.mailer_readmailsubject {
|
||||
background-image: url(message-mail-read.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: 0px 0px;
|
||||
padding-top: 1px;
|
||||
padding-left: 20px;
|
||||
}
|
||||
div.mailer_unreadmailsubject {
|
||||
background-image: url(message-mail.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: 0px 0px;
|
||||
padding-left: 20px;
|
||||
padding-top: 1px;
|
||||
font-weight: bold;
|
||||
}
|
||||
div.mailer_readmailsubject a {
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
}
|
||||
div.mailer_unreadmailsubject a {
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
td.mailer_listcell_deleted {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
td.mailer_listcell_regular {
|
||||
}
|
||||
td.mailer_listcell_regular a {
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
div.mailer_readicon {
|
||||
/* TODO: use Thunderbird icon */
|
||||
background-image: url(icon_read.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: 0px 4px;
|
||||
}
|
||||
div.mailer_readicon a {
|
||||
width: 17px;
|
||||
height: 17px;
|
||||
margin: 0px auto;
|
||||
display: block;
|
||||
}
|
||||
div.mailer_unreadicon {
|
||||
/* TODO: use Thunderbird icon */
|
||||
background-image: url(icon_unread.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: 0px 4px;
|
||||
}
|
||||
div.mailer_unreadicon a {
|
||||
width: 17px;
|
||||
height: 17px;
|
||||
margin: 0px auto;
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* fields (key/value UI), eg used in mail viewer */
|
||||
|
||||
table.mailer_fieldtable {
|
||||
width: 100%;
|
||||
|
||||
border-bottom-color: #808080;
|
||||
border-bottom-width: 1;
|
||||
border-bottom-style: solid;
|
||||
}
|
||||
tr.mailer_fieldrow {
|
||||
font-size: 9pt;
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
}
|
||||
td.mailer_fieldname {
|
||||
padding-left: 24px;
|
||||
text-align: right;
|
||||
font-weight: bold;
|
||||
vertical-align: top;
|
||||
}
|
||||
td.mailer_fieldvalue {
|
||||
width: 95%;
|
||||
}
|
||||
td.mailer_subjectfieldvalue {
|
||||
font-weight: bold;
|
||||
}
|
||||
td.mailer_fieldvalue a {
|
||||
text-decoration: underline;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
div.mailer_mailcontent {
|
||||
border-top-color: white;
|
||||
border-top-width: 1;
|
||||
border-top-style: solid;
|
||||
background-color: white;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
img.mailer_imagecontent {
|
||||
border: 0px;
|
||||
}
|
||||
pre.mailer_plaincontent {
|
||||
}
|
||||
|
||||
/* attachment editor */
|
||||
|
||||
form#attachment_form {
|
||||
background-color: #D4D0C8;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
div#attachment_list {
|
||||
border-top-color: white;
|
||||
border-top-width: 1;
|
||||
border-top-style: solid;
|
||||
}
|
||||
|
||||
form#attachment_form input {
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
div#attachment_upload {
|
||||
border-bottom-color: #808080;
|
||||
border-bottom-width: 1;
|
||||
border-bottom-style: solid;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
td.attachment_uplabel {
|
||||
width: 15%;
|
||||
font-size: 11px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/* attachment link viewer */
|
||||
|
||||
div.linked_attachment_frame {
|
||||
background-color: #D4D0C8;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
div.linked_attachment_body {
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
font-size: 10pt;
|
||||
padding: 4px;
|
||||
|
||||
border-width: 1;
|
||||
border-style: solid;
|
||||
border-top-color: white;
|
||||
border-left-color: white;
|
||||
border-bottom-color: #808080;
|
||||
border-right-color: #808080;
|
||||
}
|
||||
|
||||
div.linked_attachment_meta {
|
||||
color: #444444;
|
||||
font-style: italic;
|
||||
border-width: 0;
|
||||
padding: 2px;
|
||||
}
|
||||
table.linked_attachment_meta {
|
||||
font-family: Arial, Helvetica, Verdana, Geneva, Tahoma, sans-serif;
|
||||
font-size: 10pt;
|
||||
color: #444444;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
|
||||
/* OGo link banner on top of mail frame */
|
||||
|
||||
table.linkbanner {
|
||||
width: 100%;
|
||||
background-color: white;
|
||||
position: fixed;
|
||||
height: 48px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.linkbannerlinks {
|
||||
font-size: 10pt;
|
||||
vertical-align: bottom;
|
||||
text-align: left;
|
||||
}
|
||||
.linkbannerimage {
|
||||
text-align: right;
|
||||
}
|
||||
@@ -0,0 +1,419 @@
|
||||
/*
|
||||
Copyright (C) 2005 SKYRIX Software AG
|
||||
|
||||
This file is part of OpenGroupware.org.
|
||||
|
||||
OGo is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU Lesser General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
OGo is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with OGo; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA.
|
||||
*/
|
||||
/* JavaScript for SOGo Mailer */
|
||||
|
||||
/*
|
||||
DOM ids available in mail list view:
|
||||
row_$msgid
|
||||
div_$msgid
|
||||
readdiv_$msgid
|
||||
unreaddiv_$msgid
|
||||
|
||||
Window Properties:
|
||||
width, height
|
||||
bool: resizable, scrollbars, toolbar, location, directories, status,
|
||||
menubar, copyhistory
|
||||
*/
|
||||
|
||||
/* mail list */
|
||||
|
||||
function openMessageWindow(sender, msguid, url) {
|
||||
return window.open(url, "SOGo_msg_" + msguid,
|
||||
"width=640,height=480,resizable=1,scrollbars=1,toolbar=0," +
|
||||
"location=0,directories=0,status=0,menubar=0,copyhistory=0")
|
||||
}
|
||||
|
||||
function clickedUid(sender, msguid) {
|
||||
resetSelection(window);
|
||||
openMessageWindow(sender, msguid, msguid + "/view");
|
||||
return true;
|
||||
}
|
||||
function doubleClickedUid(sender, msguid) {
|
||||
alert("DOUBLE Clicked " + msguid);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function toggleMailSelect(sender) {
|
||||
var row;
|
||||
row = document.getElementById(sender.name);
|
||||
row.className = sender.checked ? "tableview_selected" : "tableview";
|
||||
}
|
||||
function collectSelectedRows() {
|
||||
var pageform = document.forms['pageform'];
|
||||
var rows = new Array();
|
||||
|
||||
for (key in pageform) {
|
||||
if (key.indexOf("row_") != 0)
|
||||
continue;
|
||||
|
||||
if (!pageform[key].checked)
|
||||
continue;
|
||||
|
||||
rows[rows.length] = key.substring(4, key.length);
|
||||
}
|
||||
return rows;
|
||||
}
|
||||
|
||||
function clearSearch(sender) {
|
||||
var searchField = window.document.getElementById("search");
|
||||
if (searchField) searchField.value="";
|
||||
return true;
|
||||
}
|
||||
|
||||
/* compose support */
|
||||
|
||||
function clickedCompose(sender) {
|
||||
var urlstr;
|
||||
|
||||
urlstr = "compose";
|
||||
window.open(urlstr, "SOGo_compose",
|
||||
"width=680,height=520,resizable=1,scrollbars=1,toolbar=0," +
|
||||
"location=0,directories=0,status=0,menubar=0,copyhistory=0");
|
||||
return false; /* stop following the link */
|
||||
}
|
||||
|
||||
/* mail editor */
|
||||
|
||||
function validateEditorInput(sender) {
|
||||
var errortext = "";
|
||||
var field;
|
||||
|
||||
field = document.pageform.subject;
|
||||
if (field.value == "")
|
||||
errortext = errortext + labels.error_missingsubject + "\n";
|
||||
|
||||
if (!UIxRecipientSelectorHasRecipients())
|
||||
errortext = errortext + labels.error_missingrecipients + "\n";
|
||||
|
||||
if (errortext.length > 0) {
|
||||
alert(labels.error_validationfailed + ":\n" + errortext);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function clickedEditorSend(sender) {
|
||||
if (!validateEditorInput(sender))
|
||||
return false;
|
||||
|
||||
document.pageform.action="send";
|
||||
document.pageform.submit();
|
||||
// if everything is ok, close the window
|
||||
return true;
|
||||
}
|
||||
|
||||
function clickedEditorAttach(sender) {
|
||||
var urlstr;
|
||||
|
||||
urlstr = "viewAttachments";
|
||||
window.open(urlstr, "SOGo_attach",
|
||||
"width=320,height=320,resizable=1,scrollbars=1,toolbar=0," +
|
||||
"location=0,directories=0,status=0,menubar=0,copyhistory=0");
|
||||
return false; /* stop following the link */
|
||||
}
|
||||
|
||||
function clickedEditorSave(sender) {
|
||||
document.pageform.action="save";
|
||||
document.pageform.submit();
|
||||
refreshOpener();
|
||||
return true;
|
||||
}
|
||||
|
||||
function clickedEditorDelete(sender) {
|
||||
document.pageform.action="delete";
|
||||
document.pageform.submit();
|
||||
refreshOpener();
|
||||
window.close();
|
||||
return true;
|
||||
}
|
||||
|
||||
function showInlineAttachmentList(sender) {
|
||||
var r, l;
|
||||
|
||||
r = document.getElementById('compose_rightside');
|
||||
r.style.display = 'block';
|
||||
l = document.getElementById('compose_leftside');
|
||||
l.style.width = "67%";
|
||||
this.adjustInlineAttachmentListHeight(sender);
|
||||
}
|
||||
|
||||
function updateInlineAttachmentList(sender, attachments) {
|
||||
if (!attachments || (attachments.length == 0)) {
|
||||
this.hideInlineAttachmentList(sender);
|
||||
return;
|
||||
}
|
||||
var e, i, count, text;
|
||||
|
||||
count = attachments.length;
|
||||
text = "";
|
||||
for (i = 0; i < count; i++) {
|
||||
text = text + attachments[i];
|
||||
text = text + '<br />';
|
||||
}
|
||||
|
||||
e = document.getElementById('compose_attachments_list');
|
||||
e.innerHTML = text;
|
||||
this.showInlineAttachmentList(sender);
|
||||
}
|
||||
|
||||
function adjustInlineAttachmentListHeight(sender) {
|
||||
var e;
|
||||
|
||||
e = document.getElementById('compose_rightside');
|
||||
if (e.style.display == 'none') return;
|
||||
|
||||
/* need to lower left size first, because left auto-adjusts to right! */
|
||||
xHeight('compose_attachments_list', 10);
|
||||
|
||||
var leftHeight, rightHeaderHeight;
|
||||
leftHeight = xHeight('compose_leftside');
|
||||
rightHeaderHeight = xHeight('compose_attachments_header');
|
||||
xHeight('compose_attachments_list', (leftHeight - rightHeaderHeight) - 16);
|
||||
}
|
||||
|
||||
function hideInlineAttachmentList(sender) {
|
||||
var e;
|
||||
|
||||
// xVisibility('compose_rightside', false);
|
||||
e = document.getElementById('compose_rightside');
|
||||
e.style.display = 'none';
|
||||
e = document.getElementById('compose_leftside');
|
||||
e.style.width = "100%";
|
||||
}
|
||||
|
||||
/* addressbook helpers */
|
||||
|
||||
function openAnais(sender) {
|
||||
var urlstr;
|
||||
|
||||
urlstr = "anais";
|
||||
var w = window.open(urlstr, "Anais",
|
||||
"width=350,height=600,left=10,top=10,toolbar=no," +
|
||||
"dependent=yes,menubar=no,location=no,resizable=yes," +
|
||||
"scrollbars=yes,directories=no,status=no");
|
||||
w.focus();
|
||||
}
|
||||
|
||||
function openAddressbook(sender) {
|
||||
var urlstr;
|
||||
|
||||
urlstr = "addressbook";
|
||||
var w = window.open(urlstr, "Addressbook",
|
||||
"width=600,height=400,left=10,top=10,toolbar=no," +
|
||||
"dependent=yes,menubar=no,location=no,resizable=yes," +
|
||||
"scrollbars=yes,directories=no,status=no");
|
||||
w.focus();
|
||||
}
|
||||
|
||||
/* filters */
|
||||
|
||||
function clickedFilter(sender, scriptname) {
|
||||
var urlstr;
|
||||
|
||||
urlstr = scriptname + "/edit";
|
||||
window.open(urlstr, "SOGo_filter_" + scriptname,
|
||||
"width=640,height=480,resizable=1,scrollbars=1,toolbar=0," +
|
||||
"location=0,directories=0,status=0,menubar=0,copyhistory=0")
|
||||
return true;
|
||||
}
|
||||
|
||||
function clickedNewFilter(sender) {
|
||||
var urlstr;
|
||||
|
||||
urlstr = "create";
|
||||
window.open(urlstr, "SOGo_filter",
|
||||
"width=680,height=480,resizable=1,scrollbars=1,toolbar=0," +
|
||||
"location=0,directories=0,status=0,menubar=0,copyhistory=0");
|
||||
return false; /* stop following the link */
|
||||
}
|
||||
|
||||
/* mail list DOM changes */
|
||||
|
||||
function markMailInWindow(win, msguid, markread) {
|
||||
var msgDiv;
|
||||
|
||||
msgDiv = win.document.getElementById("div_" + msguid);
|
||||
if (msgDiv) {
|
||||
if (markread) {
|
||||
msgDiv.className = "mailer_readmailsubject";
|
||||
|
||||
msgDiv = win.document.getElementById("unreaddiv_" + msguid);
|
||||
if (msgDiv) msgDiv.style.display = "none";
|
||||
msgDiv = win.document.getElementById("readdiv_" + msguid);
|
||||
if (msgDiv) msgDiv.style.display = "block";
|
||||
}
|
||||
else {
|
||||
msgDiv.className = "mailer_unreadmailsubject";
|
||||
|
||||
msgDiv = win.document.getElementById("readdiv_" + msguid);
|
||||
if (msgDiv) msgDiv.style.display = "none";
|
||||
msgDiv = win.document.getElementById("unreaddiv_" + msguid);
|
||||
if (msgDiv) msgDiv.style.display = "block";
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
function markMailReadInWindow(win, msguid) {
|
||||
/* this is called by UIxMailView with window.opener */
|
||||
return markMailInWindow(win, msguid, true);
|
||||
}
|
||||
|
||||
/* main window */
|
||||
|
||||
function reopenToRemoveLocationBar() {
|
||||
// we cannot really use this, see below at the close comment
|
||||
if (window.locationbar && window.locationbar.visible) {
|
||||
newwin = window.open(window.location.href, "SOGo",
|
||||
"width=800,height=600,resizable=1,scrollbars=1," +
|
||||
"toolbar=0,location=0,directories=0,status=0," +
|
||||
"menubar=0,copyhistory=0");
|
||||
if (newwin) {
|
||||
window.close(); // this does only work for windows opened by scripts!
|
||||
newwin.focus();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/* mail list reply */
|
||||
|
||||
function openMessageWindowsForSelection(sender, action) {
|
||||
var rows = collectSelectedRows();
|
||||
var idset = "";
|
||||
|
||||
for (var i = 0; i < rows.length; i++) {
|
||||
win = openMessageWindow(sender,
|
||||
rows[i] /* msguid */,
|
||||
rows[i] + "/" + action /* url */);
|
||||
}
|
||||
}
|
||||
|
||||
function mailListMarkMessage(sender, action, msguid, markread) {
|
||||
var url;
|
||||
var http = createHTTPClient();
|
||||
|
||||
url = action + "?uid=" + msguid;
|
||||
|
||||
if (http) {
|
||||
// TODO: add parameter to signal that we are only interested in OK
|
||||
http.open("POST", url + "&jsonly=1", false /* not async */);
|
||||
http.send("");
|
||||
if (http.status != 200) {
|
||||
// TODO: refresh page?
|
||||
alert("Message Mark Failed: " + http.statusText);
|
||||
window.location.reload();
|
||||
}
|
||||
else {
|
||||
markMailInWindow(window, msguid, markread);
|
||||
}
|
||||
}
|
||||
else {
|
||||
window.location.href = url;
|
||||
}
|
||||
}
|
||||
|
||||
/* maillist row highlight */
|
||||
|
||||
var oldMaillistHighlight = null; // to remember deleted/selected style
|
||||
|
||||
function ml_highlight(sender) {
|
||||
oldMaillistHighlight = sender.className;
|
||||
if (oldMaillistHighlight == "tableview_highlight")
|
||||
oldMaillistHighlight = null;
|
||||
sender.className = "tableview_highlight";
|
||||
}
|
||||
function ml_lowlight(sender) {
|
||||
if (oldMaillistHighlight) {
|
||||
sender.className = oldMaillistHighlight;
|
||||
oldMaillistHighlight = null;
|
||||
}
|
||||
else
|
||||
sender.className = "tableview";
|
||||
}
|
||||
|
||||
|
||||
/* folder operations */
|
||||
|
||||
function ctxFolderAdd(sender) {
|
||||
var folderName;
|
||||
|
||||
folderName = prompt("Foldername: ");
|
||||
if (folderName == undefined)
|
||||
return false;
|
||||
if (folderName == "")
|
||||
return false;
|
||||
|
||||
// TODO: should use a form-POST or AJAX
|
||||
window.location.href = "createFolder?name=" + escape(folderName);
|
||||
return false;
|
||||
}
|
||||
|
||||
function ctxFolderDelete(sender) {
|
||||
if (!confirm("Delete current folder?"))
|
||||
return false;
|
||||
|
||||
// TODO: should use a form-POST or AJAX
|
||||
window.location.href = "deleteFolder";
|
||||
return false;
|
||||
}
|
||||
|
||||
/* bulk delete of messages */
|
||||
|
||||
function uixDeleteSelectedMessages(sender) {
|
||||
var rows;
|
||||
var failCount = 0;
|
||||
|
||||
rows = collectSelectedRows();
|
||||
for (var i = 0; i < rows.length; i++) {
|
||||
var url, http, rowElem;
|
||||
|
||||
/* send AJAX request (synchronously) */
|
||||
|
||||
url = "" + rows[i] + "/trash?jsonly=1";
|
||||
|
||||
http = createHTTPClient();
|
||||
http.open("POST", url, false /* not async */);
|
||||
http.send("");
|
||||
if (http.status != 200) { /* request failed */
|
||||
failCount++;
|
||||
http = null;
|
||||
continue;
|
||||
}
|
||||
http = null;
|
||||
|
||||
/* remove from page */
|
||||
|
||||
/* line-through would be nicer, but hiding is OK too */
|
||||
rowElem = document.getElementById("row_" + rows[i]);
|
||||
rowElem.style.display = "none";
|
||||
}
|
||||
|
||||
if (failCount > 0)
|
||||
alert("Could not delete " + failCount + " messages!");
|
||||
|
||||
window.location.reload();
|
||||
return false;
|
||||
}
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 818 B |
|
After Width: | Height: | Size: 626 B |
|
After Width: | Height: | Size: 120 B |
@@ -0,0 +1,108 @@
|
||||
/*
|
||||
Copyright (C) 2005 SKYRIX Software AG
|
||||
|
||||
This file is part of OpenGroupware.org.
|
||||
|
||||
OGo is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU Lesser General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
OGo is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with OGo; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA.
|
||||
*/
|
||||
/* JavaScript for SOGo Mailer */
|
||||
|
||||
var didStop = false;
|
||||
var field = null;
|
||||
var firstValue = "";
|
||||
var isRegistered = false;
|
||||
var lastKeyPress = null;
|
||||
var submitAfterMS = 500;
|
||||
|
||||
function ml_reloadTableView(searchtext, elementid) {
|
||||
var http = createHTTPClient();
|
||||
|
||||
if (http) {
|
||||
var viewURL, url;
|
||||
var hasQueryPara;
|
||||
|
||||
// TODO: properly parse query parameters
|
||||
viewURL = this.location.href;
|
||||
hasQueryPara = viewURL.indexOf("?") == -1 ? false : true;
|
||||
url = (hasQueryPara ? "&" : "?") + "noframe=1&search=";
|
||||
url = url + encodeURIComponent(searchtext);
|
||||
// alert("GET " + url);
|
||||
|
||||
url = viewURL + url;
|
||||
http.open("GET", url, false);
|
||||
http.send(null);
|
||||
if (http.status != 200) {
|
||||
alert("Could not reload view.");
|
||||
}
|
||||
else {
|
||||
var tv;
|
||||
|
||||
tv = document.getElementById(elementid)
|
||||
tv.innerHTML = http.responseText;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function ml_reloadSearchIfFieldChanged() {
|
||||
if (field) {
|
||||
if (field.value && field.value != firstValue) {
|
||||
ml_reloadTableView(field.value, "cl_tableview_reloadroot");
|
||||
firstValue = field.value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function ml_timeoutCallback() {
|
||||
if (didStop) {
|
||||
didStop = false;
|
||||
return;
|
||||
}
|
||||
|
||||
var now = new Date().getTime();
|
||||
if ((now - lastKeyPress) < submitAfterMS) {
|
||||
setTimeout("ml_timeoutCallback()", 10);
|
||||
isRegistered = true;
|
||||
return;
|
||||
}
|
||||
|
||||
ml_reloadSearchIfFieldChanged();
|
||||
isRegistered = false;
|
||||
}
|
||||
|
||||
function ml_activateSearchField(sender, _submitTimeout) {
|
||||
didStop = false;
|
||||
field = sender;
|
||||
firstValue = field.value;
|
||||
submitAfterMS = _submitTimeout;
|
||||
return true;
|
||||
}
|
||||
function ml_deactivateSearchField(sender) {
|
||||
didStop = true;
|
||||
field = null;
|
||||
firstValue = "";
|
||||
return true;
|
||||
}
|
||||
|
||||
function ml_searchFieldKeyPressed(sender) {
|
||||
lastKeyPress = new Date().getTime();
|
||||
|
||||
if (isRegistered)
|
||||
return;
|
||||
|
||||
setTimeout("ml_timeoutCallback()", 10);
|
||||
isRegistered = true;
|
||||
return true;
|
||||
}
|
||||
|
After Width: | Height: | Size: 127 B |
|
After Width: | Height: | Size: 127 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 910 B |
|
After Width: | Height: | Size: 956 B |
|
After Width: | Height: | Size: 765 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 960 B |
|
After Width: | Height: | Size: 955 B |
|
After Width: | Height: | Size: 927 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.5 KiB |