Inital
This commit is contained in:
Vendored
+4
File diff suppressed because one or more lines are too long
@@ -0,0 +1,17 @@
|
||||
input[type="number"],input[type="date"] {
|
||||
-moz-appearance: none;
|
||||
-webkit-appearance: none;
|
||||
-o-appearance: none;
|
||||
-ms-appearance: none;
|
||||
appearance: none;
|
||||
background: #f8f8f8;
|
||||
border-radius: 6px;
|
||||
border: solid 1px #e5e5e5;
|
||||
color: inherit;
|
||||
display: block;
|
||||
outline: 0;
|
||||
padding: 0 1em;
|
||||
text-decoration: none;
|
||||
width: 100%;
|
||||
height: 3em;
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 5.4 KiB |
@@ -0,0 +1,288 @@
|
||||
/* ############## Layoutvorgaben fuer Praxis Creutzburg ##################### */
|
||||
|
||||
#fussbereich {
|
||||
position:absolute;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* ############################ global ############################ */
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
|
||||
/* ############################## Content ############################ */
|
||||
|
||||
body {
|
||||
background: #fff url(gif/hg2.gif) center repeat-y;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
a:link, a:visited, a:active {
|
||||
color: #4D8201;
|
||||
text-decoration:underline;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #000;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
a:link.imp, a:visited.imp, a:active.imp {
|
||||
color: #868686;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
a:hover.imp {
|
||||
color: #cccccc;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
|
||||
/* ###################### Menue ########################## */
|
||||
|
||||
#menuetab {
|
||||
width: 720px;
|
||||
height: 90px;
|
||||
border: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
ul#me {
|
||||
list-style-type : none;
|
||||
margin-top : 20px;
|
||||
padding : 0;
|
||||
}
|
||||
|
||||
li#ww {
|
||||
width : 140px;
|
||||
margin : 2px 2px 0 1px;
|
||||
float :left;
|
||||
text-align : center;
|
||||
}
|
||||
|
||||
li#nn {
|
||||
width : 140px;
|
||||
margin : 2px 2px 0 1px;
|
||||
float :left;
|
||||
text-align : center;
|
||||
}
|
||||
|
||||
|
||||
/* ###################### Menue OHNE Grafikbutton ########################## */
|
||||
|
||||
li#ww a {
|
||||
text-decoration : none;
|
||||
color : #000;
|
||||
font-size: 11px;
|
||||
display : block;
|
||||
width : 100%;
|
||||
background-color : #fff;
|
||||
padding : 2px 0;
|
||||
border : 1px solid #222;
|
||||
}
|
||||
|
||||
li#ww a:hover {
|
||||
background-color : #ffffcc;
|
||||
}
|
||||
|
||||
|
||||
li#nn a {
|
||||
text-decoration : none;
|
||||
color : #000;
|
||||
font-size: 11px;
|
||||
display : block;
|
||||
width : 100%;
|
||||
background-color : #ffffcc;
|
||||
padding : 2px 0;
|
||||
border : 1px solid #222;
|
||||
}
|
||||
|
||||
li#nn a:hover {
|
||||
background-color : #fff;
|
||||
color : #000;
|
||||
}
|
||||
|
||||
|
||||
/* ###################### Tabellen, Container, Textbloecke, Fonts, ...################## */
|
||||
|
||||
body,td {
|
||||
font-family:arial, sans serif;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.klein {
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.fett {
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
.schraeg {
|
||||
font-style:italic;
|
||||
}
|
||||
|
||||
.ueber1 {
|
||||
font-size:16px;
|
||||
color:#cc0000;
|
||||
}
|
||||
|
||||
.ueber2 {
|
||||
font-size:14px;
|
||||
}
|
||||
|
||||
|
||||
#impres {
|
||||
width: 728px;
|
||||
height: 12px;
|
||||
border: 0;
|
||||
font-size: 9px;
|
||||
letter-spacing: 1px;
|
||||
text-align: right;
|
||||
margin: 0 0 10px 0;
|
||||
}
|
||||
|
||||
|
||||
#tablogo {
|
||||
width: 724px;
|
||||
border: 0;
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
#kopf {
|
||||
width: 300px;
|
||||
border: 0;
|
||||
margin: 0 0 0 40px;
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#doppel {
|
||||
width: 660px;
|
||||
border: 0;
|
||||
margin: 25px 0px 15px 0px;
|
||||
}
|
||||
|
||||
#einzel {
|
||||
width: 660px;
|
||||
border: 0;
|
||||
margin: 20px 0 10px 0;
|
||||
}
|
||||
|
||||
#einzelimp {
|
||||
width: 540px;
|
||||
border: 0;
|
||||
margin: 30px 0 10px 0;
|
||||
}
|
||||
|
||||
.zellea {
|
||||
width: 310px;
|
||||
border: 1px solid #dcdcdc;
|
||||
padding: 10px 10px 10px 10px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.zelleb {
|
||||
border: 1px solid #dcdcdc;
|
||||
padding: 10px 10px 10px 10px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
#unten {
|
||||
padding: 50px 0px 0px 0px;
|
||||
width: 650px;
|
||||
height: 10px;
|
||||
border: 0;
|
||||
font-size: 9px;
|
||||
color: #ccc;
|
||||
}
|
||||
|
||||
|
||||
/* ########################## Farben #########################*/
|
||||
|
||||
.textrot {
|
||||
color: #cc0000;
|
||||
}
|
||||
|
||||
|
||||
/* ########################## Formulare #########################*/
|
||||
|
||||
textarea {
|
||||
background: transparent;
|
||||
border: 1px solid #000;
|
||||
margin:0 0 12px 0;
|
||||
}
|
||||
|
||||
input {
|
||||
background: transparent;
|
||||
border: 1px solid #000;
|
||||
}
|
||||
|
||||
|
||||
/* ########################## Listenmodule #########################*/
|
||||
|
||||
/*ul {
|
||||
margin: 0 0 0 20px;
|
||||
padding: 0 0 0 0;
|
||||
}
|
||||
|
||||
li {
|
||||
margin: 0 0 0 10px;
|
||||
list-style-type: circle;
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
/* ########################## Terminmodul #########################*/
|
||||
|
||||
.date {
|
||||
width: 40px;
|
||||
height: 30px;
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.time {
|
||||
width: 40px;
|
||||
height: 30px;
|
||||
font-size: 11px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.light {
|
||||
width: 40px;
|
||||
height: 30px;
|
||||
background-color: #eee;
|
||||
}
|
||||
|
||||
.dark {
|
||||
width: 40px;
|
||||
height: 30px;
|
||||
background-color: #ccc;
|
||||
}
|
||||
|
||||
.free {
|
||||
width: 40px;
|
||||
height: 30px;
|
||||
background-image: url(gif/bu-termin-yes.gif);
|
||||
}
|
||||
|
||||
.reserved {
|
||||
width: 40px;
|
||||
height: 30px;
|
||||
background-image: url(gif/bu-termin-no.gif);
|
||||
}
|
||||
|
||||
.blocked {
|
||||
width: 40px;
|
||||
height: 30px;
|
||||
background-image: url(gif/no-date.gif);
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
.responsive-calendar .controls {
|
||||
text-align: center;
|
||||
}
|
||||
.responsive-calendar .controls a {
|
||||
cursor: pointer;
|
||||
}
|
||||
.responsive-calendar .controls h4 {
|
||||
display: inline;
|
||||
}
|
||||
.responsive-calendar .day-headers,
|
||||
.responsive-calendar .days {
|
||||
font-size: 0;
|
||||
}
|
||||
.responsive-calendar .day {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
font-size: 14px;
|
||||
width: 14.285714285714286%;
|
||||
text-align: center;
|
||||
}
|
||||
.responsive-calendar .day a {
|
||||
color: #000000;
|
||||
display: block;
|
||||
cursor: pointer;
|
||||
padding: 20% 0 20% 0;
|
||||
}
|
||||
.responsive-calendar .day a:hover {
|
||||
background-color: #eee;
|
||||
text-decoration: none;
|
||||
}
|
||||
.responsive-calendar .day.header {
|
||||
border-bottom: 1px gray solid;
|
||||
}
|
||||
.responsive-calendar .day.active a {
|
||||
background-color: #1d86c8;
|
||||
color: #ffffff;
|
||||
}
|
||||
.responsive-calendar .day.active a:hover {
|
||||
background-color: #36a0e2;
|
||||
}
|
||||
.responsive-calendar .day.active .not-current {
|
||||
background-color: #8fcaef;
|
||||
color: #ffffff;
|
||||
}
|
||||
.responsive-calendar .day.active .not-current:hover {
|
||||
background-color: #bcdff5;
|
||||
}
|
||||
.responsive-calendar .day.not-current a {
|
||||
color: #ddd;
|
||||
}
|
||||
.responsive-calendar .day .badge {
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
right: 2px;
|
||||
z-index: 1;
|
||||
}
|
||||
@@ -0,0 +1,254 @@
|
||||
/* Resets (http://meyerweb.com/eric/tools/css/reset/ | v2.0 | 20110126 | License: none (public domain)) */
|
||||
|
||||
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block;}body{line-height:1;}ol,ul{list-style:none;}blockquote,q{quotes:none;}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none;}table{border-collapse:collapse;border-spacing:0;}body{-webkit-text-size-adjust:none}
|
||||
|
||||
/* Box Model */
|
||||
|
||||
*, *:before, *:after {
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/* Container */
|
||||
|
||||
body {
|
||||
/* min-width: (containers) */
|
||||
min-width: 60em;
|
||||
}
|
||||
|
||||
.container {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
|
||||
/* width: (containers) */
|
||||
width: 60em;
|
||||
}
|
||||
|
||||
/* Modifiers */
|
||||
|
||||
/* 125% */
|
||||
.container.\31 25\25 {
|
||||
width: 100%;
|
||||
|
||||
/* max-width: (containers * 1.25) */
|
||||
max-width: 75em;
|
||||
|
||||
/* min-width: (containers) */
|
||||
min-width: 60em;
|
||||
}
|
||||
|
||||
/* 75% */
|
||||
.container.\37 5\25 {
|
||||
|
||||
/* width: (containers * 0.75) */
|
||||
width: 45em;
|
||||
|
||||
}
|
||||
|
||||
/* 50% */
|
||||
.container.\35 0\25 {
|
||||
|
||||
/* width: (containers * 0.50) */
|
||||
width: 30em;
|
||||
|
||||
}
|
||||
|
||||
/* 25% */
|
||||
.container.\32 5\25 {
|
||||
|
||||
/* width: (containers * 0.25) */
|
||||
width: 15em;
|
||||
|
||||
}
|
||||
|
||||
/* Grid */
|
||||
|
||||
.row {
|
||||
border-bottom: solid 1px transparent;
|
||||
}
|
||||
|
||||
.row > * {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.row:after, .row:before {
|
||||
content: '';
|
||||
display: block;
|
||||
clear: both;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
.row.uniform > * > :first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.row.uniform > * > :last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/* Gutters */
|
||||
|
||||
/* Normal */
|
||||
|
||||
.row > * {
|
||||
/* padding: (gutters.horizontal) 0 0 (gutters.vertical) */
|
||||
padding: 0 0 0 2em;
|
||||
}
|
||||
|
||||
.row {
|
||||
/* margin: -(gutters.horizontal) 0 0 -(gutters.vertical) */
|
||||
margin: 0 0 0 -2em;
|
||||
}
|
||||
|
||||
.row.uniform > * {
|
||||
/* padding: (gutters.vertical) 0 0 (gutters.vertical) */
|
||||
padding: 2em 0 0 2em;
|
||||
}
|
||||
|
||||
.row.uniform {
|
||||
/* margin: -(gutters.vertical) 0 0 -(gutters.vertical) */
|
||||
margin: -2em 0 0 -2em;
|
||||
}
|
||||
|
||||
/* 200% */
|
||||
|
||||
.row.\32 00\25 > * {
|
||||
/* padding: (gutters.horizontal) 0 0 (gutters.vertical) */
|
||||
padding: 0 0 0 4em;
|
||||
}
|
||||
|
||||
.row.\32 00\25 {
|
||||
/* margin: -(gutters.horizontal) 0 0 -(gutters.vertical) */
|
||||
margin: 0 0 0 -4em;
|
||||
}
|
||||
|
||||
.row.uniform.\32 00\25 > * {
|
||||
/* padding: (gutters.vertical) 0 0 (gutters.vertical) */
|
||||
padding: 4em 0 0 4em;
|
||||
}
|
||||
|
||||
.row.uniform.\32 00\25 {
|
||||
/* margin: -(gutters.vertical) 0 0 -(gutters.vertical) */
|
||||
margin: -4em 0 0 -4em;
|
||||
}
|
||||
|
||||
/* 150% */
|
||||
|
||||
.row.\31 50\25 > * {
|
||||
/* padding: (gutters.horizontal) 0 0 (gutters.vertical) */
|
||||
padding: 0 0 0 1.5em;
|
||||
}
|
||||
|
||||
.row.\31 50\25 {
|
||||
/* margin: -(gutters.horizontal) 0 0 -(gutters.vertical) */
|
||||
margin: 0 0 0 -1.5em;
|
||||
}
|
||||
|
||||
.row.uniform.\31 50\25 > * {
|
||||
/* padding: (gutters.vertical) 0 0 (gutters.vertical) */
|
||||
padding: 1.5em 0 0 1.5em;
|
||||
}
|
||||
|
||||
.row.uniform.\31 50\25 {
|
||||
/* margin: -(gutters.vertical) 0 0 -(gutters.vertical) */
|
||||
margin: -1.5em 0 0 -1.5em;
|
||||
}
|
||||
|
||||
/* 50% */
|
||||
|
||||
.row.\35 0\25 > * {
|
||||
/* padding: (gutters.horizontal) 0 0 (gutters.vertical) */
|
||||
padding: 0 0 0 1em;
|
||||
}
|
||||
|
||||
.row.\35 0\25 {
|
||||
/* margin: -(gutters.horizontal) 0 0 -(gutters.vertical) */
|
||||
margin: 0 0 0 -1em;
|
||||
}
|
||||
|
||||
.row.uniform.\35 0\25 > * {
|
||||
/* padding: (gutters.vertical) 0 0 (gutters.vertical) */
|
||||
padding: 1em 0 0 1em;
|
||||
}
|
||||
|
||||
.row.uniform.\35 0\25 {
|
||||
/* margin: -(gutters.vertical) 0 0 -(gutters.vertical) */
|
||||
margin: -1em 0 0 -1em;
|
||||
}
|
||||
|
||||
/* 25% */
|
||||
|
||||
.row.\32 5\25 > * {
|
||||
/* padding: (gutters.horizontal) 0 0 (gutters.vertical) */
|
||||
padding: 0 0 0 0.5em;
|
||||
}
|
||||
|
||||
.row.\32 5\25 {
|
||||
/* margin: -(gutters.horizontal) 0 0 -(gutters.vertical) */
|
||||
margin: 0 0 0 -0.5em;
|
||||
}
|
||||
|
||||
.row.uniform.\32 5\25 > * {
|
||||
/* padding: (gutters.vertical) 0 0 (gutters.vertical) */
|
||||
padding: 0.5em 0 0 0.5em;
|
||||
}
|
||||
|
||||
.row.uniform.\32 5\25 {
|
||||
/* margin: -(gutters.vertical) 0 0 -(gutters.vertical) */
|
||||
margin: -0.5em 0 0 -0.5em;
|
||||
}
|
||||
|
||||
/* 0% */
|
||||
|
||||
.row.\30 \25 > * {
|
||||
/* padding: (gutters.horizontal) 0 0 (gutters.vertical) */
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.row.\30 \25 {
|
||||
/* margin: -(gutters.horizontal) 0 0 -(gutters.vertical) */
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* Cells */
|
||||
|
||||
.\31 2u, .\31 2u\24, .\31 2u\28 1\29, .\31 2u\24\28 1\29 { width: 100%; clear: none; }
|
||||
.\31 1u, .\31 1u\24, .\31 1u\28 1\29, .\31 1u\24\28 1\29 { width: 91.6666666667%; clear: none; }
|
||||
.\31 0u, .\31 0u\24, .\31 0u\28 1\29, .\31 0u\24\28 1\29 { width: 83.3333333333%; clear: none; }
|
||||
.\39 u, .\39 u\24, .\39 u\28 1\29, .\39 u\24\28 1\29 { width: 75%; clear: none; }
|
||||
.\38 u, .\38 u\24, .\38 u\28 1\29, .\38 u\24\28 1\29 { width: 66.6666666667%; clear: none; }
|
||||
.\37 u, .\37 u\24, .\37 u\28 1\29, .\37 u\24\28 1\29 { width: 58.3333333333%; clear: none; }
|
||||
.\36 u, .\36 u\24, .\36 u\28 1\29, .\36 u\24\28 1\29 { width: 50%; clear: none; }
|
||||
.\35 u, .\35 u\24, .\35 u\28 1\29, .\35 u\24\28 1\29 { width: 41.6666666667%; clear: none; }
|
||||
.\34 u, .\34 u\24, .\34 u\28 1\29, .\34 u\24\28 1\29 { width: 33.3333333333%; clear: none; }
|
||||
.\33 u, .\33 u\24, .\33 u\28 1\29, .\33 u\24\28 1\29 { width: 25%; clear: none; }
|
||||
.\32 u, .\32 u\24, .\32 u\28 1\29, .\32 u\24\28 1\29 { width: 16.6666666667%; clear: none; }
|
||||
.\31 u, .\31 u\24, .\31 u\28 1\29, .\31 u\24\28 1\29 { width: 8.3333333333%; clear: none; }
|
||||
|
||||
.\31 2u\24 + *, .\31 2u\24\28 1\29 + *,
|
||||
.\31 1u\24 + *, .\31 1u\24\28 1\29 + *,
|
||||
.\31 0u\24 + *, .\31 0u\24\28 1\29 + *,
|
||||
.\39 u\24 + *, .\39 u\24\28 1\29 + *,
|
||||
.\38 u\24 + *, .\38 u\24\28 1\29 + *,
|
||||
.\37 u\24 + *, .\37 u\24\28 1\29 + *,
|
||||
.\36 u\24 + *, .\36 u\24\28 1\29 + *,
|
||||
.\35 u\24 + *, .\35 u\24\28 1\29 + *,
|
||||
.\34 u\24 + *, .\34 u\24\28 1\29 + *,
|
||||
.\33 u\24 + *, .\33 u\24\28 1\29 + *,
|
||||
.\32 u\24 + *, .\32 u\24\28 1\29 + *,
|
||||
.\31 u\24 + *, .\31 u\24\28 1\29 + * {
|
||||
clear: left;
|
||||
}
|
||||
|
||||
.\-11u { margin-left: 91.6666666667% }
|
||||
.\-10u { margin-left: 83.3333333333% }
|
||||
.\-9u { margin-left: 75% }
|
||||
.\-8u { margin-left: 66.6666666667% }
|
||||
.\-7u { margin-left: 58.3333333333% }
|
||||
.\-6u { margin-left: 50% }
|
||||
.\-5u { margin-left: 41.6666666667% }
|
||||
.\-4u { margin-left: 33.3333333333% }
|
||||
.\-3u { margin-left: 25% }
|
||||
.\-2u { margin-left: 16.6666666667% }
|
||||
.\-1u { margin-left: 8.3333333333% }
|
||||
@@ -0,0 +1,143 @@
|
||||
/*
|
||||
Alpha by HTML5 UP
|
||||
html5up.net | @n33co
|
||||
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
|
||||
*/
|
||||
|
||||
/* Basic */
|
||||
|
||||
body, input, select, textarea {
|
||||
font-size: 11pt;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.75em;
|
||||
line-height: 1.35em;
|
||||
letter-spacing: -0.025em;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
/* Section/Article */
|
||||
|
||||
header.major {
|
||||
padding: 1em;
|
||||
}
|
||||
|
||||
header.major h2, header.major p {
|
||||
padding-left: 0.5em;
|
||||
padding-right: 0.5em;
|
||||
}
|
||||
|
||||
/* Box */
|
||||
|
||||
.box {
|
||||
margin: 1em;
|
||||
overflow-x: hidden;
|
||||
padding: 2em 2em !important;
|
||||
}
|
||||
|
||||
.box.features .features-row {
|
||||
border-top: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.box.features .features-row section {
|
||||
border: 0;
|
||||
border-top: solid 1px #e5e5e5 !important;
|
||||
float: none;
|
||||
margin: 2em 0 0 0 !important;
|
||||
padding: 2em 0 0 0 !important;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.box.features .features-row:first-child section:first-child {
|
||||
border-top: 0 !important;
|
||||
margin-top: 0 !important;
|
||||
padding-top: 0 !important;
|
||||
}
|
||||
|
||||
.box .image.featured {
|
||||
margin-left: -2em;
|
||||
width: calc(100% + 4em);
|
||||
}
|
||||
|
||||
.box .image.featured:first-child {
|
||||
margin-bottom: 2em;
|
||||
margin-top: -2em;
|
||||
}
|
||||
|
||||
.box .image.featured:last-child {
|
||||
margin-bottom: -2em;
|
||||
margin-top: 2em;
|
||||
}
|
||||
|
||||
/* Banner */
|
||||
|
||||
#banner {
|
||||
padding: 4em 0;
|
||||
}
|
||||
|
||||
#banner h2 {
|
||||
font-size: 2.25em;
|
||||
}
|
||||
|
||||
#banner p {
|
||||
font-size: 1.25em;
|
||||
}
|
||||
/* Banner2 */
|
||||
|
||||
#banner2 {
|
||||
padding: 4em 0;
|
||||
}
|
||||
|
||||
#banner2 h2 {
|
||||
font-size: 2.25em;
|
||||
}
|
||||
|
||||
#banner2 p {
|
||||
font-size: 1.25em;
|
||||
}
|
||||
/* Main */
|
||||
|
||||
#main {
|
||||
padding: 4em 0 0 0;
|
||||
}
|
||||
|
||||
#main > header {
|
||||
margin: 0 2em 1.5em 2em;
|
||||
}
|
||||
|
||||
#main > header h2 {
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
#main > header p {
|
||||
font-size: 1em;
|
||||
padding-bottom: 1em;
|
||||
}
|
||||
|
||||
body.landing #main {
|
||||
padding: 0;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
/* Footer */
|
||||
|
||||
#footer {
|
||||
padding: 4em 0;
|
||||
}
|
||||
|
||||
#footer .copyright li {
|
||||
border-left: 0;
|
||||
display: block;
|
||||
line-height: 2em;
|
||||
margin-left: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
/*
|
||||
Alpha by HTML5 UP
|
||||
html5up.net | @n33co
|
||||
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
|
||||
*/
|
||||
|
||||
/* Basic */
|
||||
|
||||
html, body {
|
||||
min-width: 320px;
|
||||
}
|
||||
|
||||
body, input, select, textarea {
|
||||
font-size: 11pt;
|
||||
}
|
||||
|
||||
/* Section/Article */
|
||||
|
||||
header.major {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/* List */
|
||||
|
||||
ul.actions {
|
||||
margin: 0 0 2em 0;
|
||||
}
|
||||
|
||||
ul.actions li {
|
||||
display: block;
|
||||
padding: 1em 0 0 0;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
ul.actions li:first-child {
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
ul.actions li > * {
|
||||
width: 100%;
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
ul.actions li > *.icon:before {
|
||||
margin-left: -2em;
|
||||
}
|
||||
|
||||
ul.actions.small li {
|
||||
padding: 0.5em 0 0 0;
|
||||
}
|
||||
|
||||
ul.actions.small li:first-child {
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
/* Box */
|
||||
|
||||
.box {
|
||||
border-radius: 0;
|
||||
box-shadow: none;
|
||||
margin: 1em 0 0 0;
|
||||
padding: 3em 1em !important;
|
||||
}
|
||||
|
||||
.box.features .features-row section {
|
||||
margin: 3em 0 0 0 !important;
|
||||
padding: 3em 0 0 0 !important;
|
||||
}
|
||||
|
||||
.box .image.featured {
|
||||
border-radius: 0;
|
||||
margin-left: -1em;
|
||||
width: calc(100% + 2em);
|
||||
}
|
||||
|
||||
.box .image.featured img {
|
||||
border-radius: 0 !important;
|
||||
}
|
||||
|
||||
.box .image.featured:first-child {
|
||||
margin-bottom: 3em;
|
||||
margin-top: -3em;
|
||||
}
|
||||
|
||||
.box .image.featured:last-child {
|
||||
margin-bottom: -3em;
|
||||
margin-top: 3em;
|
||||
}
|
||||
|
||||
/* Banner */
|
||||
|
||||
#banner {
|
||||
padding: 5em 1em 4em 1em;
|
||||
}
|
||||
|
||||
/* Banner2 */
|
||||
|
||||
#banner2 {
|
||||
padding: 5em 1em 4em 1em;
|
||||
}
|
||||
|
||||
/* Main */
|
||||
|
||||
#main > .box:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
/* CTA */
|
||||
|
||||
#cta {
|
||||
padding: 2.5em 1em 3em 1em;
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
/*
|
||||
Alpha by HTML5 UP
|
||||
html5up.net | @n33co
|
||||
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
|
||||
*/
|
||||
|
||||
/* Basic */
|
||||
|
||||
body, input, select, textarea {
|
||||
font-size: 11pt;
|
||||
}
|
||||
@@ -0,0 +1,147 @@
|
||||
/*
|
||||
Alpha by HTML5 UP
|
||||
html5up.net | @n33co
|
||||
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
|
||||
*/
|
||||
|
||||
/* Basic */
|
||||
|
||||
body, input, select, textarea {
|
||||
font-size: 11pt;
|
||||
}
|
||||
|
||||
h2 br, h3 br, h4 br, h5 br, h6 br {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Section/Article */
|
||||
|
||||
header br {
|
||||
display: none;
|
||||
}
|
||||
|
||||
header.major {
|
||||
padding: 0 4em;
|
||||
}
|
||||
|
||||
/* Box */
|
||||
|
||||
.box {
|
||||
padding: 3em 2em;
|
||||
}
|
||||
|
||||
.box.features > section {
|
||||
padding: 3em 2em;
|
||||
}
|
||||
|
||||
.box .image.featured {
|
||||
margin-left: -2em;
|
||||
width: calc(100% + 4em);
|
||||
}
|
||||
|
||||
.box .image.featured:first-child {
|
||||
margin-bottom: 3em;
|
||||
margin-top: -3em;
|
||||
}
|
||||
|
||||
.box .image.featured:last-child {
|
||||
margin-bottom: -3em;
|
||||
margin-top: 3em;
|
||||
}
|
||||
|
||||
/* Header */
|
||||
|
||||
#skel-layers-wrapper {
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
#header {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Banner */
|
||||
|
||||
/* Layers */
|
||||
|
||||
#navButton .toggle {
|
||||
text-decoration: none;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#navButton .toggle:before {
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
font-family: FontAwesome;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
text-transform: none !important;
|
||||
}
|
||||
|
||||
#navButton .toggle:before {
|
||||
background: rgba(192, 192, 192, 0.75);
|
||||
border-radius: 6px;
|
||||
color: #fff;
|
||||
content: '\f0c9';
|
||||
display: block;
|
||||
font-size: 16px;
|
||||
height: 2.25em;
|
||||
left: 0.5em;
|
||||
line-height: 2.25em;
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
top: 0.5em;
|
||||
width: 3.5em;
|
||||
}
|
||||
|
||||
#navPanel {
|
||||
background: #2b2b2b;
|
||||
color: #bbb;
|
||||
}
|
||||
|
||||
#navPanel .link {
|
||||
border-bottom: 0;
|
||||
border-top: solid 1px rgba(255, 255, 255, 0.05);
|
||||
color: #bbb;
|
||||
display: block;
|
||||
height: 44px;
|
||||
line-height: 44px;
|
||||
padding: 0 1em 0 1em;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#navPanel .link:first-child {
|
||||
border-top: 0;
|
||||
}
|
||||
|
||||
#navPanel .link.depth-0 {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
#navPanel .link .indent-1 {
|
||||
display: inline-block;
|
||||
width: 1em;
|
||||
}
|
||||
|
||||
#navPanel .link .indent-2 {
|
||||
display: inline-block;
|
||||
width: 2em;
|
||||
}
|
||||
|
||||
#navPanel .link .indent-3 {
|
||||
display: inline-block;
|
||||
width: 3em;
|
||||
}
|
||||
|
||||
#navPanel .link .indent-4 {
|
||||
display: inline-block;
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
#navPanel .link .indent-5 {
|
||||
display: inline-block;
|
||||
width: 5em;
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
Alpha by HTML5 UP
|
||||
html5up.net | @n33co
|
||||
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
|
||||
*/
|
||||
|
||||
/* Basic */
|
||||
|
||||
body, input, select, textarea {
|
||||
font-size: 11pt;
|
||||
}
|
||||
|
||||
/* Header */
|
||||
|
||||
.dropotron.level-0 {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
/* Banner */
|
||||
|
||||
#banner {
|
||||
background-attachment: scroll;
|
||||
}
|
||||
|
||||
#banner h2 {
|
||||
font-size: 3.5em;
|
||||
}
|
||||
/* Banner2 */
|
||||
|
||||
#banner2 {
|
||||
background-attachment: scroll;
|
||||
}
|
||||
|
||||
#banner2 h2 {
|
||||
font-size: 3.5em;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
Alpha by HTML5 UP
|
||||
html5up.net | @n33co
|
||||
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
|
||||
*/
|
||||
|
||||
/* Basic */
|
||||
|
||||
body, input, select, textarea {
|
||||
font-size: 13pt;
|
||||
}
|
||||
|
||||
/* Banner */
|
||||
|
||||
#banner {
|
||||
padding: 10em 0 18em 0;
|
||||
}/* Banner */
|
||||
|
||||
#banner2 {
|
||||
padding: 10em 0 18em 0;
|
||||
}
|
||||
+1515
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,22 @@
|
||||
#marquee-cont {
|
||||
background: #ff6363;
|
||||
margin-top:10px;
|
||||
}
|
||||
#marquee-cont marquee {
|
||||
margin-top: 5px;
|
||||
background: #ff6363;
|
||||
}
|
||||
#marquee-news {
|
||||
|
||||
background: #1174A8;
|
||||
padding: 5px;
|
||||
}
|
||||
#ticker-title{
|
||||
border:none;
|
||||
padding:5px 20px;
|
||||
background:#1174A8;
|
||||
color:white;
|
||||
}
|
||||
#ticker-title:focus{
|
||||
outline:none;
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,566 @@
|
||||
/*
|
||||
* File: iframeReizer.js
|
||||
* Desc: Force iframes to size to content.
|
||||
* Requires: iframeResizer.contentWindow.js to be loaded into the target frame.
|
||||
* Author: David J. Bradshaw - dave@bradshaw.net
|
||||
* Contributor: Jure Mav - jure.mav@gmail.com
|
||||
*/
|
||||
|
||||
;(function() {
|
||||
'use strict';
|
||||
|
||||
var
|
||||
count = 0,
|
||||
firstRun = true,
|
||||
msgHeader = 'message',
|
||||
msgHeaderLen = msgHeader.length,
|
||||
msgId = '[iFrameSizer]', //Must match iframe msg ID
|
||||
msgIdLen = msgId.length,
|
||||
page = '', //:'+location.href, //Uncoment to debug nested iFrames
|
||||
pagePosition = null,
|
||||
requestAnimationFrame = window.requestAnimationFrame,
|
||||
resetRequiredMethods = {max:1,scroll:1,bodyScroll:1,documentElementScroll:1},
|
||||
settings = {},
|
||||
|
||||
defaults = {
|
||||
autoResize : true,
|
||||
bodyBackground : null,
|
||||
bodyMargin : null,
|
||||
bodyMarginV1 : 8,
|
||||
bodyPadding : null,
|
||||
checkOrigin : true,
|
||||
enablePublicMethods : false,
|
||||
heightCalculationMethod : 'offset',
|
||||
interval : 32,
|
||||
log : false,
|
||||
maxHeight : Infinity,
|
||||
maxWidth : Infinity,
|
||||
minHeight : 0,
|
||||
minWidth : 0,
|
||||
scrolling : false,
|
||||
sizeHeight : true,
|
||||
sizeWidth : false,
|
||||
tolerance : 0,
|
||||
closedCallback : function(){},
|
||||
initCallback : function(){},
|
||||
messageCallback : function(){},
|
||||
resizedCallback : function(){},
|
||||
scrollCallback : function(){return true;}
|
||||
};
|
||||
|
||||
function addEventListener(obj,evt,func){
|
||||
if ('addEventListener' in window){
|
||||
obj.addEventListener(evt,func, false);
|
||||
} else if ('attachEvent' in window){//IE
|
||||
obj.attachEvent('on'+evt,func);
|
||||
}
|
||||
}
|
||||
|
||||
function setupRequestAnimationFrame(){
|
||||
var
|
||||
vendors = ['moz', 'webkit', 'o', 'ms'],
|
||||
x;
|
||||
|
||||
// Remove vendor prefixing if prefixed and break early if not
|
||||
for (x = 0; x < vendors.length && !requestAnimationFrame; x += 1) {
|
||||
requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
|
||||
}
|
||||
|
||||
if (!(requestAnimationFrame)){
|
||||
log(' RequestAnimationFrame not supported');
|
||||
}
|
||||
}
|
||||
|
||||
function getMyID(){
|
||||
var retStr = 'Host page';
|
||||
|
||||
if (window.top!==window.self){
|
||||
if (window.parentIFrame){
|
||||
retStr = window.parentIFrame.getId();
|
||||
} else {
|
||||
retStr = 'Nested host page';
|
||||
}
|
||||
}
|
||||
|
||||
return retStr;
|
||||
}
|
||||
|
||||
function formatLogMsg(msg){
|
||||
return msgId + '[' + getMyID() + ']' + msg;
|
||||
}
|
||||
|
||||
function log(msg){
|
||||
if (settings.log && ('object' === typeof window.console)){
|
||||
console.log(formatLogMsg(msg));
|
||||
}
|
||||
}
|
||||
|
||||
function warn(msg){
|
||||
if ('object' === typeof window.console){
|
||||
console.warn(formatLogMsg(msg));
|
||||
}
|
||||
}
|
||||
|
||||
function iFrameListener(event){
|
||||
function resizeIFrame(){
|
||||
function resize(){
|
||||
setSize(messageData);
|
||||
setPagePosition();
|
||||
settings.resizedCallback(messageData);
|
||||
}
|
||||
|
||||
ensureInRange('Height');
|
||||
ensureInRange('Width');
|
||||
|
||||
syncResize(resize,messageData,'resetPage');
|
||||
}
|
||||
|
||||
function closeIFrame(iframe){
|
||||
var iframeID = iframe.id;
|
||||
|
||||
log(' Removing iFrame: '+iframeID);
|
||||
iframe.parentNode.removeChild(iframe);
|
||||
settings.closedCallback(iframeID);
|
||||
log(' --');
|
||||
}
|
||||
|
||||
function processMsg(){
|
||||
var data = msg.substr(msgIdLen).split(':');
|
||||
|
||||
return {
|
||||
iframe: document.getElementById(data[0]),
|
||||
id: data[0],
|
||||
height: data[1],
|
||||
width: data[2],
|
||||
type: data[3]
|
||||
};
|
||||
}
|
||||
|
||||
function ensureInRange(Dimension){
|
||||
var
|
||||
max = Number(settings['max'+Dimension]),
|
||||
min = Number(settings['min'+Dimension]),
|
||||
dimension = Dimension.toLowerCase(),
|
||||
size = Number(messageData[dimension]);
|
||||
|
||||
if (min>max){
|
||||
throw new Error('Value for min'+Dimension+' can not be greater than max'+Dimension);
|
||||
}
|
||||
|
||||
log(' Checking '+dimension+' is in range '+min+'-'+max);
|
||||
|
||||
if (size<min) {
|
||||
size=min;
|
||||
log(' Set '+dimension+' to min value');
|
||||
}
|
||||
|
||||
if (size>max) {
|
||||
size=max;
|
||||
log(' Set '+dimension+' to max value');
|
||||
}
|
||||
|
||||
messageData[dimension]=''+size;
|
||||
}
|
||||
|
||||
function isMessageFromIFrame(){
|
||||
var
|
||||
origin = event.origin,
|
||||
remoteHost = messageData.iframe.src.split('/').slice(0,3).join('/');
|
||||
|
||||
if (settings.checkOrigin) {
|
||||
log(' Checking connection is from: '+remoteHost);
|
||||
|
||||
if ((''+origin !== 'null') && (origin !== remoteHost)) {
|
||||
throw new Error(
|
||||
'Unexpected message received from: ' + origin +
|
||||
' for ' + messageData.iframe.id +
|
||||
'. Message was: ' + event.data +
|
||||
'. This error can be disabled by adding the checkOrigin: false option.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function isMessageForUs(){
|
||||
return msgId === ('' + msg).substr(0,msgIdLen); //''+Protects against non-string msg
|
||||
}
|
||||
|
||||
function isMessageFromMetaParent(){
|
||||
//test if this message is from a parent above us. This is an ugly test, however, updating
|
||||
//the message format would break backwards compatibity.
|
||||
var retCode = messageData.type in {'true':1,'false':1};
|
||||
|
||||
if (retCode){
|
||||
log(' Ignoring init message from meta parent page');
|
||||
}
|
||||
|
||||
return retCode;
|
||||
}
|
||||
|
||||
function getMsgBody(offset){
|
||||
return msg.substr(msg.indexOf(':')+msgHeaderLen+offset);
|
||||
}
|
||||
|
||||
function forwardMsgFromIFrame(msgBody){
|
||||
log(' MessageCallback passed: {iframe: '+ messageData.iframe.id + ', message: ' + msgBody + '}');
|
||||
settings.messageCallback({
|
||||
iframe: messageData.iframe,
|
||||
message: JSON.parse(msgBody)
|
||||
});
|
||||
log(' --');
|
||||
}
|
||||
|
||||
function checkIFrameExists(){
|
||||
if (null === messageData.iframe) {
|
||||
throw new Error('iFrame ('+messageData.id+') does not exist on ' + page);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function getElementPosition(target){
|
||||
var
|
||||
iFramePosition = target.getBoundingClientRect();
|
||||
|
||||
getPagePosition();
|
||||
|
||||
return {
|
||||
x: parseInt(iFramePosition.left, 10) + parseInt(pagePosition.x, 10),
|
||||
y: parseInt(iFramePosition.top, 10) + parseInt(pagePosition.y, 10)
|
||||
};
|
||||
}
|
||||
|
||||
function scrollRequestFromChild(addOffset){
|
||||
function reposition(){
|
||||
pagePosition = newPosition;
|
||||
|
||||
scrollTo();
|
||||
|
||||
log(' --');
|
||||
}
|
||||
|
||||
function calcOffset(){
|
||||
return {
|
||||
x: Number(messageData.width) + offset.x,
|
||||
y: Number(messageData.height) + offset.y
|
||||
};
|
||||
}
|
||||
|
||||
var
|
||||
offset = addOffset ? getElementPosition(messageData.iframe) : {x:0,y:0},
|
||||
newPosition = calcOffset();
|
||||
|
||||
log(' Reposition requested from iFrame (offset x:'+offset.x+' y:'+offset.y+')');
|
||||
|
||||
if(window.top!==window.self){
|
||||
if (window.parentIFrame){
|
||||
if (addOffset){
|
||||
parentIFrame.scrollToOffset(newPosition.x,newPosition.y);
|
||||
} else {
|
||||
parentIFrame.scrollTo(messageData.width,messageData.height);
|
||||
}
|
||||
} else {
|
||||
warn(' Unable to scroll to requested position, window.parentIFrame not found');
|
||||
}
|
||||
} else {
|
||||
reposition();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function scrollTo(){
|
||||
if (false !== settings.scrollCallback(pagePosition)){
|
||||
setPagePosition();
|
||||
}
|
||||
}
|
||||
|
||||
function findTarget(location){
|
||||
var hash = location.split("#")[1] || "";
|
||||
var hashData = decodeURIComponent(hash);
|
||||
|
||||
function jumpToTarget(target){
|
||||
var jumpPosition = getElementPosition(target);
|
||||
|
||||
log(' Moving to in page link (#'+hash+') at x: '+jumpPosition.x+' y: '+jumpPosition.y);
|
||||
pagePosition = {
|
||||
x: jumpPosition.x,
|
||||
y: jumpPosition.y
|
||||
};
|
||||
|
||||
scrollTo();
|
||||
log(' --');
|
||||
}
|
||||
|
||||
var target = document.getElementById(hashData) || document.getElementsByName(hashData)[0];
|
||||
|
||||
if(window.top!==window.self){
|
||||
if (window.parentIFrame){
|
||||
parentIFrame.moveToAnchor(hash);
|
||||
} else {
|
||||
log(' In page link #'+hash+' not found and window.parentIFrame not found');
|
||||
}
|
||||
} else if (target){
|
||||
jumpToTarget(target);
|
||||
} else {
|
||||
log(' In page link #'+hash+' not found');
|
||||
}
|
||||
}
|
||||
|
||||
function actionMsg(){
|
||||
switch(messageData.type){
|
||||
case 'close':
|
||||
closeIFrame(messageData.iframe);
|
||||
settings.resizedCallback(messageData); //To be removed.
|
||||
break;
|
||||
case 'message':
|
||||
forwardMsgFromIFrame(getMsgBody(6));
|
||||
break;
|
||||
case 'scrollTo':
|
||||
scrollRequestFromChild(false);
|
||||
break;
|
||||
case 'scrollToOffset':
|
||||
scrollRequestFromChild(true);
|
||||
break;
|
||||
case 'inPageLink':
|
||||
findTarget(getMsgBody(9));
|
||||
break;
|
||||
case 'reset':
|
||||
resetIFrame(messageData);
|
||||
break;
|
||||
case 'init':
|
||||
resizeIFrame();
|
||||
settings.initCallback(messageData.iframe);
|
||||
break;
|
||||
default:
|
||||
resizeIFrame();
|
||||
}
|
||||
}
|
||||
|
||||
var
|
||||
msg = event.data,
|
||||
messageData = {};
|
||||
|
||||
if (isMessageForUs()){
|
||||
log(' Received: '+msg);
|
||||
messageData = processMsg();
|
||||
|
||||
if ( !isMessageFromMetaParent() && checkIFrameExists() && isMessageFromIFrame() ){
|
||||
actionMsg();
|
||||
firstRun = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function getPagePosition (){
|
||||
if(null === pagePosition){
|
||||
pagePosition = {
|
||||
x: (window.pageXOffset !== undefined) ? window.pageXOffset : document.documentElement.scrollLeft,
|
||||
y: (window.pageYOffset !== undefined) ? window.pageYOffset : document.documentElement.scrollTop
|
||||
};
|
||||
log(' Get page position: '+pagePosition.x+','+pagePosition.y);
|
||||
}
|
||||
}
|
||||
|
||||
function setPagePosition(){
|
||||
if(null !== pagePosition){
|
||||
window.scrollTo(pagePosition.x,pagePosition.y);
|
||||
log(' Set page position: '+pagePosition.x+','+pagePosition.y);
|
||||
pagePosition = null;
|
||||
}
|
||||
}
|
||||
|
||||
function resetIFrame(messageData){
|
||||
function reset(){
|
||||
setSize(messageData);
|
||||
trigger('reset','reset',messageData.iframe);
|
||||
}
|
||||
|
||||
log(' Size reset requested by '+('init'===messageData.type?'host page':'iFrame'));
|
||||
getPagePosition();
|
||||
syncResize(reset,messageData,'init');
|
||||
}
|
||||
|
||||
function setSize(messageData){
|
||||
function setDimension(dimension){
|
||||
messageData.iframe.style[dimension] = messageData[dimension] + 'px';
|
||||
log(
|
||||
' IFrame (' + messageData.iframe.id +
|
||||
') ' + dimension +
|
||||
' set to ' + messageData[dimension] + 'px'
|
||||
);
|
||||
}
|
||||
|
||||
if( settings.sizeHeight) { setDimension('height'); }
|
||||
if( settings.sizeWidth ) { setDimension('width'); }
|
||||
}
|
||||
|
||||
function syncResize(func,messageData,doNotSync){
|
||||
if(doNotSync!==messageData.type && requestAnimationFrame){
|
||||
log(' Requesting animation frame');
|
||||
requestAnimationFrame(func);
|
||||
} else {
|
||||
func();
|
||||
}
|
||||
}
|
||||
|
||||
function trigger(calleeMsg,msg,iframe){
|
||||
log('[' + calleeMsg + '] Sending msg to iframe ('+msg+')');
|
||||
iframe.contentWindow.postMessage( msgId + msg, '*' );
|
||||
}
|
||||
|
||||
|
||||
function setupIFrame(){
|
||||
function setLimits(){
|
||||
function addStyle(style){
|
||||
if ((Infinity !== settings[style]) && (0 !== settings[style])){
|
||||
iframe.style[style] = settings[style] + 'px';
|
||||
log(' Set '+style+' = '+settings[style]+'px');
|
||||
}
|
||||
}
|
||||
|
||||
addStyle('maxHeight');
|
||||
addStyle('minHeight');
|
||||
addStyle('maxWidth');
|
||||
addStyle('minWidth');
|
||||
}
|
||||
|
||||
function ensureHasId(iframeID){
|
||||
if (''===iframeID){
|
||||
iframe.id = iframeID = 'iFrameResizer' + count++;
|
||||
log(' Added missing iframe ID: '+ iframeID +' (' + iframe.src + ')');
|
||||
}
|
||||
|
||||
return iframeID;
|
||||
}
|
||||
|
||||
function setScrolling(){
|
||||
log(' IFrame scrolling ' + (settings.scrolling ? 'enabled' : 'disabled') + ' for ' + iframeID);
|
||||
iframe.style.overflow = false === settings.scrolling ? 'hidden' : 'auto';
|
||||
iframe.scrolling = false === settings.scrolling ? 'no' : 'yes';
|
||||
}
|
||||
|
||||
//The V1 iFrame script expects an int, where as in V2 expects a CSS
|
||||
//string value such as '1px 3em', so if we have an int for V2, set V1=V2
|
||||
//and then convert V2 to a string PX value.
|
||||
function setupBodyMarginValues(){
|
||||
if (('number'===typeof(settings.bodyMargin)) || ('0'===settings.bodyMargin)){
|
||||
settings.bodyMarginV1 = settings.bodyMargin;
|
||||
settings.bodyMargin = '' + settings.bodyMargin + 'px';
|
||||
}
|
||||
}
|
||||
|
||||
function createOutgoingMsg(){
|
||||
return iframeID +
|
||||
':' + settings.bodyMarginV1 +
|
||||
':' + settings.sizeWidth +
|
||||
':' + settings.log +
|
||||
':' + settings.interval +
|
||||
':' + settings.enablePublicMethods +
|
||||
':' + settings.autoResize +
|
||||
':' + settings.bodyMargin +
|
||||
':' + settings.heightCalculationMethod +
|
||||
':' + settings.bodyBackground +
|
||||
':' + settings.bodyPadding +
|
||||
':' + settings.tolerance;
|
||||
}
|
||||
|
||||
function init(msg){
|
||||
//We have to call trigger twice, as we can not be sure if all
|
||||
//iframes have completed loading when this code runs. The
|
||||
//event listener also catches the page changing in the iFrame.
|
||||
addEventListener(iframe,'load',function(){
|
||||
var fr = firstRun; // Reduce scope of var to function, because IE8's JS execution
|
||||
// context stack is borked and this value gets externally
|
||||
// changed midway through running this function.
|
||||
trigger('iFrame.onload',msg,iframe);
|
||||
if (!fr && settings.heightCalculationMethod in resetRequiredMethods){
|
||||
resetIFrame({
|
||||
iframe:iframe,
|
||||
height:0,
|
||||
width:0,
|
||||
type:'init'
|
||||
});
|
||||
}
|
||||
});
|
||||
trigger('init',msg,iframe);
|
||||
}
|
||||
|
||||
var
|
||||
/*jshint validthis:true */
|
||||
iframe = this,
|
||||
iframeID = ensureHasId(iframe.id);
|
||||
|
||||
setScrolling();
|
||||
setLimits();
|
||||
setupBodyMarginValues();
|
||||
init(createOutgoingMsg());
|
||||
}
|
||||
|
||||
function checkOptions(options){
|
||||
if ('object' !== typeof options){
|
||||
throw new TypeError('Options is not an object.');
|
||||
}
|
||||
}
|
||||
|
||||
function processOptions(options){
|
||||
options = options || {};
|
||||
checkOptions(options);
|
||||
|
||||
for (var option in defaults) {
|
||||
if (defaults.hasOwnProperty(option)){
|
||||
settings[option] = options.hasOwnProperty(option) ? options[option] : defaults[option];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function factory(){
|
||||
function init(element){
|
||||
if(!element.tagName) {
|
||||
throw new TypeError('Object is not a valid DOM element');
|
||||
} else if ('IFRAME' !== element.tagName.toUpperCase()) {
|
||||
throw new TypeError('Expected <IFRAME> tag, found <'+element.tagName+'>.');
|
||||
} else {
|
||||
setupIFrame.call(element);
|
||||
}
|
||||
}
|
||||
|
||||
return function iFrameResizeF(options,target){
|
||||
processOptions(options);
|
||||
switch (typeof(target)){
|
||||
case 'undefined':
|
||||
case 'string':
|
||||
Array.prototype.forEach.call( document.querySelectorAll( target || 'iframe' ), init );
|
||||
break;
|
||||
case 'object':
|
||||
init(target);
|
||||
break;
|
||||
default:
|
||||
throw new TypeError('Unexpected data type ('+typeof(target)+').');
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
function createJQueryPublicMethod($){
|
||||
$.fn.iFrameResize = function $iFrameResizeF(options) {
|
||||
processOptions(options);
|
||||
return this.filter('iframe').each( setupIFrame ).end();
|
||||
};
|
||||
}
|
||||
|
||||
setupRequestAnimationFrame();
|
||||
addEventListener(window,'message',iFrameListener);
|
||||
|
||||
if (window.jQuery) { createJQueryPublicMethod(jQuery); }
|
||||
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
define([],factory);
|
||||
} else if (typeof exports === 'object') { //Node for browserfy
|
||||
module.exports = factory();
|
||||
} else {
|
||||
window.iFrameResize = factory();
|
||||
}
|
||||
|
||||
})();
|
||||
+109
@@ -0,0 +1,109 @@
|
||||
/*
|
||||
Alpha by HTML5 UP
|
||||
html5up.net | @n33co
|
||||
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
|
||||
*/
|
||||
|
||||
(function($) {
|
||||
|
||||
skel.init({
|
||||
reset: 'full',
|
||||
breakpoints: {
|
||||
global: { range: '*', href: 'css/style.css', containers: '60em', grid: { gutters: ['2em', 0] } },
|
||||
wide: { range: '-1680', href: 'css/style-wide.css' },
|
||||
normal: { range: '-1280', href: 'css/style-normal.css', viewport: { scalable: false } },
|
||||
narrow: { range: '-980', href: 'css/style-narrow.css', containers: '90%' },
|
||||
narrower: { range: '-840', href: 'css/style-narrower.css', containers: '90%!', grid: { zoom: 2 } },
|
||||
mobile: { range: '-736', href: 'css/style-mobile.css', containers: '100%!' },
|
||||
mobilep: { range: '-480', href: 'css/style-mobilep.css', grid: { zoom: 3 } }
|
||||
},
|
||||
plugins: {
|
||||
layers: {
|
||||
|
||||
// Config.
|
||||
config: {
|
||||
transformTest: function() { return skel.vars.isMobile; }
|
||||
},
|
||||
|
||||
// Navigation Panel.
|
||||
navPanel: {
|
||||
animation: 'pushX',
|
||||
breakpoints: 'narrower',
|
||||
clickToHide: true,
|
||||
height: '100%',
|
||||
hidden: true,
|
||||
html: '<div data-action="navList" data-args="nav"></div>',
|
||||
orientation: 'vertical',
|
||||
position: 'top-left',
|
||||
side: 'left',
|
||||
width: 250
|
||||
},
|
||||
|
||||
// Navigation Button.
|
||||
navButton: {
|
||||
breakpoints: 'narrower',
|
||||
height: '4em',
|
||||
html: '<span class="toggle" data-action="toggleLayer" data-args="navPanel"></span>',
|
||||
position: 'top-left',
|
||||
side: 'top',
|
||||
width: '6em'
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$(function() {
|
||||
|
||||
var $window = $(window),
|
||||
$body = $('body'),
|
||||
$header = $('#header'),
|
||||
$banner = $('#banner');
|
||||
|
||||
// Forms (IE<10).
|
||||
var $form = $('form');
|
||||
if ($form.length > 0) {
|
||||
|
||||
$form.find('.form-button-submit')
|
||||
.on('click', function() {
|
||||
$(this).parents('form').submit();
|
||||
return false;
|
||||
});
|
||||
|
||||
if (skel.vars.IEVersion < 10) {
|
||||
$.fn.n33_formerize=function(){var _fakes=new Array(),_form = $(this);_form.find('input[type=text],textarea').each(function() { var e = $(this); if (e.val() == '' || e.val() == e.attr('placeholder')) { e.addClass('formerize-placeholder'); e.val(e.attr('placeholder')); } }).blur(function() { var e = $(this); if (e.attr('name').match(/_fakeformerizefield$/)) return; if (e.val() == '') { e.addClass('formerize-placeholder'); e.val(e.attr('placeholder')); } }).focus(function() { var e = $(this); if (e.attr('name').match(/_fakeformerizefield$/)) return; if (e.val() == e.attr('placeholder')) { e.removeClass('formerize-placeholder'); e.val(''); } }); _form.find('input[type=password]').each(function() { var e = $(this); var x = $($('<div>').append(e.clone()).remove().html().replace(/type="password"/i, 'type="text"').replace(/type=password/i, 'type=text')); if (e.attr('id') != '') x.attr('id', e.attr('id') + '_fakeformerizefield'); if (e.attr('name') != '') x.attr('name', e.attr('name') + '_fakeformerizefield'); x.addClass('formerize-placeholder').val(x.attr('placeholder')).insertAfter(e); if (e.val() == '') e.hide(); else x.hide(); e.blur(function(event) { event.preventDefault(); var e = $(this); var x = e.parent().find('input[name=' + e.attr('name') + '_fakeformerizefield]'); if (e.val() == '') { e.hide(); x.show(); } }); x.focus(function(event) { event.preventDefault(); var x = $(this); var e = x.parent().find('input[name=' + x.attr('name').replace('_fakeformerizefield', '') + ']'); x.hide(); e.show().focus(); }); x.keypress(function(event) { event.preventDefault(); x.val(''); }); }); _form.submit(function() { $(this).find('input[type=text],input[type=password],textarea').each(function(event) { var e = $(this); if (e.attr('name').match(/_fakeformerizefield$/)) e.attr('name', ''); if (e.val() == e.attr('placeholder')) { e.removeClass('formerize-placeholder'); e.val(''); } }); }).bind("reset", function(event) { event.preventDefault(); $(this).find('select').val($('option:first').val()); $(this).find('input,textarea').each(function() { var e = $(this); var x; e.removeClass('formerize-placeholder'); switch (this.type) { case 'submit': case 'reset': break; case 'password': e.val(e.attr('defaultValue')); x = e.parent().find('input[name=' + e.attr('name') + '_fakeformerizefield]'); if (e.val() == '') { e.hide(); x.show(); } else { e.show(); x.hide(); } break; case 'checkbox': case 'radio': e.attr('checked', e.attr('defaultValue')); break; case 'text': case 'textarea': e.val(e.attr('defaultValue')); if (e.val() == '') { e.addClass('formerize-placeholder'); e.val(e.attr('placeholder')); } break; default: e.val(e.attr('defaultValue')); break; } }); window.setTimeout(function() { for (x in _fakes) _fakes[x].trigger('formerize_sync'); }, 10); }); return _form; };
|
||||
$form.n33_formerize();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Dropdowns.
|
||||
$('#nav > ul').dropotron({
|
||||
alignment: 'right'
|
||||
});
|
||||
|
||||
// Header.
|
||||
// If the header is using "alt" styling and #banner is present, use scrollwatch
|
||||
// to revert it back to normal styling once the user scrolls past the banner.
|
||||
// Note: This is disabled on mobile devices.
|
||||
if (!skel.vars.isMobile
|
||||
&& $header.hasClass('alt')
|
||||
&& $banner.length > 0) {
|
||||
|
||||
$window.on('load', function() {
|
||||
|
||||
$banner.scrollwatch({
|
||||
delay: 0,
|
||||
range: 0.5,
|
||||
anchor: 'top',
|
||||
on: function() { $header.addClass('alt reveal'); },
|
||||
off: function() { $header.removeClass('alt'); }
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
/* jquery.dropotron.js v1.4.3 | (c) n33 | n33.co | MIT licensed */
|
||||
(function(e){var t="openerActiveClass",n="click touchend",r="left",i="doCollapseAll",s="position",o="trigger",u="disableSelection_dropotron",a="addClass",f="doCollapse",l=!1,c="outerWidth",h="removeClass",p="preventDefault",d="length",v="dropotron",m="clearTimeout",g="right",y="parent",b=!0,w="speed",E="none",S="stopPropagation",x="doExpand",T=":visible",N="absolute",C="css",k="center",L="toggle",A="baseZIndex",O="offsetX",M="alignment",_="submenuClassPrefix",D="children",P="hover",H="relative",B="doToggle",j="ul",F="z-index",I="opacity",q="find",R="opener",U="px",z=null,W="hide",X="offset",V="detach",$="fast";e.fn[u]=function(){return e(this)[C]("user-select",E)[C]("-khtml-user-select",E)[C]("-moz-user-select",E)[C]("-o-user-select",E)[C]("-webkit-user-select",E)},e.fn[v]=function(t){var n;if(this[d]==0)return e(this);if(this[d]>1)for(n=0;n<this[d];n++)e(this[n])[v](t);return e[v](e.extend({selectorParent:e(this)},t))},e[v]=function(E){var et=e.extend({selectorParent:z,baseZIndex:1e3,menuClass:v,expandMode:P,hoverDelay:150,hideDelay:250,openerClass:R,openerActiveClass:"active",submenuClassPrefix:"level-",mode:"fade",speed:$,easing:"swing",alignment:r,offsetX:0,offsetY:0,globalOffsetY:0,IEOffsetX:0,IEOffsetY:0,noOpenerFade:b,detach:b,cloneOnDetach:b},E),tt=et.selectorParent,nt=tt[q](j),rt=e("body"),it=e("body,html"),st=e(window),ot=l,ut=z,at=z;tt.on(i,function(){nt[o](f)}),nt.each(function(){var i=e(this),d=i[y]();et.hideDelay>0&&i.add(d).on("mouseleave",function(){window[m](at),at=window.setTimeout(function(){i[o](f)},et.hideDelay)}),i[u]()[W]()[a](et.menuClass)[C](s,N).on("mouseenter",function(){window[m](at)}).on(x,function(){var n,u,p,v,E,S,x,_,D,P,B;if(i.is(T))return l;window[m](at),nt.each(function(){var t=e(this);e.contains(t.get(0),d.get(0))||t[o](f)}),n=d[X](),u=d[s](),p=d[y]()[s](),v=d[c](),E=i[c](),S=i[C](F)==et[A];if(S){et[V]?x=n:x=u,P=x.top+d.outerHeight()+et.globalOffsetY,_=et[M],i[h](r)[h](g)[h](k);switch(et[M]){case g:D=x[r]-E+v,D<0&&(D=x[r],_=r);break;case k:D=x[r]-Math.floor((E-v)/2),D<0?(D=x[r],_=r):D+E>st.width()&&(D=x[r]-E+v,_=g);break;case r:default:D=x[r],D+E>st.width()&&(D=x[r]-E+v,_=g)}i[a](_)}else{d[C](s)==H||d[C](s)==N?(P=et.offsetY,D=-1*u[r]):(P=u.top+et.offsetY,D=0);switch(et[M]){case g:D+=-1*d[y]()[c]()+et[O];break;case k:case r:default:D+=d[y]()[c]()+et[O]}}navigator.userAgent.match(/MSIE ([0-9]+)\./)&&RegExp.$1<8&&(D+=et.IEOffsetX,P+=et.IEOffsetY),i[C](r,D+U)[C]("top",P+U)[C](I,"0.01").show(),B=l,d[C](s)==H||d[C](s)==N?D=-1*u[r]:D=0,i[X]()[r]<0?(D+=d[y]()[c]()-et[O],B=b):i[X]()[r]+E>st.width()&&(D+=-1*d[y]()[c]()-et[O],B=b),B&&i[C](r,D+U),i[W]()[C](I,"1");switch(et.mode){case"zoom":ot=b,d[a](et[t]),i.animate({width:L,height:L},et[w],et.easing,function(){ot=l});break;case"slide":ot=b,d[a](et[t]),i.animate({height:L},et[w],et.easing,function(){ot=l});break;case"fade":ot=b,S&&!et.noOpenerFade?(et[w]=="slow"?B=80:et[w]==$?B=40:B=Math.floor(et[w]/2),d.fadeTo(B,.01,function(){d[a](et[t]),d.fadeTo(et[w],1),i.fadeIn(et[w],function(){ot=l})})):(d[a](et[t]),d.fadeTo(et[w],1),i.fadeIn(et[w],function(){ot=l}));break;case"instant":default:d[a](et[t]),i.show()}return l}).on(f,function(){return i.is(T)?(i[W](),d[h](et[t]),i[q]("."+et[t])[h](et[t]),i[q](j)[W](),l):l}).on(B,function(){return i.is(T)?i[o](f):i[o](x),l}),d[u]()[a](R)[C]("cursor","pointer").on(n,function(e){if(ot)return;e[p](),e[S](),i[o](B)}),et.expandMode==P&&d[P](function(){if(ot)return;ut=window.setTimeout(function(){i[o](x)},et.hoverDelay)},function(){window[m](ut)})}),nt[q]("a")[C]("display","block").on(n,function(t){if(ot)return;e(this).attr("href")[d]<1&&t[p]()}),tt[q]("li")[C]("white-space","nowrap").each(function(){var t=e(this),r=t[D]("a"),s=t[D](j),u=r.attr("href");r.on(n,function(e){u[d]==0||u=="#"?e[p]():e[S]()}),r[d]>0&&s[d]==0&&t.on(n,function(e){if(ot)return;tt[o](i),e[S]()})}),tt[D]("li").each(function(){var t,n,r,i,s=e(this),o=s[D](j);if(o[d]>0){et[V]&&(et.cloneOnDetach&&(t=o.clone(),t.attr("class","")[W]().appendTo(o[y]())),o[V]().appendTo(rt));for(n=et[A],r=1,i=o;i[d]>0;r++)i[C](F,n++),et[_]&&i[a](et[_]+(n-1-et[A])),i=i[q]("> li > ul")}}),st.on("scroll",function(){tt[o](i)}).on("keypress",function(e){!ot&&e.keyCode==27&&(e[p](),tt[o](i))}),it.on(n,function(){ot||tt[o](i)})}})(jQuery);
|
||||
Vendored
+5
File diff suppressed because one or more lines are too long
Vendored
+4
File diff suppressed because one or more lines are too long
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
/* jquery.scrollgress vx.x | (c) n33 | n33.co @n33co | MIT */
|
||||
(function(){var e="scrollwatchResume",t="length",n="removeData",r="data",i="scrollwatch-state",s="scrollwatch-suspended",o="scrollgress-suspended",u="setTimeout",a="trigger",f="scroll",l="scrollwatchSuspend",c=!0,h="scrollwatch",p=null,d="top",v="rangeMin",m="rangeMax",g="scrollgress",y=!1,b="anchor",w="unscrollwatch",E="unscrollgress",S="element",x="-id",T="scroll.",N="height",C="scrollTop",k="center",L="bottom",A=$(window),O=$(document),M=1e3;jQuery.fn[e]=function(){var l,c;if(this[t]==0)return $(this);if(this[t]>1){for(l=0;l<this[t];l++)$(this[l])[e]();return this}return c=$(this),c[r](i,-1)[n](s)[n](o),window[u](function(){A[a](f)},50),c},jQuery.fn[l]=function(){var e,n;if(this[t]==0)return $(this);if(this[t]>1){for(e=0;e<this[t];e++)$(this[e])[l]();return this}return n=$(this),n[r](s,c),window[u](function(){A[a](f)},50),n},jQuery.fn[h]=function(e){var n,a,f,l,w;if(this[t]==0)return $(this);if(this[t]>1){for(n=0;n<this[t];n++)$(this[n])[h](e);return this}return a=jQuery.extend({range:.5,rangeMin:p,rangeMax:p,anchor:d,init:p,on:p,off:p,delay:0},e),a[v]===p&&(a[v]=-1*a.range),a[m]===p&&(a[m]=a.range),f=$(this),a.init&&(w=a.init),f[r](s,y)[r](i,-1)[g](function(e){if(f[r](s)===c){a.on&&a.on(f),f[r](o,c);return}window.clearTimeout(l),l=window[u](function(){var t,n,s=parseInt(f[r](i));if(s==0||s==-1){t=a[v]===y||e>=a[v],n=a[m]===y||e<=a[m];if(t&&n){f[r](i,1),a.on&&a.on(f),w&&(w(f,c),w=p);return}}if(s==1||s==-1){t=a[v]!==y&&e<a[v],n=a[m]!==y&&e>a[m];if(t||n){f[r](i,0),a.off&&a.off(f),w&&(w(f,y),w=p);return}}},w?0:a.delay)},{anchor:a[b]},h),f},jQuery.fn[w]=function(){var e,r;if(this[t]==0)return $(this);if(this[t]>1){for(e=0;e<this[t];e++)$(this[e])[w]();return this}return r=$(this),r[n](i)[E](h),r},jQuery.fn[g]=function(e,n,i){var s,u,l,h,p;if(this[t]==0)return $(this);if(this[t]>1){for(s=0;s<this[t];s++)$(this[s])[g](e,n,i);return $(this)}return i||(i=g),u=jQuery.extend({anchor:d,direction:"both",scope:S,easing:0},n),l=$(this),l[r](i+x)||l[r](i+x,M++),h=l[r](i+x),p=T+i+"-"+h,A.off(p).on(p,function(){var t,n,i,s;if(l[r](o)===c)return;t=l.offset()[d],n=l.outerHeight(),i=O[N]();switch(u.scope){default:case S:switch(u[b]){default:case d:s=(t-A[C]())/n*-1;break;case k:s=(t-A[C]()-(A[N]()-n)/2)/n*-1;break;case L:s=(t-A[C]()-(A[N]()-n))/n*-1}break;case"window":switch(u[b]){default:case d:s=(t-A[C]())/A[N]()*-1;break;case k:s=(t-A[C]()-(A[N]()-n)/2)/A[N]()*-1;break;case L:s=(t-A[C]()-(A[N]()-n))/A[N]()*-1}}u.direction=="forwards"?s=Math.max(0,s):u.direction=="backwards"&&(s=Math.min(0,s)),s>0?s=Math.max(0,s-u.easing/100):s<0&&(s=Math.min(0,s+u.easing/100)),e(s,l)})[a](f),l},jQuery.fn[E]=function(e){var i,s,o,u;if(this[t]==0)return $(this);if(this[t]>1){for(i=0;i<this[t];i++)$(this[i])[E](e);return $(this)}return e||(e=g),s=$(this),s[r](e+x)?(o=s[r](e+x),u=T+e+"-"+o,A.off(u),s[n](e+x),s):s}})();
|
||||
@@ -0,0 +1,372 @@
|
||||
// By default, Klaro will load the config from a global "klaroConfig" variable.
|
||||
// You can change this by specifying the "data-config" attribute on your
|
||||
// script take, e.g. like this:
|
||||
// <script src="klaro.js" data-config="myConfigVariableName" />
|
||||
var klaroConfig = {
|
||||
// With the 0.7.0 release we introduce a 'version' paramter that will make
|
||||
// if easier for us to keep configuration files backwards-compatible in the future.
|
||||
version: 1,
|
||||
|
||||
// You can customize the ID of the DIV element that Klaro will create
|
||||
// when starting up. If undefined, Klaro will use 'klaro'.
|
||||
elementID: 'klaro',
|
||||
|
||||
// You can override CSS style variables here. For IE11, Klaro will
|
||||
// dynamically inject the variables into the CSS. If you still consider
|
||||
// supporting IE9-10 (which you probably shouldn't) you need to use Klaro
|
||||
// with an external stylesheet as the dynamic replacement won't work there.
|
||||
styling: {
|
||||
theme: ['light', 'top', 'wide'],
|
||||
},
|
||||
|
||||
// Setting this to true will keep Klaro from automatically loading itself
|
||||
// when the page is being loaded.
|
||||
noAutoLoad: false,
|
||||
|
||||
// Setting this to true will render the descriptions of the consent
|
||||
// modal and consent notice are HTML. Use with care.
|
||||
htmlTexts: true,
|
||||
|
||||
// Setting 'embedded' to true will render the Klaro modal and notice without
|
||||
// the modal background, allowing you to e.g. embed them into a specific element
|
||||
// of your website, such as your privacy notice.
|
||||
embedded: false,
|
||||
|
||||
// You can group services by their purpose in the modal. This is advisable
|
||||
// if you have a large number of services. Users can then enable or disable
|
||||
// entire groups of services instead of having to enable or disable every service.
|
||||
groupByPurpose: true,
|
||||
|
||||
// How Klaro should store the user's preferences. It can be either 'cookie'
|
||||
// (the default) or 'localStorage'.
|
||||
storageMethod: 'cookie',
|
||||
|
||||
// You can customize the name of the cookie that Klaro uses for storing
|
||||
// user consent decisions. If undefined, Klaro will use 'klaro'.
|
||||
cookieName: 'klaro',
|
||||
|
||||
// You can also set a custom expiration time for the Klaro cookie.
|
||||
// By default, it will expire after 120 days.
|
||||
cookieExpiresAfterDays: 365,
|
||||
|
||||
// You can change to cookie domain for the consent manager itself.
|
||||
// Use this if you want to get consent once for multiple matching domains.
|
||||
// If undefined, Klaro will use the current domain.
|
||||
//cookieDomain: '.github.com',
|
||||
|
||||
// You can change to cookie path for the consent manager itself.
|
||||
// Use this to restrict the cookie visibility to a specific path.
|
||||
// If undefined, Klaro will use '/' as cookie path.
|
||||
//cookiePath: '/',
|
||||
|
||||
// Defines the default state for services (true=enabled by default).
|
||||
default: false,
|
||||
|
||||
// If "mustConsent" is set to true, Klaro will directly display the consent
|
||||
// manager modal and not allow the user to close it before having actively
|
||||
// consented or declines the use of third-party services.
|
||||
mustConsent: false,
|
||||
|
||||
// Show "accept all" to accept all services instead of "ok" that only accepts
|
||||
// required and "default: true" services
|
||||
acceptAll: true,
|
||||
|
||||
// replace "decline" with cookie manager modal
|
||||
hideDeclineAll: false,
|
||||
|
||||
// hide "learnMore" link
|
||||
hideLearnMore: false,
|
||||
|
||||
// show cookie notice as modal
|
||||
noticeAsModal: false,
|
||||
|
||||
// You can also remove the 'Realized with Klaro!' text in the consent modal.
|
||||
// Please don't do this! We provide Klaro as a free open source tool.
|
||||
// Placing a link to our website helps us spread the word about it,
|
||||
// which ultimately enables us to make Klaro! better for everyone.
|
||||
// So please be fair and keep the link enabled. Thanks :)
|
||||
//disablePoweredBy: true,
|
||||
|
||||
// you can specify an additional class (or classes) that will be added to the Klaro `div`
|
||||
//additionalClass: 'my-klaro',
|
||||
|
||||
// You can define the UI language directly here. If undefined, Klaro will
|
||||
// use the value given in the global "lang" variable. If that does
|
||||
// not exist, it will use the value given in the "lang" attribute of your
|
||||
// HTML tag. If that also doesn't exist, it will use 'en'.
|
||||
//lang: 'en',
|
||||
|
||||
// You can overwrite existing translations and add translations for your
|
||||
// service descriptions and purposes. See `src/translations/` for a full
|
||||
// list of translations that can be overwritten:
|
||||
// https://github.com/KIProtect/klaro/tree/master/src/translations
|
||||
|
||||
// Example config that shows how to overwrite translations:
|
||||
// https://github.com/KIProtect/klaro/blob/master/src/configs/i18n.js
|
||||
translations: {
|
||||
// translationsed defined under the 'zz' language code act as default
|
||||
// translations.
|
||||
zz: {
|
||||
privacyPolicyUrl: '/#privacy',
|
||||
},
|
||||
// If you erase the "consentModal" translations, Klaro will use the
|
||||
// bundled translations.
|
||||
de: {
|
||||
privacyPolicyUrl: '/#datenschutz',
|
||||
consentModal: {
|
||||
description:
|
||||
'Hier können Sie einsehen und anpassen, welche Information wir über Sie sammeln. Einträge die als "Beispiel" gekennzeichnet sind dienen lediglich zu Demonstrationszwecken und werden nicht wirklich verwendet.',
|
||||
},
|
||||
adsense: {
|
||||
description: 'Anzeigen von Werbeanzeigen (Beispiel)',
|
||||
title: 'Google AdSense Werbezeugs',
|
||||
},
|
||||
matomo: {
|
||||
description: 'Sammeln von Besucherstatistiken',
|
||||
},
|
||||
camera: {
|
||||
description:
|
||||
'Eine Überwachungskamera (nur ein Beispiel zu IMG-Tags)',
|
||||
},
|
||||
cloudflare: {
|
||||
description: 'Schutz gegen DDoS-Angriffe',
|
||||
},
|
||||
intercom: {
|
||||
description:
|
||||
'Chat Widget & Sammeln von Besucherstatistiken (nur ein Beispiel)',
|
||||
},
|
||||
mouseflow: {
|
||||
description: 'Echtzeit-Benutzeranalyse (nur ein Beispiel)',
|
||||
},
|
||||
googleFonts: {
|
||||
description: 'Web-Schriftarten von Google gehostet',
|
||||
},
|
||||
purposes: {
|
||||
analytics: 'Besucher-Statistiken',
|
||||
security: 'Sicherheit',
|
||||
livechat: 'Live Chat',
|
||||
advertising: 'Anzeigen von Werbung',
|
||||
styling: 'Styling',
|
||||
},
|
||||
},
|
||||
en: {
|
||||
consentModal: {
|
||||
title: '<u>test</u>',
|
||||
description:
|
||||
'Here you can see and customize the information that we collect about you. Entries marked as "Example" are just for demonstration purposes and are not really used on this website.',
|
||||
},
|
||||
adsense: {
|
||||
description: 'Displaying of advertisements (just an example)',
|
||||
title: 'Google Adsense Advertisement',
|
||||
},
|
||||
matomo: {
|
||||
description: 'Collecting of visitor statistics',
|
||||
},
|
||||
camera: {
|
||||
description:
|
||||
'A surveillance camera (just an example for an IMG tag)',
|
||||
},
|
||||
cloudflare: {
|
||||
description: 'Protection against DDoS attacks',
|
||||
},
|
||||
intercom: {
|
||||
description:
|
||||
'Chat widget & collecting of visitor statistics (just an example)',
|
||||
},
|
||||
mouseflow: {
|
||||
description: 'Real-Time user analytics (just an example)',
|
||||
},
|
||||
googleFonts: {
|
||||
description: 'Web fonts hosted by Google',
|
||||
},
|
||||
purposes: {
|
||||
analytics: 'Analytics',
|
||||
security: 'Security',
|
||||
livechat: 'Livechat',
|
||||
advertising: 'Advertising',
|
||||
styling: 'Styling',
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
// This is a list of third-party services that Klaro will manage for you.
|
||||
services: [
|
||||
{
|
||||
name: 'twitter',
|
||||
default: false,
|
||||
contextualConsentOnly: true,
|
||||
purposes: ['marketing'],
|
||||
},
|
||||
{
|
||||
name: 'youtube',
|
||||
default: true,
|
||||
purposes: ['marketing'],
|
||||
},
|
||||
{
|
||||
// Each service should have a unique (and short) name.
|
||||
name: 'matomo',
|
||||
|
||||
// If "default" is set to true, the service will be enabled by default
|
||||
// Overwrites global "default" setting.
|
||||
// We recommend leaving this to "false" for services that collect
|
||||
// personal information.
|
||||
default: true,
|
||||
|
||||
// The title of you service as listed in the consent modal.
|
||||
title: 'Matomo/Piwik',
|
||||
|
||||
// The purpose(s) of this service. Will be listed on the consent notice.
|
||||
// Do not forget to add translations for all purposes you list here.
|
||||
purposes: ['analytics'],
|
||||
|
||||
// A list of regex expressions or strings giving the names of
|
||||
// cookies set by this service. If the user withdraws consent for a
|
||||
// given service, Klaro will then automatically delete all matching
|
||||
// cookies.
|
||||
cookies: [
|
||||
// you can also explicitly provide a path and a domain for
|
||||
// a given cookie. This is necessary if you have services that
|
||||
// set cookies for a path that is not "/" or a domain that
|
||||
// is not the current domain. If you do not set these values
|
||||
// properly, the cookie can't be deleted by Klaro
|
||||
// (there is no way to access the path or domain of a cookie in JS)
|
||||
// Notice that it is not possible to delete cookies that were set
|
||||
// on a third-party domain! See the note at mdn:
|
||||
// https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie#new-cookie_domain
|
||||
[/^_pk_.*$/, '/', 'klaro.kiprotect.com'], //for the production version
|
||||
[/^_pk_.*$/, '/', 'localhost'], //for the local version
|
||||
'piwik_ignore',
|
||||
],
|
||||
|
||||
// An optional callback function that will be called each time
|
||||
// the consent state for the service changes (true=consented). Passes
|
||||
// the `service` config as the second parameter as well.
|
||||
callback: function(consent, service) {
|
||||
// This is an example callback function.
|
||||
console.log(
|
||||
'User consent for service ' + service.name + ': consent=' + consent
|
||||
);
|
||||
// To be used in conjunction with Matomo 'requireCookieConsent' Feature, Matomo 3.14.0 or newer
|
||||
// For further Information see https://matomo.org/faq/new-to-piwik/how-can-i-still-track-a-visitor-without-cookies-even-if-they-decline-the-cookie-consent/
|
||||
/*
|
||||
if(consent==true){
|
||||
_paq.push(['rememberCookieConsentGiven']);
|
||||
} else {
|
||||
_paq.push(['forgetCookieConsentGiven']);
|
||||
}
|
||||
*/
|
||||
},
|
||||
|
||||
// If "required" is set to true, Klaro will not allow this service to
|
||||
// be disabled by the user.
|
||||
required: false,
|
||||
|
||||
// If "optOut" is set to true, Klaro will load this service even before
|
||||
// the user gave explicit consent.
|
||||
// We recommend always leaving this "false".
|
||||
optOut: false,
|
||||
|
||||
// If "onlyOnce" is set to true, the service will only be executed
|
||||
// once regardless how often the user toggles it on and off.
|
||||
onlyOnce: true,
|
||||
},
|
||||
|
||||
// The services will appear in the modal in the same order as defined here.
|
||||
{
|
||||
name: 'inlineTracker',
|
||||
title: 'Inline Tracker',
|
||||
purposes: ['analytics'],
|
||||
cookies: ['inline-tracker'],
|
||||
optOut: false,
|
||||
},
|
||||
{
|
||||
name: 'externalTracker',
|
||||
title: 'External Tracker',
|
||||
purposes: ['analytics', 'security'],
|
||||
cookies: ['external-tracker'],
|
||||
},
|
||||
{
|
||||
name: 'intercom',
|
||||
title: 'Intercom',
|
||||
default: true,
|
||||
purposes: ['livechat'],
|
||||
},
|
||||
{
|
||||
name: 'mouseflow',
|
||||
title: 'Mouseflow',
|
||||
purposes: ['analytics'],
|
||||
},
|
||||
{
|
||||
name: 'adsense',
|
||||
// if you omit the title here Klaro will try to look it up in the
|
||||
// translations
|
||||
//title: 'Google AdSense',
|
||||
purposes: ['advertising'],
|
||||
},
|
||||
{
|
||||
name: 'camera',
|
||||
title: 'Surveillance Camera',
|
||||
purposes: ['security'],
|
||||
},
|
||||
/* {
|
||||
name: 'googleFonts',
|
||||
title: 'Google Fonts',
|
||||
purposes: ['styling'],
|
||||
},*/
|
||||
{
|
||||
name: 'cloudflare',
|
||||
title: 'Cloudflare',
|
||||
purposes: ['security'],
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
name: 'google-tag-manager',
|
||||
purposes: ['marketing'],
|
||||
onAccept: `
|
||||
// we notify the tag manager about all services that were accepted. You can define
|
||||
// a custom event in GTM to load the service if consent was given.
|
||||
for(let k of Object.keys(opts.consents)){
|
||||
if (opts.consents[k]){
|
||||
let eventName = 'klaro-'+k+'-accepted'
|
||||
dataLayer.push({'event': eventName})
|
||||
}
|
||||
}
|
||||
// if consent for Google Analytics was granted we enable analytics storage
|
||||
if (opts.consents[opts.vars.googleAnalyticsName || 'google-analytics']){
|
||||
console.log("Google analytics usage was granted")
|
||||
gtag('consent', 'update', {'analytics_storage': 'granted'})
|
||||
}
|
||||
// if consent for Google Ads was granted we enable ad storage
|
||||
if (opts.consents[opts.vars.adStorageName || 'google-ads']){
|
||||
console.log("Google ads usage was granted")
|
||||
gtag('consent', 'update', {'ad_storage': 'granted'})
|
||||
}
|
||||
`,
|
||||
onInit: `
|
||||
// initialization code here (will be executed only once per page-load)
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
window.gtag = function(){dataLayer.push(arguments)}
|
||||
gtag('consent', 'default', {'ad_storage': 'denied', 'analytics_storage': 'denied'})
|
||||
gtag('set', 'ads_data_redaction', true)
|
||||
`,
|
||||
onDecline: `
|
||||
// initialization code here (will be executed only once per page-load)
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
window.gtag = function(){dataLayer.push(arguments)}
|
||||
gtag('consent', 'default', {'ad_storage': 'denied', 'analytics_storage': 'denied'})
|
||||
gtag('set', 'ads_data_redaction', true)
|
||||
`,
|
||||
vars: {
|
||||
googleAnalytics: 'google-analytics'
|
||||
}
|
||||
},
|
||||
{
|
||||
// In GTM, you should define a custom event trigger named `klaro-google-analytics-accepted` which should trigger the Google Analytics integration.
|
||||
name: 'google-analytics',
|
||||
purposes: ['marketing'],
|
||||
cookies: [
|
||||
/^_ga(_.*)?/ // we delete the Google Analytics cookies if the user declines its use
|
||||
],
|
||||
}
|
||||
],
|
||||
};
|
||||
@@ -0,0 +1,238 @@
|
||||
// By default, Klaro will load the config from a global "klaroConfig" variable.
|
||||
// You can change this by specifying the "data-config" attribute on your
|
||||
// script take, e.g. like this:
|
||||
// <script src="klaro.js" data-config="myConfigVariableName" />
|
||||
var klaroConfig = {
|
||||
// With the 0.7.0 release we introduce a 'version' paramter that will make
|
||||
// if easier for us to keep configuration files backwards-compatible in the future.
|
||||
version: 1,
|
||||
|
||||
// You can customize the ID of the DIV element that Klaro will create
|
||||
// when starting up. If undefined, Klaro will use 'klaro'.
|
||||
elementID: 'klaro',
|
||||
|
||||
// You can override CSS style variables here. For IE11, Klaro will
|
||||
// dynamically inject the variables into the CSS. If you still consider
|
||||
// supporting IE9-10 (which you probably shouldn't) you need to use Klaro
|
||||
// with an external stylesheet as the dynamic replacement won't work there.
|
||||
styling: {
|
||||
theme: ['light', 'top', 'wide'],
|
||||
},
|
||||
|
||||
// Setting this to true will keep Klaro from automatically loading itself
|
||||
// when the page is being loaded.
|
||||
noAutoLoad: false,
|
||||
|
||||
// Setting this to true will render the descriptions of the consent
|
||||
// modal and consent notice are HTML. Use with care.
|
||||
htmlTexts: true,
|
||||
|
||||
// Setting 'embedded' to true will render the Klaro modal and notice without
|
||||
// the modal background, allowing you to e.g. embed them into a specific element
|
||||
// of your website, such as your privacy notice.
|
||||
embedded: false,
|
||||
|
||||
// You can group services by their purpose in the modal. This is advisable
|
||||
// if you have a large number of services. Users can then enable or disable
|
||||
// entire groups of services instead of having to enable or disable every service.
|
||||
groupByPurpose: true,
|
||||
|
||||
// How Klaro should store the user's preferences. It can be either 'cookie'
|
||||
// (the default) or 'localStorage'.
|
||||
storageMethod: 'cookie',
|
||||
|
||||
// You can customize the name of the cookie that Klaro uses for storing
|
||||
// user consent decisions. If undefined, Klaro will use 'klaro'.
|
||||
cookieName: 'klaro',
|
||||
|
||||
// You can also set a custom expiration time for the Klaro cookie.
|
||||
// By default, it will expire after 120 days.
|
||||
cookieExpiresAfterDays: 365,
|
||||
|
||||
// You can change to cookie domain for the consent manager itself.
|
||||
// Use this if you want to get consent once for multiple matching domains.
|
||||
// If undefined, Klaro will use the current domain.
|
||||
//cookieDomain: '.github.com',
|
||||
|
||||
// You can change to cookie path for the consent manager itself.
|
||||
// Use this to restrict the cookie visibility to a specific path.
|
||||
// If undefined, Klaro will use '/' as cookie path.
|
||||
//cookiePath: '/',
|
||||
|
||||
// Defines the default state for services (true=enabled by default).
|
||||
default: false,
|
||||
|
||||
// If "mustConsent" is set to true, Klaro will directly display the consent
|
||||
// manager modal and not allow the user to close it before having actively
|
||||
// consented or declines the use of third-party services.
|
||||
mustConsent: true,
|
||||
|
||||
// Show "accept all" to accept all services instead of "ok" that only accepts
|
||||
// required and "default: true" services
|
||||
acceptAll: true,
|
||||
|
||||
// replace "decline" with cookie manager modal
|
||||
hideDeclineAll: true,
|
||||
|
||||
// hide "learnMore" link
|
||||
hideLearnMore: false,
|
||||
|
||||
// show cookie notice as modal
|
||||
noticeAsModal: false,
|
||||
|
||||
// You can also remove the 'Realized with Klaro!' text in the consent modal.
|
||||
// Please don't do this! We provide Klaro as a free open source tool.
|
||||
// Placing a link to our website helps us spread the word about it,
|
||||
// which ultimately enables us to make Klaro! better for everyone.
|
||||
// So please be fair and keep the link enabled. Thanks :)
|
||||
//disablePoweredBy: true,
|
||||
|
||||
// you can specify an additional class (or classes) that will be added to the Klaro `div`
|
||||
//additionalClass: 'my-klaro',
|
||||
|
||||
// You can define the UI language directly here. If undefined, Klaro will
|
||||
// use the value given in the global "lang" variable. If that does
|
||||
// not exist, it will use the value given in the "lang" attribute of your
|
||||
// HTML tag. If that also doesn't exist, it will use 'en'.
|
||||
lang: 'de',
|
||||
|
||||
// You can overwrite existing translations and add translations for your
|
||||
// service descriptions and purposes. See `src/translations/` for a full
|
||||
// list of translations that can be overwritten:
|
||||
// https://github.com/KIProtect/klaro/tree/master/src/translations
|
||||
|
||||
// Example config that shows how to overwrite translations:
|
||||
// https://github.com/KIProtect/klaro/blob/master/src/configs/i18n.js
|
||||
translations: {
|
||||
// translationsed defined under the 'zz' language code act as default
|
||||
// translations.
|
||||
zz: {
|
||||
privacyPolicyUrl: '/datenschutz',
|
||||
},
|
||||
// If you erase the "consentModal" translations, Klaro will use the
|
||||
// bundled translations.
|
||||
de: {
|
||||
privacyPolicyUrl: '/datenschutz',
|
||||
|
||||
consentModal: {
|
||||
title: '<u>Cookie Consent Tool</u>',
|
||||
description:
|
||||
'Wir verwenden Cookies um Inhalte und Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Ich bin damit einverstanden und kann meine Einwilligung jederzeit mit Wirkung für die Zukunft widerrufen oder ändern.',
|
||||
},
|
||||
googleFonts: {
|
||||
description: 'Web-Schriftarten von Google gehostet',
|
||||
},
|
||||
purposes: {
|
||||
analytics: 'Besucher-Statistiken',
|
||||
security: 'Sicherheit',
|
||||
livechat: 'Live Chat',
|
||||
advertising: 'Anzeigen von Werbung',
|
||||
styling: 'Styling',
|
||||
},
|
||||
},
|
||||
en: {
|
||||
consentModal: {
|
||||
title: '<u>Cookie Consent Tool</u>',
|
||||
description:
|
||||
'We use cookies to provide content and social media features and to analyze traffic to our website. I agree to this and can revoke or change my consent at any time with effect for the future.',
|
||||
},
|
||||
googleFonts: {
|
||||
description: 'Web fonts hosted by Google',
|
||||
},
|
||||
purposes: {
|
||||
analytics: 'Analytics',
|
||||
security: 'Security',
|
||||
livechat: 'Livechat',
|
||||
advertising: 'Advertising',
|
||||
styling: 'Styling',
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
// This is a list of third-party services that Klaro will manage for you.
|
||||
services: [
|
||||
{
|
||||
name: 'twitter',
|
||||
default: true,
|
||||
contextualConsentOnly: true,
|
||||
purposes: ['marketing'],
|
||||
},
|
||||
{
|
||||
name: 'youtube',
|
||||
default: true,
|
||||
purposes: ['marketing'],
|
||||
},
|
||||
{
|
||||
name: 'doctolib',
|
||||
default: true,
|
||||
purposes: ['styling'],
|
||||
|
||||
cookies: [
|
||||
[/^__cf_bm.*$/, '/', '.doctolib.de'],
|
||||
[/^_doctolib_session.*$/, '/', 'partners.doctolib.de'],
|
||||
[/^cookies.js.*$/, '/', 'partners.doctolib.de'],
|
||||
[/^esid.*$/, '/', 'partners.doctolib.de'],
|
||||
[/^temporary_appointment_id.*$/, '/', 'partners.doctolib.de'],
|
||||
[/^_doctolib_session.*$/, '/', 'www.doctolib.de'],
|
||||
[/^ssid.*$/, '/', 'www.doctolib.de'],
|
||||
['temporary_appointment_id', '/', 'www.doctolib.de'],
|
||||
[/^_pk_.*$/, '/', 'klaro.kiprotect.com'], //for the production version
|
||||
[/^_pk_.*$/, '/', 'localhost'], //for the local version
|
||||
'piwik_ignore',
|
||||
|
||||
],
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
name: 'google-tag-manager',
|
||||
default: true,
|
||||
purposes: ['analytics'],
|
||||
onAccept: `
|
||||
// we notify the tag manager about all services that were accepted. You can define
|
||||
// a custom event in GTM to load the service if consent was given.
|
||||
for(let k of Object.keys(opts.consents)){
|
||||
if (opts.consents[k]){
|
||||
let eventName = 'klaro-'+k+'-accepted'
|
||||
dataLayer.push({'event': eventName})
|
||||
}
|
||||
}
|
||||
// if consent for Google Analytics was granted we enable analytics storage
|
||||
if (opts.consents[opts.vars.googleAnalyticsName || 'google-analytics']){
|
||||
console.log("Google analytics usage was granted")
|
||||
gtag('consent', 'update', {'analytics_storage': 'granted'})
|
||||
}
|
||||
// if consent for Google Ads was granted we enable ad storage
|
||||
if (opts.consents[opts.vars.adStorageName || 'google-ads']){
|
||||
console.log("Google ads usage was granted")
|
||||
gtag('consent', 'update', {'ad_storage': 'granted'})
|
||||
}
|
||||
`,
|
||||
onInit: `
|
||||
// initialization code here (will be executed only once per page-load)
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
window.gtag = function(){dataLayer.push(arguments)}
|
||||
gtag('consent', 'default', {'ad_storage': 'denied', 'analytics_storage': 'denied'})
|
||||
gtag('set', 'ads_data_redaction', true)
|
||||
`,
|
||||
onDecline: `
|
||||
// initialization code here (will be executed only once per page-load)
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
window.gtag = function(){dataLayer.push(arguments)}
|
||||
gtag('consent', 'default', {'ad_storage': 'denied', 'analytics_storage': 'denied'})
|
||||
gtag('set', 'ads_data_redaction', true)
|
||||
`,
|
||||
vars: {
|
||||
googleAnalytics: 'google-analytics'
|
||||
}
|
||||
},
|
||||
{
|
||||
// In GTM, you should define a custom event trigger named `klaro-google-analytics-accepted` which should trigger the Google Analytics integration.
|
||||
default: true,
|
||||
name: 'google-analytics',
|
||||
purposes: ['analytics'],
|
||||
cookies: [
|
||||
/^_ga(_.*)?/ // we delete the Google Analytics cookies if the user declines its use
|
||||
],
|
||||
}
|
||||
],
|
||||
};
|
||||
@@ -0,0 +1,19 @@
|
||||
function zweitterminpruefen() {
|
||||
var e = document.getElementById("Terminzeitraum");
|
||||
var timeidjs = e.value;
|
||||
var e = document.getElementById("impfart");
|
||||
var impfart = e.value;
|
||||
if(impfart == 2){
|
||||
result = $.ajax({
|
||||
type: 'POST',
|
||||
async: false,
|
||||
url: 'inc/zweittermin.php',
|
||||
data: ({
|
||||
timeid: timeidjs
|
||||
})
|
||||
}).responseText;
|
||||
|
||||
document.getElementById("Zweittermin").innerHTML = $result;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,394 @@
|
||||
// Generated by CoffeeScript 1.6.1
|
||||
|
||||
/*!
|
||||
# Responsive Celendar widget script
|
||||
# by w3widgets
|
||||
#
|
||||
# Author: Lukasz Kokoszkiewicz
|
||||
#
|
||||
# Copyright © w3widgets 2013 All Rights Reserved
|
||||
*/
|
||||
|
||||
|
||||
(function() {
|
||||
|
||||
(function($) {
|
||||
"use strict";
|
||||
var Calendar, opts, spy;
|
||||
Calendar = function(element, options) {
|
||||
var time;
|
||||
this.$element = element;
|
||||
this.options = options;
|
||||
this.weekDays = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'];
|
||||
this.time = new Date();
|
||||
this.currentYear = this.time.getFullYear();
|
||||
this.currentMonth = this.time.getMonth();
|
||||
if (this.options.time) {
|
||||
time = this.splitDateString(this.options.time);
|
||||
this.currentYear = time.year;
|
||||
this.currentMonth = time.month;
|
||||
}
|
||||
this.initialDraw();
|
||||
return null;
|
||||
};
|
||||
Calendar.prototype = {
|
||||
addLeadingZero: function(num) {
|
||||
if (num < 10) {
|
||||
return "0" + num;
|
||||
} else {
|
||||
return "" + num;
|
||||
}
|
||||
},
|
||||
applyTransition: function($el, transition) {
|
||||
$el.css('transition', transition);
|
||||
$el.css('-ms-transition', '-ms-' + transition);
|
||||
$el.css('-moz-transition', '-moz-' + transition);
|
||||
return $el.css('-webkit-transition', '-webkit-' + transition);
|
||||
},
|
||||
applyBackfaceVisibility: function($el) {
|
||||
$el.css('backface-visibility', 'hidden');
|
||||
$el.css('-ms-backface-visibility', 'hidden');
|
||||
$el.css('-moz-backface-visibility', 'hidden');
|
||||
return $el.css('-webkit-backface-visibility', 'hidden');
|
||||
},
|
||||
applyTransform: function($el, transform) {
|
||||
$el.css('transform', transform);
|
||||
$el.css('-ms-transform', transform);
|
||||
$el.css('-moz-transform', transform);
|
||||
return $el.css('-webkit-transform', transform);
|
||||
},
|
||||
splitDateString: function(dateString) {
|
||||
var day, month, time, year;
|
||||
time = dateString.split('-');
|
||||
year = parseInt(time[0]);
|
||||
month = parseInt(time[1] - 1);
|
||||
day = parseInt(time[2]);
|
||||
return time = {
|
||||
year: year,
|
||||
month: month,
|
||||
day: day
|
||||
};
|
||||
},
|
||||
initialDraw: function() {
|
||||
return this.drawDays(this.currentYear, this.currentMonth);
|
||||
},
|
||||
editDays: function(events) {
|
||||
var dateString, day, dayEvents, time, _results;
|
||||
_results = [];
|
||||
for (dateString in events) {
|
||||
dayEvents = events[dateString];
|
||||
this.options.events[dateString] = events[dateString];
|
||||
time = this.splitDateString(dateString);
|
||||
day = this.$element.find('[data-year="' + time.year + '"][data-month="' + (time.month + 1) + '"][data-day="' + time.day + '"]').parent('.day');
|
||||
day.removeClass('active');
|
||||
day.find('.badge').remove();
|
||||
day.find('a').removeAttr('href');
|
||||
if (this.currentMonth === time.month || this.options.activateNonCurrentMonths) {
|
||||
_results.push(this.makeActive(day, dayEvents));
|
||||
} else {
|
||||
_results.push(void 0);
|
||||
}
|
||||
}
|
||||
return _results;
|
||||
},
|
||||
clearDays: function(days) {
|
||||
var dateString, day, time, _i, _len, _results;
|
||||
_results = [];
|
||||
for (_i = 0, _len = days.length; _i < _len; _i++) {
|
||||
dateString = days[_i];
|
||||
delete this.options.events[dateString];
|
||||
time = this.splitDateString(dateString);
|
||||
day = this.$element.find('[data-year="' + time.year + '"][data-month="' + (time.month + 1) + '"][data-day="' + time.day + '"]').parent('.day');
|
||||
day.removeClass('active');
|
||||
day.find('.badge').remove();
|
||||
_results.push(day.find('a').removeAttr('href'));
|
||||
}
|
||||
return _results;
|
||||
},
|
||||
clearAll: function() {
|
||||
var day, days, i, _i, _len, _results;
|
||||
this.options.events = {};
|
||||
days = this.$element.find('[data-group="days"] .day');
|
||||
_results = [];
|
||||
for (i = _i = 0, _len = days.length; _i < _len; i = ++_i) {
|
||||
day = days[i];
|
||||
$(day).removeClass('active');
|
||||
$(day).find('.badge').remove();
|
||||
_results.push($(day).find('a').removeAttr('href'));
|
||||
}
|
||||
return _results;
|
||||
},
|
||||
setMonthYear: function(dateString) {
|
||||
var time;
|
||||
time = this.splitDateString(dateString);
|
||||
this.currentMonth = this.drawDays(time.year, time.month);
|
||||
return this.currentYear = time.year;
|
||||
},
|
||||
prev: function() {
|
||||
if (this.currentMonth - 1 < 0) {
|
||||
this.currentYear = this.currentYear - 1;
|
||||
this.currentMonth = 11;
|
||||
} else {
|
||||
this.currentMonth = this.currentMonth - 1;
|
||||
}
|
||||
this.drawDays(this.currentYear, this.currentMonth);
|
||||
if (this.options.onMonthChange) {
|
||||
this.options.onMonthChange.call(this);
|
||||
}
|
||||
return null;
|
||||
},
|
||||
next: function() {
|
||||
if (this.currentMonth + 1 > 11) {
|
||||
this.currentYear = this.currentYear + 1;
|
||||
this.currentMonth = 0;
|
||||
} else {
|
||||
this.currentMonth = this.currentMonth + 1;
|
||||
}
|
||||
this.drawDays(this.currentYear, this.currentMonth);
|
||||
if (this.options.onMonthChange) {
|
||||
this.options.onMonthChange.call(this);
|
||||
}
|
||||
return null;
|
||||
},
|
||||
curr: function() {
|
||||
this.currentYear = this.time.getFullYear();
|
||||
this.currentMonth = this.time.getMonth();
|
||||
this.drawDays(this.currentYear, this.currentMonth);
|
||||
if (this.options.onMonthChange) {
|
||||
this.options.onMonthChange.call(this);
|
||||
}
|
||||
return null;
|
||||
},
|
||||
addOthers: function(day, dayEvents) {
|
||||
var badge;
|
||||
if (typeof dayEvents === "object") {
|
||||
if (dayEvents.number != null) {
|
||||
badge = $("<span></span>").html(dayEvents.number).addClass("badge");
|
||||
if (dayEvents.badgeClass != null) {
|
||||
badge.addClass(dayEvents.badgeClass);
|
||||
}
|
||||
day.append(badge);
|
||||
}
|
||||
if (dayEvents.url) {
|
||||
day.find("a").attr("href", dayEvents.url);
|
||||
}
|
||||
}
|
||||
return day;
|
||||
},
|
||||
makeActive: function(day, dayEvents) {
|
||||
var classes, eventClass, i, _i, _len;
|
||||
if (dayEvents) {
|
||||
if (dayEvents["class"]) {
|
||||
classes = dayEvents["class"].split(" ");
|
||||
for (i = _i = 0, _len = classes.length; _i < _len; i = ++_i) {
|
||||
eventClass = classes[i];
|
||||
day.addClass(eventClass);
|
||||
}
|
||||
} else {
|
||||
day.addClass("active");
|
||||
}
|
||||
day = this.addOthers(day, dayEvents);
|
||||
}
|
||||
return day;
|
||||
},
|
||||
getDaysInMonth: function(year, month) {
|
||||
return new Date(year, month + 1, 0).getDate();
|
||||
},
|
||||
drawDay: function(lastDayOfMonth, yearNum, monthNum, dayNum, i) {
|
||||
var calcDate, dateNow, dateString, day, dayDate, pastFutureClass;
|
||||
day = $("<div></div>").addClass("day");
|
||||
dateNow = new Date();
|
||||
dateNow.setHours(0, 0, 0, 0);
|
||||
dayDate = new Date(yearNum, monthNum - 1, dayNum);
|
||||
if (dayDate.getTime() < dateNow.getTime()) {
|
||||
pastFutureClass = "past";
|
||||
} else if (dayDate.getTime() === dateNow.getTime()) {
|
||||
pastFutureClass = "today";
|
||||
} else {
|
||||
pastFutureClass = "future";
|
||||
}
|
||||
day.addClass(this.weekDays[i % 7]);
|
||||
day.addClass(pastFutureClass);
|
||||
dateString = yearNum + "-" + this.addLeadingZero(monthNum) + "-" + this.addLeadingZero(dayNum);
|
||||
if (dayNum <= 0 || dayNum > lastDayOfMonth) {
|
||||
calcDate = new Date(yearNum, monthNum - 1, dayNum);
|
||||
dayNum = calcDate.getDate();
|
||||
monthNum = calcDate.getMonth() + 1;
|
||||
yearNum = calcDate.getFullYear();
|
||||
day.addClass("not-current").addClass(pastFutureClass);
|
||||
if (this.options.activateNonCurrentMonths) {
|
||||
dateString = yearNum + "-" + this.addLeadingZero(monthNum) + "-" + this.addLeadingZero(dayNum);
|
||||
}
|
||||
}
|
||||
day.append($("<a>" + dayNum + "</a>").attr("data-day", dayNum).attr("data-month", monthNum).attr("data-year", yearNum));
|
||||
if (this.options.monthChangeAnimation) {
|
||||
this.applyTransform(day, 'rotateY(180deg)');
|
||||
this.applyBackfaceVisibility(day);
|
||||
}
|
||||
day = this.makeActive(day, this.options.events[dateString]);
|
||||
return this.$element.find('[data-group="days"]').append(day);
|
||||
},
|
||||
drawDays: function(year, month) {
|
||||
var currentMonth, day, dayBase, days, delay, draw, firstDayOfMonth, i, lastDayOfMonth, loopBase, monthNum, multiplier, thisRef, time, timeout, yearNum, _i, _len;
|
||||
thisRef = this;
|
||||
time = new Date(year, month);
|
||||
currentMonth = time.getMonth();
|
||||
monthNum = time.getMonth() + 1;
|
||||
yearNum = time.getFullYear();
|
||||
time.setDate(1);
|
||||
firstDayOfMonth = this.options.startFromSunday ? time.getDay() + 1 : time.getDay() || 7;
|
||||
lastDayOfMonth = this.getDaysInMonth(year, month);
|
||||
timeout = 0;
|
||||
if (this.options.monthChangeAnimation) {
|
||||
days = this.$element.find('[data-group="days"] .day');
|
||||
for (i = _i = 0, _len = days.length; _i < _len; i = ++_i) {
|
||||
day = days[i];
|
||||
delay = i * 0.01;
|
||||
this.applyTransition($(day), 'transform .5s ease ' + delay + 's');
|
||||
this.applyTransform($(day), 'rotateY(180deg)');
|
||||
this.applyBackfaceVisibility($(day));
|
||||
timeout = (delay + 0.1) * 1000;
|
||||
}
|
||||
}
|
||||
dayBase = 2;
|
||||
if (this.options.allRows) {
|
||||
loopBase = 42;
|
||||
} else {
|
||||
multiplier = Math.ceil((firstDayOfMonth - (dayBase - 1) + lastDayOfMonth) / 7);
|
||||
loopBase = multiplier * 7;
|
||||
}
|
||||
this.$element.find("[data-head-year]").html(time.getFullYear());
|
||||
this.$element.find("[data-head-month]").html(this.options.translateMonths[time.getMonth()]);
|
||||
draw = function() {
|
||||
var dayNum, setEvents;
|
||||
thisRef.$element.find('[data-group="days"]').empty();
|
||||
dayNum = dayBase - firstDayOfMonth;
|
||||
i = thisRef.options.startFromSunday ? 0 : 1;
|
||||
while (dayNum < loopBase - firstDayOfMonth + dayBase) {
|
||||
thisRef.drawDay(lastDayOfMonth, yearNum, monthNum, dayNum, i);
|
||||
dayNum = dayNum + 1;
|
||||
i = i + 1;
|
||||
}
|
||||
setEvents = function() {
|
||||
var _j, _len1;
|
||||
days = thisRef.$element.find('[data-group="days"] .day');
|
||||
for (i = _j = 0, _len1 = days.length; _j < _len1; i = ++_j) {
|
||||
day = days[i];
|
||||
thisRef.applyTransition($(day), 'transform .5s ease ' + (i * 0.01) + 's');
|
||||
thisRef.applyTransform($(day), 'rotateY(0deg)');
|
||||
}
|
||||
if (thisRef.options.onDayClick) {
|
||||
thisRef.$element.find('[data-group="days"] .day a').click(function() {
|
||||
return thisRef.options.onDayClick.call(this, thisRef.options.events);
|
||||
});
|
||||
}
|
||||
if (thisRef.options.onDayHover) {
|
||||
thisRef.$element.find('[data-group="days"] .day a').hover(function() {
|
||||
return thisRef.options.onDayHover.call(this, thisRef.options.events);
|
||||
});
|
||||
}
|
||||
if (thisRef.options.onActiveDayClick) {
|
||||
thisRef.$element.find('[data-group="days"] .day.active a').click(function() {
|
||||
return thisRef.options.onActiveDayClick.call(this, thisRef.options.events);
|
||||
});
|
||||
}
|
||||
if (thisRef.options.onActiveDayHover) {
|
||||
return thisRef.$element.find('[data-group="days"] .day.active a').hover(function() {
|
||||
return thisRef.options.onActiveDayHover.call(this, thisRef.options.events);
|
||||
});
|
||||
}
|
||||
};
|
||||
return setTimeout(setEvents, 0);
|
||||
};
|
||||
setTimeout(draw, timeout);
|
||||
return currentMonth;
|
||||
}
|
||||
};
|
||||
$.fn.responsiveCalendar = function(option, params) {
|
||||
var init, options, publicFunc;
|
||||
options = $.extend({}, $.fn.responsiveCalendar.defaults, typeof option === 'object' && option);
|
||||
publicFunc = {
|
||||
next: 'next',
|
||||
prev: 'prev',
|
||||
edit: 'editDays',
|
||||
clear: 'clearDays',
|
||||
clearAll: 'clearAll',
|
||||
getYearMonth: 'getYearMonth',
|
||||
jump: 'jump',
|
||||
curr: 'curr'
|
||||
};
|
||||
init = function($this) {
|
||||
var data;
|
||||
options = $.metadata ? $.extend({}, options, $this.metadata()) : options;
|
||||
$this.data('calendar', (data = new Calendar($this, options)));
|
||||
if (options.onInit) {
|
||||
options.onInit.call(data);
|
||||
}
|
||||
return $this.find("[data-go]").click(function() {
|
||||
if ($(this).data("go") === "prev") {
|
||||
data.prev();
|
||||
}
|
||||
if ($(this).data("go") === "next") {
|
||||
return data.next();
|
||||
}
|
||||
});
|
||||
};
|
||||
return this.each(function() {
|
||||
var $this, data;
|
||||
$this = $(this);
|
||||
data = $this.data('calendar');
|
||||
if (!data) {
|
||||
init($this);
|
||||
} else if (typeof option === 'string') {
|
||||
if (publicFunc[option] != null) {
|
||||
data[publicFunc[option]](params);
|
||||
} else {
|
||||
data.setMonthYear(option);
|
||||
}
|
||||
} else if (typeof option === 'number') {
|
||||
data.jump(Math.abs(option) + 1);
|
||||
}
|
||||
return null;
|
||||
});
|
||||
};
|
||||
$.fn.responsiveCalendar.defaults = {
|
||||
translateMonths: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
|
||||
events: {},
|
||||
time: void 0,
|
||||
allRows: true,
|
||||
startFromSunday: false,
|
||||
activateNonCurrentMonths: false,
|
||||
monthChangeAnimation: true,
|
||||
onInit: void 0,
|
||||
onDayClick: void 0,
|
||||
onDayHover: void 0,
|
||||
onActiveDayClick: void 0,
|
||||
onActiveDayHover: void 0,
|
||||
onMonthChange: void 0
|
||||
};
|
||||
spy = $('[data-spy="responsive-calendar"]');
|
||||
if (spy.length) {
|
||||
opts = {};
|
||||
if ((spy.data('translate-months')) != null) {
|
||||
opts.translateMonths = spy.data('translate-months').split(',');
|
||||
}
|
||||
if ((spy.data('time')) != null) {
|
||||
opts.time = spy.data('time');
|
||||
}
|
||||
if ((spy.data('all-rows')) != null) {
|
||||
opts.allRows = spy.data('all-rows');
|
||||
}
|
||||
if ((spy.data('start-from-sunday')) != null) {
|
||||
opts.startFromSunday = spy.data('start-from-sunday');
|
||||
}
|
||||
if ((spy.data('activate-non-current-months')) != null) {
|
||||
opts.activateNonCurrentMonths = spy.data('activate-non-current-months');
|
||||
}
|
||||
if ((spy.data('month-change-animation')) != null) {
|
||||
opts.monthChangeAnimation = spy.data('month-change-animation');
|
||||
}
|
||||
return spy.responsiveCalendar(opts);
|
||||
}
|
||||
})(jQuery);
|
||||
|
||||
}).call(this);
|
||||
Vendored
+9
File diff suppressed because one or more lines are too long
Vendored
+2
File diff suppressed because one or more lines are too long
Vendored
+2
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user