aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/skins
diff options
context:
space:
mode:
authorDaniel Lange <DLange@git.local>2016-03-07 15:53:16 +0100
committerDaniel Lange <DLange@git.local>2016-03-07 15:53:16 +0100
commit50569114acdc64e7c7cae1498635d3f821517c30 (patch)
tree13d6fe76af33134fbfb2286930fb6603047f9299 /calendar/skins
parentc210d30de6c62e7f7867bb32651349ddf455d9e6 (diff)
downloadroundcube_calendar-50569114acdc64e7c7cae1498635d3f821517c30.tar.gz
roundcube_calendar-50569114acdc64e7c7cae1498635d3f821517c30.tar.bz2
roundcube_calendar-50569114acdc64e7c7cae1498635d3f821517c30.zip
Initial commit of the Faster IT roundcube_calendar plugin distribution
This includes: * Kolab plugins 3.2.9 (calendar and libcalendaring) * CalDAV driver 3.2.8 * .htaccess files for at least some security * SabreDAV updated to 1.8.12 (Jan 2015 release) * Support for CURLOPT_SSL_* settings to allow self-signed certificates * Small fixes & improved documentation
Diffstat (limited to 'calendar/skins')
-rw-r--r--calendar/skins/larry/README11
-rw-r--r--calendar/skins/larry/calendar.css2327
-rw-r--r--calendar/skins/larry/fullcalendar.css711
-rw-r--r--calendar/skins/larry/iehacks.css77
-rw-r--r--calendar/skins/larry/images/attendee-status.pngbin0 -> 2202 bytes
-rw-r--r--calendar/skins/larry/images/autocomplete.pngbin0 -> 558 bytes
-rw-r--r--calendar/skins/larry/images/badge_cancelled.pngbin0 -> 924 bytes
-rw-r--r--calendar/skins/larry/images/badge_confidential.pngbin0 -> 1522 bytes
-rw-r--r--calendar/skins/larry/images/badge_private.pngbin0 -> 1346 bytes
-rw-r--r--calendar/skins/larry/images/calendar.pngbin0 -> 613 bytes
-rw-r--r--calendar/skins/larry/images/calendars.pngbin0 -> 2582 bytes
-rw-r--r--calendar/skins/larry/images/eventicons.pngbin0 -> 217 bytes
-rw-r--r--calendar/skins/larry/images/focusview.pngbin0 -> 4224 bytes
-rw-r--r--calendar/skins/larry/images/freebusy-colors.pngbin0 -> 302 bytes
-rw-r--r--calendar/skins/larry/images/ical-attachment.pngbin0 -> 492 bytes
-rw-r--r--calendar/skins/larry/images/invitation.pngbin0 -> 1485 bytes
-rw-r--r--calendar/skins/larry/images/loading_blue.gifbin0 -> 847 bytes
-rw-r--r--calendar/skins/larry/images/sendinvitation.pngbin0 -> 337 bytes
-rw-r--r--calendar/skins/larry/images/toggle.gifbin0 -> 110 bytes
-rw-r--r--calendar/skins/larry/images/toolbar.pngbin0 -> 3662 bytes
-rw-r--r--calendar/skins/larry/print.css229
-rw-r--r--calendar/skins/larry/print.iehacks.css25
-rw-r--r--calendar/skins/larry/templates/attachment.html64
-rw-r--r--calendar/skins/larry/templates/calendar.html537
-rw-r--r--calendar/skins/larry/templates/eventedit.html133
-rw-r--r--calendar/skins/larry/templates/freebusylegend.html7
-rw-r--r--calendar/skins/larry/templates/itipattend.html37
-rw-r--r--calendar/skins/larry/templates/kolabacl.html26
-rw-r--r--calendar/skins/larry/templates/kolabform.html9
-rw-r--r--calendar/skins/larry/templates/print.html29
30 files changed, 4222 insertions, 0 deletions
diff --git a/calendar/skins/larry/README b/calendar/skins/larry/README
new file mode 100644
index 0000000..d162620
--- /dev/null
+++ b/calendar/skins/larry/README
@@ -0,0 +1,11 @@
+Screendesign by FLINT / Büro für Gestaltung, Bern, Switzerland
+http://bueroflint.com
+
+
+LICENSE
+-------
+The contents of this folder are subject to the Creative Commons
+Attribution-ShareAlike License. It is allowed to copy, distribute,
+transmit and to adapt the work by keeping credits to the original
+autors in the README file.
+See http://creativecommons.org/licenses/by-sa/3.0/ for details.
diff --git a/calendar/skins/larry/calendar.css b/calendar/skins/larry/calendar.css
new file mode 100644
index 0000000..0669a8f
--- /dev/null
+++ b/calendar/skins/larry/calendar.css
@@ -0,0 +1,2327 @@
+/**
+ * Roundcube Calendar plugin styles for skin "Larry"
+ *
+ * Copyright (c) 2012-2014, Kolab Systems AG <contact@kolabsys.com>
+ * Screendesign by FLINT / Büro für Gestaltung, bueroflint.com
+ *
+ * The contents are subject to the Creative Commons Attribution-ShareAlike
+ * License. It is allowed to copy, distribute, transmit and to adapt the work
+ * by keeping credits to the original autors in the README file.
+ * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
+ */
+
+body.calendarmain {
+ overflow: hidden;
+}
+
+body.calendarmain #mainscreen {
+ left: 0;
+}
+
+/* overrides for tablets and mobile phones */
+@media screen and (max-device-width: 1024px){
+ body.calendarmain {
+ overflow: visible;
+ }
+
+ body.calendarmain #mainscreen {
+ min-width: 1000px !important;
+ min-height: 520px !important;
+ }
+
+ body.calendarmain #header {
+ min-width: 1020px !important;
+ }
+}
+
+#calendarsidebar {
+ position: absolute;
+ top: 0;
+ left: 10px;
+ bottom: 0;
+ width: 250px;
+}
+
+#datepicker {
+ position: absolute;
+ top: 40px;
+ left: 0;
+ width: 100%;
+ min-height: 190px;
+}
+
+#datepicker .ui-datepicker {
+ width: 100% !important;
+ box-shadow: none;
+ -moz-box-shadow: none;
+ -webkit-box-shadow: none;
+}
+
+#datepicker .ui-datepicker td a {
+ padding: 5px 4px;
+ font-size: 12px;
+}
+
+#datepicker td.ui-datepicker-activerange {
+ border-color: #69a2b6;
+}
+
+#datepicker .ui-datepicker-activerange a {
+ color: #185d7a;
+ background: #d9f1fb;
+ background: -moz-linear-gradient(top, #d9f1fb 0%, #c5e3ee 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#d9f1fb), color-stop(100%,#c5e3ee));
+ background: -o-linear-gradient(top, #d9f1fb 0%, #c5e3ee 100%);
+ background: -ms-linear-gradient(top, #d9f1fb 0%, #c5e3ee 100%);
+ background: linear-gradient(top, #d9f1fb 0%, #c5e3ee 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#d9f1fb', endColorstr='#c5e3ee', GradientType=0);
+}
+
+#datepicker .ui-datepicker-days-cell-over a.ui-state-default {
+ color: #fff;
+ border-color: #2fa0c0;
+ background: rgba(73,180,210,0.6);
+ text-shadow: 0px 1px 1px #666;
+ filter: none;
+}
+
+#datepicker .ui-datepicker-activerange a.ui-state-active {
+ color: #fff;
+ background: #00acd4;
+ background: -moz-linear-gradient(top, #00acd4 0%, #008fc7 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#00acd4), color-stop(100%,#008fc7));
+ background: -o-linear-gradient(top, #00acd4 0%, #008fc7 100%);
+ background: -ms-linear-gradient(top, #00acd4 0%, #008fc7 100%);
+ background: linear-gradient(top, #00acd4 0%, #008fc7 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00acd4', endColorstr='#008fc7', GradientType=0);
+}
+
+#datepicker td.ui-datepicker-week-col {
+ cursor: pointer;
+}
+
+#datepicker .ui-datepicker-title {
+ margin: 2px 2.3em 3px 2.3em;
+}
+
+#datepicker .ui-datepicker .ui-datepicker-prev,
+#datepicker .ui-datepicker .ui-datepicker-next {
+ top: 4px;
+}
+
+#calsidebarsplitter {
+ position: absolute;
+ left: 264px;
+ width: 6px;
+ top: 40px !important;
+ bottom: 0;
+ background: url(images/toggle.gif) -1px 48% no-repeat transparent;
+}
+
+div.sidebarclosed {
+ background-position: -8px 48% !important;
+ cursor: pointer;
+}
+
+#calsidebarsplitter:hover {
+ background-color: #ddd;
+}
+
+#calendar {
+ position: absolute;
+ top: 0;
+ left: 276px;
+ right: 0;
+ bottom: 0;
+}
+
+.calendarmain #message.statusbar {
+ border: 1px solid #c3c3c3;
+ border-bottom-color: #ababab;
+}
+
+#timezonedisplay {
+ position: absolute;
+ bottom: 5px;
+ right: 12px;
+ font-size: 0.85em;
+ color: #666;
+}
+
+#print {
+ width: 680px;
+}
+
+pre {
+ font-family: "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
+}
+
+#calendars {
+ position: absolute;
+ top: 276px;
+ left: 0;
+ bottom: 0;
+ right: 0;
+}
+
+#calendars .boxtitle {
+ position: relative;
+}
+
+#calendars .boxtitle a.iconbutton.search {
+ position: absolute;
+ top: 8px;
+ right: 8px;
+ width: 16px;
+ cursor: pointer;
+ background-position: -2px -317px;
+}
+
+#calendars .listsearchbox {
+ display: none;
+}
+
+#calendars .listsearchbox.expanded {
+ display: block;
+}
+
+#calendars .scroller {
+ top: 34px;
+}
+
+#calendars .listsearchbox.expanded + .scroller {
+ top: 68px;
+}
+
+#calendars .treelist li {
+ margin: 0;
+ position: relative;
+}
+
+#calendars .treelist li div.folder,
+#calendars .treelist li div.calendar {
+ position: relative;
+ height: 28px;
+}
+
+#calendars .treelist li div.virtual {
+ height: 22px;
+}
+
+#calendars .treelist li span.calname {
+ display: block;
+ padding: 0px 18px 2px 2px;
+ position: absolute;
+ top: 7px;
+ left: 38px;
+ right: 45px;
+ cursor: default;
+ background: url(images/calendars.png) right 20px no-repeat;
+ overflow-x: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ color: #004458;
+}
+
+.quickview-active #calendars .treelist div input,
+.quickview-active #calendars .treelist div .calname {
+ opacity: 0.35;
+}
+
+.quickview-active #calendars .treelist div.focusview .calname {
+ opacity: 1.0;
+ background-image: none;
+}
+
+#calendars .treelist li div.virtual > span.calname {
+ color: #aaa;
+ top: 4px;
+ left: 20px;
+}
+
+#calendars .treelist li.x-birthdays span.calname,
+#calendars .treelist li.x-invitations span.calname {
+ font-style: italic;
+}
+
+#calendars .treelist.flat li span.calname {
+ left: 24px;
+ right: 42px;
+}
+
+#calendars .treelist li span.handle {
+ display: inline-block;
+ position: absolute;
+ top: 8px;
+ right: 6px;
+ padding: 0;
+ width: 10px;
+ height: 10px;
+ border-radius: 7px;
+ font-size: 0.8em;
+ border: 1px solid rgba(0, 0, 0, 0.5);
+ -webkit-box-shadow: inset 0px 0 1px 1px rgba(0, 0, 0, 0.3);
+ -moz-box-shadow: inset 0px 0 1px 1px rgba(0, 0, 0, 0.3);
+ box-shadow: inset 0px 0 1px 1px rgba(0, 0, 0, 0.3);
+}
+
+#calendars .treelist div span.actions {
+ display: inline-block;
+ position: absolute;
+ top: 2px;
+ right: 22px;
+ padding: 5px 20px 0 6px;
+/* min-width: 40px; */
+ height: 19px;
+ text-align: right;
+ z-index: 4;
+}
+
+#calendars .treelist div:hover span.actions {
+ top: 1px;
+ right: 21px;
+ border: 1px solid #c6c6c6;
+ border-radius: 4px;
+ background: #f7f7f7;
+ background: -moz-linear-gradient(top, #f9f9f9 0%, #e6e6e6 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f9f9f9), color-stop(100%,#e6e6e6));
+ background: -o-linear-gradient(top, #f9f9f9 0%, #e6e6e6 100%);
+ background: -ms-linear-gradient(top, #f9f9f9 0%, #e6e6e6 100%);
+ background: linear-gradient(top, #f9f9f9 0%, #e6e6e6 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#e6e6e6', GradientType=0);
+}
+
+#calendars .treelist li a.subscribed {
+ display: inline-block;
+ position: absolute;
+ top: 5px;
+ right: 3px;
+ height: 16px;
+ width: 16px;
+ padding: 0;
+ background: url(images/calendars.png) -100px 0 no-repeat;
+ overflow: hidden;
+ text-indent: -5000px;
+ cursor: pointer;
+}
+
+#calendars .treelist div:hover a.subscribed,
+#calendars .treelist div a.subscribed:focus {
+ background-position: 0 -110px;
+}
+
+#calendars .treelist div.subscribed a.subscribed,
+#calendars .treelist div.subscribed a.subscribed:focus {
+ background-position: -16px -110px;
+}
+
+#calendars .treelist div.subscribed.partial a.subscribed,
+#calendars .treelist div.subscribed.partial a.subscribed:focus {
+ background-position: -16px -148px;
+}
+
+#calendars .treelist div a.remove:focus,
+#calendars .treelist div a.quickview:focus,
+#calendars .treelist div a.subscribed:focus {
+ border-radius: 3px;
+ outline: 2px solid rgba(30,150,192, 0.5);
+}
+
+#calendars .treelist div a.remove,
+#calendars .treelist div a.quickview {
+ display: inline-block;
+ width: 16px;
+ height: 16px;
+ margin-right: 4px;
+ padding: 0;
+ background: url(images/calendars.png) -100px 0 no-repeat;
+ overflow: hidden;
+ text-indent: -5000px;
+ cursor: pointer;
+}
+
+#calendars .treelist div a.quickview:focus,
+#calendars .treelist div:hover a.quickview {
+ background-position: 0 -128px;
+ background-color: transparent !important;
+}
+
+#calendars .treelist div.focusview a.quickview {
+ background-position: -16px -128px;
+}
+
+#calendars .treelist div a.remove:focus,
+#calendars .treelist div:hover a.remove {
+ background-position: -16px -168px;
+ background-color: transparent !important;
+}
+
+#calendars .searchresults .treelist div a.remove {
+ display: none;
+}
+
+#calendars .treelist li input {
+ position: absolute;
+ top: 5px;
+ left: 18px;
+}
+
+#calendars .treelist li div.treetoggle {
+ top: 8px;
+}
+
+#calendars .treelist li.virtual div.treetoggle {
+ top: 6px;
+}
+
+#calendars .treelist.flat li input {
+ left: 4px;
+}
+
+#calendars .treelist ul li div.folder,
+#calendars .treelist ul li div.calendar {
+ margin-left: 16px;
+}
+
+#calendars .treelist ul ul li div.folder,
+#calendars .treelist ul ul li div.calendar {
+ margin-left: 32px;
+}
+
+#calendars .treelist ul ul ul li div.folder,
+#calendars .treelist ul ul ul li div.calendar {
+ margin-left: 48px;
+}
+
+#calendars .treelist li.selected > div.calendar {
+ background-color: #c7e3ef;
+}
+
+#calendars .treelist li.selected > span.calname {
+ font-weight: bold;
+}
+
+#calendars .treelist div.readonly span.calname {
+ background-position: right -20px;
+}
+
+#calendars .treelist li.user > div > span.calname {
+ background-position: right -38px;
+}
+/*
+#calendars .treelist div.user.readonly span.calname {
+ background-position: right -56px;
+}
+
+#calendars .treelist div.shared span.calname {
+ background-position: right -74px;
+}
+
+#calendars .treelist div.shared.readonly span.calname {
+ background-position: right -92px;
+}
+*/
+
+#calendars .treelist .calendar .count {
+ position: absolute;
+ display: inline-block;
+ top: 5px;
+ right: 68px;
+ min-width: 1.3em;
+ padding: 2px 4px;
+ background: #005d76;
+ background: -moz-linear-gradient(top, #005d76 0%, #004558 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#005d76), color-stop(100%,#004558));
+ background: -o-linear-gradient(top, #005d76 0%, #004558 100%);
+ background: -ms-linear-gradient(top, #005d76 0%, #004558 100%);
+ background: linear-gradient(to bottom, #005d76 0%, #004558 100%);
+ -webkit-box-shadow: inset 0 1px 1px 0 #002635;
+ box-shadow: inset 0 1px 1px 0 #002635;
+ border-radius: 10px;
+ color: #fff;
+ text-align: center;
+ font-style: normal;
+ font-weight: bold;
+ text-shadow: none;
+ z-index: 3;
+}
+
+#calendars .searchresults {
+ background: #b0ccd7;
+ margin-top: 8px;
+}
+
+#calendars .searchresults .boxtitle {
+ background: none;
+ padding: 2px 8px 2px 8px;
+}
+
+#calendars .searchresults .listing li {
+ background-color: #c7e3ef;
+}
+
+#calfeedurl,
+#caldavurl {
+ width: 98%;
+ background: #fbfbfb;
+ padding: 4px;
+ margin-bottom: 1em;
+ resize: none;
+}
+
+#agendalist {
+ width: 100%;
+ margin: 0 auto;
+ margin-top: 60px;
+ border: 1px solid #C1DAD7;
+ display: none;
+}
+
+#agendalist table {
+ width: 100%;
+}
+
+#agendalist td,
+#agendalist th {
+ border-right: 1px solid #C1DAD7;
+ border-bottom: 1px solid #C1DAD7;
+ background: #fff;
+ padding: 6px 6px 6px 12px;
+}
+
+#agendalist tr {
+ vertical-align: top;
+}
+
+#agendalist th {
+ font-weight: bold;
+}
+
+#calendartoolbar {
+ position: absolute;
+ top: -6px;
+ left: 0;
+ height: 40px;
+ white-space: nowrap;
+}
+
+#calendartoolbar a.button {
+ background-image: url(images/toolbar.png);
+ padding-left: 0;
+ padding-right: 0;
+ min-width: 50px;
+ max-width: 60px;
+}
+
+#calendartoolbar a.button.addevent {
+ background-position: center 1px;
+ max-width: 70px;
+}
+
+#calendartoolbar a.button.export {
+ background-position: center -40px;
+}
+
+#calendartoolbar a.button.import {
+ background-position: center -440px;
+}
+
+#calendartoolbar a.button.print {
+ background-position: center -80px;
+}
+
+body.calendarmain #quicksearchbar {
+ z-index: 20;
+}
+
+body.calendarmain #searchmenulink {
+ width: 15px;
+}
+
+.calendarmain div.uidialog {
+ display: none;
+}
+
+#user {
+ position: absolute;
+ top: 10px;
+ right: 100px;
+ left: 100px;
+ text-align: center;
+}
+
+a.morelink {
+ font-size: 90%;
+ color: #0069a6;
+ text-decoration: none;
+}
+
+a.morelink:hover {
+ text-decoration: underline;
+}
+
+a.miniColors-trigger {
+ margin-top: -3px;
+}
+
+.calendar.attachmentwin #attachmenttoolbar {
+ position: relative;
+ top: -6px;
+ height: 40px;
+}
+
+.calendar.attachmentwin #attachmentcontainer {
+ position: absolute;
+ top: 0;
+ left: 232px;
+ right: 0;
+ bottom: 0;
+}
+
+.calendar.attachmentwin #attachmentframe {
+ width: 100%;
+ height: 100%;
+ border: 0;
+ background-color: #fff;
+ border-radius: 4px;
+}
+
+.calendar.attachmentwin #partheader {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 220px;
+ bottom: 0;
+}
+
+.calendar.attachmentwin #partheader table {
+ table-layout: fixed;
+ overflow: hidden;
+}
+
+.calendar.attachmentwin #partheader table td {
+ color: #666;
+ padding: 4px 6px;
+ text-overflow: ellipsis;
+ overflow: hidden;
+}
+
+.calendar.attachmentwin #partheader table td.header {
+ font-weight: bold;
+}
+
+.calendar.attachmentwin #partheader table td.title {
+ width: 60px;
+ padding-right: 0;
+}
+
+#edit-attachments {
+ margin: 0.6em 0;
+}
+
+#edit-attachments ul li {
+ display: block;
+ color: #333;
+ font-weight: bold;
+ padding: 4px 4px 3px 30px;
+ text-shadow: 0px 1px 1px #fff;
+ text-decoration: none;
+ white-space: nowrap;
+ line-height: 20px;
+}
+
+#edit-attachments ul li a.file {
+ padding: 0;
+}
+
+#edit-attachments-form {
+ margin-top: 1em;
+ padding-top: 0.8em;
+ border-top: 2px solid #fafafa;
+}
+
+#edit-attachments-form .formbuttons {
+ margin: 0.5em 0;
+}
+
+#eventedit .droptarget {
+ background-image: url(../../../../skins/larry/images/filedrop.png) !important;
+ background-position: center bottom !important;
+ background-repeat: no-repeat !important;
+}
+
+#eventedit .droptarget.hover,
+#eventedit .droptarget.active {
+ border-color: #019bc6;
+ box-shadow: 0 0 3px 2px rgba(71,135,177, 0.5);
+ -moz-box-shadow: 0 0 3px 2px rgba(71,135,177, 0.5);
+ -webkit-box-shadow: 0 0 3px 2px rgba(71,135,177, 0.5);
+ -o-box-shadow: 0 0 3px 2px rgba(71,135,177, 0.5);
+}
+
+#eventedit .droptarget.hover {
+ background-color: #d9ecf4;
+ box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9);
+ -moz-box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9);
+ -webkit-box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9);
+ -o-box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9);
+}
+
+#event-attachments .attachmentslist li {
+ float: left;
+ margin-right: 1em;
+}
+
+#event-attachments .attachmentslist li a {
+ outline: none;
+}
+
+#event-panel-attachments.disabled .attachmentslist li a.delete {
+ visibility: hidden;
+}
+
+.event-attendees span.attendee {
+ padding-right: 18px;
+ margin-right: 0.5em;
+ background: url(images/attendee-status.png) right 0 no-repeat;
+}
+
+.event-attendees span.attendee a.mailtolink {
+ text-decoration: none;
+ white-space: nowrap;
+ outline: none;
+}
+
+.event-attendees span.attendee a.mailtolink:hover {
+ text-decoration: underline;
+}
+
+.event-attendees span.accepted {
+ background-position: right -20px;
+}
+
+.event-attendees span.declined {
+ background-position: right -40px;
+}
+
+.event-attendees span.tentative {
+ background-position: right -60px;
+}
+
+.event-attendees span.delegated {
+ background-position: right -180px;
+}
+
+.event-attendees span.organizer {
+ background-position: right -80px;
+}
+
+#all-event-attendees span.attendee {
+ display: block;
+ margin-bottom: 0.4em;
+ padding-bottom: 0.3em;
+ border-bottom: 1px solid #ddd;
+}
+
+.calendarmain .fc-view-table td.fc-list-header,
+#attendees-freebusy-table h3.boxtitle,
+#schedule-freebusy-times thead th,
+.edit-attendees-table thead th
+ {
+ color: #69939e;
+ font-size: 11px;
+ font-weight: bold;
+ background: #d6eaf3;
+ background: -moz-linear-gradient(left, #e3f2f6 0, #d6eaf3 14px, #d6eaf3 100%);
+ background: -webkit-gradient(linear, left top, right top, color-stop(0,#e3f2f6), color-stop(8%,#d6eaf3), color-stop(100%,#d6eaf3));
+ background: -o-linear-gradient(left, #e3f2f6 0, #d6eaf3 14px, #d6eaf3 100%);
+ background: -ms-linear-gradient(left, #e3f2f6 0, #d6eaf3 14px ,#d6eaf3 100%);
+ background: linear-gradient(left, #e3f2f6 0, #d6eaf3 14px, #d6eaf3 100%);
+ border: 0;
+ border-bottom: 1px solid #ccc;
+ height: 18px;
+ line-height: 18px;
+ padding: 8px 7px 3px 7px;
+}
+
+/* jQuery UI overrides */
+
+.calendarmain .eventdialog h1 {
+ font-size: 18px;
+ margin: -0.3em 0 0.4em 0;
+}
+
+.calendarmain .eventdialog label,
+.calendarmain .eventdialog h5.label {
+ font-weight: normal;
+ font-size: 1em;
+ color: #999;
+ margin: 0 0 0.2em 0;
+}
+
+.calendarmain .eventdialog label span.index,
+.calendarmain .eventdialog h5.label .index {
+ vertical-align: inherit;
+ margin-left: 0.6em;
+}
+
+.calendarmain .eventdialog {
+ margin: 0 -0.2em;
+}
+
+.calendarmain .eventdialog.status-cancelled {
+ background: url(images/badge_cancelled.png) top right no-repeat;
+}
+
+.calendarmain .eventdialog.sensitivity-private {
+ background: url(images/badge_private.png) top right no-repeat;
+}
+
+.calendarmain .eventdialog.sensitivity-confidential {
+ background: url(images/badge_confidential.png) top right no-repeat;
+}
+
+.calendarmain .sensitivity-private #event-title {
+ margin-right: 50px;
+}
+
+.calendarmain .sensitivity-confidential #event-title {
+ margin-right: 60px;
+}
+
+.calendarmain .eventdialog div.event-line {
+ margin-top: 0.1em;
+ margin-bottom: 0.3em;
+}
+
+.calendarmain .eventdialog div.event-line a.iconbutton {
+ margin-left: 0.5em;
+ line-height: 17px;
+}
+
+.calendarmain .eventdialog div.event-line span.event-text + label {
+ margin-left: 2em;
+}
+
+.calendarmain .eventdialog #event-rsvp-comment,
+.calendarmain .eventdialog #event-created-changed {
+ margin-top: 0.6em;
+}
+
+.eventdialog .event-text-old,
+.eventdialog .event-text-new,
+.eventdialog .event-text-diff {
+ padding: 2px;
+}
+
+.eventdialog .event-text-diff del,
+.eventdialog .event-text-diff ins {
+ text-decoration: none;
+ color: inherit;
+}
+
+.eventdialog .event-text-old,
+.eventdialog .event-text-diff del {
+ background-color: #fdd;
+ /* text-decoration: line-through; */
+}
+
+.eventdialog .event-text-new,
+.eventdialog .event-text-diff ins {
+ background-color: #dfd;
+}
+
+#eventdiff .attachmentslist li a,
+#eventdiff .attachmentslist li a:hover {
+ cursor: default;
+ text-decoration: none;
+}
+
+.changelog-table .loading {
+ color: #666;
+ margin: 1em 0;
+ padding: 1px 0 2px 24px;
+ background: url(images/loading_blue.gif) top left no-repeat;
+}
+
+.changelog-dialog .compare-button {
+ margin: 4px 0;
+}
+
+.changelog-table tbody td {
+ padding: 4px 7px;
+ vertical-align: middle;
+}
+
+.changelog-table tbody tr:last-child td {
+ border-bottom: 0;
+}
+
+.changelog-table tbody tr.undisclosed td.date,
+.changelog-table tbody tr.undisclosed td.user {
+ font-style: italic;
+}
+
+.changelog-table .diff {
+ width: 4em;
+ padding: 2px;
+}
+
+.changelog-table .revision {
+ width: 6em;
+}
+
+.changelog-table .date {
+ width: 11em;
+}
+
+.changelog-table .user {
+ width: auto;
+}
+
+.changelog-table .operation {
+ width: 15%;
+}
+
+.changelog-table .actions {
+ width: 50px;
+ text-align: right;
+ padding: 4px;
+}
+
+.changelog-table td a.iconbutton.restore,
+.changelog-table td a.iconbutton.preview {
+ width: 16px;
+ margin-right: 2px;
+ background-image: url(images/calendars.png);
+ background-position: -1px -147px;
+}
+
+.changelog-table td a.iconbutton.restore {
+ background-image: url(images/calendars.png);
+ background-position: -1px -167px;
+}
+
+.changelog-table tr.first td a.iconbutton {
+ opacity: 0.3;
+ cursor: default;
+}
+
+#event-partstat .changersvp {
+ cursor: pointer;
+ color: #333;
+ text-decoration: none;
+}
+
+#event-partstat .iconbutton {
+ visibility: hidden;
+}
+
+#event-partstat .changersvp:focus .iconbutton,
+#event-partstat:hover .iconbutton {
+ visibility: visible;
+}
+
+#eventedit {
+ position: relative;
+ top: -1.5em;
+ padding: 0.5em 0.1em;
+ margin: 0 -0.2em;
+}
+
+#eventedit input.text,
+#eventedit textarea {
+ width: 97%;
+}
+
+#eventtabs {
+ position: relative;
+ padding: 0;
+ border: 0;
+ border-radius: 0;
+}
+
+div.form-section,
+.calendarmain .eventdialog div.event-section,
+#eventtabs div.event-section {
+ margin-top: 0.2em;
+ margin-bottom: 0.6em;
+}
+
+#eventtabs .border-after {
+ padding-bottom: 0.8em;
+ margin-bottom: 0.8em;
+ border-bottom: 2px solid #fafafa;
+}
+
+.calendarmain .eventdialog label,
+#eventedit label,
+.form-section label {
+ display: inline-block;
+ min-width: 7em;
+ padding-right: 0.5em;
+}
+
+.calendarmain .eventdialog #event-url .event-text {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+#event-links .attachmentslist {
+ display: inline-block;
+}
+
+#event-links label,
+#edit-event-links label {
+ float: left;
+ margin-top: 0.3em;
+ padding-right: 0.75em;
+}
+
+#edit-event-links .event-text {
+ margin-left: 8em;
+ min-height: 22px;
+}
+
+#edit-event-links .attachmentslist li.message a.messagelink,
+#event-links .attachmentslist li.message a.messagelink {
+ padding: 0 0 0 24px;
+}
+
+#edit-event-links .attachmentslist li a.delete {
+ top: 0;
+ background-position: -6px -378px;
+}
+
+#edit-event-links .attachmentslist li.deleted a.messagelink,
+#edit-event-links .attachmentslist li.deleted a.messagelink:hover {
+ text-decoration: line-through;
+}
+
+#eventedit .formtable td.label {
+ min-width: 6em;
+}
+
+td.topalign {
+ vertical-align: top;
+}
+
+#eventedit label.weekday,
+#eventedit label.monthday {
+ min-width: 3em;
+}
+
+#eventedit label.month {
+ min-width: 5em;
+}
+
+#eventedit .formtable td {
+ padding: 0.2em 0;
+}
+
+.ui-dialog .event-update-confirm {
+ padding: 0 0.5em 0.5em 0.5em;
+}
+
+.event-dialog-message,
+.event-update-confirm .message {
+ margin-top: 0.5em;
+ padding: 0.8em;
+ border: 1px solid #ffdf0e;
+ background-color: #fef893;
+}
+
+.event-dialog-message .message,
+.event-update-confirm .message {
+ margin-bottom: 0.5em;
+}
+
+.edit-recurring-warning .savemode {
+ padding-left: 20px;
+}
+
+.event-update-confirm .savemode {
+ padding-left: 30px;
+}
+
+.event-dialog-message span.ui-icon,
+.event-update-confirm span.ui-icon {
+ float: left;
+ margin: 0 7px 20px 0;
+}
+
+.event-dialog-message label,
+.event-update-confirm label {
+ min-width: 3em;
+ padding-right: 1em;
+}
+
+.event-update-confirm a.button {
+ margin: 0 0.5em 0 0.2em;
+ min-width: 5em;
+ text-align: center;
+}
+
+.libcal-rsvp-replymode li a {
+ cursor: default;
+}
+
+#event-rsvp,
+#edit-attendees-notify {
+ margin: 0.6em 0 0.3em 0;
+ padding: 0.5em;
+}
+
+#event-rsvp .itip-reply-controls {
+ margin-top: 0.5em;
+}
+
+#event-rsvp .itip-reply-controls label {
+ color: #333;
+}
+
+#event-rsvp .itip-reply-controls textarea {
+ width: 95%;
+}
+
+#eventedit .edit-attendees-table {
+ width: 100%;
+ margin-top: 0.5em;
+}
+
+#eventedit .edit-attendees-table th.role,
+#eventedit .edit-attendees-table td.role {
+ width: 9em;
+}
+
+#eventedit .edit-attendees-table th.availability,
+#eventedit .edit-attendees-table td.availability,
+#eventedit .edit-attendees-table th.confirmstate,
+#eventedit .edit-attendees-table td.confirmstate {
+ width: 4em;
+}
+
+#eventedit .edit-attendees-table th.options,
+#eventedit .edit-attendees-table td.options {
+ width: 16px;
+ padding: 2px 4px;
+}
+
+#eventedit .edit-attendees-table th.invite,
+#eventedit .edit-attendees-table td.invite {
+ width: 44px;
+ padding: 2px;
+}
+
+#eventedit .edit-attendees-table th.invite label {
+ display: inline-block;
+ position: relative;
+ top: 4px;
+ width: 24px;
+ height: 18px;
+ min-width: 24px;
+ padding: 0;
+ overflow: hidden;
+ text-indent: -5000px;
+ white-space: nowrap;
+ background: url(images/sendinvitation.png) 1px 0 no-repeat;
+}
+
+#eventedit .edit-attendees-table tbody tr:last-child td {
+ border-bottom: 0;
+}
+
+#eventedit .edit-attendees-table th.name,
+#eventedit .edit-attendees-table td.name {
+ width: auto;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+#eventedit .edit-attendees-table td.name select {
+ width: 100%;
+}
+
+#eventedit .edit-attendees-table td.name .attendee-name {
+ display: block;
+ position: relative;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ padding: 5px 7px 6px;
+ margin: -5px -7px -6px;
+}
+
+#eventedit .edit-attendees-table a.deletelink {
+ display: inline-block;
+ width: 17px;
+ height: 17px;
+ padding: 0;
+ overflow: hidden;
+ text-indent: 1000px;
+}
+
+#eventedit .edit-attendees-table a.expandlink {
+ position: absolute;
+ top: 4px;
+ right: 6px;
+ width: 16px;
+ height: 16px;
+}
+
+#edit-attendees-form,
+#edit-resources-form {
+ position: relative;
+ margin-top: 15px;
+}
+
+#edit-attendees-form .attendees-invitebox {
+ text-align: right;
+ margin: 0;
+}
+
+#edit-attendees-form .attendees-invitebox label {
+ padding-right: 3px;
+}
+
+#edit-resources-form #edit-resource-find {
+ position: absolute;
+ top: 0;
+ right: 0;
+}
+
+#edit-attendees-form #edit-attendee-schedule {
+ position: absolute;
+ right: 0;
+ top: 0;
+}
+
+.edit-attendees-table select.edit-attendee-role {
+ border: 0;
+ padding: 2px;
+ background: white;
+ width: 100%;
+}
+
+.availability img.availabilityicon {
+ margin: 1px;
+ width: 14px;
+ height: 14px;
+ border-radius: 4px;
+ -moz-border-radius: 4px;
+}
+
+.availability img.availabilityicon.loading {
+ background: url(images/loading_blue.gif) center no-repeat;
+}
+
+#schedule-freebusy-times td.unknown,
+.availability img.availabilityicon.unknown {
+ background: #ddd;
+}
+
+#schedule-freebusy-times td.free,
+.availability img.availabilityicon.free {
+ background: #abd640;
+}
+
+#schedule-freebusy-times td.busy,
+.availability img.availabilityicon.busy {
+ background: #e26569;
+}
+
+#schedule-freebusy-times td.tentative,
+.availability img.availabilityicon.tentative {
+ background: #8383fc;
+}
+
+#schedule-freebusy-times td.out-of-office,
+.availability img.availabilityicon.out-of-office {
+ background: #fbaa68;
+}
+
+#schedule-freebusy-times td.all-busy,
+#schedule-freebusy-times td.all-tentative,
+#schedule-freebusy-times td.all-out-of-office {
+ background-image: url(images/freebusy-colors.png);
+ background-position: top right;
+ background-repeat: no-repeat;
+}
+
+#schedule-freebusy-times td.all-tentative {
+ background-position: right -40px;
+}
+
+#schedule-freebusy-times td.all-out-of-office {
+ background-position: right -80px;
+}
+
+#edit-attendees-legend {
+ margin-top: 3em;
+ margin-bottom: 0.5em;
+}
+
+#edit-attendees-legend .legend {
+ margin-right: 2em;
+ white-space: nowrap;
+}
+
+#edit-attendees-legend img.availabilityicon {
+ vertical-align: middle;
+}
+
+.edit-attendees-table tbody td.confirmstate {
+ overflow: hidden;
+ white-space: nowrap;
+ text-indent: -2000%;
+}
+
+.edit-attendees-table td.confirmstate span {
+ display: block;
+ width: 20px;
+ background: url(images/attendee-status.png) 5px 0 no-repeat;
+}
+
+.edit-attendees-table td.confirmstate span.needs-action {
+}
+
+.edit-attendees-table td.confirmstate span.accepted {
+ background-position: 5px -20px;
+}
+
+.edit-attendees-table td.confirmstate span.declined {
+ background-position: 5px -40px;
+}
+
+.edit-attendees-table td.confirmstate span.tentative {
+ background-position: 5px -60px;
+}
+
+.edit-attendees-table td.confirmstate span.delegated {
+ background-position: 5px -180px;
+}
+
+#attendees-freebusy-table {
+ width: 100%;
+ table-layout: fixed;
+ border: 1px solid #bbd3da;
+}
+
+#attendees-freebusy-table td.attendees {
+ width: 18em;
+ vertical-align: top;
+ overflow: hidden;
+}
+
+#attendees-freebusy-table td.times {
+ width: auto;
+ vertical-align: top;
+}
+
+#attendees-freebusy-table div.scroll {
+ position: relative;
+ overflow: auto;
+}
+
+#attendees-freebusy-table h3.boxtitle {
+ margin: 0;
+ border-color: #ccc;
+}
+
+.attendees-list .attendee {
+ padding: 4px 4px 4px 1px;
+ background: url(images/attendee-status.png) 2px -97px no-repeat;
+ white-space: nowrap;
+}
+
+.attendees-list a.attendee-role-toggle {
+ display: inline-block;
+ width: 16px;
+ margin-right: 3px;
+ cursor: pointer;
+}
+
+.attendees-list div.attendee {
+ border-top: 1px solid #ccc;
+}
+
+.attendees-list span.attendee {
+ padding-left: 20px;
+ margin-right: 2em;
+}
+
+.attendees-list .organizer {
+ background-position: 3px -77px;
+}
+
+.attendees-list .opt-participant {
+ background-position: 2px -117px;
+}
+
+.attendees-list .non-participant {
+ background-position: 2px -137px;
+}
+
+.attendees-list .chair {
+ background-position: 2px -157px;
+}
+
+.attendees-list .loading {
+ background: url(images/loading_blue.gif) 1px 50% no-repeat;
+}
+
+.attendees-list .total {
+ background: none;
+ padding-left: 4px;
+ font-weight: bold;
+}
+
+.attendees-list .spacer,
+#schedule-freebusy-times tr.spacer td {
+ background: 0;
+ font-size: 50%;
+}
+
+#schedule-freebusy-times {
+ border-collapse: collapse;
+ width: 100%;
+}
+
+#schedule-freebusy-times td {
+ padding: 4px;
+ border: 1px solid #ccc;
+}
+
+#attendees-freebusy-table div.timesheader,
+#schedule-freebusy-times tr.times td {
+ min-width: 30px;
+ font-size: 9px;
+ padding: 5px 2px 6px 2px;
+ text-align: center;
+ color: #004658;
+}
+
+#schedule-freebusy-times tr.times td.allday {
+ min-width: 60px;
+}
+
+#schedule-freebusy-times tr.times td {
+ cursor: pointer;
+}
+
+#schedule-event-time {
+ position: absolute;
+ border: 2px solid #333;
+ background: #777;
+ background: rgba(60, 60, 60, 0.6);
+ opacity: 0.5;
+ border-radius: 4px;
+ cursor: move;
+ filter: alpha(opacity=40); /* IE8 */
+}
+
+#eventfreebusy .schedule-options {
+ position: relative;
+ margin-bottom: 1.5em;
+}
+
+#eventfreebusy .schedule-buttons {
+ position: absolute;
+ top: 0.5em;
+ right: 0;
+ margin-right: 0;
+}
+
+#eventfreebusy .schedule-find-buttons {
+ padding-bottom:0.5em;
+}
+
+#eventfreebusy .schedule-find-buttons button {
+ min-width: 9em;
+ text-align: center;
+}
+
+#eventedit .attendees-commentbox label {
+ display: block;
+}
+
+#eventedit .ui-tabs-panel {
+ min-height: 24em;
+}
+
+#rcmKSearchpane ul li.resource i.icon,
+#rcmKSearchpane ul li.collection i.icon {
+ background-image: url(images/autocomplete.png);
+ background-position: -1px -2px;
+}
+
+#rcmKSearchpane ul li.collection i.icon {
+ background-position: -1px -26px;
+}
+
+a.dropdown-link {
+ font-size: 11px;
+ text-decoration: none;
+}
+
+a.dropdown-link:after {
+ content: ' â–¼';
+ font-size: 10px;
+ color: #666;
+}
+
+.ui-dialog-buttonset a.dropdown-link {
+ position: relative;
+ top: 2px;
+ margin: 0 1em;
+ color: #333;
+}
+
+#calendarsidebar .ui-datepicker-calendar {
+ table-layout: fixed;
+}
+
+.ui-datepicker-calendar .ui-datepicker-week-col {
+ border: 0;
+ color: #999;
+ font-size: 90%;
+ text-align: right;
+ padding-right: 6px;
+ width: 20px;
+ overflow: hidden;
+}
+
+.ui-autocomplete {
+ max-height: 160px;
+ overflow-y: auto;
+ overflow-x: hidden;
+}
+
+.ui-autocomplete .ui-menu-item {
+ white-space: nowrap;
+}
+
+* html .ui-autocomplete {
+ height: 160px;
+}
+
+.calendarmain span.spacer {
+ padding-left: 3em;
+}
+
+#agendaoptions {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ height: auto;
+ z-index: 10;
+ padding: 4px 5px;
+ border: 1px solid #c3c3c3;
+ border-top-color: #ddd;
+ border-bottom-color: #bbb;
+ border-radius: 0 0 4px 4px;
+ background: #ebebeb;
+ background: -moz-linear-gradient(top, #ebebeb 0%, #c6c6c6 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ebebeb), color-stop(100%,#c6c6c6));
+ background: -o-linear-gradient(top, #ebebeb 0%, #c6c6c6 100%);
+ background: -ms-linear-gradient(top, #ebebeb 0%, #c6c6c6 100%);
+ background: linear-gradient(top, #ebebeb 0%, #c6c6c6 100%);
+}
+
+#agendaoptions label {
+ text-shadow: 1px 1px #fff;
+ padding-right: 0.5em;
+}
+
+#calendar-kolabform {
+ position: relative;
+ margin: 0 -8px;
+ min-width: 660px;
+ min-height: 400px;
+}
+
+#calendar-kolabform table td.title {
+ font-weight: bold;
+ white-space: nowrap;
+ color: #666;
+ padding-right: 10px;
+}
+
+#resource-selection {
+ position: absolute;
+ top: 0;
+ left: 8px;
+ right: 0;
+ bottom: 0;
+}
+
+#resource-selection .scroller {
+ top: 34px;
+}
+
+#resource-dialog-left {
+ position: absolute;
+ top: 10px;
+ left: 0;
+ width: 380px;
+ bottom: 10px;
+}
+
+#resource-dialog-right {
+ position: absolute;
+ top: 10px;
+ left: 392px;
+ right: 8px;
+ bottom: 10px;
+}
+
+#resource-info {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ height: 48%;
+}
+
+#resource-info table {
+ margin: 8px;
+ width: 97%;
+}
+
+#resource-info thead td {
+ background: none;
+ font-weight: bold;
+ font-size: 14px;
+}
+
+#resource-availability {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ height: 49%;
+}
+
+#resource-freebusy-calendar {
+ position: absolute;
+ top: 33px;
+ left: -1px;
+ right: -1px;
+ bottom: -1px;
+}
+
+#resource-freebusy-calendar .fc-content {
+ top: 0;
+}
+
+#resource-freebusy-calendar .fc-content .fc-event-bg {
+ background: 0;
+}
+
+#resource-freebusy-calendar .fc-event.status-busy,
+#resource-freebusy-calendar .status-busy .fc-event-skin {
+ border-color: #e26569;
+ background-color: #e26569;
+}
+
+#resource-freebusy-calendar .fc-event.status-tentative,
+#resource-freebusy-calendar .status-tentative .fc-event-skin {
+ border-color: #8383fc;
+ background: #8383fc;
+}
+
+#resource-freebusy-calendar .fc-event.status-outofoffice,
+#resource-freebusy-calendar .status-outofoffice .fc-event-skin {
+ border-color: #fbaa68;
+ background: #fbaa68;
+}
+
+#resourcequicksearch {
+ padding: 4px;
+ background: #c7e3ef;
+}
+
+#resourcesearchbox {
+ width: 100%;
+ height: 26px;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+#resourcequicksearch .iconbutton.searchoptions {
+ position: absolute;
+ top: 5px;
+ left: 6px;
+ width: 16px;
+}
+
+.searchbox .iconbutton.reset {
+ position: absolute;
+ top: 4px;
+ right: 1px;
+}
+
+
+
+/* fullcalendar style overrides */
+
+.rcube-fc-content {
+ overflow: hidden;
+ border: 0;
+ border-radius: 4px;
+ box-shadow: 0 0 2px #999;
+ -o-box-shadow: 0 0 2px #999;
+ -webkit-box-shadow: 0 0 2px #999;
+ -moz-box-shadow: 0 0 2px #999;
+}
+
+.calendarmain .fc-content {
+ position: absolute !important;
+ top: 40px;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: #fff;
+}
+
+.calendarmain.quickview-active .fc-content {
+ background-image: url('images/focusview.png');
+ background-position: center;
+ background-repeat: no-repeat;
+}
+
+#fish-eye-view .fc-content {
+ top: 2px;
+ bottom: 2px;
+}
+
+#quickview-calendar {
+ padding: 8px;
+ overflow: hidden;
+}
+
+.calendarmain .fc-button,
+.calendarmain .fc-button.fc-state-default,
+.calendarmain .fc-button.fc-state-hover {
+ background-color: #f5f5f5;
+ background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
+ background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
+ background-position: 0 0;
+}
+
+.calendarmain #calendar .fc-button,
+.calendarmain #calendar .fc-button.fc-state-default,
+.calendarmain #calendar .fc-button.fc-state-hover {
+ margin: 0 0 0 0;
+ height: 20px;
+ line-height: 20px;
+ color: #505050;
+ text-shadow: 0px 1px 1px #fff;
+ border: 1px solid #e6e6e6;
+ background: #d8d8d8;
+ background: -moz-linear-gradient(top, #d8d8d8 0%, #bababa 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#d8d8d8), color-stop(100%,#bababa));
+ background: -o-linear-gradient(top, #d8d8d8 0%, #bababa 100%);
+ background: -ms-linear-gradient(top, #d8d8d8 0%, #bababa 100%);
+ background: linear-gradient(top, #d8d8d8 0%, #bababa 100%);
+ box-shadow: 0 1px 1px 0 #999;
+ -o-box-shadow: 0 1px 1px 0 #999;
+ -webkit-box-shadow: 0 1px 1px 0 #999;
+ -moz-box-shadow: 0 1px 1px 0 #999;
+ text-decoration: none;
+}
+
+.calendarmain #calendar .fc-button.fc-state-disabled {
+ color: #999;
+ background: #d8d8d8;
+}
+
+.calendarmain .fc-button.fc-state-active,
+.calendarmain .fc-button.fc-state-down,
+.calendarmain #calendar .fc-button.fc-state-active,
+.calendarmain #calendar .fc-button.fc-state-down {
+ color: #333;
+ background: #bababa;
+ background: -moz-linear-gradient(top, #bababa 0%, #d8d8d8 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#bababa), color-stop(100%,#d8d8d8));
+ background: -o-linear-gradient(top, #bababa 0%, #d8d8d8 100%);
+ background: -ms-linear-gradient(top, #bababa 0%, #d8d8d8 100%);
+ background: linear-gradient(top, #bababa 0%, #d8d8d8 100%);
+}
+
+.calendarmain #calendar .fc-header .fc-button {
+ margin-left: -1px;
+ margin-right: 0;
+}
+
+.calendarmain #calendar .fc-header-left .fc-button {
+ display: inline-block;
+ margin: 0;
+ text-align: center;
+ font-size: 10px;
+ color: #555;
+ min-width: 50px;
+ max-width: 75px;
+ height: 13px;
+ line-height: 1em;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ margin: -7px 0 0 0;
+ padding: 28px 2px 0 2px;
+ text-shadow: 0px 1px 1px #EEE;
+ border: 0;
+ background: url(images/toolbar.png) center 100px no-repeat;
+ box-shadow: none;
+ -o-box-shadow: none;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ outline: none;
+}
+
+.calendarmain #calendar .fc-header-left .fc-button:focus {
+ color: #fff;
+ text-shadow: 0px 1px 1px #666;
+ background-color: rgba(30,150,192, 0.5);
+ border-radius: 3px;
+}
+
+.calendarmain #calendar .fc-header-left .fc-button.fc-state-active {
+ font-weight: bold;
+ color: #222;
+ text-shadow: none;
+ background-color: transparent;
+}
+
+.calendarmain #calendar .fc-header-left .fc-button-agendaDay {
+ background-position: center -120px;
+}
+
+.calendarmain #calendar .fc-header-left .fc-button-agendaDay.fc-state-active {
+ background-position: center -160px;
+}
+
+.calendarmain #calendar .fc-header-left .fc-button-agendaWeek {
+ background-position: center -200px;
+}
+
+.calendarmain #calendar .fc-header-left .fc-button-agendaWeek.fc-state-active {
+ background-position: center -240px;
+}
+
+.calendarmain #calendar .fc-header-left .fc-button-month {
+ background-position: center -280px;
+}
+
+.calendarmain #calendar .fc-header-left .fc-button-month.fc-state-active {
+ background-position: center -320px;
+}
+
+.calendarmain #calendar .fc-header-left .fc-button-table {
+ background-position: center -360px;
+}
+
+.calendarmain #calendar .fc-header-left .fc-button-table.fc-state-active {
+ background-position: center -400px;
+}
+
+.calendarmain #calendar .fc-header-right {
+ padding-right: 252px;
+ padding-top: 4px;
+}
+
+.calendarmain #calendar .fc-header-title {
+ padding-top: 5px;
+}
+
+.fc-event {
+ font-size: 1em !important;
+}
+
+.fc-event-hori.fc-type-freebusy,
+.fc-event-vert.fc-type-freebusy {
+ opacity: 0.60;
+/*
+ color: #fff !important;
+ background: rgba(80,80,80,0.85) !important;
+ background: -moz-linear-gradient(top, rgba(80,80,80,0.85) 0%, rgba(48,48,48,0.9) 100%) !important;
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(80,80,80,0.85)), color-stop(100%,rgba(48,48,48,0.9))) !important;
+ background: -webkit-linear-gradient(top, rgba(80,80,80,0.85) 0%, rgba(48,48,48,0.85) 100%) !important;
+ background: -o-linear-gradient(top, rgba(80,80,80,0.85) 0%, rgba(48,48,48,0.85) 100%) !important;
+ background: -ms-linear-gradient(top, rgba(80,80,80,0.85) 0%, rgba(48,48,48,0.85) 100%) !important;
+ background: linear-gradient(to bottom, rgba(80,80,80,0.85) 0%, rgba(48,48,48,0.85) 100%) !important;
+ border-color: #444 !important;
+ cursor: default !important;
+*/
+ -moz-box-shadow: inset 0px 1px 0 0px #888;
+ -webkit-box-shadow: inset 0px 1px 0 0px #888;
+ -o-box-shadow: inset 0px 1px 0 0px #888;
+ box-shadow: inset 0px 1px 0 0px #888;
+}
+
+.fc-event-row.fc-type-freebusy td {
+ color: #999;
+}
+
+.fc-event-hori.fc-type-freebusy .fc-event-skin,
+.fc-event-hori.fc-type-freebusy .fc-event-inner,
+.fc-event-vert.fc-type-freebusy .fc-event-skin,
+.fc-event-vert.fc-type-freebusy .fc-event-inner {
+/*
+ background-color: transparent !important;
+ border-color: #444 !important;
+ color: #fff !important;
+ text-shadow: 0 1px 1px #000;
+*/
+}
+
+.fc-event-hori.fc-type-freebusy .fc-event-title,
+.fc-event-vert.fc-type-freebusy .fc-event-title {
+ position: absolute;
+ top: -5000px;
+}
+
+.fc-event-vert.fc-invitation-needs-action,
+.fc-event-hori.fc-invitation-needs-action {
+ border: 1px dashed #5757c7 !important;
+}
+
+.fc-event-vert.fc-invitation-tentative,
+.fc-event-hori.fc-invitation-tentative {
+ border: 1px dashed #eb8900 !important;
+}
+
+.fc-event-vert.fc-invitation-declined,
+.fc-event-hori.fc-invitation-declined {
+ border: 1px dashed #c00 !important;
+}
+
+.fc-event-vert.fc-event-ns-other.fc-invitation-declined,
+.fc-event-hori.fc-event-ns-other.fc-invitation-declined {
+ opacity: 0.7;
+}
+
+.fc-event-ns-other.fc-invitation-declined .fc-event-title {
+ text-decoration: line-through;
+}
+
+.fc-event-vert.fc-invitation-tentative .fc-event-head,
+.fc-event-vert.fc-invitation-declined .fc-event-head,
+.fc-event-vert.fc-invitation-needs-action .fc-event-head {
+/* background-color: transparent !important; */
+}
+
+.fc-event-vert.fc-invitation-tentative .fc-event-bg {
+ background: url(data:image/gif;base64,R0lGODlhCAAIAPABAOuJAP///yH/C1hNUCBEYXRhWE1QAT8AIfkEBQAAAQAsAAAAAAgACAAAAg4Egmipx+ZaDPCtVPFNBQA7) 0 0 repeat #fff;
+}
+
+.fc-event-vert.fc-invitation-needs-action .fc-event-bg {
+ background: url(data:image/gif;base64,R0lGODlhCAAIAPABAFdXx////yH/C1hNUCBEYXRhWE1QAT8AIfkEBQAAAQAsAAAAAAgACAAAAg4Egmipx+ZaDPCtVPFNBQA7) 0 0 repeat #fff;
+}
+
+.fc-event-vert.fc-invitation-declined .fc-event-bg {
+ background: url(data:image/gif;base64,R0lGODlhCAAIAPABAMwAAP///yH/C1hNUCBEYXRhWE1QAT8AIfkEBQAAAQAsAAAAAAgACAAAAg4Egmipx+ZaDPCtVPFNBQA7) 0 0 repeat #fff;
+}
+
+.fc-view-table tr.fc-invitation-tentative td,
+.fc-view-table tr.fc-invitation-declined td,
+.fc-view-table tr.fc-invitation-needs-action td {
+ color: #888;
+}
+
+.fc-view-table tr.fc-invitation-tentative td.fc-event-title,
+.fc-view-table tr.fc-invitation-declined td.fc-event-title,
+.fc-view-table tr.fc-invitation-needs-action td.fc-event-title {
+ font-weight: normal;
+}
+
+#quickview-calendar .fc-view-table tr.fc-invitation-tentative td,
+#quickview-calendar .fc-view-table tr.fc-invitation-declined td,
+#quickview-calendar .fc-view-table tr.fc-invitation-needs-action td {
+ color: #333;
+}
+
+.calendarmain .fc-event:focus {
+ outline: 1px solid rgba(71,135,177, 0.4);
+ -webkit-box-shadow: 0 0 2px 3px rgba(71,135,177, 0.6);
+ -moz-box-shadow: 0 0 2px 3px rgba(71,135,177, 0.6);
+ -o-box-shadow: 0 0 2px 3px rgba(71,135,177, 0.6);
+ box-shadow: 0 0 2px 3px rgba(71,135,177, 0.6);
+}
+.fc-event-title {
+ font-weight: bold;
+}
+
+.cal-event-status-cancelled .fc-event-title {
+ text-decoration: line-through;
+}
+
+.fc-event-hori .fc-event-title {
+ font-weight: normal;
+ white-space: nowrap;
+}
+
+.fc-event-hori .fc-event-time {
+ white-space: nowrap;
+ font-weight: normal !important;
+ font-size: 10px;
+ padding-right: 0.6em;
+}
+
+.fc-grid .fc-event-time {
+ font-weight: normal !important;
+ padding-right: 0.3em;
+}
+
+.calendarmain .fc-event-vert .fc-event-inner {
+ z-index: 0;
+}
+
+.fc-event-cateories {
+ font-style:italic;
+}
+
+div.fc-event-location {
+ font-size: 90%;
+}
+
+.fc-more-link {
+ color: #999;
+ padding-top: 1px;
+ cursor: pointer;
+}
+
+.fc-agenda-slots td div {
+ height: 22px;
+}
+
+.fc-sat, .fc-sun {
+ background-color: rgba(198,198,198, 0.08);
+}
+
+.calendarmain .fc-state-highlight {
+ background-color: rgba(233,198,14, 0.12);
+}
+
+.fc-widget-header {
+ background-color: #d6eaf3;
+ color: #004458;
+ text-shadow: 0px 1px 1px #fff;
+}
+
+.fc-view thead th.fc-widget-header {
+ padding: 8px 0;
+ color: #69939e;
+}
+
+.fc-day-number {
+ color: #578da5;
+}
+
+.fc-icon-alarms,
+.fc-icon-sensitive,
+.fc-icon-recurring {
+ display: inline-block;
+ width: 11px;
+ height: 11px;
+ background: url(images/eventicons.png) 0 0 no-repeat;
+ margin-left: 3px;
+ line-height: 10px;
+}
+
+.fc-icon-alarms {
+ background-position: 0 -13px;
+}
+
+.fc-icon-sensitive {
+ background-position: 0 -25px;
+}
+
+.fc-list-section .fc-event {
+ cursor: pointer;
+}
+
+.calendarmain .fc-view-table td.fc-list-header {
+ color: #004458;
+ font-size: 12px;
+}
+
+.calendarmain .fc-view-table tr.fc-event td {
+ border-color: #ddd;
+ padding: 4px 7px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.calendarmain .fc-view-table tr.fc-event td.fc-event-handle {
+ padding: 5px 0 2px 7px;
+ width: 12px;
+}
+
+.calendarmain .fc-view-table .fc-event-handle .fc-event-skin {
+ margin: 0;
+ padding: 0;
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ font-size: 6px;
+ border-radius: 8px;
+}
+
+.calendarmain .fc-view-table .fc-event-handle .fc-event-inner {
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ padding: 0;
+ margin: -1px;
+ font-size: 10px;
+ border-radius: 8px;
+ border: 1px solid rgba(0, 0, 0, 0.4);
+ -webkit-box-shadow: inset 0px 0 1px 1px rgba(0, 0, 0, 0.3);
+ -moz-box-shadow: inset 0px 0 1px 1px rgba(0, 0, 0, 0.3);
+ box-shadow: inset 0px 0 1px 1px rgba(0, 0, 0, 0.3);
+}
+
+.calendarmain .fc-view-table col.fc-event-location {
+ width: 25%;
+}
+
+.fc-view-table table.fc-list-smart {
+/* table-layout: auto; */
+}
+
+.fc-listappend {
+ text-align: center;
+ margin: 1em 0;
+}
+
+.fc-listappend .message {
+ padding: 0.5em;
+ margin-bottom: 0.5em;
+ font-size: 150%;
+ color: #999;
+}
+
+.fc-listappend .formlinks a {
+ font-size: 12px;
+ padding: 0 0.3em;
+}
+
+.fc-event-temp {
+ opacity: 0.4;
+ filter: alpha(opacity=40); /* IE8 */
+}
+
+/* Settings section */
+
+fieldset #calendarcategories div {
+ margin-bottom: 0.3em;
+}
+
+/* Invitation UI in mail */
+
+.messagelist tbody .attachment span.ical {
+ display: inline-block;
+ vertical-align: middle;
+ height: 18px;
+ width: 20px;
+ padding: 0;
+ background: url(images/ical-attachment.png) 2px 1px no-repeat;
+}
+
+ul.toolbarmenu li a.calendarlink span.calendar,
+#attachmentmenu li a.calendarlink span.calendar {
+ background-position: 0px -2197px;
+}
+
+div.calendar-invitebox {
+ min-height: 20px;
+ margin: 5px 8px;
+ padding: 3px 6px 6px 34px;
+ border: 1px solid #ffdf0e;
+ background: url(images/calendar.png) 6px 5px no-repeat #fef893;
+}
+
+div.calendar-invitebox td.ititle {
+ font-weight: bold;
+ padding-right: 0.5em;
+}
+
+div.calendar-invitebox td {
+ padding: 2px;
+}
+
+div.calendar-invitebox td.label {
+ color: #666;
+ padding-right: 1em;
+}
+
+div.calendar-invitebox td.sensitivity {
+ color: #d31400;
+ font-weight: bold;
+}
+
+div.calendar-invitebox td.recurrence-id {
+ text-transform: uppercase;
+ font-style: italic;
+}
+
+div.calendar-invitebox td em {
+ font-weight: bold;
+}
+
+#event-rsvp .rsvp-buttons,
+div.calendar-invitebox .itip-buttons div {
+ margin-top: 0.5em;
+}
+
+#event-rsvp input.button,
+div.calendar-invitebox input.button {
+ font-weight: bold;
+ margin-right: 0.5em;
+}
+
+div.calendar-invitebox input.button.preview {
+ margin-left: 1em;
+ margin-right: 0;
+}
+
+div.calendar-invitebox .folder-select {
+ font-weight: 10px;
+ margin-left: 1em;
+ white-space: nowrap;
+}
+
+div.calendar-invitebox .rsvp-status {
+ padding-left: 2px;
+}
+
+div.calendar-invitebox .rsvp-status.loading {
+ color: #666;
+ padding: 1px 0 2px 24px;
+ background: url(images/loading_blue.gif) top left no-repeat;
+}
+
+div.calendar-invitebox .rsvp-status.hint {
+ color: #666;
+ text-shadow: none;
+ font-style: italic;
+}
+
+#event-partstat .changersvp,
+div.calendar-invitebox .rsvp-status.declined,
+div.calendar-invitebox .rsvp-status.tentative,
+div.calendar-invitebox .rsvp-status.accepted,
+div.calendar-invitebox .rsvp-status.delegated,
+div.calendar-invitebox .rsvp-status.needs-action {
+ padding: 0 0 1px 22px;
+ background: url(images/attendee-status.png) 2px -20px no-repeat;
+}
+
+#event-partstat .changersvp.declined,
+div.calendar-invitebox .rsvp-status.declined {
+ background-position: 2px -40px;
+}
+
+#event-partstat .changersvp.tentative,
+div.calendar-invitebox .rsvp-status.tentative {
+ background-position: 2px -60px;
+}
+
+#event-partstat .changersvp.delegated,
+div.calendar-invitebox .rsvp-status.delegated {
+ background-position: 2px -180px;
+}
+
+#event-partstat .changersvp.needs-action,
+div.calendar-invitebox .rsvp-status.needs-action {
+ background-position: 2px 0;
+}
+
+div.calendar-invitebox .calendar-agenda-preview {
+ display: none;
+ border-top: 1px solid #dfdfdf;
+ margin-top: 1em;
+ padding-top: 0.6em;
+}
+
+div.calendar-invitebox .calendar-agenda-preview h3.preview-title {
+ margin: 0 0 0.5em 0;
+ font-size: 12px;
+ color: #333;
+}
+
+div.calendar-invitebox .calendar-agenda-preview .event-row {
+ color: #777;
+ padding: 2px 0;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+div.calendar-invitebox .calendar-agenda-preview .event-row.current {
+ color: #333;
+ font-weight: bold;
+}
+
+div.calendar-invitebox .calendar-agenda-preview .event-row.no-event {
+ font-style: italic;
+}
+
+div.calendar-invitebox .calendar-agenda-preview .event-date {
+ display: inline-block;
+ min-width: 8em;
+ margin-right: 1em;
+ white-space: nowrap;
+}
+
+
+/* iTIP attend reply page */
+
+.calendaritipattend .centerbox {
+ width: 40em;
+ min-height: 7em;
+ margin: 80px auto 0 auto;
+ padding: 10px 10px 10px 90px;
+ background: url(images/invitation.png) 10px 10px no-repeat #fff;
+}
+
+.calendaritipattend #message {
+ width: 46em;
+ margin: 0 auto;
+ padding: 10px;
+}
+
+.calendaritipattend .calendar-invitebox {
+ background: none;
+ padding-left: 0;
+ border: 0;
+ margin: 0 0 2em 0;
+}
+
+.calendaritipattend .calendar-invitebox .rsvp-status {
+ margin-top: 2.5em;
+ font-size: 110%;
+ font-weight: bold;
+}
+
+.calendaritipattend .calendar-invitebox td.title,
+.calendaritipattend .calendar-invitebox td.ititle {
+ font-size: 120%;
+}
+
+.calendaritipattend .itip-reply-controls .noreply-toggle,
+.calendaritipattend .itip-reply-controls #noreply-event-rsvp {
+ display: none;
+}
+
+.calendaritipattend .itip-reply-controls a.reply-comment-toggle {
+ margin-left: 2px;
+}
+
diff --git a/calendar/skins/larry/fullcalendar.css b/calendar/skins/larry/fullcalendar.css
new file mode 100644
index 0000000..daefdf2
--- /dev/null
+++ b/calendar/skins/larry/fullcalendar.css
@@ -0,0 +1,711 @@
+/*!
+ * FullCalendar v1.6.4-rcube-1.0 Stylesheet
+ * Docs & License: http://arshaw.com/fullcalendar/
+ * (c) 2013 Adam Shaw, 2014 Kolab Systems AG
+ */
+
+
+.fc {
+ direction: ltr;
+ text-align: left;
+ }
+
+.fc table {
+ border-collapse: collapse;
+ border-spacing: 0;
+ }
+
+html .fc,
+.fc table {
+ font-size: 1em;
+ }
+
+.fc td,
+.fc th {
+ padding: 0;
+ vertical-align: top;
+ }
+
+
+
+/* Header
+------------------------------------------------------------------------*/
+
+.fc-header td {
+ white-space: nowrap;
+ }
+
+.fc-header-left {
+ width: 25%;
+ text-align: left;
+ }
+
+.fc-header-center {
+ text-align: center;
+ }
+
+.fc-header-right {
+ width: 25%;
+ text-align: right;
+ }
+
+.fc-header-title {
+ display: inline-block;
+ vertical-align: top;
+ }
+
+.fc-header-title h2 {
+ margin-top: 0;
+ white-space: nowrap;
+ }
+
+.fc .fc-header-space {
+ padding-left: 10px;
+ }
+
+.fc-header .fc-button {
+ margin-bottom: 1em;
+ vertical-align: top;
+ }
+
+/* buttons edges butting together */
+
+.fc-header .fc-button {
+ margin-right: -1px;
+ }
+
+.fc-header .fc-corner-right, /* non-theme */
+.fc-header .ui-corner-right { /* theme */
+ margin-right: 0; /* back to normal */
+ }
+
+/* button layering (for border precedence) */
+
+.fc-header .fc-state-hover,
+.fc-header .ui-state-hover {
+ z-index: 2;
+ }
+
+.fc-header .fc-state-down {
+ z-index: 3;
+ }
+
+.fc-header .fc-state-active,
+.fc-header .ui-state-active {
+ z-index: 4;
+ }
+
+
+
+/* Content
+------------------------------------------------------------------------*/
+
+.fc-content {
+ clear: both;
+ zoom: 1; /* for IE7, gives accurate coordinates for [un]freezeContentHeight */
+ }
+
+.fc-view {
+ width: 100%;
+ overflow: hidden;
+ }
+
+
+
+/* Cell Styles
+------------------------------------------------------------------------*/
+
+.fc-widget-header, /* <th>, usually */
+.fc-widget-content { /* <td>, usually */
+ border: 1px solid #ddd;
+ }
+
+.fc-state-highlight { /* <td> today cell */ /* TODO: add .fc-today to <th> */
+ background: #fcf8e3;
+ }
+
+.fc-cell-overlay { /* semi-transparent rectangle while dragging */
+ background: #bce8f1;
+ opacity: .3;
+ filter: alpha(opacity=30); /* for IE */
+ }
+
+
+
+/* Buttons
+------------------------------------------------------------------------*/
+
+.fc-button {
+ position: relative;
+ display: inline-block;
+ padding: 0 .6em;
+ overflow: hidden;
+ height: 1.9em;
+ line-height: 1.9em;
+ white-space: nowrap;
+ cursor: pointer;
+ }
+
+.fc-state-default { /* non-theme */
+ border: 1px solid;
+ }
+
+.fc-state-default.fc-corner-left { /* non-theme */
+ border-top-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+ }
+
+.fc-state-default.fc-corner-right { /* non-theme */
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+ }
+
+/*
+ Our default prev/next buttons use HTML entities like &lsaquo; &rsaquo; &laquo; &raquo;
+ and we'll try to make them look good cross-browser.
+*/
+
+.fc-text-arrow {
+ margin: 0 .1em;
+ font-size: 2em;
+ font-family: "Courier New", Courier, monospace;
+ vertical-align: baseline; /* for IE7 */
+ }
+
+.fc-button-prev .fc-text-arrow,
+.fc-button-next .fc-text-arrow { /* for &lsaquo; &rsaquo; */
+ font-weight: bold;
+ }
+
+/* icon (for jquery ui) */
+
+.fc-button .fc-icon-wrap {
+ position: relative;
+ float: left;
+ top: 50%;
+ }
+
+.fc-button .ui-icon {
+ position: relative;
+ float: left;
+ margin-top: -50%;
+ *margin-top: 0;
+ *top: -50%;
+ }
+
+/*
+ button states
+ borrowed from twitter bootstrap (http://twitter.github.com/bootstrap/)
+*/
+
+.fc-state-default {
+ background-color: #f5f5f5;
+ background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
+ background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
+ background-repeat: repeat-x;
+ border-color: #e6e6e6 #e6e6e6 #bfbfbf;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ color: #333;
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ }
+
+.fc-state-hover,
+.fc-state-down,
+.fc-state-active,
+.fc-state-disabled {
+ color: #333333;
+ background-color: #e6e6e6;
+ }
+
+.fc-state-hover {
+ color: #333333;
+ text-decoration: none;
+ background-position: 0 -15px;
+ -webkit-transition: background-position 0.1s linear;
+ -moz-transition: background-position 0.1s linear;
+ -o-transition: background-position 0.1s linear;
+ transition: background-position 0.1s linear;
+ }
+
+.fc-state-down,
+.fc-state-active {
+ background-color: #cccccc;
+ background-image: none;
+ outline: 0;
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ }
+
+.fc-state-disabled {
+ cursor: default;
+ background-image: none;
+ opacity: 0.65;
+ filter: alpha(opacity=65);
+ box-shadow: none;
+ }
+
+
+
+/* Global Event Styles
+------------------------------------------------------------------------*/
+
+.fc-event-container > * {
+ z-index: 8;
+ }
+
+.fc-event-container > .ui-draggable-dragging,
+.fc-event-container > .ui-resizable-resizing {
+ z-index: 9;
+ }
+
+.fc-event {
+ border: 1px solid #3a87ad; /* default BORDER color */
+ background-color: #3a87ad; /* default BACKGROUND color */
+ color: #fff; /* default TEXT color */
+ font-size: .85em;
+ cursor: default;
+ }
+
+.fc-event:focus {
+ outline: 2px solid ActiveBorder;
+ }
+
+a.fc-event {
+ text-decoration: none;
+ }
+
+a.fc-event,
+.fc-event-draggable {
+ cursor: pointer;
+ }
+
+.fc-rtl .fc-event {
+ text-align: right;
+ }
+
+.fc-event-inner {
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+ }
+
+.fc-event-time,
+.fc-event-title {
+ padding: 0 1px;
+ }
+
+.fc .ui-resizable-handle {
+ display: block;
+ position: absolute;
+ z-index: 99999;
+ overflow: hidden; /* hacky spaces (IE6/7) */
+ font-size: 300%; /* */
+ line-height: 50%; /* */
+ }
+
+
+
+/* Horizontal Events
+------------------------------------------------------------------------*/
+
+.fc-event-hori {
+ border-width: 1px 0;
+ margin-bottom: 1px;
+ }
+
+.fc-ltr .fc-event-hori.fc-event-start,
+.fc-rtl .fc-event-hori.fc-event-end {
+ border-left-width: 1px;
+ border-top-left-radius: 3px;
+ border-bottom-left-radius: 3px;
+ }
+
+.fc-ltr .fc-event-hori.fc-event-end,
+.fc-rtl .fc-event-hori.fc-event-start {
+ border-right-width: 1px;
+ border-top-right-radius: 3px;
+ border-bottom-right-radius: 3px;
+ }
+
+/* resizable */
+
+.fc-event-hori .ui-resizable-e {
+ top: 0 !important; /* importants override pre jquery ui 1.7 styles */
+ right: -3px !important;
+ width: 7px !important;
+ height: 100% !important;
+ cursor: e-resize;
+ }
+
+.fc-event-hori .ui-resizable-w {
+ top: 0 !important;
+ left: -3px !important;
+ width: 7px !important;
+ height: 100% !important;
+ cursor: w-resize;
+ }
+
+.fc-event-hori .ui-resizable-handle {
+ _padding-bottom: 14px; /* IE6 had 0 height */
+ }
+
+
+
+/* Reusable Separate-border Table
+------------------------------------------------------------*/
+
+table.fc-border-separate {
+ border-collapse: separate;
+ }
+
+.fc-border-separate th,
+.fc-border-separate td {
+ border-width: 1px 0 0 1px;
+ }
+
+.fc-border-separate th.fc-last,
+.fc-border-separate td.fc-last {
+ border-right-width: 1px;
+ }
+
+.fc-border-separate tr.fc-last th,
+.fc-border-separate tr.fc-last td {
+ border-bottom-width: 1px;
+ }
+
+.fc-border-separate tbody tr.fc-first td,
+.fc-border-separate tbody tr.fc-first th {
+ border-top-width: 0;
+ }
+
+
+
+/* Month View, Basic Week View, Basic Day View
+------------------------------------------------------------------------*/
+
+.fc-grid th {
+ text-align: center;
+ }
+
+.fc .fc-week-number {
+ width: 22px;
+ text-align: center;
+ }
+
+.fc .fc-week-number div {
+ padding: 0 2px;
+ }
+
+.fc-grid .fc-day-number {
+ float: right;
+ padding: 0 2px;
+ }
+
+.fc-grid .fc-other-month .fc-day-number {
+ opacity: 0.3;
+ filter: alpha(opacity=30); /* for IE */
+ /* opacity with small font can sometimes look too faded
+ might want to set the 'color' property instead
+ making day-numbers bold also fixes the problem */
+ }
+
+.fc-grid .fc-day-content {
+ clear: both;
+ padding: 2px 2px 1px; /* distance between events and day edges */
+ }
+
+/* event styles */
+
+.fc-grid .fc-event-time {
+ font-weight: bold;
+ }
+
+/* right-to-left */
+
+.fc-rtl .fc-grid .fc-day-number {
+ float: left;
+ }
+
+.fc-rtl .fc-grid .fc-event-time {
+ float: right;
+ }
+
+.fc-more-link {
+ font-size: 0.85em;
+ white-space: nowrap;
+ text-decoration: none;
+ cursor: pointer;
+ padding: 1px;
+}
+
+/* Agenda Week View, Agenda Day View
+------------------------------------------------------------------------*/
+
+.fc-agenda table {
+ border-collapse: separate;
+ }
+
+.fc-agenda-days th {
+ text-align: center;
+ }
+
+.fc-agenda .fc-agenda-axis {
+ width: 50px;
+ padding: 0 4px;
+ vertical-align: middle;
+ text-align: right;
+ white-space: nowrap;
+ font-weight: normal;
+ }
+
+.fc-agenda .fc-week-number {
+ font-weight: bold;
+ }
+
+.fc-agenda .fc-day-content {
+ padding: 2px 2px 1px;
+ }
+
+/* make axis border take precedence */
+
+.fc-agenda-days .fc-agenda-axis {
+ border-right-width: 1px;
+ }
+
+.fc-agenda-days .fc-col0 {
+ border-left-width: 0;
+ }
+
+/* all-day area */
+
+.fc-agenda-allday th {
+ border-width: 0 1px;
+ }
+
+.fc-agenda-allday .fc-day-content {
+ min-height: 34px; /* TODO: doesnt work well in quirksmode */
+ _height: 34px;
+ }
+
+/* divider (between all-day and slots) */
+
+.fc-agenda-divider-inner {
+ height: 2px;
+ overflow: hidden;
+ }
+
+.fc-widget-header .fc-agenda-divider-inner {
+ background: #eee;
+ }
+
+/* slot rows */
+
+.fc-agenda-slots th {
+ border-width: 1px 1px 0;
+ }
+
+.fc-agenda-slots td {
+ border-width: 1px 0 0;
+ background: none;
+ }
+
+.fc-agenda-slots td div {
+ height: 20px;
+ }
+
+.fc-agenda-slots tr.fc-slot0 th,
+.fc-agenda-slots tr.fc-slot0 td {
+ border-top-width: 0;
+ }
+
+.fc-agenda-slots tr.fc-minor th,
+.fc-agenda-slots tr.fc-minor td {
+ border-top-style: dotted;
+ }
+
+.fc-agenda-slots tr.fc-minor th.ui-widget-header {
+ *border-top-style: solid; /* doesn't work with background in IE6/7 */
+ }
+
+
+
+/* Vertical Events
+------------------------------------------------------------------------*/
+
+.fc-event-vert {
+ border-width: 0 1px;
+ }
+
+.fc-event-vert .fc-event-head,
+.fc-event-vert .fc-event-content {
+ position: relative;
+ z-index: 2;
+ width: 100%;
+ overflow: hidden;
+ }
+
+.fc-event-vert.fc-event-start {
+ border-top-width: 1px;
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+ }
+
+.fc-event-vert.fc-event-end {
+ border-bottom-width: 1px;
+ border-bottom-left-radius: 3px;
+ border-bottom-right-radius: 3px;
+ }
+
+.fc-event-vert .fc-event-time {
+ white-space: nowrap;
+ font-size: 10px;
+ }
+
+.fc-event-vert .fc-event-inner {
+ position: relative;
+ z-index: 2;
+ }
+
+.fc-event-vert .fc-event-bg { /* makes the event lighter w/ a semi-transparent overlay */
+ position: absolute;
+ z-index: 1;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background: #fff;
+ opacity: .25;
+ filter: alpha(opacity=25);
+ }
+
+.fc .ui-draggable-dragging .fc-event-bg, /* TODO: something nicer like .fc-opacity */
+.fc-select-helper .fc-event-bg {
+ display: none\9; /* for IE6/7/8. nested opacity filters while dragging don't work */
+ }
+
+/* resizable */
+
+.fc-event-vert .ui-resizable-s {
+ bottom: 0 !important; /* importants override pre jquery ui 1.7 styles */
+ width: 100% !important;
+ height: 8px !important;
+ overflow: hidden !important;
+ line-height: 8px !important;
+ font-size: 11px !important;
+ font-family: monospace;
+ text-align: center;
+ cursor: s-resize;
+ }
+
+.fc-agenda .ui-resizable-resizing { /* TODO: better selector */
+ _overflow: hidden;
+ }
+
+.fc-timeline {
+ position: absolute;
+ width: 100%;
+ left: 0;
+ margin: 0;
+ padding: 0;
+ border: none;
+ border-top: 2px solid #3ec400;
+ z-index: 999;
+}
+
+/* List view (by bruederli@kolabsys.com)
+------------------------------------------------------------------------*/
+
+.fc-view-list,
+.fc-view-table {
+ border: 1px solid #ccc;
+ width: auto;
+}
+
+.fc-view-list .fc-list-header,
+.fc-view-table td.fc-list-header {
+ border-width: 0;
+ border-bottom-width: 1px;
+ padding: 3px 5px;
+}
+
+.fc-view-table .fc-first td.fc-list-header {
+ border-top-width: 0;
+}
+
+.fc-list-section {
+ padding: 4px 2px;
+ border-width: 0;
+ border-bottom-width: 1px;
+}
+
+.fc-view-list .fc-last {
+ border-bottom-width: 0;
+}
+
+.fc-list-section .fc-event {
+ position: relative;
+ margin: 1px 2px 3px 2px;
+}
+
+.fc-view-table tr.fc-event {
+ background: inherit;
+ color: inherit;
+}
+
+.fc-view-table tr.fc-event td {
+ padding: 2px;
+ border-bottom: 1px solid #ccc;
+}
+
+.fc-view-table tr.fc-event td.fc-event-handle {
+ padding: 3px 8px 3px 3px;
+}
+
+.fc-view-table .fc-event-handle .fc-event-skin {
+ border-radius: 2px;
+ -moz-border-radius: 2px;
+}
+
+.fc-view-table .fc-event-handle .fc-event-inner {
+ display: block;
+ width: 8px;
+ height: 10px;
+ border-radius: 2px;
+ -moz-border-radius: 2px;
+}
+
+.fc-view-table table {
+ table-layout: fixed;
+ width: 100%;
+}
+
+.fc-view-table col.fc-event-handle {
+ width: 18px;
+}
+
+.fc-event-handle .fc-event-inner {
+ border-color: inherit;
+ background-color: inherit;
+}
+
+.fc-view-table col.fc-event-date {
+ width: 7em;
+}
+
+.fc-view-table .fc-list-day col.fc-event-date {
+ width: 1px;
+}
+
+.fc-view-table col.fc-event-time {
+ width: 9em;
+}
+
+.fc-view-table td.fc-event-date,
+.fc-view-table td.fc-event-time {
+ white-space: nowrap;
+ padding-right: 1em;
+}
+
diff --git a/calendar/skins/larry/iehacks.css b/calendar/skins/larry/iehacks.css
new file mode 100644
index 0000000..d6e122d
--- /dev/null
+++ b/calendar/skins/larry/iehacks.css
@@ -0,0 +1,77 @@
+/* CSS hacks for IE 7 */
+
+#calendarsidebar,
+#calendarsidebartoggle {
+ height: expression((parseInt(this.parentNode.offsetHeight)-37)+'px');
+}
+
+#calendar {
+ width: expression((parseInt(this.parentNode.offsetWidth)-parseInt(document.getElementById('calendarsidebartoggle').offsetWidth)-parseInt(document.getElementById('calendarsidebartoggle').offsetLeft)-4)+'px');
+ height: expression((parseInt(this.parentNode.offsetHeight)-30)+'px');
+}
+
+#calendars {
+ height: expression((parseInt(this.parentNode.offsetHeight)-240)+'px');
+}
+
+#agendaoptions {
+ width: expression((parseInt(this.parentNode.offsetWidth)-12)+'px');
+}
+
+#calendartoolbar a.buttonPas {
+ filter: alpha(opacity=35);
+}
+
+#datepicker a.ui-priority-secondary {
+ filter: alpha(opacity=40);
+}
+
+.calendarmain .fc-day-content {
+ cursor: default;
+}
+
+.calendarmain .fc-view-table col.fc-event-date {
+ width: 8em;
+}
+
+.calendarmain .fc-view-table col.fc-event-time {
+ width: 9em;
+}
+
+.calendarmain .fc-header-title h2 {
+ font-size: 16px;
+}
+
+.calendarmain .fc-header-left {
+ width: 248px;
+}
+
+.calendarmain .fc-header-center {
+ width: auto;
+}
+
+.calendarmain .fc-header-right {
+ width: 144px;
+ white-space: nowrap;
+}
+
+.calendarmain .fc-event-temp .fc-event-bg {
+ display: none; /* nested opacity filters while dragging don't work */
+}
+
+#schedule-event-time {
+ filter: alpha(opacity=40);
+}
+
+#eventfreebusy .schedule-buttons,
+#edit-attendees-form #edit-attendee-schedule {
+ right: 0.6em;
+}
+
+#schedule-freebusy-times tr.times td.allday {
+ width: expression(Math.max(60, parseInt(this.offsetWidth))+'px');
+}
+
+.ui-dialog .ui-dialog-titlebar {
+ width: expression((parseInt(this.parentNode.offsetWidth)-26)+'px');
+}
diff --git a/calendar/skins/larry/images/attendee-status.png b/calendar/skins/larry/images/attendee-status.png
new file mode 100644
index 0000000..37adcc1
--- /dev/null
+++ b/calendar/skins/larry/images/attendee-status.png
Binary files differ
diff --git a/calendar/skins/larry/images/autocomplete.png b/calendar/skins/larry/images/autocomplete.png
new file mode 100644
index 0000000..593c007
--- /dev/null
+++ b/calendar/skins/larry/images/autocomplete.png
Binary files differ
diff --git a/calendar/skins/larry/images/badge_cancelled.png b/calendar/skins/larry/images/badge_cancelled.png
new file mode 100644
index 0000000..2eb4878
--- /dev/null
+++ b/calendar/skins/larry/images/badge_cancelled.png
Binary files differ
diff --git a/calendar/skins/larry/images/badge_confidential.png b/calendar/skins/larry/images/badge_confidential.png
new file mode 100644
index 0000000..04a2052
--- /dev/null
+++ b/calendar/skins/larry/images/badge_confidential.png
Binary files differ
diff --git a/calendar/skins/larry/images/badge_private.png b/calendar/skins/larry/images/badge_private.png
new file mode 100644
index 0000000..52e4dbe
--- /dev/null
+++ b/calendar/skins/larry/images/badge_private.png
Binary files differ
diff --git a/calendar/skins/larry/images/calendar.png b/calendar/skins/larry/images/calendar.png
new file mode 100644
index 0000000..69d780d
--- /dev/null
+++ b/calendar/skins/larry/images/calendar.png
Binary files differ
diff --git a/calendar/skins/larry/images/calendars.png b/calendar/skins/larry/images/calendars.png
new file mode 100644
index 0000000..5b5ca85
--- /dev/null
+++ b/calendar/skins/larry/images/calendars.png
Binary files differ
diff --git a/calendar/skins/larry/images/eventicons.png b/calendar/skins/larry/images/eventicons.png
new file mode 100644
index 0000000..9be2c03
--- /dev/null
+++ b/calendar/skins/larry/images/eventicons.png
Binary files differ
diff --git a/calendar/skins/larry/images/focusview.png b/calendar/skins/larry/images/focusview.png
new file mode 100644
index 0000000..ce99400
--- /dev/null
+++ b/calendar/skins/larry/images/focusview.png
Binary files differ
diff --git a/calendar/skins/larry/images/freebusy-colors.png b/calendar/skins/larry/images/freebusy-colors.png
new file mode 100644
index 0000000..8d9257d
--- /dev/null
+++ b/calendar/skins/larry/images/freebusy-colors.png
Binary files differ
diff --git a/calendar/skins/larry/images/ical-attachment.png b/calendar/skins/larry/images/ical-attachment.png
new file mode 100644
index 0000000..653f4bc
--- /dev/null
+++ b/calendar/skins/larry/images/ical-attachment.png
Binary files differ
diff --git a/calendar/skins/larry/images/invitation.png b/calendar/skins/larry/images/invitation.png
new file mode 100644
index 0000000..af85804
--- /dev/null
+++ b/calendar/skins/larry/images/invitation.png
Binary files differ
diff --git a/calendar/skins/larry/images/loading_blue.gif b/calendar/skins/larry/images/loading_blue.gif
new file mode 100644
index 0000000..2ea6b19
--- /dev/null
+++ b/calendar/skins/larry/images/loading_blue.gif
Binary files differ
diff --git a/calendar/skins/larry/images/sendinvitation.png b/calendar/skins/larry/images/sendinvitation.png
new file mode 100644
index 0000000..dea30fa
--- /dev/null
+++ b/calendar/skins/larry/images/sendinvitation.png
Binary files differ
diff --git a/calendar/skins/larry/images/toggle.gif b/calendar/skins/larry/images/toggle.gif
new file mode 100644
index 0000000..d3be86f
--- /dev/null
+++ b/calendar/skins/larry/images/toggle.gif
Binary files differ
diff --git a/calendar/skins/larry/images/toolbar.png b/calendar/skins/larry/images/toolbar.png
new file mode 100644
index 0000000..5e79c66
--- /dev/null
+++ b/calendar/skins/larry/images/toolbar.png
Binary files differ
diff --git a/calendar/skins/larry/print.css b/calendar/skins/larry/print.css
new file mode 100644
index 0000000..fc5de97
--- /dev/null
+++ b/calendar/skins/larry/print.css
@@ -0,0 +1,229 @@
+/*** Printing styles for Calendar plugin ***/
+
+body {
+ margin: 0 0 1em 0;
+ color: #000;
+ background: #fff;
+}
+
+body, td, th, div, p, h3, select, input, textarea {
+ font-family: "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
+ font-size: 8pt;
+}
+
+#calendar {
+ position: relative;
+ top: 0;
+ left: 0;
+ height: auto;
+ margin: 5em auto 0 auto;
+ overflow: visible;
+}
+
+#calendar .fc-header-right {
+ padding-right: 0;
+}
+
+#printconfig {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ z-index: 10000;
+ padding: 0.5em;
+ background: #ebebeb;
+ border-bottom: 1px solid #999;
+ box-shadow: 0 3px 4px #ccc;
+ -moz-box-shadow: 0 3px 4px #ccc;
+ -webkit-box-shadow: 0 3px 4px #ccc;
+}
+
+#printconfig .prop {
+ padding-right: 2em;
+}
+
+#message {
+ position: absolute;
+ top: 5.5em;
+ left: 1em;
+}
+
+#message div.loading {
+ color: #666;
+ font-style: italic;
+}
+
+#calendarlist {
+ list-style: none;
+ margin: 2em 0;
+ padding-left: 1em;
+}
+
+#calendarlist ul {
+ float: left;
+ list-style: none;
+ padding-left: 0;
+}
+
+#calendarlist li {
+ float: left;
+ padding-left: 0;
+ padding-right: 0;
+ margin-left: 0;
+ font-weight: bold;
+}
+
+#calendarlist li div {
+ float: left;
+ padding-right: 3em;
+ padding-bottom: 1em;
+}
+
+#calendarlist input,
+#calendarlist .handle {
+ display: none;
+}
+
+#calendarlist li.x-invitations div {
+ color: #999;
+ font-style: italic;
+}
+
+.calwidth {
+ width: 700px;
+ margin: 0 auto;
+}
+
+.rightalign {
+ float: right;
+ padding-top: 0.3em;
+}
+
+@media print {
+ .noprint,
+ .fc-header-right span {
+ display: none;
+ }
+
+ #calendar {
+ margin-top: 0;
+ }
+}
+
+/* fullcalendar style overrides */
+
+.fc-view {
+ overflow: visible;
+}
+
+.fc-event-skin,
+.fc-event-inner .fc-event-skin {
+ color: black;
+ background-color: #fff !important;
+}
+
+.fc-event-title {
+ font-weight: bold;
+}
+
+.fc-event-hori .fc-event-title {
+ font-weight: normal;
+ white-space: nowrap;
+}
+
+.fc-event-hori .fc-event-time {
+ white-space: nowrap;
+ font-weight: normal !important;
+ font-size: 10px;
+ padding-right: 0.6em;
+}
+
+.fc-grid .fc-event-time {
+ font-weight: normal !important;
+ padding-right: 0.3em;
+}
+
+.fc-event-cateories {
+ font-style: italic;
+}
+
+.fc-event-location {
+ font-size: 90%;
+}
+
+.fc-agenda-slots td div {
+ height: 1.4em;
+}
+
+.fc-widget-header,
+.fc-mon, .fc-tue, .fc-wed, .fc-thu, .fc-fri {
+ background-color: #fff;
+}
+
+.fc-widget-header, .fc-widget-content {
+ border-color: #ccc;
+}
+
+.fc-icon-alarms,
+.fc-icon-recurring {
+ display: inline-block;
+ width: 11px;
+ height: 11px;
+ background: url('images/eventicons.gif') 0 0 no-repeat;
+ margin-left: 3px;
+ line-height: 10px;
+}
+
+.fc-icon-alarms {
+ background-position: 0 -13px;
+}
+
+.fc-view-list, .fc-view-table {
+ border: 0;
+}
+
+.fc-view-list div.fc-list-header,
+.fc-view-table td.fc-list-header {
+ padding: 0.3em;
+ background: #fff;
+ font-weight: bold;
+ font-size: 1.2em;
+ color: #333;
+ border-color: #333;
+ border-style: solid;
+ border-width: 1px 0;
+ filter: none;
+}
+
+.fc-list-section .fc-event {
+ cursor: auto;
+}
+
+.fc-view-table tr.fc-event td,
+.fc-view-table tr.fc-event td.fc-event-handle {
+ border-color: #999;
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+}
+
+.fc-view-table tr.fc-last td {
+ border: 0;
+}
+
+.fc-view-table tr.fc-event .fc-event-description {
+ padding-left: 2em;
+ padding-top: 0em;
+}
+
+.fc-event-vert .fc-event-description {
+ font-size: 90%;
+ font-style: italic;
+}
+
+.fc-view-month .fc-event-hori .fc-event-inner {
+ background: #fff !important;
+}
+
+.fc-view-table col.fc-event-location {
+ width: 20%;
+}
diff --git a/calendar/skins/larry/print.iehacks.css b/calendar/skins/larry/print.iehacks.css
new file mode 100644
index 0000000..5322ff9
--- /dev/null
+++ b/calendar/skins/larry/print.iehacks.css
@@ -0,0 +1,25 @@
+/* CSS hacks for IE 7 */
+
+#calendar {
+ top: 5em;
+}
+
+.calwidth {
+ width: 172mm;
+}
+
+.fc-header-title h2 {
+ font-size: 16px;
+}
+
+#calendarlist li {
+ float: none;
+ padding: 0;
+ margin-left: 1em;
+}
+
+@media print {
+ #calendar {
+ top: 0;
+ }
+} \ No newline at end of file
diff --git a/calendar/skins/larry/templates/attachment.html b/calendar/skins/larry/templates/attachment.html
new file mode 100644
index 0000000..17fccc5
--- /dev/null
+++ b/calendar/skins/larry/templates/attachment.html
@@ -0,0 +1,64 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body class="extwin calendar attachmentwin">
+
+<div id="header">
+<div id="topline" role="banner" aria-labelledby="aria-label-topnav">
+ <div class="topleft">
+ <roundcube:container name="topline-left" id="topline-left" />
+ </div>
+ <roundcube:container name="topline-center" id="topline-center" />
+ <div class="topright">
+ <roundcube:container name="topline-right" id="topline-right" />
+ <roundcube:button name="close" type="link" label="close" class="closelink" onclick="self.close()" />
+ </div>
+</div>
+</div>
+
+<div id="mainscreen">
+
+<h1 class="voice"><roundcube:label name="attachment" />: <roundcube:var name="env:filename" /></h1>
+
+<h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2>
+<div id="attachmenttoolbar" class="toolbar fullwidth" role="toolbar" aria-labelledby="aria-label-toolbar">
+ <roundcube:button command="download-attachment" type="link" class="button download disabled" classAct="button download" classSel="button download pressed" label="download" title="download" />
+ <roundcube:button command="print-attachment" type="link" class="button print disabled" classAct="button print" classSel="button print pressed" label="print" title="print" />
+ <roundcube:container name="toolbar" id="messagetoolbar" />
+</div>
+
+<div id="mainscreencontent">
+
+ <div id="partheader" class="uibox listbox" role="contentinfo" aria-labelledby="aria-label-contentinfo">
+ <h2 class="boxtitle" id="aria-label-contentinfo"><roundcube:label name="properties" /></h2>
+ <div class="scroller">
+ <roundcube:object name="plugin.attachmentcontrols" class="listing" />
+ </div>
+ </div>
+
+ <div id="attachmentcontainer" class="uibox" role="main" aria-labelledby="aria-label-messagepart">
+ <h2 id="aria-label-messagepart" class="voice"><roundcube:label name="arialabelattachmentpreview" /></h2>
+ <div class="iframebox">
+ <roundcube:object name="plugin.attachmentframe" id="attachmentframe" frameborder="0" title="arialabelattachmentpreview" />
+ </div>
+ </div>
+
+</div>
+
+</div>
+
+<script type="text/javascript">
+
+$(document).ready(function() {
+ if (window.rcube_splitter) {
+ new rcube_splitter({ id:'mailpartsplitterv', p1:'#partheader', p2:'#attachmentcontainer',
+ orientation:'v', relative:true, start:226, min:150, size:12}).init();
+ }
+});
+
+</script>
+</body>
+</html>
diff --git a/calendar/skins/larry/templates/calendar.html b/calendar/skins/larry/templates/calendar.html
new file mode 100644
index 0000000..e659ecc
--- /dev/null
+++ b/calendar/skins/larry/templates/calendar.html
@@ -0,0 +1,537 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="/this/iehacks.css" /><![endif]-->
+</head>
+<roundcube:if condition="env:extwin" /><body class="calendarmain extwin"><roundcube:else /><body class="calendarmain"><roundcube:endif />
+
+<roundcube:include file="/includes/header.html" />
+
+<h1 class="voice"><roundcube:label name="calendar.calendar" /></h1>
+
+<div id="mainscreen">
+ <div id="calendarsidebar">
+ <h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2>
+ <div id="calendartoolbar" class="toolbar" role="toolbar" aria-labelledby="aria-label-toolbar">
+ <roundcube:button command="addevent" type="link" class="button addevent disabled" classAct="button addevent" classSel="button addevent pressed" label="calendar.new_event" title="calendar.new_event" />
+ <roundcube:button command="print" type="link" class="button print disabled" classAct="button print" classSel="button print pressed" label="calendar.print" title="calendar.printtitle" />
+ <roundcube:button command="events-import" type="link" class="button import disabled" classAct="button import" classSel="button import pressed" label="import" title="calendar.importevents" />
+ <roundcube:button command="export" type="link" class="button export disabled" classAct="button export" classSel="button export pressed" label="calendar.export" title="calendar.exporttitle" />
+ <roundcube:container name="toolbar" id="calendartoolbar" />
+ </div>
+
+ <h2 id="aria-label-minical" class="voice"><roundcube:label name="calendar.arialabelminical" /></h2>
+ <div id="datepicker" class="uibox" role="presentation"></div>
+
+ <div id="calendars" class="uibox listbox" style="visibility:hidden" role="navigation" aria-labelledby="aria-label-calendarlist">
+ <h2 class="boxtitle" id="aria-label-calendarlist"><roundcube:label name="calendar.calendars" />
+ <a href="#calendars" class="iconbutton search" title="<roundcube:label name='calendar.findcalendars' />" tabindex="0"><roundcube:label name='calendar.findcalendars' /></a>
+ </h2>
+ <div class="listsearchbox">
+ <div class="searchbox" role="search" aria-labelledby="aria-label-calsearchform" aria-controls="calendarslist">
+ <h3 id="aria-label-calsearchform" class="voice"><roundcube:label name="calendar.arialabelcalsearchform" /></h3>
+ <label for="calendarlistsearch" class="voice"><roundcube:label name="calendar.searchterms" /></label>
+ <input type="text" name="q" id="calendarlistsearch" placeholder="<roundcube:label name='calendar.findcalendars' />" />
+ <a class="iconbutton searchicon"></a>
+ <roundcube:button command="reset-listsearch" id="calendarlistsearch-reset" class="iconbutton reset" title="resetsearch" label="resetsearch" />
+ </div>
+ </div>
+ <div class="scroller withfooter">
+ <roundcube:object name="plugin.calendar_list" id="calendarslist" class="treelist listing" />
+ </div>
+ <div class="boxfooter">
+ <roundcube:button name="calendarcreatelink" id="calendarcreatemenulink" type="link" title="create" class="listbutton add" onclick="UI.show_popup('calendarcreatemenu', undefined, { above:true });return false" innerClass="inner" content="&#9881;" /><roundcube:button name="calendaroptionslink" id="calendaroptionsmenulink" type="link" title="moreactions" class="listbutton groupactions" onclick="UI.show_popup('calendaroptionsmenu', undefined, { above:true });return false" innerClass="inner" content="&#9881;" />
+ </div>
+ </div>
+ </div>
+
+ <div id="quicksearchbar" class="searchbox" role="search" aria-labelledby="aria-label-searchform">
+ <h2 id="aria-label-searchform" class="voice"><roundcube:label name="calendar.arialabelsearchform" /></h2>
+ <label for="quicksearchbox" class="voice"><roundcube:label name="calendar.arialabelquicksearchbox" /></label>
+ <roundcube:object name="plugin.searchform" id="quicksearchbox" />
+ <a id="searchmenulink" class="iconbutton searchoptions" tabindex="-1"> </a>
+ <roundcube:button command="reset-search" id="searchreset" class="iconbutton reset" title="resetsearch" label="resetsearch" />
+ </div>
+
+ <h2 id="aria-label-calendarview" class="voice"><roundcube:label name="calendar.arialabelcalendarview" /></h2>
+ <div id="calendar" role="main" aria-labelledby="aria-label-calendarview">
+ <roundcube:object name="plugin.angenda_options" class="boxfooter" id="agendaoptions" />
+ </div>
+</div>
+
+<div id="calendarcreatemenu" class="popupmenu">
+ <ul class="toolbarmenu">
+ <roundcube:object name="plugin.calendar_create_menu" />
+ </ul>
+</div>
+<div id="timezonedisplay"><roundcube:var name="env:timezone" /></div>
+
+<roundcube:object name="message" id="messagestack" />
+
+<div id="calendaroptionsmenu" class="popupmenu" aria-hidden="true">
+ <h3 id="aria-label-calendaroptions" class="voice"><roundcube:label name="calendar.calendaractions" /></h3>
+ <ul id="calendaroptionsmenu-menu" class="toolbarmenu" role="menu" aria-labelledby="aria-label-calendaroptions">
+ <li role="menuitem"><roundcube:button command="calendar-edit" label="calendar.edit" classAct="active" /></li>
+ <li role="menuitem"><roundcube:button command="calendar-delete" label="delete" classAct="active" /></li>
+ <roundcube:if condition="env:calendar_driver == 'kolab'" />
+ <li role="menuitem"><roundcube:button command="calendar-remove" label="calendar.removelist" classAct="active" /></li>
+ <roundcube:endif />
+ <li role="menuitem"><roundcube:button command="calendar-showurl" label="calendar.showurl" classAct="active" /></li>
+ <roundcube:if condition="env:calendar_driver == 'kolab'" />
+ <li role="menuitem"><roundcube:button command="folders" task="settings" type="link" label="managefolders" classAct="active" /></li>
+ <roundcube:endif />
+ </ul>
+</div>
+
+<div id="eventshow" class="uidialog eventdialog" aria-hidden="true">
+ <h1 id="event-title">Event Title</h1>
+ <div class="event-section" id="event-location">Location</div>
+ <div class="event-section" id="event-date">From-To</div>
+ <div class="event-section" id="event-description">
+ <h5 class="label"><roundcube:label name="calendar.description" /></h5>
+ <div class="event-text"></div>
+ </div>
+ <div class="event-section" id="event-url">
+ <h5 class="label"><roundcube:label name="calendar.url" /></h5>
+ <div class="event-text"></div>
+ </div>
+ <div class="event-section" id="event-repeat">
+ <h5 class="label"><roundcube:label name="calendar.repeat" /></h5>
+ <div class="event-text"></div>
+ </div>
+ <div class="event-section" id="event-alarm">
+ <h5 class="label"><roundcube:label name="calendar.alarms" /></h5>
+ <div class="event-text"></div>
+ </div>
+ <div class="event-section event-attendees" id="event-attendees">
+ <h5 class="label"><roundcube:label name="calendar.tabattendees" /></h5>
+ <div class="event-text"></div>
+ </div>
+ <div class="event-line" id="event-partstat">
+ <label><roundcube:label name="calendar.mystatus" /></label>
+ <span class="changersvp" role="button" tabindex="0" title="<roundcube:label name='calendar.changepartstat' />">
+ <span class="event-text"></span>
+ <a class="iconbutton edit"><roundcube:label name='calendar.changepartstat' /></a>
+ </span>
+ </div>
+ <div class="event-line" id="event-calendar">
+ <label><roundcube:label name="calendar.calendar" /></label>
+ <span class="event-text">Default</span>
+ </div>
+ <div class="event-line" id="event-category">
+ <label><roundcube:label name="calendar.category" /></label>
+ <span class="event-text"></span>
+ </div>
+ <div class="event-line" id="event-status">
+ <label><roundcube:label name="calendar.status" /></label>
+ <span class="event-text"></span>
+ </div>
+ <div class="event-line" id="event-free-busy">
+ <label><roundcube:label name="calendar.freebusy" /></label>
+ <span class="event-text"></span>
+ </div>
+ <div class="event-line" id="event-priority">
+ <label><roundcube:label name="calendar.priority" /></label>
+ <span class="event-text"></span>
+ </div>
+ <div class="event-line" id="event-sensitivity">
+ <label><roundcube:label name="calendar.sensitivity" /></label>
+ <span class="event-text"></span>
+ </div>
+ <div class="event-section" id="event-links">
+ <label><roundcube:label name="calendar.links" /></label>
+ <span class="event-text"></span>
+ <br style="clear:left">
+ </div>
+ <div class="event-section" id="event-attachments">
+ <label><roundcube:label name="attachments" /></label>
+ <div class="event-text"></div>
+ </div>
+ <div class="event-line" id="event-created-changed">
+ <label><roundcube:label name="calendar.created" /></label>
+ <span class="event-text event-created"></span>
+ <label><roundcube:label name="calendar.changed" /></label>
+ <span class="event-text event-changed"></span>
+ </div>
+ <div class="event-line" id="event-rsvp-comment">
+ <label><roundcube:label name="calendar.rsvpcomment" /></label>
+ <span class="event-text"></span>
+ </div>
+
+ <roundcube:object name="plugin.event_rsvp_buttons" id="event-rsvp" class="event-dialog-message" style="display:none" />
+</div>
+
+<div id="eventoptionsmenu" class="popupmenu" aria-hidden="true">
+ <h3 id="aria-label-eventoptions" class="voice"><roundcube:label name="calendar.eventoptions" /></h3>
+ <ul id="eventoptionsmenu-menu" class="toolbarmenu" role="menu" aria-labelledby="aria-label-eventoptions">
+ <li role="menuitem"><roundcube:button command="event-download" label="download" classAct="active" /></li>
+ <li role="menuitem"><roundcube:button command="event-sendbymail" label="send" classAct="active" /></li>
+ <roundcube:if condition="env:calendar_driver == 'kolab' && config:kolab_bonnie_api" />
+ <li role="menuitem"><roundcube:button command="event-history" type="link" label="calendar.eventhistory" classAct="active" /></li>
+ <roundcube:endif />
+ </ul>
+</div>
+
+<div id="eventdiff" class="uidialog eventdialog" aria-hidden="true">
+ <h1 class="event-title">Event Title</h1>
+ <h1 class="event-title-new event-text-new"></h1>
+ <div class="event-section event-date"></div>
+ <div class="event-section event-location">
+ <h5 class="label"><roundcube:label name="calendar.location" /></h5>
+ <div class="event-text-old"></div>
+ <div class="event-text-new"></div>
+ </div>
+ <div class="event-section event-description">
+ <h5 class="label"><roundcube:label name="calendar.description" /></h5>
+ <div class="event-text-diff" style="white-space:pre-wrap"></div>
+ <div class="event-text-old"></div>
+ <div class="event-text-new"></div>
+ </div>
+ <div class="event-section event-url">
+ <h5 class="label"><roundcube:label name="calendar.url" /></h5>
+ <div class="event-text-old"></div>
+ <div class="event-text-new"></div>
+ </div>
+ <div class="event-section event-recurrence">
+ <h5 class="label"><roundcube:label name="calendar.repeat" /></h5>
+ <div class="event-text-old"></div>
+ <div class="event-text-new"></div>
+ </div>
+ <div class="event-section event-alarms">
+ <h5 class="label"><roundcube:label name="calendar.alarms" /><span class="index"></span></h5>
+ <div class="event-text-old"></div>
+ <div class="event-text-new"></div>
+ </div>
+ <div class="event-line event-start">
+ <label><roundcube:label name="calendar.start" /></label>
+ <span class="event-text-old"></span> &#8674;
+ <span class="event-text-new"></span>
+ </div>
+ <div class="event-line event-end">
+ <label><roundcube:label name="calendar.end" /></label>
+ <span class="event-text-old"></span> &#8674;
+ <span class="event-text-new"></span>
+ </div>
+ <div class="event-line event-attendees">
+ <label><roundcube:label name="calendar.tabattendees" /><span class="index"></span></label>
+ <span class="event-text-old"></span> &#8674;
+ <span class="event-text-new"></span>
+ </div>
+ <div class="event-line event-calendar">
+ <label><roundcube:label name="calendar.calendar" /></label>
+ <span class="event-text-old"></span> &#8674;
+ <span class="event-text-new"></span>
+ </div>
+ <div class="event-line event-categories">
+ <label><roundcube:label name="calendar.category" /></label>
+ <span class="event-text-old"></span> &#8674;
+ <span class="event-text-new"></span>
+ </div>
+ <div class="event-line event-status">
+ <label><roundcube:label name="calendar.status" /></label>
+ <span class="event-text-old"></span> &#8674;
+ <span class="event-text-new"></span>
+ </div>
+ <div class="event-line event-free_busy">
+ <label><roundcube:label name="calendar.freebusy" /></label>
+ <span class="event-text-old"></span> &#8674;
+ <span class="event-text-new"></span>
+ </div>
+ <div class="event-line event-priority">
+ <label><roundcube:label name="calendar.priority" /></label>
+ <span class="event-text-old"></span> &#8674;
+ <span class="event-text-new"></span>
+ </div>
+ <div class="event-line event-sensitivity">
+ <label><roundcube:label name="calendar.sensitivity" /></label>
+ <span class="event-text-old"></span> &#8674;
+ <span class="event-text-new"></span>
+ </div>
+ <div class="event-section event-attachments">
+ <label><roundcube:label name="attachments" /><span class="index"></span></label>
+ <div class="event-text-old"></div>
+ <div class="event-text-new"></div>
+ </div>
+</div>
+
+<roundcube:include file="/templates/eventedit.html" />
+
+<div id="eventresourcesdialog" class="uidialog" aria-hidden="true">
+ <div id="resource-dialog-left">
+ <div id="resource-selection" class="uibox listbox" role="navigation" aria-labelledby="aria-label-resourceselection">
+ <h2 class="voice" id="aria-label-resourceselection"><roundcube:label name="calendar.arialabelresourceselection" /></h2>
+ <div id="resourcequicksearch">
+ <div class="searchbox" role="search" aria-labelledby="aria-label-resourcesearchform" aria-controls="resources-list">
+ <h3 id="aria-label-resourcesearchform" class="voice"><roundcube:label name="calendar.arialabelresourcesearchform" /></h3>
+ <label for="resourcesearchbox" class="voice"><roundcube:label name="calendar.searchterms" /></label>
+ <roundcube:object name="plugin.resources_searchform" id="resourcesearchbox" />
+ <a id="resourcesearchmenulink" class="iconbutton searchoptions"> </a>
+ <roundcube:button command="reset-resource-search" id="resourcesearchreset" class="iconbutton reset" title="resetsearch" label="resetsearch" />
+ </div>
+ </div>
+ <div class="scroller">
+ <roundcube:object name="plugin.resources_list" id="resources-list" class="listing treelist" />
+ </div>
+ </div>
+ </div>
+
+ <div id="resource-dialog-right">
+ <div id="resource-info" class="uibox contentbox" role="region" aria-labelledby="aria-label-resourcedetails">
+ <h2 class="boxtitle" id="aria-label-resourcedetails"><roundcube:label name="calendar.resourcedetails" /></h2>
+ <div class="scroller">
+ <roundcube:object name="plugin.resource_info" id="resource-details" class="propform" aria-live="polite" aria-relevant="text" aria-atomic="true" />
+ </div>
+ </div>
+
+ <div id="resource-availability" class="uibox contentbox" role="region" aria-labelledby="aria-label-resourceavailability">
+ <h2 class="boxtitle" id="aria-label-resourceavailability"><roundcube:label name="calendar.resourceavailability" /></h2>
+ <roundcube:object name="plugin.resource_calendar" id="resource-freebusy-calendar" />
+ <div class="boxpagenav">
+ <roundcube:button name="resource-cal-prev" id="resource-calendar-prev" type="link" class="icon prevpage" title="calendar.prevslot" label="calendar.prevweek" />
+ <roundcube:button name="resource-cal-next" id="resource-calendar-next" type="link" class="icon nextpage" title="calendar.nextslot" label="calendar.nextweek" />
+ </div>
+ </div>
+ </div>
+</div>
+
+<div id="eventfreebusy" class="uidialog" aria-hidden="true">
+ <roundcube:object name="plugin.attendees_freebusy_table" id="attendees-freebusy-table" cellpadding="0" />
+
+ <div class="schedule-options">
+ &nbsp;
+ <div class="schedule-buttons">
+ <button id="shedule-freebusy-prev" title="<roundcube:label name='previouspage' />">&#9668;</button><button id="shedule-freebusy-next" title="<roundcube:label name='nextpage' />">&#9658;</button>
+ </div>
+ </div>
+
+ <div style="float:left; width:28em">
+ <div class="form-section">
+ <label for="schedule-startdate"><roundcube:label name="calendar.start" /></label>
+ <input type="text" name="startdate" size="11" id="schedule-startdate" disabled="true" /> &nbsp;
+ <input type="text" name="starttime" size="6" id="schedule-starttime" disabled="true" />
+ </div>
+ <div class="form-section">
+ <label for="schedule-enddate"><roundcube:label name="calendar.end" /></label>
+ <input type="text" name="enddate" size="11" id="schedule-enddate" disabled="true" /> &nbsp;
+ <input type="text" name="endtime" size="6" id="schedule-endtime" disabled="true" />
+ </div>
+ </div>
+ <div style="float:left">
+ <div class="schedule-find-buttons">
+ <button id="shedule-find-prev">&#9668; <roundcube:label name="calendar.prevslot" /></button>
+ <button id="shedule-find-next"><roundcube:label name="calendar.nextslot" /> &#9658;</button>
+ </div>
+ <div class="schedule-options">
+ <label><input type="checkbox" id="schedule-freebusy-workinghours" value="1" /><roundcube:label name="calendar.onlyworkinghours" /></label>
+ </div>
+ </div>
+ <br style="clear:both;" />
+
+ <roundcube:include file="/templates/freebusylegend.html" />
+ <div class="attendees-list">
+ <span class="attendee organizer"><roundcube:label name="calendar.roleorganizer" /></span>
+ <span class="attendee req-participant"><roundcube:label name="calendar.rolerequired" /></span>
+ <span class="attendee opt-participant"><roundcube:label name="calendar.roleoptional" /></span>
+ <span class="attendee non-participant"><roundcube:label name="calendar.rolenonparticipant" /></span>
+ <span class="attendee chair"><roundcube:label name="calendar.rolechair" /></span>
+ </div>
+</div>
+
+<div id="eventhistory" class="uidialog" aria-hidden="true">
+ <roundcube:object name="plugin.object_changelog_table" id="event-changelog-table" class="records-table changelog-table" domain="calendar" />
+ <div class="compare-button"><input type="button" class="button" value="↳ <roundcube:label name='calendar.compare' />" /></div>
+</div>
+
+<div id="calendarform" class="uidialog" aria-hidden="true">
+ <roundcube:label name="loading" />
+</div>
+
+<div id="eventsimport" class="uidialog">
+ <roundcube:object name="plugin.events_import_form" id="events-import-form" uploadFieldSize="30" />
+</div>
+
+<div id="eventsexport" class="uidialog">
+ <roundcube:object name="plugin.events_export_form" id="events-export-form" />
+</div>
+
+<div id="calendarurlbox" class="uidialog">
+ <p><roundcube:label name="calendar.showurldescription" /></p>
+ <textarea id="calfeedurl" rows="2" readonly="readonly"></textarea>
+ <div id="calendarcaldavurl" style="display:none">
+ <p><roundcube:label name="calendar.caldavurldescription" html="yes" /></p>
+ <textarea id="caldavurl" rows="2" readonly="readonly"></textarea>
+ </div>
+</div>
+
+<roundcube:object name="plugin.calendar_css" />
+
+<script type="text/javascript">
+
+// UI startup
+var UI = new rcube_mail_ui();
+
+$(document).ready(function(e){
+ UI.init();
+
+ new calendarview_splitter({ id:'calsidebarsplitter', p1:'#calendarsidebar', p2:'#calendar',
+ orientation:'v', relative:true, start:280, min:260, size:12, offset:0 });
+
+ new rcube_splitter({ id:'calresourceviewsplitter', p1:'#resource-dialog-left', p2:'#resource-dialog-right',
+ orientation:'v', relative:true, start:380, min:220, size:10, offset:-3 }).init();
+
+ // animation to unfold list search box
+ $('#calendars .boxtitle a.search').click(function(e){
+ var title = $('#calendars .boxtitle'),
+ box = $('#calendars .listsearchbox'),
+ dir = box.is(':visible') ? -1 : 1;
+
+ if (!rcube_event.is_keyboard(e))
+ $(this).blur();
+
+ box.slideToggle({
+ duration: 160,
+ progress: function(animation, progress) {
+ if (dir < 0) progress = 1 - progress;
+ $('#calendars .scroller').css('top', (title.outerHeight() + 34 * progress) + 'px');
+ },
+ complete: function() {
+ box.toggleClass('expanded');
+ if (box.is(':visible')) {
+ box.find('input[type=text]').focus();
+ }
+ else {
+ $('#calendarlistsearch-reset').click();
+ }
+ // TODO: save state in localStorage
+ }
+ });
+
+ return false;
+ });
+
+});
+
+
+/**
+ * Extended rcube_splitter class that entirely collapses the calendar sidebar
+ */
+function calendarview_splitter(p)
+{
+ this.collapsed = false;
+ this.dragging = false;
+ this.threshold = 80;
+ this.lastpos = -1;
+ this._lastpos = -1;
+ this._min = p.min;
+
+ var me = this;
+ p.callback = function(e){
+ if (me.lastpos != me._lastpos) {
+ me.dragging = true;
+ setTimeout(function(){ me.dragging = false; }, 50);
+ me._lastpos = me.lastpos;
+ }
+ };
+
+ // extend base class
+ p.min = 20;
+ rcube_splitter.call(this, p);
+
+ // @override
+ this.resize = function()
+ {
+ if (this.pos < this.threshold) {
+ if (!this.collapsed)
+ this.collapse();
+ }
+ else if (this.pos < this._min && this.pos > this._min / 2) {
+ if (this.collapsed)
+ this.expand();
+ }
+ else if (this.pos >= this._min) {
+ this.p1.css('width', Math.floor(this.pos - this.p1pos.left - this.halfsize) + 'px');
+ this.p2.css('left', Math.ceil(this.pos + this.halfsize) + 'px');
+ this.handle.css('left', Math.round(this.pos - this.halfsize + this.offset + 3)+'px');
+ if (bw.ie) {
+ var new_width = parseInt(this.parent.outerWidth(), 10) - parseInt(this.p2.css('left'), 10) ;
+ this.p2.css('width', (new_width > 0 ? new_width : 0) + 'px');
+ }
+
+ this.p2.resize();
+ this.p1.resize();
+ this.lastpos = this.pos;
+
+ if (this._lastpos == -1)
+ this._lastpos = this.pos;
+
+ // also resize iframe covers
+ if (this.drag_active) {
+ $('iframe').each(function(i, elem) {
+ var pos = $(this).offset();
+ $('#iframe-splitter-fix-'+i).css({ top: pos.top+'px', left: pos.left+'px', width:elem.offsetWidth+'px', height: elem.offsetHeight+'px' });
+ });
+ }
+
+ if (typeof this.render == 'function')
+ this.render(this);
+ }
+ }
+
+ this.collapse = function(animated)
+ {
+ var me = this, time = 250;
+ if (animated) {
+ this.p1.animate({ left:'0px' }, time, function(){ $(this).hide(); });
+ this.p2.animate({ left:this.p.size + 'px' }, time, function(){ $(this).resize(); });
+ this.handle.animate({ left:'3px'}, time, function(){ $(this).addClass('sidebarclosed') });
+ }
+ else {
+ this.p1.css('left', 0).hide();
+ this.p2.css('left', this.p.size + 'px');
+ this.handle.css('left', '3px').addClass('sidebarclosed');
+ this.p2.resize();
+ }
+
+ // stop dragging
+ if (this.drag_active) {
+ this.drag_active = false;
+ $(document).unbind('.'+this.id);
+ $('div.iframe-splitter-fix').remove();
+ }
+
+ this.pos = 10;
+ this.collapsed = true;
+ this.set_cookie();
+ }
+
+ this.expand = function()
+ {
+ var me = this, time = 250;
+ this.handle.removeClass('sidebarclosed');
+ this.pos = this.lastpos > 0 ? this.lastpos : this._min;
+ this.p1pos.left = 10;
+ this.p1.show().animate({ left:'10px', width:(this.pos - this.p1pos.left - this.halfsize) + 'px' }, time);
+ this.p2.animate({ left:(this.pos + this.halfsize) + 'px' }, time, function(){ me.resize(); });
+ this.handle.animate({ left:(this.pos - this.halfsize + this.offset + 3) + 'px' }, time);
+
+ this.collapsed = false;
+ this.set_cookie();
+ }
+
+ this.init();
+
+ var me = this;
+ this.handle.bind('click', function(e){
+ if (!me.collapsed && !me.dragging)
+ me.collapse(true);
+ else if (!me.dragging)
+ me.expand();
+ });
+}
+
+</script>
+
+</body>
+</html>
diff --git a/calendar/skins/larry/templates/eventedit.html b/calendar/skins/larry/templates/eventedit.html
new file mode 100644
index 0000000..4d0585b
--- /dev/null
+++ b/calendar/skins/larry/templates/eventedit.html
@@ -0,0 +1,133 @@
+<div id="eventedit" class="uidialog uidialog-tabbed" aria-hidden="true">
+ <form id="eventtabs" action="#" method="post" enctype="multipart/form-data">
+ <ul>
+ <li><a href="#event-panel-summary"><roundcube:label name="calendar.tabsummary" /></a></li><li id="edit-tab-recurrence"><a href="#event-panel-recurrence"><roundcube:label name="calendar.tabrecurrence" /></a></li><li id="edit-tab-attendees"><a href="#event-panel-attendees"><roundcube:label name="calendar.tabattendees" /></a></li><li id="edit-tab-resources"><a href="#event-panel-resources"><roundcube:label name="calendar.tabresources" /></a></li><li id="edit-tab-attachments"><a href="#event-panel-attachments"><roundcube:label name="calendar.tabattachments" /></a></li>
+ </ul>
+ <!-- basic info -->
+ <div id="event-panel-summary">
+ <div class="event-section">
+ <label for="edit-title"><roundcube:label name="calendar.title" /></label>
+ <br />
+ <input type="text" class="text" name="title" id="edit-title" size="40" required="true" />
+ </div>
+ <div class="event-section">
+ <label for="edit-location"><roundcube:label name="calendar.location" /></label>
+ <br />
+ <input type="text" class="text" name="location" id="edit-location" size="40" />
+ </div>
+ <div class="event-section">
+ <label for="edit-description"><roundcube:label name="calendar.description" /></label>
+ <br />
+ <textarea name="description" id="edit-description" class="text" rows="5" cols="40"></textarea>
+ </div>
+ <div class="event-section">
+ <label for="edit-url"><roundcube:label name="calendar.url" /></label>
+ <br />
+ <input type="text" class="text" name="vurl" id="edit-url" size="40" />
+ </div>
+ <div class="event-section">
+ <label style="float:right;padding-right:0.5em"><input type="checkbox" name="allday" id="edit-allday" value="1" /><roundcube:label name="calendar.all-day" /></label>
+ <label for="edit-startdate"><roundcube:label name="calendar.start" /></label>
+ <input type="text" name="startdate" size="11" id="edit-startdate" required="true" /> &nbsp;
+ <input type="text" name="starttime" size="6" id="edit-starttime" aria-label="<roundcube:label name='calendar.starttime' />" />
+ </div>
+ <div class="event-section">
+ <label for="edit-enddate"><roundcube:label name="calendar.end" /></label>
+ <input type="text" name="enddate" size="11" id="edit-enddate" required="true" /> &nbsp;
+ <input type="text" name="endtime" size="6" id="edit-endtime" aria-label="<roundcube:label name='calendar.endtime' />" />
+ </div>
+ <div class="event-section" id="edit-alarms">
+ <div class="edit-alarm-item first">
+ <label for="edit-alarm-item"><roundcube:label name="calendar.alarms" /></label>
+ <roundcube:object name="plugin.alarm_select" id="edit-alarm-item" />
+ <span class="edit-alarm-buttons">
+ <a href="#add" class="iconbutton add add-alarm"><roundcube:label name="libcalendaring.addalarm" /></a>
+ <a href="#delete" class="iconbutton remove delete-alarm"><roundcube:label name="libcalendaring.removealarm" /></a>
+ </span>
+ </div>
+ </div>
+ <div class="event-section" id="calendar-select">
+ <label for="edit-calendar"><roundcube:label name="calendar.calendar" /></label>
+ <roundcube:object name="plugin.calendar_select" id="edit-calendar" />
+ </div>
+ <div class="event-section">
+ <label for="edit-categories"><roundcube:label name="calendar.category" /></label>
+ <roundcube:object name="plugin.category_select" id="edit-categories" />
+ </div>
+ <div class="event-section">
+ <label for="edit-event-status"><roundcube:label name="calendar.status" /></label>
+ <roundcube:object name="plugin.status_select" id="edit-event-status" />
+ </div>
+ <div class="event-section">
+ <label for="edit-free-busy"><roundcube:label name="calendar.freebusy" /></label>
+ <roundcube:object name="plugin.freebusy_select" id="edit-free-busy" />
+ </div>
+ <div class="event-section">
+ <label for="edit-priority"><roundcube:label name="calendar.priority" /></label>
+ <roundcube:object name="plugin.priority_select" id="edit-priority" />
+ </div>
+ <div class="event-section">
+ <label for="edit-sensitivity"><roundcube:label name="calendar.sensitivity" /></label>
+ <roundcube:object name="plugin.sensitivity_select" id="edit-sensitivity" />
+ </div>
+ <div class="event-section" id="edit-event-links">
+ <label><roundcube:label name="calendar.links" /></label>
+ <div class="event-text"></div>
+ <br style="clear:left">
+ </div>
+ </div>
+ <!-- recurrence settings -->
+ <div id="event-panel-recurrence">
+ <div class="event-section border-after">
+ <roundcube:object name="plugin.recurrence_form" part="frequency" />
+ </div>
+ <div class="recurrence-form border-after" id="recurrence-form-daily">
+ <roundcube:object name="plugin.recurrence_form" part="daily" class="event-section" />
+ </div>
+ <div class="recurrence-form border-after" id="recurrence-form-weekly">
+ <roundcube:object name="plugin.recurrence_form" part="weekly" class="event-section" />
+ </div>
+ <div class="recurrence-form border-after" id="recurrence-form-monthly">
+ <roundcube:object name="plugin.recurrence_form" part="monthly" class="event-section" />
+ </div>
+ <div class="recurrence-form border-after" id="recurrence-form-yearly">
+ <roundcube:object name="plugin.recurrence_form" part="yearly" class="event-section" />
+ </div>
+ <div class="recurrence-form" id="recurrence-form-until">
+ <roundcube:object name="plugin.recurrence_form" part="until" class="event-section" />
+ </div>
+ <div class="recurrence-form" id="recurrence-form-rdate">
+ <roundcube:object name="plugin.recurrence_form" part="rdate" class="event-section" />
+ </div>
+ </div>
+ <!-- attendees list -->
+ <div id="event-panel-attendees">
+ <h3 id="aria-label-attendeestable" class="voice"><roundcube:label name="calendar.arialabeleventattendees" /></h3>
+ <roundcube:object name="plugin.attendees_list" id="edit-attendees-table" class="records-table edit-attendees-table" coltitle="attendee" aria-labelledby="aria-label-attendeestable" />
+ <roundcube:object name="plugin.attendees_form" id="edit-attendees-form" />
+ <roundcube:include file="/templates/freebusylegend.html" />
+ </div>
+ <!-- resources list -->
+ <div id="event-panel-resources">
+ <h3 id="aria-label-resourcestable" class="voice"><roundcube:label name="calendar.arialabeleventresources" /></h3>
+ <roundcube:object name="plugin.attendees_list" id="edit-resources-table" class="records-table edit-attendees-table" coltitle="resource" aria-labelledby="aria-label-resourcestable" />
+ <roundcube:object name="plugin.resources_form" id="edit-resources-form" />
+ <roundcube:include file="/templates/freebusylegend.html" />
+ </div>
+ <!-- attachments list (with upload form) -->
+ <div id="event-panel-attachments">
+ <div id="edit-attachments">
+ <roundcube:object name="plugin.attachments_list" id="attachment-list" class="attachmentslist" />
+ </div>
+ <div id="edit-attachments-form" role="region" aria-labelledby="aria-label-attachmentuploadform">
+ <h3 id="aria-label-attachmentuploadform" class="voice"><roundcube:label name="arialabelattachmentuploadform" /></h2>
+ <roundcube:object name="plugin.attachments_form" id="calendar-attachment-form" attachmentFieldSize="30" />
+ </div>
+ <roundcube:object name="plugin.filedroparea" id="event-panel-attachments" />
+ </div>
+ </form>
+
+ <roundcube:object name="plugin.edit_attendees_notify" id="edit-attendees-notify" class="event-dialog-message" style="display:none" />
+ <roundcube:object name="plugin.edit_recurring_warning" class="event-dialog-message edit-recurring-warning" style="display:none" />
+ <div id="edit-localchanges-warning" class="event-dialog-message" style="display:none"><roundcube:label name="calendar.localchangeswarning" /></div>
+</div> \ No newline at end of file
diff --git a/calendar/skins/larry/templates/freebusylegend.html b/calendar/skins/larry/templates/freebusylegend.html
new file mode 100644
index 0000000..41de703
--- /dev/null
+++ b/calendar/skins/larry/templates/freebusylegend.html
@@ -0,0 +1,7 @@
+ <div id="edit-attendees-legend" class="availability">
+ <span class="legend"><img class="availabilityicon free" src="program/resources/blank.gif" /> <roundcube:label name="calendar.availfree" /></span>
+ <span class="legend"><img class="availabilityicon busy" src="program/resources/blank.gif" /> <roundcube:label name="calendar.availbusy" /></span>
+ <span class="legend"><img class="availabilityicon tentative" src="program/resources/blank.gif" /> <roundcube:label name="calendar.availtentative" /></span>
+ <!--<span class="legend"><img class="availabilityicon out-of-office" src="program/resources/blank.gif" /> <roundcube:label name="calendar.availoutofoffice" /></span>-->
+ <span class="legend"><img class="availabilityicon unknown" src="program/resources/blank.gif" /> <roundcube:label name="calendar.availunknown" /></span>
+ </div>
diff --git a/calendar/skins/larry/templates/itipattend.html b/calendar/skins/larry/templates/itipattend.html
new file mode 100644
index 0000000..545d018
--- /dev/null
+++ b/calendar/skins/larry/templates/itipattend.html
@@ -0,0 +1,37 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+</head>
+<body class="extwin calendaritipattend">
+
+<div id="header">
+<div id="topline">
+ <div class="topright">
+ <a href="#close" class="closelink" onclick="self.close()"><roundcube:label name="close" /></a>
+ </div>
+</div>
+
+<div id="topnav">
+ <roundcube:object name="logo" src="/images/roundcube_logo.png" id="toplogo" border="0" alt="Logo" />
+</div>
+
+<br style="clear:both" />
+</div>
+
+<div id="mainscreen">
+
+<div class="centerbox uibox">
+ <roundcube:object name="plugin.event_inviteform" />
+ <roundcube:object name="plugin.event_invitebox" class="calendar-invitebox" />
+ <roundcube:object name="plugin.event_rsvp_buttons" type="submit" iname="rsvp" id="event-rsvp" delegate="false" />
+ </form>
+</div>
+
+<roundcube:object name="message" id="message" />
+
+</div>
+
+</body>
+</html> \ No newline at end of file
diff --git a/calendar/skins/larry/templates/kolabacl.html b/calendar/skins/larry/templates/kolabacl.html
new file mode 100644
index 0000000..ed9b0c7
--- /dev/null
+++ b/calendar/skins/larry/templates/kolabacl.html
@@ -0,0 +1,26 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+<roundcube:include file="/includes/links.html" />
+<style type="text/css" media="screen">
+
+body.aclform {
+ background: #efefef;
+ margin: 0;
+}
+
+body.aclform .hint {
+ margin: 1em;
+}
+
+</style>
+</head>
+<body class="iframe aclform">
+
+<roundcube:object name="folderacl" />
+
+<roundcube:include file="/includes/footer.html" />
+
+</body>
+</html>
diff --git a/calendar/skins/larry/templates/kolabform.html b/calendar/skins/larry/templates/kolabform.html
new file mode 100644
index 0000000..77a1c30
--- /dev/null
+++ b/calendar/skins/larry/templates/kolabform.html
@@ -0,0 +1,9 @@
+<div id="calendar-kolabform" class="propform tabbed">
+ <roundcube:object name="calendarform" />
+</div>
+<style type="text/css">
+#calendarpropform { min-width:680px; margin-top:-12px; }
+</style>
+<script type="text/javascript">
+UI.init_tabs('#calendar-kolabform');
+</script> \ No newline at end of file
diff --git a/calendar/skins/larry/templates/print.html b/calendar/skins/larry/templates/print.html
new file mode 100644
index 0000000..e679f72
--- /dev/null
+++ b/calendar/skins/larry/templates/print.html
@@ -0,0 +1,29 @@
+<roundcube:object name="doctype" value="html5" />
+<html>
+<head>
+<title><roundcube:object name="pagetitle" /></title>
+</head>
+<body class="calendarprint">
+
+<div id="printconfig" class="noprint">
+ <div class="calwidth">
+ <a href="#close" onclick="window.close()" class="rightalign"><roundcube:label name="close" /></a>
+ <span class="prop"><input type="button" id="printme" value="<roundcube:label name='print' />" onclick="window.print()"></span>
+ <span class="prop"><label><input type="checkbox" id="propdescription" checked="checked" /> <roundcube:label name="calendar.printdescriptions" /></label></span>
+ </div>
+</div>
+
+<roundcube:object name="message" id="message" class="noprint" />
+
+<div id="calendar" class="calwidth"></div>
+
+<div class="calwidth">
+ <roundcube:object name="plugin.calendar_list" activeonly="true" id="calendarlist" />
+ <br style="clear:both">
+</div>
+
+<roundcube:object name="plugin.calendar_css" printmode="true" />
+
+<!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="plugins/calendar/skins/classic/print.iehacks.css" /><![endif]-->
+</body>
+</html> \ No newline at end of file

© 2014-2024 Faster IT GmbH | imprint | privacy policy