primo commit

This commit is contained in:
2024-12-17 17:34:10 +01:00
commit e650f8df99
16435 changed files with 2451012 additions and 0 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,407 @@
/**
* @package JEM
* @copyright (C) 2013-2024 joomlaeventmanager.net
* @copyright (C) 2005-2009 Christoph Lukes
* @license https://www.gnu.org/licenses/gpl-3.0 GNU/GPL
*/
.jem_calendar th,
.jem_calendar td {
padding: 0;
margin: 0;
}
table.month, table.week {
background-color: #fff;
width: 100%;
}
@media screen and (min-width: 801px) {
table.month, table.week {
border: 1px solid #000;
}
}
table.month {
table-layout: fixed;
}
.monthname {
font-weight: bold;
text-align: center;
}
.daynamesRow,
.daynamesRow td {
background-color: #4C4C4C;
text-align: center;
vertical-align: middle;
}
.dayname {
color: #FFF;
font-weight: bold;
}
.daysRow {
color: #433D27;
height: 88px;
text-align: left;
vertical-align: top;
}
.daynum,
td.today div.daynum::before,
td.today div.daynum::after {
background-color: #e0e0e0; /*#A2A3AE;*/
color: #000; /*#FBFCEF;*/
font-weight: bold;
margin: 0px;
text-align: left;
vertical-align: top;
}
.daynum {
padding: 2px;
}
.daynum a {
color: #000; /*#FBFCEF;*/
text-decoration: none;
/*background-color: #e0e0e0; /*inherit !important;*/
}
.daynum a::after {
font-size: 10px;
padding-left: 5px;
font-family:var(--fa-style-family,"Font Awesome 6 Free", "Font Awesome 5 Free");
font-weight:var(--fa-style,900);
content: "\f35d";
}
.selectedday .daynum {
background-color: #31528E;
}
.nomonthday {
background-color: #EEEEEE;
height: 88px;
}
.eventcontent,
div[id^=catz],
div[id^='venuez'],
div[id^='scat'] {
border: none;
margin: 0;
padding: 0;
}
.eventcontentinner {
cursor: pointer;
background-color: yellow;
border-radius: 5px;
padding: 5px;
margin: 5px;
overflow: hidden;
word-break: break-word;
hyphens: auto;
}
.borderfeatured {
border-width: 3px;
border-style: solid;
}
div#jem .eventcontentinner a {
color: #333;
/* text-decoration:none; */
}
/* *** CALENDAR WEEK ADDITIONS START *** */
div#jem a .eventcontenttop {
text-decoration: none;
color: black;
}
div#jem .eventcontenttop {
height: 16px;
min-height: 16px;
text-align: left;
padding-left: 4px;
padding-top: 2px;
top: 60px;
}
div#jem .eventtitle {
text-align: left;
}
div#jem .rowcolor {
height: 10px;
text-align: right;
}
div#jem .eventtitle {
min-height: 30px;
word-wrap: break-word;
margin-right: 2px;
margin-left: 2px;
margin-top: 2px;
}
/* *** CALENDAR WEEK ADDITIONS END *** */
.eventandmore {
cursor: pointer;
overflow: hidden;
border-radius: 5px;
padding: 5px;
margin: 5px;
}
.eventandmore a::after {
font-family: FontAwesome;
content: "\f08e";
margin-left: 5px;
}
/* for the tooltip */
.custom-tip {
color: #000;
width: 200px;
z-index: 13000;
border: 1px solid lightgrey;
}
.custom-title {
font-weight: bold;
font-size: 11px;
margin: 10px;
color: white;
padding: 2px 5px 1px;
background: #7598FF;
text-align: left;
}
.custom-text {
font-size: 11px;
padding: 2px 2px 2px;
background: white;
}
.custom-tip .eventName {
text-align: left;
background: lightgrey;
margin: 5px 0px 5px;
}
.custom-tip .location {
text-align: left;
}
.custom-tip .location .legend {
font-weight: bold;
}
.colorpic {
padding: 0 4px;
margin: 0 2px;
}
#jlcalendarlegend {
clear: both;
margin-top: 4px;
}
#jlcalendarlegend .calendarButtons, #jlcalendarlegend .calendarLegends {
padding: 10px 0;
}
#jlcalendarlegend .eventCat {
margin-right: 10px;
}
#jlcalendarlegend .legendb {
display: inline-block;
background-color: green;
line-height: 10px;
margin-right: 4px;
}
#jlcalendarlegend .eventCat.catoff {
color: lightgrey;
font-style: italic;
}
#buttonshowall,
#buttonhideall {
margin-right: 10px;
}
div#jem td {
border: 1px solid #cacaca;
}
/* *** CALENDAR WEEK ADDITIONS START *** */
/* set week column to a minimal width */
#jem table.week .weeknumtitle,
#jem table.week .weeknum {
padding-left: 4px;
padding-right: 4px;
width: 1%;
}
.weeknumtitle {
text-align: center;
font-size: 10px;
font-weight: bold;
color: #FFF; /* calendarweek: #667171 */
border-style: none;
border-width: 1px;
padding: 2px 3px;
}
.weeknum {
text-align: center;
font-size: 12px;
font-weight: bold;
padding: 2px 3px;
color: #CD5C5C;
background-color: #FAEBD7;
}
.week {
border-style: none;
background-color: #EEDFCC;
text-align: center;
}
.monthweek {
text-align: left;
padding: 3px;
font-size: 10px;
font-weight: bold;
color: #667171;
border-width: 1px;
}
.monthday {
text-align: center;
vertical-align: top;
font-size: 11px;
font-weight: bold;
background-color: #FFF;
color: #000;
height: 90px;
width: 90px;
}
div#jem .monthnavigation { /* delete complete construct */
font-size: 18pt;
font-weight: bold;
border: 0px;
padding-bottom: 10px;
vertical-align: middle;
}
div#jem .monthnavigation a {text-decoration: none;}
div#jem .monthname { /*delete complete construct */
border: 0px;
font-size: 16pt;
padding-bottom: 10px;
vertical-align: middle;
}
.saturday, .sunday {
background-color: #fcfcfc; /* background-color:#D4D4D4; */
color: #667171;
}
.sunday a, .saturday a {
color: #000;
}
.today {
background-color: #fefff2;
color: #000;
}
.today .daynum a {
color: #FFF;
/* calendarweek: vertical-align: top; */
}
.selectedday {
border-width: 1px;
border-style: outset;
background-color: #FFF;
}
/* *** CALENDAR WEEK ADDITIONS END *** */
@media not print {
@media only all and (max-width: 30rem), screen and (max-device-width: 30rem) and (orientation: landscape) {
/* Force table to not be like tables anymore */
div#jem table, div#jem thead, div#jem tbody, div#jem th, div#jem td, div#jem tr {
display: inline;
}
/* Nobody needs the Row with the daynames anymore */
div#jem tr.daynamesRow {
display: none;
}
/* Save place for the important information */
div#jem td.nomonthday {
display: none;
}
div#jem .daynum {
margin-top: 5px;
}
div#jem .eventcontentinner, .eventandmore {
width: 90%;
margin-left: auto;
margin-right: auto;
}
/* Otherwhise there are some little borders */
div#jem td {
border: none;;
}
div#jem .daynum a::after {
padding-left: 0px;
content: "";
}
div#jem .newMonthRow, div#jem .weeknum {
display: none;
}
div#jem td.monthday div.daynum::after {
content: ". " attr(jem-monthname);
}
div#jem .today .daynum a {
color: #000
}
div#jem td.today div.daynum::after {
/*color: #FFF;*/
background-color: transparent;
}
div#jem td.monthday div.daynum::before {
margin-left: 5px;
content: attr(jem-dayname) ", ";
background-color: transparent;
}
}
}

View File

@ -0,0 +1,380 @@
/**
* @package JEM
* @copyright (C) 2013-2024 joomlaeventmanager.net
* @copyright (C) 2005-2009 Christoph Lukes
* @license https://www.gnu.org/licenses/gpl-3.0 GNU/GPL
*/
.jem_calendar th,
.jem_calendar td {
padding: 0;
margin: 0;
}
table.month, table.week {
background-color: #FFFFFF;
width: 100%;
}
@media screen and (min-width: 801px) {
table.month, table.week {
border: 1px solid #000;
}
}
table.month {
table-layout: fixed;
}
.monthname {
color: #355881;
font-family: Geneva, Verdana, Arial, sans-serif;
font-size: 18px;
font-weight: bold;
text-align: center;
}
.daynamesRow,
.daynamesRow td {
background-color: #455678;
height: 20px;
text-align: center;
vertical-align: middle;
}
.dayname {
color: #FFFFFF; /* calendarweek: #667171 */
font-family: Geneva, Verdana, Arial, sans-serif;
font-size: 10px;
font-weight: bold;
}
.daysRow {
color: #433D27;
font-family: Arial, Geneva, Verdana, sans-serif;
font-size: 10px;
height: 88px;
text-align: left;
vertical-align: top;
}
.daynum {
background-color: #A2A3AE;
color: #FBFCEF;
font-family: Geneva, Verdana, Arial, sans-serif;
font-size: 11px;
font-weight: bold;
margin: 0px;
padding: 2px;
text-align: left;
vertical-align: top;
border-top: 1px solid black;
border-bottom: 1px solid black;
}
.selectedday .daynum {
background-color: #31528E;
}
.nomonthday {
background-color: #EEEEEE;
height: 88px;
}
div#jem .monthnavigation a {text-decoration: none;}
.eventcontent,
div[id^=catz],
div[id^='venuez'],
div[id^='scat'] {
border: none;
margin: 0;
padding: 0;
}
.eventcontentinner {
background-color: yellow;
border: 1px solid grey;
border-radius: 2px;
padding: 5px;
margin: 2px;
overflow: hidden;
/* use this only if you really want a break at any position
-ms-word-break: break-all;
word-break: break-all;
*/
/* Non standard for webkit */
word-break: break-word;
hyphens: auto;
}
.borderfeatured {
border-width: 3px;
border-style: solid;
}
div#jem .eventcontentinner a {
color: #333;
/* text-decoration:none; */
}
/* *** CALENDAR WEEK ADDITIONS START *** */
div#jem a .eventcontenttop {
text-decoration: none;
color: black;
}
div#jem .eventcontenttop {
border-bottom: solid 1px black;
height: 16px;
min-height: 16px;
text-align: left;
padding-left: 4px;
padding-top: 2px;
top: 60px;
}
div#jem .eventtitle {
text-align: left;
}
div#jem .rowcolor {
border-top: solid 1px black;
height: 10px;
text-align: right;
}
div#jem .eventtitle {
min-height: 30px;
word-wrap: break-word;
margin-right: 2px;
margin-left: 2px;
margin-top: 2px;
}
/* *** CALENDAR WEEK ADDITIONS END *** */
.eventandmore {
background-color: yellow;
margin: 1px;
overflow: hidden;
padding: 1px;
border: 1px solid grey;
border-radius: 2px;
padding: 5px;
margin: 2px;
}
/* for the tooltip */
.custom-tip {
color: #000;
width: 200px;
z-index: 13000;
border: 1px solid lightgrey;
}
.custom-title {
font-weight: bold;
font-size: 11px;
margin: 10px;
color: white;
padding: 2px 5px 1px;
background: #7598FF;
text-align: left;
}
.custom-text {
font-size: 11px;
padding: 2px 2px 2px;
background: white;
}
.custom-tip .eventName {
text-align: left;
background: lightgrey;
margin: 5px 0px 5px;
}
.custom-tip .location {
text-align: left;
}
.custom-tip .location .legend {
font-weight: bold;
}
.colorpic {
padding: 0 4px;
margin: 0 2px;
}
#jlcalendarlegend {
clear: both;
margin-top: 4px;
}
#jlcalendarlegend .calendarButtons {
margin-top: 8px;
margin-bottom: 4px;
height: 50px;
}
#jlcalendarlegend .calendarButtonsToggle {
display: inline-flex;
vertical-align: middle;
}
#jlcalendarlegend .calendarLegends {
}
#jlcalendarlegend .eventCat {
float: left;
cursor: pointer;
box-shadow: 2px 2px 2px #888888;
padding: 2px 10px;
border: 1px solid black;
margin-right: 5px;
margin-bottom: 5px;
line-height: 40px;
}
#jlcalendarlegend .legendb {
display: inline-block;
background-color: green;
line-height: 10px;
margin-right: 4px;
}
#jlcalendarlegend .eventCat.catoff {
color: lightgrey;
font-style: italic;
}
div#buttonshowall,
div#buttonhideall {
float: left;
cursor: pointer;
border: 1px solid black;
width: auto;
}
.daynum a {
color: #FBFCEF !important;
text-decoration: none;
background-color: inherit !important;
}
.today .daynum a {
color: #FFFFFF;
background-color: red;
/* calendarweek: vertical-align: top; */
}
div#jem td {
border: 1px dotted black;
}
/* *** CALENDAR WEEK ADDITIONS START *** */
/* set week column to a minimal width */
#jem table.week .weeknumtitle,
#jem table.week .weeknum {
padding-left: 4px;
padding-right: 4px;
width: 1%;
}
.weeknumtitle {
text-align: center;
font-size: 10px;
font-weight: bold;
color: #ffffff; /* calendarweek: #667171 */
border-style: none;
border-width: 1px;
padding: 2px 3px;
}
.weeknum {
text-align: center;
/* vertical-align:middle;*/
font-size: 12px;
font-weight: bold;
padding: 2px 3px;
color: #CD5C5C;
background-color: #FAEBD7;
}
.week {
border-style: none;
background-color: #EEDFCC;
text-align: center;
}
.monthweek {
text-align: left;
padding: 3px;
font-size: 10px;
font-weight: bold;
color: #667171;
border-style: solid;
border-width: 1px
}
.monthday {
text-align: center;
vertical-align: top;
font-size: 11px;
font-weight: bold;
background-color: #ffffff;
color: #000000;
height: 90px;
width: 90px;
}
.saturday, .sunday {
background-color: #D4D4D4;
color: #667171;
}
.sunday a, .saturday a {
color: #667171;
}
.today {
border-width: 1px;
border-style: solid;
background-color: #BBCCFF;
color: #000000;
}
.selectedday {
border-width: 1px;
border-style: outset;
background-color: #ffffff;
}
/* *** CALENDAR WEEK ADDITIONS END *** */
.calendarButton {
/* background-image: linear-gradient(top, rgba(230,230,230,1) 0%,rgba(200,200,200,1) 100%);
box-shadow: 0px 0px 2px 0px rgba(0,0,0,1);
border: solid 2px rgba(31,31,31,1);
border-radius: 6px;
width: 48px;
height: 20px;
margin: 1px;
padding: 1px; */
display: inline-block;
text-align: center;
color: rgba(0, 0, 0, 1);
margin-right: 5px;
box-shadow: 2px 2px 2px #888888;
}
.calendarButton:hover {
}
.calendarButton:active {
}

View File

@ -0,0 +1,58 @@
/**
* @package JEM
* @copyright (C) 2013-2024 joomlaeventmanager.net
* @copyright (C) 2005-2009 Christoph Lukes
* @license https://www.gnu.org/licenses/gpl-3.0 GNU/GPL
*/
.picker_layer {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
text-decoration: none;
background-color: #d4d0c8;
border-width: 1px;
border-style: solid;
border-color: #666666;
overflow: visible;
height: auto;
width: auto;
}
.picker_buttons {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
background-color: #d4d0c8;
border-style: solid;
border-color: #666666;
border-width: 1px;
padding: 1px;
cursor: pointer;
color: #000000;
}
.cell_color {
cursor: pointer;
width: 9px;
height: 9px;
}
.color_table {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
text-decoration: none;
}
.choosed_color_cell {
border-style: solid;
border-color: #000000;
border-width: 1px;
}
.default_color_btn {
width: 17px;
height: 17px;
background-image: url(../images/defaultcolor.jpg);
background-repeat: no-repeat;
background-position: center;
cursor: pointer;
}

View File

@ -0,0 +1,51 @@
.picker_layer {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
text-decoration: none;
background-color: #d4d0c8;
border-width: 1px;
border-style: solid;
border-color: #666666;
overflow: visible;
height: auto;
width: auto;
}
.picker_buttons {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
background-color: #d4d0c8;
border-style: solid;
border-color: #666666;
border-width: 1px;
padding: 1px;
cursor: pointer;
color: #000000;
}
.cell_color {
cursor: pointer;
width: 9px;
height: 9px;
}
.color_table {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
text-decoration: none;
}
.choosed_color_cell {
border-style: solid;
border-color: #000000;
border-width: 1px;
}
.default_color_btn {
width: 17px;
height: 17px;
background-image: url(../images/defaultcolor.jpg);
background-repeat: no-repeat;
background-position: center;
cursor: pointer;
}

View File

@ -0,0 +1,770 @@
/**
* @version 1.9.7
* @package JEM
* @copyright (C) 2013-2014 joomlaeventmanager.net
* @copyright (C) 2005-2009 Christoph Lukes
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
*/
/** header icons **/
.icon-48-archive { background-image: url(../images/icon-48-archive.png); }
.icon-48-elcategories { background-image: url(../images/icon-48-categories.png); }
.icon-48-categoriesedit { background-image: url(../images/icon-48-categoriesedit.png); }
.icon-48-eventedit { background-image: url(../images/icon-48-eventedit.png); }
.icon-48-events { background-image: url(../images/icon-48-events.png); }
.icon-48-groups { background-image: url(../images/icon-48-groups.png); }
.icon-48-groupedit { background-image: url(../images/icon-48-groupedit.png); }
.icon-48-help { background-image: url(../images/icon-48-help.png); }
.icon-48-home { background-image: url(../images/icon-48-home.png); }
.icon-48-settings { background-image: url(../images/icon-48-settings.png); }
.icon-48-tableexport { background-image: url(../images/icon-48-tableexport.png); }
.icon-48-tableimport { background-image: url(../images/icon-48-tableimport.png); }
.icon-48-update { background-image: url(../images/icon-48-update.png); }
.icon-48-users { background-image: url(../images/icon-48-users.png); }
.icon-48-venues { background-image: url(../images/icon-48-venues.png); }
.icon-48-venuesedit { background-image: url(../images/icon-48-venuesedit.png); }
.icon-48-housekeeping { background-image: url(../images/icon-48-housekeeping.png); }
.icon-48-plugins { background-image: url(../images/icon-48-plugins.png); }
/** linkicons **/
div.linkicon {
text-align:center;
margin:0px 5px 5px 0px;
}
input.button {
/*background-color:#......;*/
cursor:pointer;
color:black;
border:1px solid black;
}
input.button:focus {
/*background-color:#......;*/
}
input#clear {
background: url('../images/clear.png') no-repeat scroll left center #CCC;
border: 1px solid #808080;
cursor: pointer;
padding-right:10px;
}
input#clear:focus {
cursor: pointer;
}
.colorpicker{
border:1px solid grey;
}
div.linkicon a {
display:block;
border:1px solid #F0F0F0;
height:97px;
width:108px;
color:#666666;
vertical-align: middle;
text-decoration: none;
}
div.linkicon a:hover {
border-left:1px solid #EEEEEE;
border-top:1px solid #EEEEEE;
border-right:1px solid #CCCCCC;
border-bottom:1px solid #CCCCCC;
background-color:#F9F9F9;
color:#0B55C4;
}
div.linkicon img {
padding:10px 0;
margin:0 auto;
}
div.linkicon span {
display:block;
text-align:center;
}
/**
* imageselect
*/
div.item {
float:left;
border:1px solid #CCCCCC;
margin:3px;
position:relative;
}
div.imgBorder {
height:72px;
vertical-align:middle;
width:88px;
overflow:hidden;
}
div.imgBorder a {
height:72px;
width:88px;
display:block;
cursor:pointer;
}
div.imgBorder a:hover {
height:72px;
width:88px;
background-color:#F0F0F0;
color:#FF6600;
}
div.controls {
text-align:center;
height:20px;
line-height:20px;
background-color:#F9FCF9;
border-top:1px solid #DDDDDD;
}
div.controls img {
vertical-align:middle;
}
div.imageinfo {
background:#F9F9F9;
font-family:Arial, Helvetica, sans-serif;
font-size:10px;
width:88px;
height:15px;
vertical-align:middle;
text-align:center;
overflow:hidden;
}
div.pnav {
padding:5px;
text-align:center;
background: #F3F3F3;
border:1px solid #CCCCCC;
overflow:hidden;
}
div.imghead {
padding:3px;
border:1px solid #CCCCCC;
}
/* Form validation */
.invalid {
border-color:#FF0000;
}
label.invalid {
color:#FF0000;
}
div.copyright {
font-size:0.85em;
text-align:center;
margin:1em 0;
color:#AAAAAA;
}
input#jform_title {
font-size:0.909em !important;
}
div.clear {
border:0;
clear:both;
float:none;
height:1px;
line-height:1px;
}
.jem_centering {
text-align:center;
margin-top:0px;
margin-bottom:0px;
padding:0px;
}
div#page-parameters fieldset.adminform .el-spacer {
background-color:#D3D3D3;
padding:5px 0px;
}
/* align radio buttons horizontally */
.inputbox {
margin:5px;
cursor:pointer;
}
/* align radio buttons on import page */
label#replace_events0-lbl, label#replace_events1-lbl, label#replace_venues0-lbl, label#replace_venues1-lbl, label#replace_categories0-lbl, label#replace_categories1-lbl, label#replace_catevents0-lbl, label#replace_catevents1-lbl {
float:none;
display:inline;
}
input#replace_events0.inputbox, input#replace_events1.inputbox, input#replace_venues0.inputbox, input#replace_venues1.inputbox, input#replace_categories0.inputbox, input#replace_categories1.inputbox, input#replace_catevents0.inputbox, input#replace_catevents1.inputbox {
float:none;
display:inline;
}
table#el-attachments td {
padding:0 5px;
}
table#el-attachments img {
cursor:pointer;
}
div#jembackend fieldset.adminform label.hasTip
{
min-width:200px;
}
/* -------------------
General Pagination
--------------------- */
div.pagination {
clear:inherit;
float:both;
text-align:center !important;
margin:15px 0 0 0 !important;
}
div.pagination p.counter {
font-style:italic;
}
div.pagination ul {
list-style:none;
text-align:center !important;
padding:0;
}
div.pagination ul li {
list-style:none;
display:inline;
padding:0 5px 0 5px;
}
/* -- CONTROL PANEL STYLES ----------------------------- */
/* ---bluestork template, J2.5-------------------------- */
.cpanel div.icon, #cpanel div.icon {
text-align:center;
margin-right:15px;
float:left;
margin-bottom:15px;
}
.cpanel div.icon a, #cpanel div.icon a {
background-color:#FFFFFF;
background-position:-30px;
display:block;
float:left;
height:97px;
width:108px;
color:#565656;
vertical-align:middle;
text-decoration:none;
border:1px solid #CCCCCC;
-webkit-border-radius:5px;
-moz-border-radius:5px;
border-radius:5px;
-webkit-transition-property:background-position, -webkit-border-bottom-left-radius, -webkit-box-shadow;
-moz-transition-property:background-position, -moz-border-radius-bottomleft, -moz-box-shadow;
-webkit-transition-duration:0.8s;
-moz-transition-duration:0.8s;
}
#cpanel div.icon a:hover,
#cpanel div.icon a:focus,
#cpanel div.icon a:active,
.cpanel div.icon a:hover,
.cpanel div.icon a:focus,
.cpanel div.icon a:active {
background-position:0;
-webkit-border-bottom-left-radius:50% 20px;
-moz-border-radius-bottomleft:50% 20px;
border-bottom-left-radius:50% 20px;
-webkit-box-shadow:-5px 10px 15px rgba(0, 0, 0, 0.25);
-moz-box-shadow:-5px 10px 15px rgba(0, 0, 0, 0.25);
box-shadow:-5px 10px 15px rgba(0, 0, 0, 0.25);
position:relative;
z-index:10;
}
#cpanel img,
.cpanel img {
padding:10px 0;
margin:0 auto;
}
#cpanel span,
.cpanel span {
display:block;
text-align:center;
}
div.cpanel-left {
width:54%;
float:left;
}
div.cpanel-right {
width:45%;
float:right;
}
img#imagelib {
max-width:80px;
max-height:80px;
display:block;
clear:left;
}
/* -----------ZEBRA STRIPES, J3+ Isis template -------------- */
.table-striped tbody tr:nth-child(odd) td,
.table-striped tbody tr:nth-child(odd) th {
background-color:#F9F9F9;
}
.table-striped tbody tr.row0:hover td,
.table-striped tbody tr.row1:hover td {
background-color:#E8F6FE;
}
/* ---------- TABLE, J3 Isis template -------------------------- */
table {
max-width:100%;
background-color:transparent;
border-collapse:seperate;
border-spacing:0;
}
.table {
width:100%;
margin-bottom:18px;
}
.table th,
.table td {
padding:8px;
line-height:18px;
text-align:left;
vertical-align:top;
border-top:1px solid #DDDDDD;
}
.table th {
font-weight:bold;
background:#E3E0D5;
}
.table thead th {
vertical-align:bottom;
}
.table caption + thead tr:first-child th,
.table caption + thead tr:first-child td,
.table colgroup + thead tr:first-child th,
.table colgroup + thead tr:first-child td,
.table thead:first-child tr:first-child th,
.table thead:first-child tr:first-child td {
border-top:1px solid #999999;
border-bottom:1px solid #999999;
}
.table tbody + tbody {
border-top:2px solid #DDDDDD;
}
.table-condensed th,
.table-condensed td {
padding:4px 5px;
}
.table-bordered {
border:1px solid #DDDDDD;
border-collapse:separate;
*border-collapse:collapse;
border-left:0;
-webkit-border-radius:4px;
-moz-border-radius:4px;
border-radius:4px;
}
.table-bordered th,
.table-bordered td {
border-left:1px solid #DDDDDD;
}
.table-bordered caption + thead tr:first-child th,
.table-bordered caption + tbody tr:first-child th,
.table-bordered caption + tbody tr:first-child td,
.table-bordered colgroup + thead tr:first-child th,
.table-bordered colgroup + tbody tr:first-child th,
.table-bordered colgroup + tbody tr:first-child td,
.table-bordered thead:first-child tr:first-child th,
.table-bordered tbody:first-child tr:first-child th,
.table-bordered tbody:first-child tr:first-child td {
border-top:0;
}
.table-bordered thead:first-child tr:first-child th:first-child,
.table-bordered tbody:first-child tr:first-child td:first-child {
-webkit-border-top-left-radius:4px;
border-top-left-radius:4px;
-moz-border-radius-topleft:4px;
}
.table-bordered thead:first-child tr:first-child th:last-child,
.table-bordered tbody:first-child tr:first-child td:last-child {
-webkit-border-top-right-radius:4px;
border-top-right-radius:4px;
-moz-border-radius-topright:4px;
}
.table-bordered thead:last-child tr:last-child th:first-child,
.table-bordered tbody:last-child tr:last-child td:first-child,
.table-bordered tfoot:last-child tr:last-child td:first-child {
-webkit-border-radius:0 0 0 4px;
-moz-border-radius:0 0 0 4px;
border-radius:0 0 0 4px;
-webkit-border-bottom-left-radius:4px;
border-bottom-left-radius:4px;
-moz-border-radius-bottomleft:4px;
}
.table-bordered thead:last-child tr:last-child th:last-child,
.table-bordered tbody:last-child tr:last-child td:last-child,
.table-bordered tfoot:last-child tr:last-child td:last-child {
-webkit-border-bottom-right-radius:4px;
border-bottom-right-radius:4px;
-moz-border-radius-bottomright:4px;
}
.table-bordered caption + thead tr:first-child th:first-child,
.table-bordered caption + tbody tr:first-child td:first-child,
.table-bordered colgroup + thead tr:first-child th:first-child,
.table-bordered colgroup + tbody tr:first-child td:first-child {
-webkit-border-top-left-radius:4px;
border-top-left-radius:4px;
-moz-border-radius-topleft:4px;
}
.table-bordered caption + thead tr:first-child th:last-child,
.table-bordered caption + tbody tr:first-child td:last-child,
.table-bordered colgroup + thead tr:first-child th:last-child,
.table-bordered colgroup + tbody tr:first-child td:last-child {
-webkit-border-top-right-radius:4px;
border-top-right-radius:4px;
-moz-border-right-topleft:4px;
}
.table-striped tbody tr:nth-child(odd) td,
.table-striped tbody tr:nth-child(odd) th {
background-color:#F9F9F9;
}
.table-hover tbody tr:hover td,
.table-hover tbody tr:hover th {
background-color:#F5F5F5;
}
table [class*=span],
.row-fluid table [class*=span] {
display:table-cell;
float:none;
margin-left:0;
}
table .span1 {
float:none;
width:44px;
margin-left:0;
}
table .span2 {
float:none;
width:124px;
margin-left:0;
}
table .span3 {
float:none;
width:204px;
margin-left:0;
}
table .span4 {
float: none;
width: 284px;
margin-left: 0;
}
table .span5 {
float:none;
width:364px;
margin-left:0;
}
table .span6 {
float:none;
width:444px;
margin-left:0;
}
table .span7 {
float:none;
width:524px;
margin-left:0;
}
table .span8 {
float:none;
width:604px;
margin-left:0;
}
table .span9 {
float:none;
width:684px;
margin-left:0;
}
table .span10 {
float:none;
width:764px;
margin-left:0;
}
table .span11 {
float:none;
width:844px;
margin-left:0;
}
table .span12 {
float:none;
width:924px;
margin-left:0;
}
table .span13 {
float:none;
width:1004px;
margin-left:0;
}
table .span14 {
float:none;
width:1084px;
margin-left:0;
}
table .span15 {
float:none;
width:1164px;
margin-left:0;
}
table .span16 {
float:none;
width:1244px;
margin-left:0;
}
table .span17 {
float:none;
width:1324px;
margin-left:0;
}
table .span18 {
float:none;
width:1404px;
margin-left:0;
}
table .span19 {
float:none;
width:1484px;
margin-left:0;
}
table .span20 {
float:none;
width:1564px;
margin-left:0;
}
table .span21 {
float:none;
width:1644px;
margin-left:0;
}
table .span22 {
float:none;
width:1724px;
margin-left:0;
}
table .span23 {
float:none;
width:1804px;
margin-left:0;
}
table .span24 {
float:none;
width:1884px;
margin-left:0;
}
.table tbody tr.success td {
background-color:#DFF0D8;
}
.table tbody tr.error td {
background-color:#F2DEDE;
}
.table tbody tr.info td {
background-color:#D9EDF7;
}
table.table tfoot tr {
text-align:center;
color:#333333;
}
table.table tfoot tr {
text-align:center;
color:#333333;
}
table.table tfoot td,table.table tfoot th {
background-color:#F7F7F7;
border-top:1px solid #999999;
text-align:center;
}
table.table .pagination {
display:inline-block;
padding:0;
margin:0 auto;
}
.center,
.table td.center,
.table th.center {
text-align:center;
}
.table td.order {
text-align: center;
white-space: nowrap;
width: 200px;
}
.table td.order span {
float: left;
width: 20px;
text-align: center;
background-repeat: no-repeat;
height: 13px;
}
.highlight {
background:none repeat scroll 0 0 #FFFF00;
}
th img
{
margin-left:3px;
}
img.calendar
{
cursor:pointer;
}
table.adminlist
{
border:1px solid #999999;
}
input#csvexport{
background:#CCCCCC url('../images/export_excel.png') no-repeat left;
padding-left:20px;
border:1px solid #808080;
height:20px;
cursor:pointer;
}
.select_country
{
max-width:210px;
}
/* scale icon to fit text height */
.icon-inline {
height: 1.2em;
margin-left: 0.3em;
}
/* prevent problem with Bluestork */
#recurrence_output select,
select#jform_recurrence_type {
float: none;
}
input#jform_recurrence_limit_date {
margin-left: 0;
}
@media only screen and (max-width: 768px) {
/* Force table to not be like tables anymore */
table, thead, tbody, th, td,tr {
display: inline;
}
/* Nobody needs the Row with the daynames anymore */
tr.daynamesRow {
display:none;
}
/* Save place for the important information */
td.nomonthday {
display:none;
}
/* Otherwhise there are some litle borders */
div#jem td {
border: 0px solid #cacaca;
}
/* This runs only if you change somethin in the calendar.class.php
* change line 643 from:
* $out = "<td class=\"".implode(' ', $cssClass)."\"><div class=\"daynum\">".$linktext.'</div>'.$eventContent."</td>";
* to:
* $out = "<td class=\"".implode(' ', $cssClass)."\"><div class=\"daynum\" eemonthname=\"".$this->getMonthName()."\" eedayname=\"".$this->getDayName($this->getWeekday($var))."\">".$linktext.'</div>'.$eventContent."</td>";
* after this you will see the days like "Mo, 2. August" instead of only the daynumber */
td.monthday div.daynum::after {
content: ". " attr(eemonthname);
}
td.monthday div.daynum::before {
content: attr(eedayname) ", ";
}
}

View File

@ -0,0 +1,402 @@
/**
* @version 1.9.8
* @package JEM
* @copyright (C) 2013-2014 joomlaeventmanager.net
* @copyright (C) 2005-2009 Christoph Lukes
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
*/
table.month, table.week {
background-color:#FFFFFF;
border:2px solid #000000;
width:100%;
}
table.month {
table-layout:fixed;
}
.monthname {
color:#355881;
font-family:Geneva,Verdana,Arial,sans-serif;
font-size:18px;
font-weight:bold;
text-align:center;
}
.daynamesRow {
background-color:#455678;
height:20px;
text-align:center;
vertical-align:middle;
}
.dayname {
color:#FFFFFF; /* calendarweek: #667171 */
font-family:Geneva,Verdana,Arial,sans-serif;
font-size:10px;
font-weight:bold;
}
.daysRow {
color:#433D27;
font-family:Arial,Geneva,Verdana,sans-serif;
font-size:10px;
height:88px;
text-align:left;
vertical-align:top;
}
.daynum {
background-color:#A2A3AE;
color:#FBFCEF;
font-family:Geneva,Verdana,Arial,sans-serif;
font-size:11px;
font-weight:bold;
margin:0px;
padding:2px;
text-align:left;
vertical-align:top;
border-top: 1px solid black;
border-bottom: 1px solid black;
}
.selectedday .daynum {
background-color:#31528E;
}
.nomonthday {
background-color:#EEEEEE;
height:88px;
}
.eventcontent,
div[id^=catz],
div[id^='venuez'],
div[id^='scat'] {
border: none;
margin: 0;
padding: 0;
}
.eventcontentinner {
background-color:yellow;
border: 1px solid grey;
border-radius: 2px;
padding: 5px;
margin: 2px;
overflow:hidden;
/* use this onlyif you eally want a break at any position
-ms-word-break: break-all;
word-break: break-all;
*/
/* Non standard for webkit */
word-break: break-word;
-webkit-hyphens: auto;
-moz-hyphens: auto;
-ms-hyphens: auto;
hyphens: auto;
}
div#jem .eventcontentinner a {
color: #333;
/* text-decoration:none; */
}
/* *** CALENDAR WEEK ADDITIONS START *** */
div#jem a .eventcontenttop {
text-decoration:none;
color: black;
}
div#jem .eventcontenttop {
border-bottom: solid 1px black;
height: 16px;
minheight:16px;
text-align:left;
padding-left: 4px;
padding-top:2px;
top:60px;
}
div#jem .eventtitle
{
text-align:left;
}
div#jem .rowcolor {
border-top: solid 1px black;
height: 10px;
text-aling:right;
}
div#jem .eventtitle {
min-height: 30px;
word-wrap: break-word;
margin-right: 2px;
margin-left:2px;
margin-top:2px;
}
/* *** CALENDAR WEEK ADDITIONS END *** */
.eventandmore {
background-color:yellow;
margin:1px;
overflow:hidden;
padding:1px;
border: 1px solid grey;
border-radius: 2px;
padding: 5px;
margin: 2px;
}
/* for the tooltip */
.custom-tip {
color: #000;
width: 200px;
z-index: 13000;
border: 1px solid lightgrey;
}
.custom-title {
font-weight: bold;
font-size: 11px;
margin: 10;
color: white;
padding: 2px 5px 1px;
background: #7598FF;
text-align:left;
}
.custom-text {
font-size: 11px;
padding: 2px 2px 2px;
background: white;
}
.custom-tip .eventName {
text-align:left;
background: lightgrey;
margin: 5px 0px 5px;
}
.custom-tip .location {
text-align:left;
}
.custom-tip .location .legend {
font-weight: bold;
}
.colorpic {
padding: 0 4px;
margin: 0 2px;
}
#jlcalendarlegend {
clear: both;
margin-top:4px;
}
#jlcalendarlegend .calendarButtons {
margin-top:8px;
margin-left:2px;
margin-bottom:4px;
height:30px;
}
#jlcalendarlegend .calendarButtonsToggle{
display:inline-flex;
vertical-align:middle;
}
#jlcalendarlegend .calendarLegends {
}
#jlcalendarlegend .eventCat {
float: left;
padding: 1px 5px;
cursor: pointer;
box-shadow: 2px 2px 2px #888888;
border: 1px solid black;
margin-left:4px;
margin-right:4px;
margin-bottom:6px;
line-height:20px;
}
#jlcalendarlegend .legendb {
display:inline-block;
background-color:green;
line-height:10px;
margin-right:4px;
}
#jlcalendarlegend .eventCat.catoff {
color: lightgrey;
font-style: italic;
}
div#buttonshowall,
div#buttonhideall {
float: left;
padding-top:3px;
padding-left:4px;
padding-right:4px;
margin-right: 6px;
cursor: pointer;
border:1px solid black;
width: auto;
}
.daynum a {
color: #FBFCEF !important;
text-decoration:none;
background-color:inherit !important;
}
.today .daynum a {
color:#FFFFFF;
background-color:red;
/* calendarweek: vertical-align: top; */
}
div#jem td {
border: 1px dotted black;
}
/* *** CALENDAR WEEK ADDITIONS START *** */
.weeknumtitle {
text-align: center;
font-size: 10px;
font-weight: bold;
color: #ffffff; /* calendarweek: #667171 */
border-style: none;
border-width:1px;
padding: 2px 3px;
}
.weeknum {
text-align: center;
/* vertical-align:middle;*/
font-size: 12px;
font-weight: bold;
padding: 2px 3px;
color: #CD5C5C;
background-color: #FAEBD7;
}
.week {
border-style: none;
background-color: #EEDFCC;
text-align: center;
}
.monthweek {
text-align: left;
padding: 3px;
font-size: 14px;
font-weight: bold;
color: #667171;
border-style: solid;
border-width:1px
}
.monthday {
text-align: center;
vertical-align: top;
font-size: 11px;
font-weight: bold;
background-color: #ffffff;
color: #000000;
height:90px;
width:90px;
}
.saturday, .sunday {
background-color:#D4D4D4;
color: #667171;
}
.sunday a, .saturday a {
color: #667171;
}
.today {
border-width: 1px;
border-style: solid;
background-color: #BBCCFF;
color: #000000;
}
.selectedday {
border-width: 1px;
border-style: outset;
background-color: #ffffff;
}
/* *** CALENDAR WEEK ADDITIONS END *** */
.calendarButton {
background-image: -webkit-linear-gradient(top, rgba(230,230,230,1) 0%,rgba(200,200,200,1) 100%);
background-image: -moz-linear-gradient(top, rgba(230,230,230,1) 0%,rgba(200,200,200,1) 100%);
background-image: -ms-linear-gradient(top, rgba(230,230,230,1) 0%,rgba(200,200,200,1) 100%);
background-image: -o-linear-gradient(top, rgba(230,230,230,1) 0%,rgba(200,200,200,1) 100%);
background-image: linear-gradient(top, rgba(230,230,230,1) 0%,rgba(200,200,200,1) 100%);
-webkit-box-shadow: 0px 0px 2px 0px rgba(0,0,0,1);
-moz-box-shadow: 0px 0px 2px 0px rgba(0,0,0,1);
box-shadow: 0px 0px 2px 0px rgba(0,0,0,1);
border: solid 2px rgba(31,31,31,1);
-webkit-border-radius: 6px;
-moz-border-radius: 6px;
border-radius: 6px;
width: 48px;
height: 20px;
margin: 1px;
padding: 1px;
display: inline-block;
text-align: center;
color: rgba(0,0,0,1);
}
.calendarButton:hover {
}
.calendarButton:active {
}
@media only screen and (max-width: 768px) {
/* Force table to not be like tables anymore */
table, thead, tbody, th, td,tr {
display: inline;
}
/* Nobody needs the Row with the daynames anymore */
tr.daynamesRow {
display:none;
}
/* Save place for the important information */
td.nomonthday {
display:none;
}
/* Otherwhise there are some litle borders */
div#jem td {
border: 0px solid #cacaca;
}
/* This runs only if you change somethin in the calendar.class.php
* change line 643 from:
* $out = "<td class=\"".implode(' ', $cssClass)."\"><div class=\"daynum\">".$linktext.'</div>'.$eventContent."</td>";
* to:
* $out = "<td class=\"".implode(' ', $cssClass)."\"><div class=\"daynum\" eemonthname=\"".$this->getMonthName()."\" eedayname=\"".$this->getDayName($this->getWeekday($var))."\">".$linktext.'</div>'.$eventContent."</td>";
* after this you will see the days like "Mo, 2. August" instead of only the daynumber */
td.monthday div.daynum::after {
content: ". " attr(eemonthname);
}
td.monthday div.daynum::before {
content: attr(eedayname) ", ";
}
}

View File

@ -0,0 +1,50 @@
.picker_layer {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
text-decoration: none;
background-color: #d4d0c8;
border-width: 1px;
border-style: solid;
border-color: #666666;
overflow: visible;
height: auto;
width: auto;
}
.picker_buttons {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
background-color:#d4d0c8;
border-style:solid;
border-color:#666666;
border-width:1px;
padding:1px;
cursor:pointer;
color:#000000;
}
.cell_color {
cursor:pointer;
width:9px;
height:9px;
}
.color_table {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
text-decoration: none;
}
.choosed_color_cell {
border-style:solid;
border-color:#000000;
border-width:1px;
}
.default_color_btn {
width:17px;
height:17px;
background-image:url(../images/defaultcolor.jpg);
background-repeat:no-repeat;
background-position:center;
}

View File

@ -0,0 +1,24 @@
/**
* @version 1.9.7
* @package JEM
* @copyright (C) 2013-2014 joomlaeventmanager.net
* @copyright (C) 2005-2009 Christoph Lukes
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
*/
#geocomplete {
}
input#geocomplete {
height: 20px;
}
input.geobutton {
height: 24px;
cursor: pointer;
}
.map_canvas {
height: 250px;
margin: 10px 20px 10px 0px;
}

View File

@ -0,0 +1,11 @@
@CHARSET "ISO-8859-1";
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
.map_canvas {
height: 250px;
margin: 10px 0px 10px 0px;
border: 1px solid grey;
}

View File

@ -0,0 +1 @@
<!DOCTYPE html><title></title>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,65 @@
/**
* @version 1.9.7
* @package JEM
* @copyright (C) 2013-2014 joomlaeventmanager.net
* @copyright (C) 2005-2009 Christoph Lukes
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
*/
@CHARSET "ISO-8859-1";
#main a:link, #main a:visited {
text-decoration: none;
color: inherit;
}
div#jem {
border: 0px;
}
div#jem h2 {
border: none;
}
div#jem .flyerimage {
border: none !important;
}
a[href]:after {
content: none !important;
}
@media print {
div#jem .buttons {
display: none;
}
div#jem #jem_filter {
display: none !important;
}
a[href]:after {
content: none !important;
}
abbr[title]:after {
content: none;
}
.ir a:after,
a[href^="javascript:"]:after,
a[href^="#"]:after {
content: none;
}
a:link:after, a:visited:after {
content: none;
}
div#jem .flyerimage {
border: none;
}
}

View File

@ -0,0 +1,28 @@
/**
* @package JEM
* @copyright (C) 2013-2024 joomlaeventmanager.net
* @copyright (C) 2005-2009 Christoph Lukes
* @license https://www.gnu.org/licenses/gpl-3.0 GNU/GPL
*/
#geocomplete {
width: 88%;
}
/**
input#geocomplete {
height: 20px;
}
*/
input.geobutton {
height: 27px; /* maybe 24px ? */
padding: 0 4px;
cursor: pointer;
border: 1px solid #000000;
}
.map_canvas {
width: 100%;
height: 250px;
margin: 10px 20px 10px 0px;
}

View File

@ -0,0 +1,28 @@
/**
* @package JEM
* @copyright (C) 2013-2024 joomlaeventmanager.net
* @copyright (C) 2005-2009 Christoph Lukes
* @license https://www.gnu.org/licenses/gpl-3.0 GNU/GPL
*/
#geocomplete {
width: 88%;
}
/**
input#geocomplete {
height: 20px;
}
*/
input.geobutton {
height: 27px; /* maybe 24px ? */
padding: 0 4px;
cursor: pointer;
border: 1px solid #000000;
}
.map_canvas {
width: 100%;
height: 250px;
margin: 10px 20px 10px 0px;
}

View File

@ -0,0 +1,16 @@
@charset "ISO-8859-1";
html {
height: 100%
}
body {
height: 100%;
margin: 0;
padding: 0
}
.map_canvas {
width: 100%;
height: 300px;
}

View File

@ -0,0 +1,17 @@
@charset "ISO-8859-1";
html {
height: 100%
}
body {
height: 100%;
margin: 0;
padding: 0
}
.map_canvas {
height: 250px;
margin: 10px 0px 10px 0px;
border: 1px solid grey;
}

View File

@ -0,0 +1 @@
<!DOCTYPE html><title></title>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,117 @@
/* List of all buttons:
jem-submitbutton
jem-addvenuebutton
jem-addusersbutton
jem-removebutton
jem-archivebutton
jem-archivebutton-return
jem-editbutton
jem-copybutton
jem-printbutton
jem-mailbutton
jem-icalbutton
jem-publishbutton
jem-trashbutton
jem-unpublishbutton
jem-exportbutton
jem-backbutton
jem-recurrenceicon
jem-publishstateicon-trashed
jem-publishstateicon-unpublished
jem-publishstateicon-published
jem-publishstateicon-archived
jem-attendance-status-fa-circle-o
jem-attendance-status-fa-times-circle
jem-attendance-status-fa-question-circle
jem-attendance-status-fa-check-circle
//jem-attendance-status-fa-exclamation-circle
jem-attendance-status-fa-hourglass-half
jem-unregisterbutton
jem-registerbutton
jem-featured-fa-star-o
jem-featured-fa-star
jem-mapicon
jem-dateicon
jem-clockicon
jem-venueicon
jem-categoryicon
jem-sorticon
jem-titleicon
jem-cityicon
jem-stateicon
jem-attendeesicon
jem-featuredicon
*/
#jem .jem-submitbutton,
#jem .jem-addvenuebutton,
#jem .jem-addusersbutton,
#jem .jem-archivebutton,
#jem .jem-archivebutton-return,
#jem .jem-editbutton,
#jem .jem-copybutton,
#jem .jem-printbutton,
#jem .jem-mailbutton,
#jem .jem-icalbutton,
#jem .jem-exportbutton {
color: initial;
}
#jem .jem-publishbutton,
#jem .jem-publishstateicon-published,
#jem .jem-attendance-status-fa-check-circle,
#jem .jem-registerbutton {
color: #03b903;
}
#jem .jem-unpublishbutton,
#jem .jem-publishstateicon-unpublished,
#jem .jem-attendance-status-fa-times-circle,
#jem .jem-removebutton,
#jem .jem-unregisterbutton {
color: #f30000;
}
#jem .jem-trashbutton,
#jem .jem-publishstateicon-trashed,
#jem .jem-attendance-status-fa-circle-o {
color: #6f6f6f;
}
#jem .jem-attendance-status-fa-question-circle {
color: #0377cc;
}
#jem .jem-publishstateicon-archived,
#jem .jem-featured-fa-star-o, /*not featured*/
#jem .jem-featured-fa-star, /*featured*/
#jem .jem-attendance-status-fa-exclamation-circle,
#jem .jem-attendance-status-fa-hourglass-half {
color: #da8812;
}
#jem .jem-backbutton {
color: #03b903;
}
#jem .jem-recurrenceicon {
color: #da8812;
}
#jem .jem-recurrencefirsticon {
color: #f30000;
}
/*
#jem .jem-recurrencefirsticon {
margin-left: 0.4em;
}
#jem .jem-recurrencefirsticon:after {
content:"\f12a";
color: #f30000;
margin-left: -0.6em;
vertical-align: 0.2em;
margin-right: 0.6em;
}
*/

View File

@ -0,0 +1,697 @@
/**
* @package JEM
* @copyright (C) 2013-2024 joomlaeventmanager.net
* @copyright (C) 2005-2009 Christoph Lukes
* @license https://www.gnu.org/licenses/gpl-3.0 GNU/GPL
*/
/* Hoftix for SqueezeBox Modal overlay destroying images on mobile phones */
body.com_jem #sbox-overlay {
width: 100% !important;
}
body.com_jem #sbox-window {
height: auto !important;
}
body.com_jem #sbox-content {
height: auto !important;
width: auto !important;
max-height: 100%;
max-width: 100%;
}
body.com_jem.body-overlayed {
overflow: auto;
}
/* ----- */
#jem h1.componentheading i.fa,
#jem h1.componentheading i.fas {
font-size: 1.332rem;
}
#jem .buttons {
float: right;
}
#jem .buttons a{
margin-left: 5px;
}
#jem .buttons::after {
clear: both;
}
#jem .jem-removebutton {cursor: pointer; color: red;}
#jem .jem-row {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: space-between;
align-content: center;
align-items: center;
}
#jem .jem-wrap-reverse {
flex-wrap: wrap-reverse;
}
#jem .jem-nowrap {
flex-wrap: nowrap;
}
#jem .jem-justify-start {
justify-content: flex-start;
}
#jem .jem-justify-center {
justify-content: space-around;
}
#jem .jem-justify-end {
justify-content: flex-end;
}
#jem .valign-baseline {
align-items: baseline;
}
#jem .jem-dl:after {
clear: both;
}
#jem .jem-dl,
#jem .jem-dl-long {
margin: 0;
}
#jem .jem-dl dt,
#jem .jem-dl-long dt {
float: left;
width: 275px;
overflow: hidden;
clear: left;
text-align: left;
font-weight: bold;
text-overflow: ellipsis;
white-space: nowrap;
padding-top: 5px;
padding-bottom: 5px;
}
#jem .jem-dl-long dt {
width: 200px;
}
#jem .jem-dl dt label,
#jem .jem-dl-long dt label {
font-weight: bold;
}
#jem .jem-dl dt label span,
#jem .jem-dl-long dt label span {
font-weight: normal;
}
#jem .row-month {
font-weight: bold;
padding: 5px;
font-size: 1.332rem;
}
/*Special for the description lable in editevent and editvenue*/
#jem #jform_articletext-lbl,
#jem #jform_locdescription-lbl {
font-weight: bold;
}
#jem .jem-dl dd,
#jem .jem-dl-long dd {
margin-left: 240px;
padding-top: 5px;
padding-bottom: 5px;
display: flow-root;
}
#jem .jem-dl-long dd {
margin-left: 210px;
}
#jem .jem-img {
text-align: center;
}
#jem .jem-img img {
max-width: 100%;
}
#jem .jem-registered-list {
margin-left: calc(2.14285714em / 1.5);
}
#jem .jem-registered-list img {
width: 30px;
}
#jem .jem-catimg {
float: right;
}
#jem .jem-clear {
clear: both;
}
#jem .jem-readmore {
margin-top: 10px;
margin-bottom: 10px;
}
#jem .copyright {
font-size: 0.9em;
text-align: right;
color: #808080;
}
#jem .jem-hr {
clear: both;
}
#jem .clr {
clear: both;
}
#jem .jem-date .input-append {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: flex-start;
}
#jem .jem-limit-smallist {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: flex-end;
margin-left: 20px;
align-items: center;
}
#jem .jem_limit {
justify-content: flex-end;
flex-wrap: nowrap;
align-items: baseline;
}
#jem .input-mini {
width: 60px;
}
#jem .pagination {
text-align: center;
float: none !important;
}
#jem_filter {
padding: 10px 5px 5px 10px;
align-items: baseline;
background-color: #ffa500;
}
#jem_filter div {
margin-bottom: 2px;
}
#jem_filter label,
#jem_filter select,
#jem_filter input,
#status-lbl {
margin-right: 5px;
}
.jem_search .jem-row {
display: flex !important;
}
#jem_filter button {
margin-right: 5px;
--btn-padding-x: 0.8rem;
--btn-padding-y: 0.4rem;
}
#jem_filter #filter_continent,
#jem_filter #filter_country,
#jem_filter #filter_city {min-width: 250px;}
#jem .jem-misc {
padding: 10px 0;
}
#jem .jem-sort {
flex: 1;
align-items: baseline;
hyphens: auto;
}
#jem .jem-sort-small {
font-weight: bold;
border-left: 1px solid transparent;
}
#jem .jem-sort-icon {
margin-right: 5px;
}
#jem .icon-arrow-up-3,
#jem .icon-arrow-down-3 {
width: auto;
}
#jem .icon-arrow-up-3::before {
/* font-family: FontAwesome !important; */
/* content: "\00a0\f0de" !important; */
content: "\f0de" !important;
}
#jem .icon-arrow-down-3::before {
/* font-family: FontAwesome !important; */
/* content: "\00a0\f0dd" !important; */
content: "\f0dd" !important;
}
#jem img.icon-inline {
display: none;
}
#jem select,
#jem input,
.buttonfilter {
margin-top: 0 !important;
/* margin-bottom: 0 !important; */
margin-left: 0 !important;
}
#jem select,
#jem input {
width: auto;
}
#jem #starthours,
#jem #startminutes,
#jem #endhours,
#jem #endminutes,
#jem #jform_locid_name {
padding: .6rem 1rem;
border-color: #ced4da;
}
#jem form input::-webkit-outer-spin-button,
#jem form input::-webkit-inner-spin-button {
opacity: 1;
}
#jem .choose-status {padding-right: 30px;}
#jem .choose-status select#status {display: inline;}
#jem .choose-places {padding-right: 30px;}
#jem .jem-sort-parts div::after {
content: "";
border-right: 1px solid #333;
margin-left: 10px;
margin-right: 10px;
}
#jem .jem-sort-parts div:last-child::after {
border: none;
}
#jem .jem-event {
cursor: pointer;
border-bottom: 1px solid #ddd;
border-left: 1px solid #ddd;
border-right: 1px solid #ddd;
align-items: center;
}
#jem .jem-event:first-child {
border-top: 1px solid #ddd;
}
#jem .jem-event.jem-nopointer {
cursor: default;
}
#jem .jem-list-img {
flex-shrink: 1;
margin-right: 15px;
display: flex;
}
#jem .jem-list-img .flyerimage {
align-self: center;
}
#jem .jem-event-details {
flex: 1;
}
#jem .jem-event-details h4 {
margin-top: 0px;
margin-bottom: 10px;
line-height: 110%;
}
#jem .jem-event-details h4 a {
font-weight: bold;
}
#jem .jem-list-row {
display: flex;
flex-direction: row;
/* flex-wrap: wrap; */
justify-content: flex-start;
}
#jem .jem-small-list {
padding: 10px;
}
#jem .jem-event-info {
margin-right: 15px;
}
#jem .jem-event-info:last-child {
margin-right: 0;
}
#jem .jem-event-info-small {
word-break: keep-all;
}
#jem .jem-event-info-small h4 {
margin: 0px;
}
#jem .jem-event-info-small:last-child {
margin-right: 0;
}
#jem .eventlist {
margin: 0;
padding: 0;
list-style: none;
hyphens: auto;
}
#jem .eventlist li {
padding: 10px;
list-style: none;
}
#jem .eventlist li:nth-child(odd) {
background-color: #f9f9f9;
}
#jem .eventlist li:last-child {
margin-bottom: 0;
}
#jem .eventlist li:not(.jem-nohover):hover {
background-color: #e0e0e0;
}
#jem #reg_comment {
box-sizing: border-box;
min-width: 200px;
width: 100%;
max-width: 100%;
min-height: 100px;
}
#jem .jem-register-button {
margin-top: 10px !important;
}
#jem.jem_attendees .jem-event {
cursor: auto;
}
#jem.jem_attendees .jem-attendee-number {
flex: 1 2%;
}
#jem.jem_attendees .jem-attendee-name {
flex: 1 20%;
}
#jem.jem_attendees .jem-attendee-email {
flex: 1 22%;
}
#jem.jem_attendees .jem-attendee-regdate {
flex: 1 22%;
}
#jem.jem_attendees .jem-attendee-status {
flex: 1 4%;
text-align: center;
}
#jem.jem_attendees .jem-attendee-places {
flex: 1 4%;
text-align: center;
}
#jem.jem_attendees .jem-attendee-comment {
flex: 1 22%;
}
#jem.jem_attendees .jem-attendee-remove {
flex: 1 4%;
text-align: center;
}
#jem #addplaces, #jem #cancelplaces {
text-align: center;
display:inline;
max-width: 100px;
}
#jem div.jem-map {
padding-top: 15px;
padding-bottom: 5px;
}
#jem div.jem-map iframe {
width: 100%;
height: 300px;
}
#jem.jem_myevents .jem-event,
#jem.jem_myvenues .jem-event,
#jem.jem_myattendances .jem-event {
cursor: auto;
}
#jem dl.tabs dt.tabs {
float: left;
margin-left: 0;
margin-right: 3px;
padding: 4px 10px;
background-color: #eeeeee;
border-top: 1px solid #CCC;
border-left: 1px solid #CCC;
border-right: 1px solid #CCC;
}
#jem dl.tabs dt.open {
background-color: #ffffff;
border-bottom: 1px solid #ffffff;
}
#jem div.current dd.tabs {
clear: both;
margin: 0;
padding: 10px;
border: 1px solid #CCC;
background-color: #ffffff;
}
#jem .warningrecurrence {
padding: 10px;
border: 1px solid #fbeed5;
background-color: #fcf8e3;
}
#jem.jem_select_contact .jem-event,
#jem.jem_select_venue .jem-event {
cursor: auto;
}
#jem.jem_select_contact .selectcontact,
#jem.jem_select_venue .selectvenue {
cursor: pointer;
}
#jem.jem_select_contact .jem-contact-number {
flex: 1 6%;
}
#jem.jem_select_contact .jem-contact-name {
flex: 1 50%;
}
#jem.jem_select_contact .jem-contact-city,
#jem.jem_select_contact .jem-contact-state {
flex: 1 20%;
}
#jem.jem_select_venue .jem-venue-number {
flex: 1 6%;
}
#jem.jem_select_venue .jem-venue-name {
flex: 1 44%;
}
#jem.jem_select_venue .jem-venue-city {
flex: 1 20%;
}
#jem.jem_select_venue .jem-venue-state {
flex: 1 14%;
}
#jem.jem_select_venue .jem-venue-country {
flex: 1 10%;
}
#jem.jem_select_users .jem-users-number {
flex: 1 6%;
}
#jem.jem_select_users .jem-users-checkall {
flex: 1 4%;
}
#jem.jem_select_users .jem-users-name {
flex: 1 70%;
}
#jem.jem_select_users .jem-users-state {
flex: 1 14%;
}
@media only all and (max-width: 59.938rem) and (min-width: 48rem) {
/*#jem .jem-event-info-small {
flex-basis: 45% !important;
}*/
}
@media not print {
@media only all and (max-width: 47.938rem) {
#jem .jem-dl dt, #jem .jem-dl-long dt {
float: none;
width: auto;
clear: none;
text-align: left;
margin-top: 5px;
padding-top: 0px;
padding-bottom: 0px;
}
#jem .jem-dl dt:first-child,
#jem .jem-dl-long dt:first-child {
margin-top: 0;
}
#jem .jem-dl dd,
#jem .jem-dl-long dd {
margin-left: 0;
padding-top: 0px;
padding-bottom: 0px;
padding-left: 5px;
}
#jem .jem_limit {
flex-wrap: wrap;
}
#jem .jem-event-details {
order: -1;
flex-basis: 100%
}
#jem .jem-list-img {
margin-right: 0;
margin-top: 10px;
}
#jem .jem-catimg {
float: none;
clear: both;
}
#jem .jem-sort-small .jem-small-list div {
flex-basis: 30%;
}
#jem .jem-event-info-small {
flex-basis: 100% !important;
}
}
}
@media only all and (max-width: 30rem) {
}
@media only all and (max-width: 74.938rem) and (min-width: 60rem) {
}
@media only all and (min-width: 75rem) {
}
#jem .form-check-input {
width: 1em !important;
}
.jem-readmore .btn, #find-left.btn {
background-color: #f0f0f0;
}
.jem-registered-user-owner {
font-weight: bold;
}
#table-series {
border-collapse: collapse;
width: auto;
max-width: 100%;
}
#table-series th {
padding: 12px;
text-align: center;
background-color: #04AA6D;
color: white;
border: 1px solid #ddd;
}
#table-series td {
border: 1px solid #ddd;
padding: 8px;
text-align: center;
}
#table-series tr:nth-child(even){
background-color: #f2f2f2;
}
#table-series tr:nth-child(odd){
background-color: #ffffff;
}

1322
media/com_jem/css/jem.css Normal file

File diff suppressed because it is too large Load Diff

1
media/com_jem/css/lightbox.min.css vendored Normal file
View File

@ -0,0 +1 @@
:root{--lightbox-overlay-bg:rgba(0, 0, 0, 0.8);--lightbox-content-bg:#fff;--lightbox-border-radius:4px;--lightbox-border:4px solid #fff;--lightbox-text-color:#ccc;--lightbox-secondary-color:#999;--lightbox-link-color:#4ae;--lightbox-transition:0.3s ease;--lightbox-z-index-base:9999}.lb-outerContainer,.lightbox .lb-image{max-height:80vh;border-radius:var(--lightbox-border-radius)}body.lb-disable-scrolling{overflow:hidden}.lightboxOverlay{position:fixed;inset:0;z-index:var(--lightbox-z-index-base);background-color:var(--lightbox-overlay-bg);display:none}.lightbox{position:fixed;inset:0;z-index:calc(var(--lightbox-z-index-base) + 1);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1rem}.lb-outerContainer{position:relative;max-width:90vw;background-color:var(--lightbox-content-bg);display:flex;align-items:center;justify-content:center}.lightbox .lb-image{display:block;max-width:100%;height:auto;border:var(--lightbox-border);object-fit:contain}.lb-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.lb-loader::after{content:"";display:block;width:40px;height:40px;border:3px solid #f3f3f3;border-top:3px solid var(--lightbox-link-color);border-radius:50%;animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.lb-nav{position:absolute;inset:0;display:flex;justify-content:space-between;align-items:center;padding:0 1rem}.lb-next,.lb-prev{width:48px;height:48px;border-radius:50%;background-color:rgba(255,255,255,.3);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color var(--lightbox-transition)}.lb-next::before,.lb-prev::before{content:"";width:12px;height:12px;border-style:solid;border-width:2px 2px 0 0;display:inline-block}.lb-prev::before{transform:rotate(-135deg);margin-left:5px}.lb-close::before,.lb-next::before{transform:rotate(45deg)}.lb-next::before{margin-right:5px}.lb-next:hover,.lb-prev:hover{background-color:rgba(255,255,255,.5)}.lb-dataContainer{width:100%;max-width:90vw;margin-top:1rem;color:var(--lightbox-text-color)}.lb-data{display:grid;grid-template-columns:1fr auto;gap:1rem;padding:.5rem 1rem}.lb-details{display:flex;flex-direction:column;gap:.5rem}.lb-caption{font-size:.9rem;font-weight:700}.lb-number{font-size:.8rem;color:var(--lightbox-secondary-color)}.lb-close{width:32px;height:32px;position:relative;cursor:pointer;transition:transform var(--lightbox-transition)}.lb-close::after,.lb-close::before{content:"";position:absolute;width:100%;height:2px;background-color:var(--lightbox-text-color);top:50%;left:0}.lb-close::after{transform:rotate(-45deg)}.lb-close:hover{transform:scale(1.1)}.lightbox[data-state=opening]{animation:.3s fadeIn}.lightbox[data-state=closing]{animation:.3s fadeOut}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{from{opacity:1}to{opacity:0}}@media (max-width:768px){.lb-outerContainer{width:100%;margin:0}.lb-data{grid-template-columns:1fr;text-align:center}.lb-close{margin:0 auto}.lb-next,.lb-prev{width:36px;height:36px}}@media (prefers-color-scheme:dark){:root{--lightbox-content-bg:#222;--lightbox-border:4px solid #333;--lightbox-text-color:#eee;--lightbox-secondary-color:#bbb}}@media (prefers-reduced-motion:reduce){*,::after,::before{animation-duration:0s!important;animation-iteration-count:1!important;transition-duration:0s!important;scroll-behavior:auto!important}}

View File

@ -0,0 +1,90 @@
@charset "ISO-8859-1";
/**
* @package JEM
* @copyright (C) 2013-2024 joomlaeventmanager.net
* @copyright (C) 2005-2009 Christoph Lukes
* @license https://www.gnu.org/licenses/gpl-3.0 GNU/GPL
*/
#main a:link, #main a:visited {
text-decoration: none;
color: inherit;
}
div#jem {
border: 0px;
}
div#jem h2 {
border: none;
}
div#jem .flyerimage {
border: none !important;
}
a[href]:after {
content: none !important;
}
div#jem #jem_filter {
background-color: transparent;
float:right;
}
div#jem #jem_filter div.jem-limit-smallist {
display:block;
}
div#jem #jem_filter div, div#jem #jem_filter div label {
display: none;
}
div#jem a {
text-decoration: none !important;
}
#jem .eventlist li {
padding: 10px 0;
list-style: none;
background-color: #fff !important;
break-inside: avoid !important;
}
#jem .jem-event {
cursor: pointer;
border-left: none;
border-right: none;
}
@media print {
div#jem .buttons {
display: none;
}
a[href]:after {
content: none !important;
}
abbr[title]:after {
content: none;
}
.ir a:after,
a[href^="javascript:"]:after,
a[href^="#"]:after {
content: none;
}
a:link:after, a:visited:after {
content: none;
}
div#jem .flyerimage {
border: none;
}
div#jem #jem_filter {
display: none;
}
}

103
media/com_jem/css/print.css Normal file
View File

@ -0,0 +1,103 @@
@charset "ISO-8859-1";
/**
* @package JEM
* @copyright (C) 2013-2024 joomlaeventmanager.net
* @copyright (C) 2005-2009 Christoph Lukes
* @license https://www.gnu.org/licenses/gpl-3.0 GNU/GPL
*/
#main a:link, #main a:visited {
text-decoration: none;
color: inherit;
}
div#jem {
border: 0px;
background-color: #fff !important;
}
div#jem h2 {
border: none;
}
div#jem .flyerimage {
border: none !important;
}
a[href]:after {
content: none !important;
}
div#jem #jem_filter {
background-color: transparent;
border: none;
}
div#jem #jem_filter .jem_fleft, div#jem #jem_filter .jem_fright label {
display: none;
}
div#jem a {
text-decoration: none !important;
}
div#jem table,
div#jem table.eventtable tr td,
div#jem table.eventtable tr th,
div#jem table.eventtable tr:hover td,
div#jem table.eventtable tr.featured td {
background-color: #fff !important;
border-left: none;
border-right: none;
color: #000;
}
div#jem table.eventtable th a {
color: #000}
#jem .eventlist li {
padding: 10px 0;
list-style: none;
background-color: #fff !important;
break-inside: avoid !important;
}
#jem .jem-event {
cursor: pointer;
border-left: none;
border-right: none;
}
@media print {
div#jem .buttons {
display: none;
}
a[href]:after {
content: none !important;
}
abbr[title]:after {
content: none;
}
.ir a:after,
a[href^="javascript:"]:after,
a[href^="#"]:after {
content: none;
}
a:link:after, a:visited:after {
content: none;
}
div#jem .flyerimage {
border: none;
}
div#jem #jem_filter {
display: none;
}
}

View File

@ -0,0 +1,62 @@
/**
* @version 2.0.0
* @package JEM
* @copyright (C) 2013-2014 joomlaeventmanager.net
* @copyright (C) 2005-2009 Christoph Lukes
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
*/
@CHARSET "ISO-8859-1";
#main a:link, #main a:visited {
text-decoration: none;
color: inherit;
}
div#jem {
border: 0px;
}
div#jem h2 {
border: none;
}
div#jem .flyerimage {
border: none !important;
}
a[href]:after {
content: none !important;
}
@media print {
div#jem .buttons {
display: none;
}
a[href]:after {
content: none !important;
}
abbr[title]:after {
content: none;
}
.ir a:after,
a[href^="javascript:"]:after,
a[href^="#"]:after {
content: none;
}
a:link:after, a:visited:after {
content: none;
}
div#jem .flyerimage {
border: none;
}
}

1
media/com_jem/index.html Normal file
View File

@ -0,0 +1 @@
<!DOCTYPE html><title></title>

View File

@ -0,0 +1,119 @@
/**
* @package JEM
* @copyright (C) 2013-2024 joomlaeventmanager.net
* @copyright (C) 2005-2009 Christoph Lukes
* @license https://www.gnu.org/licenses/gpl-3.0 GNU/GPL
*/
/**
* this file manages the js script for adding/removing attachements in event
*/
// window.addEvent('domready', function() {
jQuery(document).ready(function ($) {
$('.attach-field').on('change', addattach);
$('.clear-attach-field').on('click', clearattach);
$('.attach-remove').on('click', function (event) {
var event = event || window.event;
// $(event.target).style.cursor = 'wait'; /* indicate server request */
// $(event.target).style.cursor = 'wait'; /* indicate server request */
$(this).css({'cursor': 'wait'})
var clickednode = event.target;
if (!clickednode.hasAttribute('id')) {
clickednode = $(this).parent();
}
var url = '';
// var pos = clickednode.id.indexOf(':');
var pos = $(this).attr('id').indexOf(':');
if (pos >= 0) {
// var id = clickednode.id.substring(13, pos);
// var token = clickednode.id.substr(pos+1);
var id = $(this).attr('id').substring(13, pos);
var token = $(this).attr('id').substr(pos + 1);
url = 'index.php?option=com_jem&task=ajaxattachremove&format=raw&id=' + id + '&' + token + '=1';
} else {
// var id = clickednode.id.substr(13);
var id = $(this).attr('id').substr(13);
url = 'index.php?option=com_jem&task=ajaxattachremove&format=raw&id=' + id;
}
// var theAjax = new Request( {
// url : url,
// method: 'post',
// postBody : ''
// });
// theAjax.addEventListener('onSuccess', function(response) {
// /* server sends 1 on success, 0 on error */
// if (response.indexOf('1') > -1) {
// $(clickednode).getParent().getParent().dispose();
// } else {
// $(clickednode).style.cursor = 'not-allowed'; /* remove failed - how to show? */
// }
// }.bind(this));
// theAjax.send();
$.ajax({
url: url,
method: 'post',
data: '',
success: function (response) {
if (response.indexOf('1') > -1) {
// $(clickednode).getParent().getParent().dispose();
$(clickednode).parent().parent().remove();
} else {
// $(clickednode).style.cursor = 'not-allowed'; /* remove failed - how to show? */
$(clickednode).css({'cursor': 'not-allowed'})
}
}
})
});
});
function addattach() {
// var tbody = $('#el-attachments').getElement('tbody');
var tbody = $('#el-attachments tbody');
// var rows = tbody.getElements('tr');
var rows = tbody.find('tr');
var emptyRows = [];
/* do we have empty rows? */
for (var i = 0; i < rows.length; i++) {
// var af = rows[i].getElement('.attach-field');
var af = $(rows[i]).find('.attach-field')[0];
if (af && !(af.files.length > 0)) {
emptyRows.push(af);
break; /* one is enough, so we can break */
}
}
/* if not create one */
if (emptyRows.length < 1) {
var row = $(rows[rows.length - 1]).clone();
// row.getElement('.attach-field').on('change', addattach).value = '';
// row.getElement('.clear-attach-field').on('click', clearattach).value = '';
row.find('.attach-field').on('change', addattach).val('');
row.find('.clear-attach-field').on('click', clearattach).val('');
// row.inject(tbody);
tbody.append(row);
}
}
function clearattach(event) {
var event = event || window.event;
// var grandpa = $(event.target).getParent().getParent();
var grandpa = $(this).parent().parent();
// var af = grandpa.getElement('.attach-field');
var af = grandpa.find('.attach-field')[0];
if (af) af.value = '';
// var an = grandpa.getElement('.attach-name');
var an = grandpa.find('.attach-name')[0];
if (an) an.value = '';
// var ad = grandpa.getElement('.attach-desc');
var ad = grandpa.find('.attach-desc')[0];
if (ad) ad.value = '';
}

View File

@ -0,0 +1,66 @@
// window.addEvent('domready', function() {
jQuery(document).ready(function ($) {
/* categories filtering */
$('.eventCat').each(
function (index, item) {
$(item).on('click', function () {
$('.jlcalendar .' + $(item).attr('id')).each(
function (index, eventcat) {
eventcat = $(eventcat);
if (eventcat.css('display') == 'none') {
eventcat.css('display', 'block');
$(item).removeClass('catoff');
} else {
eventcat.css('display', 'none');
$(item).addClass('catoff');
}
}
);
});
}
);
/* Show all */
btn = $('#buttonshowall');
if (btn) {
btn.on('click', function () {
$('.jlcalendar .eventcontent').each(
function (index, eventcat) {
el = $(eventcat).find('div[class^=cat]');
el.css('display', 'block');
}
);
$('#jlcalendarlegend .eventCat').each(
function (index, eventcat) {
$(eventcat).removeClass('catoff');
}
);
});
}
/* Hide all */
btn = $('#buttonhideall');
if (btn) {
btn.on('click', function () {
$('.jlcalendar .eventcontent').each(
function (index, eventcat) {
el = $(eventcat).find('div[class^=cat]');
el.css('display', 'none');
}
);
$('#jlcalendarlegend .eventCat').each(
function (index, eventcat) {
$(eventcat).addClass('catoff');
}
);
});
}
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
return new bootstrap.Tooltip(tooltipTriggerEl, {html: true})
})
});

View File

@ -0,0 +1,238 @@
/*
* Gchats color picker by Majid Khosravi
* Copyright (c) 2006 - 2008 Gchat Design Studio
* URL: https://www.gchats.com
* Last Updated: August 29 2009
* Gchats color picker is freely distributable under the terms of GPL license.
* Please visit: https://www.gchats.com for updates
* @Version 1.2
*
* The code in function testcolor is based upon:
* https://www.nbdtech.com/Blog/archive/2008/04/27/Calculating-the-Perceived-Brightness-of-a-Color.aspx
*
*--------------------------------------------------------------------------*/
// JavaScript Document
var layerWidth = 218;
var layerHeight = 144;
var currentId = "";
var orgColor = "";
var onPick = "";
var onCancel = "";
function openPicker(id, _onPick, _onCancel) {
if (_onPick) {
onPick = _onPick;
}
if (_onCancel) {
onCancel = _onCancel;
}
currentId = id;
removeLayer("picker");
Obj = document.getElementById(id);
orgColor = Obj.value;
createLayer("picker", findPosX(Obj) + Obj.offsetWidth + 20, findPosY(Obj));
}
function createLayer(id, left, top) {
var width = layerWidth;
var height = layerHeight;
var zindex = 1000;
var bgcolor = "#d4d0c8";
var txtcolor = "#000000";
var msg = getPickerContent();
if (document.layers) {
if (document.layers[id]) {
return;
}
var layer = document.layers[id] = new Layer(width);
layer.className = "picker_layer";
layer.name = id;
layer.left = left;
layer.top = top;
layer.clip.height = height;
layer.visibility = 'show';
layer.zIndex = zindex;
layer.bgColor = bgcolor;
layer.innerHTML = msg;
} else if (document.all) {
if (document.all[id]) {
return
}
var layer = '\n<DIV class="picker_layer" id=' + id + ' style="position:absolute'
+ '; left:' + left + "px"
+ '; top:' + top + "px"
+ '; width:' + width
+ '; height:' + height
+ '; visibility:visible'
+ '; z-index:' + zindex
+ ';text-align:left">'
+ msg
+ '</DIV>';
document.body.insertAdjacentHTML("BeforeEnd", layer);
} else if (document.getElementById) {
var layer = document.createElement('div');
layer.setAttribute('id', id);
document.body.appendChild(layer);
var ly = document.getElementById(id);
ly.className = "picker_layer";
ly.style.position = "absolute";
ly.style.left = left + "px";
ly.style.top = top + "px";
ly.style.width = width + "px";
ly.style.height = height + "px";
ly.style.textAlign = "left";
ly.innerHTML = msg;
}
}
function showClr(color) {
Obj = document.getElementById(currentId);
Obj.value = color;
Obj.style.backgroundColor = color;
Obj = document.getElementById("gcpicker_colorSample");
Obj.style.backgroundColor = color;
Obj = document.getElementById("gcpicker_colorCode");
Obj.innerHTML = color;
}
function setClr(color) {
Obj = document.getElementById(currentId);
Obj.value = color;
Obj.style.backgroundColor = color;
currentId = "";
removeLayer("picker");
if (onPick) {
var fontcolor = testcolor(color);
Obj.style.color = fontcolor;
}
}
function cancel() {
Obj = document.getElementById(currentId);
Obj.value = orgColor;
Obj.style.backgroundColor = orgColor;
removeLayer("picker");
if (onCancel) {
}
}
function removeLayer(id) {
if (document.getElementById(id) == null) {
return;
}
if (document.layers && document.layers[id]) {
document.layers[id].visibility = 'hide';
delete document.layers[id];
}
if (document.all && document.all[id]) {
document.all[id].innerHTML = '';
document.all[id].outerHTML = '';
} else if (document.getElementById) {
var b = document.body;
var layer = document.getElementById(id);
b.removeChild(layer);
}
}
function getPickerContent() {
var content = '<table width="222" border="0" cellpadding="0" cellspacing="1"><tr><td>';
content += '<table width="100%" border="0" cellpadding="0" cellspacing="1" class="color_table"><tr><td bgcolor="' + orgColor + '" id="gcpicker_colorSample" width="40px" class="choosed_color_cell">&nbsp;</td><td align="center"><div id="gcpicker_colorCode">' + orgColor + '</div></td><td width="60px" align="center"><input type="submit" value="" onclick="cancel()" class="default_color_btn" /></td></tr></table>';
content += '</td></tr><tr><td>';
content += colorTable() + '</td></tr></table>';
return content;
}
function colorTable() {
var clrfix = Array("#000000", "#333333", "#666666", "#999999", "#cccccc", "#ffffff", "#ff0000", "#00ff00", "#0000ff", "#ffff00", "#00ffff", "#ff00ff");
var table = '<table border="0" cellpadding="0" cellspacing="0" bgcolor="#000000"><tr>';
table += '';
for (var j = 0; j < 3; j++) {
table += '<td width="11"><table bgcolor="#000000" border="0" cellpadding="0" cellspacing="1" class="color_table">';
for (var i = 0; i < 12; i++) {
var clr = '#000000';
if (j == 1) {
clr = clrfix[i];
}
table += '<tr><td bgcolor="' + clr + '" class="cell_color" onmouseover="showClr(' + "'" + clr + "'" + ')" onclick="setClr(' + "'" + clr + "'" + ')"></td></tr>';
}
table += '</table></td>';
}
table += '<td><table border="0" cellpadding="0" cellspacing="0">';
for (var c = 0; c < 6; c++) {
if (c == 0 || c == 3) {
table += "<tr>";
}
table += "<td>";
table = table + '<table border="0" cellpadding="0" cellspacing="1" class="color_table"> ';
for (var j = 0; j < 6; j++) {
table += "<tr>";
for (var i = 0; i < 6; i++) {
var clrhex = rgb2hex(j * 255 / 5, i * 255 / 5, c * 255 / 5);
table += '<td bgcolor="' + clrhex + '" class="cell_color" onmouseover="showClr(' + "'" + clrhex + "'" + ')" onclick="setClr(' + "'" + clrhex + "'" + ')"></td>';
}
table += "</tr>";
}
table += "</table>";
table += "</td>";
if (c == 2 || c == 5) {
table += "</tr>";
}
}
table += '</table></td></tr></table>';
return table;
}
function findPosX(obj) {
var curleft = 0;
if (obj.offsetParent)
while (1) {
curleft += obj.offsetLeft;
if (!obj.offsetParent)
break;
obj = obj.offsetParent;
}
else if (obj.x)
curleft += obj.x;
return curleft;
}
function findPosY(obj) {
var curtop = 0;
if (obj.offsetParent) {
while (1) {
curtop += obj.offsetTop;
if (!obj.offsetParent) {
break;
}
obj = obj.offsetParent;
}
} else if (obj.y) {
curtop += obj.y;
}
return curtop;
}
function rgb2hex(red, green, blue) {
var decColor = red + 256 * green + 65536 * blue;
var clr = decColor.toString(16);
for (var i = clr.length; i < 6; i++) {
clr = "0" + clr;
}
return "#" + clr;
}
function testcolor(color) {
if (color.length == 7) {
color = color.substring(1);
}
var R = parseInt(color.substring(0, 2), 16);
var G = parseInt(color.substring(2, 4), 16);
var B = parseInt(color.substring(4, 6), 16);
var x = Math.sqrt(R * R * .299 + G * G * .587 + B * B * .114);
var sColorText = x < 130 ? '#FFFFFF' : '#000000';
return sColorText;
}

View File

@ -0,0 +1,146 @@
function initialize() {
/* coordinates */
var lat = document.getElementById('latitude').value;
var long = document.getElementById('longitude').value;
/* address */
var title = document.getElementById('venue').value;
var city = document.getElementById('city').value;
var postalCode = document.getElementById('postalCode').value;
var street = document.getElementById('street').value;
var myLatlng = new google.maps.LatLng(lat, long);
var myMapOptions = {
zoom: 16
, center: myLatlng
, mapTypeId: google.maps.MapTypeId.ROADMAP
, disableDefaultUI: false
};
var map = new google.maps.Map(document.getElementById('map-canvas'), myMapOptions);
// check for zero
if (lat == 0.000000) {
lat = null;
}
if (long == 0.000000) {
long = null;
}
/* check to see if we've lat+long
/* if we've it then we can use the coordinates to center the map
*/
if (lat && long) {
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: title,
visible: true,
icon: "https://chart.apis.google.com/chart?chst=d_map_pin_letter_withshadow&chld=•|FF0000|000000"
});
var boxText = document.createElement("div");
boxText.style.cssText = "border: 1px solid black; margin-top: 8px; background: yellow; padding: 5px;";
boxText.innerHTML = "<b>" + title + "</b><br>" + street + "<br>" + postalCode + "<br>" + city;
var myOptions = {
content: boxText
, disableAutoPan: false
, maxWidth: 0
, pixelOffset: new google.maps.Size(-140, -120)
, zIndex: null
, boxStyle: {
background: "url('tipbox.gif') no-repeat"
, opacity: 0.75
, width: "280px"
}
, closeBoxMargin: "10px 2px 2px 2px"
, closeBoxURL: "https://www.google.com/intl/en_us/mapfiles/close.gif"
, infoBoxClearance: new google.maps.Size(1, 1)
, isHidden: false
, pane: "floatPane"
, enableEventPropagation: false
};
google.maps.event.addListener(marker, "click", function (e) {
ib.open(map, this);
});
var ib = new InfoBox(myOptions);
// ib.open(map, marker); /* disabled infobox to popup at default */
} else {
geocoder = new google.maps.Geocoder();
var address = street + "," + postalCode + "," + city;
geocoder.geocode({'address': address}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
// Geocoding-status is ok, but we want to retrieve an exact address
if (results[0].geometry.location_type) {
//In this case it creates a marker, but you can get the lat and lng from the location.LatLng
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
icon: "https://chart.apis.google.com/chart?chst=d_map_pin_letter_withshadow&chld=•|FF0000|000000"
});
var boxText = document.createElement("div");
boxText.style.cssText = "border: 1px solid black; margin-top: 8px; background: yellow; padding: 5px;";
boxText.innerHTML = "<b>" + title + "</b><br>" + street + "<br>" + postalCode + "<br>" + city;
var myOptions = {
content: boxText
, disableAutoPan: false
, maxWidth: 0
, pixelOffset: new google.maps.Size(-140, -120)
, zIndex: null
, boxStyle: {
background: "url('tipbox.gif') no-repeat"
, opacity: 0.75
, width: "280px"
}
, closeBoxMargin: "10px 2px 2px 2px"
, closeBoxURL: "https://www.google.com/intl/en_us/mapfiles/close.gif"
, infoBoxClearance: new google.maps.Size(1, 1)
, isHidden: false
, pane: "floatPane"
, enableEventPropagation: false
};
google.maps.event.addListener(marker, "click", function (e) {
ib.open(map, this);
});
var ib = new InfoBox(myOptions);
// ib.open(map, marker); /* disabled infobox to popup at default */
} else {
error();
}
} else {
/*alert("Geocode was not successful for the following reason: " + status);*/
error();
}
});
}
}
function error() {
/*var text = "<div style='text-align: center;'><h1 >Attention!</h1><p>no valid data to load the map</p></div>";*/
var text = "";
document.getElementById('map-canvas').innerHTML = text;
}
google.maps.event.addDomListener(window, 'load', initialize);

View File

@ -0,0 +1,203 @@
/*
highlight v4
Highlights arbitrary terms.
<https://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html>
MIT license.
Johann Burkard
<https://johannburkard.de>
<mailto:jb@eaio.com>
To highlight all occurrances of "bla" (case insensitive) in all li elements, use the following code:
$('li').highlight('bla');
Remove highlighting
The highlight can be removed from any element with the removeHighlight function.
In this example, all highlights under the element with the ID highlight-plugin are removed.
$('#highlight-plugin').removeHighlight();
*/
$.fn.highlight = function (pat) {
function innerHighlight(node, pat) {
var skip = 0;
if (node.nodeType == 3) {
var pos = node.data.toUpperCase().indexOf(pat);
if (pos >= 0) {
var spannode = document.createElement('span');
spannode.className = 'highlight';
var middlebit = node.splitText(pos);
var endbit = middlebit.splitText(pat.length);
var middleclone = middlebit.cloneNode(true);
spannode.appendChild(middleclone);
middlebit.parentNode.replaceChild(spannode, middlebit);
skip = 1;
}
} else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {
for (var i = 0; i < node.childNodes.length; ++i) {
i += innerHighlight(node.childNodes[i], pat);
}
}
return skip;
}
return this.length && pat && pat.length ? this.each(function () {
innerHighlight(this, pat.toUpperCase());
}) : this;
};
$.fn.removeHighlight = function () {
return this.find("span.highlight").each(function () {
this.parentNode.firstChild.nodeName;
with (this.parentNode) {
replaceChild(this.firstChild, this);
normalize();
}
}).end();
};
function highlightevents() {
var searcharea = $("#search_in_here");
var filterOptionValue = $('select[name=filter_type]').val(); // value of selected option
var filterOptionText = $("#filter_type option:selected").text(); // text of selected option
var lowerCase = filterOptionText.toLowerCase();
switch (parseInt(filterOptionValue)) {
case 1:
var filter = 'eventtitle';
break;
case 2:
var filter = 'venue';
break;
case 3:
var filter = 'city';
break;
case 4:
var filter = 'category';
break;
case 5:
var filter = 'state';
break;
case 6:
var filter = 'country';
break;
case 7:
alleventfilters();
break;
default:
alleventfilters();
break;
}
var newtext = $("#filter_search").val();
var newtext2 = "td." + filter + ":contains(" + newtext + ")";
if (filter && newtext) {
searcharea.find(newtext2).addClass('red');
$(searcharea.find(newtext2)).highlight(newtext);
}
}
function alleventfilters() {
var searcharea = $("#search_in_here");
var keyword = $("#filter_search").val();
var title = 'eventtitle';
var venue = 'venue';
var city = 'city';
var state = 'state';
var country = 'country';
var category = 'category';
if (keyword) {
var titleparameter = "td." + title + ":contains(" + keyword + ")";
searcharea.find(titleparameter).addClass('red');
$(searcharea.find(titleparameter)).highlight(keyword);
var venueparameter = "td." + venue + ":contains(" + keyword + ")";
searcharea.find(venueparameter).addClass('red');
$(searcharea.find(venueparameter)).highlight(keyword);
var cityparameter = "td." + city + ":contains(" + keyword + ")";
searcharea.find(cityparameter).addClass('red');
$(searcharea.find(cityparameter)).highlight(keyword);
var stateparameter = "td." + state + ":contains(" + keyword + ")";
searcharea.find(stateparameter).addClass('red');
$(searcharea.find(stateparameter)).highlight(keyword);
var countryparameter = "td." + country + ":contains(" + keyword + ")";
searcharea.find(countryparameter).addClass('red');
$(searcharea.find(countryparameter)).highlight(keyword);
var categoryparameter = "td." + category + ":contains(" + keyword + ")";
searcharea.find(categoryparameter).addClass('red');
$(searcharea.find(categoryparameter)).highlight(keyword);
}
}
function highlightvenues() {
var searcharea = $("#search_in_here");
var filterOptionValue = $('select[name=filter_type]').val(); // value of selected option
var filterOptionText = $("#filter_type option:selected").text(); // text of selected option
var lowerCase = filterOptionText.toLowerCase();
switch (parseInt(filterOptionValue)) {
case 1:
var filter = 'venue';
break;
case 2:
var filter = 'city';
break;
case 3:
var filter = 'state';
break;
case 4:
var filter = 'country';
break;
case 5:
allvenuefilters();
break;
default:
allvenuefilters();
break;
}
var newtext = $("#filter_search").val();
var newtext2 = "td." + filter + ":contains(" + newtext + ")";
if (filter && newtext) {
searcharea.find(newtext2).addClass('red');
$(searcharea.find(newtext2)).highlight(newtext);
}
}
function allvenuefilters() {
var searcharea = $("#search_in_here");
var keyword = $("#filter_search").val();
var title = 'venue';
var city = 'city';
var state = 'state';
var country = 'country';
if (keyword) {
var titleparameter = "td." + title + ":contains(" + keyword + ")";
searcharea.find(titleparameter).addClass('red');
$(searcharea.find(titleparameter)).highlight(keyword);
var cityparameter = "td." + city + ":contains(" + keyword + ")";
searcharea.find(cityparameter).addClass('red');
$(searcharea.find(cityparameter)).highlight(keyword);
var stateparameter = "td." + state + ":contains(" + keyword + ")";
searcharea.find(stateparameter).addClass('red');
$(searcharea.find(stateparameter)).highlight(keyword);
var countryparameter = "td." + country + ":contains(" + keyword + ")";
searcharea.find(countryparameter).addClass('red');
$(searcharea.find(countryparameter)).highlight(keyword);
}
}

View File

@ -0,0 +1 @@
<!DOCTYPE html><title></title>

819
media/com_jem/js/infobox.js Normal file
View File

@ -0,0 +1,819 @@
/**
* @name InfoBox
* @version 1.1.13 [March 19, 2014]
* @author Gary Little (inspired by proof-of-concept code from Pamela Fox of Google)
* @copyright Copyright 2010 Gary Little [gary at luxcentral.com]
* @fileoverview InfoBox extends the Google Maps JavaScript API V3 <tt>OverlayView</tt> class.
* <p>
* An InfoBox behaves like a <tt>google.maps.InfoWindow</tt>, but it supports several
* additional properties for advanced styling. An InfoBox can also be used as a map label.
* <p>
* An InfoBox also fires the same events as a <tt>google.maps.InfoWindow</tt>.
*
* @source link: https://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/examples/infobox-basic.html
*/
/*!
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*jslint browser:true */
/*global google */
/**
* @name InfoBoxOptions
* @class This class represents the optional parameter passed to the {@link InfoBox} constructor.
* @property {string|Node} content The content of the InfoBox (plain text or an HTML DOM node).
* @property {boolean} [disableAutoPan=false] Disable auto-pan on <tt>open</tt>.
* @property {number} maxWidth The maximum width (in pixels) of the InfoBox. Set to 0 if no maximum.
* @property {Size} pixelOffset The offset (in pixels) from the top left corner of the InfoBox
* (or the bottom left corner if the <code>alignBottom</code> property is <code>true</code>)
* to the map pixel corresponding to <tt>position</tt>.
* @property {LatLng} position The geographic location at which to display the InfoBox.
* @property {number} zIndex The CSS z-index style value for the InfoBox.
* Note: This value overrides a zIndex setting specified in the <tt>boxStyle</tt> property.
* @property {string} [boxClass="infoBox"] The name of the CSS class defining the styles for the InfoBox container.
* @property {Object} [boxStyle] An object literal whose properties define specific CSS
* style values to be applied to the InfoBox. Style values defined here override those that may
* be defined in the <code>boxClass</code> style sheet. If this property is changed after the
* InfoBox has been created, all previously set styles (except those defined in the style sheet)
* are removed from the InfoBox before the new style values are applied.
* @property {string} closeBoxMargin The CSS margin style value for the close box.
* The default is "2px" (a 2-pixel margin on all sides).
* @property {string} closeBoxURL The URL of the image representing the close box.
* Note: The default is the URL for Google's standard close box.
* Set this property to "" if no close box is required.
* @property {Size} infoBoxClearance Minimum offset (in pixels) from the InfoBox to the
* map edge after an auto-pan.
* @property {boolean} [isHidden=false] Hide the InfoBox on <tt>open</tt>.
* [Deprecated in favor of the <tt>visible</tt> property.]
* @property {boolean} [visible=true] Show the InfoBox on <tt>open</tt>.
* @property {boolean} alignBottom Align the bottom left corner of the InfoBox to the <code>position</code>
* location (default is <tt>false</tt> which means that the top left corner of the InfoBox is aligned).
* @property {string} pane The pane where the InfoBox is to appear (default is "floatPane").
* Set the pane to "mapPane" if the InfoBox is being used as a map label.
* Valid pane names are the property names for the <tt>google.maps.MapPanes</tt> object.
* @property {boolean} enableEventPropagation Propagate mousedown, mousemove, mouseover, mouseout,
* mouseup, click, dblclick, touchstart, touchend, touchmove, and contextmenu events in the InfoBox
* (default is <tt>false</tt> to mimic the behavior of a <tt>google.maps.InfoWindow</tt>). Set
* this property to <tt>true</tt> if the InfoBox is being used as a map label.
*/
/**
* Creates an InfoBox with the options specified in {@link InfoBoxOptions}.
* Call <tt>InfoBox.open</tt> to add the box to the map.
* @constructor
* @param {InfoBoxOptions} [opt_opts]
*/
function InfoBox(opt_opts) {
opt_opts = opt_opts || {};
google.maps.OverlayView.apply(this, arguments);
// Standard options (in common with google.maps.InfoWindow):
//
this.content_ = opt_opts.content || "";
this.disableAutoPan_ = opt_opts.disableAutoPan || false;
this.maxWidth_ = opt_opts.maxWidth || 0;
this.pixelOffset_ = opt_opts.pixelOffset || new google.maps.Size(0, 0);
this.position_ = opt_opts.position || new google.maps.LatLng(0, 0);
this.zIndex_ = opt_opts.zIndex || null;
// Additional options (unique to InfoBox):
//
this.boxClass_ = opt_opts.boxClass || "infoBox";
this.boxStyle_ = opt_opts.boxStyle || {};
this.closeBoxMargin_ = opt_opts.closeBoxMargin || "2px";
this.closeBoxURL_ = opt_opts.closeBoxURL || "https://www.google.com/intl/en_us/mapfiles/close.gif";
if (opt_opts.closeBoxURL === "") {
this.closeBoxURL_ = "";
}
this.infoBoxClearance_ = opt_opts.infoBoxClearance || new google.maps.Size(1, 1);
if (typeof opt_opts.visible === "undefined") {
if (typeof opt_opts.isHidden === "undefined") {
opt_opts.visible = true;
} else {
opt_opts.visible = !opt_opts.isHidden;
}
}
this.isHidden_ = !opt_opts.visible;
this.alignBottom_ = opt_opts.alignBottom || false;
this.pane_ = opt_opts.pane || "floatPane";
this.enableEventPropagation_ = opt_opts.enableEventPropagation || false;
this.div_ = null;
this.closeListener_ = null;
this.moveListener_ = null;
this.contextListener_ = null;
this.eventListeners_ = null;
this.fixedWidthSet_ = null;
}
/* InfoBox extends OverlayView in the Google Maps API v3.
*/
InfoBox.prototype = new google.maps.OverlayView();
/**
* Creates the DIV representing the InfoBox.
* @private
*/
InfoBox.prototype.createInfoBoxDiv_ = function () {
var i;
var events;
var bw;
var me = this;
// This handler prevents an event in the InfoBox from being passed on to the map.
//
var cancelHandler = function (e) {
e.cancelBubble = true;
if (e.stopPropagation) {
e.stopPropagation();
}
};
// This handler ignores the current event in the InfoBox and conditionally prevents
// the event from being passed on to the map. It is used for the contextmenu event.
//
var ignoreHandler = function (e) {
e.returnValue = false;
if (e.preventDefault) {
e.preventDefault();
}
if (!me.enableEventPropagation_) {
cancelHandler(e);
}
};
if (!this.div_) {
this.div_ = document.createElement("div");
this.setBoxStyle_();
if (typeof this.content_.nodeType === "undefined") {
this.div_.innerHTML = this.getCloseBoxImg_() + this.content_;
} else {
this.div_.innerHTML = this.getCloseBoxImg_();
this.div_.appendChild(this.content_);
}
// Add the InfoBox DIV to the DOM
this.getPanes()[this.pane_].appendChild(this.div_);
this.addClickHandler_();
if (this.div_.style.width) {
this.fixedWidthSet_ = true;
} else {
if (this.maxWidth_ !== 0 && this.div_.offsetWidth > this.maxWidth_) {
this.div_.style.width = this.maxWidth_;
this.div_.style.overflow = "auto";
this.fixedWidthSet_ = true;
} else { // The following code is needed to overcome problems with MSIE
bw = this.getBoxWidths_();
this.div_.style.width = (this.div_.offsetWidth - bw.left - bw.right) + "px";
this.fixedWidthSet_ = false;
}
}
this.panBox_(this.disableAutoPan_);
if (!this.enableEventPropagation_) {
this.eventListeners_ = [];
// Cancel event propagation.
//
// Note: mousemove not included (to resolve Issue 152)
events = ["mousedown", "mouseover", "mouseout", "mouseup",
"click", "dblclick", "touchstart", "touchend", "touchmove"];
for (i = 0; i < events.length; i++) {
this.eventListeners_.push(google.maps.event.addDomListener(this.div_, events[i], cancelHandler));
}
// Workaround for Google bug that causes the cursor to change to a pointer
// when the mouse moves over a marker underneath InfoBox.
this.eventListeners_.push(google.maps.event.addDomListener(this.div_, "mouseover", function (e) {
this.style.cursor = "default";
}));
}
this.contextListener_ = google.maps.event.addDomListener(this.div_, "contextmenu", ignoreHandler);
/**
* This event is fired when the DIV containing the InfoBox's content is attached to the DOM.
* @name InfoBox#domready
* @event
*/
google.maps.event.trigger(this, "domready");
}
};
/**
* Returns the HTML <IMG> tag for the close box.
* @private
*/
InfoBox.prototype.getCloseBoxImg_ = function () {
var img = "";
if (this.closeBoxURL_ !== "") {
img = "<img";
img += " src='" + this.closeBoxURL_ + "'";
img += " align=right"; // Do this because Opera chokes on style='float: right;'
img += " style='";
img += " position: relative;"; // Required by MSIE
img += " cursor: pointer;";
img += " margin: " + this.closeBoxMargin_ + ";";
img += "'>";
}
return img;
};
/**
* Adds the click handler to the InfoBox close box.
* @private
*/
InfoBox.prototype.addClickHandler_ = function () {
var closeBox;
if (this.closeBoxURL_ !== "") {
closeBox = this.div_.firstChild;
this.closeListener_ = google.maps.event.addDomListener(closeBox, "click", this.getCloseClickHandler_());
} else {
this.closeListener_ = null;
}
};
/**
* Returns the function to call when the user clicks the close box of an InfoBox.
* @private
*/
InfoBox.prototype.getCloseClickHandler_ = function () {
var me = this;
return function (e) {
// 1.0.3 fix: Always prevent propagation of a close box click to the map:
e.cancelBubble = true;
if (e.stopPropagation) {
e.stopPropagation();
}
/**
* This event is fired when the InfoBox's close box is clicked.
* @name InfoBox#closeclick
* @event
*/
google.maps.event.trigger(me, "closeclick");
me.close();
};
};
/**
* Pans the map so that the InfoBox appears entirely within the map's visible area.
* @private
*/
InfoBox.prototype.panBox_ = function (disablePan) {
var map;
var bounds;
var xOffset = 0, yOffset = 0;
if (!disablePan) {
map = this.getMap();
if (map instanceof google.maps.Map) { // Only pan if attached to map, not panorama
if (!map.getBounds().contains(this.position_)) {
// Marker not in visible area of map, so set center
// of map to the marker position first.
map.setCenter(this.position_);
}
bounds = map.getBounds();
var mapDiv = map.getDiv();
var mapWidth = mapDiv.offsetWidth;
var mapHeight = mapDiv.offsetHeight;
var iwOffsetX = this.pixelOffset_.width;
var iwOffsetY = this.pixelOffset_.height;
var iwWidth = this.div_.offsetWidth;
var iwHeight = this.div_.offsetHeight;
var padX = this.infoBoxClearance_.width;
var padY = this.infoBoxClearance_.height;
var pixPosition = this.getProjection().fromLatLngToContainerPixel(this.position_);
if (pixPosition.x < (-iwOffsetX + padX)) {
xOffset = pixPosition.x + iwOffsetX - padX;
} else if ((pixPosition.x + iwWidth + iwOffsetX + padX) > mapWidth) {
xOffset = pixPosition.x + iwWidth + iwOffsetX + padX - mapWidth;
}
if (this.alignBottom_) {
if (pixPosition.y < (-iwOffsetY + padY + iwHeight)) {
yOffset = pixPosition.y + iwOffsetY - padY - iwHeight;
} else if ((pixPosition.y + iwOffsetY + padY) > mapHeight) {
yOffset = pixPosition.y + iwOffsetY + padY - mapHeight;
}
} else {
if (pixPosition.y < (-iwOffsetY + padY)) {
yOffset = pixPosition.y + iwOffsetY - padY;
} else if ((pixPosition.y + iwHeight + iwOffsetY + padY) > mapHeight) {
yOffset = pixPosition.y + iwHeight + iwOffsetY + padY - mapHeight;
}
}
if (!(xOffset === 0 && yOffset === 0)) {
// Move the map to the shifted center.
//
var c = map.getCenter();
map.panBy(xOffset, yOffset);
}
}
}
};
/**
* Sets the style of the InfoBox by setting the style sheet and applying
* other specific styles requested.
* @private
*/
InfoBox.prototype.setBoxStyle_ = function () {
var i, boxStyle;
if (this.div_) {
// Apply style values from the style sheet defined in the boxClass parameter:
this.div_.className = this.boxClass_;
// Clear existing inline style values:
this.div_.style.cssText = "";
// Apply style values defined in the boxStyle parameter:
boxStyle = this.boxStyle_;
for (i in boxStyle) {
if (boxStyle.hasOwnProperty(i)) {
this.div_.style[i] = boxStyle[i];
}
}
// Fix for iOS disappearing InfoBox problem.
// See https://stackoverflow.com/questions/9229535/google-maps-markers-disappear-at-certain-zoom-level-only-on-iphone-ipad
this.div_.style.WebkitTransform = "translateZ(0)";
// Fix up opacity style for benefit of MSIE:
//
if (typeof this.div_.style.opacity !== "undefined" && this.div_.style.opacity !== "") {
// See https://www.quirksmode.org/css/opacity.html
this.div_.style.MsFilter = "\"progid:DXImageTransform.Microsoft.Alpha(Opacity=" + (this.div_.style.opacity * 100) + ")\"";
this.div_.style.filter = "alpha(opacity=" + (this.div_.style.opacity * 100) + ")";
}
// Apply required styles:
//
this.div_.style.position = "absolute";
this.div_.style.visibility = 'hidden';
if (this.zIndex_ !== null) {
this.div_.style.zIndex = this.zIndex_;
}
}
};
/**
* Get the widths of the borders of the InfoBox.
* @private
* @return {Object} widths object (top, bottom left, right)
*/
InfoBox.prototype.getBoxWidths_ = function () {
var computedStyle;
var bw = {top: 0, bottom: 0, left: 0, right: 0};
var box = this.div_;
if (document.defaultView && document.defaultView.getComputedStyle) {
computedStyle = box.ownerDocument.defaultView.getComputedStyle(box, "");
if (computedStyle) {
// The computed styles are always in pixel units (good!)
bw.top = parseInt(computedStyle.borderTopWidth, 10) || 0;
bw.bottom = parseInt(computedStyle.borderBottomWidth, 10) || 0;
bw.left = parseInt(computedStyle.borderLeftWidth, 10) || 0;
bw.right = parseInt(computedStyle.borderRightWidth, 10) || 0;
}
} else if (document.documentElement.currentStyle) { // MSIE
if (box.currentStyle) {
// The current styles may not be in pixel units, but assume they are (bad!)
bw.top = parseInt(box.currentStyle.borderTopWidth, 10) || 0;
bw.bottom = parseInt(box.currentStyle.borderBottomWidth, 10) || 0;
bw.left = parseInt(box.currentStyle.borderLeftWidth, 10) || 0;
bw.right = parseInt(box.currentStyle.borderRightWidth, 10) || 0;
}
}
return bw;
};
/**
* Invoked when <tt>close</tt> is called. Do not call it directly.
*/
InfoBox.prototype.onRemove = function () {
if (this.div_) {
this.div_.parentNode.removeChild(this.div_);
this.div_ = null;
}
};
/**
* Draws the InfoBox based on the current map projection and zoom level.
*/
InfoBox.prototype.draw = function () {
this.createInfoBoxDiv_();
var pixPosition = this.getProjection().fromLatLngToDivPixel(this.position_);
this.div_.style.left = (pixPosition.x + this.pixelOffset_.width) + "px";
if (this.alignBottom_) {
this.div_.style.bottom = -(pixPosition.y + this.pixelOffset_.height) + "px";
} else {
this.div_.style.top = (pixPosition.y + this.pixelOffset_.height) + "px";
}
if (this.isHidden_) {
this.div_.style.visibility = "hidden";
} else {
this.div_.style.visibility = "visible";
}
};
/**
* Sets the options for the InfoBox. Note that changes to the <tt>maxWidth</tt>,
* <tt>closeBoxMargin</tt>, <tt>closeBoxURL</tt>, and <tt>enableEventPropagation</tt>
* properties have no affect until the current InfoBox is <tt>close</tt>d and a new one
* is <tt>open</tt>ed.
* @param {InfoBoxOptions} opt_opts
*/
InfoBox.prototype.setOptions = function (opt_opts) {
if (typeof opt_opts.boxClass !== "undefined") { // Must be first
this.boxClass_ = opt_opts.boxClass;
this.setBoxStyle_();
}
if (typeof opt_opts.boxStyle !== "undefined") { // Must be second
this.boxStyle_ = opt_opts.boxStyle;
this.setBoxStyle_();
}
if (typeof opt_opts.content !== "undefined") {
this.setContent(opt_opts.content);
}
if (typeof opt_opts.disableAutoPan !== "undefined") {
this.disableAutoPan_ = opt_opts.disableAutoPan;
}
if (typeof opt_opts.maxWidth !== "undefined") {
this.maxWidth_ = opt_opts.maxWidth;
}
if (typeof opt_opts.pixelOffset !== "undefined") {
this.pixelOffset_ = opt_opts.pixelOffset;
}
if (typeof opt_opts.alignBottom !== "undefined") {
this.alignBottom_ = opt_opts.alignBottom;
}
if (typeof opt_opts.position !== "undefined") {
this.setPosition(opt_opts.position);
}
if (typeof opt_opts.zIndex !== "undefined") {
this.setZIndex(opt_opts.zIndex);
}
if (typeof opt_opts.closeBoxMargin !== "undefined") {
this.closeBoxMargin_ = opt_opts.closeBoxMargin;
}
if (typeof opt_opts.closeBoxURL !== "undefined") {
this.closeBoxURL_ = opt_opts.closeBoxURL;
}
if (typeof opt_opts.infoBoxClearance !== "undefined") {
this.infoBoxClearance_ = opt_opts.infoBoxClearance;
}
if (typeof opt_opts.isHidden !== "undefined") {
this.isHidden_ = opt_opts.isHidden;
}
if (typeof opt_opts.visible !== "undefined") {
this.isHidden_ = !opt_opts.visible;
}
if (typeof opt_opts.enableEventPropagation !== "undefined") {
this.enableEventPropagation_ = opt_opts.enableEventPropagation;
}
if (this.div_) {
this.draw();
}
};
/**
* Sets the content of the InfoBox.
* The content can be plain text or an HTML DOM node.
* @param {string|Node} content
*/
InfoBox.prototype.setContent = function (content) {
this.content_ = content;
if (this.div_) {
if (this.closeListener_) {
google.maps.event.removeListener(this.closeListener_);
this.closeListener_ = null;
}
// Odd code required to make things work with MSIE.
//
if (!this.fixedWidthSet_) {
this.div_.style.width = "";
}
if (typeof content.nodeType === "undefined") {
this.div_.innerHTML = this.getCloseBoxImg_() + content;
} else {
this.div_.innerHTML = this.getCloseBoxImg_();
this.div_.appendChild(content);
}
// Perverse code required to make things work with MSIE.
// (Ensures the close box does, in fact, float to the right.)
//
if (!this.fixedWidthSet_) {
this.div_.style.width = this.div_.offsetWidth + "px";
if (typeof content.nodeType === "undefined") {
this.div_.innerHTML = this.getCloseBoxImg_() + content;
} else {
this.div_.innerHTML = this.getCloseBoxImg_();
this.div_.appendChild(content);
}
}
this.addClickHandler_();
}
/**
* This event is fired when the content of the InfoBox changes.
* @name InfoBox#content_changed
* @event
*/
google.maps.event.trigger(this, "content_changed");
};
/**
* Sets the geographic location of the InfoBox.
* @param {LatLng} latlng
*/
InfoBox.prototype.setPosition = function (latlng) {
this.position_ = latlng;
if (this.div_) {
this.draw();
}
/**
* This event is fired when the position of the InfoBox changes.
* @name InfoBox#position_changed
* @event
*/
google.maps.event.trigger(this, "position_changed");
};
/**
* Sets the zIndex style for the InfoBox.
* @param {number} index
*/
InfoBox.prototype.setZIndex = function (index) {
this.zIndex_ = index;
if (this.div_) {
this.div_.style.zIndex = index;
}
/**
* This event is fired when the zIndex of the InfoBox changes.
* @name InfoBox#zindex_changed
* @event
*/
google.maps.event.trigger(this, "zindex_changed");
};
/**
* Sets the visibility of the InfoBox.
* @param {boolean} isVisible
*/
InfoBox.prototype.setVisible = function (isVisible) {
this.isHidden_ = !isVisible;
if (this.div_) {
this.div_.style.visibility = (this.isHidden_ ? "hidden" : "visible");
}
};
/**
* Returns the content of the InfoBox.
* @returns {string}
*/
InfoBox.prototype.getContent = function () {
return this.content_;
};
/**
* Returns the geographic location of the InfoBox.
* @returns {LatLng}
*/
InfoBox.prototype.getPosition = function () {
return this.position_;
};
/**
* Returns the zIndex for the InfoBox.
* @returns {number}
*/
InfoBox.prototype.getZIndex = function () {
return this.zIndex_;
};
/**
* Returns a flag indicating whether the InfoBox is visible.
* @returns {boolean}
*/
InfoBox.prototype.getVisible = function () {
var isVisible;
if ((typeof this.getMap() === "undefined") || (this.getMap() === null)) {
isVisible = false;
} else {
isVisible = !this.isHidden_;
}
return isVisible;
};
/**
* Shows the InfoBox. [Deprecated; use <tt>setVisible</tt> instead.]
*/
InfoBox.prototype.show = function () {
this.isHidden_ = false;
if (this.div_) {
this.div_.style.visibility = "visible";
}
};
/**
* Hides the InfoBox. [Deprecated; use <tt>setVisible</tt> instead.]
*/
InfoBox.prototype.hide = function () {
this.isHidden_ = true;
if (this.div_) {
this.div_.style.visibility = "hidden";
}
};
/**
* Adds the InfoBox to the specified map or Street View panorama. If <tt>anchor</tt>
* (usually a <tt>google.maps.Marker</tt>) is specified, the position
* of the InfoBox is set to the position of the <tt>anchor</tt>. If the
* anchor is dragged to a new location, the InfoBox moves as well.
* @param {Map|StreetViewPanorama} map
* @param {MVCObject} [anchor]
*/
InfoBox.prototype.open = function (map, anchor) {
var me = this;
if (anchor) {
this.position_ = anchor.getPosition();
this.moveListener_ = google.maps.event.addListener(anchor, "position_changed", function () {
me.setPosition(this.getPosition());
});
}
this.setMap(map);
if (this.div_) {
this.panBox_();
}
};
/**
* Removes the InfoBox from the map.
*/
InfoBox.prototype.close = function () {
var i;
if (this.closeListener_) {
google.maps.event.removeListener(this.closeListener_);
this.closeListener_ = null;
}
if (this.eventListeners_) {
for (i = 0; i < this.eventListeners_.length; i++) {
google.maps.event.removeListener(this.eventListeners_[i]);
}
this.eventListeners_ = null;
}
if (this.moveListener_) {
google.maps.event.removeListener(this.moveListener_);
this.moveListener_ = null;
}
if (this.contextListener_) {
google.maps.event.removeListener(this.contextListener_);
this.contextListener_ = null;
}
this.setMap(null);
};

View File

@ -0,0 +1,615 @@
/**
* jQuery Geocoding and Places Autocomplete Plugin - V 1.7.0
*
* @author Martin Kleppe <kleppe@ubilabs.net>, 2016
* @author Ubilabs https://ubilabs.net, 2016
* @license MIT License <https://www.opensource.org/licenses/mit-license.php>
*/
// # $.geocomplete()
// ## jQuery Geocoding and Places Autocomplete Plugin
//
// * https://github.com/ubilabs/geocomplete/
// * by Martin Kleppe <kleppe@ubilabs.net>
(function ($, window, document, undefined) {
// ## Options
// The default options for this plugin.
//
// * `map` - Might be a selector, an jQuery object or a DOM element. Default is `false` which shows no map.
// * `details` - The container that should be populated with data. Defaults to `false` which ignores the setting.
// * 'detailsScope' - Allows you to scope the 'details' container and have multiple geocomplete fields on one page. Must be a parent of the input. Default is 'null'
// * `location` - Location to initialize the map on. Might be an address `string` or an `array` with [latitude, longitude] or a `google.maps.LatLng`object. Default is `false` which shows a blank map.
// * `bounds` - Whether to snap geocode search to map bounds. Default: `true` if false search globally. Alternatively pass a custom `LatLngBounds object.
// * `autoselect` - Automatically selects the highlighted item or the first item from the suggestions list on Enter.
// * `detailsAttribute` - The attribute's name to use as an indicator. Default: `"name"`
// * `mapOptions` - Options to pass to the `google.maps.Map` constructor. See the full list [here](https://code.google.com/apis/maps/documentation/javascript/reference.html#MapOptions).
// * `mapOptions.zoom` - The inital zoom level. Default: `14`
// * `mapOptions.scrollwheel` - Whether to enable the scrollwheel to zoom the map. Default: `false`
// * `mapOptions.mapTypeId` - The map type. Default: `"roadmap"`
// * `markerOptions` - The options to pass to the `google.maps.Marker` constructor. See the full list [here](https://code.google.com/apis/maps/documentation/javascript/reference.html#MarkerOptions).
// * `markerOptions.draggable` - If the marker is draggable. Default: `false`. Set to true to enable dragging.
// * `markerOptions.disabled` - Do not show marker. Default: `false`. Set to true to disable marker.
// * `maxZoom` - The maximum zoom level too zoom in after a geocoding response. Default: `16`
// * `types` - An array containing one or more of the supported types for the places request. Default: `['geocode']` See the full list [here](https://code.google.com/apis/maps/documentation/javascript/places.html#place_search_requests).
// * `blur` - Trigger geocode when input loses focus.
// * `geocodeAfterResult` - If blur is set to true, choose whether to geocode if user has explicitly selected a result before blur.
// * `restoreValueAfterBlur` - Restores the input's value upon blurring. Default is `false` which ignores the setting.
var defaults = {
bounds: true,
strictBounds: false,
country: null,
map: false,
details: false,
detailsAttribute: "name",
detailsScope: null,
autoselect: true,
location: false,
mapOptions: {
zoom: 14,
scrollwheel: false,
mapTypeId: "roadmap"
},
markerOptions: {
draggable: false
},
maxZoom: 16,
types: ['geocode'],
blur: false,
geocodeAfterResult: false,
restoreValueAfterBlur: false
};
// See: [Geocoding Types](https://developers.google.com/maps/documentation/geocoding/#Types)
// on Google Developers.
var componentTypes = ("street_address route intersection political " +
"country administrative_area_level_1 administrative_area_level_2 " +
"administrative_area_level_3 colloquial_area locality sublocality " +
"neighborhood premise subpremise postal_code natural_feature airport " +
"park point_of_interest post_box street_number floor room " +
"lat lng viewport location " +
"formatted_address location_type bounds").split(" ");
// See: [Places Details Responses](https://developers.google.com/maps/documentation/javascript/places#place_details_responses)
// on Google Developers.
var placesDetails = ("id place_id url website vicinity reference name rating " +
"international_phone_number icon formatted_phone_number").split(" ");
// The actual plugin constructor.
function GeoComplete(input, options) {
this.options = $.extend(true, {}, defaults, options);
// This is a fix to allow types:[] not to be overridden by defaults
// so search results includes everything
if (options && options.types) {
this.options.types = options.types;
}
this.input = input;
this.$input = $(input);
this._defaults = defaults;
this._name = 'geocomplete';
this.init();
}
// Initialize all parts of the plugin.
$.extend(GeoComplete.prototype, {
init: function () {
this.initMap();
this.initMarker();
this.initGeocoder();
this.initDetails();
this.initLocation();
},
// Initialize the map but only if the option `map` was set.
// This will create a `map` within the given container
// using the provided `mapOptions` or link to the existing map instance.
initMap: function () {
if (!this.options.map) {
return;
}
if (typeof this.options.map.setCenter == "function") {
this.map = this.options.map;
return;
}
this.map = new google.maps.Map(
$(this.options.map)[0],
this.options.mapOptions
);
// add click event listener on the map
google.maps.event.addListener(
this.map,
'click',
$.proxy(this.mapClicked, this)
);
// add dragend even listener on the map
google.maps.event.addListener(
this.map,
'dragend',
$.proxy(this.mapDragged, this)
);
// add idle even listener on the map
google.maps.event.addListener(
this.map,
'idle',
$.proxy(this.mapIdle, this)
);
google.maps.event.addListener(
this.map,
'zoom_changed',
$.proxy(this.mapZoomed, this)
);
},
// Add a marker with the provided `markerOptions` but only
// if the option was set. Additionally it listens for the `dragend` event
// to notify the plugin about changes.
initMarker: function () {
if (!this.map) {
return;
}
var options = $.extend(this.options.markerOptions, {map: this.map});
if (options.disabled) {
return;
}
this.marker = new google.maps.Marker(options);
google.maps.event.addListener(
this.marker,
'dragend',
$.proxy(this.markerDragged, this)
);
},
// Associate the input with the autocompleter and create a geocoder
// to fall back when the autocompleter does not return a value.
initGeocoder: function () {
// Indicates is user did select a result from the dropdown.
var selected = false;
var options = {
types: this.options.types,
bounds: this.options.bounds === true ? null : this.options.bounds,
componentRestrictions: this.options.componentRestrictions,
strictBounds: this.options.strictBounds
};
if (this.options.country) {
options.componentRestrictions = {country: this.options.country};
}
this.autocomplete = new google.maps.places.Autocomplete(
this.input, options
);
this.geocoder = new google.maps.Geocoder();
// Bind autocomplete to map bounds but only if there is a map
// and `options.bindToMap` is set to true.
if (this.map && this.options.bounds === true) {
this.autocomplete.bindTo('bounds', this.map);
}
// Watch `place_changed` events on the autocomplete input field.
google.maps.event.addListener(
this.autocomplete,
'place_changed',
$.proxy(this.placeChanged, this)
);
// Prevent parent form from being submitted if user hit enter.
this.$input.on('keypress.' + this._name, function (event) {
if (event.keyCode === 13) {
return false;
}
});
// Assume that if user types anything after having selected a result,
// the selected location is not valid any more.
if (this.options.geocodeAfterResult === true) {
this.$input.bind('keypress.' + this._name, $.proxy(function () {
if (event.keyCode != 9 && this.selected === true) {
this.selected = false;
}
}, this));
}
// Listen for "geocode" events and trigger find action.
this.$input.bind('geocode.' + this._name, $.proxy(function () {
this.find();
}, this));
// Saves the previous input value
this.$input.bind('geocode:result.' + this._name, $.proxy(function () {
this.lastInputVal = this.$input.val();
}, this));
// Trigger find action when input element is blurred out and user has
// not explicitly selected a result.
// (Useful for typing partial location and tabbing to the next field
// or clicking somewhere else.)
if (this.options.blur === true) {
this.$input.on('blur.' + this._name, $.proxy(function () {
if (this.options.geocodeAfterResult === true && this.selected === true) {
return;
}
if (this.options.restoreValueAfterBlur === true && this.selected === true) {
setTimeout($.proxy(this.restoreLastValue, this), 0);
} else {
this.find();
}
}, this));
}
},
// Prepare a given DOM structure to be populated when we got some data.
// This will cycle through the list of component types and map the
// corresponding elements.
initDetails: function () {
if (!this.options.details) {
return;
}
if (this.options.detailsScope) {
var $details = $(this.input).parents(this.options.detailsScope).find(this.options.details);
} else {
var $details = $(this.options.details);
}
var attribute = this.options.detailsAttribute,
details = {};
function setDetail(value) {
details[value] = $details.find("[" + attribute + "=" + value + "]");
}
$.each(componentTypes, function (index, key) {
setDetail(key);
setDetail(key + "_short");
});
$.each(placesDetails, function (index, key) {
setDetail(key);
});
this.$details = $details;
this.details = details;
},
// Set the initial location of the plugin if the `location` options was set.
// This method will care about converting the value into the right format.
initLocation: function () {
var location = this.options.location, latLng;
if (!location) {
return;
}
if (typeof location == 'string') {
this.find(location);
return;
}
if (location instanceof Array) {
latLng = new google.maps.LatLng(location[0], location[1]);
}
if (location instanceof google.maps.LatLng) {
latLng = location;
}
if (latLng) {
if (this.map) {
this.map.setCenter(latLng);
}
if (this.marker) {
this.marker.setPosition(latLng);
}
}
},
destroy: function () {
if (this.map) {
google.maps.event.clearInstanceListeners(this.map);
google.maps.event.clearInstanceListeners(this.marker);
}
this.autocomplete.unbindAll();
google.maps.event.clearInstanceListeners(this.autocomplete);
google.maps.event.clearInstanceListeners(this.input);
this.$input.removeData();
this.$input.off(this._name);
this.$input.unbind('.' + this._name);
},
// Look up a given address. If no `address` was specified it uses
// the current value of the input.
find: function (address) {
this.geocode({
address: address || this.$input.val()
});
},
// Requests details about a given location.
// Additionally it will bias the requests to the provided bounds.
geocode: function (request) {
// Don't geocode if the requested address is empty
if (!request.address) {
return;
}
if (this.options.bounds && !request.bounds) {
if (this.options.bounds === true) {
request.bounds = this.map && this.map.getBounds();
} else {
request.bounds = this.options.bounds;
}
}
if (this.options.country) {
request.region = this.options.country;
}
this.geocoder.geocode(request, $.proxy(this.handleGeocode, this));
},
// Get the selected result. If no result is selected on the list, then get
// the first result from the list.
selectFirstResult: function () {
//$(".pac-container").hide();
var selected = '';
// Check if any result is selected.
if ($(".pac-item-selected")[0]) {
selected = '-selected';
}
// Get the first suggestion's text.
var $span1 = $(".pac-container:visible .pac-item" + selected + ":first span:nth-child(2)").text();
var $span2 = $(".pac-container:visible .pac-item" + selected + ":first span:nth-child(3)").text();
// Adds the additional information, if available.
var firstResult = $span1;
if ($span2) {
firstResult += " - " + $span2;
}
this.$input.val(firstResult);
return firstResult;
},
// Restores the input value using the previous value if it exists
restoreLastValue: function () {
if (this.lastInputVal) {
this.$input.val(this.lastInputVal);
}
},
// Handles the geocode response. If more than one results was found
// it triggers the "geocode:multiple" events. If there was an error
// the "geocode:error" event is fired.
handleGeocode: function (results, status) {
if (status === google.maps.GeocoderStatus.OK) {
var result = results[0];
this.$input.val(result.formatted_address);
this.update(result);
if (results.length > 1) {
this.trigger("geocode:multiple", results);
}
} else {
this.trigger("geocode:error", status);
}
},
// Triggers a given `event` with optional `arguments` on the input.
trigger: function (event, argument) {
this.$input.trigger(event, [argument]);
},
// Set the map to a new center by passing a `geometry`.
// If the geometry has a viewport, the map zooms out to fit the bounds.
// Additionally it updates the marker position.
center: function (geometry) {
if (geometry.viewport) {
this.map.fitBounds(geometry.viewport);
if (this.map.getZoom() > this.options.maxZoom) {
this.map.setZoom(this.options.maxZoom);
}
} else {
this.map.setZoom(this.options.maxZoom);
this.map.setCenter(geometry.location);
}
if (this.marker) {
this.marker.setPosition(geometry.location);
this.marker.setAnimation(this.options.markerOptions.animation);
}
},
// Update the elements based on a single places or geocoding response
// and trigger the "geocode:result" event on the input.
update: function (result) {
if (this.map) {
this.center(result.geometry);
}
if (this.$details) {
this.fillDetails(result);
}
this.trigger("geocode:result", result);
},
// Populate the provided elements with new `result` data.
// This will lookup all elements that has an attribute with the given
// component type.
fillDetails: function (result) {
var data = {},
geometry = result.geometry,
viewport = geometry.viewport,
bounds = geometry.bounds;
// Create a simplified version of the address components.
$.each(result.address_components, function (index, object) {
var name = object.types[0];
$.each(object.types, function (index, name) {
data[name] = object.long_name;
data[name + "_short"] = object.short_name;
});
});
// Add properties of the places details.
$.each(placesDetails, function (index, key) {
data[key] = result[key];
});
// Add infos about the address and geometry.
$.extend(data, {
formatted_address: result.formatted_address,
location_type: geometry.location_type || "PLACES",
viewport: viewport,
bounds: bounds,
location: geometry.location,
lat: geometry.location.lat(),
lng: geometry.location.lng()
});
// Set the values for all details.
$.each(this.details, $.proxy(function (key, $detail) {
var value = data[key];
this.setDetail($detail, value);
}, this));
this.data = data;
},
// Assign a given `value` to a single `$element`.
// If the element is an input, the value is set, otherwise it updates
// the text content.
setDetail: function ($element, value) {
if (value === undefined) {
value = "";
} else if (typeof value.toUrlValue == "function") {
value = value.toUrlValue();
}
if ($element.is(":input")) {
$element.val(value);
} else {
$element.text(value);
}
},
// Fire the "geocode:dragged" event and pass the new position.
markerDragged: function (event) {
this.trigger("geocode:dragged", event.latLng);
},
mapClicked: function (event) {
this.trigger("geocode:click", event.latLng);
},
// Fire the "geocode:mapdragged" event and pass the current position of the map center.
mapDragged: function (event) {
this.trigger("geocode:mapdragged", this.map.getCenter());
},
// Fire the "geocode:idle" event and pass the current position of the map center.
mapIdle: function (event) {
this.trigger("geocode:idle", this.map.getCenter());
},
mapZoomed: function (event) {
this.trigger("geocode:zoom", this.map.getZoom());
},
// Restore the old position of the marker to the last knwon location.
resetMarker: function () {
this.marker.setPosition(this.data.location);
this.setDetail(this.details.lat, this.data.location.lat());
this.setDetail(this.details.lng, this.data.location.lng());
},
// Update the plugin after the user has selected an autocomplete entry.
// If the place has no geometry it passes it to the geocoder.
placeChanged: function () {
var place = this.autocomplete.getPlace();
this.selected = true;
if (!place.geometry) {
if (this.options.autoselect) {
// Automatically selects the highlighted item or the first item from the
// suggestions list.
var autoSelection = this.selectFirstResult();
this.find(autoSelection);
}
} else {
// Use the input text if it already gives geometry.
this.update(place);
}
}
});
// A plugin wrapper around the constructor.
// Pass `options` with all settings that are different from the default.
// The attribute is used to prevent multiple instantiations of the plugin.
$.fn.geocomplete = function (options) {
var attribute = 'plugin_geocomplete';
// If you call `.geocomplete()` with a string as the first parameter
// it returns the corresponding property or calls the method with the
// following arguments.
if (typeof options == "string") {
var instance = $(this).data(attribute) || $(this).geocomplete().data(attribute),
prop = instance[options];
if (typeof prop == "function") {
prop.apply(instance, Array.prototype.slice.call(arguments, 1));
return $(this);
} else {
if (arguments.length == 2) {
prop = arguments[1];
}
return prop;
}
} else {
return this.each(function () {
// Prevent against multiple instantiations.
var instance = $.data(this, attribute);
if (!instance) {
instance = new GeoComplete(this, options);
$.data(this, attribute, instance);
}
});
}
};
})(jQuery, window, document);

15
media/com_jem/js/lightbox.min.js vendored Normal file

File diff suppressed because one or more lines are too long

34
media/com_jem/js/other.js Normal file
View File

@ -0,0 +1,34 @@
/**
* @package JEM
* @copyright (C) 2013-2024 joomlaeventmanager.net
* @copyright (C) 2005-2009 Christoph Lukes
* @license https://www.gnu.org/licenses/gpl-3.0 GNU/GPL
*/
/**
* this file manages the js script for adding/removing attachements in event
*/
// window.addEvent('domready', function() {
jQuery(document).ready(function ($) {
$('#userfile-remove').on('click', function (event) {
var di = document.getElementById('datimage');
if (di) {
di.style.display = 'none';
}
var li = document.getElementById('locimage');
if (li) {
li.style.display = 'none';
}
var ufr = document.getElementById('userfile-remove');
if (ufr) {
ufr.style.display = 'none';
}
var ri = document.getElementById('removeimage');
if (ri) {
ri.value = '1';
}
});
});

View File

@ -0,0 +1,197 @@
/**
* @package JEM
* @copyright (C) 2013-2024 joomlaeventmanager.net
* @copyright (C) 2005-2009 Christoph Lukes
* @license https://www.gnu.org/licenses/gpl-3.0 GNU/GPL
* @author Sascha Karnatz
*/
var $content; // the content object
var $select_value;
var $select_element;
function start_recurrencescript(el) {
//window.addEvent('domready', function() {
// $content = $("#recurrence_output"); // get the object (position) of the output
$content = document.getElementById('recurrence_output'); // get the object (position) of the output
// $select_element = $("#"+el);
$select_element = document.getElementById(el);
output_recurrencescript(); // start the output
$("#" + el).on('change', output_recurrencescript); // additional event handler
}
/**
* the output of the script (a part of them is included in
* this function)
*
* @access public
**/
function output_recurrencescript() {
var $select_value = $select_element.value; // the value of the select list
if ($select_value != 0) { // want the user a recurrence
// create an element by the generate_output function
// ** $select_output is an array of all sentences of each type **
var $element = generate_output($select_output[$select_value], $select_value);
$content.replaceChild($element, $content.firstChild); // include the element
set_parameter(); // set the new parameter
if (navigator.appName == "Microsoft Internet Explorer") { // the IE don't know some CSS - classes
document.getElementById("counter_row").style.display = "inline"; // show the counter for the IE
} else {
document.getElementById("counter_row").style.display = "table-row"; // show the counter for the normal browsers
}
} else {
document.getElementById("recurrence_number").value = 0; // set the parameter
$nothing = document.createElement("span"); // create a new "empty" element
$nothing.appendChild(document.createTextNode(""));
$content.replaceChild($nothing, $content.firstChild); // replace the old element by the new one
document.getElementById("counter_row").style.display = "none"; // hide the counter
}
}
/**
* use the sentences of each type and include selectlist into this phrases
*
* @var array select_output
* @var integer select_value
* @return object the generated span element
* @access public
**/
function generate_output($select_output, $select_value) {
var $output_array = $select_output.split("[placeholder]"); // split the output into two parts
var $span = document.createElement("span"); // create a new element
for ($i = 0; $i < $output_array.length; $i++) {
$weekday_array = $output_array[$i].split("[placeholder_weekday]"); // split by the weekday placeholder
if ($weekday_array.length > 1) { // is the weekday placeholder set?
for ($k = 0; $k < $weekday_array.length; $k++) {
$span.appendChild(document.createTextNode($weekday_array[$k])); // include the the text snippets into span - element
if ($k == 0) { // the first iteration get an extra weekday selectlist
$span.appendChild(generate_selectlist_weekday());
}
}
} else {
$span.appendChild(document.createTextNode($output_array[$i])); // include the text snippet
}
if ($i == 0) { // first iteration get an extra selectlist
$span.appendChild(generate_selectlist($select_value));
}
}
return $span;
}
/**
* this function generate the normal selectlist
*
* @var integer select_value
* @return object the generated selectlist
* @access public
**/
function generate_selectlist($select_value) {
var $selectlist = document.createElement("select"); // new select element
$selectlist.name = "recurrence_selectlist"; // add attributes
$selectlist.id = "recurrence_selectlist";
$selectlist.onchange = set_parameter;
switch ($select_value) {
case "1":
$limit = 30; // days (1 month)
break;
case "2":
$limit = 13; // weeks (1/4 year)
break;
case "3":
$limit = 18; // months (1'5 years)
break;
case "4":
$limit = 7; // weekdays (7 cases)
break;
case "5":
$limit = 12; // years ( 1 dozen years)
break;
default:
$limit =24; // orders (future, hours?)
break;
}
for ($j = 0; $j < $limit; $j++) {
var $option = document.createElement("option"); // create option element
var $valueSelected = parseInt(document.getElementById("recurrence_number").value);
var $valueSelected_saved = parseInt(document.getElementById("recurrence_number_saved").value);
if ($j == $valueSelected_saved - 1) { // the selected - attribute
$option.selected = true;
}
if (($j >= 5) && ($select_value ==4)) { // get the word for "last" and "before last" in the weekday section
var $name_value = "";
switch ($j) {
case 5:
$name_value = $last;
break;
case 6:
$name_value = $before_last;
break;
}
$option.appendChild(document.createTextNode($name_value)); // insert the name
$option.value = $j + 1; // and the value
} else {
$option.appendChild(document.createTextNode($j + 1)); // + 1 day because their is no recuring each "0" day
$option.value = $j + 1;
}
$selectlist.appendChild($option); // include the option - element into the select - element
}
return $selectlist;
}
/**
* this function generate the weekday selectlist
*
* @return object the generated weekday selectlist
* @access public
**/
function generate_selectlist_weekday() {
var $selectlist = document.createElement("select"); // the new selectlist
$selectlist.name = "recurrence_selectlist_weekday"; // add attributes
$selectlist.id = "recurrence_selectlist_weekday";
$selectlist.multiple = true;
$selectlist.size = 7;
var selected = document.getElementById("recurrence_byday").value.split(','); // array of selected values
for ($j = 0; $j < 7; $j++) { // the 7 days
var $option = document.createElement("option"); // create the option - elements
$option.value = $weekday[$j][0]; // add the value
$option.appendChild(document.createTextNode($weekday[$j][1])); // + 1 day because their is no recuring each "0" day
if (selected.includes($option.value)) { // the selected - attribute
$option.selected = true;
}
$selectlist.appendChild($option); // include the option - element into the select - element
}
$($selectlist).on('change', function () {
var result = '';
var isempty = true;
for (i = 0; i < this.length; i++) {
if (this.options[i].selected) {
if (isempty) {
isempty = false;
} else {
result += ',';
}
result += this.options[i].value
}
}
document.getElementById('recurrence_byday').value = result;
});
return $selectlist;
}
/**
* set the value of the hidden input tags
*
* @access public
**/
function set_parameter() {
// include the value into the recurrence_number input tag
document.getElementById("recurrence_number").value = document.getElementById("recurrence_selectlist").value;
}

View File

@ -0,0 +1,50 @@
/**
* @package JEM
* @copyright (C) 2013-2024 joomlaeventmanager.net
* @copyright (C) 2005-2009 Christoph Lukes
* @license https://www.gnu.org/licenses/gpl-3.0 GNU/GPL
* @author Sascha Karnatz
*/
// window.addEvent('domready', function(){
jQuery(document).ready(function ($) {
/*
$('filter_date').addEvent('change', function() {
this.form.submit();
});
*/
if ($('#filter_continent').length) {
$('#filter_continent').on('change', function () {
if ($('#filter_country').length) {
$('#filter_country').val('');
}
if ($('#filter_city').length) {
$('#filter_city').val('');
}
this.form.submit();
});
}
if ($('#filter_country').length) {
$('#filter_country').on('change', function () {
if ($('#filter_city').length) {
$('#filter_city').val('');
}
this.form.submit();
});
}
if ($('#filter_city').length) {
$('#filter_city').on('change', function () {
this.form.submit();
});
}
if ($('#filter_category').length) {
$('#filter_category').on('change', function () {
this.form.submit();
});
}
});

217
media/com_jem/js/seo.js Normal file
View File

@ -0,0 +1,217 @@
/**
* @package JEM
* @copyright (C) 2013-2024 joomlaeventmanager.net
* @copyright (C) 2005-2009 Christoph Lukes
* @license https://www.gnu.org/licenses/gpl-3.0 GNU/GPL
* @author Sascha Karnatz
*/
/**
* Comments in German
* Function: dieses Javascript ermoeglicht es automatisch die Metatags zu befuellen
*/
// Variablen werden als global definiert, da sie ueber mehrere Funktion hinweg genutzt werden
var $keyword; // Array - aufgeschlitete Variablen, welche einem HTML-Tag zugeordnet werden kann
var $keywords; // String - Verbindungsvariable zur noch nicht umgeschriebenen Variante der Keywords
var $manual_keywords = ""; // String - Speichert alle manuell eingefuegen Keywords ab
var $description; // String - die Beschreibung
var $description_vars; // Array - HTML - Tags, die mit einem onchange versehen werden
var $inputbox = ""; // String - es wird mit Hilfe dieser Variable ermittel, ob der User Beschreibung bzw. Keywords angeklickt hat
var $meta_error; // String - Fehler, der in der jeweiligen Sprache ausgegeben wird
function starter($msg) { // Funktion, welche beim Starten der Seite aufgerufen werden
get_keywords(); // leider funktionier window.onload nicht, da sonst die Popupfenster Fehler verursachen
get_description();
switchstart();
$meta_error = $msg;
}
function switchstart() { // Diese Funktion uebergibt alle relevanten Feldern ein onchange
try {
if ($keyword.length > 0) {
for (var i = 0; i < $keyword.length; i++) {
document.getElementById($keyword[i]).onchange = seo_switch;
}
}
if ($description_vars.length > 0) {
for (var i = 0; i < $description_vars.length; i++) {
document.getElementById($description_vars[i]).onchange = seo_switch;
}
}
} catch (e) {
//alert("Error occurred! JEM SEO - Javascript stopped!");
}
}
function seo_switch() { // Bei jeder Veraenderung werden beide Funktionen aufgerufen
include_keyword();
include_description();
}
function get_keywords() {
$keywords = $("#meta_keywords").val(); // Keywords auslesenen
var $Nullvalue = "[NULL]";
$manual_keywords = ""; // die Anzeige der nicht zuordbaren Variable wird geleert
$keyword = $keywords.split(","); // in eine Array aufspalten
for (var i = 0; i < $keyword.length; i++) { // und alle Leerzeichen entfernen
try { // Die Abfrage wird Fehlersicher gemacht
$keyword[i] = $keyword[i].replace(/ /g, "");
$keyword[i] = $keyword[i].replace(/\[/g, "");
$keyword[i] = $keyword[i].replace(/\]/g, "");
document.getElementById($keyword[i]).value; // ein Fehler wird provoziert, falls dieses Element nicht vorhanden ist
} catch (e) {
if ($manual_keywords != "") { // das nicht verwendete Keyword wird neu abgespeichert
$manual_keywords += ", ";
}
$manual_keywords += $keyword[i];
$keyword[i] = $Nullvalue; // Falls eine angegebene ID nicht vorhanden ist, wird diese aus dem Array entfernt
}
}
var $keyword_count = 0;
var $keyword_length = $keyword.length;
i = 0;
while (i < $keyword_length) {
if ($keyword[i] == $Nullvalue) {
$keyword[i] = $keyword[$keyword.length - $keyword_count - 1];
$keyword[$keyword.length - $keyword_count - 1] = $Nullvalue;
$keyword_length--;
$keyword_count++;
} else {
i++;
}
}
for (i = 0; i < $keyword_count; i++) {
$keyword.pop();
}
}
function get_description() {
$description = $("#meta_description").val(); // uebergebene Bechreibung wird aufgerufen und eingefuegt
if ($description != "") {
var Ergebnis = $description.split("["); // alle relevanten Teile werden getrennt
if (Ergebnis.length > 1) {
$description_vars = new Array(Ergebnis.length - 1); // Neues Array zum eintragen der geforderten Variablen wird angelegt
for (var i = 1; i < Ergebnis.length; i++) {
var inputarray = Ergebnis[i].substring(0, (Ergebnis[i].indexOf("]"))); // die einzelnen Variablen werden aus dem Satz ausgelesen
try { // Die Abfrage wird Fehlersicher gemacht
$description_vars[i - 1] = inputarray;
document.getElementById($description_vars[i - 1]).value;
} catch (e) {
$description_vars.pop();
}
}
} else {
$description_vars = new Array(0);
}
} else {
$description_vars = new Array(0);
}
}
function include_keyword() {
var $keywords = "";
for (var i = 0; i < $keyword.length; i++) { // Es werden alle keywords ausgelesen
if ($keywords != "") {
$keywords += ", ";
}
if (document.getElementById($keyword[i]).tagName == "SELECT") { // es wird unterschieden zwischen normalen Inputfeld und Selectfeld
if (document.getElementById($keyword[i]).value != 0) { // um auch korrekt abspeichern zu koennen wird das Komma richtig gesetzt
$keywords += get_selected_option($keyword[i]); // Auslesen des Wertes aus dem Selectfeld
} else {
$keywords += "[" + $keyword[i] + "]";
}
} else if (document.getElementById($keyword[i]).value != "") {
$keywords += document.getElementById($keyword[i]).value; //Auslesen des Wertes aus dem Inputfeld
} else {
$keywords += "[" + $keyword[i] + "]";
}
}
if ($manual_keywords != "") {
if ($keywords != "") {
$manual_keywords = ", " + $manual_keywords;
}
$keywords = $keywords + $manual_keywords;
}
document.getElementById("meta_keywords").value = $keywords;
}
function include_description() {
var desc_split, desc_value, desc_length;
var desc_output = $description; // Es wird die urspruengliche Ausgabe abgespeichert, da diese im spaeteren Verlauf geaendert wird
for (var i = 0; i < $description_vars.length; i++) {
desc_value = "[" + $description_vars[i] + "]"; // Der Wert wird auf Default gesetzt, damit er ausgegeben werden kann, falls ein deafulteinstellung gewaehlt wird
if (document.getElementById($description_vars[i]).tagName == "SELECT") { // es wird wieder unterschieden zwischen Select und Inputfeld
if (document.getElementById($description_vars[i]).value != 0) {
desc_value = get_selected_option($description_vars[i]);
}
} else {
if (document.getElementById($description_vars[i]).value != "") {
desc_value = document.getElementById($description_vars[i]).value;
}
}
desc_split = desc_output.split("[" + $description_vars[i] + "]"); // Der Satz wird in zwei Teile geteilt
desc_output = ""; // der auszugebene Satz wird geloescht, damit er mit den beiden Haelften wieder befuellt werden kann
desc_length = desc_split.length;
for (var j = 0; j < desc_length; j++) {
desc_output += desc_split[j];
if (j < desc_length - 1) {
desc_output += desc_value; // der Wert wird zwischen beide Texthaelften geschrieben
}
}
}
document.getElementById("meta_description").value = desc_output;
}
function insert_keyword($keyword) {
try {
var $input = document.getElementById($inputbox).value;
if ($inputbox == "meta_keywords") {
if ($input != "") {
$input += ",";
}
}
$input += " " + $keyword;
document.getElementById($inputbox).value = $input;
change_metatags();
} catch (e) {
alert($meta_error);
}
}
function change_metatags() {
if ($inputbox == "meta_keywords") {
$keywords = document.getElementById($inputbox).value;
get_keywords();
} else {
$description = document.getElementById($inputbox).value;
get_description();
}
switchstart();
}
function get_inputbox($input) {
if ($input == "meta_keywords") {
document.getElementById($input).value = $keywords;
} else {
document.getElementById($input).value = $description;
}
$inputbox = $input;
}
function get_selected_option($selectfield) {
var $buffer;
for (i = 0; i < document.getElementById($selectfield).length; i++) {
if (document.getElementById($selectfield).options[i].value == document.getElementById($selectfield).value) {
$buffer = document.getElementById($selectfield).options[i].text;
break;
}
}
return $buffer;
}

View File

@ -0,0 +1,186 @@
/**
* @package JEM
* @copyright (C) 2013-2024 joomlaeventmanager.net
* @copyright (C) 2005-2009 Christoph Lukes
* @license https://www.gnu.org/licenses/gpl-3.0 GNU/GPL
*/
function changeoldMode() {
if (document.getElementById) {
mode = window.document.adminForm.oldevent.selectedIndex;
switch (mode) {
case 0:
document.getElementById('old').style.display = 'none';
break;
default:
document.getElementById('old').style.display = '';
}
}
}
function changeintegrateMode() {
if (document.getElementById) {
mode = window.document.adminForm.event_comunsolution.selectedIndex;
switch (mode) {
case 0:
document.getElementById('integrate').style.display = 'none';
break;
default:
document.getElementById('integrate').style.display = '';
}
}
}
function changegdMode(mode) {
if (document.getElementById) {
switch (mode) {
case 0:
document.getElementById('gd1').style.display = 'none';
break;
default:
document.getElementById('gd1').style.display = '';
}
}
}
function changemapMode() {
if (document.getElementById) {
mode = window.document.adminForm.showmapserv.selectedIndex;
switch (mode) {
case 0:
document.getElementById('tld').style.display = 'none';
document.getElementById('lg').style.display = 'none';
break;
case 1:
document.getElementById('tld').style.display = '';
document.getElementById('lg').style.display = '';
break;
case 2:
document.getElementById('tld').style.display = '';
document.getElementById('lg').style.display = '';
break;
default:
document.getElementById('tld').style.display = '';
document.getElementById('lg').style.display = '';
}
}
}
function changetitleMode(mode) {
if (document.getElementById) {
switch (mode) {
case 0:
document.getElementById('title1').style.display = 'none';
document.adminForm.titlewidth.value = '';
break;
default:
document.getElementById('title1').style.display = '';
}
}
}
function changelocateMode(mode) {
if (document.getElementById) {
switch (mode) {
case 0:
document.getElementById('locate1').style.display = 'none';
document.adminForm.locationwidth.value = '';
document.getElementById('locate2').style.display = 'none';
break;
default:
document.getElementById('locate1').style.display = '';
document.getElementById('locate2').style.display = '';
}
}
}
function changecityMode(mode) {
if (document.getElementById) {
switch (mode) {
case 0:
document.getElementById('city1').style.display = 'none';
document.adminForm.citywidth.value = '';
break;
default:
document.getElementById('city1').style.display = '';
}
}
}
function changestateMode(mode) {
if (document.getElementById) {
switch (mode) {
case 0:
document.getElementById('state1').style.display = 'none';
document.adminForm.statewidth.value = '';
break;
default:
document.getElementById('state1').style.display = '';
}
}
}
function changecatMode(mode) {
if (document.getElementById) {
switch (mode) {
case 0:
document.getElementById('cat1').style.display = 'none';
document.adminForm.catfrowidth.value = '';
document.getElementById('cat2').style.display = 'none';
break;
default:
document.getElementById('cat1').style.display = '';
document.getElementById('cat2').style.display = '';
}
}
}
function changeatteMode(mode) {
if (document.getElementById) {
switch (mode) {
case 0:
document.getElementById('atte1').style.display = 'none';
document.adminForm.attewidth.value = '';
document.getElementById('atte2').style.display = 'none';
break;
default:
document.getElementById('atte1').style.display = '';
document.getElementById('atte2').style.display = '';
}
}
}
function changeregMode() {
if (document.getElementById) {
mode = window.document.adminForm.showfroregistra.selectedIndex;
switch (mode) {
case 0:
document.getElementById('froreg').style.display = 'none';
break;
default:
document.getElementById('froreg').style.display = '';
}
}
}
document.switcher = null;
if (MooTools.version == '1.11') {
window.onDomReady(function () {
toggler = $('submenu');
element = $('elconfig-document');
if (element) {
document.switcher = new JSwitcher(toggler, element, {cookieName: toggler.getAttribute('class')});
}
});
} else {
// window.addEvent('domready', function() {
jQuery(document).ready(function ($) {
toggler = $('submenu');
element = $('elconfig-document');
if (element) {
document.switcher = new JSwitcher(toggler, element, {cookieName: toggler.getAttribute('class')});
}
});
}

View File

@ -0,0 +1,58 @@
/**
* @package JEM
* @copyright (C) 2013-2015 joomlaeventmanager.net
* @copyright (C) 2005-2009 Christoph Lukes
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
*/
/**
* JavaScript behavior to allow selected collapse to be remained after save or page reload
* keeping state in localstorage
*
* @todo use id's for sliders + finetune
*/
jQuery(function() {
var loadcollapse = function() {
var $ = jQuery.noConflict();
jQuery(document).find('a[data-toggle="collapse"]').on('click', function(e) {
// Store the selected collapse href in localstorage
window.localStorage.setItem('collapse-href', $(e.target).attr('href'));
});
var activatecollapse = function(href) {
var $el = $('a[data-toggle="collapse"]a[href*=' + href + ']');
var $el2 = $el.parent().parent().parent();
var $el3 = $el2.find(".accordion-body");
$el3.collapse('show');
};
var hascollapse = function(href){
return $('a[data-toggle="collapse"]a[href*=' + href + ']').length;
};
if (localStorage.getItem('collapse-href')) {
// When moving from collapse area to a different view
if(!hascollapse(localStorage.getItem('collapse-href'))){
localStorage.removeItem('collapse-href');
return true;
}
// Clean default collapse
$('a[data-toggle="collapse"]').parent().removeClass('in');
var collapsehref = localStorage.getItem('collapse-href');
// Add active attribute for selected collapse indicated by url
activatecollapse(collapsehref);
// Check whether internal collapse is selected (in format <collapsename>-<id>)
var seperatorIndex = collapsehref.indexOf('-');
if (seperatorIndex !== -1) {
var singular = collapsehref.substring(0, seperatorIndex);
var plural = singular + "s";
activatecollapse(plural);
}
}
};
setTimeout(loadcollapse, 100);
});

View File

@ -0,0 +1,23 @@
/**
* @package JEM
* @copyright (C) 2013-2024 joomlaeventmanager.net
* @copyright (C) 2005-2009 Christoph Lukes
* @license https://www.gnu.org/licenses/gpl-3.0 GNU/GPL
*/
function unlimited_starter() {
document.getElementById('adminForm').onsubmit = submit_unlimited;
}
function include_unlimited($unlimited_name) {
document.getElementById("recurrence_limit_date").value = $unlimited_name; // write the word "unlimited" in the textbox
return false;
}
function submit_unlimited() {
var $value = document.getElementById("recurrence_limit_date").value;
var $date_array = $value.split("-");
if ($date_array.length < 3) {
document.getElementById("recurrence_limit_date").value = "0000-00-00";
}
}