779 Commits

Author SHA1 Message Date
root
dfef3721dc test1 2017-04-15 15:32:26 +02:00
ee451cdd9b some changes 2017-03-30 23:11:57 +02:00
cfdbeeaf46 Merge /home/andis/fetsite 2015-09-14 16:01:15 +02:00
Andreas Stephanides
5542777216 AutoCommit Mon Sep 14 16:00:56 CEST 2015 2015-09-14 16:00:56 +02:00
e341384493 Merge /home/andis/fetsite 2015-09-14 15:56:10 +02:00
Andreas Stephanides
0337131472 AutoCommit Mon Sep 14 15:54:50 CEST 2015 2015-09-14 15:54:50 +02:00
e4a100823f Merge /home/andis/fetsite 2015-09-14 13:50:46 +02:00
Andreas Stephanides
e15526865d AutoCommit Mon Sep 14 13:50:05 CEST 2015 2015-09-14 13:50:05 +02:00
f052940d6c Merge /home/andis/fetsite 2015-09-14 12:06:15 +02:00
7c6e04ca2e inactive facebook config 2015-09-14 12:05:55 +02:00
Andreas Stephanides
1d8bae3aee AutoCommit Mon Sep 14 12:03:04 CEST 2015 2015-09-14 12:03:04 +02:00
Andreas Stephanides
168b4d9e4c AutoCommit Mon Sep 14 01:03:01 CEST 2015 2015-09-14 01:03:01 +02:00
Andreas Stephanides
a47c6fea7a AutoCommit Mon Sep 14 00:03:01 CEST 2015 2015-09-14 00:03:01 +02:00
Andreas Stephanides
10949e9708 AutoCommit Son Sep 13 14:03:06 CEST 2015 2015-09-13 14:03:06 +02:00
Andreas Stephanides
a9c9b22a94 AutoCommit Son Sep 13 13:03:44 CEST 2015 2015-09-13 13:03:44 +02:00
Andreas Stephanides
b073a1a098 AutoCommit Son Sep 13 12:03:20 CEST 2015 2015-09-13 12:03:21 +02:00
Andreas Stephanides
d85a01c810 AutoCommit Son Sep 13 11:03:05 CEST 2015 2015-09-13 11:03:05 +02:00
Andreas Stephanides
4a8e5d393e AutoCommit Son Sep 13 10:03:11 CEST 2015 2015-09-13 10:03:11 +02:00
Andreas Stephanides
97d5427f6d AutoCommit Son Sep 13 00:03:01 CEST 2015 2015-09-13 00:03:01 +02:00
Andreas Stephanides
92667b92e9 AutoCommit Sam Sep 12 22:03:04 CEST 2015 2015-09-12 22:03:04 +02:00
Andreas Stephanides
ff70c31c40 AutoCommit Sam Sep 12 13:03:02 CEST 2015 2015-09-12 13:03:02 +02:00
Andreas Stephanides
3d87ce6fd2 AutoCommit Sam Sep 12 12:03:06 CEST 2015 2015-09-12 12:03:06 +02:00
Andreas Stephanides
cfb42584e1 AutoCommit Sam Sep 12 11:03:02 CEST 2015 2015-09-12 11:03:02 +02:00
Andreas Stephanides
52dac513f7 AutoCommit Sam Sep 12 10:03:56 CEST 2015 2015-09-12 10:03:56 +02:00
Andreas Stephanides
514bdc1ef0 AutoCommit Fre Sep 11 21:03:01 CEST 2015 2015-09-11 21:03:01 +02:00
Andreas Stephanides
e486ab02fd AutoCommit Fre Sep 11 19:03:01 CEST 2015 2015-09-11 19:03:01 +02:00
Andreas Stephanides
0dc83df98c AutoCommit Fre Sep 11 15:03:05 CEST 2015 2015-09-11 15:03:05 +02:00
Andreas Stephanides
9a9c7f74f9 AutoCommit Fre Sep 11 13:03:02 CEST 2015 2015-09-11 13:03:02 +02:00
Andreas Stephanides
68e2d4a5a7 AutoCommit Don Sep 10 22:03:01 CEST 2015 2015-09-10 22:03:01 +02:00
Andreas Stephanides
edaf154549 AutoCommit Don Sep 10 21:03:02 CEST 2015 2015-09-10 21:03:02 +02:00
Andreas Stephanides
f59f0cb05a AutoCommit Don Sep 10 20:03:01 CEST 2015 2015-09-10 20:03:01 +02:00
Andreas Stephanides
b7abbb8a77 AutoCommit Don Sep 10 09:03:01 CEST 2015 2015-09-10 09:03:01 +02:00
Andreas Stephanides
9521f04c72 AutoCommit Don Sep 10 00:03:03 CEST 2015 2015-09-10 00:03:03 +02:00
Andreas Stephanides
01c6fedaee AutoCommit Mit Sep 9 23:03:01 CEST 2015 2015-09-09 23:03:01 +02:00
Andreas Stephanides
1e48881830 AutoCommit Mit Sep 9 22:03:05 CEST 2015 2015-09-09 22:03:05 +02:00
Andreas Stephanides
0da3ee8ed9 AutoCommit Mit Sep 9 11:03:36 CEST 2015 2015-09-09 11:03:37 +02:00
Andreas Stephanides
5531eb089e AutoCommit Die Sep 8 14:03:06 CEST 2015 2015-09-08 14:03:06 +02:00
Andreas Stephanides
8fa549ae23 AutoCommit Mon Sep 7 00:03:01 CEST 2015 2015-09-07 00:03:01 +02:00
Andreas Stephanides
8c2efffff4 AutoCommit Son Sep 6 23:03:05 CEST 2015 2015-09-06 23:03:05 +02:00
Andreas Stephanides
b9079c0525 AutoCommit Son Sep 6 21:03:06 CEST 2015 2015-09-06 21:03:06 +02:00
Andreas Stephanides
d509884aa1 AutoCommit Sam Sep 5 21:03:02 CEST 2015 2015-09-05 21:03:02 +02:00
Andreas Stephanides
13f852cf48 AutoCommit Sam Sep 5 19:03:01 CEST 2015 2015-09-05 19:03:01 +02:00
Andreas Stephanides
a96e48fa36 AutoCommit Sam Sep 5 18:03:02 CEST 2015 2015-09-05 18:03:02 +02:00
Andreas Stephanides
a84332d09f AutoCommit Sam Sep 5 17:03:04 CEST 2015 2015-09-05 17:03:04 +02:00
Andreas Stephanides
4b1d11751d AutoCommit Sam Sep 5 16:03:02 CEST 2015 2015-09-05 16:03:02 +02:00
Andreas Stephanides
eccb090d5c AutoCommit Sam Sep 5 15:03:11 CEST 2015 2015-09-05 15:03:11 +02:00
Andreas Stephanides
c7d12e9a42 AutoCommit Fre Sep 4 14:03:04 CEST 2015 2015-09-04 14:03:04 +02:00
Andreas Stephanides
f7ad93c398 AutoCommit Don Sep 3 16:03:01 CEST 2015 2015-09-03 16:03:01 +02:00
Andreas Stephanides
984e5f4b56 AutoCommit Don Sep 3 12:03:05 CEST 2015 2015-09-03 12:03:05 +02:00
Andreas Stephanides
4835155d06 AutoCommit Don Sep 3 11:03:01 CEST 2015 2015-09-03 11:03:01 +02:00
Andreas Stephanides
e7c21ad95b AutoCommit Don Sep 3 10:03:06 CEST 2015 2015-09-03 10:03:06 +02:00
Andreas Stephanides
889d7ac3d0 AutoCommit Mit Sep 2 23:03:01 CEST 2015 2015-09-02 23:03:01 +02:00
Andreas Stephanides
194a8375dd AutoCommit Mit Sep 2 22:03:01 CEST 2015 2015-09-02 22:03:01 +02:00
Andreas Stephanides
7b9b226e59 AutoCommit Mit Sep 2 21:03:01 CEST 2015 2015-09-02 21:03:01 +02:00
Andreas Stephanides
d4964f40fb AutoCommit Die Sep 1 14:03:03 CEST 2015 2015-09-01 14:03:03 +02:00
Andreas Stephanides
5134dc2e5f AutoCommit Die Sep 1 13:03:03 CEST 2015 2015-09-01 13:03:03 +02:00
Andreas Stephanides
c37040a74b AutoCommit Die Sep 1 12:03:25 CEST 2015 2015-09-01 12:03:25 +02:00
Andreas Stephanides
c1a7d9b7c2 AutoCommit Die Sep 1 10:03:01 CEST 2015 2015-09-01 10:03:01 +02:00
Andreas Stephanides
576b763d82 AutoCommit Die Sep 1 09:03:01 CEST 2015 2015-09-01 09:03:01 +02:00
Andreas Stephanides
c02ee30013 AutoCommit Die Sep 1 01:03:02 CEST 2015 2015-09-01 01:03:02 +02:00
Andreas Stephanides
1cea790324 AutoCommit Die Sep 1 00:03:02 CEST 2015 2015-09-01 00:03:02 +02:00
Andreas Stephanides
3bcd8389d4 AutoCommit Mon Aug 31 23:03:01 CEST 2015 2015-08-31 23:03:01 +02:00
Andreas Stephanides
221bd95cbf AutoCommit Mon Aug 31 22:03:01 CEST 2015 2015-08-31 22:03:01 +02:00
Andreas Stephanides
8c1e430bb2 AutoCommit Mon Aug 31 18:03:21 CEST 2015 2015-08-31 18:03:21 +02:00
Andreas Stephanides
589597509a AutoCommit Mon Aug 31 17:03:03 CEST 2015 2015-08-31 17:03:03 +02:00
Andreas Stephanides
93dbdedf53 AutoCommit Mon Aug 31 16:03:01 CEST 2015 2015-08-31 16:03:01 +02:00
Andreas Stephanides
1bc9d65a44 AutoCommit Mon Aug 31 15:03:01 CEST 2015 2015-08-31 15:03:01 +02:00
Andreas Stephanides
f61231accc AutoCommit Mon Aug 31 14:03:19 CEST 2015 2015-08-31 14:03:19 +02:00
Andreas Stephanides
cec9939144 AutoCommit Mon Aug 31 13:03:02 CEST 2015 2015-08-31 13:03:02 +02:00
Andreas Stephanides
6b324ded44 AutoCommit Son Aug 30 20:03:01 CEST 2015 2015-08-30 20:03:01 +02:00
Andreas Stephanides
18a6821029 AutoCommit Son Aug 30 19:03:01 CEST 2015 2015-08-30 19:03:01 +02:00
Andreas Stephanides
2d9944dfc3 AutoCommit Son Aug 30 18:03:01 CEST 2015 2015-08-30 18:03:01 +02:00
Andreas Stephanides
9dd9c3cc48 AutoCommit Son Aug 30 17:03:01 CEST 2015 2015-08-30 17:03:01 +02:00
Andreas Stephanides
8bfd96d0af AutoCommit Son Aug 30 16:03:01 CEST 2015 2015-08-30 16:03:01 +02:00
Andreas Stephanides
4a671f5cff AutoCommit Son Aug 30 15:03:01 CEST 2015 2015-08-30 15:03:01 +02:00
Andreas Stephanides
5bf63421a6 AutoCommit Son Aug 30 14:03:01 CEST 2015 2015-08-30 14:03:01 +02:00
Andreas Stephanides
723d7be980 Merge branch 'master' of https://github.com/fetsite/fetsite into tests 2015-08-30 13:04:23 +02:00
Andreas Stephanides
e098c0cd36 AutoCommit Son Aug 30 10:03:05 CEST 2015 2015-08-30 10:03:05 +02:00
Andreas Stephanides
bffb978fc7 AutoCommit Don Aug 27 17:03:04 CEST 2015 2015-08-27 17:03:04 +02:00
Andreas Stephanides
8e1e19d3ab AutoCommit Don Aug 27 16:03:04 CEST 2015 2015-08-27 16:03:04 +02:00
Andreas Stephanides
7c2f1f9753 AutoCommit Don Aug 27 15:03:02 CEST 2015 2015-08-27 15:03:02 +02:00
Andreas Stephanides
370c439c29 AutoCommit Don Aug 27 14:03:04 CEST 2015 2015-08-27 14:03:04 +02:00
Andreas Stephanides
1047851b47 AutoCommit Mit Aug 26 12:03:05 CEST 2015 2015-08-26 12:03:05 +02:00
Andreas Stephanides
94cad06e31 AutoCommit Mit Aug 26 11:03:04 CEST 2015 2015-08-26 11:03:04 +02:00
8ed5b7287e small fixes 2015-08-26 09:40:53 +02:00
Andreas Stephanides
934e004416 AutoCommit Sam Aug 22 18:17:03 CEST 2015 2015-08-22 18:17:03 +02:00
Andreas Stephanides
af39f21595 AutoCommit Sam Aug 22 18:03:02 CEST 2015 2015-08-22 18:03:02 +02:00
Andreas Stephanides
82b71f045f Merge branch 'survey' 2015-08-22 17:55:32 +02:00
Andreas Stephanides
37c2d893b6 AutoCommit Sam Aug 22 00:03:01 CEST 2015 2015-08-22 00:03:01 +02:00
Andreas Stephanides
09e3f2568c AutoCommit Fre Aug 21 23:03:02 CEST 2015 2015-08-21 23:03:02 +02:00
Andreas Stephanides
c8e8a0d229 AutoCommit Fre Aug 21 22:03:01 CEST 2015 2015-08-21 22:03:01 +02:00
Andreas Stephanides
bfe65e14e3 AutoCommit Fre Aug 21 21:03:01 CEST 2015 2015-08-21 21:03:01 +02:00
Andreas Stephanides
c396c7410e AutoCommit Fre Aug 21 20:03:03 CEST 2015 2015-08-21 20:03:03 +02:00
Andreas Stephanides
6102587cab AutoCommit Don Aug 20 11:03:23 CEST 2015 2015-08-20 11:03:23 +02:00
Andreas Stephanides
8b0e655a88 AutoCommit Mit Aug 19 23:03:02 CEST 2015 2015-08-19 23:03:02 +02:00
Andreas Stephanides
3c493ae9d4 AutoCommit Mit Aug 19 22:03:03 CEST 2015 2015-08-19 22:03:03 +02:00
Andreas Stephanides
38f5591ee2 AutoCommit Mit Aug 19 21:03:04 CEST 2015 2015-08-19 21:03:04 +02:00
Andreas Stephanides
06599b5ce7 AutoCommit Mit Aug 19 20:03:01 CEST 2015 2015-08-19 20:03:01 +02:00
Andreas Stephanides
578dcdfbd6 AutoCommit Mit Aug 19 19:03:04 CEST 2015 2015-08-19 19:03:04 +02:00
Andreas Stephanides
1ce070aab3 AutoCommit Mit Aug 19 18:03:01 CEST 2015 2015-08-19 18:03:01 +02:00
Andreas Stephanides
11d95e71d2 AutoCommit Die Aug 11 00:03:03 CEST 2015 2015-08-11 00:03:03 +02:00
Andreas Stephanides
0ad67e860c AutoCommit Mon Aug 10 22:03:02 CEST 2015 2015-08-10 22:03:02 +02:00
Andreas Stephanides
cc45de5791 AutoCommit Mon Aug 10 21:03:04 CEST 2015 2015-08-10 21:03:04 +02:00
Andreas Stephanides
2ef0dc7fb8 AutoCommit Mon Aug 10 20:03:02 CEST 2015 2015-08-10 20:03:02 +02:00
Andreas Stephanides
d628d6cee8 AutoCommit Mon Aug 10 18:03:03 CEST 2015 2015-08-10 18:03:03 +02:00
Andreas Stephanides
07b0755004 AutoCommit Mon Aug 10 17:03:04 CEST 2015 2015-08-10 17:03:04 +02:00
Andreas Stephanides
db53f4843d AutoCommit Mon Aug 10 16:03:01 CEST 2015 2015-08-10 16:03:01 +02:00
Andreas Stephanides
7c180080ef AutoCommit Mon Aug 10 14:03:05 CEST 2015 2015-08-10 14:03:05 +02:00
Andreas Stephanides
3835c0e773 AutoCommit Mon Aug 10 13:03:04 CEST 2015 2015-08-10 13:03:04 +02:00
Andreas Stephanides
58fd356f00 Merge branch 'master' of fet.at:~/fetsite 2015-08-07 17:23:16 +02:00
Andreas Stephanides
cb73bbfa43 lösche unnötiges 2015-08-07 17:21:49 +02:00
Andreas Stephanides
3f57e83d49 AutoCommit Fre Aug 7 11:03:01 CEST 2015 2015-08-07 11:03:01 +02:00
Andreas Stephanides
7419e72eed AutoCommit Fre Aug 7 10:03:04 CEST 2015 2015-08-07 10:03:04 +02:00
Andreas Stephanides
84b88a141c AutoCommit Fre Aug 7 09:03:01 CEST 2015 2015-08-07 09:03:01 +02:00
Andreas Stephanides
13283e0e65 AutoCommit Fre Aug 7 01:03:02 CEST 2015 2015-08-07 01:03:02 +02:00
Andreas Stephanides
c6222cdc23 AutoCommit Fre Aug 7 00:03:02 CEST 2015 2015-08-07 00:03:02 +02:00
Andreas Stephanides
73f364e620 AutoCommit Don Aug 6 23:03:01 CEST 2015 2015-08-06 23:03:01 +02:00
Andreas Stephanides
bdb0025a8c AutoCommit Don Aug 6 22:03:02 CEST 2015 2015-08-06 22:03:02 +02:00
Andreas Stephanides
0c0e7ba051 AutoCommit Don Aug 6 21:03:01 CEST 2015 2015-08-06 21:03:01 +02:00
Andreas Stephanides
390075aa7f AutoCommit Don Aug 6 20:03:03 CEST 2015 2015-08-06 20:03:03 +02:00
Andreas Stephanides
7083da8125 AutoCommit Mit Aug 5 11:03:06 CEST 2015 2015-08-05 11:03:06 +02:00
Andreas Stephanides
3a4888c9a4 AutoCommit Mit Aug 5 09:03:03 CEST 2015 2015-08-05 09:03:03 +02:00
Andreas Stephanides
9b1c35f499 AutoCommit Die Aug 4 22:03:01 CEST 2015 2015-08-04 22:03:01 +02:00
Andreas Stephanides
aa06d2195e AutoCommit Die Aug 4 17:03:24 CEST 2015 2015-08-04 17:03:24 +02:00
Andreas Stephanides
d88edd708d AutoCommit Mon Aug 3 09:03:01 CEST 2015 2015-08-03 09:03:01 +02:00
Andreas Stephanides
e7a328737c AutoCommit Mon Aug 3 08:03:01 CEST 2015 2015-08-03 08:03:01 +02:00
Andreas Stephanides
1a12a3d394 AutoCommit Son Aug 2 17:03:02 CEST 2015 2015-08-02 17:03:03 +02:00
Andreas Stephanides
bbb924fcfb AutoCommit Son Aug 2 16:03:01 CEST 2015 2015-08-02 16:03:01 +02:00
Andreas Stephanides
270f42bba1 AutoCommit Son Aug 2 15:03:01 CEST 2015 2015-08-02 15:03:01 +02:00
Andreas Stephanides
15b70ad8c6 AutoCommit Son Aug 2 10:03:02 CEST 2015 2015-08-02 10:03:02 +02:00
Andreas Stephanides
f71171f509 css & destroy 2015-08-01 23:38:06 +02:00
Andreas Stephanides
38183bdc00 fixes fuer choices 2015-08-01 23:37:41 +02:00
Andreas Stephanides
9933718750 AutoCommit Sam Aug 1 23:03:02 CEST 2015 2015-08-01 23:03:02 +02:00
Andreas Stephanides
2b01a87d15 AutoCommit Sam Aug 1 22:03:01 CEST 2015 2015-08-01 22:03:01 +02:00
Andreas Stephanides
2a7ae7c2bf AutoCommit Sam Aug 1 21:03:02 CEST 2015 2015-08-01 21:03:02 +02:00
Andreas Stephanides
aa6f03574e AutoCommit Sam Aug 1 20:03:01 CEST 2015 2015-08-01 20:03:01 +02:00
Andreas Stephanides
dae218c4ff AutoCommit Sam Aug 1 16:03:03 CEST 2015 2015-08-01 16:03:03 +02:00
Andreas Stephanides
ab0559a45c AutoCommit Sam Aug 1 15:03:01 CEST 2015 2015-08-01 15:03:01 +02:00
Andreas Stephanides
cc764f68af AutoCommit Sam Aug 1 14:03:01 CEST 2015 2015-08-01 14:03:01 +02:00
Andreas Stephanides
fb99d55734 AutoCommit Sam Aug 1 13:03:01 CEST 2015 2015-08-01 13:03:01 +02:00
Andreas Stephanides
234880d90e AutoCommit Sam Aug 1 12:03:01 CEST 2015 2015-08-01 12:03:01 +02:00
Andreas Stephanides
a079a88dbc AutoCommit Sam Aug 1 11:03:01 CEST 2015 2015-08-01 11:03:01 +02:00
Andreas Stephanides
d5571b38fa AutoCommit Sam Aug 1 01:03:01 CEST 2015 2015-08-01 01:03:01 +02:00
Andreas Stephanides
ca6deabb34 AutoCommit Sam Aug 1 00:03:01 CEST 2015 2015-08-01 00:03:01 +02:00
Andreas Stephanides
786cde0d08 AutoCommit Fre Jul 31 23:03:01 CEST 2015 2015-07-31 23:03:01 +02:00
Andreas Stephanides
4bb81ef9d1 AutoCommit Fre Jul 31 22:03:01 CEST 2015 2015-07-31 22:03:01 +02:00
Andreas Stephanides
ca903cf84b AutoCommit Fre Jul 31 21:03:04 CEST 2015 2015-07-31 21:03:04 +02:00
Andreas Stephanides
cd5f415ca1 update für questions 2015-07-31 18:32:36 +02:00
Andreas Stephanides
8a867b72a3 AutoCommit Fre Jul 31 18:03:05 CEST 2015 2015-07-31 18:03:05 +02:00
Andreas Stephanides
02b3a651ca AutoCommit Fre Jul 31 17:03:12 CEST 2015 2015-07-31 17:03:12 +02:00
Andreas Stephanides
e61142382e AutoCommit Fre Jul 31 12:03:05 CEST 2015 2015-07-31 12:03:05 +02:00
Andreas Stephanides
8a4a168fe4 AutoCommit Fre Jul 31 11:03:07 CEST 2015 2015-07-31 11:03:07 +02:00
Andreas Stephanides
b450757e47 AutoCommit Fre Jul 31 10:03:05 CEST 2015 2015-07-31 10:03:05 +02:00
Andreas Stephanides
a9e413ada0 change gitignore 2015-07-31 09:01:55 +02:00
Andreas Stephanides
2193fcc49e AutoCommit Don Jul 30 14:03:07 CEST 2015 2015-07-30 14:03:07 +02:00
Andreas Stephanides
1e72b8e6ce AutoCommit Don Jul 30 02:03:02 CEST 2015 2015-07-30 02:03:02 +02:00
Andreas Stephanides
f161d15174 AutoCommit Don Jul 30 01:03:05 CEST 2015 2015-07-30 01:03:05 +02:00
Andreas Stephanides
97df081b33 AutoCommit Don Jul 30 00:03:02 CEST 2015 2015-07-30 00:03:02 +02:00
Andreas Stephanides
068c2a2e55 AutoCommit Fre Jul 17 14:03:07 CEST 2015 2015-07-17 14:03:07 +02:00
Andreas Stephanides
0e9525af81 AutoCommit Fre Jul 17 13:03:05 CEST 2015 2015-07-17 13:03:05 +02:00
Andreas Stephanides
353bbc145f AutoCommit Fre Jul 17 12:03:01 CEST 2015 2015-07-17 12:03:01 +02:00
Andreas Stephanides
d5cc41bfe6 AutoCommit Fre Jul 17 11:03:05 CEST 2015 2015-07-17 11:03:05 +02:00
Andreas Stephanides
9def2be84e AutoCommit Don Jul 16 21:03:06 CEST 2015 2015-07-16 21:03:06 +02:00
Andreas Stephanides
5b70b67bfe AutoCommit Mit Jul 15 12:03:05 CEST 2015 2015-07-15 12:03:05 +02:00
Andreas Stephanides
1d4bc2baab moderator lva 2015-07-14 15:04:28 +02:00
909cefb85b Merge branch 'master' of https://github.com/fetsite/fetsite 2015-07-14 14:38:36 +02:00
Andreas Stephanides
a7b6576fbd fix verwalten lva 2015-07-14 14:30:17 +02:00
07549c6f0e Merge branch 'master' of https://github.com/fetsite/fetsite 2015-07-13 11:52:23 +02:00
Andreas Stephanides
0f221ad4f4 AutoCommit Mon Jul 13 11:03:01 CEST 2015 2015-07-13 11:03:01 +02:00
c356c3c128 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-07-12 09:44:32 +02:00
Andreas Stephanides
880ca238ad fix locale 2 2015-07-12 09:41:02 +02:00
c7902423b5 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-07-12 07:15:57 +02:00
Andreas Stephanides
f16c9a89d5 Store loclae to session 2015-07-12 07:14:17 +02:00
dd94a1b47b Merge branch 'master' of https://github.com/fetsite/fetsite 2015-07-11 20:07:28 +02:00
Andreas Stephanides
5b09d51365 AutoCommit Fre Jul 10 12:03:14 CEST 2015 2015-07-10 12:03:14 +02:00
Andreas Stephanides
5d9571b03a AutoCommit Fre Jul 10 11:03:02 CEST 2015 2015-07-10 11:03:02 +02:00
Andreas Stephanides
b399a961a3 AutoCommit Don Jul 9 17:03:04 CEST 2015 2015-07-09 17:03:04 +02:00
Andreas Stephanides
fe32c2102b AutoCommit Don Jul 9 16:03:02 CEST 2015 2015-07-09 16:03:02 +02:00
Andreas Stephanides
783ba0d030 AutoCommit Don Jul 2 13:03:01 CEST 2015 2015-07-02 13:03:01 +02:00
Andreas Stephanides
7e5e8ea688 AutoCommit Son Jun 28 18:03:01 CEST 2015 2015-06-28 18:03:01 +02:00
48f8c975cd Merge branch 'master' of https://github.com/fetsite/fetsite 2015-06-26 16:21:38 +02:00
Andreas Stephanides
f5cc774c92 AutoCommit Fre Jun 26 16:03:06 CEST 2015 2015-06-26 16:03:06 +02:00
Andreas Stephanides
2ca5f49436 AutoCommit Fre Jun 26 15:03:04 CEST 2015 2015-06-26 15:03:04 +02:00
Andreas Stephanides
6aeccfb1d6 AutoCommit Fre Jun 26 14:03:06 CEST 2015 2015-06-26 14:03:06 +02:00
Andreas Stephanides
9c073a91c3 AutoCommit Fre Jun 26 13:03:01 CEST 2015 2015-06-26 13:03:01 +02:00
Andreas Stephanides
9fc0efd467 AutoCommit Fre Jun 26 12:03:01 CEST 2015 2015-06-26 12:03:01 +02:00
6b0314af7a merge cachebsp 2015-06-26 11:08:44 +02:00
f718567722 fix cachebsp 2015-06-26 11:07:08 +02:00
Andreas Stephanides
133a882cf8 AutoCommit Don Jun 25 17:04:03 CEST 2015 2015-06-25 17:04:04 +02:00
Andreas Stephanides
a5c950ad46 Merge branch 'master' of github.com:fetsite/fetsite 2015-06-25 16:35:14 +02:00
74e39f45d6 smallfix 2015-06-25 16:33:51 +02:00
Andreas Stephanides
88877ccab0 AutoCommit Don Jun 25 16:03:19 CEST 2015 2015-06-25 16:03:20 +02:00
Andreas Stephanides
b9d436789c beispiel ability cache fix 2015-06-24 11:17:15 +02:00
Andreas Stephanides
d93fd7e6b0 Merge branch 'master' of github.com:fetsite/fetsite 2015-06-24 11:16:43 +02:00
37fc308e46 smallfixes, performance 2015-06-24 11:15:58 +02:00
Andreas Stephanides
fe0980fb6c AutoCommit Mit Jun 24 11:03:03 CEST 2015 2015-06-24 11:03:03 +02:00
1d8b85afa9 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-06-21 16:01:30 +02:00
308b542caa Hot Fixes 2015-06-21 16:01:01 +02:00
Andreas Stephanides
ef4bfa4012 AutoCommit Son Jun 21 01:03:01 CEST 2015 2015-06-21 01:03:01 +02:00
Andreas Stephanides
c62b3b34dd AutoCommit Son Jun 21 00:03:01 CEST 2015 2015-06-21 00:03:01 +02:00
Andreas Stephanides
916f2246f2 AutoCommit Sam Jun 20 20:03:01 CEST 2015 2015-06-20 20:03:01 +02:00
Andreas Stephanides
08c901c04f AutoCommit Sam Jun 20 19:03:05 CEST 2015 2015-06-20 19:03:05 +02:00
Andreas Stephanides
bd0f24603e AutoCommit Sam Jun 20 18:03:01 CEST 2015 2015-06-20 18:03:01 +02:00
Andreas Stephanides
99e32424c7 AutoCommit Sam Jun 20 15:03:01 CEST 2015 2015-06-20 15:03:01 +02:00
Andreas Stephanides
aadf180670 AutoCommit Sam Jun 20 14:03:01 CEST 2015 2015-06-20 14:03:01 +02:00
Andreas Stephanides
67404cc605 AutoCommit Sam Jun 20 13:03:01 CEST 2015 2015-06-20 13:03:01 +02:00
Andreas Stephanides
6e05c3d589 AutoCommit Sam Jun 20 12:03:03 CEST 2015 2015-06-20 12:03:03 +02:00
Andreas Stephanides
a3346e4c7a AutoCommit Sam Jun 20 11:03:04 CEST 2015 2015-06-20 11:03:04 +02:00
Andreas Stephanides
815c81add0 AutoCommit Mit Jun 17 14:03:07 CEST 2015 2015-06-17 14:03:07 +02:00
Andreas Stephanides
7ce34e9d29 AutoCommit Mit Jun 17 13:03:07 CEST 2015 2015-06-17 13:03:07 +02:00
Andreas Stephanides
efe17c681f AutoCommit Die Jun 16 16:03:07 CEST 2015 2015-06-16 16:03:07 +02:00
Andreas Stephanides
3c5ca56b13 AutoCommit Mon Jun 15 18:03:04 CEST 2015 2015-06-15 18:03:04 +02:00
Andreas Stephanides
3618db1376 AutoCommit Mon Jun 15 17:03:08 CEST 2015 2015-06-15 17:03:08 +02:00
Andreas Stephanides
67c3fc8089 intend 2015-06-15 15:39:09 +02:00
Andreas Stephanides
e3624263f5 crawler type 6 2015-06-15 15:39:03 +02:00
Andreas Stephanides
01521104ce crawler link 2015-06-15 15:21:49 +02:00
Andreas Stephanides
72be6c2f10 ability search document 2015-06-15 15:21:22 +02:00
Andreas Stephanides
b0f1a2823f calendar full url 2015-06-11 15:51:09 +02:00
Andreas Stephanides
12a82f519c dependent and calendar 2015-06-11 15:47:26 +02:00
Andreas Stephanides
2f1a63931c fix document 2015-06-11 11:56:11 +02:00
Andreas Stephanides
015ef4a64d search document html redirect 2015-06-11 11:54:40 +02:00
Andreas Stephanides
090e2ad72a document search 2015-06-11 11:36:36 +02:00
Andreas Stephanides
34659014df AutoCommit Don Jun 11 11:03:02 CEST 2015 2015-06-11 11:03:02 +02:00
Andreas Stephanides
9aaacbbb63 AutoCommit Don Jun 11 09:03:21 CEST 2015 2015-06-11 09:03:21 +02:00
Andreas Stephanides
f62ed335ec key, ability fixes 2015-06-10 17:11:21 +02:00
Andreas Stephanides
c57095bbca AutoCommit Mit Jun 10 17:03:04 CEST 2015 2015-06-10 17:03:04 +02:00
Andreas Stephanides
d10401c1c4 AutoCommit Mit Jun 10 11:03:37 CEST 2015 2015-06-10 11:03:37 +02:00
Andreas Stephanides
18a7e33012 AutoCommit Die Jun 9 19:03:02 CEST 2015 2015-06-09 19:03:02 +02:00
Andreas Stephanides
852a893a32 AutoCommit Die Jun 9 18:03:02 CEST 2015 2015-06-09 18:03:02 +02:00
Andreas Stephanides
e70cc8405f AutoCommit Die Jun 9 15:03:01 CEST 2015 2015-06-09 15:03:01 +02:00
Andreas Stephanides
d146cf09a7 AutoCommit Die Jun 9 12:03:27 CEST 2015 2015-06-09 12:03:27 +02:00
Andreas Stephanides
dd9ae1d20b AutoCommit Die Jun 9 10:03:05 CEST 2015 2015-06-09 10:03:05 +02:00
Andreas Stephanides
cc2ab28d16 AutoCommit Mon Jun 8 22:03:14 CEST 2015 2015-06-08 22:03:14 +02:00
Andreas Stephanides
18021fb502 AutoCommit Mon Jun 8 18:03:05 CEST 2015 2015-06-08 18:03:05 +02:00
Andreas Stephanides
45b5798e7d AutoCommit Mon Jun 8 17:03:02 CEST 2015 2015-06-08 17:03:02 +02:00
Andreas Stephanides
dc318e0efb AutoCommit Mon Jun 8 12:03:12 CEST 2015 2015-06-08 12:03:12 +02:00
Andreas Stephanides
c36008729b AutoCommit Don Jun 4 13:03:01 CEST 2015 2015-06-04 13:03:01 +02:00
Andreas Stephanides
6c8e30b701 gitignore 2015-06-04 12:47:52 +02:00
Andreas Stephanides
d3e97ff422 preferred theme 2015-06-03 08:28:09 +02:00
Andreas Stephanides
6c2238e740 blue2 update 2015-06-01 17:21:47 +02:00
Andreas Stephanides
5a7eb23a1f studium form update 2015-05-28 20:17:36 +02:00
Andreas Stephanides
c7e6c5022b Merge branch 'master' of github.com:fetsite/fetsite
Conflicts:
	app/views/neuigkeiten/_form.html.erb
2015-05-28 20:16:33 +02:00
Andreas Stephanides
7c668809dc neuigkeit no fallback for editor 2015-05-24 13:43:37 +02:00
eee8248c0f small fixes 2015-05-24 13:42:26 +02:00
Andreas Stephanides
020e46c2cc long etherpad session 2015-05-13 16:43:36 +02:00
Andreas Stephanides
c86b175250 flag_important 2015-05-13 15:14:02 +02:00
Andreas Stephanides
7b6d2eb57e Merge branch 'master' of github.com:fetsite/fetsite 2015-05-13 15:09:34 +02:00
fa61337459 rake task for crawl 2015-05-13 11:27:02 +02:00
8de4946109 fix lva & crawlobject 2015-05-13 11:26:43 +02:00
79dd7c4f68 unicorn gem 2015-05-13 11:26:04 +02:00
Andreas Stephanides
8eae985a97 add flag important 2015-05-13 11:22:51 +02:00
Andreas Stephanides
c7f87e5aa6 treeview update 2015-05-13 11:22:24 +02:00
Andreas Stephanides
e425a015ba document toolbar 2015-05-13 11:22:10 +02:00
Andreas Stephanides
42b6503707 neuigkeit calentrynil? fix 2015-05-13 11:21:54 +02:00
Andreas Stephanides
bac4c5f924 document toolbar sticky 2015-05-13 11:21:42 +02:00
Andreas Stephanides
03c81104b2 sort meetings 2015-05-13 11:21:16 +02:00
Andreas Stephanides
759d3f8916 attachments 2015-05-13 11:21:08 +02:00
Andreas Stephanides
c7aec6bb9b abiltiy themengruppe 2015-05-13 11:20:54 +02:00
Andreas Stephanides
53977df4c0 ability on thema 2015-05-13 11:20:03 +02:00
Andreas Stephanides
0f11ccfcfe themengruppe check if nil 2015-05-07 20:02:42 +02:00
Andreas Stephanides
69fa1ed634 studien load 2015-05-07 11:15:47 +02:00
Andreas Stephanides
7a3255ef6f studien 2015-05-06 15:23:14 +02:00
Andreas Stephanides
4b71964e26 studien visible 2015-05-06 15:10:16 +02:00
Andreas Stephanides
0656e849bd toc raw 2015-05-05 11:04:40 +02:00
Andreas Stephanides
649664c318 timezone fix 2015-05-05 10:39:40 +02:00
Andreas Stephanides
24ed5d29e3 toc added 2015-05-05 10:39:21 +02:00
Andreas Stephanides
e16762fdd0 crawler update 2015-05-04 13:41:07 +02:00
Andreas Stephanides
a2491ee84d inline tinymce document 2015-05-04 13:40:27 +02:00
Andreas Stephanides
9a9cee5768 view neuigekit meeting 2015-04-29 16:07:54 +02:00
Andreas Stephanides
8a32bff399 sanitize document 2015-04-29 16:07:39 +02:00
Andreas Stephanides
19959b083e time zone 2015-04-29 15:25:10 +02:00
Andreas Stephanides
2d2931cdb8 icon form 2015-04-29 15:24:59 +02:00
Andreas Stephanides
e5df9d3190 use Time.now instead of date 2015-04-28 20:14:20 +02:00
Andreas Stephanides
caaea67994 style update 2015-04-27 17:23:25 +02:00
Andreas Stephanides
160005b79f ignore bin 2015-04-26 18:09:18 +02:00
Andreas Stephanides
4526681198 crawlobject config 2015-04-26 18:09:11 +02:00
Andreas Stephanides
d56d77daef create_pdf 2015-04-26 18:08:46 +02:00
Andreas Stephanides
408a32ae5f ignore 2015-04-22 18:47:02 +02:00
Andreas Stephanides
9e1100f786 rubrik show cache key 2015-04-22 18:45:43 +02:00
Andreas Stephanides
7753c80120 crawl routes 2015-04-22 18:43:41 +02:00
Andreas Stephanides
224f2c6f83 tiss link 2015-04-22 18:43:32 +02:00
Andreas Stephanides
036f90e6e5 crawler 2015-04-22 18:43:24 +02:00
Andreas Stephanides
de215c16eb ability for crawlobject 2015-04-22 18:42:18 +02:00
Andreas Stephanides
c88a337de7 fix app helper 2015-04-22 18:41:49 +02:00
Andreas Stephanides
7321a63b37 Merge branch 'master' of github.com:fetsite/fetsite into crawler 2015-04-21 18:56:22 +02:00
c6574cee00 fetprofile validated date 2015-04-21 17:17:01 +02:00
f0bb767ba4 fix cache key 2015-04-20 20:55:17 +02:00
Andreas Stephanides
d757a31e75 Merge branch 'master' into crawler 2015-04-17 11:07:30 +02:00
Andreas Stephanides
682d5687fc remove h from english time 2015-04-17 10:50:05 +02:00
Andreas Stephanides
6bb7cb917c fix meeting translation 2015-04-14 18:26:03 +02:00
Andreas Stephanides
d8aa87d25a translation date 2015-04-14 18:19:37 +02:00
Andreas Stephanides
e56ff2597b on->am 2015-04-14 18:16:30 +02:00
Andreas Stephanides
bbc8dc27cc date->datum.on 2015-04-14 18:15:18 +02:00
Andreas Stephanides
3a747cb04f date on 2015-04-14 18:08:27 +02:00
Andreas Stephanides
6cc2dad611 date.en 2015-04-14 18:05:39 +02:00
Andreas Stephanides
659653606a move translation for date.on 2015-04-14 18:03:21 +02:00
Andreas Stephanides
34852650d9 Merge branch 'master' of github.com:fetsite/fetsite 2015-04-14 17:58:28 +02:00
Andreas Stephanides
b02dcad387 add a treeview 2015-04-14 17:56:35 +02:00
404b6a858b Merge branch 'master' of https://github.com/fetsite/fetsite 2015-04-10 09:35:28 +02:00
Andreas Stephanides
fdecf48e43 caching 2015-04-10 09:34:59 +02:00
4ac77d6c80 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-04-10 08:48:56 +02:00
Andreas Stephanides
4e8938fdd6 tabs cache #259 fix 2015-04-10 00:15:40 +02:00
61593d9ff4 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-04-09 16:46:38 +02:00
Andreas Stephanides
a729c0ace6 remove empty div 2015-04-09 16:46:03 +02:00
Andreas Stephanides
4f8dd29240 translation meeting 2015-04-09 16:45:54 +02:00
Andreas Stephanides
bd9857c62a tweak neuigkeit sort 2015-04-09 16:45:34 +02:00
Andreas Stephanides
387312f631 #247 2015-04-09 09:14:53 +02:00
Andreas Stephanides
2c6406f268 cache rubrik tabs 2015-04-09 09:14:27 +02:00
Andreas Stephanides
ca4e2ef7cd faq fragezeichen fix 2015-04-09 09:14:01 +02:00
793f8a6a84 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-04-07 23:34:55 +02:00
3a1736c3c5 lva show fix 2015-04-07 23:34:14 +02:00
Andreas Stephanides
88b81be49d new view for beispiel 2015-04-07 23:23:37 +02:00
Andreas Stephanides
5cd9ca9750 meeting new view 2015-04-07 23:23:28 +02:00
Andreas Stephanides
080150f11b attachments has_many for document, neuigkeit, thema 2015-04-07 23:23:14 +02:00
Andreas Stephanides
04b6bcac8a attachments for studium 2015-04-07 23:22:31 +02:00
Andreas Stephanides
6c3c98c919 attachment titlepic for neuigkeit 2015-04-07 23:22:08 +02:00
Andreas Stephanides
0df5e72e15 attachment new version 2015-04-07 23:21:33 +02:00
Andreas Stephanides
b04b23e647 foto exif 2015-04-07 23:19:27 +02:00
Andreas Stephanides
ee137959c4 addcrawlobjects 2015-04-01 00:01:41 +02:00
Andreas Stephanides
bd7aac9bb7 lvs fix 2015-03-30 16:53:00 +02:00
4cd5bffff2 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-03-30 11:24:03 +02:00
32f9e010f8 compact fix 2015-03-30 11:23:49 +02:00
Andreas Stephanides
69c9e346d7 Merge branch 'master' of github.com:fetsite/fetsite 2015-03-30 11:20:54 +02:00
Andreas Stephanides
fe65602b7e fix calentries empty? 2015-03-30 11:19:50 +02:00
Andreas Stephanides
c5fced7176 fix illegal href in div 2015-03-30 11:19:39 +02:00
Andreas Stephanides
5dd021d385 #245 fixed - direkt veröffentlichung von Ankündigungen 2015-03-30 11:19:19 +02:00
7000870853 Merge branch 'master' of https://github.com/fetsite/fetsite
Conflicts:
	app/views/lvas/show.html.erb
2015-03-20 17:29:37 +01:00
f1ba8f7719 fix 404 message for mobile 2015-03-20 17:27:25 +01:00
3d11c09c26 fix lva view 2015-03-20 17:27:12 +01:00
Andreas Stephanides
044d7fc555 lva markup 2015-03-20 17:25:21 +01:00
Andreas Stephanides
c5dd8e9637 higher priority for articles 2015-03-20 17:25:13 +01:00
Andreas Stephanides
e5606ad966 cache menu 2015-03-20 17:24:57 +01:00
Andreas Stephanides
ac9ec1be45 hreflang tag 2015-03-20 17:24:48 +01:00
Andreas Stephanides
5a57062726 remove markup from neuigkeit snippet 2015-03-20 17:24:23 +01:00
Andreas Stephanides
22e782cbee url meta tag 2015-03-16 07:43:04 +01:00
Andreas Stephanides
d58cdb07fb cache key neuigkeitenjs 2015-03-16 07:42:58 +01:00
Andreas Stephanides
4833c8d679 beispiel cache key 2015-03-16 07:42:07 +01:00
Andreas Stephanides
e3faacf586 cache key fix locale calendar 2015-03-15 21:17:46 +01:00
Andreas Stephanides
6a785b55df cache key fix 2015-03-15 21:15:41 +01:00
Andreas Stephanides
e4f54b1ca8 neuigkeit cache 2015-03-15 20:57:26 +01:00
Andreas Stephanides
351174bd17 cahce locale 2015-03-15 20:53:51 +01:00
Andreas Stephanides
99a9ad6c07 cache key fix2 2015-03-15 20:51:20 +01:00
Andreas Stephanides
58f7fb8b27 calentries fix2 2015-03-15 20:17:28 +01:00
Andreas Stephanides
0c643d4347 fix calender cache key 2015-03-15 20:15:36 +01:00
Andreas Stephanides
94c488ce59 FIX calentries cache 2015-03-15 20:10:29 +01:00
Andreas Stephanides
b5884a4ae5 calentries cache key 2015-03-15 20:01:44 +01:00
Andreas Stephanides
012f46d17f calendar cache 2015-03-15 19:52:40 +01:00
Andreas Stephanides
2e9910b4ea style box 2015-03-15 19:50:52 +01:00
Andreas Stephanides
1981efafac themen print + gremien view 2015-03-15 19:50:42 +01:00
Andreas Stephanides
001c2e3070 startpage new 2015-03-15 19:50:17 +01:00
Andreas Stephanides
76c0565a7c documents show toolbar 2015-03-15 19:49:18 +01:00
Andreas Stephanides
27d478281e document styling print version 2015-03-15 13:10:37 +01:00
Andreas Stephanides
34c0374877 meeting style 2015-03-15 13:09:05 +01:00
Andreas Stephanides
3cc9de7d29 Merge branch 'master' of github.com:fetsite/fetsite
Conflicts:
	app/controllers/application_controller.rb
2015-03-09 17:40:52 +01:00
Andreas Stephanides
d5e0d20884 app controler url parameter 2015-03-09 17:39:33 +01:00
63e3d68053 fixes 2015-03-09 17:37:02 +01:00
Andreas Stephanides
c9f58dea34 fix published scope 2015-03-09 00:42:18 +01:00
Andreas Stephanides
8046b1ac7f only published news in sitemap 2015-03-09 00:36:13 +01:00
Andreas Stephanides
1f790c3f9b sitemap news name 2015-03-09 00:04:38 +01:00
Andreas Stephanides
6e9b2b8d7b fix update cache 2015-03-08 22:57:40 +01:00
Andreas Stephanides
b76239c850 neuigkeit relevant date 2015-03-08 22:33:50 +01:00
Andreas Stephanides
badb43c7e3 rubriken tabs 2015-03-08 22:13:30 +01:00
Andreas Stephanides
f2131f7725 lva fix 2015-03-08 22:13:16 +01:00
Andreas Stephanides
9b46f868da thema doku 2015-03-08 22:13:05 +01:00
Andreas Stephanides
d02b3a7e69 calentry neuigkeit order 2015-03-08 22:12:55 +01:00
Andreas Stephanides
fc19206edd gremium tags 2015-03-08 22:11:56 +01:00
Andreas Stephanides
8bf5583e00 caching fuer neuigkeiten and bsp 2015-03-06 16:41:08 +01:00
Andreas Stephanides
bd3c3a25e1 document versions 2015-03-06 16:40:47 +01:00
Andreas Stephanides
06dd5ff5bb 2003 theme inaktive 2015-03-06 16:40:17 +01:00
Andreas Stephanides
f663da2bb0 Imageobject on profile 2015-03-05 16:11:33 +01:00
Andreas Stephanides
89640623be cache update fuer neuigkeit 2015-03-05 15:55:34 +01:00
83eaca3cba ability fix 2015-03-05 15:51:03 +01:00
Andreas Stephanides
02c5cc2d55 neuigkeiten sort und ability 2015-03-04 15:51:44 +01:00
Andreas Stephanides
c01590f36c fetprofile fix 2015-03-04 15:50:53 +01:00
Andreas Stephanides
6736e4cf04 Merge branch 'master' of github.com:fetsite/fetsite 2015-03-03 20:06:14 +01:00
Andreas Stephanides
ee69c09aa4 neuigkeit cache added 2015-03-03 20:06:08 +01:00
0d6e11299a fix neuigkeiten 2015-03-03 18:12:22 +01:00
Andreas Stephanides
8718a77e4f neuigkeit update 2015-03-02 19:12:07 +01:00
Andreas Stephanides
1926c51836 foto update 2015-03-02 19:03:31 +01:00
Andreas Stephanides
97b646ec7d gallery div fix 2015-02-28 17:56:26 +01:00
Andreas Stephanides
c55a2479e8 shareable 2015-02-28 16:22:01 +01:00
Andreas Stephanides
bf774d27eb Merge branch 'master' of github.com:fetsite/fetsite 2015-02-28 15:14:37 +01:00
Andreas Stephanides
97bef49aba fix gallery histitem 2015-02-28 15:14:02 +01:00
fa33d76656 merge Merge branch 'master' of https://github.com/fetsite/fetsite
Conflicts:
	app/views/galleries/show.html.erb
2015-02-28 15:07:50 +01:00
Andreas Stephanides
c71cef48fa do not fix links for themen 2015-02-28 15:02:52 +01:00
Andreas Stephanides
62b6f8ca88 gallery fixes 2015-02-28 15:02:22 +01:00
Andreas Stephanides
f07925701d tinymce relative urls 2015-02-28 15:01:56 +01:00
Andreas Stephanides
be24c23751 gitignore update 2015-02-28 13:31:19 +01:00
Andreas Stephanides
daf258820a gallery foto view history fix 2015-02-28 13:27:40 +01:00
Andreas Stephanides
444db14e98 foto fb button 2015-02-25 17:15:14 +01:00
5c112be55c Merge branch 'master' of https://github.com/fetsite/fetsite 2015-02-25 17:10:44 +01:00
Andreas Stephanides
2f37259a53 gallery og tag 2015-02-25 17:10:27 +01:00
7993b2f543 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-02-25 17:09:44 +01:00
3d21645596 gall2 2015-02-25 17:09:31 +01:00
Andreas Stephanides
819f9885b2 gallery og tag 2015-02-25 17:08:29 +01:00
b158d2cb05 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-02-25 17:01:34 +01:00
Andreas Stephanides
d0732cbc57 gallery og tag 2015-02-25 17:00:43 +01:00
ce9d5fc947 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-02-25 16:34:32 +01:00
Andreas Stephanides
5775c1b419 gallery public 2015-02-25 16:34:12 +01:00
735a9493ab Merge branch 'master' of https://github.com/fetsite/fetsite 2015-02-25 16:19:28 +01:00
3e879d620e gallery shwo 0 2015-02-25 16:19:19 +01:00
Andreas Stephanides
6286e2dadf gallery view 2015-02-25 16:18:35 +01:00
Andreas Stephanides
554c7ef937 ability foto 3 2015-02-25 16:15:06 +01:00
Andreas Stephanides
855117a117 ability foto 2 2015-02-25 16:12:12 +01:00
Andreas Stephanides
0575546603 ability fotogallery 2015-02-25 16:07:55 +01:00
Andreas Stephanides
3b332d5272 sitemap fix 2015-02-25 12:41:33 +01:00
Andreas Stephanides
d2816e2d21 sitemap neuigkeit name 2015-02-25 12:40:06 +01:00
c04c8d8f91 fixes in views 2015-02-25 12:16:17 +01:00
Andreas Stephanides
2f7fcc3ca9 gallery fix double 2015-02-25 12:03:26 +01:00
Thomas Blazek
0d1bf9739a fixed no image on the download-view (data-type -> type) 2015-02-25 12:00:53 +01:00
Thomas Blazek
dbf52f11f9 Merge branch 'master' of https://github.com/andreassteph/fetsite into andi_spinnt 2015-02-25 11:43:02 +01:00
Andreas Stephanides
374f535dac sitemap add themen 2015-02-25 11:42:20 +01:00
Andreas Stephanides
ad375d6c10 neuigkeiten Themen view fix 2015-02-25 11:42:12 +01:00
Andreas Stephanides
564c355d2d fetprofile schema 2015-02-25 11:41:59 +01:00
Andreas Stephanides
e410aef098 foto abiltiy 2015-02-25 11:41:13 +01:00
Thomas Blazek
710ef968dc Merge branch 'master' of https://github.com/andreassteph/fetsite into andi_spinnt 2015-02-25 10:37:12 +01:00
Andreas Stephanides
2ab6be038f neuigkeiten schema.org 2015-02-24 13:50:29 +01:00
Andreas Stephanides
6197f1d15e themen index 2015-02-24 13:50:09 +01:00
Andreas Stephanides
15327c75de alle themen anzeigen 2015-02-24 13:49:29 +01:00
Andreas Stephanides
67d0d19bd7 foto gallery - schema.org und download button 2015-02-24 13:46:43 +01:00
Andreas Stephanides
742962255b show topic default theme 2015-02-23 09:22:07 +01:00
Andreas Stephanides
52a33a027c faq fix 2015-02-23 09:21:54 +01:00
Andreas Stephanides
53ef07ab1a schema.org for neuigkeit 2015-02-23 09:21:48 +01:00
Andreas Stephanides
90f7485c06 themengruppe fix 2015-02-23 09:21:32 +01:00
Andreas Stephanides
63d4e90d72 show sticky topics 2015-02-23 09:21:24 +01:00
Andreas Stephanides
088b3562cc admin fixes 2015-02-23 09:21:14 +01:00
Andreas Stephanides
a0427336c8 sticky topics 2015-02-23 09:19:30 +01:00
Andreas Stephanides
81e97837de filter log fix 2015-02-17 19:31:32 +01:00
e1ffc5ae85 gallery order 2015-02-17 19:04:04 +01:00
e38ec2594d Merge branch 'master' of https://github.com/fetsite/fetsite 2015-02-17 19:02:21 +01:00
743914dc58 Themen show corrected 2015-02-17 19:01:57 +01:00
Andreas Stephanides
1cb6cecf81 Merge branch 'opengraph' 2015-02-17 19:00:37 +01:00
Andreas Stephanides
aa6d291495 admin link 2015-02-17 18:59:58 +01:00
Andreas Stephanides
a82bafd7ac absolut url helper 2015-02-17 18:59:49 +01:00
Andreas Stephanides
415da41236 log file view 2015-02-17 18:59:28 +01:00
Andreas Stephanides
ebe8d1f8df opengraph 2015-02-14 18:24:46 +01:00
Andreas Stephanides
5c8b8dcfe6 fixes 2015-02-14 17:26:37 +01:00
Andreas Stephanides
b4683bd396 rubrik / Themen -> accessible by 2015-02-14 17:26:33 +01:00
Andreas Stephanides
14ebb13bc1 meeting fixes 2015-02-14 17:25:51 +01:00
Andreas Stephanides
195b982ef4 thema show 2015-02-11 20:59:40 +01:00
Andreas Stephanides
29a35f76d8 modify attachments 2015-02-11 20:53:25 +01:00
Andreas Stephanides
5439d33a3c thema show width 2015-02-11 18:54:10 +01:00
Andreas Stephanides
01d8b58777 meta tags für themen 2015-02-11 15:26:29 +01:00
Andreas Stephanides
ddd786994c Merge branch 'master' of github.com:fetsite/fetsite 2015-02-11 01:16:49 +01:00
20240b75de social plugin 2015-02-11 01:14:52 +01:00
Andreas Stephanides
44d35e196f picture url bei neuigkeiten ohne locale und theme 2015-02-10 14:05:20 +01:00
Andreas Stephanides
7326b08729 themen spezifische rollen 2015-02-10 14:04:54 +01:00
Andreas Stephanides
2b483ae9e9 themen auf eigenen seiten anzeigen 2015-02-10 14:04:18 +01:00
Andreas Stephanides
ebf486b347 outdate topics after 7 months 2015-02-09 15:38:38 +01:00
Andreas Stephanides
f1a149908d meetingtyp management 2015-02-09 15:38:21 +01:00
Andreas Stephanides
6c39c40403 precompile blueimp 2015-02-01 20:22:31 +01:00
Thomas Blazek
3720d9cb6b Merge pull request #5 from bernis/master
Fixes bug in Neuigkeiten mobile view, see picture
2015-01-28 12:39:57 +01:00
Bernhard Stampfer
1731714367 Layout changes for blue1
Ist das so ok, oder soll ich besser ein neues theme machen?
2015-01-28 09:35:08 +01:00
Bernhard Stampfer
db0a50acf2 LVA ECTS/Std right-aligned
Uses style="overflow:auto" to keep the Box arround the Modul sized correctly,
even if left and right aligned text uses more than one line.
This seems to hide the bulltes in chromium for some reason (shown in firefox)
2015-01-28 09:18:26 +01:00
Bernhard Stampfer
cdcbce6803 Fixes bug in Neuigkeiten mobile view, see picture
If display width forced header (Rubrik / User+Date) to display in two lines
whole content of Neuigkeit was squeezed to the width of the whitespace left
to the lower line
2015-01-27 17:26:55 +01:00
Thomas Blazek
d91a150d51 addendum 2015-01-27 10:59:09 +01:00
Thomas Blazek
deb8ccf47d started working on menu 2015-01-27 10:58:45 +01:00
Thomas Blazek
6f52496a7a updating beispielupload 2015-01-22 11:19:49 +01:00
Thomas Blazek
0280ebb6a1 Merge pull request #4 from bernis/master
Die spans/offsets + Optische Veränderungen (Hauptseite)
2015-01-21 10:37:48 +01:00
Bernhard Stampfer
a196b56669 Kleinere optische Veränderungen
Bitte umbedingt testen
Etwas größere Maximalbreite des content-wrap (kann man das sauberer ändern?)
5/7 Aufteilung des Contents
Word-wrap in den neuen Beispielen
Einige margins angepasst (oben sind die Boxen jetzt bündig)
2015-01-20 14:58:04 +01:00
Bernhard Stampfer
767df6439b Platzhalter SPAN1s durch OFFSETs ersetzt, reduziert Leerstellen in Mobilansicht
Die span10 mit dem Seiteninhalt wurden von zwei span1 davor und dahinter
zentriert, diese verursachen aber Abstände in der mobilen Ansicht (sind dort
ober und unter dem span10), offset ist denk ich sauberer
2015-01-20 13:05:40 +01:00
Thomas Blazek
028cf58952 started working on beispiel 2015-01-19 18:40:15 +01:00
Thomas Blazek
229a44df4e Alignment/added fix for dropdown 2015-01-19 14:59:14 +01:00
Andreas Stephanides
69b7604761 fix calendar for all 2015-01-18 15:08:18 +01:00
Andreas Stephanides
7a8889dcc4 meeting cont 2015-01-18 14:51:56 +01:00
Andreas Stephanides
b46e19b466 integrate calendar with meetings 2015-01-18 14:32:20 +01:00
Thomas Blazek
e5966bccce I18n korrekturen 2015-01-18 00:30:42 +01:00
Thomas Blazek
7c5ac3b8d7 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-01-18 00:21:19 +01:00
Thomas Blazek
b3000ae542 Show lecturer picture if it exists 2015-01-18 00:19:41 +01:00
Andreas Stephanides
e93b9b7342 Merge branch 'testgallery' 2015-01-17 12:18:14 +01:00
Andreas Stephanides
3c2250b4fc Revert "change meetings"
This reverts commit 585b386e7c.

Conflicts:
	app/controllers/neuigkeiten_controller.rb
2015-01-17 12:16:37 +01:00
edc8f6c2e3 small fixes 2015-01-17 12:04:53 +01:00
057a66966d fix document searchable 2015-01-17 12:04:10 +01:00
Thomas Blazek
9ffebfd4e7 started writing the init script 2015-01-16 15:25:44 +01:00
Thomas Blazek
b7f9cf942b Bildergallerie auf Kurs
Für alle mit löschrechten: 2 Buttons, einer zeigt auf originaldatei,
einer löscht das bild.
2015-01-16 14:41:37 +01:00
Thomas Blazek
9c6038d6dd Gallery show enhancements
a) Worked on better pagination, knows now 25, 50, 100  and "all"
b) Viewer always shows ALL pictures, sorted to fit the order of the
pagination
2015-01-16 12:10:02 +01:00
Thomas Blazek
a9969a6c72 updates 2015-01-16 09:46:01 +01:00
Thomas Blazek
75667ae6ce work in progress 2015-01-16 00:03:09 +01:00
Andreas Stephanides
978d923082 fix blueimp gallery 2015-01-15 16:38:16 +01:00
Andreas Stephanides
c95782744a gemfle update 2015-01-15 16:13:28 +01:00
Andreas Stephanides
fe4d72dcb3 application css scss 2015-01-15 15:57:00 +01:00
Andreas Stephanides
43a551fc28 Merge branch 'master' of https://github.com/Inachos/fetsite into testgallery
Conflicts:
	app/views/layouts/application.html.erb
2015-01-15 15:40:36 +01:00
Thomas Blazek
48e3c1149a added start_topic.yml to gitignore 2015-01-15 15:36:54 +01:00
Thomas Blazek
3dff2d2bbe Fix: Bildergallerie
Bildergallerie läuft jetzt auf Blueimp-gallery.
Viel spaß
2015-01-15 15:36:20 +01:00
Andreas Stephanides
565024c282 blue2 2015-01-15 15:20:19 +01:00
Thomas Blazek
9873c4f1c1 Merge branch 'master' of https://github.com/Inachos/fetsite 2015-01-15 14:38:41 +01:00
Thomas Blazek
f6a95dee57 commit 2015-01-15 14:30:53 +01:00
Thomas Blazek
3a00794851 dfsd 2015-01-15 14:01:16 +01:00
Thomas Blazek
2931ee6cd6 Need to enforce the jquery-fileupload version
0.4.2 broke uploads for me
2015-01-15 12:56:52 +01:00
Thomas Blazek
bcffee7bc9 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-01-14 09:12:56 +01:00
70e34875f1 search results fix 2015-01-14 09:11:09 +01:00
Thomas Blazek
9cc108b2ed Merge branch 'master' of https://github.com/andreassteph/fetsite 2015-01-14 09:10:57 +01:00
1d11b270cf Merge branch 'master' of https://github.com/fetsite/fetsite 2015-01-14 09:08:51 +01:00
Andreas Stephanides
1731d1f3d2 Merge branch 'master' of github.com:fetsite/fetsite 2015-01-14 09:08:05 +01:00
Andreas Stephanides
47b692b243 Suchergebnis darstellung 2015-01-14 09:07:34 +01:00
Thomas Blazek
f95c8469e3 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-01-12 16:54:21 +01:00
Thomas Blazek
25cf052f95 Merge pull request #212 from bernis/master
Sprache/Login im Menü rechtsbündig
2015-01-12 12:26:29 +01:00
Thomas Blazek
85d2bb5bf9 Check for 0 themen 2015-01-11 22:18:31 +01:00
Thomas Blazek
79ba089b70 Merge branch 'master' of https://github.com/Inachos/fetsite
Conflicts:
	Gemfile.lock
	config/routes.rb
2015-01-11 22:18:05 +01:00
Bernhard Stampfer
c879189705 Sprache/Login im Menü rechtsbündig 2015-01-05 18:37:05 +01:00
5b0840a7d2 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-01-04 16:31:51 +01:00
Andreas Stephanides
fd20bd5c90 ability agenda sehen 2015-01-04 16:31:19 +01:00
edecf20a44 Merge branch 'master' of https://github.com/fetsite/fetsite 2015-01-04 16:26:38 +01:00
Andreas Stephanides
940e7211d2 fix meeting auth 2015-01-04 16:25:44 +01:00
40739523c2 fix document typ 2015-01-03 11:40:25 +01:00
81f1db8ff6 Merge remote-tracking branch 'origin' 2015-01-03 10:54:48 +01:00
3799e5f842 configuration for production 2015-01-03 10:52:34 +01:00
Andreas Stephanides
aa080a1eec Buttons doument show 2015-01-03 10:49:41 +01:00
Andreas Stephanides
0cca373f33 document views 2015-01-03 10:08:00 +01:00
Andreas Stephanides
d72f78488d document/meeting updates 2015-01-03 10:06:58 +01:00
Andreas Stephanides
de8802c34a Merge branch 'master' into documentmeeting 2014-12-18 07:50:16 +01:00
52ec22646b Merge branch 'master' of https://github.com/fetsite/fetsite 2014-12-17 17:01:13 +01:00
Andreas Stephanides
9307acf29f fix2 2014-12-17 17:00:50 +01:00
1b3aeadba7 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-12-17 16:58:41 +01:00
Andreas Stephanides
8232b0d0c0 faqs fix 2014-12-17 16:58:24 +01:00
33c1cc6fea Merge branch 'master' of https://github.com/fetsite/fetsite 2014-12-17 16:57:34 +01:00
Andreas Stephanides
bf7111816f faqs 2014-12-17 16:57:13 +01:00
5fdfc944e7 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-12-17 16:51:09 +01:00
Andreas Stephanides
3cddab7276 extend whitelist sanitze 2014-12-17 16:44:34 +01:00
Andreas Stephanides
349753106e gitignore data.yml 2014-12-17 16:42:06 +01:00
Andreas Stephanides
5e6a32c244 yaml_db added 2014-12-17 16:41:42 +01:00
Andreas Stephanides
afb4508e71 updated tinymce config 2014-12-17 16:41:33 +01:00
Andreas Stephanides
d26ab277af merge errors 2014-12-16 09:23:47 +01:00
Andreas Stephanides
881df624b3 Merge remote-tracking branch 'origin/documentmeeting' into documentmeeting
Conflicts:
	app/controllers/documents_controller.rb
	app/controllers/meetings_controller.rb
	app/models/ability.rb
	app/models/document.rb
	app/models/meeting.rb
	app/models/meetingtyp.rb
	app/views/documents/_document.html.erb
	app/views/documents/_nested_form.html.erb
	app/views/documents/edit.js.erb
	app/views/documents/new.js.erb
	app/views/meetings/_meeting.html.erb
	app/views/themen/_small.html.erb
	config/routes.rb
2014-12-16 09:00:43 +01:00
Andreas Stephanides
07944bce89 meeting 2014-12-14 21:30:21 +01:00
Andreas Stephanides
aa98919e88 searchable 2014-12-14 21:30:09 +01:00
Andreas Stephanides
a9ef5c14ba meeting ix 2014-12-12 15:24:20 +01:00
Andreas Stephanides
e411a98b4e Treffen sichtbar 2014-12-08 22:58:22 +01:00
Andreas Stephanides
ab396c002e meeting views 2014-12-08 22:58:21 +01:00
Andreas Stephanides
b259c1080a merge 2014-12-08 22:58:21 +01:00
Andreas Stephanides
87dd70ea44 meetings added, documents added 2014-12-08 22:58:21 +01:00
Andreas Stephanides
c2ea1782ff documents 2014-12-08 22:58:21 +01:00
60d8c6754c send to all 2014-12-08 18:45:10 +01:00
Andreas Stephanides
6ad5a76cc8 logo2014 2014-12-08 17:17:18 +01:00
Andreas Stephanides
cba52fccc2 Merge branch 'master' of github.com:fetsite/fetsite 2014-12-08 17:12:11 +01:00
Andreas Stephanides
2bc428456c logo2014 added , sitemap fix 2014-12-08 17:08:26 +01:00
41d6407093 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-12-08 16:14:28 +01:00
d17e5330e9 sitemap update 2014-12-08 16:14:15 +01:00
Andreas Stephanides
34891f09bf themengruppen statt themen ind der sitmap 2014-12-08 16:09:00 +01:00
Andreas Stephanides
ad6fc74303 whenever 2014-12-08 14:58:29 +01:00
Andreas Stephanides
276496635f extend sitemap 2014-12-08 14:29:01 +01:00
Andreas Stephanides
bd3c6054fb sitemap generator 2014-12-08 13:42:34 +01:00
Andreas Stephanides
71b63187fa fix order 1 2014-12-05 15:04:18 +01:00
Andreas Stephanides
ec82bc5edd themengruppen-themen-reverse 2014-12-05 14:52:15 +01:00
Andreas Stephanides
f0bb4654b4 Merge branch 'master' of github.com:fetsite/fetsite 2014-12-05 14:50:04 +01:00
f90a545fe6 themen reverse 2014-12-05 14:47:54 +01:00
Andreas Stephanides
282d16c086 reformat searchable 2014-12-02 23:29:19 +01:00
2df6f7745e Fix SunSpot and minor fix in calentry 2014-12-02 12:03:14 +01:00
Andreas Stephanides
85c6985a06 lva nlink fix 2014-11-28 20:48:22 +01:00
Andreas Stephanides
dc124e3810 weitere classen durchsuchen 2014-11-28 14:27:44 +01:00
Andreas Stephanides
e9245919c3 ignore log 2014-11-28 14:27:44 +01:00
Andreas Stephanides
a41f964a84 sunspot install 2014-11-28 14:27:44 +01:00
Andreas Stephanides
e49d30a627 Merge branch 'comments' of github.com:andreassteph/fetsite into comments 2014-11-28 14:26:28 +01:00
Andreas Stephanides
80790dcada Revert "beispielcontroller fix :show_comments"
This reverts commit 4815f57a83.
2014-11-28 14:22:43 +01:00
Andreas Stephanides
699517fb56 Revert "removecomments"
This reverts commit 6ee1468ce3.
2014-11-28 14:22:43 +01:00
Andreas Stephanides
741a3abb6d meetings added, documents added 2014-11-26 20:36:04 +01:00
Andreas Stephanides
3a8f84d9b4 Merge branch 'master' of github.com:fetsite/fetsite 2014-11-24 13:43:48 +01:00
Andreas Stephanides
3aafa0cc4e facebook publish fix 2014-11-24 13:43:30 +01:00
Andreas Stephanides
9bef57284e remove article_author 2014-11-24 13:34:56 +01:00
c4e63eac6e neuigkeit mailer host parameter fix 2014-11-20 12:08:39 +01:00
Andreas Stephanides
684d198470 neuigkeit mail host parameter 2014-11-20 11:58:02 +01:00
Andreas Stephanides
8178898db2 link fix news mailer 2014-11-20 11:49:33 +01:00
Andreas Stephanides
1a6c8422b3 neuigkeit mailer text 2014-11-20 11:44:52 +01:00
Andreas Stephanides
65cb400126 documents 2014-11-20 11:40:49 +01:00
Andreas Stephanides
c49ec5e736 calentry js interface 2014-11-16 14:30:04 +01:00
Andreas Stephanides
4c47919543 nlink-modul 2014-11-15 12:53:58 +01:00
Andreas Stephanides
5ee1b68d6e fetprofile picture url 2014-11-13 10:33:19 +01:00
Andreas Stephanides
fd4bd81e96 fetprofile path 2014-11-13 10:19:26 +01:00
Andreas Stephanides
02eba03439 Merge branch 'master' of github.com:fetsite/fetsite
Conflicts:
	app/controllers/application_controller.rb
2014-11-10 20:23:47 +01:00
Andreas Stephanides
24c76a7f5d login fix 2014-11-10 20:20:36 +01:00
9f61769425 app controller 2014-11-08 11:17:53 +01:00
e7933eb7ad Merge branch 'master' of https://github.com/fetsite/fetsite
Conflicts:
	app/views/neuigkeiten/show.html.erb
2014-11-08 11:08:43 +01:00
0308eeaa47 fix picture url 2014-11-08 11:07:55 +01:00
Andreas Stephanides
68fb657c97 meta tag link fix 2014-11-08 11:02:02 +01:00
Andreas Stephanides
e1ee0bc7f9 studieninterface,title 2014-11-08 11:00:42 +01:00
Andreas Stephanides
483fc37345 studium info, modulgruppen 2014-11-08 10:38:22 +01:00
Andreas Stephanides
2a35a29bf5 metaimage neuigkeit nil 2014-11-08 10:30:27 +01:00
Andreas Stephanides
8aa52bc83c redirect after sign in 2014-11-08 10:30:01 +01:00
Andreas Stephanides
5b52a13a4c #180 fixed 2014-10-31 15:07:05 +01:00
Andreas Stephanides
ecb555bc06 #183 fixed 2014-10-31 15:00:46 +01:00
Andreas Stephanides
0463cf57fd meta tag fix 2014-10-30 12:16:27 +01:00
Andreas Stephanides
2855b72bb6 fix public thema 2014-10-29 13:44:17 +01:00
b0abb75d6b thma fix 2014-10-29 13:27:34 +01:00
Andreas Stephanides
6dfeafecb5 nur public thmen wenn themengruppe public 2014-10-29 13:22:18 +01:00
c709202644 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-28 16:54:13 +01:00
Andreas Stephanides
dce5acefeb no robots 2014-10-28 16:53:07 +01:00
Andreas Stephanides
bff600a896 remove hallo welt 2014-10-28 08:44:19 +01:00
Andreas Stephanides
2688bca831 calentry inline form 2014-10-28 08:43:44 +01:00
7f831f8c7a Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-27 15:40:48 +01:00
Andreas Stephanides
2622ed1513 neuigkeiten max_width 2014-10-27 15:40:26 +01:00
Andreas Stephanides
9a2bf17e81 fetprofile redesign 2014-10-27 15:40:12 +01:00
a5294ae7a7 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-27 14:57:27 +01:00
Andreas Stephanides
9c5063b047 fix search form 2014-10-27 14:49:48 +01:00
Andreas Stephanides
378f6c4894 meta data 2014-10-27 14:49:42 +01:00
Andreas Stephanides
27d5d2cda2 hide gallery 2014-10-27 14:49:28 +01:00
Andreas Stephanides
1e34dd4533 meta_tag no theme url 2014-10-27 14:08:30 +01:00
Andreas Stephanides
d1c8002f3b Revert "beispielcontroller fix :show_comments"
This reverts commit 4815f57a83.
2014-10-27 13:00:50 +01:00
Andreas Stephanides
d20c968fa4 Revert "removecomments"
This reverts commit 6ee1468ce3.
2014-10-27 13:00:50 +01:00
Andreas Stephanides
58417fd59f try to fix gallery 2014-10-27 13:00:03 +01:00
b3182c0d97 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-26 13:16:06 +01:00
Andreas Stephanides
f000e91b6d #182 links versteckt 2014-10-26 13:15:12 +01:00
Andreas Stephanides
b4f9e793c3 fix link dialog #181 2014-10-26 13:14:37 +01:00
8b5df8d1f4 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-21 13:31:46 +02:00
Andreas Stephanides
42ecb7dbcb themen scope+ fix search 2014-10-21 13:29:42 +02:00
Andreas Stephanides
ba8a20c3d1 sanitize 2014-10-21 13:29:14 +02:00
Andreas Stephanides
88b1a53fc7 Rate Beispiele text 2014-10-21 13:28:59 +02:00
Andreas Stephanides
54a2aee4c3 translate lva 2014-10-20 16:10:37 +02:00
c90aa756bc Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 22:22:03 +02:00
Andreas Stephanides
cd1982afc6 hard hardcoded host news mailer 2014-10-19 22:21:53 +02:00
7a80700219 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 22:20:08 +02:00
Andreas Stephanides
a73a9b9594 hardcoded host 2014-10-19 22:19:44 +02:00
11d3081624 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 22:16:47 +02:00
Andreas Stephanides
6a2be58a73 default host für mailer 2014-10-19 22:16:34 +02:00
529707ff5d Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 22:11:42 +02:00
Andreas Stephanides
c218e298a6 news mailer 2014-10-19 22:11:30 +02:00
0df979b7b7 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 22:09:49 +02:00
Andreas Stephanides
a337e2a589 host request fix2 2014-10-19 22:09:34 +02:00
98c600bc22 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 22:07:36 +02:00
Andreas Stephanides
4d34375cdc request host -> controller news_mailer 2014-10-19 22:04:06 +02:00
95b6028066 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 22:02:17 +02:00
Andreas Stephanides
7247d67a64 Merge branch 'master' of https://github.com/HausdorffHimself/fetsite 2014-10-19 21:59:29 +02:00
Andreas Stephanides
e548933cbd neuigkeit thumb 2014-10-19 21:59:11 +02:00
Andreas Deutschmann
d321123d49 Fix Gremien Überschrift ohne Beschreibungen 2014-10-19 21:57:51 +02:00
Andreas Deutschmann
309d10bc39 Gremien "Alle Gremien" entfernt 2014-10-19 21:41:14 +02:00
Andreas Stephanides
3254cc86e8 sort & paginate nlinks @ gremium 2014-10-19 21:04:38 +02:00
a6f8c453ab Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 20:47:03 +02:00
e705e5a563 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 20:45:47 +02:00
Andreas Stephanides
8a93f460ca default startpage 2014-10-19 20:41:22 +02:00
Andreas Stephanides
5b81cbcdad blue1 startpage 2014-10-19 20:39:21 +02:00
Andreas Stephanides
2b09735989 lva typ PR 2014-10-19 20:39:00 +02:00
Andreas Stephanides
6343896744 showversions, Neuigkeit 2014-10-19 19:50:24 +02:00
Andreas Stephanides
7436c5c01e rechte für actions versions neuigkeiten 2014-10-19 19:49:33 +02:00
Andreas Stephanides
ad751c0837 button ausblenden wenn nicht eingeloggt 2014-10-19 19:29:29 +02:00
a6a34f5974 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 19:25:56 +02:00
Andreas Stephanides
96ef48cb31 is updated button für themen 2014-10-19 19:25:34 +02:00
dfcfc8892e Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 18:43:02 +02:00
Andreas Stephanides
fd248947f1 add semester 2014-10-19 18:42:25 +02:00
88249c1771 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 17:59:36 +02:00
Andreas Stephanides
faf3151de0 lva Beispiele translate 2014-10-19 17:59:19 +02:00
6f1e819482 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 17:50:06 +02:00
Andreas Stephanides
caa6c0ee4a html fix lva semester 2014-10-19 17:46:10 +02:00
d48e9fe026 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 17:44:03 +02:00
Andreas Stephanides
ba8b7920ea lva semester fix 2014-10-19 17:43:47 +02:00
7581ee99e2 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 17:39:10 +02:00
Andreas Stephanides
9cbe9942e3 modulname fix 2014-10-19 17:38:47 +02:00
6cbb761fc7 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 17:36:30 +02:00
Andreas Stephanides
6613df4b55 lvamodul_fix 2014-10-19 17:36:03 +02:00
9cf06cc02f Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 17:16:56 +02:00
Andreas Stephanides
4fd089a096 fix lva show 2014-10-19 17:16:38 +02:00
ee40680230 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 17:10:56 +02:00
Andreas Stephanides
2de81b5cc7 translate lva 2014-10-19 17:10:04 +02:00
Andreas Stephanides
1394dfc58c rm gemfile.lock 2014-10-19 17:00:05 +02:00
cea69a84fb Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 16:35:42 +02:00
Andreas Stephanides
e81c263ba0 is_wiki fix thmen 2014-10-19 16:35:23 +02:00
b8013a47fd merge gemfile.lock 2014-10-19 16:30:04 +02:00
Andreas Stephanides
55b8e17242 datum vom bsp 2014-10-19 16:29:09 +02:00
a696da2fa2 Merge branch 'master' of https://github.com/fetsite/fetsite 2014-10-19 16:17:38 +02:00
Andreas Stephanides
e7ffb850d5 calentry edit 2014-10-19 16:16:55 +02:00
Andreas Stephanides
e7bc4276db beispielform 2014-10-19 16:16:00 +02:00
74c1877500 Merge branch 'master' of https://github.com/fetsite/fetsite
Conflicts:
	Gemfile.lock
2014-10-19 16:04:38 +02:00
Andreas Stephanides
2fbd277e21 can manage lecturer 2014-10-19 16:03:58 +02:00
a40e5307bf Merge branch 'master' of https://github.com/fetsite/fetsite
Conflicts:
	Gemfile.lock
2014-10-19 15:45:59 +02:00
Andreas Stephanides
94d9653ae2 neuigkeiten show fix 2014-10-19 15:44:19 +02:00
Andreas Stephanides
64f6c86e0f modulgruppen / semesteransicht 2014-10-19 15:42:08 +02:00
Andreas Stephanides
d609b4a5ff metatag neuigkeit 2014-10-19 15:41:50 +02:00
Andreas Stephanides
de77bce5ca order beispiel 2014-10-19 15:41:31 +02:00
Andreas Stephanides
71d1595bac remove refresh button 2014-10-19 15:41:08 +02:00
Andreas Stephanides
327ee73c7a Remove Gemfile.lock 2014-10-17 10:24:48 +02:00
c64e2f9e5a merge fiy 2014-10-17 10:21:04 +02:00
Andreas Stephanides
46490d73bf Merge branch 'master' of github.com:andreassteph/fetsite 2014-10-17 10:18:00 +02:00
Andreas Stephanides
9007cb33c5 header studium show seitentitel 2014-10-17 10:17:24 +02:00
Andreas Stephanides
0aa28cf26c small fix neue verknüpfung dialog 2014-10-17 10:17:24 +02:00
Andreas Stephanides
47dd9d78dc remove wiki gems 2014-10-17 10:17:24 +02:00
Andreas Stephanides
d083d00bbb rmeove wiki 2014-10-17 10:17:24 +02:00
Andreas Stephanides
fcc2c5105c glock 2014-10-17 10:17:24 +02:00
Andreas Stephanides
6639011968 thmen sanitize 2014-10-17 10:17:24 +02:00
Andreas Stephanides
a785cc0bc5 beispielcontroller fix :show_comments 2014-10-17 10:17:24 +02:00
Andreas Stephanides
116d0562d9 removecomments 2014-10-17 10:17:24 +02:00
Andreas Stephanides
1f2cc5d202 meta tags neuigkeit 2014-10-17 10:17:24 +02:00
Andreas Stephanides
a8dd419f9e pagination update 2014-10-17 10:17:24 +02:00
Andreas Stephanides
fc48959e48 nlink fix 2014-10-17 10:17:23 +02:00
Andreas Stephanides
a65f1a8926 lva paper_trail fix 2014-10-17 10:17:23 +02:00
Andreas Stephanides
c40804b5cb membership gremium scope 2014-10-17 10:17:23 +02:00
Andreas Stephanides
f8d00e7b4f beispielsammlungs link 2014-10-17 10:17:23 +02:00
Andreas Stephanides
30a80edb3d datetimepicker fix 2014-10-17 10:17:23 +02:00
Andreas Stephanides
c929025cb6 birthday nil fix 2014-10-17 10:17:23 +02:00
Andreas Stephanides
fce2b0a02a themengruppe verwalten fix link 2014-10-17 10:17:23 +02:00
Andreas Stephanides
974fcaf3d0 Title für rubrik 2014-10-17 10:17:23 +02:00
Andreas Stephanides
7a7128aa32 Pagination fix 2014-10-17 10:17:23 +02:00
Andreas Stephanides
0658a8b423 fetprofiles 2014-10-17 10:17:23 +02:00
1d00b07719 pagination bootstrap update layout 2014-10-17 10:17:23 +02:00
753d4e212f commentslayout fix 2014-10-17 10:17:23 +02:00
0dfc58f125 gemlock 2014-10-17 10:17:23 +02:00
190a69e0ae comments_spec 2014-10-17 10:17:23 +02:00
7d56d10431 comments 2014-10-17 10:17:23 +02:00
2b562fd7e0 Interface Neuigkeiten & Attachment 2014-10-17 10:17:22 +02:00
ed5b2b8685 thmen nur rendern wenn erlaubt 2014-10-17 10:17:22 +02:00
371309ea7b geburtstag anzeigen 2014-10-17 10:17:22 +02:00
5bf20e1a98 contact page new 2014-10-17 10:17:22 +02:00
Andreas Stephanides
d26c11b93f header studium show seitentitel 2014-10-17 10:09:40 +02:00
Andreas Stephanides
599ec23167 small fix neue verknüpfung dialog 2014-10-17 10:09:24 +02:00
Andreas Stephanides
35a95c0922 remove wiki gems 2014-10-16 22:00:58 +02:00
Andreas Stephanides
e1d5cc8d7b rmeove wiki 2014-10-16 21:50:41 +02:00
Andreas Stephanides
629c7941cf glock 2014-10-16 21:44:29 +02:00
Andreas Stephanides
33b30119ea thmen sanitize 2014-10-16 21:44:22 +02:00
Andreas Stephanides
4815f57a83 beispielcontroller fix :show_comments 2014-10-14 13:29:48 +02:00
Andreas Stephanides
6ee1468ce3 removecomments 2014-10-04 12:09:56 +02:00
Andreas Stephanides
6a4d2ff536 meta tags neuigkeit 2014-10-04 09:49:19 +02:00
Andreas Stephanides
fbd51caf3e pagination update 2014-09-24 14:39:59 +02:00
Andreas Stephanides
3365303b61 nlink fix 2014-09-14 18:32:31 +02:00
Andreas Stephanides
017e3cb8c1 lva paper_trail fix 2014-09-14 18:32:03 +02:00
Andreas Stephanides
e8576d532f membership gremium scope 2014-09-14 18:30:56 +02:00
Andreas Stephanides
b11773ac85 beispielsammlungs link 2014-09-14 18:29:29 +02:00
Andreas Stephanides
6c8bd756e5 datetimepicker fix 2014-09-14 12:37:23 +02:00
Andreas Stephanides
4135260421 birthday nil fix 2014-09-14 02:09:16 +02:00
Andreas Stephanides
853bc1e5da themengruppe verwalten fix link 2014-09-14 02:00:21 +02:00
Andreas Stephanides
900f15285d Title für rubrik 2014-09-13 18:14:42 +02:00
Andreas Stephanides
b66a60a215 Pagination fix 2014-09-13 18:14:27 +02:00
Andreas Stephanides
4a635000ce Merge remote-tracking branch 'origin/paginate' into extrafeature 2014-09-13 16:52:01 +02:00
Andreas Stephanides
9869acfc4a Merge remote-tracking branch 'origin/master' into extrafeature 2014-09-13 16:36:31 +02:00
Andreas Stephanides
f5da3ac3dc fetprofiles 2014-09-13 16:35:10 +02:00
Andreas Stephanides
f0e5c0b192 Merge remote-tracking branch 'origin' 2014-09-08 22:30:45 +02:00
Andreas Stephanides
d9c7d48142 Merge branch 'fetsite' 2014-09-08 22:30:12 +02:00
Thomas Blazek
bb3229e826 Merge branch 'master' of https://github.com/thisisaname/fetsite
Conflicts:
	app/controllers/neuigkeiten_controller.rb
	config/routes.rb
2014-08-27 15:31:52 +02:00
Sai
585b386e7c change meetings 2014-08-27 15:22:47 +02:00
c87ce13045 pagination bootstrap update layout 2014-08-21 16:29:29 +05:30
bfb4d54244 commentslayout fix 2014-08-13 15:02:48 +05:30
b409244246 gemlock 2014-08-11 14:39:27 +05:30
3f9d61289c comments_spec 2014-08-11 14:39:27 +05:30
1871c64e6c comments 2014-08-11 14:39:27 +05:30
f5beed1264 UnLike added 2014-08-11 14:39:27 +05:30
658ce0ed27 manage bsp 2014-08-11 14:39:26 +05:30
af9da058ab Interface Neuigkeiten & Attachment 2014-08-11 14:38:14 +05:30
360f6880fe rechte fuer attachment 2014-07-26 08:45:21 +02:00
fabacd6c83 UnLike added 2014-07-24 09:22:57 +02:00
d2f269f15b manage bsp 2014-07-24 09:22:06 +02:00
3347ac89d9 thmen nur rendern wenn erlaubt 2014-07-23 22:57:40 +05:30
74546b1d8d geburtstag anzeigen 2014-07-23 22:57:25 +05:30
caebc36644 contact page new 2014-07-23 22:57:14 +05:30
4de0cfcd26 neue bsp text 2014-07-21 23:56:21 +05:30
bd4f84e7ec ability rework 2014-07-21 23:41:56 +05:30
44a0dc2f98 voteable 2014-07-21 23:41:44 +05:30
e8252fbf16 Beispiele als ZIP Datei 2014-07-19 18:41:50 +05:30
c52e5192c0 upfix 2014-07-18 01:03:23 +05:30
d1d1e6c7e1 uploader fixes 2014-07-18 01:03:14 +05:30
f8a5b57050 Merge branch 'master' of http://github.com/fetsite/fetsite 2014-07-17 17:40:43 +05:30
a0a0306c23 mail to current user 2014-07-17 17:40:36 +05:30
dce0b1507e uploader 2014-07-17 14:08:58 +02:00
3572cb8d01 Merge branch 'master' of http://github.com/andreassteph/fetsite 2014-07-16 06:00:39 +02:00
8d347886c7 Gremium deletes memberships if deleted 2014-07-16 06:00:14 +02:00
6c92fd8607 abilities und beispiel delete 2014-07-16 00:24:34 +05:30
3291ca364b #162 edit_lvas 2014-07-16 00:24:21 +05:30
62facba744 Merge branch 'master' of http://github.com/fetsite/fetsite 2014-07-14 20:41:38 +05:30
111e703274 studien 2014-07-14 20:41:29 +05:30
d823dea5c2 error fixes 2014-07-14 17:09:26 +02:00
adaf924fd7 Merge branch 'master' of http://github.com/fetsite/fetsite 2014-07-09 23:51:38 +05:30
38394df7c3 etforum link 2014-07-09 23:49:48 +05:30
397721f89e Merge branch 'master' of https://github.com/fetsite/fetsite
Conflicts:
	app/views/themen/_form.html.erb
2014-07-09 20:18:07 +02:00
4bc7c4b001 Interface fixes icons,colors 2014-07-09 22:44:42 +05:30
9bd786d053 design neue Farben & icons 2014-07-05 19:20:47 +05:30
6a730c7411 for error 2014-07-04 06:44:48 +02:00
520ce0c6ed Form themen fix1 2014-07-04 06:37:43 +02:00
527743c4c1 tinmce update 2014-07-03 21:31:27 +05:30
d72ece824c Mailer fuer Neuigkeiten added 2014-07-02 12:06:11 +02:00
38716d7a58 neuigkeiten form 2014-06-28 18:11:46 +05:30
b76818eaab fix neuigkeit_path 2014-06-26 10:47:29 +02:00
ee8f2d0076 themessticker, cleanup routes 2014-06-25 23:09:05 +05:30
2ba920331a profile form fixed, themen isdraft 2014-06-24 16:32:00 +05:30
a86d7482f1 Merge branch 'master' of http://github.com/fetsite/fetsite 2014-06-24 16:31:08 +05:30
87bc66f7df sort themen 2014-06-24 13:00:24 +02:00
c1469c5964 home fix 2014-06-24 12:59:49 +02:00
3a8ccdd205 Oberfläche aufräumen... 2014-06-24 13:53:38 +05:30
a87990c338 Zeit formatiert
Datetimepicker fixed, Speichern und weiter
2014-06-21 16:36:30 +05:30
6c9a1b51c4 themen interface cleanup1 2014-06-21 14:53:16 +05:30
6fdee8a7d6 datetimepicker 2014-06-21 14:52:45 +05:30
2df0d89b61 facebookpublish,themen fixes 2014-06-20 00:15:45 +05:30
61510a8891 gemfile 2014-06-15 18:03:57 +05:30
b1c46a3dc3 error fixes 2014-06-14 14:16:16 +02:00
Andreas Stephanides
b0c3c5a08c Merge branch 'master' of github.com:fetsite/fetsite into fetsite 2013-08-25 13:54:50 +02:00
567 changed files with 18774 additions and 3083 deletions

18
.gitignore vendored
View File

@@ -1,3 +1,11 @@
/test2.pdf
/test.pdf
/output.json
/ignore
/app/views/neuigkeiten/_compact.bak.html.erb
/config/crawl_config.yml
/db/data.yml
/db/data_*.yml
/db/.#initdebug.rb /db/.#initdebug.rb
/usergroup.ldif /usergroup.ldif
/newuser.ldif /newuser.ldif
@@ -5,6 +13,7 @@
/config/omniauth_secrets.yml /config/omniauth_secrets.yml
/config/database.yml /config/database.yml
/config/initializers/omniauth_secrets.rb /config/initializers/omniauth_secrets.rb
/config/databas*
# See http://help.github.com/ignore-files/ for more about ignoring files. # See http://help.github.com/ignore-files/ for more about ignoring files.
# #
# If you find yourself ignoring temporary files generated by your text editor # If you find yourself ignoring temporary files generated by your text editor
@@ -25,12 +34,21 @@ Gemfile.lock
/tmp /tmp
/config/initializers/devise.rb /config/initializers/devise.rb
/app/doc/* /app/doc/*
/bin/*
console console
/server /server
/public/uploads/ /public/uploads/
/public/sitemap*
/vendor/* /vendor/*
/bak/* /bak/*
/solr/*
/log/*
*# *#
Gemfile.lock Gemfile.lock
/config/database.yml /config/database.yml
/config/start_topic.yml
/config/contact_topic.yml
.#*
.*
!/.gitignore

0
Fetmailalias, Normal file
View File

83
Gemfile
View File

@@ -9,11 +9,12 @@ gem 'webrick', '1.3.1'
gem 'sqlite3' gem 'sqlite3'
gem 'execjs', '~>1.4.0' gem 'execjs', '~>1.4.0'
gem 'sanitize' gem 'sanitize', :git=>'git://github.com/rgrove/sanitize'
# Gems used only for assets and not required # Gems used only for assets and not required
# in production environments by default. # in production environments by default.
gem 'sass-rails', '~> 3.2' gem 'sass-rails', '~> 3.0'
gem 'coffee-rails', '~> 3.2.1' gem 'coffee-rails', '~> 3.0'
gem 'bootstrap-sass','~> 2.3.2.1' gem 'bootstrap-sass','~> 2.3.2.1'
group :assets do group :assets do
@@ -21,7 +22,7 @@ group :assets do
gem 'therubyracer', :platforms => :ruby gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3' gem 'uglifier', '>= 1.0.3'
end end
gem 'active_record_query_trace'
gem 'jquery-rails' gem 'jquery-rails'
@@ -32,7 +33,7 @@ gem 'jquery-rails'
# gem 'jbuilder' # gem 'jbuilder'
# Use unicorn as the app server # Use unicorn as the app server
# gem 'unicorn' gem 'unicorn'
# Deploy with Capistran # Deploy with Capistran
# gem 'capistrano' # gem 'capistrano'
@@ -43,28 +44,33 @@ gem 'jquery-rails'
# Formbuilder for easier form generation # Formbuilder for easier form generation
gem 'formtastic', '~>2.2.1' gem 'formtastic', '~>2.2.1'
gem 'formtastic-bootstrap', '~>2.1.3' #, :git => "git://github.com/mjbellantoni/formtastic-bootstrap.git"
# gem 'formtastic-bootstrap', '~>2.1.3' #, :git => "git://github.com/mjbellantoni/formtastic-bootstrap.git"
gem 'formtastic-bootstrap', '~>3.0.0' #, :git => "git://github.com/mjbellantoni/formtastic-bootstrap.git"
# TinyMCE # TinyMCE
gem "tinymce-rails" , '~>3.5.8' gem "tinymce-rails" , '~>4.1.0'
# Internationalisierung # Internationalisierung
#gem "globalize3" ,'~>3.0.4' #gem "globalize3" ,'~>3.0.4'
gem "globalize" ,'~>3.0.4'#,:git =>'git://github.com/globalize/globalize.git' gem "globalize" ,'~>3.0.4'#,:git =>'git://github.com/globalize/globalize.git'
gem 'globalize-versioning' gem 'globalize-versioning'
gem 'globalize-accessors'
# Version controll # Version controll
gem "paper_trail" , '>=2.7.0', :git=>'git://github.com/airblade/paper_trail.git' gem "paper_trail" , '~>3.0.5'#, :git=>'git://github.com/airblade/paper_trail.git'
# User management # User management
gem "devise" ,'~>2.2.3' gem "devise" ,'~>2.2.3'
gem "omniauth" gem "omniauth", '~>1.2.2'
gem "omniauth-facebook" gem "omniauth-facebook", '~>2.0.0'
gem "omniauth-ldap" gem "omniauth-ldap", '~>1.0.4'
gem "fb_graph",'~>2.7.17'
gem "meta-tags"
# Roles for users # Roles for users
gem "rolify" gem "rolify", '~>4.0.0'
# Abilities # Abilities
gem "cancan" gem "cancan", '~>1.6.0'
# Fileupload # Fileupload
@@ -72,27 +78,62 @@ gem 'paperclip' ,'~>3.4.0'
gem 'git' gem 'git'
gem 'haml' gem 'haml'
gem 'RedCloth' #gem 'RedCloth'
gem 'wikicloth' #gem 'wikicloth'
gem 'gollum-lib' #gem 'gollum-lib'
gem 'awesome_nested_set' gem 'awesome_nested_set'
gem 'annotate', ">=2.5.0" gem 'annotate', ">=2.5.0"
gem 'carrierwave', "~>0.9.0" gem 'carrierwave', "~>0.9.0"
group :development, :test do group :development, :test do
gem 'factory_girl_rails' gem 'factory_girl_rails',"~>4.5.0"
gem 'rspec-rails' gem 'minitest', "~>4.7.5"
gem 'progress_bar'
gem 'rspec-core', '~>3.3.0'
gem 'rspec-support', '~>3.3.0'
gem 'rspec-rails', '~>3.3.0'
gem 'rspec-collection_matchers', '~>1.1.2'
gem 'rspec-activemodel-mocks', '~>1.0.1'
gem 'rspec-html-matchers', '~>0.7.0'
gem 'rspec-expectations', '~>3.3.1'
gem 'capybara', '~>2.5.0'
end end
gem "simple_calendar", "~> 0.1.9" gem "simple_calendar", "~> 0.1.9"
gem 'rmagick' gem 'rmagick'
gem 'bootstrap-addons-rails' gem 'bootstrap-addons-rails'
gem "jquery-fileupload-rails" gem "jquery-fileupload-rails", "0.4.1"
gem "jquery-ui-rails","~> 4.1.1" gem "jquery-ui-rails","~> 4.1.0"
gem "font-awesome-rails" gem "font-awesome-rails"
gem "jquery-datetimepicker-rails"
# gem "jquery-sortable-rails" # gem "jquery-sortable-rails"
gem "seed_dump", "~> 0.5.3" gem "seed_dump", "~> 0.5.3"
#gem "themes_for_rails" ,:git =>'git://github.com/tkriplean/themes_for_rails.git' #gem "themes_for_rails" ,:git =>'git://github.com/tkriplean/themes_for_rails.git'
#gem "themes_for_rails", :git=> 'git://github.com/lucasefe/themes_for_rails.git' #gem "themes_for_rails", :git=> 'git://github.com/lucasefe/themes_for_rails.git'
gem 'themes_for_rails' gem 'themes_for_rails'
gem 'rubyzip'
gem 'acts_as_votable'
gem 'kaminari'
gem 'bootstrap-kaminari-views', :git=>'git://github.com/matenia/bootstrap-kaminari-views.git'
#gem 'will_paginate', :git=>'git://github.com/mislav/will_paginate.git'
#gem 'bootstrap-will_paginate'
gem 'sunspot_rails'
gem 'sunspot_solr'
gem 'sitemap_generator'
gem 'whenever'
gem 'yaml_db'
gem 'etherpad-lite'
gem 'opengraph_parser'
# Image gallery
gem 'blueimp-gallery'
gem 'blueimp-gallery-rails'
gem 'shareable'
gem 'sunspot_test'

View File

@@ -1,302 +0,0 @@
GIT
remote: git://github.com/airblade/paper_trail.git
revision: 802b7d4ead71703860fcb9befc2c9b2ee05a8b9f
specs:
paper_trail (3.0.0)
activerecord (>= 3.0, < 5.0)
activesupport (>= 3.0, < 5.0)
GEM
remote: https://rubygems.org/
specs:
RedCloth (4.2.9)
actionmailer (3.2.13)
actionpack (= 3.2.13)
mail (~> 2.5.3)
actionpack (3.2.13)
activemodel (= 3.2.13)
activesupport (= 3.2.13)
builder (~> 3.0.0)
erubis (~> 2.7.0)
journey (~> 1.0.4)
rack (~> 1.4.5)
rack-cache (~> 1.2)
rack-test (~> 0.6.1)
sprockets (~> 2.2.1)
activemodel (3.2.13)
activesupport (= 3.2.13)
builder (~> 3.0.0)
activerecord (3.2.13)
activemodel (= 3.2.13)
activesupport (= 3.2.13)
arel (~> 3.0.2)
tzinfo (~> 0.3.29)
activeresource (3.2.13)
activemodel (= 3.2.13)
activesupport (= 3.2.13)
activesupport (3.2.13)
i18n (= 0.6.1)
multi_json (~> 1.0)
annotate (2.6.1)
activerecord (>= 2.3.0)
rake (>= 0.8.7)
arel (3.0.3)
awesome_nested_set (2.1.6)
activerecord (>= 3.0.0)
bcrypt-ruby (3.1.2)
bootstrap-addons-rails (0.1.2)
rails
bootstrap-sass (2.3.2.2)
sass (~> 3.2)
builder (3.0.4)
cancan (1.6.10)
carrierwave (0.9.0)
activemodel (>= 3.2.0)
activesupport (>= 3.2.0)
json (>= 1.7)
charlock_holmes (0.6.9.4)
climate_control (0.0.3)
activesupport (>= 3.0)
cocaine (0.5.3)
climate_control (>= 0.0.3, < 1.0)
coffee-rails (3.2.2)
coffee-script (>= 2.2.0)
railties (~> 3.2.0)
coffee-script (2.2.0)
coffee-script-source
execjs
coffee-script-source (1.6.3)
devise (2.2.8)
bcrypt-ruby (~> 3.0)
orm_adapter (~> 0.1)
railties (~> 3.1)
warden (~> 1.2.1)
diff-lcs (1.2.5)
erubis (2.7.0)
execjs (1.4.0)
multi_json (~> 1.0)
expression_parser (0.9.0)
factory_girl (4.3.0)
activesupport (>= 3.0.0)
factory_girl_rails (4.3.0)
factory_girl (~> 4.3.0)
railties (>= 3.0.0)
faraday (0.8.8)
multipart-post (~> 1.2.0)
font-awesome-rails (4.0.3.1)
railties (>= 3.2, < 5.0)
formtastic (2.2.1)
actionpack (>= 3.0)
formtastic-bootstrap (2.1.3)
formtastic (~> 2.2)
git (1.2.6)
github-markup (0.7.5)
gitlab-grit (2.6.0)
charlock_holmes (~> 0.6.9)
diff-lcs (~> 1.1)
mime-types (~> 1.15)
posix-spawn (~> 0.3.6)
globalize (3.0.4)
activemodel (>= 3.0.0, < 4.0.0)
activerecord (>= 3.0.0, < 4.0.0)
globalize-versioning (0.1.0.alpha.1)
globalize (>= 3, < 5)
paper_trail (~> 3.0.0)
gollum-lib (2.0.0)
github-markup (>= 0.7.5, < 1.0.0)
gitlab-grit (= 2.6.0)
nokogiri (~> 1.6.0)
rouge (~> 1.3.1)
sanitize (~> 2.0.6)
stringex (~> 2.1.0)
haml (4.0.5)
tilt
hashie (2.0.5)
hike (1.2.3)
httpauth (0.2.0)
i18n (0.6.1)
journey (1.0.4)
jquery-fileupload-rails (0.4.1)
actionpack (>= 3.1)
railties (>= 3.1)
jquery-rails (3.0.4)
railties (>= 3.0, < 5.0)
thor (>= 0.14, < 2.0)
jquery-ui-rails (4.1.1)
railties (>= 3.1.0)
json (1.8.1)
jwt (0.1.8)
multi_json (>= 1.5)
libv8 (3.16.14.3)
mail (2.5.4)
mime-types (~> 1.16)
treetop (~> 1.4.8)
mime-types (1.25.1)
mini_portile (0.5.2)
multi_json (1.8.4)
multipart-post (1.2.0)
mysql2 (0.3.14)
net-ldap (0.3.1)
nokogiri (1.6.1)
mini_portile (~> 0.5.0)
oauth2 (0.8.1)
faraday (~> 0.8)
httpauth (~> 0.1)
jwt (~> 0.1.4)
multi_json (~> 1.0)
rack (~> 1.2)
omniauth (1.1.4)
hashie (>= 1.2, < 3)
rack
omniauth-facebook (1.5.1)
omniauth-oauth2 (~> 1.1.0)
omniauth-ldap (1.0.4)
net-ldap (~> 0.3.1)
omniauth (~> 1.0)
pyu-ruby-sasl (~> 0.0.3.1)
rubyntlm (~> 0.1.1)
omniauth-oauth2 (1.1.1)
oauth2 (~> 0.8.0)
omniauth (~> 1.0)
orm_adapter (0.5.0)
paperclip (3.4.2)
activemodel (>= 3.0.0)
activerecord (>= 3.0.0)
activesupport (>= 3.0.0)
cocaine (~> 0.5.0)
mime-types
polyglot (0.3.3)
posix-spawn (0.3.8)
pyu-ruby-sasl (0.0.3.3)
rack (1.4.5)
rack-cache (1.2)
rack (>= 0.4)
rack-ssl (1.3.3)
rack
rack-test (0.6.2)
rack (>= 1.0)
rails (3.2.13)
actionmailer (= 3.2.13)
actionpack (= 3.2.13)
activerecord (= 3.2.13)
activeresource (= 3.2.13)
activesupport (= 3.2.13)
bundler (~> 1.0)
railties (= 3.2.13)
railties (3.2.13)
actionpack (= 3.2.13)
activesupport (= 3.2.13)
rack-ssl (~> 1.3.2)
rake (>= 0.8.7)
rdoc (~> 3.4)
thor (>= 0.14.6, < 2.0)
rake (10.1.1)
rdoc (3.12.2)
json (~> 1.4)
ref (1.0.5)
rinku (1.7.3)
rmagick (2.13.2)
rolify (3.2.0)
rouge (1.3.4)
rspec-core (2.14.7)
rspec-expectations (2.14.4)
diff-lcs (>= 1.1.3, < 2.0)
rspec-mocks (2.14.4)
rspec-rails (2.14.1)
actionpack (>= 3.0)
activemodel (>= 3.0)
activesupport (>= 3.0)
railties (>= 3.0)
rspec-core (~> 2.14.0)
rspec-expectations (~> 2.14.0)
rspec-mocks (~> 2.14.0)
rubyntlm (0.1.1)
sanitize (2.0.6)
nokogiri (>= 1.4.4)
sass (3.2.13)
sass-rails (3.2.6)
railties (~> 3.2.0)
sass (>= 3.1.10)
tilt (~> 1.3)
seed_dump (0.5.3)
simple_calendar (0.1.9)
rails (>= 3.0)
sprockets (2.2.2)
hike (~> 1.2)
multi_json (~> 1.0)
rack (~> 1.0)
tilt (~> 1.1, != 1.3.0)
sqlite3 (1.3.8)
stringex (2.1.2)
themes_for_rails (0.5.1)
rails (>= 3.0.0)
therubyracer (0.12.0)
libv8 (~> 3.16.14.0)
ref
thor (0.18.1)
tilt (1.4.1)
tinymce-rails (3.5.8)
railties (>= 3.1.1)
treetop (1.4.15)
polyglot
polyglot (>= 0.3.1)
tzinfo (0.3.38)
uglifier (2.4.0)
execjs (>= 0.3.0)
json (>= 1.8.0)
warden (1.2.3)
rack (>= 1.0)
webrick (1.3.1)
<<<<<<< Updated upstream
wikicloth (0.8.1)
builder
expression_parser
rinku
PLATFORMS
ruby
DEPENDENCIES
RedCloth
annotate (>= 2.5.0)
awesome_nested_set
bootstrap-addons-rails
bootstrap-sass (~> 2.3.2.1)
cancan
carrierwave (~> 0.9.0)
coffee-rails (~> 3.2.1)
devise (~> 2.2.3)
execjs (~> 1.4.0)
factory_girl_rails
font-awesome-rails
formtastic (~> 2.2.1)
formtastic-bootstrap (~> 2.1.3)
git
globalize (~> 3.0.4)
globalize-versioning
gollum-lib
haml
jquery-fileupload-rails
jquery-rails
jquery-ui-rails (~> 4.1.1)
mysql2
omniauth
omniauth-facebook
omniauth-ldap
paper_trail (>= 2.7.0)!
paperclip (~> 3.4.0)
rails (= 3.2.13)
rmagick
rolify
rspec-rails
sanitize
sass-rails (~> 3.2)
seed_dump (~> 0.5.3)
simple_calendar (~> 0.1.9)
sprockets (= 2.2.2)
sqlite3
themes_for_rails
therubyracer
tinymce-rails (~> 3.5.8)
uglifier (>= 1.0.3)
webrick (= 1.3.1)
wikicloth

0
MyText, Normal file
View File

0
Nachname, Normal file
View File

0
Short, Normal file
View File

0
Vorname, Normal file
View File

Binary file not shown.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,537 @@
<!DOCTYPE html>
<html>
<head>
<title>Flaticon WebFont</title>
<link rel="stylesheet" type="text/css" href="flaticon.css">
<meta charset="UTF-8">
<style>
body {
font-family: sans-serif;
line-height: 1.5;
font-size: 16px;
padding: 20px;
color:#333;
}
* {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
margin: 0;
padding: 0;
}
[class^="flaticon-"]:before, [class*=" flaticon-"]:before, [class^="flaticon-"]:after, [class*=" flaticon-"]:after {
font-family: Flaticon;
font-size: 30px;
font-style: normal;
margin-left: 20px;
color: #333;
}
.image p {
font-size: 12px;
margin: 0px;
clear: none;
width: 300px;
line-height: 40px;
}
.text {
float: left;
font-size:14px;
margin-top: 15px;
}
.text ul {
margin-left:0px;
color:#111;
margin-bottom:20px;
}
.text .ex {
font-size:12px;
color:#666;
margin-left:35px;
display:block;
}
.text ul li {
margin-top:10px;
list-style:none;
}
.num {
background:#66A523;
color:#fff;
border-radius:20px;
padding:1px;
display:inline-block;
width:22px;
height:22px;
text-align:center;
margin-right: 5px;
}
.text ul strong {
font-weight:normal;
color:#000;
}
.image {
width: 280px;
float: left;
margin-bottom: 15px;
margin-right: 30px;
}
#glyphs {
clear: both;
}
.image p:nth-child(even) i {
clear: none;
}
.glyph {
display: inline-block;
width: 120px;
margin: 10px;
text-align: center;
vertical-align: top;
background: #FFF;
}
.glyph .glyph-icon {
padding: 10px;
display: block;
font-family:"Flaticon";
font-size: 64px;
line-height: 1;
}
.glyph .glyph-icon:before {
font-size: 64px;
color: #666;
margin-left: 0;
}
.class-name {
font-size: 12px;
}
.author-name {
font-size: 10px;
}
a{
color: #66A523;
}
.instructions {
font-style:italic;
font-size:22px;
margin-bottom:10px;
}
.iconsuse {
font-size:22px;
font-style:italic;
padding-top:20px;
margin-top:20px;
border-top:1px solid #bbb;
}
.usetitle {
margin-bottom: 10px;
font-size: 20px;
font-style: italic;
}
.class-name:last-child {
font-size: 10px;
color:#888;
}
.class-name:last-child a {
font-size: 10px;
color:#555;
}
.class-name:last-child a:hover {
color:#66A523;
}
.glyph > input {
display: block;
width: 100px;
margin: 5px auto;
text-align: center;
font-size: 12px;
cursor: text;
}
.glyph > input.icon-input {
font-family:"Flaticon";
font-size: 16px;
margin-bottom: 10px;
}
h1.logo {
font-size: 40px;
letter-spacing: -1px;
margin-top: -16px;
text-transform: lowercase;
border-bottom:1px solid #bbb;
}
h1.logo strong {
font-size: 16px;
font-family:sans-serif;
font-weight:normal;
color:#333;
}
h1.logo a {
color:#34302d;
text-decoration: none;
}
h1.logo a span {
color:#66A523;
}
#footer {
padding-top:40px;
clear:both;
text-align:center;
}
#footer a {
color:#66A523;
}
textarea {
margin: 0px;
width: 800px;
height: 150px;
border: 1px solid #CCC;
resize: none;
background: #EEE;
}
.author-link, .attrDiv a{
font-size: 12px;
color: #333;
text-decoration: none;
}
.external {
display: block;
}
.attrDiv {
font-size: 12px;
}
.attribution {
border-top: 1px solid #AAA;
margin: 10px 0;
padding-top: 15px;
}
</style>
</head>
<body>
<header>
<h1 class="logo">
<a href="http://www.flaticon.com">
<span>FLAT</span>ICON</a>
<strong>Font Demo</strong>
</h1>
</header>
<section class="demo">
<div class="text">
<div class="instructions">Instructions:</div>
<ul>
<li>
<p>
<span class="num">1</span>Copy the "Fonts" files and CSS files to your website CSS folder.
</li>
<li>
<p>
<span class="num">2</span>Add the CSS link to your website source code on header.
<br />
<span class="ex">&lt;head&gt;
<br/>...
<br/>&lt;link rel="stylesheet" type="text/css" href="your_website_domain/css_root/flaticon.css"&gt;
<br/>...
<br/>&lt;/head&gt;</span>
</li>
<li>
<p>
<span class="num">3</span>Use the icon class on "display:inline" elements:
<br />
<span class="ex">Use example: &lt;i class=&quot;flaticon-airplane49&quot;&gt;&lt;/i&gt; or &lt;span class=&quot;flaticon-airplane49&quot;&gt;&lt;/span&gt;</span>
</li>
</ul>
</div>
</section>
<section id="glyphs"><div class="glyph">
<div class="glyph-icon flaticon-accident3"></div>
<div class="class-name">.flaticon-accident3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/man-with-arm-injury_18026">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-alphabet3"></div>
<div class="class-name">.flaticon-alphabet3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/alphabet-letters-a-b-and-c_27482">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-angel"></div>
<div class="class-name">.flaticon-angel</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/angel-face_75956">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-angry"></div>
<div class="class-name">.flaticon-angry</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/discontent-boy-face_75489">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-angry2"></div>
<div class="class-name">.flaticon-angry2</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/shouting-boy_75490">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-angry23"></div>
<div class="class-name">.flaticon-angry23</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/angry-emoticon-face-with-opened-mouth-in-rounded-square-outline_42818">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-angry40"></div>
<div class="class-name">.flaticon-angry40</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/anger-face_75495">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-angry41"></div>
<div class="class-name">.flaticon-angry41</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-with-anger-face_75595">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-animal203"></div>
<div class="class-name">.flaticon-animal203</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/fish-with-four-bubbles_85113">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-annulled3"></div>
<div class="class-name">.flaticon-annulled3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/annulled-emoticon-square-face_42874">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-bandaid"></div>
<div class="class-name">.flaticon-bandaid</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/band-aid-forming-a-cross-mark_26590">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-battery88"></div>
<div class="class-name">.flaticon-battery88</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/battery-charging-with-solar-panel_34518">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-book97"></div>
<div class="class-name">.flaticon-book97</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/book-with-bookmark_27478">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-boy11"></div>
<div class="class-name">.flaticon-boy11</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-raising-hand-for-question_27472">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-boy12"></div>
<div class="class-name">.flaticon-boy12</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-reading-a-book_27474">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-business57"></div>
<div class="class-name">.flaticon-business57</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/business-man_33563">SimpleIcon</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-camouflage"></div>
<div class="class-name">.flaticon-camouflage</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-with-concealing-face_75457">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-car65"></div>
<div class="class-name">.flaticon-car65</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/car-in-black-side-view_26352">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-certificate7"></div>
<div class="class-name">.flaticon-certificate7</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/certificate-award_27477">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-checklist4"></div>
<div class="class-name">.flaticon-checklist4</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/checklist-on-a-paper-with-a-pencil_48746">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-circuit4"></div>
<div class="class-name">.flaticon-circuit4</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/circuit-print-for-electronic-products_34643">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-confused4"></div>
<div class="class-name">.flaticon-confused4</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/confusion-boy-face_75505">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-cpu"></div>
<div class="class-name">.flaticon-cpu</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/cpu_31005">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-cpu1"></div>
<div class="class-name">.flaticon-cpu1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/cpu_31046">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-cry1"></div>
<div class="class-name">.flaticon-cry1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/weeping-face_75409">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-cry2"></div>
<div class="class-name">.flaticon-cry2</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-face-weep_75533">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-crying7"></div>
<div class="class-name">.flaticon-crying7</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/crying-emoticon-rounded-square-face_42888">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-customerservice10"></div>
<div class="class-name">.flaticon-customerservice10</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/_"></a></div></div><div class="glyph">
<div class="glyph-icon flaticon-doubt3"></div>
<div class="class-name">.flaticon-doubt3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/doubt-on-emoticon-square-face_42908">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-doubts1"></div>
<div class="class-name">.flaticon-doubts1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/doubt-face-with-glasses_75535">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-drinks48"></div>
<div class="class-name">.flaticon-drinks48</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/cocktail-coconut_85120">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-education6"></div>
<div class="class-name">.flaticon-education6</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/education-diploma_27485">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-election3"></div>
<div class="class-name">.flaticon-election3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/election-envelopes-and-box_48761">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-electronic51"></div>
<div class="class-name">.flaticon-electronic51</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/electronic-printed-circuit-with-lines-and-circles_34740">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-emoticon101"></div>
<div class="class-name">.flaticon-emoticon101</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/emoticon-in-love-face-with-heart-shaped-eyes-in-square-outline_42899">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-emoticon82"></div>
<div class="class-name">.flaticon-emoticon82</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/emoticon-square-smile_42815">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-emoticon83"></div>
<div class="class-name">.flaticon-emoticon83</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/emoticon-square-face-with-curved-mouth-expression_42819">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-emoticon98"></div>
<div class="class-name">.flaticon-emoticon98</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/emoticon-square-face-with-closed-eyes-and-mouth-of-straight-lines_42890">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-emoticons11"></div>
<div class="class-name">.flaticon-emoticons11</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/emoticons-square-face-with-sunglasses_42845">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-family4"></div>
<div class="class-name">.flaticon-family4</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/family-of-three_27506">OCHA</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-fear3"></div>
<div class="class-name">.flaticon-fear3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/afraid-boy-face_75487">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-first21"></div>
<div class="class-name">.flaticon-first21</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/first-aid-case_33485">SimpleIcon</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-fright"></div>
<div class="class-name">.flaticon-fright</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-face-with-fear_75531">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-furious3"></div>
<div class="class-name">.flaticon-furious3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/furious-emoticon-square-face_42872">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-graduate2"></div>
<div class="class-name">.flaticon-graduate2</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/graduate-boy-reading-a-book_27473">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-group58"></div>
<div class="class-name">.flaticon-group58</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/group-of-three-men-standing-side-by-side-hugging-each-other_47352">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-handshake3"></div>
<div class="class-name">.flaticon-handshake3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/employment-deal_69165">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-hatchback"></div>
<div class="class-name">.flaticon-hatchback</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/hatchback-car-silhouette_26561">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-help9"></div>
<div class="class-name">.flaticon-help9</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/customer-service_78935">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-house77"></div>
<div class="class-name">.flaticon-house77</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/house-with-solar-panel-installed_34550">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-illness1"></div>
<div class="class-name">.flaticon-illness1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/nausea-boy-face_75421">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-inadequacy"></div>
<div class="class-name">.flaticon-inadequacy</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/inadequacy_75396">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-incompetence"></div>
<div class="class-name">.flaticon-incompetence</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-with-inadequacy-face_75559">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-indifferent"></div>
<div class="class-name">.flaticon-indifferent</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/indifference-face_75404">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-kiss3"></div>
<div class="class-name">.flaticon-kiss3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-kissing_75399">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-laughing7"></div>
<div class="class-name">.flaticon-laughing7</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/laughter-boy-face_75534">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-laughing8"></div>
<div class="class-name">.flaticon-laughing8</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/laughter-face_75970">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-lifesaver28"></div>
<div class="class-name">.flaticon-lifesaver28</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/life-vest_85132">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-lively"></div>
<div class="class-name">.flaticon-lively</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/friskiness-boy-face_75532">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-love2"></div>
<div class="class-name">.flaticon-love2</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-with-love-face_75451">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-mad1"></div>
<div class="class-name">.flaticon-mad1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/offense-face_75965">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-man282"></div>
<div class="class-name">.flaticon-man282</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/man-talking-by-speaker_46770">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-manager3"></div>
<div class="class-name">.flaticon-manager3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/management-group_71041">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-medical43"></div>
<div class="class-name">.flaticon-medical43</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/medical-date-reminder-calendar-daily-page-interface-symbol-with-first-aid-cross_42954">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-mobile26"></div>
<div class="class-name">.flaticon-mobile26</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/mobile-tool_23621">Icomoon</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-moustaches1"></div>
<div class="class-name">.flaticon-moustaches1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-with-moustache-and-up-eyebrow_75456">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-mute24"></div>
<div class="class-name">.flaticon-mute24</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/mute-emoticon-square-face_42868">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-mute3"></div>
<div class="class-name">.flaticon-mute3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/silence-face_75408">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-navigation28"></div>
<div class="class-name">.flaticon-navigation28</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/radar-working_85141">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-nerd6"></div>
<div class="class-name">.flaticon-nerd6</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/nerd-happy-smiling-face-in-rounded-square-face_42863">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-nervous"></div>
<div class="class-name">.flaticon-nervous</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/nerve-boy-face_75483">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-owl9"></div>
<div class="class-name">.flaticon-owl9</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/owl-wearing-graduation-hat_27471">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-palmtrees1"></div>
<div class="class-name">.flaticon-palmtrees1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/_"></a></div></div><div class="glyph">
<div class="glyph-icon flaticon-panic1"></div>
<div class="class-name">.flaticon-panic1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/fright-boy-face_75442">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-pencil32"></div>
<div class="class-name">.flaticon-pencil32</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/pencil-and-paintbrush_27476">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-pirate5"></div>
<div class="class-name">.flaticon-pirate5</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/pirate-emoticon-face-with-one-covered-eye-in-square-outline_42905">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-plus13"></div>
<div class="class-name">.flaticon-plus13</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/mathematic-symbol_5156">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-protection24"></div>
<div class="class-name">.flaticon-protection24</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/big-sunglasses_85149">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-robot30"></div>
<div class="class-name">.flaticon-robot30</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/robot-design_48717">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-robotic2"></div>
<div class="class-name">.flaticon-robotic2</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/robotic-arm-ios-7-interface-symbol_22464">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-rough"></div>
<div class="class-name">.flaticon-rough</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/abrupt-boy-face_75448">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sad34"></div>
<div class="class-name">.flaticon-sad34</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/sad-suffering-crying-emoticon-face_42811">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sad35"></div>
<div class="class-name">.flaticon-sad35</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/sad-sleepy-emoticon-face-square_42812">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sad37"></div>
<div class="class-name">.flaticon-sad37</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/sad-emoticon-square-face_42833">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sad38"></div>
<div class="class-name">.flaticon-sad38</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/sad-rounded-square-emoticon_42849">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sad39"></div>
<div class="class-name">.flaticon-sad39</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/sad-face-in-rounded-square_42901">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sad74"></div>
<div class="class-name">.flaticon-sad74</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/sadness-boy-face_75441">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sad75"></div>
<div class="class-name">.flaticon-sad75</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-with-sadness-face_75493">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sad77"></div>
<div class="class-name">.flaticon-sad77</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/sorrow-face_75968">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-scary"></div>
<div class="class-name">.flaticon-scary</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/fear-face_75536">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-serious3"></div>
<div class="class-name">.flaticon-serious3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/seriousness-boy-face_75500">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-severe"></div>
<div class="class-name">.flaticon-severe</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/serious-boy-face_75443">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-silhouette121"></div>
<div class="class-name">.flaticon-silhouette121</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/black-user-shape_16612">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-singing4"></div>
<div class="class-name">.flaticon-singing4</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/singing-emoticon-square-face_42869">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sleep1"></div>
<div class="class-name">.flaticon-sleep1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-with-sleeping-face_75562">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sleepness"></div>
<div class="class-name">.flaticon-sleepness</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-with-fatigue-face_75597">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sleepy6"></div>
<div class="class-name">.flaticon-sleepy6</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/sleepy-emoticon-square-face_42820">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-smile31"></div>
<div class="class-name">.flaticon-smile31</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-smiling_75418">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-smile32"></div>
<div class="class-name">.flaticon-smile32</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/very-happy-boy-face_75482">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-smile33"></div>
<div class="class-name">.flaticon-smile33</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-with-smiling-face_75558">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-smiley41"></div>
<div class="class-name">.flaticon-smiley41</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/smiley-of-square-face-shape_42865">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-smiley42"></div>
<div class="class-name">.flaticon-smiley42</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/smiley-square-face_42878">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-smiling35"></div>
<div class="class-name">.flaticon-smiling35</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/smiling-happy-emoticon-square-face-with-eyes-like-stars_42871">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-smiling36"></div>
<div class="class-name">.flaticon-smiling36</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/smiling-emoticon-square-face_42877">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-solar12"></div>
<div class="class-name">.flaticon-solar12</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/solar-powered-house-building-with-solar-panels-on-the-roof_34541">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-spring13"></div>
<div class="class-name">.flaticon-spring13</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/spring-square-notepad_27481">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-square103"></div>
<div class="class-name">.flaticon-square103</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/square-emoticon-angry-face_42875">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-stars53"></div>
<div class="class-name">.flaticon-stars53</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/win-face_75957">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-student12"></div>
<div class="class-name">.flaticon-student12</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/student-smiling-emoticon-square-face_42886">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-study7"></div>
<div class="class-name">.flaticon-study7</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/nerd-boy-face_75486">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-stupor"></div>
<div class="class-name">.flaticon-stupor</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/stupor-boy-face_75492">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-surprise5"></div>
<div class="class-name">.flaticon-surprise5</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-with-shock-face_75594">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-surprised"></div>
<div class="class-name">.flaticon-surprised</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/surprise-face_75967">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-surprised19"></div>
<div class="class-name">.flaticon-surprised19</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/surprised-emoticon-square-face-with-open-eyes-and-mouth_42835">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-surprised21"></div>
<div class="class-name">.flaticon-surprised21</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/surprised-square-face-with-eyes-and-mouth-opened_42893">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-surveillance1"></div>
<div class="class-name">.flaticon-surveillance1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/surveillance-camera_32029">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-suspicions"></div>
<div class="class-name">.flaticon-suspicions</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-with-suspicious-face_75599">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sweat1"></div>
<div class="class-name">.flaticon-sweat1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/shock-face-with-drop_75596">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-sweating3"></div>
<div class="class-name">.flaticon-sweating3</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/sweating-emoticon-square-face_42894">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-tears"></div>
<div class="class-name">.flaticon-tears</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-face-with-tear_75530">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-telephone45"></div>
<div class="class-name">.flaticon-telephone45</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/old-telephone-ringing_15914">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-think7"></div>
<div class="class-name">.flaticon-think7</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/man-thinking_76818">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-timidity"></div>
<div class="class-name">.flaticon-timidity</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/humility-face_75966">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-tongue1"></div>
<div class="class-name">.flaticon-tongue1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/inadequacy-boy-face_75450">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-tongue2"></div>
<div class="class-name">.flaticon-tongue2</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/unconcious-boy-face_75496">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-two128"></div>
<div class="class-name">.flaticon-two128</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/two-books-with-apple-on-top_27480">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-two210"></div>
<div class="class-name">.flaticon-two210</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/two-persons-talking-sharing-sitting-on-a-table_47024">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-users53"></div>
<div class="class-name">.flaticon-users53</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/user-with-tie_74229">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-very7"></div>
<div class="class-name">.flaticon-very7</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/very-angry-emoticon-square-face_42898">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-wink"></div>
<div class="class-name">.flaticon-wink</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/boy-winking_75598">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-wink9"></div>
<div class="class-name">.flaticon-wink9</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/wink-face-square_42830">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-winking9"></div>
<div class="class-name">.flaticon-winking9</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/winking-emoticon-smiling-face-with-tongue-out-of-the-mouth-in-square-rounded-outline-shape_42861">Freepik</a></div></div><div class="glyph">
<div class="glyph-icon flaticon-winners1"></div>
<div class="class-name">.flaticon-winners1</div><div class="author-name">Author: <a href="http://www.flaticon.com/free-icon/winners-ribbon_27475">Freepik</a></div></div></section>
<section class="attribution">
<div class="usetitle">License and attribution:</div><div class="attrDiv">Font generated by <a href="http://www.flaticon.com">flaticon.com</a>
under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY</a>. The authors are: <a href="http://www.freepik.com">Freepik</a>, <a href="http://www.simpleicon.com">SimpleIcon</a>, <a href="http://"></a>, <a href="http://www.unocha.org">OCHA</a>, <a href="http://www.icomoon.io">Icomoon</a>.</div><div class="usetitle">Copy the Attribution License:</div>
<textarea onclick="this.focus();this.select();">Font generated by &lt;a href=&quot;http://www.flaticon.com&quot;&gt;flaticon.com&lt;/a&gt;
under &lt;a href=&quot;http://creativecommons.org/licenses/by/3.0/&quot;&gt;CC BY&lt;/a&gt;. The authors are: &lt;a href=&quot;http://www.freepik.com&quot;&gt;Freepik&lt;/a&gt;, &lt;a href=&quot;http://www.simpleicon.com&quot;&gt;SimpleIcon&lt;/a&gt;, &lt;a href=&quot;http://&quot;&gt;&lt;/a&gt;, &lt;a href=&quot;http://www.unocha.org&quot;&gt;OCHA&lt;/a&gt;, &lt;a href=&quot;http://www.icomoon.io&quot;&gt;Icomoon&lt;/a&gt;.</textarea>
</section>
<section class="iconsuse">
<div class="usetitle">Examples:</div>
<div class="image"><p>&lt;i class=&quot;flaticon-accident3&quot;&gt;&lt;/i&gt; <i class="flaticon-accident3"></i></p><p>&lt;i class=&quot;flaticon-alphabet3&quot;&gt;&lt;/i&gt; <i class="flaticon-alphabet3"></i></p><p>&lt;i class=&quot;flaticon-angel&quot;&gt;&lt;/i&gt; <i class="flaticon-angel"></i></p><p>&lt;i class=&quot;flaticon-angry&quot;&gt;&lt;/i&gt; <i class="flaticon-angry"></i></p><p>&lt;i class=&quot;flaticon-angry2&quot;&gt;&lt;/i&gt; <i class="flaticon-angry2"></i></p></div><div class="image"><p>&lt;span class=&quot;flaticon-angry23&quot;&gt;&lt;/span&gt; <span class="flaticon-angry23"></span></p><p>&lt;span class=&quot;flaticon-angry40&quot;&gt;&lt;/span&gt; <span class="flaticon-angry40"></span></p><p>&lt;span class=&quot;flaticon-angry41&quot;&gt;&lt;/span&gt; <span class="flaticon-angry41"></span></p><p>&lt;span class=&quot;flaticon-animal203&quot;&gt;&lt;/span&gt; <span class="flaticon-animal203"></span></p><p>&lt;span class=&quot;flaticon-annulled3&quot;&gt;&lt;/span&gt; <span class="flaticon-annulled3"></span></p></div><div class="image"><p>&lt;span class=&quot;flaticon-bandaid&quot;&gt;&lt;/span&gt; <span class="flaticon-bandaid"></span></p><p>&lt;i class=&quot;flaticon-battery88&quot;&gt;&lt;/i&gt; <i class="flaticon-battery88"></i></p><p>&lt;i class=&quot;flaticon-book97&quot;&gt;&lt;/i&gt; <i class="flaticon-book97"></i></p><p>&lt;i class=&quot;flaticon-boy11&quot;&gt;&lt;/i&gt; <i class="flaticon-boy11"></i></p><p>&lt;i class=&quot;flaticon-boy12&quot;&gt;&lt;/i&gt; <i class="flaticon-boy12"></i></p></div><div class="image"><p>&lt;span class=&quot;flaticon-business57&quot;&gt;&lt;/span&gt; <span class="flaticon-business57"></span></p><p>&lt;span class=&quot;flaticon-camouflage&quot;&gt;&lt;/span&gt; <span class="flaticon-camouflage"></span></p><p>&lt;span class=&quot;flaticon-car65&quot;&gt;&lt;/span&gt; <span class="flaticon-car65"></span></p><p>&lt;span class=&quot;flaticon-certificate7&quot;&gt;&lt;/span&gt; <span class="flaticon-certificate7"></span></p><p>&lt;span class=&quot;flaticon-checklist4&quot;&gt;&lt;/span&gt; <span class="flaticon-checklist4"></span></p></div><div class="image"></div>
</section>
<div id="footer">
<div>Generated by <a href="http://www.flaticon.com">flaticon.com</a>
</div>
</div>
</body>
</html>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Binary file not shown.

View File

@@ -15,35 +15,28 @@
//= require jquery.ui.all //= require jquery.ui.all
// require jquery.ui.draggable // require jquery.ui.draggable
// require jquery.ui.sortable // require jquery.ui.sortable
// require jquery.ui.gallery
// require jquery.sortable // require jquery.sortable
// require jquery-ui // require jquery-ui
//= require_tree .
//= require tinymce-jquery //= require tinymce-jquery
//= require bootstrap //= require bootstrap
//= require bootstrap/colorpicker //= require bootstrap/colorpicker
//= require bootstrap/datepicker //= require bootstrap/datepicker
//= require bootstrap/load-image.min
//= require bootstrap/image-gallery.min
//= require jquery-fileupload //= require jquery-fileupload
// require jquery.remotipart // require jquery.remotipart
//= require jquery.datetimepicker
//= require_tree .
function insertAttachment(url,name) { function insertAttachment(url,name) {
var ext = url.split('.').pop().toLowerCase(); var ext = url.split('.').pop().toLowerCase();
var img_ext = [ "jpg", "png", "bmp" , "jpeg" ]; var img_ext = [ "jpg", "png", "bmp" , "jpeg" ];
// if ( img_ext.indexOf(ext) > -1) {
// tinymce.activeEditor.setContent(tinymce.activeEditor.getContent({format : 'raw'}) + "<img src=\"" + url + "\" title=\"" + name + "\">");
// }
// else {
// tinymce.activeEditor.setContent(tinymce.activeEditor.getContent({format : 'raw'}) + "<a href=\"" + url + "\">" + name +"</a>");
// }
if ( img_ext.indexOf(ext) > -1) { if ( img_ext.indexOf(ext) > -1) {
tinymce.activeEditor.execCommand('mceInsertContent', false, "<img src=\"" + url + "\" title=\"" + name + "\">"); tinymce.activeEditor.execCommand('mceInsertContent', false, "<img src=\"" + url + "\" title=\"" + name + "\">");
} }
else { else {
tinymce.activeEditor.execCommand('mceInsertContent', false, "<a href=\"" + url + "\">" + name +"</a>"); tinymce.activeEditor.execCommand('mceInsertContent', false, "<a href=\"" + url + "\">" + name +"</a>");
} }
}
function insertIcon_ffi1(name) {
tinymce.activeEditor.execCommand('mceInsertContent',false,'<span class="'+name+'">&nbsp;</span>&nbsp;')
} }

View File

@@ -0,0 +1,12 @@
/**
* @preserve
* Project: Bootstrap Hover Dropdown
* Author: Cameron Spear
* Version: v2.0.11
* Contributors: Mattia Larentis
* Dependencies: Bootstrap's Dropdown plugin, jQuery
* Description: A simple plugin to enable Bootstrap dropdowns to active on hover and provide a nice user experience.
* License: MIT
* Homepage: http://cameronspear.com/blog/bootstrap-dropdown-on-hover-plugin/
*/
!function($,n,e){var o=$();$.fn.dropdownHover=function(e){return"ontouchstart"in document?this:(o=o.add(this.parent()),this.each(function(){function t(e){o.find(":focus").blur(),h.instantlyCloseOthers===!0&&o.removeClass("open"),n.clearTimeout(c),i.addClass("open"),r.trigger(a)}var r=$(this),i=r.parent(),d={delay:500,instantlyCloseOthers:!0},s={delay:$(this).data("delay"),instantlyCloseOthers:$(this).data("close-others")},a="show.bs.dropdown",u="hide.bs.dropdown",h=$.extend(!0,{},d,e,s),c;i.hover(function(n){return i.hasClass("open")||r.is(n.target)?void t(n):!0},function(){c=n.setTimeout(function(){i.removeClass("open"),r.trigger(u)},h.delay)}),r.hover(function(n){return i.hasClass("open")||i.is(n.target)?void t(n):!0}),i.find(".dropdown-submenu").each(function(){var e=$(this),o;e.hover(function(){n.clearTimeout(o),e.children(".dropdown-menu").show(),e.siblings().children(".dropdown-menu").hide()},function(){var t=e.children(".dropdown-menu");o=n.setTimeout(function(){t.hide()},h.delay)})})}))},$(document).ready(function(){$('[data-hover="dropdown"]').dropdownHover()})}(jQuery,this);

View File

@@ -0,0 +1,3 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/

View File

@@ -0,0 +1,402 @@
/*
Highcharts JS v4.1.7 (2015-06-26)
(c) 2009-2014 Torstein Honsi
License: www.highcharts.com/license
*/
(function(){function z(){var a,b=arguments,c,d={},e=function(a,b){var c,d;typeof a!=="object"&&(a={});for(d in b)b.hasOwnProperty(d)&&(c=b[d],a[d]=c&&typeof c==="object"&&Object.prototype.toString.call(c)!=="[object Array]"&&d!=="renderTo"&&typeof c.nodeType!=="number"?e(a[d]||{},c):b[d]);return a};b[0]===!0&&(d=b[1],b=Array.prototype.slice.call(b,2));c=b.length;for(a=0;a<c;a++)d=e(d,b[a]);return d}function D(a,b){return parseInt(a,b||10)}function Da(a){return typeof a==="string"}function da(a){return a&&
typeof a==="object"}function Ha(a){return Object.prototype.toString.call(a)==="[object Array]"}function ra(a){return typeof a==="number"}function Ea(a){return W.log(a)/W.LN10}function ia(a){return W.pow(10,a)}function ja(a,b){for(var c=a.length;c--;)if(a[c]===b){a.splice(c,1);break}}function q(a){return a!==y&&a!==null}function J(a,b,c){var d,e;if(Da(b))q(c)?a.setAttribute(b,c):a&&a.getAttribute&&(e=a.getAttribute(b));else if(q(b)&&da(b))for(d in b)a.setAttribute(d,b[d]);return e}function sa(a){return Ha(a)?
a:[a]}function L(a,b){if(ya&&!ca&&b&&b.opacity!==y)b.filter="alpha(opacity="+b.opacity*100+")";x(a.style,b)}function $(a,b,c,d,e){a=B.createElement(a);b&&x(a,b);e&&L(a,{padding:0,border:P,margin:0});c&&L(a,c);d&&d.appendChild(a);return a}function ka(a,b){var c=function(){return y};c.prototype=new a;x(c.prototype,b);return c}function Ia(a,b){return Array((b||2)+1-String(a).length).join(0)+a}function Wa(a){return(eb&&eb(a)||ob||0)*6E4}function Ja(a,b){for(var c="{",d=!1,e,f,g,h,i,j=[];(c=a.indexOf(c))!==
-1;){e=a.slice(0,c);if(d){f=e.split(":");g=f.shift().split(".");i=g.length;e=b;for(h=0;h<i;h++)e=e[g[h]];if(f.length)f=f.join(":"),g=/\.([0-9])/,h=T.lang,i=void 0,/f$/.test(f)?(i=(i=f.match(g))?i[1]:-1,e!==null&&(e=A.numberFormat(e,i,h.decimalPoint,f.indexOf(",")>-1?h.thousandsSep:""))):e=Oa(f,e)}j.push(e);a=a.slice(c+1);c=(d=!d)?"}":"{"}j.push(a);return j.join("")}function pb(a){return W.pow(10,V(W.log(a)/W.LN10))}function qb(a,b,c,d,e){var f,g=a,c=p(c,1);f=a/c;b||(b=[1,2,2.5,5,10],d===!1&&(c===
1?b=[1,2,5,10]:c<=0.1&&(b=[1/c])));for(d=0;d<b.length;d++)if(g=b[d],e&&g*c>=a||!e&&f<=(b[d]+(b[d+1]||b[d]))/2)break;g*=c;return g}function rb(a,b){var c=a.length,d,e;for(e=0;e<c;e++)a[e].ss_i=e;a.sort(function(a,c){d=b(a,c);return d===0?a.ss_i-c.ss_i:d});for(e=0;e<c;e++)delete a[e].ss_i}function Pa(a){for(var b=a.length,c=a[0];b--;)a[b]<c&&(c=a[b]);return c}function Fa(a){for(var b=a.length,c=a[0];b--;)a[b]>c&&(c=a[b]);return c}function Qa(a,b){for(var c in a)a[c]&&a[c]!==b&&a[c].destroy&&a[c].destroy(),
delete a[c]}function Ra(a){fb||(fb=$(Ka));a&&fb.appendChild(a);fb.innerHTML=""}function la(a,b){var c="Highcharts error #"+a+": www.highcharts.com/errors/"+a;if(b)throw c;K.console&&console.log(c)}function ea(a){return parseFloat(a.toPrecision(14))}function Sa(a,b){za=p(a,b.animation)}function Db(){var a=T.global,b=a.useUTC,c=b?"getUTC":"get",d=b?"setUTC":"set";Aa=a.Date||window.Date;ob=b&&a.timezoneOffset;eb=b&&a.getTimezoneOffset;gb=function(a,c,d,h,i,j){var k;b?(k=Aa.UTC.apply(0,arguments),k+=
Wa(k)):k=(new Aa(a,c,p(d,1),p(h,0),p(i,0),p(j,0))).getTime();return k};sb=c+"Minutes";tb=c+"Hours";ub=c+"Day";Xa=c+"Date";Ya=c+"Month";Za=c+"FullYear";Eb=d+"Milliseconds";Fb=d+"Seconds";Gb=d+"Minutes";Hb=d+"Hours";vb=d+"Date";wb=d+"Month";xb=d+"FullYear"}function Q(){}function Ta(a,b,c,d){this.axis=a;this.pos=b;this.type=c||"";this.isNew=!0;!c&&!d&&this.addLabel()}function Ib(a,b,c,d,e){var f=a.chart.inverted;this.axis=a;this.isNegative=c;this.options=b;this.x=d;this.total=null;this.points={};this.stack=
e;this.alignOptions={align:b.align||(f?c?"left":"right":"center"),verticalAlign:b.verticalAlign||(f?"middle":c?"bottom":"top"),y:p(b.y,f?4:c?14:-6),x:p(b.x,f?c?-6:6:0)};this.textAlign=b.textAlign||(f?c?"right":"left":"center")}var y,B=document,K=window,W=Math,r=W.round,V=W.floor,ta=W.ceil,u=W.max,C=W.min,O=W.abs,X=W.cos,aa=W.sin,ma=W.PI,ha=ma*2/360,Ba=navigator.userAgent,Jb=K.opera,ya=/(msie|trident)/i.test(Ba)&&!Jb,hb=B.documentMode===8,ib=/AppleWebKit/.test(Ba),La=/Firefox/.test(Ba),Kb=/(Mobile|Android|Windows Phone)/.test(Ba),
Ca="http://www.w3.org/2000/svg",ca=!!B.createElementNS&&!!B.createElementNS(Ca,"svg").createSVGRect,Ob=La&&parseInt(Ba.split("Firefox/")[1],10)<4,fa=!ca&&!ya&&!!B.createElement("canvas").getContext,$a,ab,Lb={},yb=0,fb,T,Oa,za,zb,E,na=function(){return y},Y=[],bb=0,Ka="div",P="none",Pb=/^[0-9]+$/,jb=["plotTop","marginRight","marginBottom","plotLeft"],Qb="stroke-width",Aa,gb,ob,eb,sb,tb,ub,Xa,Ya,Za,Eb,Fb,Gb,Hb,vb,wb,xb,M={},A;A=K.Highcharts=K.Highcharts?la(16,!0):{};A.seriesTypes=M;var x=A.extend=function(a,
b){var c;a||(a={});for(c in b)a[c]=b[c];return a},p=A.pick=function(){var a=arguments,b,c,d=a.length;for(b=0;b<d;b++)if(c=a[b],c!==y&&c!==null)return c},cb=A.wrap=function(a,b,c){var d=a[b];a[b]=function(){var a=Array.prototype.slice.call(arguments);a.unshift(d);return c.apply(this,a)}};Oa=function(a,b,c){if(!q(b)||isNaN(b))return"Invalid date";var a=p(a,"%Y-%m-%d %H:%M:%S"),d=new Aa(b-Wa(b)),e,f=d[tb](),g=d[ub](),h=d[Xa](),i=d[Ya](),j=d[Za](),k=T.lang,l=k.weekdays,d=x({a:l[g].substr(0,3),A:l[g],
d:Ia(h),e:h,w:g,b:k.shortMonths[i],B:k.months[i],m:Ia(i+1),y:j.toString().substr(2,2),Y:j,H:Ia(f),I:Ia(f%12||12),l:f%12||12,M:Ia(d[sb]()),p:f<12?"AM":"PM",P:f<12?"am":"pm",S:Ia(d.getSeconds()),L:Ia(r(b%1E3),3)},A.dateFormats);for(e in d)for(;a.indexOf("%"+e)!==-1;)a=a.replace("%"+e,typeof d[e]==="function"?d[e](b):d[e]);return c?a.substr(0,1).toUpperCase()+a.substr(1):a};E={millisecond:1,second:1E3,minute:6E4,hour:36E5,day:864E5,week:6048E5,month:24192E5,year:314496E5};A.numberFormat=function(a,b,
c,d){var e=T.lang,a=+a||0,f=b===-1?C((a.toString().split(".")[1]||"").length,20):isNaN(b=O(b))?2:b,b=c===void 0?e.decimalPoint:c,d=d===void 0?e.thousandsSep:d,e=a<0?"-":"",c=String(D(a=O(a).toFixed(f))),g=c.length>3?c.length%3:0;return e+(g?c.substr(0,g)+d:"")+c.substr(g).replace(/(\d{3})(?=\d)/g,"$1"+d)+(f?b+O(a-c).toFixed(f).slice(2):"")};zb={init:function(a,b,c){var b=b||"",d=a.shift,e=b.indexOf("C")>-1,f=e?7:3,g,b=b.split(" "),c=[].concat(c),h,i,j=function(a){for(g=a.length;g--;)a[g]==="M"&&a.splice(g+
1,0,a[g+1],a[g+2],a[g+1],a[g+2])};e&&(j(b),j(c));a.isArea&&(h=b.splice(b.length-6,6),i=c.splice(c.length-6,6));if(d<=c.length/f&&b.length===c.length)for(;d--;)c=[].concat(c).splice(0,f).concat(c);a.shift=0;if(b.length)for(a=c.length;b.length<a;)d=[].concat(b).splice(b.length-f,f),e&&(d[f-6]=d[f-2],d[f-5]=d[f-1]),b=b.concat(d);h&&(b=b.concat(h),c=c.concat(i));return[b,c]},step:function(a,b,c,d){var e=[],f=a.length;if(c===1)e=d;else if(f===b.length&&c<1)for(;f--;)d=parseFloat(a[f]),e[f]=isNaN(d)?a[f]:
c*parseFloat(b[f]-d)+d;else e=b;return e}};(function(a){K.HighchartsAdapter=K.HighchartsAdapter||a&&{init:function(b){var c=a.fx;a.extend(a.easing,{easeOutQuad:function(a,b,c,g,h){return-g*(b/=h)*(b-2)+c}});a.each(["cur","_default","width","height","opacity"],function(b,e){var f=c.step,g;e==="cur"?f=c.prototype:e==="_default"&&a.Tween&&(f=a.Tween.propHooks[e],e="set");(g=f[e])&&(f[e]=function(a){var c,a=b?a:this;if(a.prop!=="align")return c=a.elem,c.attr?c.attr(a.prop,e==="cur"?y:a.now):g.apply(this,
arguments)})});cb(a.cssHooks.opacity,"get",function(a,b,c){return b.attr?b.opacity||0:a.call(this,b,c)});this.addAnimSetter("d",function(a){var c=a.elem,f;if(!a.started)f=b.init(c,c.d,c.toD),a.start=f[0],a.end=f[1],a.started=!0;c.attr("d",b.step(a.start,a.end,a.pos,c.toD))});this.each=Array.prototype.forEach?function(a,b){return Array.prototype.forEach.call(a,b)}:function(a,b){var c,g=a.length;for(c=0;c<g;c++)if(b.call(a[c],a[c],c,a)===!1)return c};a.fn.highcharts=function(){var a="Chart",b=arguments,
c,g;if(this[0]){Da(b[0])&&(a=b[0],b=Array.prototype.slice.call(b,1));c=b[0];if(c!==y)c.chart=c.chart||{},c.chart.renderTo=this[0],new A[a](c,b[1]),g=this;c===y&&(g=Y[J(this[0],"data-highcharts-chart")])}return g}},addAnimSetter:function(b,c){a.Tween?a.Tween.propHooks[b]={set:c}:a.fx.step[b]=c},getScript:a.getScript,inArray:a.inArray,adapterRun:function(b,c){return a(b)[c]()},grep:a.grep,map:function(a,c){for(var d=[],e=0,f=a.length;e<f;e++)d[e]=c.call(a[e],a[e],e,a);return d},offset:function(b){return a(b).offset()},
addEvent:function(b,c,d){a(b).bind(c,d)},removeEvent:function(b,c,d){var e=B.removeEventListener?"removeEventListener":"detachEvent";B[e]&&b&&!b[e]&&(b[e]=function(){});a(b).unbind(c,d)},fireEvent:function(b,c,d,e){var f=a.Event(c),g="detached"+c,h;!ya&&d&&(delete d.layerX,delete d.layerY,delete d.returnValue);x(f,d);b[c]&&(b[g]=b[c],b[c]=null);a.each(["preventDefault","stopPropagation"],function(a,b){var c=f[b];f[b]=function(){try{c.call(f)}catch(a){b==="preventDefault"&&(h=!0)}}});a(b).trigger(f);
b[g]&&(b[c]=b[g],b[g]=null);e&&!f.isDefaultPrevented()&&!h&&e(f)},washMouseEvent:function(a){var c=a.originalEvent||a;if(c.pageX===y)c.pageX=a.pageX,c.pageY=a.pageY;return c},animate:function(b,c,d){var e=a(b);if(!b.style)b.style={};if(c.d)b.toD=c.d,c.d=1;e.stop();c.opacity!==y&&b.attr&&(c.opacity+="px");b.hasAnim=1;e.animate(c,d)},stop:function(b){b.hasAnim&&a(b).stop()}}})(K.jQuery);var U=K.HighchartsAdapter,F=U||{};U&&U.init.call(U,zb);var kb=F.adapterRun,Rb=F.getScript,Ma=F.inArray,o=A.each=F.each,
lb=F.grep,Sb=F.offset,Ua=F.map,H=F.addEvent,Z=F.removeEvent,I=F.fireEvent,Tb=F.washMouseEvent,mb=F.animate,db=F.stop;T={colors:"#7cb5ec,#434348,#90ed7d,#f7a35c,#8085e9,#f15c80,#e4d354,#2b908f,#f45b5b,#91e8e1".split(","),symbols:["circle","diamond","square","triangle","triangle-down"],lang:{loading:"Loading...",months:"January,February,March,April,May,June,July,August,September,October,November,December".split(","),shortMonths:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),weekdays:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),
decimalPoint:".",numericSymbols:"k,M,G,T,P,E".split(","),resetZoom:"Reset zoom",resetZoomTitle:"Reset zoom level 1:1",thousandsSep:" "},global:{useUTC:!0,canvasToolsURL:"http://code.highcharts.com/4.1.7/modules/canvas-tools.js",VMLRadialGradientURL:"http://code.highcharts.com/4.1.7/gfx/vml-radial-gradient.png"},chart:{borderColor:"#4572A7",borderRadius:0,defaultSeriesType:"line",ignoreHiddenSeries:!0,spacing:[10,10,15,10],backgroundColor:"#FFFFFF",plotBorderColor:"#C0C0C0",resetZoomButton:{theme:{zIndex:20},
position:{align:"right",x:-10,y:10}}},title:{text:"Chart title",align:"center",margin:15,style:{color:"#333333",fontSize:"18px"}},subtitle:{text:"",align:"center",style:{color:"#555555"}},plotOptions:{line:{allowPointSelect:!1,showCheckbox:!1,animation:{duration:1E3},events:{},lineWidth:2,marker:{lineWidth:0,radius:4,lineColor:"#FFFFFF",states:{hover:{enabled:!0,lineWidthPlus:1,radiusPlus:2},select:{fillColor:"#FFFFFF",lineColor:"#000000",lineWidth:2}}},point:{events:{}},dataLabels:{align:"center",
formatter:function(){return this.y===null?"":A.numberFormat(this.y,-1)},style:{color:"contrast",fontSize:"11px",fontWeight:"bold",textShadow:"0 0 6px contrast, 0 0 3px contrast"},verticalAlign:"bottom",x:0,y:0,padding:5},cropThreshold:300,pointRange:0,states:{hover:{lineWidthPlus:1,marker:{},halo:{size:10,opacity:0.25}},select:{marker:{}}},stickyTracking:!0,turboThreshold:1E3}},labels:{style:{position:"absolute",color:"#3E576F"}},legend:{enabled:!0,align:"center",layout:"horizontal",labelFormatter:function(){return this.name},
borderColor:"#909090",borderRadius:0,navigation:{activeColor:"#274b6d",inactiveColor:"#CCC"},shadow:!1,itemStyle:{color:"#333333",fontSize:"12px",fontWeight:"bold"},itemHoverStyle:{color:"#000"},itemHiddenStyle:{color:"#CCC"},itemCheckboxStyle:{position:"absolute",width:"13px",height:"13px"},symbolPadding:5,verticalAlign:"bottom",x:0,y:0,title:{style:{fontWeight:"bold"}}},loading:{labelStyle:{fontWeight:"bold",position:"relative",top:"45%"},style:{position:"absolute",backgroundColor:"white",opacity:0.5,
textAlign:"center"}},tooltip:{enabled:!0,animation:ca,backgroundColor:"rgba(249, 249, 249, .85)",borderWidth:1,borderRadius:3,dateTimeLabelFormats:{millisecond:"%A, %b %e, %H:%M:%S.%L",second:"%A, %b %e, %H:%M:%S",minute:"%A, %b %e, %H:%M",hour:"%A, %b %e, %H:%M",day:"%A, %b %e, %Y",week:"Week from %A, %b %e, %Y",month:"%B %Y",year:"%Y"},footerFormat:"",headerFormat:'<span style="font-size: 10px">{point.key}</span><br/>',pointFormat:'<span style="color:{point.color}">\u25CF</span> {series.name}: <b>{point.y}</b><br/>',
shadow:!0,snap:Kb?25:10,style:{color:"#333333",cursor:"default",fontSize:"12px",padding:"8px",whiteSpace:"nowrap"}},credits:{enabled:!0,text:"Highcharts.com",href:"http://www.highcharts.com",position:{align:"right",x:-10,verticalAlign:"bottom",y:-5},style:{cursor:"pointer",color:"#909090",fontSize:"9px"}}};var ba=T.plotOptions,U=ba.line;Db();var Ub=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/,Vb=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,
Wb=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/,oa=function(a){var b=[],c,d;(function(a){a&&a.stops?d=Ua(a.stops,function(a){return oa(a[1])}):(c=Ub.exec(a))?b=[D(c[1]),D(c[2]),D(c[3]),parseFloat(c[4],10)]:(c=Vb.exec(a))?b=[D(c[1],16),D(c[2],16),D(c[3],16),1]:(c=Wb.exec(a))&&(b=[D(c[1]),D(c[2]),D(c[3]),1])})(a);return{get:function(c){var f;d?(f=z(a),f.stops=[].concat(f.stops),o(d,function(a,b){f.stops[b]=[f.stops[b][0],a.get(c)]})):f=b&&!isNaN(b[0])?c==="rgb"?"rgb("+b[0]+","+
b[1]+","+b[2]+")":c==="a"?b[3]:"rgba("+b.join(",")+")":a;return f},brighten:function(a){if(d)o(d,function(b){b.brighten(a)});else if(ra(a)&&a!==0){var c;for(c=0;c<3;c++)b[c]+=D(a*255),b[c]<0&&(b[c]=0),b[c]>255&&(b[c]=255)}return this},rgba:b,setOpacity:function(a){b[3]=a;return this},raw:a}};Q.prototype={opacity:1,textProps:"fontSize,fontWeight,fontFamily,fontStyle,color,lineHeight,width,textDecoration,textShadow".split(","),init:function(a,b){this.element=b==="span"?$(b):B.createElementNS(Ca,b);
this.renderer=a},animate:function(a,b,c){b=p(b,za,!0);db(this);if(b){b=z(b,{});if(c)b.complete=c;mb(this,a,b)}else this.attr(a),c&&c();return this},colorGradient:function(a,b,c){var d=this.renderer,e,f,g,h,i,j,k,l,m,n,v=[];a.linearGradient?f="linearGradient":a.radialGradient&&(f="radialGradient");if(f){g=a[f];h=d.gradients;j=a.stops;m=c.radialReference;Ha(g)&&(a[f]=g={x1:g[0],y1:g[1],x2:g[2],y2:g[3],gradientUnits:"userSpaceOnUse"});f==="radialGradient"&&m&&!q(g.gradientUnits)&&(g=z(g,{cx:m[0]-m[2]/
2+g.cx*m[2],cy:m[1]-m[2]/2+g.cy*m[2],r:g.r*m[2],gradientUnits:"userSpaceOnUse"}));for(n in g)n!=="id"&&v.push(n,g[n]);for(n in j)v.push(j[n]);v=v.join(",");h[v]?a=h[v].attr("id"):(g.id=a="highcharts-"+yb++,h[v]=i=d.createElement(f).attr(g).add(d.defs),i.stops=[],o(j,function(a){a[1].indexOf("rgba")===0?(e=oa(a[1]),k=e.get("rgb"),l=e.get("a")):(k=a[1],l=1);a=d.createElement("stop").attr({offset:a[0],"stop-color":k,"stop-opacity":l}).add(i);i.stops.push(a)}));c.setAttribute(b,"url("+d.url+"#"+a+")")}},
applyTextShadow:function(a){var b=this.element,c,d=a.indexOf("contrast")!==-1,e={},f=this.renderer.forExport||b.style.textShadow!==y&&!ya;if(d)e.textShadow=a=a.replace(/contrast/g,this.renderer.getContrast(b.style.fill));if(ib)e.textRendering="geometricPrecision";f?L(b,e):(this.fakeTS=!0,this.ySetter=this.xSetter,c=[].slice.call(b.getElementsByTagName("tspan")),o(a.split(/\s?,\s?/g),function(a){var d=b.firstChild,e,f,a=a.split(" ");e=a[a.length-1];(f=a[a.length-2])&&o(c,function(a,c){var g;c===0&&
(a.setAttribute("x",b.getAttribute("x")),c=b.getAttribute("y"),a.setAttribute("y",c||0),c===null&&b.setAttribute("y",0));g=a.cloneNode(1);J(g,{"class":"highcharts-text-shadow",fill:e,stroke:e,"stroke-opacity":1/u(D(f),3),"stroke-width":f,"stroke-linejoin":"round"});b.insertBefore(g,d)})}))},attr:function(a,b){var c,d,e=this.element,f,g=this,h;typeof a==="string"&&b!==y&&(c=a,a={},a[c]=b);if(typeof a==="string")g=(this[a+"Getter"]||this._defaultGetter).call(this,a,e);else{for(c in a){d=a[c];h=!1;this.symbolName&&
/^(x|y|width|height|r|start|end|innerR|anchorX|anchorY)/.test(c)&&(f||(this.symbolAttr(a),f=!0),h=!0);if(this.rotation&&(c==="x"||c==="y"))this.doTransform=!0;h||(this[c+"Setter"]||this._defaultSetter).call(this,d,c,e);this.shadows&&/^(width|height|visibility|x|y|d|transform|cx|cy|r)$/.test(c)&&this.updateShadows(c,d)}if(this.doTransform)this.updateTransform(),this.doTransform=!1}return g},updateShadows:function(a,b){for(var c=this.shadows,d=c.length;d--;)c[d].setAttribute(a,a==="height"?u(b-(c[d].cutHeight||
0),0):a==="d"?this.d:b)},addClass:function(a){var b=this.element,c=J(b,"class")||"";c.indexOf(a)===-1&&J(b,"class",c+" "+a);return this},symbolAttr:function(a){var b=this;o("x,y,r,start,end,width,height,innerR,anchorX,anchorY".split(","),function(c){b[c]=p(a[c],b[c])});b.attr({d:b.renderer.symbols[b.symbolName](b.x,b.y,b.width,b.height,b)})},clip:function(a){return this.attr("clip-path",a?"url("+this.renderer.url+"#"+a.id+")":P)},crisp:function(a){var b,c={},d,e=a.strokeWidth||this.strokeWidth||0;
d=r(e)%2/2;a.x=V(a.x||this.x||0)+d;a.y=V(a.y||this.y||0)+d;a.width=V((a.width||this.width||0)-2*d);a.height=V((a.height||this.height||0)-2*d);a.strokeWidth=e;for(b in a)this[b]!==a[b]&&(this[b]=c[b]=a[b]);return c},css:function(a){var b=this.styles,c={},d=this.element,e,f,g="";e=!b;if(a&&a.color)a.fill=a.color;if(b)for(f in a)a[f]!==b[f]&&(c[f]=a[f],e=!0);if(e){e=this.textWidth=a&&a.width&&d.nodeName.toLowerCase()==="text"&&D(a.width)||this.textWidth;b&&(a=x(b,c));this.styles=a;e&&(fa||!ca&&this.renderer.forExport)&&
delete a.width;if(ya&&!ca)L(this.element,a);else{b=function(a,b){return"-"+b.toLowerCase()};for(f in a)g+=f.replace(/([A-Z])/g,b)+":"+a[f]+";";J(d,"style",g)}e&&this.added&&this.renderer.buildText(this)}return this},on:function(a,b){var c=this,d=c.element;ab&&a==="click"?(d.ontouchstart=function(a){c.touchEventFired=Aa.now();a.preventDefault();b.call(d,a)},d.onclick=function(a){(Ba.indexOf("Android")===-1||Aa.now()-(c.touchEventFired||0)>1100)&&b.call(d,a)}):d["on"+a]=b;return this},setRadialReference:function(a){this.element.radialReference=
a;return this},translate:function(a,b){return this.attr({translateX:a,translateY:b})},invert:function(){this.inverted=!0;this.updateTransform();return this},updateTransform:function(){var a=this.translateX||0,b=this.translateY||0,c=this.scaleX,d=this.scaleY,e=this.inverted,f=this.rotation,g=this.element;e&&(a+=this.attr("width"),b+=this.attr("height"));a=["translate("+a+","+b+")"];e?a.push("rotate(90) scale(-1,1)"):f&&a.push("rotate("+f+" "+(g.getAttribute("x")||0)+" "+(g.getAttribute("y")||0)+")");
(q(c)||q(d))&&a.push("scale("+p(c,1)+" "+p(d,1)+")");a.length&&g.setAttribute("transform",a.join(" "))},toFront:function(){var a=this.element;a.parentNode.appendChild(a);return this},align:function(a,b,c){var d,e,f,g,h={};e=this.renderer;f=e.alignedObjects;if(a){if(this.alignOptions=a,this.alignByTranslate=b,!c||Da(c))this.alignTo=d=c||"renderer",ja(f,this),f.push(this),c=null}else a=this.alignOptions,b=this.alignByTranslate,d=this.alignTo;c=p(c,e[d],e);d=a.align;e=a.verticalAlign;f=(c.x||0)+(a.x||
0);g=(c.y||0)+(a.y||0);if(d==="right"||d==="center")f+=(c.width-(a.width||0))/{right:1,center:2}[d];h[b?"translateX":"x"]=r(f);if(e==="bottom"||e==="middle")g+=(c.height-(a.height||0))/({bottom:1,middle:2}[e]||1);h[b?"translateY":"y"]=r(g);this[this.placed?"animate":"attr"](h);this.placed=!0;this.alignAttr=h;return this},getBBox:function(a){var b,c=this.renderer,d,e=this.rotation,f=this.element,g=this.styles,h=e*ha;d=this.textStr;var i,j=f.style,k,l;d!==y&&(l=["",e||0,g&&g.fontSize,f.style.width].join(","),
l=d===""||Pb.test(d)?"num:"+d.toString().length+l:d+l);l&&!a&&(b=c.cache[l]);if(!b){if(f.namespaceURI===Ca||c.forExport){try{k=this.fakeTS&&function(a){o(f.querySelectorAll(".highcharts-text-shadow"),function(b){b.style.display=a})},La&&j.textShadow?(i=j.textShadow,j.textShadow=""):k&&k(P),b=f.getBBox?x({},f.getBBox()):{width:f.offsetWidth,height:f.offsetHeight},i?j.textShadow=i:k&&k("")}catch(m){}if(!b||b.width<0)b={width:0,height:0}}else b=this.htmlGetBBox();if(c.isSVG){a=b.width;d=b.height;if(ya&&
g&&g.fontSize==="11px"&&d.toPrecision(3)==="16.9")b.height=d=14;if(e)b.width=O(d*aa(h))+O(a*X(h)),b.height=O(d*X(h))+O(a*aa(h))}c.cache[l]=b}return b},show:function(a){a&&this.element.namespaceURI===Ca?this.element.removeAttribute("visibility"):this.attr({visibility:a?"inherit":"visible"});return this},hide:function(){return this.attr({visibility:"hidden"})},fadeOut:function(a){var b=this;b.animate({opacity:0},{duration:a||150,complete:function(){b.attr({y:-9999})}})},add:function(a){var b=this.renderer,
c=this.element,d;if(a)this.parentGroup=a;this.parentInverted=a&&a.inverted;this.textStr!==void 0&&b.buildText(this);this.added=!0;if(!a||a.handleZ||this.zIndex)d=this.zIndexSetter();d||(a?a.element:b.box).appendChild(c);if(this.onAdd)this.onAdd();return this},safeRemoveChild:function(a){var b=a.parentNode;b&&b.removeChild(a)},destroy:function(){var a=this,b=a.element||{},c=a.shadows,d=a.renderer.isSVG&&b.nodeName==="SPAN"&&a.parentGroup,e,f;b.onclick=b.onmouseout=b.onmouseover=b.onmousemove=b.point=
null;db(a);if(a.clipPath)a.clipPath=a.clipPath.destroy();if(a.stops){for(f=0;f<a.stops.length;f++)a.stops[f]=a.stops[f].destroy();a.stops=null}a.safeRemoveChild(b);for(c&&o(c,function(b){a.safeRemoveChild(b)});d&&d.div&&d.div.childNodes.length===0;)b=d.parentGroup,a.safeRemoveChild(d.div),delete d.div,d=b;a.alignTo&&ja(a.renderer.alignedObjects,a);for(e in a)delete a[e];return null},shadow:function(a,b,c){var d=[],e,f,g=this.element,h,i,j,k;if(a){i=p(a.width,3);j=(a.opacity||0.15)/i;k=this.parentInverted?
"(-1,-1)":"("+p(a.offsetX,1)+", "+p(a.offsetY,1)+")";for(e=1;e<=i;e++){f=g.cloneNode(0);h=i*2+1-2*e;J(f,{isShadow:"true",stroke:a.color||"black","stroke-opacity":j*e,"stroke-width":h,transform:"translate"+k,fill:P});if(c)J(f,"height",u(J(f,"height")-h,0)),f.cutHeight=h;b?b.element.appendChild(f):g.parentNode.insertBefore(f,g);d.push(f)}this.shadows=d}return this},xGetter:function(a){this.element.nodeName==="circle"&&(a={x:"cx",y:"cy"}[a]||a);return this._defaultGetter(a)},_defaultGetter:function(a){a=
p(this[a],this.element?this.element.getAttribute(a):null,0);/^[\-0-9\.]+$/.test(a)&&(a=parseFloat(a));return a},dSetter:function(a,b,c){a&&a.join&&(a=a.join(" "));/(NaN| {2}|^$)/.test(a)&&(a="M 0 0");c.setAttribute(b,a);this[b]=a},dashstyleSetter:function(a){var b;if(a=a&&a.toLowerCase()){a=a.replace("shortdashdotdot","3,1,1,1,1,1,").replace("shortdashdot","3,1,1,1").replace("shortdot","1,1,").replace("shortdash","3,1,").replace("longdash","8,3,").replace(/dot/g,"1,3,").replace("dash","4,3,").replace(/,$/,
"").split(",");for(b=a.length;b--;)a[b]=D(a[b])*this["stroke-width"];a=a.join(",").replace("NaN","none");this.element.setAttribute("stroke-dasharray",a)}},alignSetter:function(a){this.element.setAttribute("text-anchor",{left:"start",center:"middle",right:"end"}[a])},opacitySetter:function(a,b,c){this[b]=a;c.setAttribute(b,a)},titleSetter:function(a){var b=this.element.getElementsByTagName("title")[0];b||(b=B.createElementNS(Ca,"title"),this.element.appendChild(b));b.appendChild(B.createTextNode(String(p(a),
"").replace(/<[^>]*>/g,"")))},textSetter:function(a){if(a!==this.textStr)delete this.bBox,this.textStr=a,this.added&&this.renderer.buildText(this)},fillSetter:function(a,b,c){typeof a==="string"?c.setAttribute(b,a):a&&this.colorGradient(a,b,c)},zIndexSetter:function(a,b){var c=this.renderer,d=this.parentGroup,c=(d||c).element||c.box,e,f,g=this.element,h;e=this.added;var i;q(a)&&(g.setAttribute(b,a),a=+a,this[b]===a&&(e=!1),this[b]=a);if(e){if((a=this.zIndex)&&d)d.handleZ=!0;d=c.childNodes;for(i=0;i<
d.length&&!h;i++)if(e=d[i],f=J(e,"zIndex"),e!==g&&(D(f)>a||!q(a)&&q(f)))c.insertBefore(g,e),h=!0;h||c.appendChild(g)}return h},_defaultSetter:function(a,b,c){c.setAttribute(b,a)}};Q.prototype.yGetter=Q.prototype.xGetter;Q.prototype.translateXSetter=Q.prototype.translateYSetter=Q.prototype.rotationSetter=Q.prototype.verticalAlignSetter=Q.prototype.scaleXSetter=Q.prototype.scaleYSetter=function(a,b){this[b]=a;this.doTransform=!0};Q.prototype["stroke-widthSetter"]=Q.prototype.strokeSetter=function(a,
b,c){this[b]=a;if(this.stroke&&this["stroke-width"])this.strokeWidth=this["stroke-width"],Q.prototype.fillSetter.call(this,this.stroke,"stroke",c),c.setAttribute("stroke-width",this["stroke-width"]),this.hasStroke=!0;else if(b==="stroke-width"&&a===0&&this.hasStroke)c.removeAttribute("stroke"),this.hasStroke=!1};var ua=function(){this.init.apply(this,arguments)};ua.prototype={Element:Q,init:function(a,b,c,d,e){var f=location,g,d=this.createElement("svg").attr({version:"1.1"}).css(this.getStyle(d));
g=d.element;a.appendChild(g);a.innerHTML.indexOf("xmlns")===-1&&J(g,"xmlns",Ca);this.isSVG=!0;this.box=g;this.boxWrapper=d;this.alignedObjects=[];this.url=(La||ib)&&B.getElementsByTagName("base").length?f.href.replace(/#.*?$/,"").replace(/([\('\)])/g,"\\$1").replace(/ /g,"%20"):"";this.createElement("desc").add().element.appendChild(B.createTextNode("Created with Highcharts 4.1.7"));this.defs=this.createElement("defs").add();this.forExport=e;this.gradients={};this.cache={};this.setSize(b,c,!1);var h;
if(La&&a.getBoundingClientRect)this.subPixelFix=b=function(){L(a,{left:0,top:0});h=a.getBoundingClientRect();L(a,{left:ta(h.left)-h.left+"px",top:ta(h.top)-h.top+"px"})},b(),H(K,"resize",b)},getStyle:function(a){return this.style=x({fontFamily:'"Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, sans-serif',fontSize:"12px"},a)},isHidden:function(){return!this.boxWrapper.getBBox().width},destroy:function(){var a=this.defs;this.box=null;this.boxWrapper=this.boxWrapper.destroy();Qa(this.gradients||
{});this.gradients=null;if(a)this.defs=a.destroy();this.subPixelFix&&Z(K,"resize",this.subPixelFix);return this.alignedObjects=null},createElement:function(a){var b=new this.Element;b.init(this,a);return b},draw:function(){},buildText:function(a){for(var b=a.element,c=this,d=c.forExport,e=p(a.textStr,"").toString(),f=e.indexOf("<")!==-1,g=b.childNodes,h,i,j=J(b,"x"),k=a.styles,l=a.textWidth,m=k&&k.lineHeight,n=k&&k.textShadow,v=k&&k.textOverflow==="ellipsis",s=g.length,S=l&&!a.added&&this.box,N=function(a){return m?
D(m):c.fontMetrics(/(px|em)$/.test(a&&a.style.fontSize)?a.style.fontSize:k&&k.fontSize||c.style.fontSize||12,a).h},t=function(a){return a.replace(/&lt;/g,"<").replace(/&gt;/g,">")};s--;)b.removeChild(g[s]);!f&&!n&&!v&&e.indexOf(" ")===-1?b.appendChild(B.createTextNode(t(e))):(h=/<.*style="([^"]+)".*>/,i=/<.*href="(http[^"]+)".*>/,S&&S.appendChild(b),e=f?e.replace(/<(b|strong)>/g,'<span style="font-weight:bold">').replace(/<(i|em)>/g,'<span style="font-style:italic">').replace(/<a/g,"<span").replace(/<\/(b|strong|i|em|a)>/g,
"</span>").split(/<br.*?>/g):[e],e[e.length-1]===""&&e.pop(),o(e,function(e,f){var g,m=0,e=e.replace(/<span/g,"|||<span").replace(/<\/span>/g,"</span>|||");g=e.split("|||");o(g,function(e){if(e!==""||g.length===1){var n={},s=B.createElementNS(Ca,"tspan"),p;h.test(e)&&(p=e.match(h)[1].replace(/(;| |^)color([ :])/,"$1fill$2"),J(s,"style",p));i.test(e)&&!d&&(J(s,"onclick",'location.href="'+e.match(i)[1]+'"'),L(s,{cursor:"pointer"}));e=t(e.replace(/<(.|\n)*?>/g,"")||" ");if(e!==" "){s.appendChild(B.createTextNode(e));
if(m)n.dx=0;else if(f&&j!==null)n.x=j;J(s,n);b.appendChild(s);!m&&f&&(!ca&&d&&L(s,{display:"block"}),J(s,"dy",N(s)));if(l){for(var n=e.replace(/([^\^])-/g,"$1- ").split(" "),o=g.length>1||f||n.length>1&&k.whiteSpace!=="nowrap",S,w,q,u=[],y=N(s),r=1,x=a.rotation,z=e,C=z.length;(o||v)&&(n.length||u.length);)a.rotation=0,S=a.getBBox(!0),q=S.width,!ca&&c.forExport&&(q=c.measureSpanWidth(s.firstChild.data,a.styles)),S=q>l,w===void 0&&(w=S),v&&w?(C/=2,z===""||!S&&C<0.5?n=[]:(S&&(w=!0),z=e.substring(0,z.length+
(S?-1:1)*ta(C)),n=[z+(l>3?"…":"")],s.removeChild(s.firstChild))):!S||n.length===1?(n=u,u=[],n.length&&(r++,s=B.createElementNS(Ca,"tspan"),J(s,{dy:y,x:j}),p&&J(s,"style",p),b.appendChild(s)),q>l&&(l=q)):(s.removeChild(s.firstChild),u.unshift(n.pop())),n.length&&s.appendChild(B.createTextNode(n.join(" ").replace(/- /g,"-")));w&&a.attr("title",a.textStr);a.rotation=x}m++}}})}),S&&S.removeChild(b),n&&a.applyTextShadow&&a.applyTextShadow(n))},getContrast:function(a){a=oa(a).rgba;return a[0]+a[1]+a[2]>
384?"#000000":"#FFFFFF"},button:function(a,b,c,d,e,f,g,h,i){var j=this.label(a,b,c,i,null,null,null,null,"button"),k=0,l,m,n,v,s,p,a={x1:0,y1:0,x2:0,y2:1},e=z({"stroke-width":1,stroke:"#CCCCCC",fill:{linearGradient:a,stops:[[0,"#FEFEFE"],[1,"#F6F6F6"]]},r:2,padding:5,style:{color:"black"}},e);n=e.style;delete e.style;f=z(e,{stroke:"#68A",fill:{linearGradient:a,stops:[[0,"#FFF"],[1,"#ACF"]]}},f);v=f.style;delete f.style;g=z(e,{stroke:"#68A",fill:{linearGradient:a,stops:[[0,"#9BD"],[1,"#CDF"]]}},g);
s=g.style;delete g.style;h=z(e,{style:{color:"#CCC"}},h);p=h.style;delete h.style;H(j.element,ya?"mouseover":"mouseenter",function(){k!==3&&j.attr(f).css(v)});H(j.element,ya?"mouseout":"mouseleave",function(){k!==3&&(l=[e,f,g][k],m=[n,v,s][k],j.attr(l).css(m))});j.setState=function(a){(j.state=k=a)?a===2?j.attr(g).css(s):a===3&&j.attr(h).css(p):j.attr(e).css(n)};return j.on("click",function(){k!==3&&d.call(j)}).attr(e).css(x({cursor:"default"},n))},crispLine:function(a,b){a[1]===a[4]&&(a[1]=a[4]=
r(a[1])-b%2/2);a[2]===a[5]&&(a[2]=a[5]=r(a[2])+b%2/2);return a},path:function(a){var b={fill:P};Ha(a)?b.d=a:da(a)&&x(b,a);return this.createElement("path").attr(b)},circle:function(a,b,c){a=da(a)?a:{x:a,y:b,r:c};b=this.createElement("circle");b.xSetter=function(a){this.element.setAttribute("cx",a)};b.ySetter=function(a){this.element.setAttribute("cy",a)};return b.attr(a)},arc:function(a,b,c,d,e,f){if(da(a))b=a.y,c=a.r,d=a.innerR,e=a.start,f=a.end,a=a.x;a=this.symbol("arc",a||0,b||0,c||0,c||0,{innerR:d||
0,start:e||0,end:f||0});a.r=c;return a},rect:function(a,b,c,d,e,f){var e=da(a)?a.r:e,g=this.createElement("rect"),a=da(a)?a:a===y?{}:{x:a,y:b,width:u(c,0),height:u(d,0)};if(f!==y)a.strokeWidth=f,a=g.crisp(a);if(e)a.r=e;g.rSetter=function(a){J(this.element,{rx:a,ry:a})};return g.attr(a)},setSize:function(a,b,c){var d=this.alignedObjects,e=d.length;this.width=a;this.height=b;for(this.boxWrapper[p(c,!0)?"animate":"attr"]({width:a,height:b});e--;)d[e].align()},g:function(a){var b=this.createElement("g");
return q(a)?b.attr({"class":"highcharts-"+a}):b},image:function(a,b,c,d,e){var f={preserveAspectRatio:P};arguments.length>1&&x(f,{x:b,y:c,width:d,height:e});f=this.createElement("image").attr(f);f.element.setAttributeNS?f.element.setAttributeNS("http://www.w3.org/1999/xlink","href",a):f.element.setAttribute("hc-svg-href",a);return f},symbol:function(a,b,c,d,e,f){var g,h=this.symbols[a],h=h&&h(r(b),r(c),d,e,f),i=/^url\((.*?)\)$/,j,k;if(h)g=this.path(h),x(g,{symbolName:a,x:b,y:c,width:d,height:e}),
f&&x(g,f);else if(i.test(a))k=function(a,b){a.element&&(a.attr({width:b[0],height:b[1]}),a.alignByTranslate||a.translate(r((d-b[0])/2),r((e-b[1])/2)))},j=a.match(i)[1],a=Lb[j]||f&&f.width&&f.height&&[f.width,f.height],g=this.image(j).attr({x:b,y:c}),g.isImg=!0,a?k(g,a):(g.attr({width:0,height:0}),$("img",{onload:function(){k(g,Lb[j]=[this.width,this.height])},src:j}));return g},symbols:{circle:function(a,b,c,d){var e=0.166*c;return["M",a+c/2,b,"C",a+c+e,b,a+c+e,b+d,a+c/2,b+d,"C",a-e,b+d,a-e,b,a+c/
2,b,"Z"]},square:function(a,b,c,d){return["M",a,b,"L",a+c,b,a+c,b+d,a,b+d,"Z"]},triangle:function(a,b,c,d){return["M",a+c/2,b,"L",a+c,b+d,a,b+d,"Z"]},"triangle-down":function(a,b,c,d){return["M",a,b,"L",a+c,b,a+c/2,b+d,"Z"]},diamond:function(a,b,c,d){return["M",a+c/2,b,"L",a+c,b+d/2,a+c/2,b+d,a,b+d/2,"Z"]},arc:function(a,b,c,d,e){var f=e.start,c=e.r||c||d,g=e.end-0.001,d=e.innerR,h=e.open,i=X(f),j=aa(f),k=X(g),g=aa(g),e=e.end-f<ma?0:1;return["M",a+c*i,b+c*j,"A",c,c,0,e,1,a+c*k,b+c*g,h?"M":"L",a+d*
k,b+d*g,"A",d,d,0,e,0,a+d*i,b+d*j,h?"":"Z"]},callout:function(a,b,c,d,e){var f=C(e&&e.r||0,c,d),g=f+6,h=e&&e.anchorX,e=e&&e.anchorY,i;i=["M",a+f,b,"L",a+c-f,b,"C",a+c,b,a+c,b,a+c,b+f,"L",a+c,b+d-f,"C",a+c,b+d,a+c,b+d,a+c-f,b+d,"L",a+f,b+d,"C",a,b+d,a,b+d,a,b+d-f,"L",a,b+f,"C",a,b,a,b,a+f,b];h&&h>c&&e>b+g&&e<b+d-g?i.splice(13,3,"L",a+c,e-6,a+c+6,e,a+c,e+6,a+c,b+d-f):h&&h<0&&e>b+g&&e<b+d-g?i.splice(33,3,"L",a,e+6,a-6,e,a,e-6,a,b+f):e&&e>d&&h>a+g&&h<a+c-g?i.splice(23,3,"L",h+6,b+d,h,b+d+6,h-6,b+d,a+
f,b+d):e&&e<0&&h>a+g&&h<a+c-g&&i.splice(3,3,"L",h-6,b,h,b-6,h+6,b,c-f,b);return i}},clipRect:function(a,b,c,d){var e="highcharts-"+yb++,f=this.createElement("clipPath").attr({id:e}).add(this.defs),a=this.rect(a,b,c,d,0).add(f);a.id=e;a.clipPath=f;a.count=0;return a},text:function(a,b,c,d){var e=fa||!ca&&this.forExport,f={};if(d&&!this.forExport)return this.html(a,b,c);f.x=Math.round(b||0);if(c)f.y=Math.round(c);if(a||a===0)f.text=a;a=this.createElement("text").attr(f);e&&a.css({position:"absolute"});
if(!d)a.xSetter=function(a,b,c){var d=c.getElementsByTagName("tspan"),e,f=c.getAttribute(b),m;for(m=0;m<d.length;m++)e=d[m],e.getAttribute(b)===f&&e.setAttribute(b,a);c.setAttribute(b,a)};return a},fontMetrics:function(a,b){var c,d,a=a||this.style.fontSize;b&&K.getComputedStyle&&(b=b.element||b,a=(c=K.getComputedStyle(b,""))&&c.fontSize);a=/px/.test(a)?D(a):/em/.test(a)?parseFloat(a)*12:12;c=a<24?a+3:r(a*1.2);d=r(c*0.8);return{h:c,b:d,f:a}},rotCorr:function(a,b,c){var d=a;b&&c&&(d=u(d*X(b*ha),4));
return{x:-a/3*aa(b*ha),y:d}},label:function(a,b,c,d,e,f,g,h,i){function j(){var a,b;a=v.element.style;p=(ga===void 0||u===void 0||n.styles.textAlign)&&q(v.textStr)&&v.getBBox();n.width=(ga||p.width||0)+2*t+w;n.height=(u||p.height||0)+2*t;A=t+m.fontMetrics(a&&a.fontSize,v).b;if(D){if(!s)a=r(-N*t)+B,b=(h?-A:0)+B,n.box=s=d?m.symbol(d,a,b,n.width,n.height,G):m.rect(a,b,n.width,n.height,0,G[Qb]),s.attr("fill",P).add(n);s.isImg||s.attr(x({width:r(n.width),height:r(n.height)},G));G=null}}function k(){var a=
n.styles,a=a&&a.textAlign,b=w+t*(1-N),c;c=h?0:A;if(q(ga)&&p&&(a==="center"||a==="right"))b+={center:0.5,right:1}[a]*(ga-p.width);if(b!==v.x||c!==v.y)v.attr("x",b),c!==y&&v.attr("y",c);v.x=b;v.y=c}function l(a,b){s?s.attr(a,b):G[a]=b}var m=this,n=m.g(i),v=m.text("",0,0,g).attr({zIndex:1}),s,p,N=0,t=3,w=0,ga,u,Ab,C,B=0,G={},A,D;n.onAdd=function(){v.add(n);n.attr({text:a||a===0?a:"",x:b,y:c});s&&q(e)&&n.attr({anchorX:e,anchorY:f})};n.widthSetter=function(a){ga=a};n.heightSetter=function(a){u=a};n.paddingSetter=
function(a){if(q(a)&&a!==t)t=n.padding=a,k()};n.paddingLeftSetter=function(a){q(a)&&a!==w&&(w=a,k())};n.alignSetter=function(a){N={left:0,center:0.5,right:1}[a]};n.textSetter=function(a){a!==y&&v.textSetter(a);j();k()};n["stroke-widthSetter"]=function(a,b){a&&(D=!0);B=a%2/2;l(b,a)};n.strokeSetter=n.fillSetter=n.rSetter=function(a,b){b==="fill"&&a&&(D=!0);l(b,a)};n.anchorXSetter=function(a,b){e=a;l(b,r(a)-B-Ab)};n.anchorYSetter=function(a,b){f=a;l(b,a-C)};n.xSetter=function(a){n.x=a;N&&(a-=N*((ga||
p.width)+t));Ab=r(a);n.attr("translateX",Ab)};n.ySetter=function(a){C=n.y=r(a);n.attr("translateY",C)};var F=n.css;return x(n,{css:function(a){if(a){var b={},a=z(a);o(n.textProps,function(c){a[c]!==y&&(b[c]=a[c],delete a[c])});v.css(b)}return F.call(n,a)},getBBox:function(){return{width:p.width+2*t,height:p.height+2*t,x:p.x-t,y:p.y-t}},shadow:function(a){s&&s.shadow(a);return n},destroy:function(){Z(n.element,"mouseenter");Z(n.element,"mouseleave");v&&(v=v.destroy());s&&(s=s.destroy());Q.prototype.destroy.call(n);
n=m=j=k=l=null}})}};$a=ua;x(Q.prototype,{htmlCss:function(a){var b=this.element;if(b=a&&b.tagName==="SPAN"&&a.width)delete a.width,this.textWidth=b,this.updateTransform();if(a&&a.textOverflow==="ellipsis")a.whiteSpace="nowrap",a.overflow="hidden";this.styles=x(this.styles,a);L(this.element,a);return this},htmlGetBBox:function(){var a=this.element;if(a.nodeName==="text")a.style.position="absolute";return{x:a.offsetLeft,y:a.offsetTop,width:a.offsetWidth,height:a.offsetHeight}},htmlUpdateTransform:function(){if(this.added){var a=
this.renderer,b=this.element,c=this.translateX||0,d=this.translateY||0,e=this.x||0,f=this.y||0,g=this.textAlign||"left",h={left:0,center:0.5,right:1}[g],i=this.shadows,j=this.styles;L(b,{marginLeft:c,marginTop:d});i&&o(i,function(a){L(a,{marginLeft:c+1,marginTop:d+1})});this.inverted&&o(b.childNodes,function(c){a.invertChild(c,b)});if(b.tagName==="SPAN"){var k=this.rotation,l,m=D(this.textWidth),n=[k,g,b.innerHTML,this.textWidth].join(",");if(n!==this.cTT){l=a.fontMetrics(b.style.fontSize).b;q(k)&&
this.setSpanRotation(k,h,l);i=p(this.elemWidth,b.offsetWidth);if(i>m&&/[ \-]/.test(b.textContent||b.innerText))L(b,{width:m+"px",display:"block",whiteSpace:j&&j.whiteSpace||"normal"}),i=m;this.getSpanCorrection(i,l,h,k,g)}L(b,{left:e+(this.xCorr||0)+"px",top:f+(this.yCorr||0)+"px"});if(ib)l=b.offsetHeight;this.cTT=n}}else this.alignOnAdd=!0},setSpanRotation:function(a,b,c){var d={},e=ya?"-ms-transform":ib?"-webkit-transform":La?"MozTransform":Jb?"-o-transform":"";d[e]=d.transform="rotate("+a+"deg)";
d[e+(La?"Origin":"-origin")]=d.transformOrigin=b*100+"% "+c+"px";L(this.element,d)},getSpanCorrection:function(a,b,c){this.xCorr=-a*c;this.yCorr=-b}});x(ua.prototype,{html:function(a,b,c){var d=this.createElement("span"),e=d.element,f=d.renderer;d.textSetter=function(a){a!==e.innerHTML&&delete this.bBox;e.innerHTML=this.textStr=a};d.xSetter=d.ySetter=d.alignSetter=d.rotationSetter=function(a,b){b==="align"&&(b="textAlign");d[b]=a;d.htmlUpdateTransform()};d.attr({text:a,x:r(b),y:r(c)}).css({position:"absolute",
fontFamily:this.style.fontFamily,fontSize:this.style.fontSize});e.style.whiteSpace="nowrap";d.css=d.htmlCss;if(f.isSVG)d.add=function(a){var b,c=f.box.parentNode,j=[];if(this.parentGroup=a){if(b=a.div,!b){for(;a;)j.push(a),a=a.parentGroup;o(j.reverse(),function(a){var d,e=J(a.element,"class");e&&(e={className:e});b=a.div=a.div||$(Ka,e,{position:"absolute",left:(a.translateX||0)+"px",top:(a.translateY||0)+"px"},b||c);d=b.style;x(a,{translateXSetter:function(b,c){d.left=b+"px";a[c]=b;a.doTransform=
!0},translateYSetter:function(b,c){d.top=b+"px";a[c]=b;a.doTransform=!0},visibilitySetter:function(a,b){d[b]=a}})})}}else b=c;b.appendChild(e);d.added=!0;d.alignOnAdd&&d.htmlUpdateTransform();return d};return d}});if(!ca&&!fa){F={init:function(a,b){var c=["<",b,' filled="f" stroked="f"'],d=["position: ","absolute",";"],e=b===Ka;(b==="shape"||e)&&d.push("left:0;top:0;width:1px;height:1px;");d.push("visibility: ",e?"hidden":"visible");c.push(' style="',d.join(""),'"/>');if(b)c=e||b==="span"||b==="img"?
c.join(""):a.prepVML(c),this.element=$(c);this.renderer=a},add:function(a){var b=this.renderer,c=this.element,d=b.box,d=a?a.element||a:d;a&&a.inverted&&b.invertChild(c,d);d.appendChild(c);this.added=!0;this.alignOnAdd&&!this.deferUpdateTransform&&this.updateTransform();if(this.onAdd)this.onAdd();return this},updateTransform:Q.prototype.htmlUpdateTransform,setSpanRotation:function(){var a=this.rotation,b=X(a*ha),c=aa(a*ha);L(this.element,{filter:a?["progid:DXImageTransform.Microsoft.Matrix(M11=",b,
", M12=",-c,", M21=",c,", M22=",b,", sizingMethod='auto expand')"].join(""):P})},getSpanCorrection:function(a,b,c,d,e){var f=d?X(d*ha):1,g=d?aa(d*ha):0,h=p(this.elemHeight,this.element.offsetHeight),i;this.xCorr=f<0&&-a;this.yCorr=g<0&&-h;i=f*g<0;this.xCorr+=g*b*(i?1-c:c);this.yCorr-=f*b*(d?i?c:1-c:1);e&&e!=="left"&&(this.xCorr-=a*c*(f<0?-1:1),d&&(this.yCorr-=h*c*(g<0?-1:1)),L(this.element,{textAlign:e}))},pathToVML:function(a){for(var b=a.length,c=[];b--;)if(ra(a[b]))c[b]=r(a[b]*10)-5;else if(a[b]===
"Z")c[b]="x";else if(c[b]=a[b],a.isArc&&(a[b]==="wa"||a[b]==="at"))c[b+5]===c[b+7]&&(c[b+7]+=a[b+7]>a[b+5]?1:-1),c[b+6]===c[b+8]&&(c[b+8]+=a[b+8]>a[b+6]?1:-1);return c.join(" ")||"x"},clip:function(a){var b=this,c;a?(c=a.members,ja(c,b),c.push(b),b.destroyClip=function(){ja(c,b)},a=a.getCSS(b)):(b.destroyClip&&b.destroyClip(),a={clip:hb?"inherit":"rect(auto)"});return b.css(a)},css:Q.prototype.htmlCss,safeRemoveChild:function(a){a.parentNode&&Ra(a)},destroy:function(){this.destroyClip&&this.destroyClip();
return Q.prototype.destroy.apply(this)},on:function(a,b){this.element["on"+a]=function(){var a=K.event;a.target=a.srcElement;b(a)};return this},cutOffPath:function(a,b){var c,a=a.split(/[ ,]/);c=a.length;if(c===9||c===11)a[c-4]=a[c-2]=D(a[c-2])-10*b;return a.join(" ")},shadow:function(a,b,c){var d=[],e,f=this.element,g=this.renderer,h,i=f.style,j,k=f.path,l,m,n,v;k&&typeof k.value!=="string"&&(k="x");m=k;if(a){n=p(a.width,3);v=(a.opacity||0.15)/n;for(e=1;e<=3;e++){l=n*2+1-2*e;c&&(m=this.cutOffPath(k.value,
l+0.5));j=['<shape isShadow="true" strokeweight="',l,'" filled="false" path="',m,'" coordsize="10 10" style="',f.style.cssText,'" />'];h=$(g.prepVML(j),null,{left:D(i.left)+p(a.offsetX,1),top:D(i.top)+p(a.offsetY,1)});if(c)h.cutOff=l+1;j=['<stroke color="',a.color||"black",'" opacity="',v*e,'"/>'];$(g.prepVML(j),null,null,h);b?b.element.appendChild(h):f.parentNode.insertBefore(h,f);d.push(h)}this.shadows=d}return this},updateShadows:na,setAttr:function(a,b){hb?this.element[a]=b:this.element.setAttribute(a,
b)},classSetter:function(a){this.element.className=a},dashstyleSetter:function(a,b,c){(c.getElementsByTagName("stroke")[0]||$(this.renderer.prepVML(["<stroke/>"]),null,null,c))[b]=a||"solid";this[b]=a},dSetter:function(a,b,c){var d=this.shadows,a=a||[];this.d=a.join&&a.join(" ");c.path=a=this.pathToVML(a);if(d)for(c=d.length;c--;)d[c].path=d[c].cutOff?this.cutOffPath(a,d[c].cutOff):a;this.setAttr(b,a)},fillSetter:function(a,b,c){var d=c.nodeName;if(d==="SPAN")c.style.color=a;else if(d!=="IMG")c.filled=
a!==P,this.setAttr("fillcolor",this.renderer.color(a,c,b,this))},opacitySetter:na,rotationSetter:function(a,b,c){c=c.style;this[b]=c[b]=a;c.left=-r(aa(a*ha)+1)+"px";c.top=r(X(a*ha))+"px"},strokeSetter:function(a,b,c){this.setAttr("strokecolor",this.renderer.color(a,c,b))},"stroke-widthSetter":function(a,b,c){c.stroked=!!a;this[b]=a;ra(a)&&(a+="px");this.setAttr("strokeweight",a)},titleSetter:function(a,b){this.setAttr(b,a)},visibilitySetter:function(a,b,c){a==="inherit"&&(a="visible");this.shadows&&
o(this.shadows,function(c){c.style[b]=a});c.nodeName==="DIV"&&(a=a==="hidden"?"-999em":0,hb||(c.style[b]=a?"visible":"hidden"),b="top");c.style[b]=a},xSetter:function(a,b,c){this[b]=a;b==="x"?b="left":b==="y"&&(b="top");this.updateClipping?(this[b]=a,this.updateClipping()):c.style[b]=a},zIndexSetter:function(a,b,c){c.style[b]=a}};A.VMLElement=F=ka(Q,F);F.prototype.ySetter=F.prototype.widthSetter=F.prototype.heightSetter=F.prototype.xSetter;var Na={Element:F,isIE8:Ba.indexOf("MSIE 8.0")>-1,init:function(a,
b,c,d){var e;this.alignedObjects=[];d=this.createElement(Ka).css(x(this.getStyle(d),{position:"relative"}));e=d.element;a.appendChild(d.element);this.isVML=!0;this.box=e;this.boxWrapper=d;this.cache={};this.setSize(b,c,!1);if(!B.namespaces.hcv){B.namespaces.add("hcv","urn:schemas-microsoft-com:vml");try{B.createStyleSheet().cssText="hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "}catch(f){B.styleSheets[0].cssText+="hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke{ behavior:url(#default#VML); display: inline-block; } "}}},
isHidden:function(){return!this.box.offsetWidth},clipRect:function(a,b,c,d){var e=this.createElement(),f=da(a);return x(e,{members:[],count:0,left:(f?a.x:a)+1,top:(f?a.y:b)+1,width:(f?a.width:c)-1,height:(f?a.height:d)-1,getCSS:function(a){var b=a.element,c=b.nodeName,a=a.inverted,d=this.top-(c==="shape"?b.offsetTop:0),e=this.left,b=e+this.width,f=d+this.height,d={clip:"rect("+r(a?e:d)+"px,"+r(a?f:b)+"px,"+r(a?b:f)+"px,"+r(a?d:e)+"px)"};!a&&hb&&c==="DIV"&&x(d,{width:b+"px",height:f+"px"});return d},
updateClipping:function(){o(e.members,function(a){a.element&&a.css(e.getCSS(a))})}})},color:function(a,b,c,d){var e=this,f,g=/^rgba/,h,i,j=P;a&&a.linearGradient?i="gradient":a&&a.radialGradient&&(i="pattern");if(i){var k,l,m=a.linearGradient||a.radialGradient,n,v,s,p,N,t="",a=a.stops,w,ga=[],q=function(){h=['<fill colors="'+ga.join(",")+'" opacity="',s,'" o:opacity2="',v,'" type="',i,'" ',t,'focus="100%" method="any" />'];$(e.prepVML(h),null,null,b)};n=a[0];w=a[a.length-1];n[0]>0&&a.unshift([0,n[1]]);
w[0]<1&&a.push([1,w[1]]);o(a,function(a,b){g.test(a[1])?(f=oa(a[1]),k=f.get("rgb"),l=f.get("a")):(k=a[1],l=1);ga.push(a[0]*100+"% "+k);b?(s=l,p=k):(v=l,N=k)});if(c==="fill")if(i==="gradient")c=m.x1||m[0]||0,a=m.y1||m[1]||0,n=m.x2||m[2]||0,m=m.y2||m[3]||0,t='angle="'+(90-W.atan((m-a)/(n-c))*180/ma)+'"',q();else{var j=m.r,u=j*2,y=j*2,r=m.cx,x=m.cy,C=b.radialReference,z,j=function(){C&&(z=d.getBBox(),r+=(C[0]-z.x)/z.width-0.5,x+=(C[1]-z.y)/z.height-0.5,u*=C[2]/z.width,y*=C[2]/z.height);t='src="'+T.global.VMLRadialGradientURL+
'" size="'+u+","+y+'" origin="0.5,0.5" position="'+r+","+x+'" color2="'+N+'" ';q()};d.added?j():d.onAdd=j;j=p}else j=k}else if(g.test(a)&&b.tagName!=="IMG")f=oa(a),h=["<",c,' opacity="',f.get("a"),'"/>'],$(this.prepVML(h),null,null,b),j=f.get("rgb");else{j=b.getElementsByTagName(c);if(j.length)j[0].opacity=1,j[0].type="solid";j=a}return j},prepVML:function(a){var b=this.isIE8,a=a.join("");b?(a=a.replace("/>",' xmlns="urn:schemas-microsoft-com:vml" />'),a=a.indexOf('style="')===-1?a.replace("/>",' style="display:inline-block;behavior:url(#default#VML);" />'):
a.replace('style="','style="display:inline-block;behavior:url(#default#VML);')):a=a.replace("<","<hcv:");return a},text:ua.prototype.html,path:function(a){var b={coordsize:"10 10"};Ha(a)?b.d=a:da(a)&&x(b,a);return this.createElement("shape").attr(b)},circle:function(a,b,c){var d=this.symbol("circle");if(da(a))c=a.r,b=a.y,a=a.x;d.isCircle=!0;d.r=c;return d.attr({x:a,y:b})},g:function(a){var b;a&&(b={className:"highcharts-"+a,"class":"highcharts-"+a});return this.createElement(Ka).attr(b)},image:function(a,
b,c,d,e){var f=this.createElement("img").attr({src:a});arguments.length>1&&f.attr({x:b,y:c,width:d,height:e});return f},createElement:function(a){return a==="rect"?this.symbol(a):ua.prototype.createElement.call(this,a)},invertChild:function(a,b){var c=this,d=b.style,e=a.tagName==="IMG"&&a.style;L(a,{flip:"x",left:D(d.width)-(e?D(e.top):1),top:D(d.height)-(e?D(e.left):1),rotation:-90});o(a.childNodes,function(b){c.invertChild(b,a)})},symbols:{arc:function(a,b,c,d,e){var f=e.start,g=e.end,h=e.r||c||
d,c=e.innerR,d=X(f),i=aa(f),j=X(g),k=aa(g);if(g-f===0)return["x"];f=["wa",a-h,b-h,a+h,b+h,a+h*d,b+h*i,a+h*j,b+h*k];e.open&&!c&&f.push("e","M",a,b);f.push("at",a-c,b-c,a+c,b+c,a+c*j,b+c*k,a+c*d,b+c*i,"x","e");f.isArc=!0;return f},circle:function(a,b,c,d,e){e&&(c=d=2*e.r);e&&e.isCircle&&(a-=c/2,b-=d/2);return["wa",a,b,a+c,b+d,a+c,b+d/2,a+c,b+d/2,"e"]},rect:function(a,b,c,d,e){return ua.prototype.symbols[!q(e)||!e.r?"square":"callout"].call(0,a,b,c,d,e)}}};A.VMLRenderer=F=function(){this.init.apply(this,
arguments)};F.prototype=z(ua.prototype,Na);$a=F}ua.prototype.measureSpanWidth=function(a,b){var c=B.createElement("span"),d;d=B.createTextNode(a);c.appendChild(d);L(c,b);this.box.appendChild(c);d=c.offsetWidth;Ra(c);return d};var Mb;if(fa)A.CanVGRenderer=F=function(){Ca="http://www.w3.org/1999/xhtml"},F.prototype.symbols={},Mb=function(){function a(){var a=b.length,d;for(d=0;d<a;d++)b[d]();b=[]}var b=[];return{push:function(c,d){b.length===0&&Rb(d,a);b.push(c)}}}(),$a=F;Ta.prototype={addLabel:function(){var a=
this.axis,b=a.options,c=a.chart,d=a.categories,e=a.names,f=this.pos,g=b.labels,h=a.tickPositions,i=f===h[0],j=f===h[h.length-1],e=d?p(d[f],e[f],f):f,d=this.label,h=h.info,k;a.isDatetimeAxis&&h&&(k=b.dateTimeLabelFormats[h.higherRanks[f]||h.unitName]);this.isFirst=i;this.isLast=j;b=a.labelFormatter.call({axis:a,chart:c,isFirst:i,isLast:j,dateTimeLabelFormat:k,value:a.isLog?ea(ia(e)):e});q(d)?d&&d.attr({text:b}):(this.labelLength=(this.label=d=q(b)&&g.enabled?c.renderer.text(b,0,0,g.useHTML).css(z(g.style)).add(a.labelGroup):
null)&&d.getBBox().width,this.rotation=0)},getLabelSize:function(){return this.label?this.label.getBBox()[this.axis.horiz?"height":"width"]:0},handleOverflow:function(a){var b=this.axis,c=a.x,d=b.chart.chartWidth,e=b.chart.spacing,f=p(b.labelLeft,C(b.pos,e[3])),e=p(b.labelRight,u(b.pos+b.len,d-e[1])),g=this.label,h=this.rotation,i={left:0,center:0.5,right:1}[b.labelAlign],j=g.getBBox().width,k=b.slotWidth,l=1,m,n={};if(h)h<0&&c-i*j<f?m=r(c/X(h*ha)-f):h>0&&c+i*j>e&&(m=r((d-c)/X(h*ha)));else if(d=c+
(1-i)*j,c-i*j<f?k=a.x+k*(1-i)-f:d>e&&(k=e-a.x+k*i,l=-1),k=C(b.slotWidth,k),k<b.slotWidth&&b.labelAlign==="center"&&(a.x+=l*(b.slotWidth-k-i*(b.slotWidth-C(j,k)))),j>k||b.autoRotation&&g.styles.width)m=k;if(m){n.width=m;if(!b.options.labels.style.textOverflow)n.textOverflow="ellipsis";g.css(n)}},getPosition:function(a,b,c,d){var e=this.axis,f=e.chart,g=d&&f.oldChartHeight||f.chartHeight;return{x:a?e.translate(b+c,null,null,d)+e.transB:e.left+e.offset+(e.opposite?(d&&f.oldChartWidth||f.chartWidth)-
e.right-e.left:0),y:a?g-e.bottom+e.offset-(e.opposite?e.height:0):g-e.translate(b+c,null,null,d)-e.transB}},getLabelPosition:function(a,b,c,d,e,f,g,h){var i=this.axis,j=i.transA,k=i.reversed,l=i.staggerLines,m=i.tickRotCorr||{x:0,y:0},c=p(e.y,m.y+(i.side===2?8:-(c.getBBox().height/2))),a=a+e.x+m.x-(f&&d?f*j*(k?-1:1):0),b=b+c-(f&&!d?f*j*(k?1:-1):0);l&&(b+=g/(h||1)%l*(i.labelOffset/l));return{x:a,y:r(b)}},getMarkPath:function(a,b,c,d,e,f){return f.crispLine(["M",a,b,"L",a+(e?0:-c),b+(e?c:0)],d)},render:function(a,
b,c){var d=this.axis,e=d.options,f=d.chart.renderer,g=d.horiz,h=this.type,i=this.label,j=this.pos,k=e.labels,l=this.gridLine,m=h?h+"Grid":"grid",n=h?h+"Tick":"tick",v=e[m+"LineWidth"],s=e[m+"LineColor"],o=e[m+"LineDashStyle"],N=e[n+"Length"],m=e[n+"Width"]||0,t=e[n+"Color"],w=e[n+"Position"],n=this.mark,ga=k.step,q=!0,u=d.tickmarkOffset,r=this.getPosition(g,j,u,b),x=r.x,r=r.y,z=g&&x===d.pos+d.len||!g&&r===d.pos?-1:1,c=p(c,1);this.isActive=!0;if(v){j=d.getPlotLinePath(j+u,v*z,b,!0);if(l===y){l={stroke:s,
"stroke-width":v};if(o)l.dashstyle=o;if(!h)l.zIndex=1;if(b)l.opacity=0;this.gridLine=l=v?f.path(j).attr(l).add(d.gridGroup):null}if(!b&&l&&j)l[this.isNew?"attr":"animate"]({d:j,opacity:c})}if(m&&N)w==="inside"&&(N=-N),d.opposite&&(N=-N),h=this.getMarkPath(x,r,N,m*z,g,f),n?n.animate({d:h,opacity:c}):this.mark=f.path(h).attr({stroke:t,"stroke-width":m,opacity:c}).add(d.axisGroup);if(i&&!isNaN(x))i.xy=r=this.getLabelPosition(x,r,i,g,k,u,a,ga),this.isFirst&&!this.isLast&&!p(e.showFirstLabel,1)||this.isLast&&
!this.isFirst&&!p(e.showLastLabel,1)?q=!1:g&&!d.isRadial&&!k.step&&!k.rotation&&!b&&c!==0&&this.handleOverflow(r),ga&&a%ga&&(q=!1),q&&!isNaN(r.y)?(r.opacity=c,i[this.isNew?"attr":"animate"](r),this.isNew=!1):i.attr("y",-9999)},destroy:function(){Qa(this,this.axis)}};A.PlotLineOrBand=function(a,b){this.axis=a;if(b)this.options=b,this.id=b.id};A.PlotLineOrBand.prototype={render:function(){var a=this,b=a.axis,c=b.horiz,d=a.options,e=d.label,f=a.label,g=d.width,h=d.to,i=d.from,j=q(i)&&q(h),k=d.value,
l=d.dashStyle,m=a.svgElem,n=[],v,s=d.color,p=d.zIndex,o=d.events,t={},w=b.chart.renderer;b.isLog&&(i=Ea(i),h=Ea(h),k=Ea(k));if(g){if(n=b.getPlotLinePath(k,g),t={stroke:s,"stroke-width":g},l)t.dashstyle=l}else if(j){n=b.getPlotBandPath(i,h,d);if(s)t.fill=s;if(d.borderWidth)t.stroke=d.borderColor,t["stroke-width"]=d.borderWidth}else return;if(q(p))t.zIndex=p;if(m)if(n)m.animate({d:n},null,m.onGetPath);else{if(m.hide(),m.onGetPath=function(){m.show()},f)a.label=f=f.destroy()}else if(n&&n.length&&(a.svgElem=
m=w.path(n).attr(t).add(),o))for(v in d=function(b){m.on(b,function(c){o[b].apply(a,[c])})},o)d(v);if(e&&q(e.text)&&n&&n.length&&b.width>0&&b.height>0){e=z({align:c&&j&&"center",x:c?!j&&4:10,verticalAlign:!c&&j&&"middle",y:c?j?16:10:j?6:-4,rotation:c&&!j&&90},e);if(!f){t={align:e.textAlign||e.align,rotation:e.rotation};if(q(p))t.zIndex=p;a.label=f=w.text(e.text,0,0,e.useHTML).attr(t).css(e.style).add()}b=[n[1],n[4],j?n[6]:n[1]];j=[n[2],n[5],j?n[7]:n[2]];n=Pa(b);c=Pa(j);f.align(e,!1,{x:n,y:c,width:Fa(b)-
n,height:Fa(j)-c});f.show()}else f&&f.hide();return a},destroy:function(){ja(this.axis.plotLinesAndBands,this);delete this.axis;Qa(this)}};var va=A.Axis=function(){this.init.apply(this,arguments)};va.prototype={defaultOptions:{dateTimeLabelFormats:{millisecond:"%H:%M:%S.%L",second:"%H:%M:%S",minute:"%H:%M",hour:"%H:%M",day:"%e. %b",week:"%e. %b",month:"%b '%y",year:"%Y"},endOnTick:!1,gridLineColor:"#D8D8D8",labels:{enabled:!0,style:{color:"#606060",cursor:"default",fontSize:"11px"},x:0,y:15},lineColor:"#C0D0E0",
lineWidth:1,minPadding:0.01,maxPadding:0.01,minorGridLineColor:"#E0E0E0",minorGridLineWidth:1,minorTickColor:"#A0A0A0",minorTickLength:2,minorTickPosition:"outside",startOfWeek:1,startOnTick:!1,tickColor:"#C0D0E0",tickLength:10,tickmarkPlacement:"between",tickPixelInterval:100,tickPosition:"outside",tickWidth:1,title:{align:"middle",style:{color:"#707070"}},type:"linear"},defaultYAxisOptions:{endOnTick:!0,gridLineWidth:1,tickPixelInterval:72,showLastLabel:!0,labels:{x:-8,y:3},lineWidth:0,maxPadding:0.05,
minPadding:0.05,startOnTick:!0,tickWidth:0,title:{rotation:270,text:"Values"},stackLabels:{enabled:!1,formatter:function(){return A.numberFormat(this.total,-1)},style:z(ba.line.dataLabels.style,{color:"#000000"})}},defaultLeftAxisOptions:{labels:{x:-15,y:null},title:{rotation:270}},defaultRightAxisOptions:{labels:{x:15,y:null},title:{rotation:90}},defaultBottomAxisOptions:{labels:{autoRotation:[-45],x:0,y:null},title:{rotation:0}},defaultTopAxisOptions:{labels:{autoRotation:[-45],x:0,y:-15},title:{rotation:0}},
init:function(a,b){var c=b.isX;this.horiz=a.inverted?!c:c;this.coll=(this.isXAxis=c)?"xAxis":"yAxis";this.opposite=b.opposite;this.side=b.side||(this.horiz?this.opposite?0:2:this.opposite?1:3);this.setOptions(b);var d=this.options,e=d.type;this.labelFormatter=d.labels.formatter||this.defaultLabelFormatter;this.userOptions=b;this.minPixelPadding=0;this.chart=a;this.reversed=d.reversed;this.zoomEnabled=d.zoomEnabled!==!1;this.categories=d.categories||e==="category";this.names=this.names||[];this.isLog=
e==="logarithmic";this.isDatetimeAxis=e==="datetime";this.isLinked=q(d.linkedTo);this.ticks={};this.labelEdge=[];this.minorTicks={};this.plotLinesAndBands=[];this.alternateBands={};this.len=0;this.minRange=this.userMinRange=d.minRange||d.maxZoom;this.range=d.range;this.offset=d.offset||0;this.stacks={};this.oldStacks={};this.min=this.max=null;this.crosshair=p(d.crosshair,sa(a.options.tooltip.crosshairs)[c?0:1],!1);var f,d=this.options.events;Ma(this,a.axes)===-1&&(c&&!this.isColorAxis?a.axes.splice(a.xAxis.length,
0,this):a.axes.push(this),a[this.coll].push(this));this.series=this.series||[];if(a.inverted&&c&&this.reversed===y)this.reversed=!0;this.removePlotLine=this.removePlotBand=this.removePlotBandOrLine;for(f in d)H(this,f,d[f]);if(this.isLog)this.val2lin=Ea,this.lin2val=ia},setOptions:function(a){this.options=z(this.defaultOptions,this.isXAxis?{}:this.defaultYAxisOptions,[this.defaultTopAxisOptions,this.defaultRightAxisOptions,this.defaultBottomAxisOptions,this.defaultLeftAxisOptions][this.side],z(T[this.coll],
a))},defaultLabelFormatter:function(){var a=this.axis,b=this.value,c=a.categories,d=this.dateTimeLabelFormat,e=T.lang.numericSymbols,f=e&&e.length,g,h=a.options.labels.format,a=a.isLog?b:a.tickInterval;if(h)g=Ja(h,this);else if(c)g=b;else if(d)g=Oa(d,b);else if(f&&a>=1E3)for(;f--&&g===y;)c=Math.pow(1E3,f+1),a>=c&&b*10%c===0&&e[f]!==null&&(g=A.numberFormat(b/c,-1)+e[f]);g===y&&(g=O(b)>=1E4?A.numberFormat(b,-1):A.numberFormat(b,-1,y,""));return g},getSeriesExtremes:function(){var a=this,b=a.chart;a.hasVisibleSeries=
!1;a.dataMin=a.dataMax=a.ignoreMinPadding=a.ignoreMaxPadding=null;a.buildStacks&&a.buildStacks();o(a.series,function(c){if(c.visible||!b.options.chart.ignoreHiddenSeries){var d;d=c.options.threshold;var e;a.hasVisibleSeries=!0;a.isLog&&d<=0&&(d=null);if(a.isXAxis){if(d=c.xData,d.length)a.dataMin=C(p(a.dataMin,d[0]),Pa(d)),a.dataMax=u(p(a.dataMax,d[0]),Fa(d))}else{c.getExtremes();e=c.dataMax;c=c.dataMin;if(q(c)&&q(e))a.dataMin=C(p(a.dataMin,c),c),a.dataMax=u(p(a.dataMax,e),e);if(q(d))if(a.dataMin>=
d)a.dataMin=d,a.ignoreMinPadding=!0;else if(a.dataMax<d)a.dataMax=d,a.ignoreMaxPadding=!0}}})},translate:function(a,b,c,d,e,f){var g=this.linkedParent||this,h=1,i=0,j=d?g.oldTransA:g.transA,d=d?g.oldMin:g.min,k=g.minPixelPadding,e=(g.doPostTranslate||g.isLog&&e)&&g.lin2val;if(!j)j=g.transA;if(c)h*=-1,i=g.len;g.reversed&&(h*=-1,i-=h*(g.sector||g.len));b?(a=a*h+i,a-=k,a=a/j+d,e&&(a=g.lin2val(a))):(e&&(a=g.val2lin(a)),f==="between"&&(f=0.5),a=h*(a-d)*j+i+h*k+(ra(f)?j*f*g.pointRange:0));return a},toPixels:function(a,
b){return this.translate(a,!1,!this.horiz,null,!0)+(b?0:this.pos)},toValue:function(a,b){return this.translate(a-(b?0:this.pos),!0,!this.horiz,null,!0)},getPlotLinePath:function(a,b,c,d,e){var f=this.chart,g=this.left,h=this.top,i,j,k=c&&f.oldChartHeight||f.chartHeight,l=c&&f.oldChartWidth||f.chartWidth,m;i=this.transB;var n=function(a,b,c){if(a<b||a>c)d?a=C(u(b,a),c):m=!0;return a},e=p(e,this.translate(a,null,null,c)),a=c=r(e+i);i=j=r(k-e-i);isNaN(e)?m=!0:this.horiz?(i=h,j=k-this.bottom,a=c=n(a,
g,g+this.width)):(a=g,c=l-this.right,i=j=n(i,h,h+this.height));return m&&!d?null:f.renderer.crispLine(["M",a,i,"L",c,j],b||1)},getLinearTickPositions:function(a,b,c){var d,e=ea(V(b/a)*a),f=ea(ta(c/a)*a),g=[];if(b===c&&ra(b))return[b];for(b=e;b<=f;){g.push(b);b=ea(b+a);if(b===d)break;d=b}return g},getMinorTickPositions:function(){var a=this.options,b=this.tickPositions,c=this.minorTickInterval,d=[],e,f=this.min;e=this.max;var g=e-f;if(g&&g/c<this.len/3)if(this.isLog){a=b.length;for(e=1;e<a;e++)d=d.concat(this.getLogTickPositions(c,
b[e-1],b[e],!0))}else if(this.isDatetimeAxis&&a.minorTickInterval==="auto")d=d.concat(this.getTimeTicks(this.normalizeTimeTickInterval(c),f,e,a.startOfWeek));else for(b=f+(b[0]-f)%c;b<=e;b+=c)d.push(b);this.trimTicks(d);return d},adjustForMinRange:function(){var a=this.options,b=this.min,c=this.max,d,e=this.dataMax-this.dataMin>=this.minRange,f,g,h,i,j;if(this.isXAxis&&this.minRange===y&&!this.isLog)q(a.min)||q(a.max)?this.minRange=null:(o(this.series,function(a){i=a.xData;for(g=j=a.xIncrement?1:
i.length-1;g>0;g--)if(h=i[g]-i[g-1],f===y||h<f)f=h}),this.minRange=C(f*5,this.dataMax-this.dataMin));if(c-b<this.minRange){var k=this.minRange;d=(k-c+b)/2;d=[b-d,p(a.min,b-d)];if(e)d[2]=this.dataMin;b=Fa(d);c=[b+k,p(a.max,b+k)];if(e)c[2]=this.dataMax;c=Pa(c);c-b<k&&(d[0]=c-k,d[1]=p(a.min,c-k),b=Fa(d))}this.min=b;this.max=c},setAxisTranslation:function(a){var b=this,c=b.max-b.min,d=b.axisPointRange||0,e,f=0,g=0,h=b.linkedParent,i=!!b.categories,j=b.transA,k=b.isXAxis;if(k||i||d)if(h?(f=h.minPointOffset,
g=h.pointRangePadding):o(b.series,function(a){var h=i?1:k?a.pointRange:b.axisPointRange||0,j=a.options.pointPlacement,v=a.closestPointRange;h>c&&(h=0);d=u(d,h);b.single||(f=u(f,Da(j)?0:h/2),g=u(g,j==="on"?0:h));!a.noSharedTooltip&&q(v)&&(e=q(e)?C(e,v):v)}),h=b.ordinalSlope&&e?b.ordinalSlope/e:1,b.minPointOffset=f*=h,b.pointRangePadding=g*=h,b.pointRange=C(d,c),k)b.closestPointRange=e;if(a)b.oldTransA=j;b.translationSlope=b.transA=j=b.len/(c+g||1);b.transB=b.horiz?b.left:b.bottom;b.minPixelPadding=
j*f},setTickInterval:function(a){var b=this,c=b.chart,d=b.options,e=b.isLog,f=b.isDatetimeAxis,g=b.isXAxis,h=b.isLinked,i=d.maxPadding,j=d.minPadding,k=d.tickInterval,l=d.tickPixelInterval,m=b.categories;!f&&!m&&!h&&this.getTickAmount();h?(b.linkedParent=c[b.coll][d.linkedTo],c=b.linkedParent.getExtremes(),b.min=p(c.min,c.dataMin),b.max=p(c.max,c.dataMax),d.type!==b.linkedParent.options.type&&la(11,1)):(b.min=p(b.userMin,d.min,b.dataMin),b.max=p(b.userMax,d.max,b.dataMax));if(e)!a&&C(b.min,p(b.dataMin,
b.min))<=0&&la(10,1),b.min=ea(Ea(b.min)),b.max=ea(Ea(b.max));if(b.range&&q(b.max))b.userMin=b.min=u(b.min,b.max-b.range),b.userMax=b.max,b.range=null;b.beforePadding&&b.beforePadding();b.adjustForMinRange();if(!m&&!b.axisPointRange&&!b.usePercentage&&!h&&q(b.min)&&q(b.max)&&(c=b.max-b.min)){if(!q(d.min)&&!q(b.userMin)&&j&&(b.dataMin<0||!b.ignoreMinPadding))b.min-=c*j;if(!q(d.max)&&!q(b.userMax)&&i&&(b.dataMax>0||!b.ignoreMaxPadding))b.max+=c*i}if(ra(d.floor))b.min=u(b.min,d.floor);if(ra(d.ceiling))b.max=
C(b.max,d.ceiling);b.tickInterval=b.min===b.max||b.min===void 0||b.max===void 0?1:h&&!k&&l===b.linkedParent.options.tickPixelInterval?k=b.linkedParent.tickInterval:p(k,this.tickAmount?(b.max-b.min)/u(this.tickAmount-1,1):void 0,m?1:(b.max-b.min)*l/u(b.len,l));g&&!a&&o(b.series,function(a){a.processData(b.min!==b.oldMin||b.max!==b.oldMax)});b.setAxisTranslation(!0);b.beforeSetTickPositions&&b.beforeSetTickPositions();if(b.postProcessTickInterval)b.tickInterval=b.postProcessTickInterval(b.tickInterval);
if(b.pointRange)b.tickInterval=u(b.pointRange,b.tickInterval);a=p(d.minTickInterval,b.isDatetimeAxis&&b.closestPointRange);if(!k&&b.tickInterval<a)b.tickInterval=a;if(!f&&!e&&!k)b.tickInterval=qb(b.tickInterval,null,pb(b.tickInterval),p(d.allowDecimals,!(b.tickInterval>0.5&&b.tickInterval<5&&b.max>1E3&&b.max<9999)),!!this.tickAmount);if(!this.tickAmount&&this.len)b.tickInterval=b.unsquish();this.setTickPositions()},setTickPositions:function(){var a=this.options,b,c=a.tickPositions,d=a.tickPositioner,
e=a.startOnTick,f=a.endOnTick,g;this.tickmarkOffset=this.categories&&a.tickmarkPlacement==="between"&&this.tickInterval===1?0.5:0;this.minorTickInterval=a.minorTickInterval==="auto"&&this.tickInterval?this.tickInterval/5:a.minorTickInterval;this.tickPositions=b=c&&c.slice();if(!b&&(this.tickPositions=b=this.isDatetimeAxis?this.getTimeTicks(this.normalizeTimeTickInterval(this.tickInterval,a.units),this.min,this.max,a.startOfWeek,this.ordinalPositions,this.closestPointRange,!0):this.isLog?this.getLogTickPositions(this.tickInterval,
this.min,this.max):this.getLinearTickPositions(this.tickInterval,this.min,this.max),d&&(d=d.apply(this,[this.min,this.max]))))this.tickPositions=b=d;if(!this.isLinked)this.trimTicks(b,e,f),this.min===this.max&&q(this.min)&&!this.tickAmount&&(g=!0,this.min-=0.5,this.max+=0.5),this.single=g,!c&&!d&&this.adjustTickAmount()},trimTicks:function(a,b,c){var d=a[0],e=a[a.length-1],f=this.minPointOffset||0;b?this.min=d:this.min-f>d&&a.shift();c?this.max=e:this.max+f<e&&a.pop();a.length===0&&q(d)&&a.push((e+
d)/2)},getTickAmount:function(){var a={},b,c=this.options,d=c.tickAmount,e=c.tickPixelInterval;!q(c.tickInterval)&&this.len<e&&!this.isRadial&&!this.isLog&&c.startOnTick&&c.endOnTick&&(d=2);!d&&this.chart.options.chart.alignTicks!==!1&&c.alignTicks!==!1&&(o(this.chart[this.coll],function(c){var d=c.options,e=c.horiz,d=[e?d.left:d.top,e?d.width:d.height,d.pane].join(",");a[d]?c.series.length&&(b=!0):a[d]=1}),b&&(d=ta(this.len/e)+1));if(d<4)this.finalTickAmt=d,d=5;this.tickAmount=d},adjustTickAmount:function(){var a=
this.tickInterval,b=this.tickPositions,c=this.tickAmount,d=this.finalTickAmt,e=b&&b.length;if(e<c){for(;b.length<c;)b.push(ea(b[b.length-1]+a));this.transA*=(e-1)/(c-1);this.max=b[b.length-1]}else e>c&&(this.tickInterval*=2,this.setTickPositions());if(q(d)){for(a=c=b.length;a--;)(d===3&&a%2===1||d<=2&&a>0&&a<c-1)&&b.splice(a,1);this.finalTickAmt=y}},setScale:function(){var a=this.stacks,b,c,d,e;this.oldMin=this.min;this.oldMax=this.max;this.oldAxisLength=this.len;this.setAxisSize();e=this.len!==this.oldAxisLength;
o(this.series,function(a){if(a.isDirtyData||a.isDirty||a.xAxis.isDirty)d=!0});if(e||d||this.isLinked||this.forceRedraw||this.userMin!==this.oldUserMin||this.userMax!==this.oldUserMax){if(!this.isXAxis)for(b in a)for(c in a[b])a[b][c].total=null,a[b][c].cum=0;this.forceRedraw=!1;this.getSeriesExtremes();this.setTickInterval();this.oldUserMin=this.userMin;this.oldUserMax=this.userMax;if(!this.isDirty)this.isDirty=e||this.min!==this.oldMin||this.max!==this.oldMax}else if(!this.isXAxis){if(this.oldStacks)a=
this.stacks=this.oldStacks;for(b in a)for(c in a[b])a[b][c].cum=a[b][c].total}},setExtremes:function(a,b,c,d,e){var f=this,g=f.chart,c=p(c,!0);o(f.series,function(a){delete a.kdTree});e=x(e,{min:a,max:b});I(f,"setExtremes",e,function(){f.userMin=a;f.userMax=b;f.eventArgs=e;f.isDirtyExtremes=!0;c&&g.redraw(d)})},zoom:function(a,b){var c=this.dataMin,d=this.dataMax,e=this.options;this.allowZoomOutside||(q(c)&&a<=C(c,p(e.min,c))&&(a=y),q(d)&&b>=u(d,p(e.max,d))&&(b=y));this.displayBtn=a!==y||b!==y;this.setExtremes(a,
b,!1,y,{trigger:"zoom"});return!0},setAxisSize:function(){var a=this.chart,b=this.options,c=b.offsetLeft||0,d=this.horiz,e=p(b.width,a.plotWidth-c+(b.offsetRight||0)),f=p(b.height,a.plotHeight),g=p(b.top,a.plotTop),b=p(b.left,a.plotLeft+c),c=/%$/;c.test(f)&&(f=parseFloat(f)/100*a.plotHeight);c.test(g)&&(g=parseFloat(g)/100*a.plotHeight+a.plotTop);this.left=b;this.top=g;this.width=e;this.height=f;this.bottom=a.chartHeight-f-g;this.right=a.chartWidth-e-b;this.len=u(d?e:f,0);this.pos=d?b:g},getExtremes:function(){var a=
this.isLog;return{min:a?ea(ia(this.min)):this.min,max:a?ea(ia(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}},getThreshold:function(a){var b=this.isLog,c=b?ia(this.min):this.min,b=b?ia(this.max):this.max;a===null?a=b<0?b:c:c>a?a=c:b<a&&(a=b);return this.translate(a,0,1,0,1)},autoLabelAlign:function(a){a=(p(a,0)-this.side*90+720)%360;return a>15&&a<165?"right":a>195&&a<345?"left":"center"},unsquish:function(){var a=this.ticks,b=this.options.labels,
c=this.horiz,d=this.tickInterval,e=d,f=this.len/(((this.categories?1:0)+this.max-this.min)/d),g,h=b.rotation,i=this.chart.renderer.fontMetrics(b.style.fontSize,a[0]&&a[0].label),j,k=Number.MAX_VALUE,l,m=function(a){a/=f||1;a=a>1?ta(a):1;return a*d};c?(l=q(h)?[h]:f<p(b.autoRotationLimit,80)&&!b.staggerLines&&!b.step&&b.autoRotation)&&o(l,function(a){var b;if(a===h||a&&a>=-90&&a<=90)j=m(O(i.h/aa(ha*a))),b=j+O(a/360),b<k&&(k=b,g=a,e=j)}):e=m(i.h);this.autoRotation=l;this.labelRotation=g;return e},renderUnsquish:function(){var a=
this.chart,b=a.renderer,c=this.tickPositions,d=this.ticks,e=this.options.labels,f=this.horiz,g=a.margin,h=this.categories?c.length:c.length-1,i=this.slotWidth=f&&!e.step&&!e.rotation&&(this.staggerLines||1)*a.plotWidth/h||!f&&(g[3]&&g[3]-a.spacing[3]||a.chartWidth*0.33),j=u(1,r(i-2*(e.padding||5))),k={},g=b.fontMetrics(e.style.fontSize,d[0]&&d[0].label),h=e.style.textOverflow,l,m=0;if(!Da(e.rotation))k.rotation=e.rotation;if(this.autoRotation)o(c,function(a){if((a=d[a])&&a.labelLength>m)m=a.labelLength}),
m>j&&m>g.h?k.rotation=this.labelRotation:this.labelRotation=0;else if(i&&(l={width:j+"px"},!h)){l.textOverflow="clip";for(i=c.length;!f&&i--;)if(j=c[i],j=d[j].label)if(j.styles.textOverflow==="ellipsis"&&j.css({textOverflow:"clip"}),j.getBBox().height>this.len/c.length-(g.h-g.f))j.specCss={textOverflow:"ellipsis"}}if(k.rotation&&(l={width:(m>a.chartHeight*0.5?a.chartHeight*0.33:a.chartHeight)+"px"},!h))l.textOverflow="ellipsis";this.labelAlign=k.align=e.align||this.autoLabelAlign(this.labelRotation);
o(c,function(a){var b=(a=d[a])&&a.label;if(b)l&&b.css(z(l,b.specCss)),delete b.specCss,b.attr(k),a.rotation=k.rotation});this.tickRotCorr=b.rotCorr(g.b,this.labelRotation||0,this.side===2)},hasData:function(){return this.hasVisibleSeries||q(this.min)&&q(this.max)&&!!this.tickPositions},getOffset:function(){var a=this,b=a.chart,c=b.renderer,d=a.options,e=a.tickPositions,f=a.ticks,g=a.horiz,h=a.side,i=b.inverted?[1,0,3,2][h]:h,j,k,l=0,m,n=0,v=d.title,s=d.labels,S=0,N=b.axisOffset,b=b.clipOffset,t=[-1,
1,1,-1][h],w;j=a.hasData();a.showAxis=k=j||p(d.showEmpty,!0);a.staggerLines=a.horiz&&s.staggerLines;if(!a.axisGroup)a.gridGroup=c.g("grid").attr({zIndex:d.gridZIndex||1}).add(),a.axisGroup=c.g("axis").attr({zIndex:d.zIndex||2}).add(),a.labelGroup=c.g("axis-labels").attr({zIndex:s.zIndex||7}).addClass("highcharts-"+a.coll.toLowerCase()+"-labels").add();if(j||a.isLinked){if(o(e,function(b){f[b]?f[b].addLabel():f[b]=new Ta(a,b)}),a.renderUnsquish(),o(e,function(b){if(h===0||h===2||{1:"left",3:"right"}[h]===
a.labelAlign)S=u(f[b].getLabelSize(),S)}),a.staggerLines)S*=a.staggerLines,a.labelOffset=S}else for(w in f)f[w].destroy(),delete f[w];if(v&&v.text&&v.enabled!==!1){if(!a.axisTitle)a.axisTitle=c.text(v.text,0,0,v.useHTML).attr({zIndex:7,rotation:v.rotation||0,align:v.textAlign||{low:"left",middle:"center",high:"right"}[v.align]}).addClass("highcharts-"+this.coll.toLowerCase()+"-title").css(v.style).add(a.axisGroup),a.axisTitle.isNew=!0;if(k)l=a.axisTitle.getBBox()[g?"height":"width"],m=v.offset,n=
q(m)?0:p(v.margin,g?5:10);a.axisTitle[k?"show":"hide"]()}a.offset=t*p(d.offset,N[h]);a.tickRotCorr=a.tickRotCorr||{x:0,y:0};c=h===2?a.tickRotCorr.y:0;g=S+n+(S&&t*(g?p(s.y,a.tickRotCorr.y+8):s.x)-c);a.axisTitleMargin=p(m,g);N[h]=u(N[h],a.axisTitleMargin+l+t*a.offset,g);l=V(d.lineWidth/2)*2;d.offset&&(l=u(0,l-d.offset));b[i]=u(b[i],l)},getLinePath:function(a){var b=this.chart,c=this.opposite,d=this.offset,e=this.horiz,f=this.left+(c?this.width:0)+d,d=b.chartHeight-this.bottom-(c?this.height:0)+d;c&&
(a*=-1);return b.renderer.crispLine(["M",e?this.left:f,e?d:this.top,"L",e?b.chartWidth-this.right:f,e?d:b.chartHeight-this.bottom],a)},getTitlePosition:function(){var a=this.horiz,b=this.left,c=this.top,d=this.len,e=this.options.title,f=a?b:c,g=this.opposite,h=this.offset,i=e.x||0,j=e.y||0,k=D(e.style.fontSize||12),d={low:f+(a?0:d),middle:f+d/2,high:f+(a?d:0)}[e.align],b=(a?c+this.height:b)+(a?1:-1)*(g?-1:1)*this.axisTitleMargin+(this.side===2?k:0);return{x:a?d+i:b+(g?this.width:0)+h+i,y:a?b+j-(g?
this.height:0)+h:d+j}},render:function(){var a=this,b=a.chart,c=b.renderer,d=a.options,e=a.isLog,f=a.isLinked,g=a.tickPositions,h=a.axisTitle,i=a.ticks,j=a.minorTicks,k=a.alternateBands,l=d.stackLabels,m=d.alternateGridColor,n=a.tickmarkOffset,v=d.lineWidth,s,p=b.hasRendered&&q(a.oldMin)&&!isNaN(a.oldMin),N=a.showAxis,t,w;a.labelEdge.length=0;a.overlap=!1;o([i,j,k],function(a){for(var b in a)a[b].isActive=!1});if(a.hasData()||f){a.minorTickInterval&&!a.categories&&o(a.getMinorTickPositions(),function(b){j[b]||
(j[b]=new Ta(a,b,"minor"));p&&j[b].isNew&&j[b].render(null,!0);j[b].render(null,!1,1)});if(g.length&&(o(g,function(b,c){if(!f||b>=a.min&&b<=a.max)i[b]||(i[b]=new Ta(a,b)),p&&i[b].isNew&&i[b].render(c,!0,0.1),i[b].render(c)}),n&&(a.min===0||a.single)))i[-1]||(i[-1]=new Ta(a,-1,null,!0)),i[-1].render(-1);m&&o(g,function(b,c){if(c%2===0&&b<a.max)k[b]||(k[b]=new A.PlotLineOrBand(a)),t=b+n,w=g[c+1]!==y?g[c+1]+n:a.max,k[b].options={from:e?ia(t):t,to:e?ia(w):w,color:m},k[b].render(),k[b].isActive=!0});if(!a._addedPlotLB)o((d.plotLines||
[]).concat(d.plotBands||[]),function(b){a.addPlotBandOrLine(b)}),a._addedPlotLB=!0}o([i,j,k],function(a){var c,d,e=[],f=za?za.duration||500:0,g=function(){for(d=e.length;d--;)a[e[d]]&&!a[e[d]].isActive&&(a[e[d]].destroy(),delete a[e[d]])};for(c in a)if(!a[c].isActive)a[c].render(c,!1,0),a[c].isActive=!1,e.push(c);a===k||!b.hasRendered||!f?g():f&&setTimeout(g,f)});if(v)s=a.getLinePath(v),a.axisLine?a.axisLine.animate({d:s}):a.axisLine=c.path(s).attr({stroke:d.lineColor,"stroke-width":v,zIndex:7}).add(a.axisGroup),
a.axisLine[N?"show":"hide"]();if(h&&N)h[h.isNew?"attr":"animate"](a.getTitlePosition()),h.isNew=!1;l&&l.enabled&&a.renderStackTotals();a.isDirty=!1},redraw:function(){this.render();o(this.plotLinesAndBands,function(a){a.render()});o(this.series,function(a){a.isDirty=!0})},destroy:function(a){var b=this,c=b.stacks,d,e=b.plotLinesAndBands;a||Z(b);for(d in c)Qa(c[d]),c[d]=null;o([b.ticks,b.minorTicks,b.alternateBands],function(a){Qa(a)});for(a=e.length;a--;)e[a].destroy();o("stackTotalGroup,axisLine,axisTitle,axisGroup,cross,gridGroup,labelGroup".split(","),
function(a){b[a]&&(b[a]=b[a].destroy())});this.cross&&this.cross.destroy()},drawCrosshair:function(a,b){var c,d=this.crosshair,e=d.animation;if(!this.crosshair||(q(b)||!p(this.crosshair.snap,!0))===!1||b&&b.series&&b.series[this.coll]!==this)this.hideCrosshair();else if(p(d.snap,!0)?q(b)&&(c=this.isXAxis?b.plotX:this.len-b.plotY):c=this.horiz?a.chartX-this.pos:this.len-a.chartY+this.pos,c=this.isRadial?this.getPlotLinePath(this.isXAxis?b.x:p(b.stackY,b.y))||null:this.getPlotLinePath(null,null,null,
null,c)||null,c===null)this.hideCrosshair();else if(this.cross)this.cross.attr({visibility:"visible"})[e?"animate":"attr"]({d:c},e);else{e=this.categories&&!this.isRadial;e={"stroke-width":d.width||(e?this.transA:1),stroke:d.color||(e?"rgba(155,200,255,0.2)":"#C0C0C0"),zIndex:d.zIndex||2};if(d.dashStyle)e.dashstyle=d.dashStyle;this.cross=this.chart.renderer.path(c).attr(e).add()}},hideCrosshair:function(){this.cross&&this.cross.hide()}};x(va.prototype,{getPlotBandPath:function(a,b){var c=this.getPlotLinePath(b,
null,null,!0),d=this.getPlotLinePath(a,null,null,!0);d&&c&&d.toString()!==c.toString()?d.push(c[4],c[5],c[1],c[2]):d=null;return d},addPlotBand:function(a){return this.addPlotBandOrLine(a,"plotBands")},addPlotLine:function(a){return this.addPlotBandOrLine(a,"plotLines")},addPlotBandOrLine:function(a,b){var c=(new A.PlotLineOrBand(this,a)).render(),d=this.userOptions;c&&(b&&(d[b]=d[b]||[],d[b].push(a)),this.plotLinesAndBands.push(c));return c},removePlotBandOrLine:function(a){for(var b=this.plotLinesAndBands,
c=this.options,d=this.userOptions,e=b.length;e--;)b[e].id===a&&b[e].destroy();o([c.plotLines||[],d.plotLines||[],c.plotBands||[],d.plotBands||[]],function(b){for(e=b.length;e--;)b[e].id===a&&ja(b,b[e])})}});va.prototype.getTimeTicks=function(a,b,c,d){var e=[],f={},g=T.global.useUTC,h,i=new Aa(b-Wa(b)),j=a.unitRange,k=a.count;if(q(b)){i[Eb](j>=E.second?0:k*V(i.getMilliseconds()/k));if(j>=E.second)i[Fb](j>=E.minute?0:k*V(i.getSeconds()/k));if(j>=E.minute)i[Gb](j>=E.hour?0:k*V(i[sb]()/k));if(j>=E.hour)i[Hb](j>=
E.day?0:k*V(i[tb]()/k));if(j>=E.day)i[vb](j>=E.month?1:k*V(i[Xa]()/k));j>=E.month&&(i[wb](j>=E.year?0:k*V(i[Ya]()/k)),h=i[Za]());j>=E.year&&(h-=h%k,i[xb](h));if(j===E.week)i[vb](i[Xa]()-i[ub]()+p(d,1));b=1;if(ob||eb)i=i.getTime(),i=new Aa(i+Wa(i));h=i[Za]();for(var d=i.getTime(),l=i[Ya](),m=i[Xa](),n=(E.day+(g?Wa(i):i.getTimezoneOffset()*6E4))%E.day;d<c;)e.push(d),j===E.year?d=gb(h+b*k,0):j===E.month?d=gb(h,l+b*k):!g&&(j===E.day||j===E.week)?d=gb(h,l,m+b*k*(j===E.day?1:7)):d+=j*k,b++;e.push(d);o(lb(e,
function(a){return j<=E.hour&&a%E.day===n}),function(a){f[a]="day"})}e.info=x(a,{higherRanks:f,totalRange:j*k});return e};va.prototype.normalizeTimeTickInterval=function(a,b){var c=b||[["millisecond",[1,2,5,10,20,25,50,100,200,500]],["second",[1,2,5,10,15,30]],["minute",[1,2,5,10,15,30]],["hour",[1,2,3,4,6,8,12]],["day",[1,2]],["week",[1,2]],["month",[1,2,3,4,6]],["year",null]],d=c[c.length-1],e=E[d[0]],f=d[1],g;for(g=0;g<c.length;g++)if(d=c[g],e=E[d[0]],f=d[1],c[g+1]&&a<=(e*f[f.length-1]+E[c[g+1][0]])/
2)break;e===E.year&&a<5*e&&(f=[1,2,5]);c=qb(a/e,f,d[0]==="year"?u(pb(a/e),1):1);return{unitRange:e,count:c,unitName:d[0]}};va.prototype.getLogTickPositions=function(a,b,c,d){var e=this.options,f=this.len,g=[];if(!d)this._minorAutoInterval=null;if(a>=0.5)a=r(a),g=this.getLinearTickPositions(a,b,c);else if(a>=0.08)for(var f=V(b),h,i,j,k,l,e=a>0.3?[1,2,4]:a>0.15?[1,2,4,6,8]:[1,2,3,4,5,6,7,8,9];f<c+1&&!l;f++){i=e.length;for(h=0;h<i&&!l;h++)j=Ea(ia(f)*e[h]),j>b&&(!d||k<=c)&&k!==y&&g.push(k),k>c&&(l=!0),
k=j}else if(b=ia(b),c=ia(c),a=e[d?"minorTickInterval":"tickInterval"],a=p(a==="auto"?null:a,this._minorAutoInterval,(c-b)*(e.tickPixelInterval/(d?5:1))/((d?f/this.tickPositions.length:f)||1)),a=qb(a,null,pb(a)),g=Ua(this.getLinearTickPositions(a,b,c),Ea),!d)this._minorAutoInterval=a/5;if(!d)this.tickInterval=a;return g};var Nb=A.Tooltip=function(){this.init.apply(this,arguments)};Nb.prototype={init:function(a,b){var c=b.borderWidth,d=b.style,e=D(d.padding);this.chart=a;this.options=b;this.crosshairs=
[];this.now={x:0,y:0};this.isHidden=!0;this.label=a.renderer.label("",0,0,b.shape||"callout",null,null,b.useHTML,null,"tooltip").attr({padding:e,fill:b.backgroundColor,"stroke-width":c,r:b.borderRadius,zIndex:8}).css(d).css({padding:0}).add().attr({y:-9999});fa||this.label.shadow(b.shadow);this.shared=b.shared},destroy:function(){if(this.label)this.label=this.label.destroy();clearTimeout(this.hideTimer);clearTimeout(this.tooltipTimeout)},move:function(a,b,c,d){var e=this,f=e.now,g=e.options.animation!==
!1&&!e.isHidden&&(O(a-f.x)>1||O(b-f.y)>1),h=e.followPointer||e.len>1;x(f,{x:g?(2*f.x+a)/3:a,y:g?(f.y+b)/2:b,anchorX:h?y:g?(2*f.anchorX+c)/3:c,anchorY:h?y:g?(f.anchorY+d)/2:d});e.label.attr(f);if(g)clearTimeout(this.tooltipTimeout),this.tooltipTimeout=setTimeout(function(){e&&e.move(a,b,c,d)},32)},hide:function(a){var b=this;clearTimeout(this.hideTimer);if(!this.isHidden)this.hideTimer=setTimeout(function(){b.label.fadeOut();b.isHidden=!0},p(a,this.options.hideDelay,500))},getAnchor:function(a,b){var c,
d=this.chart,e=d.inverted,f=d.plotTop,g=d.plotLeft,h=0,i=0,j,k,a=sa(a);c=a[0].tooltipPos;this.followPointer&&b&&(b.chartX===y&&(b=d.pointer.normalize(b)),c=[b.chartX-d.plotLeft,b.chartY-f]);c||(o(a,function(a){j=a.series.yAxis;k=a.series.xAxis;h+=a.plotX+(!e&&k?k.left-g:0);i+=(a.plotLow?(a.plotLow+a.plotHigh)/2:a.plotY)+(!e&&j?j.top-f:0)}),h/=a.length,i/=a.length,c=[e?d.plotWidth-i:h,this.shared&&!e&&a.length>1&&b?b.chartY-f:e?d.plotHeight-h:i]);return Ua(c,r)},getPosition:function(a,b,c){var d=this.chart,
e=this.distance,f={},g=c.h||0,h,i=["y",d.chartHeight,b,c.plotY+d.plotTop],j=["x",d.chartWidth,a,c.plotX+d.plotLeft],k=p(c.ttBelow,d.inverted&&!c.negative||!d.inverted&&c.negative),l=function(a,b,c,d){var h=c<d-e,i=d+e+c<b,j=d-e-c;d+=e;if(k&&i)f[a]=d;else if(!k&&h)f[a]=j;else if(h)f[a]=j-g<0?j:j-g;else if(i)f[a]=d+g+c>b?d:d+g;else return!1},m=function(a,b,c,d){if(d<e||d>b-e)return!1;else f[a]=d<c/2?1:d>b-c/2?b-c-2:d-c/2},n=function(a){var b=i;i=j;j=b;h=a},v=function(){l.apply(0,i)!==!1?m.apply(0,j)===
!1&&!h&&(n(!0),v()):h?f.x=f.y=0:(n(!0),v())};(d.inverted||this.len>1)&&n();v();return f},defaultFormatter:function(a){var b=this.points||sa(this),c;c=[a.tooltipFooterHeaderFormatter(b[0])];c=c.concat(a.bodyFormatter(b));c.push(a.tooltipFooterHeaderFormatter(b[0],!0));return c.join("")},refresh:function(a,b){var c=this.chart,d=this.label,e=this.options,f,g,h,i={},j,k=[];j=e.formatter||this.defaultFormatter;var i=c.hoverPoints,l,m=this.shared;clearTimeout(this.hideTimer);this.followPointer=sa(a)[0].series.tooltipOptions.followPointer;
h=this.getAnchor(a,b);f=h[0];g=h[1];m&&(!a.series||!a.series.noSharedTooltip)?(c.hoverPoints=a,i&&o(i,function(a){a.setState()}),o(a,function(a){a.setState("hover");k.push(a.getLabelConfig())}),i={x:a[0].category,y:a[0].y},i.points=k,this.len=k.length,a=a[0]):i=a.getLabelConfig();j=j.call(i,this);i=a.series;this.distance=p(i.tooltipOptions.distance,16);j===!1?this.hide():(this.isHidden&&(db(d),d.attr("opacity",1).show()),d.attr({text:j}),l=e.borderColor||a.color||i.color||"#606060",d.attr({stroke:l}),
this.updatePosition({plotX:f,plotY:g,negative:a.negative,ttBelow:a.ttBelow,h:h[2]||0}),this.isHidden=!1);I(c,"tooltipRefresh",{text:j,x:f+c.plotLeft,y:g+c.plotTop,borderColor:l})},updatePosition:function(a){var b=this.chart,c=this.label,c=(this.options.positioner||this.getPosition).call(this,c.width,c.height,a);this.move(r(c.x),r(c.y||0),a.plotX+b.plotLeft,a.plotY+b.plotTop)},getXDateFormat:function(a,b,c){var d,b=b.dateTimeLabelFormats,e=c&&c.closestPointRange,f,g={millisecond:15,second:12,minute:9,
hour:6,day:3},h,i="millisecond";if(e){h=Oa("%m-%d %H:%M:%S.%L",a.x);for(f in E){if(e===E.week&&+Oa("%w",a.x)===c.options.startOfWeek&&h.substr(6)==="00:00:00.000"){f="week";break}else if(E[f]>e){f=i;break}else if(g[f]&&h.substr(g[f])!=="01-01 00:00:00.000".substr(g[f]))break;f!=="week"&&(i=f)}f&&(d=b[f])}else d=b.day;return d||b.year},tooltipFooterHeaderFormatter:function(a,b){var c=b?"footer":"header",d=a.series,e=d.tooltipOptions,f=e.xDateFormat,g=d.xAxis,h=g&&g.options.type==="datetime"&&ra(a.key),
c=e[c+"Format"];h&&!f&&(f=this.getXDateFormat(a,e,g));h&&f&&(c=c.replace("{point.key}","{point.key:"+f+"}"));return Ja(c,{point:a,series:d})},bodyFormatter:function(a){return Ua(a,function(a){var c=a.series.tooltipOptions;return(c.pointFormatter||a.point.tooltipFormatter).call(a.point,c.pointFormat)})}};var pa;ab=B.documentElement.ontouchstart!==y;var Va=A.Pointer=function(a,b){this.init(a,b)};Va.prototype={init:function(a,b){var c=b.chart,d=c.events,e=fa?"":c.zoomType,c=a.inverted,f;this.options=
b;this.chart=a;this.zoomX=f=/x/.test(e);this.zoomY=e=/y/.test(e);this.zoomHor=f&&!c||e&&c;this.zoomVert=e&&!c||f&&c;this.hasZoom=f||e;this.runChartClick=d&&!!d.click;this.pinchDown=[];this.lastValidTouch={};if(A.Tooltip&&b.tooltip.enabled)a.tooltip=new Nb(a,b.tooltip),this.followTouchMove=p(b.tooltip.followTouchMove,!0);this.setDOMEvents()},normalize:function(a,b){var c,d,a=a||window.event,a=Tb(a);if(!a.target)a.target=a.srcElement;d=a.touches?a.touches.length?a.touches.item(0):a.changedTouches[0]:
a;if(!b)this.chartPosition=b=Sb(this.chart.container);d.pageX===y?(c=u(a.x,a.clientX-b.left),d=a.y):(c=d.pageX-b.left,d=d.pageY-b.top);return x(a,{chartX:r(c),chartY:r(d)})},getCoordinates:function(a){var b={xAxis:[],yAxis:[]};o(this.chart.axes,function(c){b[c.isXAxis?"xAxis":"yAxis"].push({axis:c,value:c.toValue(a[c.horiz?"chartX":"chartY"])})});return b},runPointActions:function(a){var b=this.chart,c=b.series,d=b.tooltip,e=d?d.shared:!1,f=b.hoverPoint,g=b.hoverSeries,h,i=b.chartWidth,j,k,l=[],m,
n;if(!e&&!g)for(h=0;h<c.length;h++)if(c[h].directTouch||!c[h].options.stickyTracking)c=[];!e&&g&&g.directTouch&&f?m=f:(o(c,function(b){j=b.noSharedTooltip&&e;k=!e&&b.directTouch;b.visible&&!j&&!k&&p(b.options.enableMouseTracking,!0)&&(n=b.searchPoint(a,!j&&b.kdDimensions===1))&&l.push(n)}),o(l,function(a){if(a&&typeof a.dist==="number"&&a.dist<i)i=a.dist,m=a}));if(m&&(m!==this.prevKDPoint||d&&d.isHidden)){if(e&&!m.series.noSharedTooltip){for(h=l.length;h--;)(l[h].clientX!==m.clientX||l[h].series.noSharedTooltip)&&
l.splice(h,1);l.length&&d&&d.refresh(l,a);o(l,function(b){if(b!==m)b.onMouseOver(a)});(g&&g.directTouch&&f||m).onMouseOver(a)}else d&&d.refresh(m,a),m.onMouseOver(a);this.prevKDPoint=m}else c=g&&g.tooltipOptions.followPointer,d&&c&&!d.isHidden&&(c=d.getAnchor([{}],a),d.updatePosition({plotX:c[0],plotY:c[1]}));if(d&&!this._onDocumentMouseMove)this._onDocumentMouseMove=function(a){if(Y[pa])Y[pa].pointer.onDocumentMouseMove(a)},H(B,"mousemove",this._onDocumentMouseMove);o(b.axes,function(b){b.drawCrosshair(a,
p(m,f))})},reset:function(a,b){var c=this.chart,d=c.hoverSeries,e=c.hoverPoint,f=c.hoverPoints,g=c.tooltip,h=g&&g.shared?f:e;(a=a&&g&&h)&&sa(h)[0].plotX===y&&(a=!1);if(a)g.refresh(h),e&&(e.setState(e.state,!0),o(c.axes,function(a){p(a.options.crosshair&&a.options.crosshair.snap,!0)?a.drawCrosshair(null,e):a.hideCrosshair()}));else{if(e)e.onMouseOut();f&&o(f,function(a){a.setState()});if(d)d.onMouseOut();g&&g.hide(b);if(this._onDocumentMouseMove)Z(B,"mousemove",this._onDocumentMouseMove),this._onDocumentMouseMove=
null;o(c.axes,function(a){a.hideCrosshair()});this.hoverX=c.hoverPoints=c.hoverPoint=null}},scaleGroups:function(a,b){var c=this.chart,d;o(c.series,function(e){d=a||e.getPlotBox();e.xAxis&&e.xAxis.zoomEnabled&&(e.group.attr(d),e.markerGroup&&(e.markerGroup.attr(d),e.markerGroup.clip(b?c.clipRect:null)),e.dataLabelsGroup&&e.dataLabelsGroup.attr(d))});c.clipRect.attr(b||c.clipBox)},dragStart:function(a){var b=this.chart;b.mouseIsDown=a.type;b.cancelClick=!1;b.mouseDownX=this.mouseDownX=a.chartX;b.mouseDownY=
this.mouseDownY=a.chartY},drag:function(a){var b=this.chart,c=b.options.chart,d=a.chartX,e=a.chartY,f=this.zoomHor,g=this.zoomVert,h=b.plotLeft,i=b.plotTop,j=b.plotWidth,k=b.plotHeight,l,m=this.mouseDownX,n=this.mouseDownY,v=c.panKey&&a[c.panKey+"Key"];d<h?d=h:d>h+j&&(d=h+j);e<i?e=i:e>i+k&&(e=i+k);this.hasDragged=Math.sqrt(Math.pow(m-d,2)+Math.pow(n-e,2));if(this.hasDragged>10){l=b.isInsidePlot(m-h,n-i);if(b.hasCartesianSeries&&(this.zoomX||this.zoomY)&&l&&!v&&!this.selectionMarker)this.selectionMarker=
b.renderer.rect(h,i,f?1:j,g?1:k,0).attr({fill:c.selectionMarkerFill||"rgba(69,114,167,0.25)",zIndex:7}).add();this.selectionMarker&&f&&(d-=m,this.selectionMarker.attr({width:O(d),x:(d>0?0:d)+m}));this.selectionMarker&&g&&(d=e-n,this.selectionMarker.attr({height:O(d),y:(d>0?0:d)+n}));l&&!this.selectionMarker&&c.panning&&b.pan(a,c.panning)}},drop:function(a){var b=this,c=this.chart,d=this.hasPinched;if(this.selectionMarker){var e={xAxis:[],yAxis:[],originalEvent:a.originalEvent||a},f=this.selectionMarker,
g=f.attr?f.attr("x"):f.x,h=f.attr?f.attr("y"):f.y,i=f.attr?f.attr("width"):f.width,j=f.attr?f.attr("height"):f.height,k;if(this.hasDragged||d)o(c.axes,function(c){if(c.zoomEnabled&&q(c.min)&&(d||b[{xAxis:"zoomX",yAxis:"zoomY"}[c.coll]])){var f=c.horiz,n=a.type==="touchend"?c.minPixelPadding:0,v=c.toValue((f?g:h)+n),f=c.toValue((f?g+i:h+j)-n);e[c.coll].push({axis:c,min:C(v,f),max:u(v,f)});k=!0}}),k&&I(c,"selection",e,function(a){c.zoom(x(a,d?{animation:!1}:null))});this.selectionMarker=this.selectionMarker.destroy();
d&&this.scaleGroups()}if(c)L(c.container,{cursor:c._cursor}),c.cancelClick=this.hasDragged>10,c.mouseIsDown=this.hasDragged=this.hasPinched=!1,this.pinchDown=[]},onContainerMouseDown:function(a){a=this.normalize(a);a.preventDefault&&a.preventDefault();this.dragStart(a)},onDocumentMouseUp:function(a){Y[pa]&&Y[pa].pointer.drop(a)},onDocumentMouseMove:function(a){var b=this.chart,c=this.chartPosition,a=this.normalize(a,c);c&&!this.inClass(a.target,"highcharts-tracker")&&!b.isInsidePlot(a.chartX-b.plotLeft,
a.chartY-b.plotTop)&&this.reset()},onContainerMouseLeave:function(){var a=Y[pa];if(a)a.pointer.reset(),a.pointer.chartPosition=null},onContainerMouseMove:function(a){var b=this.chart;pa=b.index;a=this.normalize(a);a.returnValue=!1;b.mouseIsDown==="mousedown"&&this.drag(a);(this.inClass(a.target,"highcharts-tracker")||b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop))&&!b.openMenu&&this.runPointActions(a)},inClass:function(a,b){for(var c;a;){if(c=J(a,"class"))if(c.indexOf(b)!==-1)return!0;else if(c.indexOf("highcharts-container")!==
-1)return!1;a=a.parentNode}},onTrackerMouseOut:function(a){var b=this.chart.hoverSeries,c=(a=a.relatedTarget||a.toElement)&&a.point&&a.point.series;if(b&&!b.options.stickyTracking&&!this.inClass(a,"highcharts-tooltip")&&c!==b)b.onMouseOut()},onContainerClick:function(a){var b=this.chart,c=b.hoverPoint,d=b.plotLeft,e=b.plotTop,a=this.normalize(a);a.originalEvent=a;b.cancelClick||(c&&this.inClass(a.target,"highcharts-tracker")?(I(c.series,"click",x(a,{point:c})),b.hoverPoint&&c.firePointEvent("click",
a)):(x(a,this.getCoordinates(a)),b.isInsidePlot(a.chartX-d,a.chartY-e)&&I(b,"click",a)))},setDOMEvents:function(){var a=this,b=a.chart.container;b.onmousedown=function(b){a.onContainerMouseDown(b)};b.onmousemove=function(b){a.onContainerMouseMove(b)};b.onclick=function(b){a.onContainerClick(b)};H(b,"mouseleave",a.onContainerMouseLeave);bb===1&&H(B,"mouseup",a.onDocumentMouseUp);if(ab)b.ontouchstart=function(b){a.onContainerTouchStart(b)},b.ontouchmove=function(b){a.onContainerTouchMove(b)},bb===1&&
H(B,"touchend",a.onDocumentTouchEnd)},destroy:function(){var a;Z(this.chart.container,"mouseleave",this.onContainerMouseLeave);bb||(Z(B,"mouseup",this.onDocumentMouseUp),Z(B,"touchend",this.onDocumentTouchEnd));clearInterval(this.tooltipTimeout);for(a in this)this[a]=null}};x(A.Pointer.prototype,{pinchTranslate:function(a,b,c,d,e,f){(this.zoomHor||this.pinchHor)&&this.pinchTranslateDirection(!0,a,b,c,d,e,f);(this.zoomVert||this.pinchVert)&&this.pinchTranslateDirection(!1,a,b,c,d,e,f)},pinchTranslateDirection:function(a,
b,c,d,e,f,g,h){var i=this.chart,j=a?"x":"y",k=a?"X":"Y",l="chart"+k,m=a?"width":"height",n=i["plot"+(a?"Left":"Top")],v,s,p=h||1,o=i.inverted,t=i.bounds[a?"h":"v"],w=b.length===1,q=b[0][l],u=c[0][l],r=!w&&b[1][l],y=!w&&c[1][l],x,c=function(){!w&&O(q-r)>20&&(p=h||O(u-y)/O(q-r));s=(n-u)/p+q;v=i["plot"+(a?"Width":"Height")]/p};c();b=s;b<t.min?(b=t.min,x=!0):b+v>t.max&&(b=t.max-v,x=!0);x?(u-=0.8*(u-g[j][0]),w||(y-=0.8*(y-g[j][1])),c()):g[j]=[u,y];o||(f[j]=s-n,f[m]=v);f=o?1/p:p;e[m]=v;e[j]=b;d[o?a?"scaleY":
"scaleX":"scale"+k]=p;d["translate"+k]=f*n+(u-f*q)},pinch:function(a){var b=this,c=b.chart,d=b.pinchDown,e=a.touches,f=e.length,g=b.lastValidTouch,h=b.hasZoom,i=b.selectionMarker,j={},k=f===1&&(b.inClass(a.target,"highcharts-tracker")&&c.runTrackerClick||b.runChartClick),l={};if(f>1)b.initiated=!0;h&&b.initiated&&!k&&a.preventDefault();Ua(e,function(a){return b.normalize(a)});if(a.type==="touchstart")o(e,function(a,b){d[b]={chartX:a.chartX,chartY:a.chartY}}),g.x=[d[0].chartX,d[1]&&d[1].chartX],g.y=
[d[0].chartY,d[1]&&d[1].chartY],o(c.axes,function(a){if(a.zoomEnabled){var b=c.bounds[a.horiz?"h":"v"],d=a.minPixelPadding,e=a.toPixels(p(a.options.min,a.dataMin)),f=a.toPixels(p(a.options.max,a.dataMax)),g=C(e,f),e=u(e,f);b.min=C(a.pos,g-d);b.max=u(a.pos+a.len,e+d)}}),b.res=!0;else if(d.length){if(!i)b.selectionMarker=i=x({destroy:na},c.plotBox);b.pinchTranslate(d,e,j,i,l,g);b.hasPinched=h;b.scaleGroups(j,l);if(!h&&b.followTouchMove&&f===1)this.runPointActions(b.normalize(a));else if(b.res)b.res=
!1,this.reset(!1,0)}},touch:function(a,b){var c=this.chart;pa=c.index;a.touches.length===1?(a=this.normalize(a),c.isInsidePlot(a.chartX-c.plotLeft,a.chartY-c.plotTop)&&!c.openMenu?(b&&this.runPointActions(a),this.pinch(a)):b&&this.reset()):a.touches.length===2&&this.pinch(a)},onContainerTouchStart:function(a){this.touch(a,!0)},onContainerTouchMove:function(a){this.touch(a)},onDocumentTouchEnd:function(a){Y[pa]&&Y[pa].pointer.drop(a)}});if(K.PointerEvent||K.MSPointerEvent){var wa={},Bb=!!K.PointerEvent,
Xb=function(){var a,b=[];b.item=function(a){return this[a]};for(a in wa)wa.hasOwnProperty(a)&&b.push({pageX:wa[a].pageX,pageY:wa[a].pageY,target:wa[a].target});return b},Cb=function(a,b,c,d){a=a.originalEvent||a;if((a.pointerType==="touch"||a.pointerType===a.MSPOINTER_TYPE_TOUCH)&&Y[pa])d(a),d=Y[pa].pointer,d[b]({type:c,target:a.currentTarget,preventDefault:na,touches:Xb()})};x(Va.prototype,{onContainerPointerDown:function(a){Cb(a,"onContainerTouchStart","touchstart",function(a){wa[a.pointerId]={pageX:a.pageX,
pageY:a.pageY,target:a.currentTarget}})},onContainerPointerMove:function(a){Cb(a,"onContainerTouchMove","touchmove",function(a){wa[a.pointerId]={pageX:a.pageX,pageY:a.pageY};if(!wa[a.pointerId].target)wa[a.pointerId].target=a.currentTarget})},onDocumentPointerUp:function(a){Cb(a,"onDocumentTouchEnd","touchend",function(a){delete wa[a.pointerId]})},batchMSEvents:function(a){a(this.chart.container,Bb?"pointerdown":"MSPointerDown",this.onContainerPointerDown);a(this.chart.container,Bb?"pointermove":
"MSPointerMove",this.onContainerPointerMove);a(B,Bb?"pointerup":"MSPointerUp",this.onDocumentPointerUp)}});cb(Va.prototype,"init",function(a,b,c){a.call(this,b,c);this.hasZoom&&L(b.container,{"-ms-touch-action":P,"touch-action":P})});cb(Va.prototype,"setDOMEvents",function(a){a.apply(this);(this.hasZoom||this.followTouchMove)&&this.batchMSEvents(H)});cb(Va.prototype,"destroy",function(a){this.batchMSEvents(Z);a.call(this)})}var nb=A.Legend=function(a,b){this.init(a,b)};nb.prototype={init:function(a,
b){var c=this,d=b.itemStyle,e=b.itemMarginTop||0;this.options=b;if(b.enabled)c.itemStyle=d,c.itemHiddenStyle=z(d,b.itemHiddenStyle),c.itemMarginTop=e,c.padding=d=p(b.padding,8),c.initialItemX=d,c.initialItemY=d-5,c.maxItemWidth=0,c.chart=a,c.itemHeight=0,c.symbolWidth=p(b.symbolWidth,16),c.pages=[],c.render(),H(c.chart,"endResize",function(){c.positionCheckboxes()})},colorizeItem:function(a,b){var c=this.options,d=a.legendItem,e=a.legendLine,f=a.legendSymbol,g=this.itemHiddenStyle.color,c=b?c.itemStyle.color:
g,h=b?a.legendColor||a.color||"#CCC":g,g=a.options&&a.options.marker,i={fill:h},j;d&&d.css({fill:c,color:c});e&&e.attr({stroke:h});if(f){if(g&&f.isMarker)for(j in i.stroke=h,g=a.convertAttribs(g),g)d=g[j],d!==y&&(i[j]=d);f.attr(i)}},positionItem:function(a){var b=this.options,c=b.symbolPadding,b=!b.rtl,d=a._legendItemPos,e=d[0],d=d[1],f=a.checkbox;(a=a.legendGroup)&&a.element&&a.translate(b?e:this.legendWidth-e-2*c-4,d);if(f)f.x=e,f.y=d},destroyItem:function(a){var b=a.checkbox;o(["legendItem","legendLine",
"legendSymbol","legendGroup"],function(b){a[b]&&(a[b]=a[b].destroy())});b&&Ra(a.checkbox)},destroy:function(){var a=this.group,b=this.box;if(b)this.box=b.destroy();if(a)this.group=a.destroy()},positionCheckboxes:function(a){var b=this.group.alignAttr,c,d=this.clipHeight||this.legendHeight;if(b)c=b.translateY,o(this.allItems,function(e){var f=e.checkbox,g;f&&(g=c+f.y+(a||0)+3,L(f,{left:b.translateX+e.checkboxOffset+f.x-20+"px",top:g+"px",display:g>c-6&&g<c+d-6?"":P}))})},renderTitle:function(){var a=
this.padding,b=this.options.title,c=0;if(b.text){if(!this.title)this.title=this.chart.renderer.label(b.text,a-3,a-4,null,null,null,null,null,"legend-title").attr({zIndex:1}).css(b.style).add(this.group);a=this.title.getBBox();c=a.height;this.offsetWidth=a.width;this.contentGroup.attr({translateY:c})}this.titleHeight=c},setText:function(a){var b=this.options;a.legendItem.attr({text:b.labelFormat?Ja(b.labelFormat,a):b.labelFormatter.call(a)})},renderItem:function(a){var b=this.chart,c=b.renderer,d=
this.options,e=d.layout==="horizontal",f=this.symbolWidth,g=d.symbolPadding,h=this.itemStyle,i=this.itemHiddenStyle,j=this.padding,k=e?p(d.itemDistance,20):0,l=!d.rtl,m=d.width,n=d.itemMarginBottom||0,v=this.itemMarginTop,s=this.initialItemX,o=a.legendItem,q=a.series&&a.series.drawLegendSymbol?a.series:a,t=q.options,t=this.createCheckboxForItem&&t&&t.showCheckbox,w=d.useHTML;if(!o){a.legendGroup=c.g("legend-item").attr({zIndex:1}).add(this.scrollGroup);a.legendItem=o=c.text("",l?f+g:-g,this.baseline||
0,w).css(z(a.visible?h:i)).attr({align:l?"left":"right",zIndex:2}).add(a.legendGroup);if(!this.baseline)this.fontMetrics=c.fontMetrics(h.fontSize,o),this.baseline=this.fontMetrics.f+3+v,o.attr("y",this.baseline);q.drawLegendSymbol(this,a);this.setItemEvents&&this.setItemEvents(a,o,w,h,i);this.colorizeItem(a,a.visible);t&&this.createCheckboxForItem(a)}this.setText(a);c=o.getBBox();f=a.checkboxOffset=d.itemWidth||a.legendItemWidth||f+g+c.width+k+(t?20:0);this.itemHeight=g=r(a.legendItemHeight||c.height);
if(e&&this.itemX-s+f>(m||b.chartWidth-2*j-s-d.x))this.itemX=s,this.itemY+=v+this.lastLineHeight+n,this.lastLineHeight=0;this.maxItemWidth=u(this.maxItemWidth,f);this.lastItemY=v+this.itemY+n;this.lastLineHeight=u(g,this.lastLineHeight);a._legendItemPos=[this.itemX,this.itemY];e?this.itemX+=f:(this.itemY+=v+g+n,this.lastLineHeight=g);this.offsetWidth=m||u((e?this.itemX-s-k:f)+j,this.offsetWidth)},getAllItems:function(){var a=[];o(this.chart.series,function(b){var c=b.options;if(p(c.showInLegend,!q(c.linkedTo)?
y:!1,!0))a=a.concat(b.legendItems||(c.legendType==="point"?b.data:b))});return a},adjustMargins:function(a,b){var c=this.chart,d=this.options,e=d.align[0]+d.verticalAlign[0]+d.layout[0];this.display&&!d.floating&&o([/(lth|ct|rth)/,/(rtv|rm|rbv)/,/(rbh|cb|lbh)/,/(lbv|lm|ltv)/],function(f,g){f.test(e)&&!q(a[g])&&(c[jb[g]]=u(c[jb[g]],c.legend[(g+1)%2?"legendHeight":"legendWidth"]+[1,-1,-1,1][g]*d[g%2?"x":"y"]+p(d.margin,12)+b[g]))})},render:function(){var a=this,b=a.chart,c=b.renderer,d=a.group,e,f,
g,h,i=a.box,j=a.options,k=a.padding,l=j.borderWidth,m=j.backgroundColor;a.itemX=a.initialItemX;a.itemY=a.initialItemY;a.offsetWidth=0;a.lastItemY=0;if(!d)a.group=d=c.g("legend").attr({zIndex:7}).add(),a.contentGroup=c.g().attr({zIndex:1}).add(d),a.scrollGroup=c.g().add(a.contentGroup);a.renderTitle();e=a.getAllItems();rb(e,function(a,b){return(a.options&&a.options.legendIndex||0)-(b.options&&b.options.legendIndex||0)});j.reversed&&e.reverse();a.allItems=e;a.display=f=!!e.length;a.lastLineHeight=0;
o(e,function(b){a.renderItem(b)});g=(j.width||a.offsetWidth)+k;h=a.lastItemY+a.lastLineHeight+a.titleHeight;h=a.handleOverflow(h);h+=k;if(l||m){if(i){if(g>0&&h>0)i[i.isNew?"attr":"animate"](i.crisp({width:g,height:h})),i.isNew=!1}else a.box=i=c.rect(0,0,g,h,j.borderRadius,l||0).attr({stroke:j.borderColor,"stroke-width":l||0,fill:m||P}).add(d).shadow(j.shadow),i.isNew=!0;i[f?"show":"hide"]()}a.legendWidth=g;a.legendHeight=h;o(e,function(b){a.positionItem(b)});f&&d.align(x({width:g,height:h},j),!0,
"spacingBox");b.isResizing||this.positionCheckboxes()},handleOverflow:function(a){var b=this,c=this.chart,d=c.renderer,e=this.options,f=e.y,f=c.spacingBox.height+(e.verticalAlign==="top"?-f:f)-this.padding,g=e.maxHeight,h,i=this.clipRect,j=e.navigation,k=p(j.animation,!0),l=j.arrowSize||12,m=this.nav,n=this.pages,v=this.padding,s,q=this.allItems,N=function(a){i.attr({height:a});if(b.contentGroup.div)b.contentGroup.div.style.clip="rect("+v+"px,9999px,"+(v+a)+"px,0)"};e.layout==="horizontal"&&(f/=2);
g&&(f=C(f,g));n.length=0;if(a>f){this.clipHeight=h=u(f-20-this.titleHeight-v,0);this.currentPage=p(this.currentPage,1);this.fullHeight=a;o(q,function(a,b){var c=a._legendItemPos[1],d=r(a.legendItem.getBBox().height),e=n.length;if(!e||c-n[e-1]>h&&(s||c)!==n[e-1])n.push(s||c),e++;b===q.length-1&&c+d-n[e-1]>h&&n.push(c);c!==s&&(s=c)});if(!i)i=b.clipRect=d.clipRect(0,v,9999,0),b.contentGroup.clip(i);N(h);if(!m)this.nav=m=d.g().attr({zIndex:1}).add(this.group),this.up=d.symbol("triangle",0,0,l,l).on("click",
function(){b.scroll(-1,k)}).add(m),this.pager=d.text("",15,10).css(j.style).add(m),this.down=d.symbol("triangle-down",0,0,l,l).on("click",function(){b.scroll(1,k)}).add(m);b.scroll(0);a=f}else if(m)N(c.chartHeight),m.hide(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0;return a},scroll:function(a,b){var c=this.pages,d=c.length,e=this.currentPage+a,f=this.clipHeight,g=this.options.navigation,h=g.activeColor,g=g.inactiveColor,i=this.pager,j=this.padding;e>d&&(e=d);if(e>0)b!==y&&Sa(b,this.chart),
this.nav.attr({translateX:j,translateY:f+this.padding+7+this.titleHeight,visibility:"visible"}),this.up.attr({fill:e===1?g:h}).css({cursor:e===1?"default":"pointer"}),i.attr({text:e+"/"+d}),this.down.attr({x:18+this.pager.getBBox().width,fill:e===d?g:h}).css({cursor:e===d?"default":"pointer"}),c=-c[e-1]+this.initialItemY,this.scrollGroup.animate({translateY:c}),this.currentPage=e,this.positionCheckboxes(c)}};Na=A.LegendSymbolMixin={drawRectangle:function(a,b){var c=a.options.symbolHeight||a.fontMetrics.f;
b.legendSymbol=this.chart.renderer.rect(0,a.baseline-c+1,a.symbolWidth,c,a.options.symbolRadius||0).attr({zIndex:3}).add(b.legendGroup)},drawLineMarker:function(a){var b=this.options,c=b.marker,d;d=a.symbolWidth;var e=this.chart.renderer,f=this.legendGroup,a=a.baseline-r(a.fontMetrics.b*0.3),g;if(b.lineWidth){g={"stroke-width":b.lineWidth};if(b.dashStyle)g.dashstyle=b.dashStyle;this.legendLine=e.path(["M",0,a,"L",d,a]).attr(g).add(f)}if(c&&c.enabled!==!1)b=c.radius,this.legendSymbol=d=e.symbol(this.symbol,
d/2-b,a-b,2*b,2*b).add(f),d.isMarker=!0}};(/Trident\/7\.0/.test(Ba)||La)&&cb(nb.prototype,"positionItem",function(a,b){var c=this,d=function(){b._legendItemPos&&a.call(c,b)};d();setTimeout(d)});F=A.Chart=function(){this.init.apply(this,arguments)};F.prototype={callbacks:[],init:function(a,b){var c,d=a.series;a.series=null;c=z(T,a);c.series=a.series=d;this.userOptions=a;d=c.chart;this.margin=this.splashArray("margin",d);this.spacing=this.splashArray("spacing",d);var e=d.events;this.bounds={h:{},v:{}};
this.callback=b;this.isResizing=0;this.options=c;this.axes=[];this.series=[];this.hasCartesianSeries=d.showAxes;var f=this,g;f.index=Y.length;Y.push(f);bb++;d.reflow!==!1&&H(f,"load",function(){f.initReflow()});if(e)for(g in e)H(f,g,e[g]);f.xAxis=[];f.yAxis=[];f.animation=fa?!1:p(d.animation,!0);f.pointCount=f.colorCounter=f.symbolCounter=0;f.firstRender()},initSeries:function(a){var b=this.options.chart;(b=M[a.type||b.type||b.defaultSeriesType])||la(17,!0);b=new b;b.init(this,a);return b},isInsidePlot:function(a,
b,c){var d=c?b:a,a=c?a:b;return d>=0&&d<=this.plotWidth&&a>=0&&a<=this.plotHeight},redraw:function(a){var b=this.axes,c=this.series,d=this.pointer,e=this.legend,f=this.isDirtyLegend,g,h,i=this.hasCartesianSeries,j=this.isDirtyBox,k=c.length,l=k,m=this.renderer,n=m.isHidden(),p=[];Sa(a,this);n&&this.cloneRenderTo();for(this.layOutTitles();l--;)if(a=c[l],a.options.stacking&&(g=!0,a.isDirty)){h=!0;break}if(h)for(l=k;l--;)if(a=c[l],a.options.stacking)a.isDirty=!0;o(c,function(a){a.isDirty&&a.options.legendType===
"point"&&(a.updateTotals&&a.updateTotals(),f=!0)});if(f&&e.options.enabled)e.render(),this.isDirtyLegend=!1;g&&this.getStacks();if(i&&!this.isResizing)this.maxTicks=null,o(b,function(a){a.setScale()});this.getMargins();i&&(o(b,function(a){a.isDirty&&(j=!0)}),o(b,function(a){if(a.isDirtyExtremes)a.isDirtyExtremes=!1,p.push(function(){I(a,"afterSetExtremes",x(a.eventArgs,a.getExtremes()));delete a.eventArgs});(j||g)&&a.redraw()}));j&&this.drawChartBox();o(c,function(a){a.isDirty&&a.visible&&(!a.isCartesian||
a.xAxis)&&a.redraw()});d&&d.reset(!0);m.draw();I(this,"redraw");n&&this.cloneRenderTo(!0);o(p,function(a){a.call()})},get:function(a){var b=this.axes,c=this.series,d,e;for(d=0;d<b.length;d++)if(b[d].options.id===a)return b[d];for(d=0;d<c.length;d++)if(c[d].options.id===a)return c[d];for(d=0;d<c.length;d++){e=c[d].points||[];for(b=0;b<e.length;b++)if(e[b].id===a)return e[b]}return null},getAxes:function(){var a=this,b=this.options,c=b.xAxis=sa(b.xAxis||{}),b=b.yAxis=sa(b.yAxis||{});o(c,function(a,
b){a.index=b;a.isX=!0});o(b,function(a,b){a.index=b});c=c.concat(b);o(c,function(b){new va(a,b)})},getSelectedPoints:function(){var a=[];o(this.series,function(b){a=a.concat(lb(b.points||[],function(a){return a.selected}))});return a},getSelectedSeries:function(){return lb(this.series,function(a){return a.selected})},getStacks:function(){var a=this;o(a.yAxis,function(a){if(a.stacks&&a.hasVisibleSeries)a.oldStacks=a.stacks});o(a.series,function(b){if(b.options.stacking&&(b.visible===!0||a.options.chart.ignoreHiddenSeries===
!1))b.stackKey=b.type+p(b.options.stack,"")})},setTitle:function(a,b,c){var g;var d=this,e=d.options,f;f=e.title=z(e.title,a);g=e.subtitle=z(e.subtitle,b),e=g;o([["title",a,f],["subtitle",b,e]],function(a){var b=a[0],c=d[b],e=a[1],a=a[2];c&&e&&(d[b]=c=c.destroy());a&&a.text&&!c&&(d[b]=d.renderer.text(a.text,0,0,a.useHTML).attr({align:a.align,"class":"highcharts-"+b,zIndex:a.zIndex||4}).css(a.style).add())});d.layOutTitles(c)},layOutTitles:function(a){var b=0,c=this.title,d=this.subtitle,e=this.options,
f=e.title,e=e.subtitle,g=this.renderer,h=this.spacingBox.width-44;if(c&&(c.css({width:(f.width||h)+"px"}).align(x({y:g.fontMetrics(f.style.fontSize,c).b-3},f),!1,"spacingBox"),!f.floating&&!f.verticalAlign))b=c.getBBox().height;d&&(d.css({width:(e.width||h)+"px"}).align(x({y:b+(f.margin-13)+g.fontMetrics(f.style.fontSize,d).b},e),!1,"spacingBox"),!e.floating&&!e.verticalAlign&&(b=ta(b+d.getBBox().height)));c=this.titleOffset!==b;this.titleOffset=b;if(!this.isDirtyBox&&c)this.isDirtyBox=c,this.hasRendered&&
p(a,!0)&&this.isDirtyBox&&this.redraw()},getChartSize:function(){var a=this.options.chart,b=a.width,a=a.height,c=this.renderToClone||this.renderTo;if(!q(b))this.containerWidth=kb(c,"width");if(!q(a))this.containerHeight=kb(c,"height");this.chartWidth=u(0,b||this.containerWidth||600);this.chartHeight=u(0,p(a,this.containerHeight>19?this.containerHeight:400))},cloneRenderTo:function(a){var b=this.renderToClone,c=this.container;a?b&&(this.renderTo.appendChild(c),Ra(b),delete this.renderToClone):(c&&
c.parentNode===this.renderTo&&this.renderTo.removeChild(c),this.renderToClone=b=this.renderTo.cloneNode(0),L(b,{position:"absolute",top:"-9999px",display:"block"}),b.style.setProperty&&b.style.setProperty("display","block","important"),B.body.appendChild(b),c&&b.appendChild(c))},getContainer:function(){var a,b=this.options.chart,c,d,e;this.renderTo=a=b.renderTo;e="highcharts-"+yb++;if(Da(a))this.renderTo=a=B.getElementById(a);a||la(13,!0);c=D(J(a,"data-highcharts-chart"));!isNaN(c)&&Y[c]&&Y[c].hasRendered&&
Y[c].destroy();J(a,"data-highcharts-chart",this.index);a.innerHTML="";!b.skipClone&&!a.offsetWidth&&this.cloneRenderTo();this.getChartSize();c=this.chartWidth;d=this.chartHeight;this.container=a=$(Ka,{className:"highcharts-container"+(b.className?" "+b.className:""),id:e},x({position:"relative",overflow:"hidden",width:c+"px",height:d+"px",textAlign:"left",lineHeight:"normal",zIndex:0,"-webkit-tap-highlight-color":"rgba(0,0,0,0)"},b.style),this.renderToClone||a);this._cursor=a.style.cursor;this.renderer=
b.forExport?new ua(a,c,d,b.style,!0):new $a(a,c,d,b.style);fa&&this.renderer.create(this,a,c,d);this.renderer.chartIndex=this.index},getMargins:function(a){var b=this.spacing,c=this.margin,d=this.titleOffset;this.resetMargins();if(d&&!q(c[0]))this.plotTop=u(this.plotTop,d+this.options.title.margin+b[0]);this.legend.adjustMargins(c,b);this.extraBottomMargin&&(this.marginBottom+=this.extraBottomMargin);this.extraTopMargin&&(this.plotTop+=this.extraTopMargin);a||this.getAxisMargins()},getAxisMargins:function(){var a=
this,b=a.axisOffset=[0,0,0,0],c=a.margin;a.hasCartesianSeries&&o(a.axes,function(a){a.getOffset()});o(jb,function(d,e){q(c[e])||(a[d]+=b[e])});a.setChartSize()},reflow:function(a){var b=this,c=b.options.chart,d=b.renderTo,e=c.width||kb(d,"width"),f=c.height||kb(d,"height"),c=a?a.target:K,d=function(){if(b.container)b.setSize(e,f,!1),b.hasUserSize=null};if(!b.hasUserSize&&!b.isPrinting&&e&&f&&(c===K||c===B)){if(e!==b.containerWidth||f!==b.containerHeight)clearTimeout(b.reflowTimeout),a?b.reflowTimeout=
setTimeout(d,100):d();b.containerWidth=e;b.containerHeight=f}},initReflow:function(){var a=this,b=function(b){a.reflow(b)};H(K,"resize",b);H(a,"destroy",function(){Z(K,"resize",b)})},setSize:function(a,b,c){var d=this,e,f,g;d.isResizing+=1;g=function(){d&&I(d,"endResize",null,function(){d.isResizing-=1})};Sa(c,d);d.oldChartHeight=d.chartHeight;d.oldChartWidth=d.chartWidth;if(q(a))d.chartWidth=e=u(0,r(a)),d.hasUserSize=!!e;if(q(b))d.chartHeight=f=u(0,r(b));(za?mb:L)(d.container,{width:e+"px",height:f+
"px"},za);d.setChartSize(!0);d.renderer.setSize(e,f,c);d.maxTicks=null;o(d.axes,function(a){a.isDirty=!0;a.setScale()});o(d.series,function(a){a.isDirty=!0});d.isDirtyLegend=!0;d.isDirtyBox=!0;d.layOutTitles();d.getMargins();d.redraw(c);d.oldChartHeight=null;I(d,"resize");za===!1?g():setTimeout(g,za&&za.duration||500)},setChartSize:function(a){var b=this.inverted,c=this.renderer,d=this.chartWidth,e=this.chartHeight,f=this.options.chart,g=this.spacing,h=this.clipOffset,i,j,k,l;this.plotLeft=i=r(this.plotLeft);
this.plotTop=j=r(this.plotTop);this.plotWidth=k=u(0,r(d-i-this.marginRight));this.plotHeight=l=u(0,r(e-j-this.marginBottom));this.plotSizeX=b?l:k;this.plotSizeY=b?k:l;this.plotBorderWidth=f.plotBorderWidth||0;this.spacingBox=c.spacingBox={x:g[3],y:g[0],width:d-g[3]-g[1],height:e-g[0]-g[2]};this.plotBox=c.plotBox={x:i,y:j,width:k,height:l};d=2*V(this.plotBorderWidth/2);b=ta(u(d,h[3])/2);c=ta(u(d,h[0])/2);this.clipBox={x:b,y:c,width:V(this.plotSizeX-u(d,h[1])/2-b),height:u(0,V(this.plotSizeY-u(d,h[2])/
2-c))};a||o(this.axes,function(a){a.setAxisSize();a.setAxisTranslation()})},resetMargins:function(){var a=this;o(jb,function(b,c){a[b]=p(a.margin[c],a.spacing[c])});a.axisOffset=[0,0,0,0];a.clipOffset=[0,0,0,0]},drawChartBox:function(){var a=this.options.chart,b=this.renderer,c=this.chartWidth,d=this.chartHeight,e=this.chartBackground,f=this.plotBackground,g=this.plotBorder,h=this.plotBGImage,i=a.borderWidth||0,j=a.backgroundColor,k=a.plotBackgroundColor,l=a.plotBackgroundImage,m=a.plotBorderWidth||
0,n,p=this.plotLeft,o=this.plotTop,q=this.plotWidth,u=this.plotHeight,t=this.plotBox,w=this.clipRect,r=this.clipBox;n=i+(a.shadow?8:0);if(i||j)if(e)e.animate(e.crisp({width:c-n,height:d-n}));else{e={fill:j||P};if(i)e.stroke=a.borderColor,e["stroke-width"]=i;this.chartBackground=b.rect(n/2,n/2,c-n,d-n,a.borderRadius,i).attr(e).addClass("highcharts-background").add().shadow(a.shadow)}if(k)f?f.animate(t):this.plotBackground=b.rect(p,o,q,u,0).attr({fill:k}).add().shadow(a.plotShadow);if(l)h?h.animate(t):
this.plotBGImage=b.image(l,p,o,q,u).add();w?w.animate({width:r.width,height:r.height}):this.clipRect=b.clipRect(r);if(m)g?g.animate(g.crisp({x:p,y:o,width:q,height:u,strokeWidth:-m})):this.plotBorder=b.rect(p,o,q,u,0,-m).attr({stroke:a.plotBorderColor,"stroke-width":m,fill:P,zIndex:1}).add();this.isDirtyBox=!1},propFromSeries:function(){var a=this,b=a.options.chart,c,d=a.options.series,e,f;o(["inverted","angular","polar"],function(g){c=M[b.type||b.defaultSeriesType];f=a[g]||b[g]||c&&c.prototype[g];
for(e=d&&d.length;!f&&e--;)(c=M[d[e].type])&&c.prototype[g]&&(f=!0);a[g]=f})},linkSeries:function(){var a=this,b=a.series;o(b,function(a){a.linkedSeries.length=0});o(b,function(b){var d=b.options.linkedTo;if(Da(d)&&(d=d===":previous"?a.series[b.index-1]:a.get(d)))d.linkedSeries.push(b),b.linkedParent=d})},renderSeries:function(){o(this.series,function(a){a.translate();a.render()})},renderLabels:function(){var a=this,b=a.options.labels;b.items&&o(b.items,function(c){var d=x(b.style,c.style),e=D(d.left)+
a.plotLeft,f=D(d.top)+a.plotTop+12;delete d.left;delete d.top;a.renderer.text(c.html,e,f).attr({zIndex:2}).css(d).add()})},render:function(){var a=this.axes,b=this.renderer,c=this.options,d,e,f,g;this.setTitle();this.legend=new nb(this,c.legend);this.getStacks();this.getMargins(!0);this.setChartSize();d=this.plotWidth;e=this.plotHeight-=13;o(a,function(a){a.setScale()});this.getAxisMargins();f=d/this.plotWidth>1.1;g=e/this.plotHeight>1.1;if(f||g)this.maxTicks=null,o(a,function(a){(a.horiz&&f||!a.horiz&&
g)&&a.setTickInterval(!0)}),this.getMargins();this.drawChartBox();this.hasCartesianSeries&&o(a,function(a){a.render()});if(!this.seriesGroup)this.seriesGroup=b.g("series-group").attr({zIndex:3}).add();this.renderSeries();this.renderLabels();this.showCredits(c.credits);this.hasRendered=!0},showCredits:function(a){if(a.enabled&&!this.credits)this.credits=this.renderer.text(a.text,0,0).on("click",function(){if(a.href)location.href=a.href}).attr({align:a.position.align,zIndex:8}).css(a.style).add().align(a.position)},
destroy:function(){var a=this,b=a.axes,c=a.series,d=a.container,e,f=d&&d.parentNode;I(a,"destroy");Y[a.index]=y;bb--;a.renderTo.removeAttribute("data-highcharts-chart");Z(a);for(e=b.length;e--;)b[e]=b[e].destroy();for(e=c.length;e--;)c[e]=c[e].destroy();o("title,subtitle,chartBackground,plotBackground,plotBGImage,plotBorder,seriesGroup,clipRect,credits,pointer,scroller,rangeSelector,legend,resetZoomButton,tooltip,renderer".split(","),function(b){var c=a[b];c&&c.destroy&&(a[b]=c.destroy())});if(d)d.innerHTML=
"",Z(d),f&&Ra(d);for(e in a)delete a[e]},isReadyToRender:function(){var a=this;return!ca&&K==K.top&&B.readyState!=="complete"||fa&&!K.canvg?(fa?Mb.push(function(){a.firstRender()},a.options.global.canvasToolsURL):B.attachEvent("onreadystatechange",function(){B.detachEvent("onreadystatechange",a.firstRender);B.readyState==="complete"&&a.firstRender()}),!1):!0},firstRender:function(){var a=this,b=a.options,c=a.callback;if(a.isReadyToRender()){a.getContainer();I(a,"init");a.resetMargins();a.setChartSize();
a.propFromSeries();a.getAxes();o(b.series||[],function(b){a.initSeries(b)});a.linkSeries();I(a,"beforeRender");if(A.Pointer)a.pointer=new Va(a,b);a.render();a.renderer.draw();c&&c.apply(a,[a]);o(a.callbacks,function(b){a.index!==y&&b.apply(a,[a])});I(a,"load");a.cloneRenderTo(!0)}},splashArray:function(a,b){var c=b[a],c=da(c)?c:[c,c,c,c];return[p(b[a+"Top"],c[0]),p(b[a+"Right"],c[1]),p(b[a+"Bottom"],c[2]),p(b[a+"Left"],c[3])]}};var Yb=A.CenteredSeriesMixin={getCenter:function(){var a=this.options,
b=this.chart,c=2*(a.slicedOffset||0),d=b.plotWidth-2*c,b=b.plotHeight-2*c,e=a.center,e=[p(e[0],"50%"),p(e[1],"50%"),a.size||"100%",a.innerSize||0],f=C(d,b),g,h;for(g=0;g<4;++g)h=e[g],a=g<2||g===2&&/%$/.test(h),e[g]=(/%$/.test(h)?[d,b,f,e[2]][g]*parseFloat(h)/100:parseFloat(h))+(a?c:0);return e}},Ga=function(){};Ga.prototype={init:function(a,b,c){this.series=a;this.color=a.color;this.applyOptions(b,c);this.pointAttr={};if(a.options.colorByPoint&&(b=a.options.colors||a.chart.options.colors,this.color=
this.color||b[a.colorCounter++],a.colorCounter===b.length))a.colorCounter=0;a.chart.pointCount++;return this},applyOptions:function(a,b){var c=this.series,d=c.options.pointValKey||c.pointValKey,a=Ga.prototype.optionsToObject.call(this,a);x(this,a);this.options=this.options?x(this.options,a):a;if(d)this.y=this[d];if(this.x===y&&c)this.x=b===y?c.autoIncrement():b;return this},optionsToObject:function(a){var b={},c=this.series,d=c.options.keys,e=d||c.pointArrayMap||["y"],f=e.length,g=0,h=0;if(typeof a===
"number"||a===null)b[e[0]]=a;else if(Ha(a)){if(!d&&a.length>f){c=typeof a[0];if(c==="string")b.name=a[0];else if(c==="number")b.x=a[0];g++}for(;h<f;)b[e[h++]]=a[g++]}else if(typeof a==="object"){b=a;if(a.dataLabels)c._hasPointLabels=!0;if(a.marker)c._hasPointMarkers=!0}return b},destroy:function(){var a=this.series.chart,b=a.hoverPoints,c;a.pointCount--;if(b&&(this.setState(),ja(b,this),!b.length))a.hoverPoints=null;if(this===a.hoverPoint)this.onMouseOut();if(this.graphic||this.dataLabel)Z(this),
this.destroyElements();this.legendItem&&a.legend.destroyItem(this);for(c in this)this[c]=null},destroyElements:function(){for(var a="graphic,dataLabel,dataLabelUpper,group,connector,shadowGroup".split(","),b,c=6;c--;)b=a[c],this[b]&&(this[b]=this[b].destroy())},getLabelConfig:function(){return{x:this.category,y:this.y,key:this.name||this.category,series:this.series,point:this,percentage:this.percentage,total:this.total||this.stackTotal}},tooltipFormatter:function(a){var b=this.series,c=b.tooltipOptions,
d=p(c.valueDecimals,""),e=c.valuePrefix||"",f=c.valueSuffix||"";o(b.pointArrayMap||["y"],function(b){b="{point."+b;if(e||f)a=a.replace(b+"}",e+b+"}"+f);a=a.replace(b+"}",b+":,."+d+"f}")});return Ja(a,{point:this,series:this.series})},firePointEvent:function(a,b,c){var d=this,e=this.series.options;(e.point.events[a]||d.options&&d.options.events&&d.options.events[a])&&this.importEvents();a==="click"&&e.allowPointSelect&&(c=function(a){d.select&&d.select(null,a.ctrlKey||a.metaKey||a.shiftKey)});I(this,
a,b,c)}};var R=A.Series=function(){};R.prototype={isCartesian:!0,type:"line",pointClass:Ga,sorted:!0,requireSorting:!0,pointAttrToOptions:{stroke:"lineColor","stroke-width":"lineWidth",fill:"fillColor",r:"radius"},axisTypes:["xAxis","yAxis"],colorCounter:0,parallelArrays:["x","y"],init:function(a,b){var c=this,d,e,f=a.series,g=function(a,b){return p(a.options.index,a._i)-p(b.options.index,b._i)};c.chart=a;c.options=b=c.setOptions(b);c.linkedSeries=[];c.bindAxes();x(c,{name:b.name,state:"",pointAttr:{},
visible:b.visible!==!1,selected:b.selected===!0});if(fa)b.animation=!1;e=b.events;for(d in e)H(c,d,e[d]);if(e&&e.click||b.point&&b.point.events&&b.point.events.click||b.allowPointSelect)a.runTrackerClick=!0;c.getColor();c.getSymbol();o(c.parallelArrays,function(a){c[a+"Data"]=[]});c.setData(b.data,!1);if(c.isCartesian)a.hasCartesianSeries=!0;f.push(c);c._i=f.length-1;rb(f,g);this.yAxis&&rb(this.yAxis.series,g);o(f,function(a,b){a.index=b;a.name=a.name||"Series "+(b+1)})},bindAxes:function(){var a=
this,b=a.options,c=a.chart,d;o(a.axisTypes||[],function(e){o(c[e],function(c){d=c.options;if(b[e]===d.index||b[e]!==y&&b[e]===d.id||b[e]===y&&d.index===0)c.series.push(a),a[e]=c,c.isDirty=!0});!a[e]&&a.optionalAxis!==e&&la(18,!0)})},updateParallelArrays:function(a,b){var c=a.series,d=arguments;o(c.parallelArrays,typeof b==="number"?function(d){var f=d==="y"&&c.toYData?c.toYData(a):a[d];c[d+"Data"][b]=f}:function(a){Array.prototype[b].apply(c[a+"Data"],Array.prototype.slice.call(d,2))})},autoIncrement:function(){var a=
this.options,b=this.xIncrement,c,d=a.pointIntervalUnit,b=p(b,a.pointStart,0);this.pointInterval=c=p(this.pointInterval,a.pointInterval,1);if(d==="month"||d==="year")a=new Aa(b),a=d==="month"?+a[wb](a[Ya]()+c):+a[xb](a[Za]()+c),c=a-b;this.xIncrement=b+c;return b},getSegments:function(){var a=-1,b=[],c,d=this.points,e=d.length;if(e)if(this.options.connectNulls){for(c=e;c--;)d[c].y===null&&d.splice(c,1);d.length&&(b=[d])}else o(d,function(c,g){c.y===null?(g>a+1&&b.push(d.slice(a+1,g)),a=g):g===e-1&&
b.push(d.slice(a+1,g+1))});this.segments=b},setOptions:function(a){var b=this.chart,c=b.options.plotOptions,b=b.userOptions||{},d=b.plotOptions||{},e=c[this.type];this.userOptions=a;c=z(e,c.series,a);this.tooltipOptions=z(T.tooltip,T.plotOptions[this.type].tooltip,b.tooltip,d.series&&d.series.tooltip,d[this.type]&&d[this.type].tooltip,a.tooltip);e.marker===null&&delete c.marker;this.zoneAxis=c.zoneAxis;a=this.zones=(c.zones||[]).slice();if((c.negativeColor||c.negativeFillColor)&&!c.zones)a.push({value:c[this.zoneAxis+
"Threshold"]||c.threshold||0,color:c.negativeColor,fillColor:c.negativeFillColor});a.length&&q(a[a.length-1].value)&&a.push({color:this.color,fillColor:this.fillColor});return c},getCyclic:function(a,b,c){var d=this.userOptions,e="_"+a+"Index",f=a+"Counter";b||(q(d[e])?b=d[e]:(d[e]=b=this.chart[f]%c.length,this.chart[f]+=1),b=c[b]);this[a]=b},getColor:function(){this.options.colorByPoint||this.getCyclic("color",this.options.color||ba[this.type].color,this.chart.options.colors)},getSymbol:function(){var a=
this.options.marker;this.getCyclic("symbol",a.symbol,this.chart.options.symbols);if(/^url/.test(this.symbol))a.radius=0},drawLegendSymbol:Na.drawLineMarker,setData:function(a,b,c,d){var e=this,f=e.points,g=f&&f.length||0,h,i=e.options,j=e.chart,k=null,l=e.xAxis,m=l&&!!l.categories,n=i.turboThreshold,v=this.xData,s=this.yData,q=(h=e.pointArrayMap)&&h.length,a=a||[];h=a.length;b=p(b,!0);if(d!==!1&&h&&g===h&&!e.cropped&&!e.hasGroupedData&&e.visible)o(a,function(a,b){f[b].update&&f[b].update(a,!1,null,
!1)});else{e.xIncrement=null;e.pointRange=m?1:i.pointRange;e.colorCounter=0;o(this.parallelArrays,function(a){e[a+"Data"].length=0});if(n&&h>n){for(c=0;k===null&&c<h;)k=a[c],c++;if(ra(k)){m=p(i.pointStart,0);i=p(i.pointInterval,1);for(c=0;c<h;c++)v[c]=m,s[c]=a[c],m+=i;e.xIncrement=m}else if(Ha(k))if(q)for(c=0;c<h;c++)i=a[c],v[c]=i[0],s[c]=i.slice(1,q+1);else for(c=0;c<h;c++)i=a[c],v[c]=i[0],s[c]=i[1];else la(12)}else for(c=0;c<h;c++)if(a[c]!==y&&(i={series:e},e.pointClass.prototype.applyOptions.apply(i,
[a[c]]),e.updateParallelArrays(i,c),m&&i.name))l.names[i.x]=i.name;Da(s[0])&&la(14,!0);e.data=[];e.options.data=a;for(c=g;c--;)f[c]&&f[c].destroy&&f[c].destroy();if(l)l.minRange=l.userMinRange;e.isDirty=e.isDirtyData=j.isDirtyBox=!0;c=!1}b&&j.redraw(c)},processData:function(a){var b=this.xData,c=this.yData,d=b.length,e;e=0;var f,g,h=this.xAxis,i,j=this.options;i=j.cropThreshold;var k=this.isCartesian,l,m;if(k&&!this.isDirty&&!h.isDirty&&!this.yAxis.isDirty&&!a)return!1;if(h)a=h.getExtremes(),l=a.min,
m=a.max;if(k&&this.sorted&&(!i||d>i||this.forceCrop))if(b[d-1]<l||b[0]>m)b=[],c=[];else if(b[0]<l||b[d-1]>m)e=this.cropData(this.xData,this.yData,l,m),b=e.xData,c=e.yData,e=e.start,f=!0;for(i=b.length-1;i>=0;i--)d=b[i]-b[i-1],d>0&&(g===y||d<g)?g=d:d<0&&this.requireSorting&&la(15);this.cropped=f;this.cropStart=e;this.processedXData=b;this.processedYData=c;if(j.pointRange===null)this.pointRange=g||1;this.closestPointRange=g},cropData:function(a,b,c,d){var e=a.length,f=0,g=e,h=p(this.cropShoulder,1),
i;for(i=0;i<e;i++)if(a[i]>=c){f=u(0,i-h);break}for(;i<e;i++)if(a[i]>d){g=i+h;break}return{xData:a.slice(f,g),yData:b.slice(f,g),start:f,end:g}},generatePoints:function(){var a=this.options.data,b=this.data,c,d=this.processedXData,e=this.processedYData,f=this.pointClass,g=d.length,h=this.cropStart||0,i,j=this.hasGroupedData,k,l=[],m;if(!b&&!j)b=[],b.length=a.length,b=this.data=b;for(m=0;m<g;m++)i=h+m,j?l[m]=(new f).init(this,[d[m]].concat(sa(e[m]))):(b[i]?k=b[i]:a[i]!==y&&(b[i]=k=(new f).init(this,
a[i],d[m])),l[m]=k),l[m].index=i;if(b&&(g!==(c=b.length)||j))for(m=0;m<c;m++)if(m===h&&!j&&(m+=g),b[m])b[m].destroyElements(),b[m].plotX=y;this.data=b;this.points=l},getExtremes:function(a){var b=this.yAxis,c=this.processedXData,d,e=[],f=0;d=this.xAxis.getExtremes();var g=d.min,h=d.max,i,j,k,l,a=a||this.stackedYData||this.processedYData;d=a.length;for(l=0;l<d;l++)if(j=c[l],k=a[l],i=k!==null&&k!==y&&(!b.isLog||k.length||k>0),j=this.getExtremesFromAll||this.options.getExtremesFromAll||this.cropped||
(c[l+1]||j)>=g&&(c[l-1]||j)<=h,i&&j)if(i=k.length)for(;i--;)k[i]!==null&&(e[f++]=k[i]);else e[f++]=k;this.dataMin=Pa(e);this.dataMax=Fa(e)},translate:function(){this.processedXData||this.processData();this.generatePoints();for(var a=this.options,b=a.stacking,c=this.xAxis,d=c.categories,e=this.yAxis,f=this.points,g=f.length,h=!!this.modifyValue,i=a.pointPlacement,j=i==="between"||ra(i),k=a.threshold,l=a.startFromThreshold?k:0,m,n,v,o=Number.MAX_VALUE,a=0;a<g;a++){var r=f[a],x=r.x,t=r.y;n=r.low;var w=
b&&e.stacks[(this.negStacks&&t<(l?0:k)?"-":"")+this.stackKey];if(e.isLog&&t!==null&&t<=0)r.y=t=null,la(10);r.plotX=m=C(u(-1E5,c.translate(x,0,0,0,1,i,this.type==="flags")),1E5);if(b&&this.visible&&w&&w[x])w=w[x],t=w.points[this.index+","+a],n=t[0],t=t[1],n===l&&(n=p(k,e.min)),e.isLog&&n<=0&&(n=null),r.total=r.stackTotal=w.total,r.percentage=w.total&&r.y/w.total*100,r.stackY=t,w.setOffset(this.pointXOffset||0,this.barW||0);r.yBottom=q(n)?e.translate(n,0,1,0,1):null;h&&(t=this.modifyValue(t,r));r.plotY=
n=typeof t==="number"&&t!==Infinity?C(u(-1E5,e.translate(t,0,1,0,1)),1E5):y;r.isInside=n!==y&&n>=0&&n<=e.len&&m>=0&&m<=c.len;r.clientX=j?c.translate(x,0,0,0,1):m;r.negative=r.y<(k||0);r.category=d&&d[r.x]!==y?d[r.x]:r.x;a&&(o=C(o,O(m-v)));v=m}this.closestPointRangePx=o;this.getSegments()},setClip:function(a){var b=this.chart,c=b.renderer,d=b.inverted,e=this.clipBox,f=e||b.clipBox,g=this.sharedClipKey||["_sharedClip",a&&a.duration,a&&a.easing,f.height].join(","),h=b[g],i=b[g+"m"];if(!h){if(a)f.width=
0,b[g+"m"]=i=c.clipRect(-99,d?-b.plotLeft:-b.plotTop,99,d?b.chartWidth:b.chartHeight);b[g]=h=c.clipRect(f)}a&&(h.count+=1);if(this.options.clip!==!1)this.group.clip(a||e?h:b.clipRect),this.markerGroup.clip(i),this.sharedClipKey=g;a||(h.count-=1,h.count<=0&&g&&b[g]&&(e||(b[g]=b[g].destroy()),b[g+"m"]&&(b[g+"m"]=b[g+"m"].destroy())))},animate:function(a){var b=this.chart,c=this.options.animation,d;if(c&&!da(c))c=ba[this.type].animation;a?this.setClip(c):(d=this.sharedClipKey,(a=b[d])&&a.animate({width:b.plotSizeX},
c),b[d+"m"]&&b[d+"m"].animate({width:b.plotSizeX+99},c),this.animate=null)},afterAnimate:function(){this.setClip();I(this,"afterAnimate")},drawPoints:function(){var a,b=this.points,c=this.chart,d,e,f,g,h,i,j,k,l=this.options.marker,m=this.pointAttr[""],n,v,o,r=this.markerGroup,q=p(l.enabled,this.xAxis.isRadial,this.closestPointRangePx>2*l.radius);if(l.enabled!==!1||this._hasPointMarkers)for(f=b.length;f--;)if(g=b[f],d=V(g.plotX),e=g.plotY,k=g.graphic,n=g.marker||{},v=!!g.marker,a=q&&n.enabled===y||
n.enabled,o=g.isInside,a&&e!==y&&!isNaN(e)&&g.y!==null)if(a=g.pointAttr[g.selected?"select":""]||m,h=a.r,i=p(n.symbol,this.symbol),j=i.indexOf("url")===0,k)k[o?"show":"hide"](!0).animate(x({x:d-h,y:e-h},k.symbolName?{width:2*h,height:2*h}:{}));else{if(o&&(h>0||j))g.graphic=c.renderer.symbol(i,d-h,e-h,2*h,2*h,v?n:l).attr(a).add(r)}else if(k)g.graphic=k.destroy()},convertAttribs:function(a,b,c,d){var e=this.pointAttrToOptions,f,g,h={},a=a||{},b=b||{},c=c||{},d=d||{};for(f in e)g=e[f],h[f]=p(a[g],b[f],
c[f],d[f]);return h},getAttribs:function(){var a=this,b=a.options,c=ba[a.type].marker?b.marker:b,d=c.states,e=d.hover,f,g=a.color,h=a.options.negativeColor;f={stroke:g,fill:g};var i=a.points||[],j,k=[],l,m=a.pointAttrToOptions;l=a.hasPointSpecificOptions;var n=c.lineColor,p=c.fillColor;j=b.turboThreshold;var s=a.zones,r=a.zoneAxis||"y",u;b.marker?(e.radius=e.radius||c.radius+e.radiusPlus,e.lineWidth=e.lineWidth||c.lineWidth+e.lineWidthPlus):(e.color=e.color||oa(e.color||g).brighten(e.brightness).get(),
e.negativeColor=e.negativeColor||oa(e.negativeColor||h).brighten(e.brightness).get());k[""]=a.convertAttribs(c,f);o(["hover","select"],function(b){k[b]=a.convertAttribs(d[b],k[""])});a.pointAttr=k;g=i.length;if(!j||g<j||l)for(;g--;){j=i[g];if((c=j.options&&j.options.marker||j.options)&&c.enabled===!1)c.radius=0;if(s.length){l=0;for(f=s[l];j[r]>=f.value;)f=s[++l];j.color=j.fillColor=f.color}l=b.colorByPoint||j.color;if(j.options)for(u in m)q(c[m[u]])&&(l=!0);if(l){c=c||{};l=[];d=c.states||{};f=d.hover=
d.hover||{};if(!b.marker)f.color=f.color||!j.options.color&&e[j.negative&&h?"negativeColor":"color"]||oa(j.color).brighten(f.brightness||e.brightness).get();f={color:j.color};if(!p)f.fillColor=j.color;if(!n)f.lineColor=j.color;c.hasOwnProperty("color")&&!c.color&&delete c.color;l[""]=a.convertAttribs(x(f,c),k[""]);l.hover=a.convertAttribs(d.hover,k.hover,l[""]);l.select=a.convertAttribs(d.select,k.select,l[""])}else l=k;j.pointAttr=l}},destroy:function(){var a=this,b=a.chart,c=/AppleWebKit\/533/.test(Ba),
d,e=a.data||[],f,g,h;I(a,"destroy");Z(a);o(a.axisTypes||[],function(b){if(h=a[b])ja(h.series,a),h.isDirty=h.forceRedraw=!0});a.legendItem&&a.chart.legend.destroyItem(a);for(d=e.length;d--;)(f=e[d])&&f.destroy&&f.destroy();a.points=null;clearTimeout(a.animationTimeout);for(g in a)a[g]instanceof Q&&!a[g].survive&&(d=c&&g==="group"?"hide":"destroy",a[g][d]());if(b.hoverSeries===a)b.hoverSeries=null;ja(b.series,a);for(g in a)delete a[g]},getSegmentPath:function(a){var b=this,c=[],d=b.options.step;o(a,
function(e,f){var g=e.plotX,h=e.plotY,i;b.getPointSpline?c.push.apply(c,b.getPointSpline(a,e,f)):(c.push(f?"L":"M"),d&&f&&(i=a[f-1],d==="right"?c.push(i.plotX,h):d==="center"?c.push((i.plotX+g)/2,i.plotY,(i.plotX+g)/2,h):c.push(g,i.plotY)),c.push(e.plotX,e.plotY))});return c},getGraphPath:function(){var a=this,b=[],c,d=[];o(a.segments,function(e){c=a.getSegmentPath(e);e.length>1?b=b.concat(c):d.push(e[0])});a.singlePoints=d;return a.graphPath=b},drawGraph:function(){var a=this,b=this.options,c=[["graph",
b.lineColor||this.color,b.dashStyle]],d=b.lineWidth,e=b.linecap!=="square",f=this.getGraphPath(),g=this.fillGraph&&this.color||P;o(this.zones,function(d,e){c.push(["zoneGraph"+e,d.color||a.color,d.dashStyle||b.dashStyle])});o(c,function(c,i){var j=c[0],k=a[j];if(k)db(k),k.animate({d:f});else if((d||g)&&f.length)k={stroke:c[1],"stroke-width":d,fill:g,zIndex:1},c[2]?k.dashstyle=c[2]:e&&(k["stroke-linecap"]=k["stroke-linejoin"]="round"),a[j]=a.chart.renderer.path(f).attr(k).add(a.group).shadow(i<2&&
b.shadow)})},applyZones:function(){var a=this,b=this.chart,c=b.renderer,d=this.zones,e,f,g=this.clips||[],h,i=this.graph,j=this.area,k=u(b.chartWidth,b.chartHeight),l=this[(this.zoneAxis||"y")+"Axis"],m,n=l.reversed,v=b.inverted,s=l.horiz,q,x,t,w=!1;if(d.length&&(i||j))i&&i.hide(),j&&j.hide(),m=l.getExtremes(),o(d,function(d,o){e=n?s?b.plotWidth:0:s?0:l.toPixels(m.min);e=C(u(p(f,e),0),k);f=C(u(r(l.toPixels(p(d.value,m.max),!0)),0),k);w&&(e=f=l.toPixels(m.max));q=Math.abs(e-f);x=C(e,f);t=u(e,f);if(l.isXAxis){if(h=
{x:v?t:x,y:0,width:q,height:k},!s)h.x=b.plotHeight-h.x}else if(h={x:0,y:v?t:x,width:k,height:q},s)h.y=b.plotWidth-h.y;b.inverted&&c.isVML&&(h=l.isXAxis?{x:0,y:n?x:t,height:h.width,width:b.chartWidth}:{x:h.y-b.plotLeft-b.spacingBox.x,y:0,width:h.height,height:b.chartHeight});g[o]?g[o].animate(h):(g[o]=c.clipRect(h),i&&a["zoneGraph"+o].clip(g[o]),j&&a["zoneArea"+o].clip(g[o]));w=d.value>m.max}),this.clips=g},invertGroups:function(){function a(){var a={width:b.yAxis.len,height:b.xAxis.len};o(["group",
"markerGroup"],function(c){b[c]&&b[c].attr(a).invert()})}var b=this,c=b.chart;if(b.xAxis)H(c,"resize",a),H(b,"destroy",function(){Z(c,"resize",a)}),a(),b.invertGroups=a},plotGroup:function(a,b,c,d,e){var f=this[a],g=!f;g&&(this[a]=f=this.chart.renderer.g(b).attr({visibility:c,zIndex:d||0.1}).add(e));f[g?"attr":"animate"](this.getPlotBox());return f},getPlotBox:function(){var a=this.chart,b=this.xAxis,c=this.yAxis;if(a.inverted)b=c,c=this.xAxis;return{translateX:b?b.left:a.plotLeft,translateY:c?c.top:
a.plotTop,scaleX:1,scaleY:1}},render:function(){var a=this,b=a.chart,c,d=a.options,e=(c=d.animation)&&!!a.animate&&b.renderer.isSVG&&p(c.duration,500)||0,f=a.visible?"visible":"hidden",g=d.zIndex,h=a.hasRendered,i=b.seriesGroup;c=a.plotGroup("group","series",f,g,i);a.markerGroup=a.plotGroup("markerGroup","markers",f,g,i);e&&a.animate(!0);a.getAttribs();c.inverted=a.isCartesian?b.inverted:!1;a.drawGraph&&(a.drawGraph(),a.applyZones());o(a.points,function(a){a.redraw&&a.redraw()});a.drawDataLabels&&
a.drawDataLabels();a.visible&&a.drawPoints();a.drawTracker&&a.options.enableMouseTracking!==!1&&a.drawTracker();b.inverted&&a.invertGroups();d.clip!==!1&&!a.sharedClipKey&&!h&&c.clip(b.clipRect);e&&a.animate();if(!h)e?a.animationTimeout=setTimeout(function(){a.afterAnimate()},e):a.afterAnimate();a.isDirty=a.isDirtyData=!1;a.hasRendered=!0},redraw:function(){var a=this.chart,b=this.isDirtyData,c=this.isDirty,d=this.group,e=this.xAxis,f=this.yAxis;d&&(a.inverted&&d.attr({width:a.plotWidth,height:a.plotHeight}),
d.animate({translateX:p(e&&e.left,a.plotLeft),translateY:p(f&&f.top,a.plotTop)}));this.translate();this.render();b&&I(this,"updatedData");(c||b)&&delete this.kdTree},kdDimensions:1,kdAxisArray:["clientX","plotY"],searchPoint:function(a,b){var c=this.xAxis,d=this.yAxis,e=this.chart.inverted;return this.searchKDTree({clientX:e?c.len-a.chartY+c.pos:a.chartX-c.pos,plotY:e?d.len-a.chartX+d.pos:a.chartY-d.pos},b)},buildKDTree:function(){function a(b,d,g){var h,i;if(i=b&&b.length)return h=c.kdAxisArray[d%
g],b.sort(function(a,b){return a[h]-b[h]}),i=Math.floor(i/2),{point:b[i],left:a(b.slice(0,i),d+1,g),right:a(b.slice(i+1),d+1,g)}}function b(){var b=lb(c.points,function(a){return a.y!==null});c.kdTree=a(b,d,d)}var c=this,d=c.kdDimensions;delete c.kdTree;c.options.kdSync?b():setTimeout(b)},searchKDTree:function(a,b){function c(a,b,j,k){var l=b.point,m=d.kdAxisArray[j%k],n,p,o=l;p=q(a[e])&&q(l[e])?Math.pow(a[e]-l[e],2):null;n=q(a[f])&&q(l[f])?Math.pow(a[f]-l[f],2):null;n=(p||0)+(n||0);l.dist=q(n)?Math.sqrt(n):
Number.MAX_VALUE;l.distX=q(p)?Math.sqrt(p):Number.MAX_VALUE;m=a[m]-l[m];n=m<0?"left":"right";p=m<0?"right":"left";b[n]&&(n=c(a,b[n],j+1,k),o=n[g]<o[g]?n:l);b[p]&&Math.sqrt(m*m)<o[g]&&(a=c(a,b[p],j+1,k),o=a[g]<o[g]?a:o);return o}var d=this,e=this.kdAxisArray[0],f=this.kdAxisArray[1],g=b?"distX":"dist";this.kdTree||this.buildKDTree();if(this.kdTree)return c(a,this.kdTree,this.kdDimensions,this.kdDimensions)}};Ib.prototype={destroy:function(){Qa(this,this.axis)},render:function(a){var b=this.options,
c=b.format,c=c?Ja(c,this):b.formatter.call(this);this.label?this.label.attr({text:c,visibility:"hidden"}):this.label=this.axis.chart.renderer.text(c,null,null,b.useHTML).css(b.style).attr({align:this.textAlign,rotation:b.rotation,visibility:"hidden"}).add(a)},setOffset:function(a,b){var c=this.axis,d=c.chart,e=d.inverted,f=c.reversed,f=this.isNegative&&!f||!this.isNegative&&f,g=c.translate(c.usePercentage?100:this.total,0,0,0,1),c=c.translate(0),c=O(g-c),h=d.xAxis[0].translate(this.x)+a,i=d.plotHeight,
f={x:e?f?g:g-c:h,y:e?i-h-b:f?i-g-c:i-g,width:e?c:b,height:e?b:c};if(e=this.label)e.align(this.alignOptions,null,f),f=e.alignAttr,e[this.options.crop===!1||d.isInsidePlot(f.x,f.y)?"show":"hide"](!0)}};va.prototype.buildStacks=function(){var a=this.series,b=p(this.options.reversedStacks,!0),c=a.length;if(!this.isXAxis){for(this.usePercentage=!1;c--;)a[b?c:a.length-c-1].setStackedPoints();if(this.usePercentage)for(c=0;c<a.length;c++)a[c].setPercentStacks()}};va.prototype.renderStackTotals=function(){var a=
this.chart,b=a.renderer,c=this.stacks,d,e,f=this.stackTotalGroup;if(!f)this.stackTotalGroup=f=b.g("stack-labels").attr({visibility:"visible",zIndex:6}).add();f.translate(a.plotLeft,a.plotTop);for(d in c)for(e in a=c[d],a)a[e].render(f)};R.prototype.setStackedPoints=function(){if(this.options.stacking&&!(this.visible!==!0&&this.chart.options.chart.ignoreHiddenSeries!==!1)){var a=this.processedXData,b=this.processedYData,c=[],d=b.length,e=this.options,f=e.threshold,g=e.startFromThreshold?f:0,h=e.stack,
e=e.stacking,i=this.stackKey,j="-"+i,k=this.negStacks,l=this.yAxis,m=l.stacks,n=l.oldStacks,o,s,q,r,t,w;for(r=0;r<d;r++){t=a[r];w=b[r];q=this.index+","+r;s=(o=k&&w<(g?0:f))?j:i;m[s]||(m[s]={});if(!m[s][t])n[s]&&n[s][t]?(m[s][t]=n[s][t],m[s][t].total=null):m[s][t]=new Ib(l,l.options.stackLabels,o,t,h);s=m[s][t];s.points[q]=[p(s.cum,g)];e==="percent"?(o=o?i:j,k&&m[o]&&m[o][t]?(o=m[o][t],s.total=o.total=u(o.total,s.total)+O(w)||0):s.total=ea(s.total+(O(w)||0))):s.total=ea(s.total+(w||0));s.cum=p(s.cum,
g)+(w||0);s.points[q].push(s.cum);c[r]=s.cum}if(e==="percent")l.usePercentage=!0;this.stackedYData=c;l.oldStacks={}}};R.prototype.setPercentStacks=function(){var a=this,b=a.stackKey,c=a.yAxis.stacks,d=a.processedXData;o([b,"-"+b],function(b){var e;for(var f=d.length,g,h;f--;)if(g=d[f],e=(h=c[b]&&c[b][g])&&h.points[a.index+","+f],g=e)h=h.total?100/h.total:0,g[0]=ea(g[0]*h),g[1]=ea(g[1]*h),a.stackedYData[f]=g[1]})};x(F.prototype,{addSeries:function(a,b,c){var d,e=this;a&&(b=p(b,!0),I(e,"addSeries",
{options:a},function(){d=e.initSeries(a);e.isDirtyLegend=!0;e.linkSeries();b&&e.redraw(c)}));return d},addAxis:function(a,b,c,d){var e=b?"xAxis":"yAxis",f=this.options;new va(this,z(a,{index:this[e].length,isX:b}));f[e]=sa(f[e]||{});f[e].push(a);p(c,!0)&&this.redraw(d)},showLoading:function(a){var b=this,c=b.options,d=b.loadingDiv,e=c.loading,f=function(){d&&L(d,{left:b.plotLeft+"px",top:b.plotTop+"px",width:b.plotWidth+"px",height:b.plotHeight+"px"})};if(!d)b.loadingDiv=d=$(Ka,{className:"highcharts-loading"},
x(e.style,{zIndex:10,display:P}),b.container),b.loadingSpan=$("span",null,e.labelStyle,d),H(b,"redraw",f);b.loadingSpan.innerHTML=a||c.lang.loading;if(!b.loadingShown)L(d,{opacity:0,display:""}),mb(d,{opacity:e.style.opacity},{duration:e.showDuration||0}),b.loadingShown=!0;f()},hideLoading:function(){var a=this.options,b=this.loadingDiv;b&&mb(b,{opacity:0},{duration:a.loading.hideDuration||100,complete:function(){L(b,{display:P})}});this.loadingShown=!1}});x(Ga.prototype,{update:function(a,b,c,d){function e(){f.applyOptions(a);
if(f.y===null&&h)f.graphic=h.destroy();if(da(a)&&!Ha(a))f.redraw=function(){if(h)if(a&&a.marker&&a.marker.symbol)f.graphic=h.destroy();else h.attr(f.pointAttr[f.state||""])[f.visible===!1?"hide":"show"]();if(a&&a.dataLabels&&f.dataLabel)f.dataLabel=f.dataLabel.destroy();f.redraw=null};i=f.index;g.updateParallelArrays(f,i);if(l&&f.name)l[f.x]=f.name;k.data[i]=f.options;g.isDirty=g.isDirtyData=!0;if(!g.fixedBox&&g.hasCartesianSeries)j.isDirtyBox=!0;if(k.legendType==="point")j.isDirtyLegend=!0;b&&j.redraw(c)}
var f=this,g=f.series,h=f.graphic,i,j=g.chart,k=g.options,l=g.xAxis&&g.xAxis.names,b=p(b,!0);d===!1?e():f.firePointEvent("update",{options:a},e)},remove:function(a,b){this.series.removePoint(Ma(this,this.series.data),a,b)}});x(R.prototype,{addPoint:function(a,b,c,d){var e=this,f=e.options,g=e.data,h=e.graph,i=e.area,j=e.chart,k=e.xAxis&&e.xAxis.names,l=h&&h.shift||0,m=["graph","area"],h=f.data,n,v=e.xData;Sa(d,j);if(c){for(d=e.zones.length;d--;)m.push("zoneGraph"+d,"zoneArea"+d);o(m,function(a){if(e[a])e[a].shift=
l+1})}if(i)i.isArea=!0;b=p(b,!0);i={series:e};e.pointClass.prototype.applyOptions.apply(i,[a]);m=i.x;d=v.length;if(e.requireSorting&&m<v[d-1])for(n=!0;d&&v[d-1]>m;)d--;e.updateParallelArrays(i,"splice",d,0,0);e.updateParallelArrays(i,d);if(k&&i.name)k[m]=i.name;h.splice(d,0,a);n&&(e.data.splice(d,0,null),e.processData());f.legendType==="point"&&e.generatePoints();c&&(g[0]&&g[0].remove?g[0].remove(!1):(g.shift(),e.updateParallelArrays(i,"shift"),h.shift()));e.isDirty=!0;e.isDirtyData=!0;b&&(e.getAttribs(),
j.redraw())},removePoint:function(a,b,c){var d=this,e=d.data,f=e[a],g=d.points,h=d.chart,i=function(){e.length===g.length&&g.splice(a,1);e.splice(a,1);d.options.data.splice(a,1);d.updateParallelArrays(f||{series:d},"splice",a,1);f&&f.destroy();d.isDirty=!0;d.isDirtyData=!0;b&&h.redraw()};Sa(c,h);b=p(b,!0);f?f.firePointEvent("remove",null,i):i()},remove:function(a,b){var c=this,d=c.chart,a=p(a,!0);if(!c.isRemoving)c.isRemoving=!0,I(c,"remove",null,function(){c.destroy();d.isDirtyLegend=d.isDirtyBox=
!0;d.linkSeries();a&&d.redraw(b)});c.isRemoving=!1},update:function(a,b){var c=this,d=this.chart,e=this.userOptions,f=this.type,g=M[f].prototype,h=["group","markerGroup","dataLabelsGroup"],i;if(a.type&&a.type!==f||a.zIndex!==void 0)h.length=0;o(h,function(a){h[a]=c[a];delete c[a]});a=z(e,{animation:!1,index:this.index,pointStart:this.xData[0]},{data:this.options.data},a);this.remove(!1);for(i in g)this[i]=y;x(this,M[a.type||f].prototype);o(h,function(a){c[a]=h[a]});this.init(d,a);d.linkSeries();p(b,
!0)&&d.redraw(!1)}});x(va.prototype,{update:function(a,b){var c=this.chart,a=c.options[this.coll][this.options.index]=z(this.userOptions,a);this.destroy(!0);this._addedPlotLB=this.chart._labelPanes=y;this.init(c,x(a,{events:y}));c.isDirtyBox=!0;p(b,!0)&&c.redraw()},remove:function(a){for(var b=this.chart,c=this.coll,d=this.series,e=d.length;e--;)d[e]&&d[e].remove(!1);ja(b.axes,this);ja(b[c],this);b.options[c].splice(this.options.index,1);o(b[c],function(a,b){a.options.index=b});this.destroy();b.isDirtyBox=
!0;p(a,!0)&&b.redraw()},setTitle:function(a,b){this.update({title:a},b)},setCategories:function(a,b){this.update({categories:a},b)}});var xa=ka(R);M.line=xa;ba.area=z(U,{threshold:0});var qa=ka(R,{type:"area",getSegments:function(){var a=this,b=[],c=[],d=[],e=this.xAxis,f=this.yAxis,g=f.stacks[this.stackKey],h={},i,j,k=this.points,l=this.options.connectNulls,m,n;if(this.options.stacking&&!this.cropped){for(m=0;m<k.length;m++)h[k[m].x]=k[m];for(n in g)g[n].total!==null&&d.push(+n);d.sort(function(a,
b){return a-b});o(d,function(b){var d=0,k;if(!l||h[b]&&h[b].y!==null)if(h[b])c.push(h[b]);else{for(m=a.index;m<=f.series.length;m++)if(k=g[b].points[m+","+b]){d=k[1];break}i=e.translate(b);j=f.toPixels(d,!0);c.push({y:null,plotX:i,clientX:i,plotY:j,yBottom:j,onMouseOver:na})}});c.length&&b.push(c)}else R.prototype.getSegments.call(this),b=this.segments;this.segments=b},getSegmentPath:function(a){var b=R.prototype.getSegmentPath.call(this,a),c=[].concat(b),d,e=this.options;d=b.length;var f=this.yAxis.getThreshold(e.threshold),
g;d===3&&c.push("L",b[1],b[2]);if(e.stacking&&!this.closedStacks)for(d=a.length-1;d>=0;d--)g=p(a[d].yBottom,f),d<a.length-1&&e.step&&c.push(a[d+1].plotX,g),c.push(a[d].plotX,g);else this.closeSegment(c,a,f);this.areaPath=this.areaPath.concat(c);return b},closeSegment:function(a,b,c){a.push("L",b[b.length-1].plotX,c,"L",b[0].plotX,c)},drawGraph:function(){this.areaPath=[];R.prototype.drawGraph.apply(this);var a=this,b=this.areaPath,c=this.options,d=[["area",this.color,c.fillColor]];o(this.zones,function(b,
f){d.push(["zoneArea"+f,b.color||a.color,b.fillColor||c.fillColor])});o(d,function(d){var f=d[0],g=a[f];g?g.animate({d:b}):a[f]=a.chart.renderer.path(b).attr({fill:p(d[2],oa(d[1]).setOpacity(p(c.fillOpacity,0.75)).get()),zIndex:0}).add(a.group)})},drawLegendSymbol:Na.drawRectangle});M.area=qa;ba.spline=z(U);xa=ka(R,{type:"spline",getPointSpline:function(a,b,c){var d=b.plotX,e=b.plotY,f=a[c-1],g=a[c+1],h,i,j,k;if(f&&g){a=f.plotY;j=g.plotX;var g=g.plotY,l;h=(1.5*d+f.plotX)/2.5;i=(1.5*e+a)/2.5;j=(1.5*
d+j)/2.5;k=(1.5*e+g)/2.5;l=(k-i)*(j-d)/(j-h)+e-k;i+=l;k+=l;i>a&&i>e?(i=u(a,e),k=2*e-i):i<a&&i<e&&(i=C(a,e),k=2*e-i);k>g&&k>e?(k=u(g,e),i=2*e-k):k<g&&k<e&&(k=C(g,e),i=2*e-k);b.rightContX=j;b.rightContY=k}c?(b=["C",f.rightContX||f.plotX,f.rightContY||f.plotY,h||d,i||e,d,e],f.rightContX=f.rightContY=null):b=["M",d,e];return b}});M.spline=xa;ba.areaspline=z(ba.area);qa=qa.prototype;xa=ka(xa,{type:"areaspline",closedStacks:!0,getSegmentPath:qa.getSegmentPath,closeSegment:qa.closeSegment,drawGraph:qa.drawGraph,
drawLegendSymbol:Na.drawRectangle});M.areaspline=xa;ba.column=z(U,{borderColor:"#FFFFFF",borderRadius:0,groupPadding:0.2,marker:null,pointPadding:0.1,minPointLength:0,cropThreshold:50,pointRange:null,states:{hover:{brightness:0.1,shadow:!1,halo:!1},select:{color:"#C0C0C0",borderColor:"#000000",shadow:!1}},dataLabels:{align:null,verticalAlign:null,y:null},startFromThreshold:!0,stickyTracking:!1,tooltip:{distance:6},threshold:0});xa=ka(R,{type:"column",pointAttrToOptions:{stroke:"borderColor",fill:"color",
r:"borderRadius"},cropShoulder:0,directTouch:!0,trackerGroups:["group","dataLabelsGroup"],negStacks:!0,init:function(){R.prototype.init.apply(this,arguments);var a=this,b=a.chart;b.hasRendered&&o(b.series,function(b){if(b.type===a.type)b.isDirty=!0})},getColumnMetrics:function(){var a=this,b=a.options,c=a.xAxis,d=a.yAxis,e=c.reversed,f,g={},h,i=0;b.grouping===!1?i=1:o(a.chart.series,function(b){var c=b.options,e=b.yAxis;if(b.type===a.type&&b.visible&&d.len===e.len&&d.pos===e.pos)c.stacking?(f=b.stackKey,
g[f]===y&&(g[f]=i++),h=g[f]):c.grouping!==!1&&(h=i++),b.columnIndex=h});var c=C(O(c.transA)*(c.ordinalSlope||b.pointRange||c.closestPointRange||c.tickInterval||1),c.len),j=c*b.groupPadding,k=(c-2*j)/i,l=b.pointWidth,b=q(l)?(k-l)/2:k*b.pointPadding,l=p(l,k-2*b);return a.columnMetrics={width:l,offset:b+(j+((e?i-(a.columnIndex||0):a.columnIndex)||0)*k-c/2)*(e?-1:1)}},translate:function(){var a=this,b=a.chart,c=a.options,d=a.borderWidth=p(c.borderWidth,a.closestPointRange*a.xAxis.transA<2?0:1),e=a.yAxis,
f=a.translatedThreshold=e.getThreshold(c.threshold),g=p(c.minPointLength,5),h=a.getColumnMetrics(),i=h.width,j=a.barW=u(i,1+2*d),k=a.pointXOffset=h.offset,l=-(d%2?0.5:0),m=d%2?0.5:1;b.inverted&&(f-=0.5,b.renderer.isVML&&(m+=1));c.pointPadding&&(j=ta(j));R.prototype.translate.apply(a);o(a.points,function(c){var d=p(c.yBottom,f),h=999+O(d),h=C(u(-h,c.plotY),e.len+h),o=c.plotX+k,q=j,t=C(h,d),w,x;w=u(h,d)-t;O(w)<g&&g&&(w=g,x=!e.reversed&&!c.negative||e.reversed&&c.negative,t=r(O(t-f)>g?d-g:f-(x?g:0)));
c.barX=o;c.pointWidth=i;q=r(o+q)+l;o=r(o)+l;q-=o;d=O(t)<0.5;w=C(r(t+w)+m,9E4);t=r(t)+m;w-=t;d&&(t-=1,w+=1);c.tooltipPos=b.inverted?[e.len+e.pos-b.plotLeft-h,a.xAxis.len-o-q/2,w]:[o+q/2,h+e.pos-b.plotTop,w];c.shapeType="rect";c.shapeArgs={x:o,y:t,width:q,height:w}})},getSymbol:na,drawLegendSymbol:Na.drawRectangle,drawGraph:na,drawPoints:function(){var a=this,b=this.chart,c=a.options,d=b.renderer,e=c.animationLimit||250,f,g;o(a.points,function(h){var i=h.plotY,j=h.graphic;if(i!==y&&!isNaN(i)&&h.y!==
null)f=h.shapeArgs,i=q(a.borderWidth)?{"stroke-width":a.borderWidth}:{},g=h.pointAttr[h.selected?"select":""]||a.pointAttr[""],j?(db(j),j.attr(i)[b.pointCount<e?"animate":"attr"](z(f))):h.graphic=d[h.shapeType](f).attr(i).attr(g).add(a.group).shadow(c.shadow,null,c.stacking&&!c.borderRadius);else if(j)h.graphic=j.destroy()})},animate:function(a){var b=this.yAxis,c=this.options,d=this.chart.inverted,e={};if(ca)a?(e.scaleY=0.001,a=C(b.pos+b.len,u(b.pos,b.toPixels(c.threshold))),d?e.translateX=a-b.len:
e.translateY=a,this.group.attr(e)):(e.scaleY=1,e[d?"translateX":"translateY"]=b.pos,this.group.animate(e,this.options.animation),this.animate=null)},remove:function(){var a=this,b=a.chart;b.hasRendered&&o(b.series,function(b){if(b.type===a.type)b.isDirty=!0});R.prototype.remove.apply(a,arguments)}});M.column=xa;ba.bar=z(ba.column);qa=ka(xa,{type:"bar",inverted:!0});M.bar=qa;ba.scatter=z(U,{lineWidth:0,marker:{enabled:!0},tooltip:{headerFormat:'<span style="color:{series.color}">\u25CF</span> <span style="font-size: 10px;"> {series.name}</span><br/>',
pointFormat:"x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>"}});qa=ka(R,{type:"scatter",sorted:!1,requireSorting:!1,noSharedTooltip:!0,trackerGroups:["group","markerGroup","dataLabelsGroup"],takeOrdinalPosition:!1,kdDimensions:2,drawGraph:function(){this.options.lineWidth&&R.prototype.drawGraph.call(this)}});M.scatter=qa;ba.pie=z(U,{borderColor:"#FFFFFF",borderWidth:1,center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{distance:30,enabled:!0,formatter:function(){return this.point.name},x:0},
ignoreHiddenPoint:!0,legendType:"point",marker:null,size:null,showInLegend:!1,slicedOffset:10,states:{hover:{brightness:0.1,shadow:!1}},stickyTracking:!1,tooltip:{followPointer:!0}});U={type:"pie",isCartesian:!1,pointClass:ka(Ga,{init:function(){Ga.prototype.init.apply(this,arguments);var a=this,b;x(a,{visible:a.visible!==!1,name:p(a.name,"Slice")});b=function(b){a.slice(b.type==="select")};H(a,"select",b);H(a,"unselect",b);return a},setVisible:function(a,b){var c=this,d=c.series,e=d.chart,f=d.options.ignoreHiddenPoint,
b=p(b,f);if(a!==c.visible){c.visible=c.options.visible=a=a===y?!c.visible:a;d.options.data[Ma(c,d.data)]=c.options;o(["graphic","dataLabel","connector","shadowGroup"],function(b){if(c[b])c[b][a?"show":"hide"](!0)});c.legendItem&&e.legend.colorizeItem(c,a);!a&&c.state==="hover"&&c.setState("");if(f)d.isDirty=!0;b&&e.redraw()}},slice:function(a,b,c){var d=this.series;Sa(c,d.chart);p(b,!0);this.sliced=this.options.sliced=a=q(a)?a:!this.sliced;d.options.data[Ma(this,d.data)]=this.options;a=a?this.slicedTranslation:
{translateX:0,translateY:0};this.graphic.animate(a);this.shadowGroup&&this.shadowGroup.animate(a)},haloPath:function(a){var b=this.shapeArgs,c=this.series.chart;return this.sliced||!this.visible?[]:this.series.chart.renderer.symbols.arc(c.plotLeft+b.x,c.plotTop+b.y,b.r+a,b.r+a,{innerR:this.shapeArgs.r,start:b.start,end:b.end})}}),requireSorting:!1,directTouch:!0,noSharedTooltip:!0,trackerGroups:["group","dataLabelsGroup"],axisTypes:[],pointAttrToOptions:{stroke:"borderColor","stroke-width":"borderWidth",
fill:"color"},getColor:na,animate:function(a){var b=this,c=b.points,d=b.startAngleRad;if(!a)o(c,function(a){var c=a.graphic,g=a.shapeArgs;c&&(c.attr({r:a.startR||b.center[3]/2,start:d,end:d}),c.animate({r:g.r,start:g.start,end:g.end},b.options.animation))}),b.animate=null},setData:function(a,b,c,d){R.prototype.setData.call(this,a,!1,c,d);this.processData();this.generatePoints();p(b,!0)&&this.chart.redraw(c)},updateTotals:function(){var a,b=0,c=this.points,d=c.length,e,f=this.options.ignoreHiddenPoint;
for(a=0;a<d;a++)e=c[a],b+=f&&!e.visible?0:e.y;this.total=b;for(a=0;a<d;a++)e=c[a],e.percentage=b>0&&(e.visible||!f)?e.y/b*100:0,e.total=b},generatePoints:function(){R.prototype.generatePoints.call(this);this.updateTotals()},translate:function(a){this.generatePoints();var b=0,c=this.options,d=c.slicedOffset,e=d+c.borderWidth,f,g,h,i=c.startAngle||0,j=this.startAngleRad=ma/180*(i-90),i=(this.endAngleRad=ma/180*(p(c.endAngle,i+360)-90))-j,k=this.points,l=c.dataLabels.distance,c=c.ignoreHiddenPoint,m,
n=k.length,o;if(!a)this.center=a=this.getCenter();this.getX=function(b,c){h=W.asin(C((b-a[1])/(a[2]/2+l),1));return a[0]+(c?-1:1)*X(h)*(a[2]/2+l)};for(m=0;m<n;m++){o=k[m];f=j+b*i;if(!c||o.visible)b+=o.percentage/100;g=j+b*i;o.shapeType="arc";o.shapeArgs={x:a[0],y:a[1],r:a[2]/2,innerR:a[3]/2,start:r(f*1E3)/1E3,end:r(g*1E3)/1E3};h=(g+f)/2;h>1.5*ma?h-=2*ma:h<-ma/2&&(h+=2*ma);o.slicedTranslation={translateX:r(X(h)*d),translateY:r(aa(h)*d)};f=X(h)*a[2]/2;g=aa(h)*a[2]/2;o.tooltipPos=[a[0]+f*0.7,a[1]+g*
0.7];o.half=h<-ma/2||h>ma/2?1:0;o.angle=h;e=C(e,l/2);o.labelPos=[a[0]+f+X(h)*l,a[1]+g+aa(h)*l,a[0]+f+X(h)*e,a[1]+g+aa(h)*e,a[0]+f,a[1]+g,l<0?"center":o.half?"right":"left",h]}},drawGraph:null,drawPoints:function(){var a=this,b=a.chart.renderer,c,d,e=a.options.shadow,f,g,h;if(e&&!a.shadowGroup)a.shadowGroup=b.g("shadow").add(a.group);o(a.points,function(i){d=i.graphic;g=i.shapeArgs;f=i.shadowGroup;if(e&&!f)f=i.shadowGroup=b.g("shadow").add(a.shadowGroup);c=i.sliced?i.slicedTranslation:{translateX:0,
translateY:0};f&&f.attr(c);if(d)d.animate(x(g,c));else{h={"stroke-linejoin":"round"};if(!i.visible)h.visibility="hidden";i.graphic=d=b[i.shapeType](g).setRadialReference(a.center).attr(i.pointAttr[i.selected?"select":""]).attr(h).attr(c).add(a.group).shadow(e,f)}})},searchPoint:na,sortByAngle:function(a,b){a.sort(function(a,d){return a.angle!==void 0&&(d.angle-a.angle)*b})},drawLegendSymbol:Na.drawRectangle,getCenter:Yb.getCenter,getSymbol:na};U=ka(R,U);M.pie=U;R.prototype.drawDataLabels=function(){var a=
this,b=a.options,c=b.cursor,d=b.dataLabels,e=a.points,f,g,h=a.hasRendered||0,i,j,k=a.chart.renderer;if(d.enabled||a._hasPointLabels)a.dlProcessOptions&&a.dlProcessOptions(d),j=a.plotGroup("dataLabelsGroup","data-labels",d.defer?"hidden":"visible",d.zIndex||6),p(d.defer,!0)&&(j.attr({opacity:+h}),h||H(a,"afterAnimate",function(){a.visible&&j.show();j[b.animation?"animate":"attr"]({opacity:1},{duration:200})})),g=d,o(e,function(e){var h,n=e.dataLabel,o,s,r=e.connector,u=!0,t,w={};f=e.dlOptions||e.options&&
e.options.dataLabels;h=p(f&&f.enabled,g.enabled);if(n&&!h)e.dataLabel=n.destroy();else if(h){d=z(g,f);t=d.style;h=d.rotation;o=e.getLabelConfig();i=d.format?Ja(d.format,o):d.formatter.call(o,d);t.color=p(d.color,t.color,a.color,"black");if(n)if(q(i))n.attr({text:i}),u=!1;else{if(e.dataLabel=n=n.destroy(),r)e.connector=r.destroy()}else if(q(i)){n={fill:d.backgroundColor,stroke:d.borderColor,"stroke-width":d.borderWidth,r:d.borderRadius||0,rotation:h,padding:d.padding,zIndex:1};if(t.color==="contrast")w.color=
d.inside||d.distance<0||b.stacking?k.getContrast(e.color||a.color):"#000000";if(c)w.cursor=c;for(s in n)n[s]===y&&delete n[s];n=e.dataLabel=k[h?"text":"label"](i,0,-999,d.shape,null,null,d.useHTML).attr(n).css(x(t,w)).add(j).shadow(d.shadow)}n&&a.alignDataLabel(e,n,d,null,u)}})};R.prototype.alignDataLabel=function(a,b,c,d,e){var f=this.chart,g=f.inverted,h=p(a.plotX,-999),i=p(a.plotY,-999),j=b.getBBox(),k=f.renderer.fontMetrics(c.style.fontSize).b,l=this.visible&&(a.series.forceDL||f.isInsidePlot(h,
r(i),g)||d&&f.isInsidePlot(h,g?d.x+1:d.y+d.height-1,g));if(l)d=x({x:g?f.plotWidth-i:h,y:r(g?f.plotHeight-h:i),width:0,height:0},d),x(c,{width:j.width,height:j.height}),c.rotation?(a=f.renderer.rotCorr(k,c.rotation),b[e?"attr":"animate"]({x:d.x+c.x+d.width/2+a.x,y:d.y+c.y+d.height/2}).attr({align:c.align})):(b.align(c,null,d),g=b.alignAttr,p(c.overflow,"justify")==="justify"?this.justifyDataLabel(b,c,g,j,d,e):p(c.crop,!0)&&(l=f.isInsidePlot(g.x,g.y)&&f.isInsidePlot(g.x+j.width,g.y+j.height)),c.shape&&
b.attr({anchorX:a.plotX,anchorY:a.plotY}));if(!l)b.attr({y:-999}),b.placed=!1};R.prototype.justifyDataLabel=function(a,b,c,d,e,f){var g=this.chart,h=b.align,i=b.verticalAlign,j,k,l=a.box?0:a.padding||0;j=c.x+l;if(j<0)h==="right"?b.align="left":b.x=-j,k=!0;j=c.x+d.width-l;if(j>g.plotWidth)h==="left"?b.align="right":b.x=g.plotWidth-j,k=!0;j=c.y+l;if(j<0)i==="bottom"?b.verticalAlign="top":b.y=-j,k=!0;j=c.y+d.height-l;if(j>g.plotHeight)i==="top"?b.verticalAlign="bottom":b.y=g.plotHeight-j,k=!0;if(k)a.placed=
!f,a.align(b,null,e)};if(M.pie)M.pie.prototype.drawDataLabels=function(){var a=this,b=a.data,c,d=a.chart,e=a.options.dataLabels,f=p(e.connectorPadding,10),g=p(e.connectorWidth,1),h=d.plotWidth,i=d.plotHeight,j,k,l=p(e.softConnector,!0),m=e.distance,n=a.center,q=n[2]/2,s=n[1],x=m>0,y,t,w,z=[[],[]],B,A,D,F,G,E=[0,0,0,0],L=function(a,b){return b.y-a.y};if(a.visible&&(e.enabled||a._hasPointLabels)){R.prototype.drawDataLabels.apply(a);o(b,function(a){a.dataLabel&&a.visible&&z[a.half].push(a)});for(F=2;F--;){var I=
[],M=[],H=z[F],K=H.length,J;if(K){a.sortByAngle(H,F-0.5);for(G=b=0;!b&&H[G];)b=H[G]&&H[G].dataLabel&&(H[G].dataLabel.getBBox().height||21),G++;if(m>0){t=C(s+q+m,d.plotHeight);for(G=u(0,s-q-m);G<=t;G+=b)I.push(G);t=I.length;if(K>t){c=[].concat(H);c.sort(L);for(G=K;G--;)c[G].rank=G;for(G=K;G--;)H[G].rank>=t&&H.splice(G,1);K=H.length}for(G=0;G<K;G++){c=H[G];w=c.labelPos;c=9999;var Q,P;for(P=0;P<t;P++)Q=O(I[P]-w[1]),Q<c&&(c=Q,J=P);if(J<G&&I[G]!==null)J=G;else for(t<K-G+J&&I[G]!==null&&(J=t-K+G);I[J]===
null;)J++;M.push({i:J,y:I[J]});I[J]=null}M.sort(L)}for(G=0;G<K;G++){c=H[G];w=c.labelPos;y=c.dataLabel;D=c.visible===!1?"hidden":"inherit";c=w[1];if(m>0){if(t=M.pop(),J=t.i,A=t.y,c>A&&I[J+1]!==null||c<A&&I[J-1]!==null)A=C(u(0,c),d.plotHeight)}else A=c;B=e.justify?n[0]+(F?-1:1)*(q+m):a.getX(A===s-q-m||A===s+q+m?c:A,F);y._attr={visibility:D,align:w[6]};y._pos={x:B+e.x+({left:f,right:-f}[w[6]]||0),y:A+e.y-10};y.connX=B;y.connY=A;if(this.options.size===null)t=y.width,B-t<f?E[3]=u(r(t-B+f),E[3]):B+t>h-
f&&(E[1]=u(r(B+t-h+f),E[1])),A-b/2<0?E[0]=u(r(-A+b/2),E[0]):A+b/2>i&&(E[2]=u(r(A+b/2-i),E[2]))}}}if(Fa(E)===0||this.verifyDataLabelOverflow(E))this.placeDataLabels(),x&&g&&o(this.points,function(b){j=b.connector;w=b.labelPos;if((y=b.dataLabel)&&y._pos&&b.visible)D=y._attr.visibility,B=y.connX,A=y.connY,k=l?["M",B+(w[6]==="left"?5:-5),A,"C",B,A,2*w[2]-w[4],2*w[3]-w[5],w[2],w[3],"L",w[4],w[5]]:["M",B+(w[6]==="left"?5:-5),A,"L",w[2],w[3],"L",w[4],w[5]],j?(j.animate({d:k}),j.attr("visibility",D)):b.connector=
j=a.chart.renderer.path(k).attr({"stroke-width":g,stroke:e.connectorColor||b.color||"#606060",visibility:D}).add(a.dataLabelsGroup);else if(j)b.connector=j.destroy()})}},M.pie.prototype.placeDataLabels=function(){o(this.points,function(a){var b=a.dataLabel;if(b&&a.visible)(a=b._pos)?(b.attr(b._attr),b[b.moved?"animate":"attr"](a),b.moved=!0):b&&b.attr({y:-999})})},M.pie.prototype.alignDataLabel=na,M.pie.prototype.verifyDataLabelOverflow=function(a){var b=this.center,c=this.options,d=c.center,e=c.minSize||
80,f=e,g;d[0]!==null?f=u(b[2]-u(a[1],a[3]),e):(f=u(b[2]-a[1]-a[3],e),b[0]+=(a[3]-a[1])/2);d[1]!==null?f=u(C(f,b[2]-u(a[0],a[2])),e):(f=u(C(f,b[2]-a[0]-a[2]),e),b[1]+=(a[0]-a[2])/2);f<b[2]?(b[2]=f,b[3]=/%$/.test(c.innerSize||0)?f*parseFloat(c.innerSize||0)/100:parseFloat(c.innerSize||0),this.translate(b),o(this.points,function(a){if(a.dataLabel)a.dataLabel._pos=null}),this.drawDataLabels&&this.drawDataLabels()):g=!0;return g};if(M.column)M.column.prototype.alignDataLabel=function(a,b,c,d,e){var f=
this.chart.inverted,g=a.series,h=a.dlBox||a.shapeArgs,i=p(a.below,a.plotY>p(this.translatedThreshold,g.yAxis.len)),j=p(c.inside,!!this.options.stacking);if(h&&(d=z(h),f&&(d={x:g.yAxis.len-d.y-d.height,y:g.xAxis.len-d.x-d.width,width:d.height,height:d.width}),!j))f?(d.x+=i?0:d.width,d.width=0):(d.y+=i?d.height:0,d.height=0);c.align=p(c.align,!f||j?"center":i?"right":"left");c.verticalAlign=p(c.verticalAlign,f||j?"middle":i?"top":"bottom");R.prototype.alignDataLabel.call(this,a,b,c,d,e)};(function(a){var b=
a.Chart,c=a.each,d=a.pick,e=HighchartsAdapter.addEvent;b.prototype.callbacks.push(function(a){function b(){var e=[];c(a.series,function(a){var b=a.options.dataLabels;(b.enabled||a._hasPointLabels)&&!b.allowOverlap&&a.visible&&c(a.points,function(a){if(a.dataLabel)a.dataLabel.labelrank=d(a.labelrank,a.shapeArgs&&a.shapeArgs.height),e.push(a.dataLabel)})});a.hideOverlappingLabels(e)}b();e(a,"redraw",b)});b.prototype.hideOverlappingLabels=function(a){var b=a.length,c,d,e,k;for(d=0;d<b;d++)if(c=a[d])c.oldOpacity=
c.opacity,c.newOpacity=1;a.sort(function(a,b){return b.labelrank-a.labelrank});for(d=0;d<b;d++){e=a[d];for(c=d+1;c<b;++c)if(k=a[c],e&&k&&e.placed&&k.placed&&e.newOpacity!==0&&k.newOpacity!==0&&!(k.alignAttr.x>e.alignAttr.x+e.width||k.alignAttr.x+k.width<e.alignAttr.x||k.alignAttr.y>e.alignAttr.y+e.height||k.alignAttr.y+k.height<e.alignAttr.y))(e.labelrank<k.labelrank?e:k).newOpacity=0}for(d=0;d<b;d++)if(c=a[d]){if(c.oldOpacity!==c.newOpacity&&c.placed)c.alignAttr.opacity=c.newOpacity,c[c.isOld&&c.newOpacity?
"animate":"attr"](c.alignAttr);c.isOld=!0}}})(A);U=A.TrackerMixin={drawTrackerPoint:function(){var a=this,b=a.chart,c=b.pointer,d=a.options.cursor,e=d&&{cursor:d},f=function(a){for(var c=a.target,d;c&&!d;)d=c.point,c=c.parentNode;if(d!==y&&d!==b.hoverPoint)d.onMouseOver(a)};o(a.points,function(a){if(a.graphic)a.graphic.element.point=a;if(a.dataLabel)a.dataLabel.element.point=a});if(!a._hasTracking)o(a.trackerGroups,function(b){if(a[b]&&(a[b].addClass("highcharts-tracker").on("mouseover",f).on("mouseout",
function(a){c.onTrackerMouseOut(a)}).css(e),ab))a[b].on("touchstart",f)}),a._hasTracking=!0},drawTrackerGraph:function(){var a=this,b=a.options,c=b.trackByArea,d=[].concat(c?a.areaPath:a.graphPath),e=d.length,f=a.chart,g=f.pointer,h=f.renderer,i=f.options.tooltip.snap,j=a.tracker,k=b.cursor,l=k&&{cursor:k},k=a.singlePoints,m,n=function(){if(f.hoverSeries!==a)a.onMouseOver()},p="rgba(192,192,192,"+(ca?1.0E-4:0.002)+")";if(e&&!c)for(m=e+1;m--;)d[m]==="M"&&d.splice(m+1,0,d[m+1]-i,d[m+2],"L"),(m&&d[m]===
"M"||m===e)&&d.splice(m,0,"L",d[m-2]+i,d[m-1]);for(m=0;m<k.length;m++)e=k[m],d.push("M",e.plotX-i,e.plotY,"L",e.plotX+i,e.plotY);j?j.attr({d:d}):(a.tracker=h.path(d).attr({"stroke-linejoin":"round",visibility:a.visible?"visible":"hidden",stroke:p,fill:c?p:P,"stroke-width":b.lineWidth+(c?0:2*i),zIndex:2}).add(a.group),o([a.tracker,a.markerGroup],function(a){a.addClass("highcharts-tracker").on("mouseover",n).on("mouseout",function(a){g.onTrackerMouseOut(a)}).css(l);if(ab)a.on("touchstart",n)}))}};if(M.column)xa.prototype.drawTracker=
U.drawTrackerPoint;if(M.pie)M.pie.prototype.drawTracker=U.drawTrackerPoint;if(M.scatter)qa.prototype.drawTracker=U.drawTrackerPoint;x(nb.prototype,{setItemEvents:function(a,b,c,d,e){var f=this;(c?b:a.legendGroup).on("mouseover",function(){a.setState("hover");b.css(f.options.itemHoverStyle)}).on("mouseout",function(){b.css(a.visible?d:e);a.setState()}).on("click",function(b){var c=function(){a.setVisible()},b={browserEvent:b};a.firePointEvent?a.firePointEvent("legendItemClick",b,c):I(a,"legendItemClick",
b,c)})},createCheckboxForItem:function(a){a.checkbox=$("input",{type:"checkbox",checked:a.selected,defaultChecked:a.selected},this.options.itemCheckboxStyle,this.chart.container);H(a.checkbox,"click",function(b){I(a.series||a,"checkboxClick",{checked:b.target.checked,item:a},function(){a.select()})})}});T.legend.itemStyle.cursor="pointer";x(F.prototype,{showResetZoom:function(){var a=this,b=T.lang,c=a.options.chart.resetZoomButton,d=c.theme,e=d.states,f=c.relativeTo==="chart"?null:"plotBox";this.resetZoomButton=
a.renderer.button(b.resetZoom,null,null,function(){a.zoomOut()},d,e&&e.hover).attr({align:c.position.align,title:b.resetZoomTitle}).add().align(c.position,!1,f)},zoomOut:function(){var a=this;I(a,"selection",{resetSelection:!0},function(){a.zoom()})},zoom:function(a){var b,c=this.pointer,d=!1,e;!a||a.resetSelection?o(this.axes,function(a){b=a.zoom()}):o(a.xAxis.concat(a.yAxis),function(a){var e=a.axis,h=e.isXAxis;if(c[h?"zoomX":"zoomY"]||c[h?"pinchX":"pinchY"])b=e.zoom(a.min,a.max),e.displayBtn&&
(d=!0)});e=this.resetZoomButton;if(d&&!e)this.showResetZoom();else if(!d&&da(e))this.resetZoomButton=e.destroy();b&&this.redraw(p(this.options.chart.animation,a&&a.animation,this.pointCount<100))},pan:function(a,b){var c=this,d=c.hoverPoints,e;d&&o(d,function(a){a.setState()});o(b==="xy"?[1,0]:[1],function(b){var d=a[b?"chartX":"chartY"],h=c[b?"xAxis":"yAxis"][0],i=c[b?"mouseDownX":"mouseDownY"],j=(h.pointRange||0)/2,k=h.getExtremes(),l=h.toValue(i-d,!0)+j,j=h.toValue(i+c[b?"plotWidth":"plotHeight"]-
d,!0)-j,i=i>d;if(h.series.length&&(i||l>C(k.dataMin,k.min))&&(!i||j<u(k.dataMax,k.max)))h.setExtremes(l,j,!1,!1,{trigger:"pan"}),e=!0;c[b?"mouseDownX":"mouseDownY"]=d});e&&c.redraw(!1);L(c.container,{cursor:"move"})}});x(Ga.prototype,{select:function(a,b){var c=this,d=c.series,e=d.chart,a=p(a,!c.selected);c.firePointEvent(a?"select":"unselect",{accumulate:b},function(){c.selected=c.options.selected=a;d.options.data[Ma(c,d.data)]=c.options;c.setState(a&&"select");b||o(e.getSelectedPoints(),function(a){if(a.selected&&
a!==c)a.selected=a.options.selected=!1,d.options.data[Ma(a,d.data)]=a.options,a.setState(""),a.firePointEvent("unselect")})})},onMouseOver:function(a){var b=this.series,c=b.chart,d=c.tooltip,e=c.hoverPoint;if(c.hoverSeries!==b)b.onMouseOver();if(e&&e!==this)e.onMouseOut();if(this.series)this.firePointEvent("mouseOver"),d&&(!d.shared||b.noSharedTooltip)&&d.refresh(this,a),this.setState("hover"),c.hoverPoint=this},onMouseOut:function(){var a=this.series.chart,b=a.hoverPoints;this.firePointEvent("mouseOut");
if(!b||Ma(this,b)===-1)this.setState(),a.hoverPoint=null},importEvents:function(){if(!this.hasImportedEvents){var a=z(this.series.options.point,this.options).events,b;this.events=a;for(b in a)H(this,b,a[b]);this.hasImportedEvents=!0}},setState:function(a,b){var c=this.plotX,d=this.plotY,e=this.series,f=e.options.states,g=ba[e.type].marker&&e.options.marker,h=g&&!g.enabled,i=g&&g.states[a],j=i&&i.enabled===!1,k=e.stateMarkerGraphic,l=this.marker||{},m=e.chart,n=e.halo,o,a=a||"";o=this.pointAttr[a]||
e.pointAttr[a];if(!(a===this.state&&!b||this.selected&&a!=="select"||f[a]&&f[a].enabled===!1||a&&(j||h&&i.enabled===!1)||a&&l.states&&l.states[a]&&l.states[a].enabled===!1)){if(this.graphic)g=g&&this.graphic.symbolName&&o.r,this.graphic.attr(z(o,g?{x:c-g,y:d-g,width:2*g,height:2*g}:{})),k&&k.hide();else{if(a&&i)if(g=i.radius,l=l.symbol||e.symbol,k&&k.currentSymbol!==l&&(k=k.destroy()),k)k[b?"animate":"attr"]({x:c-g,y:d-g});else if(l)e.stateMarkerGraphic=k=m.renderer.symbol(l,c-g,d-g,2*g,2*g).attr(o).add(e.markerGroup),
k.currentSymbol=l;if(k)k[a&&m.isInsidePlot(c,d,m.inverted)?"show":"hide"](),k.element.point=this}if((c=f[a]&&f[a].halo)&&c.size){if(!n)e.halo=n=m.renderer.path().add(m.seriesGroup);n.attr(x({fill:oa(this.color||e.color).setOpacity(c.opacity).get()},c.attributes))[b?"animate":"attr"]({d:this.haloPath(c.size)})}else n&&n.attr({d:[]});this.state=a}},haloPath:function(a){var b=this.series,c=b.chart,d=b.getPlotBox(),e=c.inverted;return c.renderer.symbols.circle(d.translateX+(e?b.yAxis.len-this.plotY:this.plotX)-
a,d.translateY+(e?b.xAxis.len-this.plotX:this.plotY)-a,a*2,a*2)}});x(R.prototype,{onMouseOver:function(){var a=this.chart,b=a.hoverSeries;if(b&&b!==this)b.onMouseOut();this.options.events.mouseOver&&I(this,"mouseOver");this.setState("hover");a.hoverSeries=this},onMouseOut:function(){var a=this.options,b=this.chart,c=b.tooltip,d=b.hoverPoint;b.hoverSeries=null;if(d)d.onMouseOut();this&&a.events.mouseOut&&I(this,"mouseOut");c&&!a.stickyTracking&&(!c.shared||this.noSharedTooltip)&&c.hide();this.setState()},
setState:function(a){var b=this.options,c=this.graph,d=b.states,e=b.lineWidth,b=0,a=a||"";if(this.state!==a&&(this.state=a,!(d[a]&&d[a].enabled===!1)&&(a&&(e=d[a].lineWidth||e+(d[a].lineWidthPlus||0)),c&&!c.dashstyle))){a={"stroke-width":e};for(c.attr(a);this["zoneGraph"+b];)this["zoneGraph"+b].attr(a),b+=1}},setVisible:function(a,b){var c=this,d=c.chart,e=c.legendItem,f,g=d.options.chart.ignoreHiddenSeries,h=c.visible;f=(c.visible=a=c.userOptions.visible=a===y?!h:a)?"show":"hide";o(["group","dataLabelsGroup",
"markerGroup","tracker"],function(a){if(c[a])c[a][f]()});if(d.hoverSeries===c||(d.hoverPoint&&d.hoverPoint.series)===c)c.onMouseOut();e&&d.legend.colorizeItem(c,a);c.isDirty=!0;c.options.stacking&&o(d.series,function(a){if(a.options.stacking&&a.visible)a.isDirty=!0});o(c.linkedSeries,function(b){b.setVisible(a,!1)});if(g)d.isDirtyBox=!0;b!==!1&&d.redraw();I(c,f)},show:function(){this.setVisible(!0)},hide:function(){this.setVisible(!1)},select:function(a){this.selected=a=a===y?!this.selected:a;if(this.checkbox)this.checkbox.checked=
a;I(this,a?"select":"unselect")},drawTracker:U.drawTrackerGraph});x(A,{Color:oa,Point:Ga,Tick:Ta,Renderer:$a,SVGElement:Q,SVGRenderer:ua,arrayMin:Pa,arrayMax:Fa,charts:Y,dateFormat:Oa,error:la,format:Ja,pathAnim:zb,getOptions:function(){return T},hasBidiBug:Ob,isTouchDevice:Kb,setOptions:function(a){T=z(!0,T,a);Db();return T},addEvent:H,removeEvent:Z,createElement:$,discardElement:Ra,css:L,each:o,map:Ua,merge:z,splat:sa,extendClass:ka,pInt:D,svg:ca,canvas:fa,vml:!ca&&!fa,product:"Highcharts",version:"4.1.7"})})();
/*
Highcharts JS v4.1.7 (2015-06-26)
Exporting module
(c) 2010-2014 Torstein Honsi
License: www.highcharts.com/license
*/
(function(f){var z=f.Chart,s=f.addEvent,A=f.removeEvent,B=HighchartsAdapter.fireEvent,j=f.createElement,p=f.discardElement,u=f.css,l=f.merge,m=f.each,q=f.extend,E=f.splat,F=Math.max,k=document,C=window,G=f.isTouchDevice,H=f.Renderer.prototype.symbols,r=f.getOptions(),x;q(r.lang,{printChart:"Print chart",downloadPNG:"Download PNG image",downloadJPEG:"Download JPEG image",downloadPDF:"Download PDF document",downloadSVG:"Download SVG vector image",contextButtonTitle:"Chart context menu"});r.navigation=
{menuStyle:{border:"1px solid #A0A0A0",background:"#FFFFFF",padding:"5px 0"},menuItemStyle:{padding:"0 10px",background:"none",color:"#303030",fontSize:G?"14px":"11px"},menuItemHoverStyle:{background:"#4572A5",color:"#FFFFFF"},buttonOptions:{symbolFill:"#E0E0E0",symbolSize:14,symbolStroke:"#666",symbolStrokeWidth:3,symbolX:12.5,symbolY:10.5,align:"right",buttonSpacing:3,height:22,theme:{fill:"white",stroke:"none"},verticalAlign:"top",width:24}};r.exporting={type:"image/png",url:"http://export.highcharts.com/",
buttons:{contextButton:{menuClassName:"highcharts-contextmenu",symbol:"menu",_titleKey:"contextButtonTitle",menuItems:[{textKey:"printChart",onclick:function(){this.print()}},{separator:!0},{textKey:"downloadPNG",onclick:function(){this.exportChart()}},{textKey:"downloadJPEG",onclick:function(){this.exportChart({type:"image/jpeg"})}},{textKey:"downloadPDF",onclick:function(){this.exportChart({type:"application/pdf"})}},{textKey:"downloadSVG",onclick:function(){this.exportChart({type:"image/svg+xml"})}}]}}};
f.post=function(b,a,e){var c,b=j("form",l({method:"post",action:b,enctype:"multipart/form-data"},e),{display:"none"},k.body);for(c in a)j("input",{type:"hidden",name:c,value:a[c]},null,b);b.submit();p(b)};q(z.prototype,{sanitizeSVG:function(b){return b.replace(/zIndex="[^"]+"/g,"").replace(/isShadow="[^"]+"/g,"").replace(/symbolName="[^"]+"/g,"").replace(/jQuery[0-9]+="[^"]+"/g,"").replace(/url\([^#]+#/g,"url(#").replace(/<svg /,'<svg xmlns:xlink="http://www.w3.org/1999/xlink" ').replace(/ (NS[0-9]+\:)?href=/g,
" xlink:href=").replace(/\n/," ").replace(/<\/svg>.*?$/,"</svg>").replace(/(fill|stroke)="rgba\(([ 0-9]+,[ 0-9]+,[ 0-9]+),([ 0-9\.]+)\)"/g,'$1="rgb($2)" $1-opacity="$3"').replace(/&nbsp;/g," ").replace(/&shy;/g,"­").replace(/<IMG /g,"<image ").replace(/<(\/?)TITLE>/g,"<$1title>").replace(/height=([^" ]+)/g,'height="$1"').replace(/width=([^" ]+)/g,'width="$1"').replace(/hc-svg-href="([^"]+)">/g,'xlink:href="$1"/>').replace(/ id=([^" >]+)/g,' id="$1"').replace(/class=([^" >]+)/g,'class="$1"').replace(/ transform /g,
" ").replace(/:(path|rect)/g,"$1").replace(/style="([^"]+)"/g,function(a){return a.toLowerCase()})},getSVG:function(b){var a=this,e,c,g,y,h,d=l(a.options,b);if(!k.createElementNS)k.createElementNS=function(a,b){return k.createElement(b)};c=j("div",null,{position:"absolute",top:"-9999em",width:a.chartWidth+"px",height:a.chartHeight+"px"},k.body);g=a.renderTo.style.width;h=a.renderTo.style.height;g=d.exporting.sourceWidth||d.chart.width||/px$/.test(g)&&parseInt(g,10)||600;h=d.exporting.sourceHeight||
d.chart.height||/px$/.test(h)&&parseInt(h,10)||400;q(d.chart,{animation:!1,renderTo:c,forExport:!0,width:g,height:h});d.exporting.enabled=!1;delete d.data;d.series=[];m(a.series,function(a){y=l(a.options,{animation:!1,enableMouseTracking:!1,showCheckbox:!1,visible:a.visible});y.isInternal||d.series.push(y)});b&&m(["xAxis","yAxis"],function(a){m(E(b[a]),function(b,c){d[a][c]=l(d[a][c],b)})});e=new f.Chart(d,a.callback);m(["xAxis","yAxis"],function(b){m(a[b],function(a,d){var c=e[b][d],g=a.getExtremes(),
h=g.userMin,g=g.userMax;c&&(h!==void 0||g!==void 0)&&c.setExtremes(h,g,!0,!1)})});g=e.container.innerHTML;d=null;e.destroy();p(c);g=this.sanitizeSVG(g);return g=g.replace(/(url\(#highcharts-[0-9]+)&quot;/g,"$1").replace(/&quot;/g,"'")},getSVGForExport:function(b,a){var e=this.options.exporting;return this.getSVG(l({chart:{borderRadius:0}},e.chartOptions,a,{exporting:{sourceWidth:b&&b.sourceWidth||e.sourceWidth,sourceHeight:b&&b.sourceHeight||e.sourceHeight}}))},exportChart:function(b,a){var e=this.getSVGForExport(b,
a),b=l(this.options.exporting,b);f.post(b.url,{filename:b.filename||"chart",type:b.type,width:b.width||0,scale:b.scale||2,svg:e},b.formAttributes)},print:function(){var b=this,a=b.container,e=[],c=a.parentNode,g=k.body,f=g.childNodes;if(!b.isPrinting)b.isPrinting=!0,B(b,"beforePrint"),m(f,function(a,b){if(a.nodeType===1)e[b]=a.style.display,a.style.display="none"}),g.appendChild(a),C.focus(),C.print(),setTimeout(function(){c.appendChild(a);m(f,function(a,b){if(a.nodeType===1)a.style.display=e[b]});
b.isPrinting=!1;B(b,"afterPrint")},1E3)},contextMenu:function(b,a,e,c,g,f,h){var d=this,l=d.options.navigation,D=l.menuItemStyle,n=d.chartWidth,o=d.chartHeight,k="cache-"+b,i=d[k],t=F(g,f),v,w,p,r=function(a){d.pointer.inClass(a.target,b)||w()};if(!i)d[k]=i=j("div",{className:b},{position:"absolute",zIndex:1E3,padding:t+"px"},d.container),v=j("div",null,q({MozBoxShadow:"3px 3px 10px #888",WebkitBoxShadow:"3px 3px 10px #888",boxShadow:"3px 3px 10px #888"},l.menuStyle),i),w=function(){u(i,{display:"none"});
h&&h.setState(0);d.openMenu=!1},s(i,"mouseleave",function(){p=setTimeout(w,500)}),s(i,"mouseenter",function(){clearTimeout(p)}),s(document,"mouseup",r),s(d,"destroy",function(){A(document,"mouseup",r)}),m(a,function(a){if(a){var b=a.separator?j("hr",null,null,v):j("div",{onmouseover:function(){u(this,l.menuItemHoverStyle)},onmouseout:function(){u(this,D)},onclick:function(){w();a.onclick&&a.onclick.apply(d,arguments)},innerHTML:a.text||d.options.lang[a.textKey]},q({cursor:"pointer"},D),v);d.exportDivElements.push(b)}}),
d.exportDivElements.push(v,i),d.exportMenuWidth=i.offsetWidth,d.exportMenuHeight=i.offsetHeight;a={display:"block"};e+d.exportMenuWidth>n?a.right=n-e-g-t+"px":a.left=e-t+"px";c+f+d.exportMenuHeight>o&&h.alignOptions.verticalAlign!=="top"?a.bottom=o-c-t+"px":a.top=c+f-t+"px";u(i,a);d.openMenu=!0},addButton:function(b){var a=this,e=a.renderer,c=l(a.options.navigation.buttonOptions,b),g=c.onclick,k=c.menuItems,h,d,m={stroke:c.symbolStroke,fill:c.symbolFill},j=c.symbolSize||12;if(!a.btnCount)a.btnCount=
0;if(!a.exportDivElements)a.exportDivElements=[],a.exportSVGElements=[];if(c.enabled!==!1){var n=c.theme,o=n.states,p=o&&o.hover,o=o&&o.select,i;delete n.states;g?i=function(){g.apply(a,arguments)}:k&&(i=function(){a.contextMenu(d.menuClassName,k,d.translateX,d.translateY,d.width,d.height,d);d.setState(2)});c.text&&c.symbol?n.paddingLeft=f.pick(n.paddingLeft,25):c.text||q(n,{width:c.width,height:c.height,padding:0});d=e.button(c.text,0,0,i,n,p,o).attr({title:a.options.lang[c._titleKey],"stroke-linecap":"round"});
d.menuClassName=b.menuClassName||"highcharts-menu-"+a.btnCount++;c.symbol&&(h=e.symbol(c.symbol,c.symbolX-j/2,c.symbolY-j/2,j,j).attr(q(m,{"stroke-width":c.symbolStrokeWidth||1,zIndex:1})).add(d));d.add().align(q(c,{width:d.width,x:f.pick(c.x,x)}),!0,"spacingBox");x+=(d.width+c.buttonSpacing)*(c.align==="right"?-1:1);a.exportSVGElements.push(d,h)}},destroyExport:function(b){var b=b.target,a,e;for(a=0;a<b.exportSVGElements.length;a++)if(e=b.exportSVGElements[a])e.onclick=e.ontouchstart=null,b.exportSVGElements[a]=
e.destroy();for(a=0;a<b.exportDivElements.length;a++)e=b.exportDivElements[a],A(e,"mouseleave"),b.exportDivElements[a]=e.onmouseout=e.onmouseover=e.ontouchstart=e.onclick=null,p(e)}});H.menu=function(b,a,e,c){return["M",b,a+2.5,"L",b+e,a+2.5,"M",b,a+c/2+0.5,"L",b+e,a+c/2+0.5,"M",b,a+c-1.5,"L",b+e,a+c-1.5]};z.prototype.callbacks.push(function(b){var a,e=b.options.exporting,c=e.buttons;x=0;if(e.enabled!==!1){for(a in c)b.addButton(c[a]);s(b,"destroy",b.destroyExport)}})})(Highcharts);
/*
Highcharts JS v4.1.7 (2015-06-26)
(c) 2009-2014 Torstein Honsi
License: www.highcharts.com/license
*/
(function(k,D){function K(a,b,c){this.init.call(this,a,b,c)}var P=k.arrayMin,Q=k.arrayMax,t=k.each,H=k.extend,o=k.merge,R=k.map,q=k.pick,x=k.pInt,p=k.getOptions().plotOptions,h=k.seriesTypes,v=k.extendClass,L=k.splat,u=k.wrap,M=k.Axis,y=k.Tick,I=k.Point,S=k.Pointer,T=k.CenteredSeriesMixin,z=k.TrackerMixin,s=k.Series,w=Math,E=w.round,B=w.floor,N=w.max,U=k.Color,r=function(){};H(K.prototype,{init:function(a,b,c){var d=this,e=d.defaultOptions;d.chart=b;d.options=a=o(e,b.angular?{background:{}}:void 0,
a);(a=a.background)&&t([].concat(L(a)).reverse(),function(a){var b=a.backgroundColor,g=c.userOptions,a=o(d.defaultBackgroundOptions,a);if(b)a.backgroundColor=b;a.color=a.backgroundColor;c.options.plotBands.unshift(a);g.plotBands=g.plotBands||[];g.plotBands.unshift(a)})},defaultOptions:{center:["50%","50%"],size:"85%",startAngle:0},defaultBackgroundOptions:{shape:"circle",borderWidth:1,borderColor:"silver",backgroundColor:{linearGradient:{x1:0,y1:0,x2:0,y2:1},stops:[[0,"#FFF"],[1,"#DDD"]]},from:-Number.MAX_VALUE,
innerRadius:0,to:Number.MAX_VALUE,outerRadius:"105%"}});var G=M.prototype,y=y.prototype,V={getOffset:r,redraw:function(){this.isDirty=!1},render:function(){this.isDirty=!1},setScale:r,setCategories:r,setTitle:r},O={isRadial:!0,defaultRadialGaugeOptions:{labels:{align:"center",x:0,y:null},minorGridLineWidth:0,minorTickInterval:"auto",minorTickLength:10,minorTickPosition:"inside",minorTickWidth:1,tickLength:10,tickPosition:"inside",tickWidth:2,title:{rotation:0},zIndex:2},defaultRadialXOptions:{gridLineWidth:1,
labels:{align:null,distance:15,x:0,y:null},maxPadding:0,minPadding:0,showLastLabel:!1,tickLength:0},defaultRadialYOptions:{gridLineInterpolation:"circle",labels:{align:"right",x:-3,y:-2},showLastLabel:!1,title:{x:4,text:null,rotation:90}},setOptions:function(a){a=this.options=o(this.defaultOptions,this.defaultRadialOptions,a);if(!a.plotBands)a.plotBands=[]},getOffset:function(){G.getOffset.call(this);this.chart.axisOffset[this.side]=0;this.center=this.pane.center=T.getCenter.call(this.pane)},getLinePath:function(a,
b){var c=this.center,b=q(b,c[2]/2-this.offset);return this.chart.renderer.symbols.arc(this.left+c[0],this.top+c[1],b,b,{start:this.startAngleRad,end:this.endAngleRad,open:!0,innerR:0})},setAxisTranslation:function(){G.setAxisTranslation.call(this);if(this.center)this.transA=this.isCircular?(this.endAngleRad-this.startAngleRad)/(this.max-this.min||1):this.center[2]/2/(this.max-this.min||1),this.minPixelPadding=this.isXAxis?this.transA*this.minPointOffset:0},beforeSetTickPositions:function(){this.autoConnect&&
(this.max+=this.categories&&1||this.pointRange||this.closestPointRange||0)},setAxisSize:function(){G.setAxisSize.call(this);if(this.isRadial){this.center=this.pane.center=k.CenteredSeriesMixin.getCenter.call(this.pane);if(this.isCircular)this.sector=this.endAngleRad-this.startAngleRad;this.len=this.width=this.height=this.center[2]*q(this.sector,1)/2}},getPosition:function(a,b){return this.postTranslate(this.isCircular?this.translate(a):0,q(this.isCircular?b:this.translate(a),this.center[2]/2)-this.offset)},
postTranslate:function(a,b){var c=this.chart,d=this.center,a=this.startAngleRad+a;return{x:c.plotLeft+d[0]+Math.cos(a)*b,y:c.plotTop+d[1]+Math.sin(a)*b}},getPlotBandPath:function(a,b,c){var d=this.center,e=this.startAngleRad,f=d[2]/2,i=[q(c.outerRadius,"100%"),c.innerRadius,q(c.thickness,10)],g=/%$/,l,m=this.isCircular;this.options.gridLineInterpolation==="polygon"?d=this.getPlotLinePath(a).concat(this.getPlotLinePath(b,!0)):(a=Math.max(a,this.min),b=Math.min(b,this.max),m||(i[0]=this.translate(a),
i[1]=this.translate(b)),i=R(i,function(a){g.test(a)&&(a=x(a,10)*f/100);return a}),c.shape==="circle"||!m?(a=-Math.PI/2,b=Math.PI*1.5,l=!0):(a=e+this.translate(a),b=e+this.translate(b)),d=this.chart.renderer.symbols.arc(this.left+d[0],this.top+d[1],i[0],i[0],{start:Math.min(a,b),end:Math.max(a,b),innerR:q(i[1],i[0]-i[2]),open:l}));return d},getPlotLinePath:function(a,b){var c=this,d=c.center,e=c.chart,f=c.getPosition(a),i,g,l;c.isCircular?l=["M",d[0]+e.plotLeft,d[1]+e.plotTop,"L",f.x,f.y]:c.options.gridLineInterpolation===
"circle"?(a=c.translate(a))&&(l=c.getLinePath(0,a)):(t(e.xAxis,function(a){a.pane===c.pane&&(i=a)}),l=[],a=c.translate(a),d=i.tickPositions,i.autoConnect&&(d=d.concat([d[0]])),b&&(d=[].concat(d).reverse()),t(d,function(f,c){g=i.getPosition(f,a);l.push(c?"L":"M",g.x,g.y)}));return l},getTitlePosition:function(){var a=this.center,b=this.chart,c=this.options.title;return{x:b.plotLeft+a[0]+(c.x||0),y:b.plotTop+a[1]-{high:0.5,middle:0.25,low:0}[c.align]*a[2]+(c.y||0)}}};u(G,"init",function(a,b,c){var j;
var d=b.angular,e=b.polar,f=c.isX,i=d&&f,g,l;l=b.options;var m=c.pane||0;if(d){if(H(this,i?V:O),g=!f)this.defaultRadialOptions=this.defaultRadialGaugeOptions}else if(e)H(this,O),this.defaultRadialOptions=(g=f)?this.defaultRadialXOptions:o(this.defaultYAxisOptions,this.defaultRadialYOptions);a.call(this,b,c);if(!i&&(d||e)){a=this.options;if(!b.panes)b.panes=[];this.pane=(j=b.panes[m]=b.panes[m]||new K(L(l.pane)[m],b,this),m=j);m=m.options;b.inverted=!1;l.chart.zoomType=null;this.startAngleRad=b=(m.startAngle-
90)*Math.PI/180;this.endAngleRad=l=(q(m.endAngle,m.startAngle+360)-90)*Math.PI/180;this.offset=a.offset||0;if((this.isCircular=g)&&c.max===D&&l-b===2*Math.PI)this.autoConnect=!0}});u(y,"getPosition",function(a,b,c,d,e){var f=this.axis;return f.getPosition?f.getPosition(c):a.call(this,b,c,d,e)});u(y,"getLabelPosition",function(a,b,c,d,e,f,i,g,l){var m=this.axis,j=f.y,n=20,h=f.align,A=(m.translate(this.pos)+m.startAngleRad+Math.PI/2)/Math.PI*180%360;m.isRadial?(a=m.getPosition(this.pos,m.center[2]/
2+q(f.distance,-25)),f.rotation==="auto"?d.attr({rotation:A}):j===null&&(j=m.chart.renderer.fontMetrics(d.styles.fontSize).b-d.getBBox().height/2),h===null&&(m.isCircular?(this.label.getBBox().width>m.len*m.tickInterval/(m.max-m.min)&&(n=0),h=A>n&&A<180-n?"left":A>180+n&&A<360-n?"right":"center"):h="center",d.attr({align:h})),a.x+=f.x,a.y+=j):a=a.call(this,b,c,d,e,f,i,g,l);return a});u(y,"getMarkPath",function(a,b,c,d,e,f,i){var g=this.axis;g.isRadial?(a=g.getPosition(this.pos,g.center[2]/2+d),b=
["M",b,c,"L",a.x,a.y]):b=a.call(this,b,c,d,e,f,i);return b});p.arearange=o(p.area,{lineWidth:1,marker:null,threshold:null,tooltip:{pointFormat:'<span style="color:{series.color}">\u25CF</span> {series.name}: <b>{point.low}</b> - <b>{point.high}</b><br/>'},trackByArea:!0,dataLabels:{align:null,verticalAlign:null,xLow:0,xHigh:0,yLow:0,yHigh:0},states:{hover:{halo:!1}}});h.arearange=v(h.area,{type:"arearange",pointArrayMap:["low","high"],toYData:function(a){return[a.low,a.high]},pointValKey:"low",deferTranslatePolar:!0,
highToXY:function(a){var b=this.chart,c=this.xAxis.postTranslate(a.rectPlotX,this.yAxis.len-a.plotHigh);a.plotHighX=c.x-b.plotLeft;a.plotHigh=c.y-b.plotTop},getSegments:function(){var a=this;t(a.points,function(b){if(!a.options.connectNulls&&(b.low===null||b.high===null))b.y=null;else if(b.low===null&&b.high!==null)b.y=b.high});s.prototype.getSegments.call(this)},translate:function(){var a=this,b=a.yAxis;h.area.prototype.translate.apply(a);t(a.points,function(a){var d=a.low,e=a.high,f=a.plotY;e===
null&&d===null?a.y=null:d===null?(a.plotLow=a.plotY=null,a.plotHigh=b.translate(e,0,1,0,1)):e===null?(a.plotLow=f,a.plotHigh=null):(a.plotLow=f,a.plotHigh=b.translate(e,0,1,0,1))});this.chart.polar&&t(this.points,function(c){a.highToXY(c)})},getSegmentPath:function(a){var b,c=[],d=a.length,e=s.prototype.getSegmentPath,f,i;i=this.options;var g=i.step;for(b=HighchartsAdapter.grep(a,function(a){return a.plotLow!==null});d--;)f=a[d],f.plotHigh!==null&&c.push({plotX:f.plotHighX||f.plotX,plotY:f.plotHigh});
a=e.call(this,b);if(g)g===!0&&(g="left"),i.step={left:"right",center:"center",right:"left"}[g];c=e.call(this,c);i.step=g;i=[].concat(a,c);this.chart.polar||(c[0]="L");this.areaPath=this.areaPath.concat(a,c);return i},drawDataLabels:function(){var a=this.data,b=a.length,c,d=[],e=s.prototype,f=this.options.dataLabels,i=f.align,g,l,m=this.chart.inverted;if(f.enabled||this._hasPointLabels){for(c=b;c--;)if(g=a[c])if(l=g.plotHigh>g.plotLow,g.y=g.high,g._plotY=g.plotY,g.plotY=g.plotHigh,d[c]=g.dataLabel,
g.dataLabel=g.dataLabelUpper,g.below=l,m){if(!i)f.align=l?"right":"left";f.x=f.xHigh}else f.y=f.yHigh;e.drawDataLabels&&e.drawDataLabels.apply(this,arguments);for(c=b;c--;)if(g=a[c])if(l=g.plotHigh>g.plotLow,g.dataLabelUpper=g.dataLabel,g.dataLabel=d[c],g.y=g.low,g.plotY=g._plotY,g.below=!l,m){if(!i)f.align=l?"left":"right";f.x=f.xLow}else f.y=f.yLow;e.drawDataLabels&&e.drawDataLabels.apply(this,arguments)}f.align=i},alignDataLabel:function(){h.column.prototype.alignDataLabel.apply(this,arguments)},
setStackedPoints:r,getSymbol:r,drawPoints:r});p.areasplinerange=o(p.arearange);h.areasplinerange=v(h.arearange,{type:"areasplinerange",getPointSpline:h.spline.prototype.getPointSpline});(function(){var a=h.column.prototype;p.columnrange=o(p.column,p.arearange,{lineWidth:1,pointRange:null});h.columnrange=v(h.arearange,{type:"columnrange",translate:function(){var b=this,c=b.yAxis,d;a.translate.apply(b);t(b.points,function(a){var f=a.shapeArgs,i=b.options.minPointLength,g;a.tooltipPos=null;a.plotHigh=
d=c.translate(a.high,0,1,0,1);a.plotLow=a.plotY;g=d;a=a.plotY-d;Math.abs(a)<i?(i-=a,a+=i,g-=i/2):a<0&&(a*=-1,g-=a);f.height=a;f.y=g})},directTouch:!0,trackerGroups:["group","dataLabelsGroup"],drawGraph:r,pointAttrToOptions:a.pointAttrToOptions,drawPoints:a.drawPoints,drawTracker:a.drawTracker,animate:a.animate,getColumnMetrics:a.getColumnMetrics})})();p.gauge=o(p.line,{dataLabels:{enabled:!0,defer:!1,y:15,borderWidth:1,borderColor:"silver",borderRadius:3,crop:!1,verticalAlign:"top",zIndex:2},dial:{},
pivot:{},tooltip:{headerFormat:""},showInLegend:!1});z={type:"gauge",pointClass:v(I,{setState:function(a){this.state=a}}),angular:!0,drawGraph:r,fixedBox:!0,forceDL:!0,trackerGroups:["group","dataLabelsGroup"],translate:function(){var a=this.yAxis,b=this.options,c=a.center;this.generatePoints();t(this.points,function(d){var e=o(b.dial,d.dial),f=x(q(e.radius,80))*c[2]/200,i=x(q(e.baseLength,70))*f/100,g=x(q(e.rearLength,10))*f/100,l=e.baseWidth||3,m=e.topWidth||1,j=b.overshoot,n=a.startAngleRad+a.translate(d.y,
null,null,null,!0);j&&typeof j==="number"?(j=j/180*Math.PI,n=Math.max(a.startAngleRad-j,Math.min(a.endAngleRad+j,n))):b.wrap===!1&&(n=Math.max(a.startAngleRad,Math.min(a.endAngleRad,n)));n=n*180/Math.PI;d.shapeType="path";d.shapeArgs={d:e.path||["M",-g,-l/2,"L",i,-l/2,f,-m/2,f,m/2,i,l/2,-g,l/2,"z"],translateX:c[0],translateY:c[1],rotation:n};d.plotX=c[0];d.plotY=c[1]})},drawPoints:function(){var a=this,b=a.yAxis.center,c=a.pivot,d=a.options,e=d.pivot,f=a.chart.renderer;t(a.points,function(c){var b=
c.graphic,e=c.shapeArgs,m=e.d,j=o(d.dial,c.dial);b?(b.animate(e),e.d=m):c.graphic=f[c.shapeType](e).attr({stroke:j.borderColor||"none","stroke-width":j.borderWidth||0,fill:j.backgroundColor||"black",rotation:e.rotation}).add(a.group)});c?c.animate({translateX:b[0],translateY:b[1]}):a.pivot=f.circle(0,0,q(e.radius,5)).attr({"stroke-width":e.borderWidth||0,stroke:e.borderColor||"silver",fill:e.backgroundColor||"black"}).translate(b[0],b[1]).add(a.group)},animate:function(a){var b=this;if(!a)t(b.points,
function(a){var d=a.graphic;d&&(d.attr({rotation:b.yAxis.startAngleRad*180/Math.PI}),d.animate({rotation:a.shapeArgs.rotation},b.options.animation))}),b.animate=null},render:function(){this.group=this.plotGroup("group","series",this.visible?"visible":"hidden",this.options.zIndex,this.chart.seriesGroup);s.prototype.render.call(this);this.group.clip(this.chart.clipRect)},setData:function(a,b){s.prototype.setData.call(this,a,!1);this.processData();this.generatePoints();q(b,!0)&&this.chart.redraw()},
drawTracker:z&&z.drawTrackerPoint};h.gauge=v(h.line,z);p.boxplot=o(p.column,{fillColor:"#FFFFFF",lineWidth:1,medianWidth:2,states:{hover:{brightness:-0.3}},threshold:null,tooltip:{pointFormat:'<span style="color:{point.color}">\u25CF</span> <b> {series.name}</b><br/>Maximum: {point.high}<br/>Upper quartile: {point.q3}<br/>Median: {point.median}<br/>Lower quartile: {point.q1}<br/>Minimum: {point.low}<br/>'},whiskerLength:"50%",whiskerWidth:2});h.boxplot=v(h.column,{type:"boxplot",pointArrayMap:["low","q1",
"median","q3","high"],toYData:function(a){return[a.low,a.q1,a.median,a.q3,a.high]},pointValKey:"high",pointAttrToOptions:{fill:"fillColor",stroke:"color","stroke-width":"lineWidth"},drawDataLabels:r,translate:function(){var a=this.yAxis,b=this.pointArrayMap;h.column.prototype.translate.apply(this);t(this.points,function(c){t(b,function(b){c[b]!==null&&(c[b+"Plot"]=a.translate(c[b],0,1,0,1))})})},drawPoints:function(){var a=this,b=a.points,c=a.options,d=a.chart.renderer,e,f,i,g,l,m,j,n,h,A,k,J,p,o,
u,r,v,s,w,x,z,y,F=a.doQuartiles!==!1,C=parseInt(a.options.whiskerLength,10)/100;t(b,function(b){h=b.graphic;z=b.shapeArgs;k={};o={};r={};y=b.color||a.color;if(b.plotY!==D)if(e=b.pointAttr[b.selected?"selected":""],v=z.width,s=B(z.x),w=s+v,x=E(v/2),f=B(F?b.q1Plot:b.lowPlot),i=B(F?b.q3Plot:b.lowPlot),g=B(b.highPlot),l=B(b.lowPlot),k.stroke=b.stemColor||c.stemColor||y,k["stroke-width"]=q(b.stemWidth,c.stemWidth,c.lineWidth),k.dashstyle=b.stemDashStyle||c.stemDashStyle,o.stroke=b.whiskerColor||c.whiskerColor||
y,o["stroke-width"]=q(b.whiskerWidth,c.whiskerWidth,c.lineWidth),r.stroke=b.medianColor||c.medianColor||y,r["stroke-width"]=q(b.medianWidth,c.medianWidth,c.lineWidth),j=k["stroke-width"]%2/2,n=s+x+j,A=["M",n,i,"L",n,g,"M",n,f,"L",n,l],F&&(j=e["stroke-width"]%2/2,n=B(n)+j,f=B(f)+j,i=B(i)+j,s+=j,w+=j,J=["M",s,i,"L",s,f,"L",w,f,"L",w,i,"L",s,i,"z"]),C&&(j=o["stroke-width"]%2/2,g+=j,l+=j,p=["M",n-x*C,g,"L",n+x*C,g,"M",n-x*C,l,"L",n+x*C,l]),j=r["stroke-width"]%2/2,m=E(b.medianPlot)+j,u=["M",s,m,"L",w,
m],h)b.stem.animate({d:A}),C&&b.whiskers.animate({d:p}),F&&b.box.animate({d:J}),b.medianShape.animate({d:u});else{b.graphic=h=d.g().add(a.group);b.stem=d.path(A).attr(k).add(h);if(C)b.whiskers=d.path(p).attr(o).add(h);if(F)b.box=d.path(J).attr(e).add(h);b.medianShape=d.path(u).attr(r).add(h)}})},setStackedPoints:r});p.errorbar=o(p.boxplot,{color:"#000000",grouping:!1,linkedTo:":previous",tooltip:{pointFormat:'<span style="color:{point.color}">\u25CF</span> {series.name}: <b>{point.low}</b> - <b>{point.high}</b><br/>'},
whiskerWidth:null});h.errorbar=v(h.boxplot,{type:"errorbar",pointArrayMap:["low","high"],toYData:function(a){return[a.low,a.high]},pointValKey:"high",doQuartiles:!1,drawDataLabels:h.arearange?h.arearange.prototype.drawDataLabels:r,getColumnMetrics:function(){return this.linkedParent&&this.linkedParent.columnMetrics||h.column.prototype.getColumnMetrics.call(this)}});p.waterfall=o(p.column,{lineWidth:1,lineColor:"#333",dashStyle:"dot",borderColor:"#333",dataLabels:{inside:!0},states:{hover:{lineWidthPlus:0}}});
h.waterfall=v(h.column,{type:"waterfall",upColorProp:"fill",pointValKey:"y",translate:function(){var a=this.options,b=this.yAxis,c,d,e,f,i,g,l,m,j,n=a.threshold,k=a.stacking;h.column.prototype.translate.apply(this);l=m=n;d=this.points;for(c=0,a=d.length;c<a;c++){e=d[c];g=this.processedYData[c];f=e.shapeArgs;j=(i=k&&b.stacks[(this.negStacks&&g<n?"-":"")+this.stackKey])?i[e.x].points[this.index+","+c]:[0,g];if(e.isSum)e.y=g;else if(e.isIntermediateSum)e.y=g-m;i=N(l,l+e.y)+j[0];f.y=b.translate(i,0,1);
if(e.isSum)f.y=b.translate(j[1],0,1),f.height=Math.min(b.translate(j[0],0,1),b.len)-f.y;else if(e.isIntermediateSum)f.y=b.translate(j[1],0,1),f.height=Math.min(b.translate(m,0,1),b.len)-f.y,m=j[1];else{if(l!==0)f.height=g>0?b.translate(l,0,1)-f.y:b.translate(l,0,1)-b.translate(l-g,0,1);l+=g}f.height<0&&(f.y+=f.height,f.height*=-1);e.plotY=f.y=E(f.y)-this.borderWidth%2/2;f.height=N(E(f.height),0.001);e.yBottom=f.y+f.height;f=e.plotY+(e.negative?f.height:0);this.chart.inverted?e.tooltipPos[0]=b.len-
f:e.tooltipPos[1]=f}},processData:function(a){var b=this.yData,c=this.options.data,d,e=b.length,f,i,g,l,m,j;i=f=g=l=this.options.threshold||0;for(j=0;j<e;j++)m=b[j],d=c&&c[j]?c[j]:{},m==="sum"||d.isSum?b[j]=i:m==="intermediateSum"||d.isIntermediateSum?b[j]=f:(i+=m,f+=m),g=Math.min(i,g),l=Math.max(i,l);s.prototype.processData.call(this,a);this.dataMin=g;this.dataMax=l},toYData:function(a){if(a.isSum)return a.x===0?null:"sum";else if(a.isIntermediateSum)return a.x===0?null:"intermediateSum";return a.y},
getAttribs:function(){h.column.prototype.getAttribs.apply(this,arguments);var a=this,b=a.options,c=b.states,d=b.upColor||a.color,b=k.Color(d).brighten(0.1).get(),e=o(a.pointAttr),f=a.upColorProp;e[""][f]=d;e.hover[f]=c.hover.upColor||b;e.select[f]=c.select.upColor||d;t(a.points,function(b){if(!b.options.color)b.y>0?(b.pointAttr=e,b.color=d):b.pointAttr=a.pointAttr})},getGraphPath:function(){var a=this.data,b=a.length,c=E(this.options.lineWidth+this.borderWidth)%2/2,d=[],e,f,i;for(i=1;i<b;i++)f=a[i].shapeArgs,
e=a[i-1].shapeArgs,f=["M",e.x+e.width,e.y+c,"L",f.x,e.y+c],a[i-1].y<0&&(f[2]+=e.height,f[5]+=e.height),d=d.concat(f);return d},getExtremes:r,drawGraph:s.prototype.drawGraph});p.polygon=o(p.scatter,{marker:{enabled:!1}});h.polygon=v(h.scatter,{type:"polygon",fillGraph:!0,getSegmentPath:function(a){return s.prototype.getSegmentPath.call(this,a).concat("z")},drawGraph:s.prototype.drawGraph,drawLegendSymbol:k.LegendSymbolMixin.drawRectangle});p.bubble=o(p.scatter,{dataLabels:{formatter:function(){return this.point.z},
inside:!0,verticalAlign:"middle"},marker:{lineColor:null,lineWidth:1},minSize:8,maxSize:"20%",states:{hover:{halo:{size:5}}},tooltip:{pointFormat:"({point.x}, {point.y}), Size: {point.z}"},turboThreshold:0,zThreshold:0,zoneAxis:"z"});z=v(I,{haloPath:function(){return I.prototype.haloPath.call(this,this.shapeArgs.r+this.series.options.states.hover.halo.size)},ttBelow:!1});h.bubble=v(h.scatter,{type:"bubble",pointClass:z,pointArrayMap:["y","z"],parallelArrays:["x","y","z"],trackerGroups:["group","dataLabelsGroup"],
bubblePadding:!0,zoneAxis:"z",pointAttrToOptions:{stroke:"lineColor","stroke-width":"lineWidth",fill:"fillColor"},applyOpacity:function(a){var b=this.options.marker,c=q(b.fillOpacity,0.5),a=a||b.fillColor||this.color;c!==1&&(a=U(a).setOpacity(c).get("rgba"));return a},convertAttribs:function(){var a=s.prototype.convertAttribs.apply(this,arguments);a.fill=this.applyOpacity(a.fill);return a},getRadii:function(a,b,c,d){var e,f,i,g=this.zData,l=[],m=this.options.sizeBy!=="width";for(f=0,e=g.length;f<
e;f++)i=b-a,i=i>0?(g[f]-a)/(b-a):0.5,m&&i>=0&&(i=Math.sqrt(i)),l.push(w.ceil(c+i*(d-c))/2);this.radii=l},animate:function(a){var b=this.options.animation;if(!a)t(this.points,function(a){var d=a.graphic,a=a.shapeArgs;d&&a&&(d.attr("r",1),d.animate({r:a.r},b))}),this.animate=null},translate:function(){var a,b=this.data,c,d,e=this.radii;h.scatter.prototype.translate.call(this);for(a=b.length;a--;)c=b[a],d=e?e[a]:0,d>=this.minPxSize/2?(c.shapeType="circle",c.shapeArgs={x:c.plotX,y:c.plotY,r:d},c.dlBox=
{x:c.plotX-d,y:c.plotY-d,width:2*d,height:2*d}):c.shapeArgs=c.plotY=c.dlBox=D},drawLegendSymbol:function(a,b){var c=x(a.itemStyle.fontSize)/2;b.legendSymbol=this.chart.renderer.circle(c,a.baseline-c,c).attr({zIndex:3}).add(b.legendGroup);b.legendSymbol.isMarker=!0},drawPoints:h.column.prototype.drawPoints,alignDataLabel:h.column.prototype.alignDataLabel,buildKDTree:r,applyZones:r});M.prototype.beforePadding=function(){var a=this,b=this.len,c=this.chart,d=0,e=b,f=this.isXAxis,i=f?"xData":"yData",g=
this.min,l={},m=w.min(c.plotWidth,c.plotHeight),j=Number.MAX_VALUE,n=-Number.MAX_VALUE,h=this.max-g,k=b/h,p=[];t(this.series,function(b){var g=b.options;if(b.bubblePadding&&(b.visible||!c.options.chart.ignoreHiddenSeries))if(a.allowZoomOutside=!0,p.push(b),f)t(["minSize","maxSize"],function(a){var b=g[a],f=/%$/.test(b),b=x(b);l[a]=f?m*b/100:b}),b.minPxSize=l.minSize,b=b.zData,b.length&&(j=q(g.zMin,w.min(j,w.max(P(b),g.displayNegative===!1?g.zThreshold:-Number.MAX_VALUE))),n=q(g.zMax,w.max(n,Q(b))))});
t(p,function(a){var b=a[i],c=b.length,m;f&&a.getRadii(j,n,l.minSize,l.maxSize);if(h>0)for(;c--;)typeof b[c]==="number"&&(m=a.radii[c],d=Math.min((b[c]-g)*k-m,d),e=Math.max((b[c]-g)*k+m,e))});p.length&&h>0&&q(this.options.min,this.userMin)===D&&q(this.options.max,this.userMax)===D&&(e-=b,k*=(b+d-e)/b,this.min+=d/k,this.max+=e/k)};(function(){function a(a,b,c){a.call(this,b,c);if(this.chart.polar)this.closeSegment=function(a){var b=this.xAxis.center;a.push("L",b[0],b[1])},this.closedStacks=!0}function b(a,
b){var c=this.chart,d=this.options.animation,e=this.group,j=this.markerGroup,n=this.xAxis.center,h=c.plotLeft,k=c.plotTop;if(c.polar){if(c.renderer.isSVG)d===!0&&(d={}),b?(c={translateX:n[0]+h,translateY:n[1]+k,scaleX:0.001,scaleY:0.001},e.attr(c),j&&j.attr(c)):(c={translateX:h,translateY:k,scaleX:1,scaleY:1},e.animate(c,d),j&&j.animate(c,d),this.animate=null)}else a.call(this,b)}var c=s.prototype,d=S.prototype,e;c.searchPointByAngle=function(a){var b=this.chart,c=this.xAxis.pane.center;return this.searchKDTree({clientX:180+
Math.atan2(a.chartX-c[0]-b.plotLeft,a.chartY-c[1]-b.plotTop)*(-180/Math.PI)})};u(c,"buildKDTree",function(a){if(this.chart.polar)this.kdByAngle?this.searchPoint=this.searchPointByAngle:this.kdDimensions=2;a.apply(this)});c.toXY=function(a){var b,c=this.chart,d=a.plotX;b=a.plotY;a.rectPlotX=d;a.rectPlotY=b;b=this.xAxis.postTranslate(a.plotX,this.yAxis.len-b);a.plotX=a.polarPlotX=b.x-c.plotLeft;a.plotY=a.polarPlotY=b.y-c.plotTop;this.kdByAngle?(c=(d/Math.PI*180+this.xAxis.pane.options.startAngle)%360,
c<0&&(c+=360),a.clientX=c):a.clientX=a.plotX};h.area&&u(h.area.prototype,"init",a);h.areaspline&&u(h.areaspline.prototype,"init",a);h.spline&&u(h.spline.prototype,"getPointSpline",function(a,b,c,d){var e,j,n,h,k,p,o;if(this.chart.polar){e=c.plotX;j=c.plotY;a=b[d-1];n=b[d+1];this.connectEnds&&(a||(a=b[b.length-2]),n||(n=b[1]));if(a&&n)h=a.plotX,k=a.plotY,b=n.plotX,p=n.plotY,h=(1.5*e+h)/2.5,k=(1.5*j+k)/2.5,n=(1.5*e+b)/2.5,o=(1.5*j+p)/2.5,b=Math.sqrt(Math.pow(h-e,2)+Math.pow(k-j,2)),p=Math.sqrt(Math.pow(n-
e,2)+Math.pow(o-j,2)),h=Math.atan2(k-j,h-e),k=Math.atan2(o-j,n-e),o=Math.PI/2+(h+k)/2,Math.abs(h-o)>Math.PI/2&&(o-=Math.PI),h=e+Math.cos(o)*b,k=j+Math.sin(o)*b,n=e+Math.cos(Math.PI+o)*p,o=j+Math.sin(Math.PI+o)*p,c.rightContX=n,c.rightContY=o;d?(c=["C",a.rightContX||a.plotX,a.rightContY||a.plotY,h||e,k||j,e,j],a.rightContX=a.rightContY=null):c=["M",e,j]}else c=a.call(this,b,c,d);return c});u(c,"translate",function(a){var b=this.chart;a.call(this);if(b.polar&&(this.kdByAngle=b.tooltip&&b.tooltip.shared,
!this.preventPostTranslate)){a=this.points;for(b=a.length;b--;)this.toXY(a[b])}});u(c,"getSegmentPath",function(a,b){var c=this.points;if(this.chart.polar&&this.options.connectEnds!==!1&&b[b.length-1]===c[c.length-1]&&c[0].y!==null)this.connectEnds=!0,b=[].concat(b,[c[0]]);return a.call(this,b)});u(c,"animate",b);if(h.column)e=h.column.prototype,u(e,"animate",b),u(e,"translate",function(a){var b=this.xAxis,c=this.yAxis.len,d=b.center,e=b.startAngleRad,j=this.chart.renderer,h,k;this.preventPostTranslate=
!0;a.call(this);if(b.isRadial){b=this.points;for(k=b.length;k--;)h=b[k],a=h.barX+e,h.shapeType="path",h.shapeArgs={d:j.symbols.arc(d[0],d[1],c-h.plotY,null,{start:a,end:a+h.pointWidth,innerR:c-q(h.yBottom,c)})},this.toXY(h),h.tooltipPos=[h.plotX,h.plotY],h.ttBelow=h.plotY>d[1]}}),u(e,"alignDataLabel",function(a,b,d,e,h,j){if(this.chart.polar){a=b.rectPlotX/Math.PI*180;if(e.align===null)e.align=a>20&&a<160?"left":a>200&&a<340?"right":"center";if(e.verticalAlign===null)e.verticalAlign=a<45||a>315?"bottom":
a>135&&a<225?"top":"middle";c.alignDataLabel.call(this,b,d,e,h,j)}else a.call(this,b,d,e,h,j)});u(d,"getCoordinates",function(a,b){var c=this.chart,d={xAxis:[],yAxis:[]};c.polar?t(c.axes,function(a){var e=a.isXAxis,f=a.center,h=b.chartX-f[0]-c.plotLeft,f=b.chartY-f[1]-c.plotTop;d[e?"xAxis":"yAxis"].push({axis:a,value:a.translate(e?Math.PI-Math.atan2(h,f):Math.sqrt(Math.pow(h,2)+Math.pow(f,2)),!0)})}):d=a.call(this,b);return d})})()})(Highcharts);

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,3 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/

View File

@@ -0,0 +1,3 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/

View File

@@ -1,3 +1,7 @@
# Place all the behaviors and hooks related to the matching controller here. # Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js. # All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/ # You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
$ ->
`$('.datetimepicker').datetimepicker({format: 'd.m.Y H:i', startDate: (!($(this).attr("value")==undefined))? $(this).attr("value"): '' })`
return

View File

@@ -0,0 +1,17 @@
$ ->
if $('#infinite-scrolling').size() > 0
more_posts_url = $('.pagination .next_page a').attr('href')
b=$(document).height() - $(window).height() - 260
if more_posts_url && $(window).scrollTop() > b
$('.pagination').html('<b> Loading...</b>')
$.getScript more_posts_url
$(window).on 'scroll', ->
more_posts_url = $('.pagination .next_page a').attr('href')
b=$(document).height() - $(window).height() - 260
if more_posts_url && $(window).scrollTop() > b
$('.pagination').html('<b> Loading...</b>')
$.getScript more_posts_url
return
return

View File

@@ -0,0 +1,9 @@
/*
Sticky-kit v1.1.2 | WTFPL | Leaf Corcoran 2015 | http://leafo.net
*/
(function(){var b,f;b=this.jQuery||window.jQuery;f=b(window);b.fn.stick_in_parent=function(d){var A,w,J,n,B,K,p,q,k,E,t;null==d&&(d={});t=d.sticky_class;B=d.inner_scrolling;E=d.recalc_every;k=d.parent;q=d.offset_top;p=d.spacer;w=d.bottoming;null==q&&(q=0);null==k&&(k=void 0);null==B&&(B=!0);null==t&&(t="is_stuck");A=b(document);null==w&&(w=!0);J=function(a,d,n,C,F,u,r,G){var v,H,m,D,I,c,g,x,y,z,h,l;if(!a.data("sticky_kit")){a.data("sticky_kit",!0);I=A.height();g=a.parent();null!=k&&(g=g.closest(k));
if(!g.length)throw"failed to find stick parent";v=m=!1;(h=null!=p?p&&a.closest(p):b("<div />"))&&h.css("position",a.css("position"));x=function(){var c,f,e;if(!G&&(I=A.height(),c=parseInt(g.css("border-top-width"),10),f=parseInt(g.css("padding-top"),10),d=parseInt(g.css("padding-bottom"),10),n=g.offset().top+c+f,C=g.height(),m&&(v=m=!1,null==p&&(a.insertAfter(h),h.detach()),a.css({position:"",top:"",width:"",bottom:""}).removeClass(t),e=!0),F=a.offset().top-(parseInt(a.css("margin-top"),10)||0)-q,
u=a.outerHeight(!0),r=a.css("float"),h&&h.css({width:a.outerWidth(!0),height:u,display:a.css("display"),"vertical-align":a.css("vertical-align"),"float":r}),e))return l()};x();if(u!==C)return D=void 0,c=q,z=E,l=function(){var b,l,e,k;if(!G&&(e=!1,null!=z&&(--z,0>=z&&(z=E,x(),e=!0)),e||A.height()===I||x(),e=f.scrollTop(),null!=D&&(l=e-D),D=e,m?(w&&(k=e+u+c>C+n,v&&!k&&(v=!1,a.css({position:"fixed",bottom:"",top:c}).trigger("sticky_kit:unbottom"))),e<F&&(m=!1,c=q,null==p&&("left"!==r&&"right"!==r||a.insertAfter(h),
h.detach()),b={position:"",width:"",top:""},a.css(b).removeClass(t).trigger("sticky_kit:unstick")),B&&(b=f.height(),u+q>b&&!v&&(c-=l,c=Math.max(b-u,c),c=Math.min(q,c),m&&a.css({top:c+"px"})))):e>F&&(m=!0,b={position:"fixed",top:c},b.width="border-box"===a.css("box-sizing")?a.outerWidth()+"px":a.width()+"px",a.css(b).addClass(t),null==p&&(a.after(h),"left"!==r&&"right"!==r||h.append(a)),a.trigger("sticky_kit:stick")),m&&w&&(null==k&&(k=e+u+c>C+n),!v&&k)))return v=!0,"static"===g.css("position")&&g.css({position:"relative"}),
a.css({position:"absolute",bottom:d,top:"auto"}).trigger("sticky_kit:bottom")},y=function(){x();return l()},H=function(){G=!0;f.off("touchmove",l);f.off("scroll",l);f.off("resize",y);b(document.body).off("sticky_kit:recalc",y);a.off("sticky_kit:detach",H);a.removeData("sticky_kit");a.css({position:"",bottom:"",top:"",width:""});g.position("position","");if(m)return null==p&&("left"!==r&&"right"!==r||a.insertAfter(h),h.remove()),a.removeClass(t)},f.on("touchmove",l),f.on("scroll",l),f.on("resize",
y),b(document.body).on("sticky_kit:recalc",y),a.on("sticky_kit:detach",H),setTimeout(l,0)}};n=0;for(K=this.length;n<K;n++)d=this[n],J(b(d));return this}}).call(this);

View File

@@ -0,0 +1,3 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/

View File

@@ -0,0 +1,3 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/

View File

@@ -0,0 +1,3 @@
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/

View File

@@ -11,68 +11,86 @@
* *
*= require_self *= require_self
* require_tree . * require_tree .
*= require 'calendars' *= require blueimp-gallery-all
*= require jquery.fileupload-ui *= require jquery.fileupload-ui
*= require jquery.datetimepicker
*= require jquery.ui.dialog
*= require jquery.ui.autocomplete
*= require jquery.ui.progressbar
*= require jquery.ui.tabs
* require 'bootstrap' * require 'bootstrap'
* require 'neuigkeiten'
*/ */
// Colorshema #0A64A4
$color_prim: #0A64A4; $color_schema_1: #006599;
$color_prim_light: #0B65A5; $color_schema_2: #630CE8;
$color_prim_vlight: #2B85C5; $color_schema_3: #FF0021;
$color_cont: FFDB73; $color_schema_4: #E8820C;
$color_cont_light:FFDB73; $color_schema_5: #FFF30D;
$linkColor: #03006E;
$color_schema_1_dark: darken($color_schema_1, 10%);
$color_schema_2_dark: darken($color_schema_2, 10%);
$color_schema_3_dark: darken($color_schema_3, 10%);
$color_schema_4_dark: darken($color_schema_4, 10%);
$color_schema_5_dark: darken($color_schema_5, 10%);
$color_prim: $color_schema_1_dark; // #006599; //071672;
$color_prim_light: lighten($color_prim ,10%);
$color_prim_vlight: lighten($color_prim ,30%);
$color_prim_dark: darken($color_prim ,10%);
$color_prim_vdark: darken($color_prim ,30%);
$color_cont: $color_schema_3;
$color_cont_light:lighten($color_cont ,10%);
$linkColor: $color_prim;
$linkColorHover: $color_schema_1;
$white: #FFFFFF; $white: #FFFFFF;
$bodyBackground: $white; $bodyBackground: #EEE;
$navbarBackground: $color_cont;
$navbarBackground: #FFFFFF;
$navbarBackgroundHighlight:lighten($navbarBackground,30%);
$navbarBackground: #EEE;//$color_prim;
$navbarText: $color_prim;
$navbarLinkColor: $color_prim;
$navbarLinkColorHover: $color_schema_1;
$dropdownLinkColor: black;
$navbar-default-brand-color: black;
$navbarBrandColor:black;
$navbarBackgroundHighlight: #EEE;
//$navbarBackgroundHighlight:#FFFFFF; //$navbarBackgroundHighlight:#FFFFFF;
$navbarLinkBackgroundHover:#FFBE00;
$navbarLinkBackgroundHover: lighten(#cccccc,10%); $navbarLinkBackgroundHover: darken($navbarBackground,10%);
$infoBackground:#65A5D1; $infoBackground:#65A5D1;
$infoText:#03406A; $infoText:#03406A;
$sansFontFamily: Helvetica, Arial; $sansFontFamily: Helvetica, Arial;
@import 'bootstrap'; @import 'bootstrap';
@import 'bootstrap-responsive'; @import 'bootstrap-responsive';
@import 'bootstrap/image-gallery'; @import 'bootstrap/image-gallery';
@import 'font-awesome'; @import 'font-awesome';
@import 'neuigkeiten';
h1 { @import 'themengruppen';
font-size: 23px
}
h2 {
font-size: 19px
}
body,html {
padding:0;
margin:0;
}
a:hover {
text-decoration:none;
}
div.header { div.header {
display: block; display: block;
// background: url('/header1.png') no-repeat; // background: url('../../../../header1.png') no-repeat;
background-color: #FFF; // background-color:white;// $color_prim;
background-position: right; // background-position: right;
border-bottom:1px solid black; vertical-align:middle;
height:41px; float:left;
color:#000; color:#000;
padding-left:87px;
padding-top:0px; padding-top:0px;
overflow:hidden; overflow:visible;
margin-bottom: 20px height:45px;
margin-bottom: 0 px
} }
div.header h1 { div.header h1 {
padding:0; padding:0;
@@ -80,68 +98,26 @@ margin:4px;
font-size:20px; font-size:20px;
line-height:32px; line-height:32px;
} }
#menudiv { div.header img {
width:100%; //top:2px;
//position:relative;
}
div.navbar {
border-bottom: $color_prim solid 3px;
}
div.headerrow {
} }
$contentdiv-background:none;
.navbar .nav li { $navbar-li-minwidth: 0;
min-width:100%;
}
.navbar .nav .divider {
border-style: solid;
border-width: 1px 0px 0px 0px;
border-color: grey;
min-width: 100%;
}
.navbar .navbar-inner
{
border:none;
box-shadow:none;
}
#contentdiv
{
background: #FFFFFF
}
#contentdiv .container-fluid
{
padding:0;
}
a.linkbox, div.contentbox
{
display:block;
padding:5px;
border-radius: 10px;
border: lightgray solid 1px;
}
a.linkbox:hover
{
box-shadow: 1px 1px 2px 2px lightgray;
}
a.linkbox li
{
}
ul.linkbox-list li
{
margin-bottom:10px;
}
ul.linkbox-list
{
max-width:70em;
}
div.contentbox
{
margin: 5px;
}
.navbar .nav li {
min-width:100%; $box-border: #ccc solid 1px;
background:44F; $box-border-radius:0px;
} $box-background: white;
@import 'layout';
@import 'linkboxes';
@import 'calendars';
@import 'formtastic-bootstrap'

View File

@@ -0,0 +1,786 @@
@font-face {
font-family: "ffi1";
src: url("/assets/flatfeticon.eot");
src: url("/assets/flatfeticon.eot#iefix") format("embedded-opentype"),
url("/assets/flatfeticon.woff") format("woff"),
url("/assets/flatfeticon.ttf") format("truetype"),
url("/assets/flatfeticon.svg") format("svg");
font-weight: normal;
font-style: normal;
}
[class^="ffi1-"]:before, [class*=" ffi1-"]:before,
[class^="ffi1-"]:after, [class*=" ffi1-"]:after {
font-family: ffi1;
font-style: normal;
margin-left: 4px;
font-weight:normal;
}
.ffi1-academic:before {
content: "\e000";
}
.ffi1-apple:before {
content: "\e001";
}
.ffi1-auricular6:before {
content: "\e002";
}
.ffi1-bag2:before {
content: "\e003";
}
.ffi1-bald34:before {
content: "\e004";
}
.ffi1-balloons2:before {
content: "\e005";
}
.ffi1-banes:before {
content: "\e006";
}
.ffi1-bar1:before {
content: "\e007";
}
.ffi1-black268:before {
content: "\e008";
}
.ffi1-book119:before {
content: "\e009";
}
.ffi1-book135:before {
content: "\e00a";
}
.ffi1-book137:before {
content: "\e00b";
}
.ffi1-book139:before {
content: "\e00c";
}
.ffi1-books17:before {
content: "\e00d";
}
.ffi1-books19:before {
content: "\e00e";
}
.ffi1-books20:before {
content: "\e00f";
}
.ffi1-books30:before {
content: "\e010";
}
.ffi1-books8:before {
content: "\e011";
}
.ffi1-boy21:before {
content: "\e012";
}
.ffi1-bricks2:before {
content: "\e013";
}
.ffi1-briefcase32:before {
content: "\e014";
}
.ffi1-businessman216:before {
content: "\e015";
}
.ffi1-businessman217:before {
content: "\e016";
}
.ffi1-businessman56:before {
content: "\e017";
}
.ffi1-businessman65:before {
content: "\e018";
}
.ffi1-businessmen32:before {
content: "\e019";
}
.ffi1-calculator40:before {
content: "\e01a";
}
.ffi1-calendar130:before {
content: "\e01b";
}
.ffi1-call36:before {
content: "\e01c";
}
.ffi1-call7:before {
content: "\e01d";
}
.ffi1-candy1:before {
content: "\e01e";
}
.ffi1-candy10:before {
content: "\e01f";
}
.ffi1-career:before {
content: "\e020";
}
.ffi1-certificate2:before {
content: "\e021";
}
.ffi1-checkboxmark:before {
content: "\e022";
}
.ffi1-chemistry:before {
content: "\e023";
}
.ffi1-chemistry1:before {
content: "\e024";
}
.ffi1-circular114:before {
content: "\e025";
}
.ffi1-circular116:before {
content: "\e026";
}
.ffi1-class6:before {
content: "\e027";
}
.ffi1-classroom:before {
content: "\e028";
}
.ffi1-cleaning1:before {
content: "\e029";
}
.ffi1-clipboard44:before {
content: "\e02a";
}
.ffi1-close13:before {
content: "\e02b";
}
.ffi1-cocktail15:before {
content: "\e02c";
}
.ffi1-cocktail7:before {
content: "\e02d";
}
.ffi1-coffee20:before {
content: "\e02e";
}
.ffi1-coins24:before {
content: "\e02f";
}
.ffi1-colors3:before {
content: "\e030";
}
.ffi1-comfortable:before {
content: "\e031";
}
.ffi1-comments16:before {
content: "\e032";
}
.ffi1-compass58:before {
content: "\e033";
}
.ffi1-computer135:before {
content: "\e034";
}
.ffi1-computer136:before {
content: "\e035";
}
.ffi1-computers:before {
content: "\e036";
}
.ffi1-connected20:before {
content: "\e037";
}
.ffi1-contacts1:before {
content: "\e038";
}
.ffi1-copy12:before {
content: "\e039";
}
.ffi1-croissant1:before {
content: "\e03a";
}
.ffi1-data39:before {
content: "\e03b";
}
.ffi1-data45:before {
content: "\e03c";
}
.ffi1-delivered:before {
content: "\e03d";
}
.ffi1-delivery35:before {
content: "\e03e";
}
.ffi1-descendant1:before {
content: "\e03f";
}
.ffi1-diploma:before {
content: "\e040";
}
.ffi1-dislike:before {
content: "\e041";
}
.ffi1-dna9:before {
content: "\e042";
}
.ffi1-domain1:before {
content: "\e043";
}
.ffi1-drink24:before {
content: "\e044";
}
.ffi1-dwelling1:before {
content: "\e045";
}
.ffi1-earth23:before {
content: "\e046";
}
.ffi1-ecological2:before {
content: "\e047";
}
.ffi1-edit12:before {
content: "\e048";
}
.ffi1-education14:before {
content: "\e049";
}
.ffi1-education17:before {
content: "\e04a";
}
.ffi1-education20:before {
content: "\e04b";
}
.ffi1-educational8:before {
content: "\e04c";
}
.ffi1-educative1:before {
content: "\e04d";
}
.ffi1-electric6:before {
content: "\e04e";
}
.ffi1-electrical7:before {
content: "\e04f";
}
.ffi1-electronic32:before {
content: "\e050";
}
.ffi1-electronic51:before {
content: "\e051";
}
.ffi1-elegant8:before {
content: "\e052";
}
.ffi1-email20:before {
content: "\e053";
}
.ffi1-facebook1:before {
content: "\e054";
}
.ffi1-facebook30:before {
content: "\e055";
}
.ffi1-female188:before {
content: "\e056";
}
.ffi1-female189:before {
content: "\e057";
}
.ffi1-female218:before {
content: "\e058";
}
.ffi1-food23:before {
content: "\e059";
}
.ffi1-fork27:before {
content: "\e05a";
}
.ffi1-gears3:before {
content: "\e05b";
}
.ffi1-gingerbread:before {
content: "\e05c";
}
.ffi1-girl16:before {
content: "\e05d";
}
.ffi1-glass15:before {
content: "\e05e";
}
.ffi1-good2:before {
content: "\e05f";
}
.ffi1-graduate11:before {
content: "\e060";
}
.ffi1-graduate8:before {
content: "\e061";
}
.ffi1-graduate9:before {
content: "\e062";
}
.ffi1-graduates2:before {
content: "\e063";
}
.ffi1-graduation20:before {
content: "\e064";
}
.ffi1-graduation25:before {
content: "\e065";
}
.ffi1-grocery10:before {
content: "\e066";
}
.ffi1-halloween10:before {
content: "\e067";
}
.ffi1-hammer7:before {
content: "\e068";
}
.ffi1-hand132:before {
content: "\e069";
}
.ffi1-handbag6:before {
content: "\e06a";
}
.ffi1-hands-shake:before {
content: "\e06b";
}
.ffi1-handshake1:before {
content: "\e06c";
}
.ffi1-hardbound:before {
content: "\e06d";
}
.ffi1-head21:before {
content: "\e06e";
}
.ffi1-hierarchical:before {
content: "\e06f";
}
.ffi1-homework:before {
content: "\e070";
}
.ffi1-hot31:before {
content: "\e071";
}
.ffi1-hot50:before {
content: "\e072";
}
.ffi1-house25:before {
content: "\e073";
}
.ffi1-important:before {
content: "\e074";
}
.ffi1-index3:before {
content: "\e075";
}
.ffi1-instructor:before {
content: "\e076";
}
.ffi1-italian1:before {
content: "\e077";
}
.ffi1-job:before {
content: "\e078";
}
.ffi1-judge:before {
content: "\e079";
}
.ffi1-keys:before {
content: "\e07a";
}
.ffi1-kids1:before {
content: "\e07b";
}
.ffi1-kindergarden:before {
content: "\e07c";
}
.ffi1-laptop88:before {
content: "\e07d";
}
.ffi1-lecture1:before {
content: "\e07e";
}
.ffi1-lecture2:before {
content: "\e07f";
}
.ffi1-like3:before {
content: "\e080";
}
.ffi1-live2:before {
content: "\e081";
}
.ffi1-magnifier12:before {
content: "\e082";
}
.ffi1-magnifier13:before {
content: "\e083";
}
.ffi1-male103:before {
content: "\e084";
}
.ffi1-man183:before {
content: "\e085";
}
.ffi1-man204:before {
content: "\e086";
}
.ffi1-man315:before {
content: "\e087";
}
.ffi1-man388:before {
content: "\e088";
}
.ffi1-man397:before {
content: "\e089";
}
.ffi1-man82:before {
content: "\e08a";
}
.ffi1-men9:before {
content: "\e08b";
}
.ffi1-milk8:before {
content: "\e08c";
}
.ffi1-mirrors:before {
content: "\e08d";
}
.ffi1-money13:before {
content: "\e08e";
}
.ffi1-mop1:before {
content: "\e08f";
}
.ffi1-mop2:before {
content: "\e090";
}
.ffi1-movie19:before {
content: "\e091";
}
.ffi1-multiple25:before {
content: "\e092";
}
.ffi1-news:before {
content: "\e093";
}
.ffi1-newspaper9:before {
content: "\e094";
}
.ffi1-note20:before {
content: "\e095";
}
.ffi1-open127:before {
content: "\e096";
}
.ffi1-open135:before {
content: "\e097";
}
.ffi1-open160:before {
content: "\e098";
}
.ffi1-open161:before {
content: "\e099";
}
.ffi1-owl10:before {
content: "\e09a";
}
.ffi1-package8:before {
content: "\e09b";
}
.ffi1-paperclip14:before {
content: "\e09c";
}
.ffi1-party:before {
content: "\e09d";
}
.ffi1-party1:before {
content: "\e09e";
}
.ffi1-pen38:before {
content: "\e09f";
}
.ffi1-pen39:before {
content: "\e0a0";
}
.ffi1-pen43:before {
content: "\e0a1";
}
.ffi1-pencil54:before {
content: "\e0a2";
}
.ffi1-pencil66:before {
content: "\e0a3";
}
.ffi1-pens:before {
content: "\e0a4";
}
.ffi1-people30:before {
content: "\e0a5";
}
.ffi1-personal5:before {
content: "\e0a6";
}
.ffi1-persong:before {
content: "\e0a7";
}
.ffi1-persons8:before {
content: "\e0a8";
}
.ffi1-phone25:before {
content: "\e0a9";
}
.ffi1-pie46:before {
content: "\e0aa";
}
.ffi1-plate7:before {
content: "\e0ab";
}
.ffi1-plug12:before {
content: "\e0ac";
}
.ffi1-plugin:before {
content: "\e0ad";
}
.ffi1-power20:before {
content: "\e0ae";
}
.ffi1-power48:before {
content: "\e0af";
}
.ffi1-printer11:before {
content: "\e0b0";
}
.ffi1-printer70:before {
content: "\e0b1";
}
.ffi1-professor17:before {
content: "\e0b2";
}
.ffi1-professor4:before {
content: "\e0b3";
}
.ffi1-professor5:before {
content: "\e0b4";
}
.ffi1-professor7:before {
content: "\e0b5";
}
.ffi1-pumpkin2:before {
content: "\e0b6";
}
.ffi1-puzzle25:before {
content: "\e0b7";
}
.ffi1-question41:before {
content: "\e0b8";
}
.ffi1-question42:before {
content: "\e0b9";
}
.ffi1-quiz:before {
content: "\e0ba";
}
.ffi1-regular2:before {
content: "\e0bb";
}
.ffi1-remove9:before {
content: "\e0bc";
}
.ffi1-resistor1:before {
content: "\e0bd";
}
.ffi1-ruler14:before {
content: "\e0be";
}
.ffi1-running5:before {
content: "\e0bf";
}
.ffi1-sandwich:before {
content: "\e0c0";
}
.ffi1-scales2:before {
content: "\e0c1";
}
.ffi1-school31:before {
content: "\e0c2";
}
.ffi1-school35:before {
content: "\e0c3";
}
.ffi1-school6:before {
content: "\e0c4";
}
.ffi1-science2:before {
content: "\e0c5";
}
.ffi1-scissors3:before {
content: "\e0c6";
}
.ffi1-search4:before {
content: "\e0c7";
}
.ffi1-search54:before {
content: "\e0c8";
}
.ffi1-services:before {
content: "\e0c9";
}
.ffi1-serving1:before {
content: "\e0ca";
}
.ffi1-setting:before {
content: "\e0cb";
}
.ffi1-sheep1:before {
content: "\e0cc";
}
.ffi1-shop3:before {
content: "\e0cd";
}
.ffi1-shopping66:before {
content: "\e0ce";
}
.ffi1-shopping8:before {
content: "\e0cf";
}
.ffi1-soccer32:before {
content: "\e0d0";
}
.ffi1-social19:before {
content: "\e0d1";
}
.ffi1-speech84:before {
content: "\e0d2";
}
.ffi1-square74:before {
content: "\e0d3";
}
.ffi1-stack21:before {
content: "\e0d4";
}
.ffi1-stopwatch6:before {
content: "\e0d5";
}
.ffi1-store:before {
content: "\e0d6";
}
.ffi1-student13:before {
content: "\e0d7";
}
.ffi1-student15:before {
content: "\e0d8";
}
.ffi1-student40:before {
content: "\e0d9";
}
.ffi1-students3:before {
content: "\e0da";
}
.ffi1-students5:before {
content: "\e0db";
}
.ffi1-students6:before {
content: "\e0dc";
}
.ffi1-students7:before {
content: "\e0dd";
}
.ffi1-sweet8:before {
content: "\e0de";
}
.ffi1-tags2:before {
content: "\e0df";
}
.ffi1-tags3:before {
content: "\e0e0";
}
.ffi1-talking2:before {
content: "\e0e1";
}
.ffi1-teacher12:before {
content: "\e0e2";
}
.ffi1-teacher13:before {
content: "\e0e3";
}
.ffi1-teacher4:before {
content: "\e0e4";
}
.ffi1-teacher8:before {
content: "\e0e5";
}
.ffi1-teacher9:before {
content: "\e0e6";
}
.ffi1-test17:before {
content: "\e0e7";
}
.ffi1-text87:before {
content: "\e0e8";
}
.ffi1-textile:before {
content: "\e0e9";
}
.ffi1-three115:before {
content: "\e0ea";
}
.ffi1-thumb31:before {
content: "\e0eb";
}
.ffi1-toilet1:before {
content: "\e0ec";
}
.ffi1-tools:before {
content: "\e0ed";
}
.ffi1-two174:before {
content: "\e0ee";
}
.ffi1-two185:before {
content: "\e0ef";
}
.ffi1-two28:before {
content: "\e0f0";
}
.ffi1-users1:before {
content: "\e0f1";
}
.ffi1-users2:before {
content: "\e0f2";
}
.ffi1-users5:before {
content: "\e0f3";
}
.ffi1-users6:before {
content: "\e0f4";
}
.ffi1-verified9:before {
content: "\e0f5";
}
.ffi1-view2:before {
content: "\e0f6";
}
.ffi1-wifi10:before {
content: "\e0f7";
}
.ffi1-wind15:before {
content: "\e0f8";
}
.ffi1-winners2:before {
content: "\e0f9";
}
.ffi1-woman83:before {
content: "\e0fa";
}
.ffi1-worker12:before {
content: "\e0fb";
}
.ffi1-worker2:before {
content: "\e0fc";
}
.ffi1-worker4:before {
content: "\e0fd";
}
.ffi1-workers:before {
content: "\e0fe";
}
.ffi1-writing17:before {
content: "\e0ff";
}

View File

@@ -0,0 +1,415 @@
@font-face {
font-family: "ffi2";
src: url("/assets/flatfeticon2.eot");
src: url("/assets/flatfeticon2.eot#iefix") format("embedded-opentype"),
url("/assets/flatfeticon2.woff") format("woff"),
url("/assets/flatfeticon2.ttf") format("truetype"),
url("/assets/flatfeticon2.svg") format("svg");
font-weight: normal;
font-style: normal;
}
[class^="ffi2-"]:before, [class*=" ffi2-"]:before,
[class^="ffi2-"]:after, [class*=" ffi2-"]:after {
font-family: ffi2;
font-size: normal;
font-style: normal;
margin-left: 4px;
}.ffi2-accident3:before {
content: "\e000";
}
.ffi2-alphabet3:before {
content: "\e001";
}
.ffi2-angel:before {
content: "\e002";
}
.ffi2-angry:before {
content: "\e003";
}
.ffi2-angry2:before {
content: "\e004";
}
.ffi2-angry23:before {
content: "\e005";
}
.ffi2-angry40:before {
content: "\e006";
}
.ffi2-angry41:before {
content: "\e007";
}
.ffi2-animal203:before {
content: "\e008";
}
.ffi2-annulled3:before {
content: "\e009";
}
.ffi2-bandaid:before {
content: "\e00a";
}
.ffi2-battery88:before {
content: "\e00b";
}
.ffi2-book97:before {
content: "\e00c";
}
.ffi2-boy11:before {
content: "\e00d";
}
.ffi2-boy12:before {
content: "\e00e";
}
.ffi2-business57:before {
content: "\e00f";
}
.ffi2-camouflage:before {
content: "\e010";
}
.ffi2-car65:before {
content: "\e011";
}
.ffi2-certificate7:before {
content: "\e012";
}
.ffi2-checklist4:before {
content: "\e013";
}
.ffi2-circuit4:before {
content: "\e014";
}
.ffi2-confused4:before {
content: "\e015";
}
.ffi2-cpu:before {
content: "\e016";
}
.ffi2-cpu1:before {
content: "\e017";
}
.ffi2-cry1:before {
content: "\e018";
}
.ffi2-cry2:before {
content: "\e019";
}
.ffi2-crying7:before {
content: "\e01a";
}
.ffi2-customerservice10:before {
content: "\e01b";
}
.ffi2-doubt3:before {
content: "\e01c";
}
.ffi2-doubts1:before {
content: "\e01d";
}
.ffi2-drinks48:before {
content: "\e01e";
}
.ffi2-education6:before {
content: "\e01f";
}
.ffi2-election3:before {
content: "\e020";
}
.ffi2-electronic51:before {
content: "\e021";
}
.ffi2-emoticon101:before {
content: "\e022";
}
.ffi2-emoticon82:before {
content: "\e023";
}
.ffi2-emoticon83:before {
content: "\e024";
}
.ffi2-emoticon98:before {
content: "\e025";
}
.ffi2-emoticons11:before {
content: "\e026";
}
.ffi2-family4:before {
content: "\e027";
}
.ffi2-fear3:before {
content: "\e028";
}
.ffi2-first21:before {
content: "\e029";
}
.ffi2-fright:before {
content: "\e02a";
}
.ffi2-furious3:before {
content: "\e02b";
}
.ffi2-graduate2:before {
content: "\e02c";
}
.ffi2-group58:before {
content: "\e02d";
}
.ffi2-handshake3:before {
content: "\e02e";
}
.ffi2-hatchback:before {
content: "\e02f";
}
.ffi2-help9:before {
content: "\e030";
}
.ffi2-house77:before {
content: "\e031";
}
.ffi2-illness1:before {
content: "\e032";
}
.ffi2-inadequacy:before {
content: "\e033";
}
.ffi2-incompetence:before {
content: "\e034";
}
.ffi2-indifferent:before {
content: "\e035";
}
.ffi2-kiss3:before {
content: "\e036";
}
.ffi2-laughing7:before {
content: "\e037";
}
.ffi2-laughing8:before {
content: "\e038";
}
.ffi2-lifesaver28:before {
content: "\e039";
}
.ffi2-lively:before {
content: "\e03a";
}
.ffi2-love2:before {
content: "\e03b";
}
.ffi2-mad1:before {
content: "\e03c";
}
.ffi2-man282:before {
content: "\e03d";
}
.ffi2-manager3:before {
content: "\e03e";
}
.ffi2-medical43:before {
content: "\e03f";
}
.ffi2-mobile26:before {
content: "\e040";
}
.ffi2-moustaches1:before {
content: "\e041";
}
.ffi2-mute24:before {
content: "\e042";
}
.ffi2-mute3:before {
content: "\e043";
}
.ffi2-navigation28:before {
content: "\e044";
}
.ffi2-nerd6:before {
content: "\e045";
}
.ffi2-nervous:before {
content: "\e046";
}
.ffi2-owl9:before {
content: "\e047";
}
.ffi2-palmtrees1:before {
content: "\e048";
}
.ffi2-panic1:before {
content: "\e049";
}
.ffi2-pencil32:before {
content: "\e04a";
}
.ffi2-pirate5:before {
content: "\e04b";
}
.ffi2-plus13:before {
content: "\e04c";
}
.ffi2-protection24:before {
content: "\e04d";
}
.ffi2-robot30:before {
content: "\e04e";
}
.ffi2-robotic2:before {
content: "\e04f";
}
.ffi2-rough:before {
content: "\e050";
}
.ffi2-sad34:before {
content: "\e051";
}
.ffi2-sad35:before {
content: "\e052";
}
.ffi2-sad37:before {
content: "\e053";
}
.ffi2-sad38:before {
content: "\e054";
}
.ffi2-sad39:before {
content: "\e055";
}
.ffi2-sad74:before {
content: "\e056";
}
.ffi2-sad75:before {
content: "\e057";
}
.ffi2-sad77:before {
content: "\e058";
}
.ffi2-scary:before {
content: "\e059";
}
.ffi2-serious3:before {
content: "\e05a";
}
.ffi2-severe:before {
content: "\e05b";
}
.ffi2-silhouette121:before {
content: "\e05c";
}
.ffi2-singing4:before {
content: "\e05d";
}
.ffi2-sleep1:before {
content: "\e05e";
}
.ffi2-sleepness:before {
content: "\e05f";
}
.ffi2-sleepy6:before {
content: "\e060";
}
.ffi2-smile31:before {
content: "\e061";
}
.ffi2-smile32:before {
content: "\e062";
}
.ffi2-smile33:before {
content: "\e063";
}
.ffi2-smiley41:before {
content: "\e064";
}
.ffi2-smiley42:before {
content: "\e065";
}
.ffi2-smiling35:before {
content: "\e066";
}
.ffi2-smiling36:before {
content: "\e067";
}
.ffi2-solar12:before {
content: "\e068";
}
.ffi2-spring13:before {
content: "\e069";
}
.ffi2-square103:before {
content: "\e06a";
}
.ffi2-stars53:before {
content: "\e06b";
}
.ffi2-student12:before {
content: "\e06c";
}
.ffi2-study7:before {
content: "\e06d";
}
.ffi2-stupor:before {
content: "\e06e";
}
.ffi2-surprise5:before {
content: "\e06f";
}
.ffi2-surprised:before {
content: "\e070";
}
.ffi2-surprised19:before {
content: "\e071";
}
.ffi2-surprised21:before {
content: "\e072";
}
.ffi2-surveillance1:before {
content: "\e073";
}
.ffi2-suspicions:before {
content: "\e074";
}
.ffi2-sweat1:before {
content: "\e075";
}
.ffi2-sweating3:before {
content: "\e076";
}
.ffi2-tears:before {
content: "\e077";
}
.ffi2-telephone45:before {
content: "\e078";
}
.ffi2-think7:before {
content: "\e079";
}
.ffi2-timidity:before {
content: "\e07a";
}
.ffi2-tongue1:before {
content: "\e07b";
}
.ffi2-tongue2:before {
content: "\e07c";
}
.ffi2-two128:before {
content: "\e07d";
}
.ffi2-two210:before {
content: "\e07e";
}
.ffi2-users53:before {
content: "\e07f";
}
.ffi2-very7:before {
content: "\e080";
}
.ffi2-wink:before {
content: "\e081";
}
.ffi2-wink9:before {
content: "\e082";
}
.ffi2-winking9:before {
content: "\e083";
}
.ffi2-winners1:before {
content: "\e084";
}

View File

@@ -2,39 +2,6 @@
// They will automatically be included in application.css. // They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/ // You can use Sass (SCSS) here: http://sass-lang.com/
//.modal.fade {
// top: -25%;
// transition: opacity 0.3s linear 0s, top 0.3s ease-out 0s;
//}
//.modal-gallery {
// max-height: none;
// outline: medium none;
// width: auto;
//}
//.modal {
// color: #333333;
//}
//.hide {
// display: none;
//}
//.modal {
//background-clip: padding-box;
// background-color: #FFFFFF;
// border: 1px solid rgba(0, 0, 0, 0.3);
//border-radius: 6px 6px 6px 6px;
// box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
// left: 50%;
// margin-left: -280px;
// outline: medium none;
// position: fixed;
// top: 10%;;
// z-index: 1050;
//}
//.fade {
// opacity: 0;
// transition: opacity 0.15s linear 0s;
//}
div.gallery-block div.gallery-block
{ {
padding: 10px; padding: 10px;

View File

@@ -1,3 +1,13 @@
@import 'blueimp-gallery-all';
.left
{
float: left;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
/* etc. */
}
h1 { h1 {
font-size: 23px font-size: 23px
} }
@@ -6,6 +16,17 @@ h2 {
font-size: 19px font-size: 19px
} }
h3 {
font-size: 16px
}
h4 {
font-size: 14px
}
body,html { body,html {
padding:0; padding:0;
margin:0; margin:0;
@@ -15,42 +36,14 @@ a:hover {
text-decoration:none; text-decoration:none;
} }
@import 'tinymce';
@import 'fetlogo';
@import 'flatfeticon1';
@import 'flatfeticon2';
ul.linkbox-list
{
max-width:70em;
}
a.linkbox, div.contentbox
{
display:block;
padding:5px;
border-radius:$box-border-radius;
border: $box-border;
background: $box-background;
}
a.linkbox:hover
{
box-shadow: 1px 1px 2px 2px lightgray;
}
a.linkbox li
{
}
ul.linkbox-list li
{
margin-bottom:10px;
}
div.contentbox div.contentbox
{ {
margin: 5px; margin: 5px;
@@ -91,3 +84,81 @@ div.smallspan {
} }
form.inline div {
float:left;}
form.inline input {
}
form.inline {
float:clear; }
@import 'tinymce';
a.flag-true { color: $color_schema_3_dark}
a.flag-true.flag-goodquality-true { color: green}
a.flag-true.flag-template-true {color: $color_schema_1_dark}
a.flag-false { color: #CCC}
ul.ui-menu
{list-style-type:none;
}
ul.ui-menu > li > a
{
padding:2px;
padding-left:10px;
cursor: pointer;
}
a.choice-true
{font-weight: bold;}
a.choice-false
{color:grey}
ul.choice-list
{list-style-type: none;
margin:0;
}
ul.choice-list > li
{
}
ul.choice-list > li > a {
line-height:normal;
}
ul.choice-list > li > a > i {
font-size:3em;
}
ul.choice-list > li > a.btn > i {
font-size:1em;
}
a.choice > i {font-size: 32px}
span.highcharts-axis-labels > i {
font-size:32px}
div.toolbar-inline > div.dropdown
{ display:inline;
}
div.btn-toolbar > div.dropdown > ul.dropdown-menu
{ font-size: small;
}
.fa-stack {
height: 1em;}
.fa-stack-sm > .fa-stack
{postion:relative;
top:-7px;
width:2em;
}
.fa-stack-sm {
height:1em;
line-height:1em;
width:1em;
height:1em;
}
.btn.stacked {
padding-left:4px;
padding-right:4px;
}

View File

@@ -0,0 +1,61 @@
ul.linkbox-list
{
max-width:70em;
margin-left:auto;
margin-right:auto;
}
a.linkbox, div.contentbox
{
display:block;
padding:5px;
border-radius:$box-border-radius;
border: $box-border;
background: $box-background;
}
a.linkbox:hover{ box-shadow: 1px 1px 2px 2px lightgray; }
a.linkbox.color-1 { color:$color_schema_1; }
a.linkbox.color-2 { color:$color_schema_2; }
a.linkbox.color-3 { color:$color_schema_3; }
a.linkbox.color-4 { color:$color_schema_4;}
a.linkbox.color-5 { color:$color_schema_5;}
a.color-1-dark { color:$color_schema_1_dark; }
a.color-2-dark { color:$color_schema_2_dark; }
a.color-3-dark { color:$color_schema_3_dark;}
a.color-4-dark { color:$color_schema_4_dark;}
a.color-5-dark { color:$color_schema_5_dark;}
a.color-1-dark:hover { color:$color_schema_1; }
a.color-2-dark:hover { color:$color_schema_2; }
a.color-3-dark:hover { color:$color_schema_3; }
a.color-4-dark:hover { color:$color_schema_4; }
a.color-5-dark:hover { color:$color_schema_5; }
a.linkbox li { }
ul.linkbox-list li {
margin-bottom:10px;
}
ul.linklist {
max-width:100%;
padding:0;
margin:5px;
}
ul.linklist li {
list-style:none;
margin-bottom:2px;
}
ul.linklist li a i{
vertical-align:middle;
margin-right:6px;
font-size:2em;}
span.linklist a {
padding:5px;
border-radius:$box-border-radius;
border: $box-border;
background: $box-background;
display:block;
float:left;
}

View File

@@ -0,0 +1,3 @@
// Place all the styles related to the meetings controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

View File

@@ -0,0 +1,3 @@
// Place all the styles related to the meetingtyps controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

View File

@@ -12,3 +12,7 @@ padding:10px;
div .neuigkeit_block:hover { div .neuigkeit_block:hover {
box-shadow: 1px 1px 2px 2px lightgray; box-shadow: 1px 1px 2px 2px lightgray;
} }
a.unpublished div.media{
background: rgb(255, 188, 99);
}

View File

@@ -0,0 +1,19 @@
@page :first {
@bottom-right-corner {
content: none
}
}
@page {
@top-center {
content: element(heading);
}
@left-top {
}
@bottom-right-corner {
content: counter(page)
}
}
#rh {
position: running(header);
}

View File

@@ -0,0 +1,3 @@
// Place all the styles related to the Survey::answers controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

View File

@@ -0,0 +1,3 @@
// Place all the styles related to the Survey::choices controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

View File

@@ -0,0 +1,3 @@
// Place all the styles related to the Survey::questions controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

View File

@@ -1,22 +1,19 @@
// Place all the styles related to the themengruppen controller here. // Place all the styles related to the themengruppen controller here.
// They will automatically be included in application.css. // They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/ // You can use Sass (SCSS) here: http://sass-lang.com/
div.themengruppe
{padding:10px;
margin:2px;
border-radius: 10px;
min-width:13em;
border: #91B4FF solid 0px;
height: 90%
}
a.themengruppe:hover
{
box-shadow: 1px 1px 2px 2px lightgray;
}
a.themengruppe div.sticker
{ {
width: 90%;
border-radius: 5px;
text-align: center;
padding: 5px; padding: 5px;
display:block; margin:auto;
}
div.sticker-red
{ border:solid red;
}
div.sticker-yellow
{ background: yellow;
} }

View File

@@ -17,6 +17,19 @@
* require 'neuigkeiten' * require 'neuigkeiten'
*/ */
// Colorshema #0A64A4 // Colorshema #0A64A4
$color_schema_1: #006599;
$color_schema_2: #630CE8;
$color_schema_3: #FF0021;
$color_schema_4: #E8820C;
$color_schema_5: #FFF30D;
$color_schema_1_dark: darken($color_schema_1, 10%);
$color_schema_2_dark: darken($color_schema_2, 10%);
$color_schema_3_dark: darken($color_schema_3, 10%);
$color_schema_4_dark: darken($color_schema_4, 10%);
$color_schema_5_dark: darken($color_schema_5, 10%);
$color_prim: #7070a0; $color_prim: #7070a0;
$color_prim_light: lighten($color_prim ,10%); $color_prim_light: lighten($color_prim ,10%);
$color_prim_vlight: lighten($color_prim ,30%); $color_prim_vlight: lighten($color_prim ,30%);

View File

@@ -11,21 +11,40 @@
* *
*= require_self *= require_self
* require_tree . * require_tree .
*= require blueimp-gallery-all
*= require jquery.fileupload-ui *= require jquery.fileupload-ui
*= require jquery.datetimepicker
*= require jquery.ui.dialog
*= require jquery.ui.autocomplete
*= require jquery.ui.progressbar
*= require jquery.ui.tabs
* require 'bootstrap' * require 'bootstrap'
* require 'neuigkeiten' * require 'neuigkeiten'
*/ */
// Colorshema #0A64A4
$color_prim: #071672; $color_schema_1: #006599;
$color_schema_2: #630CE8;
$color_schema_3: #FF0021;
$color_schema_4: #E8820C;
$color_schema_5: #FFF30D;
$color_schema_1_dark: darken($color_schema_1, 10%);
$color_schema_2_dark: darken($color_schema_2, 10%);
$color_schema_3_dark: darken($color_schema_3, 10%);
$color_schema_4_dark: darken($color_schema_4, 10%);
$color_schema_5_dark: darken($color_schema_5, 10%);
$color_prim: $color_schema_1_dark; // #006599; //071672;
$color_prim_light: lighten($color_prim ,10%); $color_prim_light: lighten($color_prim ,10%);
$color_prim_vlight: lighten($color_prim ,30%); $color_prim_vlight: lighten($color_prim ,30%);
$color_prim_dark: darken($color_prim ,10%); $color_prim_dark: darken($color_prim ,10%);
$color_prim_vdark: darken($color_prim ,30%); $color_prim_vdark: darken($color_prim ,30%);
$color_cont: FFDB73; $color_cont: $color_schema_3;
$color_cont_light:FFDB73; $color_cont_light:lighten($color_cont ,10%);
$linkColor: $color_prim; $linkColor: $color_prim;
$linkColorHover: $color_schema_1;
$white: #FFFFFF; $white: #FFFFFF;
$bodyBackground: #EEE; $bodyBackground: #EEE;
@@ -36,7 +55,7 @@ $bodyBackground: #EEE;
$navbarBackground: #EEE;//$color_prim; $navbarBackground: #EEE;//$color_prim;
$navbarText: $color_prim; $navbarText: $color_prim;
$navbarLinkColor: $color_prim; $navbarLinkColor: $color_prim;
$navbarLinkColorHover: $color_prim_dark; $navbarLinkColorHover: $color_schema_1;
$dropdownLinkColor: black; $dropdownLinkColor: black;
$navbar-default-brand-color: black; $navbar-default-brand-color: black;
$navbarBrandColor:black; $navbarBrandColor:black;
@@ -45,7 +64,7 @@ $navbarBrandColor:black;
$navbarBackgroundHighlight: #EEE; $navbarBackgroundHighlight: #EEE;
//$navbarBackgroundHighlight:#FFFFFF; //$navbarBackgroundHighlight:#FFFFFF;
$navbarLinkBackgroundHover:#FFBE00;
$navbarLinkBackgroundHover: darken($navbarBackground,10%); $navbarLinkBackgroundHover: darken($navbarBackground,10%);
@@ -58,19 +77,17 @@ $sansFontFamily: Helvetica, Arial;
@import 'bootstrap/image-gallery'; @import 'bootstrap/image-gallery';
@import 'font-awesome'; @import 'font-awesome';
@import 'neuigkeiten'; @import 'neuigkeiten';
@import 'themengruppen';
div.header { div.header {
display: block; display: block;
// background: url('../../../../header1.png') no-repeat; // background: url('../../../../header1.png') no-repeat;
// background-color:white;// $color_prim; // background-color:white;// $color_prim;
// background-position: right; // background-position: right;
vertical-align:middle;
float:left; float:left;
color:#000; color:#000;
padding-left:87px;
padding-top:0px; padding-top:0px;
overflow:visible; overflow:visible;
height:45px; height:45px;
margin-bottom: 0 px margin-bottom: 0 px
@@ -90,13 +107,17 @@ border-bottom: $color_prim solid 3px;
} }
div.headerrow { div.headerrow {
} }
$contentdiv-background:none; $contentdiv-background:none;
$navbar-li-minwidth: 0; $navbar-li-minwidth: 0;
$box-border: lightgray solid 1px; $box-border: #ccc solid 1px;
$box-border-radius:0px; $box-border-radius:0px;
$box-background: white; $box-background: white;
@import 'layout'; @import 'layout';
@import 'linkboxes';
@import 'calendars'; @import 'calendars';
@import 'formtastic-bootstrap'

View File

@@ -0,0 +1,61 @@
ul.linkbox-list
{
max-width:70em;
margin-left:auto;
margin-right:auto;
}
a.linkbox, div.contentbox
{
display:block;
padding:5px;
border-radius:$box-border-radius;
border: $box-border;
background: $box-background;
}
a.linkbox:hover{ box-shadow: 1px 1px 2px 2px lightgray; }
a.linkbox.color-1 { color:$color_schema_1; }
a.linkbox.color-2 { color:$color_schema_2; }
a.linkbox.color-3 { color:$color_schema_3; }
a.linkbox.color-4 { color:$color_schema_4;}
a.linkbox.color-5 { color:$color_schema_5;}
a.color-1-dark { color:$color_schema_1_dark; }
a.color-2-dark { color:$color_schema_2_dark; }
a.color-3-dark { color:$color_schema_3_dark;}
a.color-4-dark { color:$color_schema_4_dark;}
a.color-5-dark { color:$color_schema_5_dark;}
a.color-1-dark:hover { color:$color_schema_1; }
a.color-2-dark:hover { color:$color_schema_2; }
a.color-3-dark:hover { color:$color_schema_3; }
a.color-4-dark:hover { color:$color_schema_4; }
a.color-5-dark:hover { color:$color_schema_5; }
a.linkbox li { }
ul.linkbox-list li {
margin-bottom:10px;
}
ul.linklist {
max-width:100%;
padding:0;
margin:5px;
}
ul.linklist li {
list-style:none;
margin-bottom:2px;
}
ul.linklist li a i{
vertical-align:middle;
margin-right:6px;
font-size:2em;}
span.linklist a {
padding:5px;
border-radius:$box-border-radius;
border: $box-border;
background: $box-background;
display:block;
float:left;
}

View File

@@ -0,0 +1,163 @@
/* This is the main file for theme "blue2"
*/
/*
* This is a manifest file that'll be compiled into application.css, which will include all the files
* listed below.
*
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
*
* You're free to add application-wide styles to this file and they'll appear at the top of the
* compiled file, but it's generally better to create a new file per style scope.
*
*= require_self
* require_tree .
*= require jquery.fileupload-ui
*= require jquery.datetimepicker
*= require jquery.ui.dialog
*= require jquery.ui.tabs
*= require jquery.ui.progressbar
* require 'bootstrap'
* require 'neuigkeiten'
*/
$color_schema_1: #006599;
$color_schema_2: #630CE8;
$color_schema_3: #FF0021;
$color_schema_4: #E8820C;
$color_schema_5: #FFF30D;
$color_schema_1_dark: darken($color_schema_1, 10%);
$color_schema_2_dark: darken($color_schema_2, 10%);
$color_schema_3_dark: darken($color_schema_3, 10%);
$color_schema_4_dark: darken($color_schema_4, 10%);
$color_schema_5_dark: darken($color_schema_5, 10%);
$color_prim: $color_schema_1_dark; // #006599; //071672;
$color_prim_light: lighten($color_prim ,10%);
$color_prim_vlight: lighten($color_prim ,30%);
$color_prim_dark: darken($color_prim ,10%);
$color_prim_vdark: darken($color_prim ,30%);
$color_cont: $color_schema_3;
$color_cont_light:lighten($color_cont ,10%);
$linkColor: $color_prim;
$linkColorHover: $color_schema_1;
$white: #FFFFFF;
$bodyBackground: #FFF; //#FEFEFE;
$navbarBackground: #FFF; //$color_prim;
$navbarText: $color_prim;
$navbarLinkColor: $color_prim;
$navbarLinkColorHover: $color_schema_1;
$dropdownLinkColor: black;
$navbar-default-brand-color: black;
$navbarBrandColor:black;
$navbarBackgroundHighlight: #FFF;
//$navbarBackgroundHighlight:#FFFFFF;
$navbarLinkBackgroundHover: darken($navbarBackground,10%);
$infoBackground:#65A5D1;
$infoText:#03406A;
$sansFontFamily: Helvetica, Arial;
@import 'bootstrap';
@import 'bootstrap-responsive';
@import 'bootstrap/image-gallery';
@import 'font-awesome';
@import 'neuigkeiten';
@import 'themengruppen';
div.header {
display: block;
// background: url('../../../../header1.png') no-repeat;
// background-color:white;// $color_prim;
// background-position: right;
vertical-align:middle;
float:left;
color:#000;
padding-top:0px;
overflow:visible;
height:45px;
margin-bottom: 0 px
}
div.header_span {
background:white
}
div.header h1 {
padding:0;
margin:4px;
font-size:20px;
line-height:32px;
}
div.header img {
//top:2px;
//position:relative;
}
div.navbar {
border-bottom: $color_prim solid 3px;
}
div.headerrow {
}
$contentdiv-background:rgba(255,255,255,1) ;
#contentdiv {
padding:7px;
}
$navbar-li-minwidth: 0;
$box-border: lightgray solid 1px;
$box-border-radius:6px;
$box-background: white;
@import 'layout';
@import 'calendars';
@import 'formtastic-bootstrap';
@import 'linkboxes';
@import 'extra';
body {
background: #FCFCFC; //#EFEFEF;
background-size:100%;
}
ul.linklist_block a.linkbox
{
max-width:100%;
padding:0;
margin:5px;
width: 6em;
text-align:center;
}
ul.linklist_block a.linkbox:hover
{background:lighten($color_schema_1,40%);
}
ul.linklist_block li
{text-decoration: none;
list-style:none;
margin-bottom:2px;
float:left;
}
ul.linklist_block li a i{
display:block;
vertical-align:middle;
margin-right:6px;
font-size:5em;
line-height:70px;
}
ul.linklist_block { clear:left; float:none;}

View File

@@ -0,0 +1,11 @@
div.content-column {
max-width:100%;
}
div.content-wrap {
margin-left:auto;
margin-right:auto;
}
a.linkbox, div.contentbox
{
border-color: lightgray; //$color-schema-1
}

View File

@@ -0,0 +1,142 @@
ul.linkbox-list
{
max-width:70em;
margin-left:auto;
margin-right:auto;
}
ul.linkbox-list > li {
margin-bottom:0px;
}
ul.linkbox-list > li:first-child a.linkbox {
border-top-left-radius:$box-border-radius;
border-top-right-radius:$box-border-radius;
border: $box-border;
}
ul.linkbox-list > li:last-child a.linkbox {
border-bottom-left-radius:$box-border-radius;
border-bottom-right-radius:$box-border-radius;
}
ul.linkbox-list > li a.linkbox {
border-radius: 0;
border-top: none;
}
ul.linkbox-list > li a.linkbox:hover {
z-index:2000
}
a.linkbox, div.contentbox
{
display:block;
padding:5px;
border-radius:$box-border-radius;
border: $box-border;
background: $box-background;
}
a.linkbox:hover{ box-shadow: 1px 1px 2px 2px lightgray; }
a.linkbox.color-1 { color:$color_schema_1; }
a.linkbox.color-2 { color:$color_schema_2; }
a.linkbox.color-3 { color:$color_schema_3; }
a.linkbox.color-4 { color:$color_schema_4;}
a.linkbox.color-5 { color:$color_schema_5;}
a.color-1-dark { color:$color_schema_1_dark; }
a.color-2-dark { color:$color_schema_2_dark; }
a.color-3-dark { color:$color_schema_3_dark;}
a.color-4-dark { color:$color_schema_4_dark;}
a.color-5-dark { color:$color_schema_5_dark;}
a.color-1-dark:hover { color:$color_schema_1; }
a.color-2-dark:hover { color:$color_schema_2; }
a.color-3-dark:hover { color:$color_schema_3; }
a.color-4-dark:hover { color:$color_schema_4; }
a.color-5-dark:hover { color:$color_schema_5; }
a.linkbox li { }
ul.linklist {
max-width:100%;
padding:0;
margin:5px;
}
ul.linklist li {
list-style:none;
}
ul.linklist li a i{
vertical-align:middle;
margin-right:6px;
font-size:2em;}
ul.linklist > li a.linkbox {
border-radius: 0;
border: $box-border;
/* border-color:white;*/
padding-top: 7px;
margin-bottom:0px;
margin-top:0px;
/* border-bottom: $box-border;
border-top: $box-border;
*/
border-color:white;
/* border-bottom-color:white; */
}
ul.linklist > li a.linkbox:hover {
border: $box-border;
border-top: $box-border;
box-shadow: none;
border-color: black;
background: #FCFCFC;
/* margin: 0;
margin-bottom:0px;*/
}
ul.linklist > li:first-child a.linkbox {}
ul.linklist > li:last-child a.linkbox {
}
ul.linklist > li:first-child a.linkbox {
border-top-left-radius:$box-border-radius;
border-top-right-radius:$box-border-radius;
/* border-top:$box-border; */
margin-top:0px;
}
ul.linklist > li:last-child a.linkbox {
border-bottom-left-radius:$box-border-radius;
border-bottom-right-radius:$box-border-radius;
/* border-bottom:$box-border;*/
margin-bottom:0px;
}
ul.linklist {
border-radius: $box-border-radius;
border: $box-border;
/* box-shadow: 0px 0px 1px 1px lightgray;*/
}
span.linklist li a {
padding:5px;
border: $box-border;
background: $box-background;
display:block;
float:left;
}

View File

@@ -16,6 +16,18 @@
* require 'neuigkeiten' * require 'neuigkeiten'
*/ */
$color_schema_1: #006599;
$color_schema_2: #630CE8;
$color_schema_3: #FF0021;
$color_schema_4: #E8820C;
$color_schema_5: #FFF30D;
$color_schema_1_dark: darken($color_schema_1, 10%);
$color_schema_2_dark: darken($color_schema_2, 10%);
$color_schema_3_dark: darken($color_schema_3, 10%);
$color_schema_4_dark: darken($color_schema_4, 10%);
$color_schema_5_dark: darken($color_schema_5, 10%);
// Colorshema #0A64A4 // Colorshema #0A64A4
$color_prim: #071672; $color_prim: #071672;
$color_prim_light: lighten($color_prim ,10%); $color_prim_light: lighten($color_prim ,10%);
@@ -77,7 +89,7 @@ $sansFontFamily: cmunrm, Helvetica, Arial;
@import 'neuigkeiten'; @import 'neuigkeiten';
@import 'fetlogo'; @import 'fetlogo';
#menudiv { #menudiv {
font-family: ayuma2yk;
} }
div.header { div.header {

View File

@@ -17,6 +17,20 @@
* require 'neuigkeiten' * require 'neuigkeiten'
*/ */
$color_schema_1: #006599;
$color_schema_2: #630CE8;
$color_schema_3: #FF0021;
$color_schema_4: #E8820C;
$color_schema_5: #FFF30D;
$color_schema_1_dark: darken($color_schema_1, 30%);
$color_schema_2_dark: darken($color_schema_2, 30%);
$color_schema_3_dark: darken($color_schema_3, 30%);
$color_schema_4_dark: darken($color_schema_4, 30%);
$color_schema_5_dark: darken($color_schema_5, 30%);
$color_prim: #0A64A4; $color_prim: #0A64A4;
$color_prim_light: #0B65A5; $color_prim_light: #0B65A5;
$color_prim_vlight: #2B85C5; $color_prim_vlight: #2B85C5;
@@ -74,3 +88,4 @@ $box-border-radius:8px;
$box-background: white; $box-background: white;
@import 'layout'; @import 'layout';
@import 'calendars'; @import 'calendars';
@import 'tinymce';

View File

@@ -0,0 +1,22 @@
i.mce-i-fa {
font: 400 17px/1 FontAwesome;
padding: 0;
vertical-align: middle;
speak: none;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
margin-left: -2px;
padding-right: 2px
}
i.fa-red { color:red; }
.mc-important {
color: red;
font-weight:bold;
text-align: center;
}
div.article {
border: thin dotted black;
}
@import 'flatfeticon1'

View File

@@ -1,27 +1,76 @@
class ApplicationController < ActionController::Base class ApplicationController < ActionController::Base
protect_from_forgery protect_from_forgery
before_filter :set_i18n_locale_from_params before_filter :set_i18n_locale_from_params
protected protected
theme :get_theme theme :get_theme
def set_i18n_locale_from_params def set_i18n_locale_from_params
if params[:locale] if params[:locale]
if I18n.available_locales.include?(params[:locale].to_sym) if I18n.available_locales.include?(params[:locale].to_sym)
I18n.locale=params[:locale].to_sym session[:locale] = params[:locale]
else else
flash.now[:notice]= "#{params[:locale]} translation not available" flash.now[:notice]= "#{params[:locale]} translation not available"
logger.error flash.now[:notice] logger.error flash.now[:notice]
end end
end end
http_header=request.env['HTTP_ACCEPT_LANGUAGE']
unless http_header.nil?
ht= http_header.scan(/^de|en/).first
else
ht=nil
end
I18n.locale = session[:locale] || ht || I18n.default_locale
session[:locale] = I18n.locale
end
def after_sign_in_path_for(resource)
sign_in_url = new_user_session_path(:only_path => false, :protocol => 'http')
if request.referer == sign_in_url
super
else
stored_location_for(resource) || root_path
end
end
rescue_from CanCan::AccessDenied do |exception|
if user_signed_in?
flash[:error] = "Not authorized to view this page"
session[:user_return_to] = nil
respond_to do |format|
format.html {redirect_to root_url}
format.js {render text:"alert(\"Not authorized to do this\");", status: 401}
end
else
flash[:error] = "You must first login to view this page"
session[:user_return_to] = request.url
return redirect_to "/users/sign_in"
end
end end
def get_theme def get_theme
if ThemesForRails.available_theme_names.include?(params[:theme]) u=current_user
params[:theme] if ! u.try(:preferredtheme).nil? and ThemesForRails.available_theme_names.include?(u.preferredtheme)
u.preferredtheme
else else
"blue1" "blue1"
end end
end
def current_ability
@current_ability ||= Ability.new(current_user, request, params[:key])
end end
def default_url_options def default_url_options
{locale: I18n.locale, theme: theme_name, ansicht: nil} {locale: nil, theme: nil , ansicht: nil} # I18n.locale
end end
end end

View File

@@ -3,7 +3,7 @@ class AttachmentsController < ApplicationController
# GET /attachments.json # GET /attachments.json
load_and_authorize_resource load_and_authorize_resource
def index def index
@attachments = Attachment.all # @attachments = Attachment.all
respond_to do |format| respond_to do |format|
format.html # index.html.erb format.html # index.html.erb
@@ -11,19 +11,43 @@ class AttachmentsController < ApplicationController
end end
end end
# GET /attachments/1 # GET
# GET /attachments/1.json # sets the titlepic flag for one attachment for one parent object
def set_titlepic
@attachment = Attachment.find(params[:id])
if @attachment.image? # if attachment is an Image set flag
@attachment.parent.attachments.update_all("flag_titlepic=0")
@attachment.flag_titlepic=true
@attachment.save
end
respond_to do |format|
format.html {
redirect_to @attachment}
format.js {
@parent=@attachment.parent
@attachments=@parent.attachments
render :refresh_list
}
end
end
# GET refresh_list
# refresh the attachment list for a parent object
def refresh_list
@parent = params[:parent_type].constantize.find(params[:parent_id])
@attachments=@parent.attachments
respond_to do |format|
format.js
end
end
#get /attachments/ID
def show def show
@attachment = Attachment.find(params[:id]) @attachment = Attachment.find(params[:id])
respond_to do |format| respond_to do |format|
format.html # show.html.erb format.html # show.html.erb
format.json { render json: @attachment }
end end
end end
# GET /attachments/new # GET /attachments/new
# GET /attachments/new.json
def new def new
@attachment = Attachment.new @attachment = Attachment.new
@thema = Thema.find(params[:thema_id]) @thema = Thema.find(params[:thema_id])
@@ -51,8 +75,6 @@ class AttachmentsController < ApplicationController
@attachment.thema = @thema @attachment.thema = @thema
@attachment.name=@attachment.datei.filename @attachment.name=@attachment.datei.filename
@action="create" @action="create"
# logger.info "sdf" # logger.info "sdf"
respond_to do |format| respond_to do |format|
if @attachment.save if @attachment.save
@@ -77,11 +99,11 @@ class AttachmentsController < ApplicationController
# PUT /attachments/1.json # PUT /attachments/1.json
def update def update
@attachment = Attachment.find(params[:id]) @attachment = Attachment.find(params[:id])
@thema = @attachment.thema @parent= @attachment.parent
respond_to do |format| respond_to do |format|
if @attachment.update_attributes(params[:attachment]) if @attachment.update_attributes(params[:attachment])
format.html { redirect_to @thema, notice: 'Attachment was successfully updated.' } format.html { redirect_to @parent, notice: 'Attachment was successfully updated.' }
format.json { head :no_content } format.json { head :no_content }
format.js {@attachment=Attachment.new; render action:"create"} format.js {@attachment=Attachment.new; render action:"create"}
else else

View File

@@ -1,14 +1,19 @@
class BeispieleController < ApplicationController class BeispieleController < ApplicationController
# GET /beispiele # GET /beispiele
# GET /beispiele.json
load_and_authorize_resource
def index
@beispiele = Beispiel.all
respond_to do |format| load_and_authorize_resource
format.html # index.html.erb include LikeVoteable
format.json { render json: @beispiele } acts_as_flagable
end def index
# unless params[:lva_id].nil?
# @beispiele= Lva.find(params[:lva_id]).beispiele.accessible_by(current_ability, :show)
# else
# @beispiele = Beispiel.accessible_by(current_ability, :show)
# end
# respond_to do |format|
# format.html # index.html.erb
# format.json { render json: @beispiele }
# end
end end
# GET /beispiele/1 # GET /beispiele/1
@@ -16,7 +21,10 @@ class BeispieleController < ApplicationController
def show def show
# @lva = params([:lva]) unless params([:lva]).nil? # @lva = params([:lva]) unless params([:lva]).nil?
@beispiel = Beispiel.find(params[:id]) @beispiel = Beispiel.find(params[:id])
redirect_to @beispiel.lva respond_to do |format|
format.html { redirect_to lva_path(@beispiel.lva , show_comments: params[:show_comments])}
format.js
end
end end
# GET /beispiele/new # GET /beispiele/new
@@ -24,6 +32,7 @@ class BeispieleController < ApplicationController
def new def new
@beispiel = Beispiel.new @beispiel = Beispiel.new
@beispiel.lva = Lva.find_by_id(params[:lva_id]) @beispiel.lva = Lva.find_by_id(params[:lva_id])
@beispiel.flag_delete=false
@backlink = @beispiel.lva.nil? ? root_url : lva_path(@beispiel.lva) @backlink = @beispiel.lva.nil? ? root_url : lva_path(@beispiel.lva)
respond_to do |format| respond_to do |format|
format.html # new.html.erb format.html # new.html.erb
@@ -31,6 +40,23 @@ class BeispieleController < ApplicationController
end end
end end
def set_lecturer
@beispiel = Beispiel.find(params[:id])
@beispiel.lecturer = Lecturer.find(params[:beispiel][:lecturer_id])
@beispiel.save
if @beispiel.save
format.html { redirect_to @backlink, notice: 'Beispiel was successfully updated.' }
format.js {render text: "alert(\"updated\");"}
format.json { head :no_content }
else
format.html { render action: "edit" }
format.js
format.json { render json: @beispiel.errors, status: :unprocessable_entity }
end
end
# GET /beispiele/1/edit # GET /beispiele/1/edit
def edit def edit
@beispiel = Beispiel.find(params[:id]) @beispiel = Beispiel.find(params[:id])
@@ -42,17 +68,19 @@ class BeispieleController < ApplicationController
logger.info "Creating Beispiel..." logger.info "Creating Beispiel..."
@lva = Lva.find_by_id(params[:lva_id]) @lva = Lva.find_by_id(params[:lva_id])
params.delete(:lva_id) params.delete(:lva_id)
params[:beispiel][:flag_delete]=false
@beispiel = Beispiel.new(params[:beispiel]) @beispiel = Beispiel.new(params[:beispiel])
@beispiel.lva=@lva @beispiel.flag_delete=false
logger.info "New Beispiel: #{params.inspect}" logger.info "New Beispiel: #{params.inspect}"
# @backlink = @beispiel.lva.nil? ? root_url : lva_path(@beispiel.lva)
@beispiel.name=@beispiel.beispieldatei.filename @beispiel.name=@beispiel.beispieldatei.filename
logger.info "New Beispiel: #{@beispiel.attributes.inspect}" logger.info "New Beispiel: #{@beispiel.attributes.inspect}"
@beispiel.datum=Time.now
respond_to do |format|
respond_to do |format|
unless @lva.nil?
@beispiel.lva=@lva
@beispiel.datum=Time.now
if @beispiel.save if @beispiel.save
format.html { format.html {
render :json => [@beispiel.to_jq_upload].to_json, render :json => [@beispiel.to_jq_upload].to_json,
@@ -66,6 +94,18 @@ class BeispieleController < ApplicationController
format.html { render action: "new" } format.html { render action: "new" }
format.json { render json: @beispiel.errors, status: :unprocessable_entity } format.json { render json: @beispiel.errors, status: :unprocessable_entity }
end end
else
if @beispiel.update_attributes(params[:beispiel])
@backlink = Lva.find(@beispiel.lva)
format.html { redirect_to @backlink, notice: 'Beispiel was successfully uploaded.'}
format.json { head :no_content }
else
format.html { render action: "new" }
format.json { render json: @beispiel.errors, status: :unprocessable_entity }
end
end
end end
end end
@@ -75,10 +115,13 @@ class BeispieleController < ApplicationController
@beispiel = Beispiel.find(params[:id]) @beispiel = Beispiel.find(params[:id])
@beispiel.name=@beispiel.beispieldatei.to_s.split('/').last @beispiel.name=@beispiel.beispieldatei.to_s.split('/').last
@backlink = @beispiel.lva.nil? ? root_url : lva_path(@beispiel.lva) @backlink = @beispiel.lva.nil? ? root_url : lva_path(@beispiel.lva)
params[:beispiel].delete :beispieldatei
params[:beispiel].delete :beispieldatei_cache
@lva = @beispiel.lva @lva = @beispiel.lva
respond_to do |format| respond_to do |format|
if @beispiel.update_attributes(params[:beispiel]) if @beispiel.update_attributes(params[:beispiel])
format.html { redirect_to @backlink, notice: 'Beispiel was successfully updated.' } format.html { redirect_to @backlink, notice: 'Beispiel was successfully updated.' }
format.js {render action: "show"}
format.json { head :no_content } format.json { head :no_content }
else else
format.html { render action: "edit" } format.html { render action: "edit" }

View File

@@ -3,12 +3,13 @@ class CalendarsController < ApplicationController
# GET /calendars.json # GET /calendars.json
load_and_authorize_resource load_and_authorize_resource
def index def index
@calendars = Calendar.all @calendars = Calendar.accessible_by(current_ability,:show)
@calentries = Calentry.all @calentries =@calendars.map{|c| c.calentries }.flatten
respond_to do |format| respond_to do |format|
format.html # index.html.erb format.html # index.html.erb
format.json { render json: @calendars } format.json { render json: @calendars }
format.ics
end end
end end
@@ -37,6 +38,11 @@ class CalendarsController < ApplicationController
# GET /calendars/1/edit # GET /calendars/1/edit
def edit def edit
@calendar = Calendar.find(params[:id]) @calendar = Calendar.find(params[:id])
respond_to do |format|
format.html # new.html.erb
format.js
end
end end
# POST /calendars # POST /calendars

View File

@@ -2,14 +2,13 @@ class CalentriesController < ApplicationController
# GET /calentries # GET /calentries
# GET /calentries.json # GET /calentries.json
load_and_authorize_resource load_and_authorize_resource
# def index def index
# @calentries = Calentry.all
# respond_to do |format|
# format.html # index.html.erb respond_to do |format|
# format.json { render json: @calentries } format.html {redirect_to rubriken_path}
# end end
# end end
# GET /calentries/1 # GET /calentries/1
# GET /calentries/1.json # GET /calentries/1.json
@@ -25,36 +24,43 @@ class CalentriesController < ApplicationController
# GET /calentries/new # GET /calentries/new
# GET /calentries/new.json # GET /calentries/new.json
# def new def new
# @calentry = Calentry.new @calentry = Calentry.new
@calentry.object=params[:object_type].constantize.find(params[:object_id])
# respond_to do |format| @calentry.typ=1
# format.html # new.html.erb respond_to do |format|
# format.json { render json: @calentry } format.html # new.html.erb
# end format.json { render json: @calentry }
# end format.js
end
end
# GET /calentries/1/edit # GET /calentries/1/edit
#def edit def edit
# @calentry = Calentry.find(params[:id]) @calentry = Calentry.find(params[:id])
respond_to do |format|
# end format.html
format.js
end
end
# POST /calentries # POST /calentries
# POST /calentries.json # POST /calentries.json
# def create def create
# @calentry = Calentry.new(params[:calentry]) @calentry = Calentry.new(params[:calentry])
# respond_to do |format| respond_to do |format|
# if @calentry.save if @calentry.save
# format.html { redirect_to @calentry, notice: 'Calentry was successfully created.' } format.html { redirect_to @calentry, notice: 'Calentry was successfully created.' }
# format.json { render json: @calentry, status: :created, location: @calentry } format.json { render json: @calentry, status: :created, location: @calentry }
# else format.js
# format.html { render action: "new" } else
# format.json { render json: @calentry.errors, status: :unprocessable_entity } format.html { render action: "new" }
# end format.json { render json: @calentry.errors, status: :unprocessable_entity }
# end format.js { render action: "new" }
# end end
end
end
# PUT /calentries/1 # PUT /calentries/1
# PUT /calentries/1.json # PUT /calentries/1.json
@@ -65,9 +71,11 @@ class CalentriesController < ApplicationController
if @calentry.update_attributes(params[:calentry]) if @calentry.update_attributes(params[:calentry])
format.html { redirect_to @calentry, notice: 'Calentry was successfully updated.' } format.html { redirect_to @calentry, notice: 'Calentry was successfully updated.' }
format.json { head :no_content } format.json { head :no_content }
format.js
else else
format.html { render action: "edit" } format.html { render action: "edit" }
format.json { render json: @calentry.errors, status: :unprocessable_entity } format.json { render json: @calentry.errors, status: :unprocessable_entity }
format.js { render action: "edit"}
end end
end end
end end
@@ -75,12 +83,16 @@ class CalentriesController < ApplicationController
# DELETE /calentries/1 # DELETE /calentries/1
# DELETE /calentries/1.json # DELETE /calentries/1.json
def destroy def destroy
logger.info("-------------delete------------------")
@calentry = Calentry.find(params[:id]) @calentry = Calentry.find(params[:id])
@calentry_id = params[:id]
@object=@calentry.object
@calentry.destroy @calentry.destroy
respond_to do |format| respond_to do |format|
format.html { redirect_to calentries_url } format.html { redirect_to @object}
format.json { head :no_content } format.json { head :no_content }
format.js
end end
end end
end end

View File

@@ -0,0 +1,100 @@
class CommentsController < ApplicationController
load_and_authorize_resource
before_filter :decode_commentable_type
def index
@commentable=params[:commentable_type].constantize.find(params[:commentable_id]) unless params[:commentable_type].nil? or params[:commentable_id].nil?
if @commentable.nil?
render status: 404
else
@comments=@commentable.comments.order(:created_at).roots.accessible_by(current_ability, :show).page(params[:page]).per(Comment::NUM[params[:commentable_type]]).reverse_order
respond_to do |format|
format.js
end
end
end
def hide
@commentable=params[:commentable_type].constantize.find(params[:commentable_id]) unless params[:commentable_type].nil? or params[:commentable_id].nil?
respond_to do |format|
format.js
end
end
def show
@comment = Comment.find(params[:id])
respond_to do |format|
format.js
format.html {redirect_to @comment.commentable}
end
end
def new
@comment = Comment.new
@comment.commentable=params[:commentable_type].constantize.find(params[:commentable_id]) unless params[:commentable_type].nil? or params[:commentable_id].nil?
authorize! :comment, @comment.commentable
respond_to do |format|
format.js
end
end
# GET /comments/1/edit
def edit
@comment = Comment.find(params[:id])
end
# POST /comments
# POST /comments.json
def create
params_new= params[:comment].select {|i| !["commentable_id", "commentable_type"].include?(i)}
c = params[:comment][:commentable_type].constantize.find(params[:comment][:commentable_id]) unless params[:comment][:commentable_type].nil? or params[:comment][:commentable_id].nil?
authorize! :comment, c
@comment = Comment.build_for(c, current_user,"", params_new)
@commentable=c
if @comment.parent_object.class==Comment
@comments= @comment.parent_object.children
else
@comments=@comment.parent_object.comments.order(:created_at).roots.page(params[:page]).per(Comment::NUM[params[:commentable_type]]).reverse_order
end
respond_to do |format|
if @comment
format.js
else
format.js {render action:"new"}
end
end
end
# PUT /comments/1
# PUT /comments/1.json
def update
params[:comment].select! {|i| !["commentable_id", "commentable_type"].include?(i)}
@comment = Comment.find(params[:id])
@comment.commentable=params[:comment][:commentable_type].constantize.find(params[:comment][:commentable_id]) unless params[:comment][:commentable_type].nil? or params[:comment][:commentable_id].nil?
respond_to do |format|
if @comment.update_attributes(params[:comment])
format.html { redirect_to @comment.commentable, notice: 'Comment was successfully updated.' }
else
format.html { render action: "edit" }
end
end
end
# DELETE /comments/1
# DELETE /comments/1.json
def destroy
@comment = Comment.find(params[:id])
@commentable=@comment.commentable
@comment.destroy
@comments=@commentable.comments.order(:created_at).roots.page(params[:page]).per(Comment::NUM[params[:commentable_type]]).reverse_order
respond_to do |format|
format.js
end
end
private
def decode_commentable_type
params[:commentable_type].gsub!("_","::") unless params[:commentable_type].nil?
end
end

View File

@@ -4,4 +4,6 @@ class ConfigController < ApplicationController
end end
def choose_contact_topics
end
end end

View File

@@ -0,0 +1,36 @@
class CrawlerController < ApplicationController
def index
authorize! :doadmin, User
@crawlobjs=Crawlobject.where(:objtype=>5).order(:published_at).reverse_order
@crawlobjs_etit=Crawlobject.where(:objtype=>6).order(:published_at).reverse_order
end
def load_attachments
authorize! :doadmin, User
c = Crawlobject.find(params[:id])
if c.has_attachments?
c.load_attachments
end
respond_to do |format|
format.html {redirect_to c.something}
format.js
end
end
def move_to_news
authorize! :doadmin, User
co=Crawlobject.find(params[:id])
if co.objtype == 5 || co.objtype==6
co.move_to_neuigkeit(User.find(Rails.configuration.crawlconfig[co.objtype]["user_id"]), Rubrik.find(Rails.configuration.crawlconfig[co.objtype]["rubrik_id"]))
redirect_to co.something
end
end
def do_crawl_news
Crawlobject.crawl_news(5)
Crawlobject.crawl_news(6)
redirect_to action: :index
end
end

View File

@@ -0,0 +1,174 @@
class DocumentsController < ApplicationController
# require('etherpad-lite')
load_and_authorize_resource
def index
respond_to do |format|
format.html {redirect_to rubriken_path}
end
end
def new
@document=Document.new
@parent=params[:parent_type].constantize.find(params[:parent_id])
@document.parent=@parent
@document.typ = 1
respond_to do |format|
format.js
end
end
def edit
@document = Document.find(params[:id])
@parent=@document.parent
respond_to do |format|
format.js
format.html
end
end
def sanitize
@document = Document.find(params[:id])
@document.sanitize
@parent=@document.parent
render :edit
end
def show
@document = Document.find(params[:id])
respond_to do |format|
format.pdf { send_file @document.create_pdf.path }
format.html
end
end
def dump_to_etherpad
@document = Document.find(params[:id])
@document.dump_to_etherpad
@document.save
# author = ether.author('author_1')
# pad=group.pad(@document.etherpadkey)
# pad.html='<div>'+@document.text+'</div>'
redirect_to action: :show
end
def read_from_etherpad
@document = Document.find(params[:id])
@document.read_from_etherpad
@document.save
render :show
end
def write_etherpad
@document = Document.find(params[:id])
ether=Document.ether
author = Document.ether.author("fetsite_"+current_user.uid, :name => current_user.text)
session[:ep_sessions]={} if session[:ep_sessions].nil?
group=@document.ep_group
sess = session[:ep_sessions][group.id] ? ether.get_session(session[:ep_sessions][group.id]) : group.create_session(author, 300)
if sess.expired?
sess.delete
sess = group.create_session(author, 300)
end
session[:ep_sessions][group.id] = sess.id
# Set the EtherpadLite session cookie. This will automatically be picked up by the jQuery plugin's iframe.
cookies[:sessionID] = {value: sess.id.to_s, domain: %w(.fet.at), expires: 5.hour.from_now}
#cookies[:sessionID] = {:value => sess.id}
cookies[:sessionID]= {value: sess.id, expires: 5.hour.from_now}
# cookies[:sdf]=sess.id
# pad=ether.pad(@document.etherpadkey)
# redirect_to "http://www.fet.at/etherpad/p/"+@document.ep_pad.id
#render :write
end
def write
@document = Document.find(params[:id])
if @document.is_etherpad? && params[:versionid].nil?
redirect_to action: :write_etherpad
else
unless params[:versionid].nil?
v=@document.versions.find(params[:versionid])
if v.reify.nil?
v=v.next
end
@document=v.reify
end
@parent=@document.parent
respond_to do |format|
format.html {render :edit}
end
end
end
def create
@document = Document.new(params[:document])
@parent=@document.parent
respond_to do |format|
if @document.save
# format.html { redirect_to @document, notice: 'Document was successfully created.' }
#format.json { render json: @document, status: :created, location: @document }
format.js
else
# format.html { render action: "new" }
# format.json { render json: @document.errors, status: :unprocessable_entity }
format.js { render action: "new" }
end
end
end
def update
@document = Document.find(params[:id])
@parent=@document.parent
respond_to do |format|
if @document.update_attributes(params[:document])
format.html { redirect_to @document, notice: 'Document was successfully updated.' }
format.json { head :no_content }
format.js
else
# format.html { render action: "edit" }
# format.json { render json: @document.errors, status: :unprocessable_entity }
format.js { render action: "edit"}
end
end
end
def destroy
logger.info("-------------delete------------------")
@document = Document.find(params[:id])
@parent=@document.parent
@document_id = params[:id]
@document.destroy
respond_to do |format|
#format.html { redirect_to @object}
#format.json { head :no_content }
format.js
end
end
def search
unless params['query'].nil? || params['query'].empty?
@results = Document.search do
fulltext params['query'] do
fields :name, :text, :meeting
highlight :text,:name,:meeting
end
end
@res=[]
@results.results.each do |r|
@res << r if can?(:show,r)
end
end
respond_to do |format|
format.html { redirect_to action: :intern}
format.js
end
end
end

View File

@@ -0,0 +1,22 @@
class EmailsController < ApplicationController
before_filter :authorize
def index
end
def daily_reminder
ActionMailer::Base.default_url_options[:host] = request.host_with_port
@mail =NewsMailer.daily_reminder(current_user.id)
if params[:send]
usr=User.where(:flag_getemails => true)
usr.each do |u|
NewsMailer.daily_reminder(current_user.id).deliver
end
end
render layout: false
end
protected
def authorize
authorize! :emails, User
end
end

View File

@@ -7,18 +7,20 @@ class FetprofilesController < ApplicationController
@fetprofiles = Fetprofile.active.order(:vorname,:nachname) @fetprofiles = Fetprofile.active.order(:vorname,:nachname)
@fetprofiles = Fetprofile.order(:vorname,:nachname) if params[:filter]== "all" @fetprofiles = Fetprofile.order(:vorname,:nachname) if params[:filter]== "all"
@fetprofiles = Fetprofile.where(:active=>false).order(:vorname,:nachname) if params[:filter]== "notactive" @fetprofiles = Fetprofile.where(:active=>false).order(:nachname,:vorname) if params[:filter]== "notactive"
@gremientabs = Gremium.tabs @gremientabs = Gremium.tabs
@toolbar_elements << {:hicon=>'icon-plus', :text=> I18n.t('profile.new_profile'),:path => new_fetprofile_path(@fetprofile) } if can? :new, @fetprofile
respond_to do |format| respond_to do |format|
format.html # index.html.erb format.html # index.html.erb
end end
end end
def internlist def internlist
@fetprofiles = Fetprofile.order(:vorname,:nachname) @fetprofiles = Fetprofile.order(:vorname,:nachname)
end end
# GET /fetprofiles/1 # GET /fetprofiles/1
# GET /fetprofiles/1.json # GET /fetprofiles/1.json
def show def show
@@ -87,7 +89,18 @@ class FetprofilesController < ApplicationController
respond_to do |format| respond_to do |format|
if @fetprofile.update_attributes(params[:fetprofile]) if @fetprofile.update_attributes(params[:fetprofile])
format.html { redirect_to @fetprofile, notice: 'Fetprofile was successfully updated.' } format.html {
unless params[:button]=="continue" || params[:commit]=="continue"
redirect_to @fetprofile, notice: 'profile was successfully updated.'
else
@memberships=@fetprofile.memberships.order(:typ)
@memberships<< Membership.new
@memberships<< Membership.new
@memberships<< Membership.new
render action: "edit", notice: 'profile was successfully updated.'
end
}
format.json { head :no_content } format.json { head :no_content }
else else
@memberships=@fetprofile.memberships.order(:typ) @memberships=@fetprofile.memberships.order(:typ)

View File

@@ -1,5 +1,6 @@
class FotosController < ApplicationController class FotosController < ApplicationController
before_filter {@toolbar_elements=[]} before_filter {@toolbar_elements=[]}
load_and_authorize_resource
# GET /fotos # GET /fotos
# GET /fotos.json # GET /fotos.json
def index def index
@@ -15,9 +16,22 @@ class FotosController < ApplicationController
# GET /fotos/1.json # GET /fotos/1.json
def show def show
@foto = Foto.find(params[:id]) @foto = Foto.find(params[:id])
@gallery=@foto.gallery
@openfotoid=@foto.id
@pppage=params[:pppage].to_i % 4
@pppage_array = [ 25 , 50 , 100, 10000]
@page = params[:page].nil? ? 1 : params[:page].to_i
@fotos_p = @gallery.fotos.page(@page).per(@pppage_array[@pppage])
@fotos_n = @gallery.fotos- @fotos_p
respond_to do |format| respond_to do |format|
format.html # show.html.erb format.html {
if params[:plain]
render "show", layout: false
else
render "galleries/show" #controller: :galleries, action: :show #gallery_path(@foto.gallery,:params=>{fotoid: @foto.id})
end
}
format.json { render json: @foto } format.json { render json: @foto }
end end
end end
@@ -87,10 +101,11 @@ class FotosController < ApplicationController
# DELETE /fotos/1.json # DELETE /fotos/1.json
def destroy def destroy
@foto = Foto.find(params[:id]) @foto = Foto.find(params[:id])
gallery = @foto.gallery_id
@foto.destroy @foto.destroy
respond_to do |format| respond_to do |format|
format.html { redirect_to galleries_url } format.html { redirect_to gallery_path(gallery) }
format.json { head :no_content } format.json { head :no_content }
end end
end end

View File

@@ -6,7 +6,7 @@ class GalleriesController < ApplicationController
# GET /galleries.json # GET /galleries.json
def index def index
@galleries = Gallery.all @galleries = Gallery.all
@toolbar_elements << {:hicon => 'icon-plus', :text => I18n.t('fotos.new-gallery'), :path => new_gallery_path } @toolbar_elements << {:hicon => 'icon-plus', :text => I18n.t('fotos.new-gallery'), :path => new_gallery_path } if can? :new, Gallery
respond_to do |format| respond_to do |format|
format.html # index.html.erb format.html # index.html.erb
@@ -19,25 +19,57 @@ class GalleriesController < ApplicationController
def show def show
@gallery = Gallery.find(params[:id]) @gallery = Gallery.find(params[:id])
@pppage_array = [ 25 , 50 , 100 ] #defines number & size of picture chunks @pppage_array = [ 25 , 50 , 100, 10000] #defines number & size of picture chunks
@pppage = 0 #starting index of pppage_array @pppage = 0 #starting index of pppage_array
if params[:pppage].to_i <= 2 && params[:pppage].to_i >= 0 if !params[:pppage].nil? && params[:pppage].to_i <= 3 && params[:pppage].to_i >= 0
@pppage = params[:pppage].to_i @pppage = params[:pppage].to_i
end end
@page = params[:page].nil? ? 1 : params[:page].to_i @page = params[:page].nil? ? 1 : params[:page].to_i
# @fotos = Foto.where(:gallery_id => params[:id]).limit(@pppage_array[@pppage]).offset(@pppage_array[@pppage]*(@page-1)) # @fotos = Foto.where(:gallery_id => params[:id]).limit(@pppage_array[@pppage]).offset(@pppage_array[@pppage]*(@page-1))
@fotos = Foto.where(:gallery_id => params[:id]) @fotos = Foto.where(:gallery_id => params[:id])
unless params[:fotoid].nil?
foto_ind = @fotos.find_index(Foto.find(params[:fotoid]))
# @page=(@fotos.count/foto_ind).to_i+1
@openfotoid=params[:fotoid]
else
@openfotoid=0
end
if @fotos.nil? || @fotos.empty?
@fotos_p = []
@fotos_n = []
@pages = 1
else
if @pppage_array[@pppage] != "all"
@fotos_p = @fotos.page(@page).per(@pppage_array[@pppage])
@fotos_n = @fotos- @fotos_p
@foto_ind = @fotos.find_index(@fotos_p.first)
@fotos_n = @fotos_n.rotate(@foto_ind)
@pages = (Foto.where(:gallery_id => params[:id]).count/(@pppage_array[@pppage])+1) @pages = (Foto.where(:gallery_id => params[:id]).count/(@pppage_array[@pppage])+1)
@showind=[] else
@showind.fill(0,@pppage_array[@pppage]){ |i| i+ @pppage_array[@pppage]*(@page-1)} # Hier ausrechnen welche angezeigt werden sollen @fotos_p = @fotos
@toolbar_elements << {:hicon=>'icon-plus', :text=> I18n.t('fotos.new-fotos'), :path=>new_gallery_foto_path(@gallery)} @fotos_n = []
@toolbar_elements << {:hicon=>'icon-pencil', :text => I18n.t('common.edit'), :path=>edit_gallery_path(@gallery)} @pages = 1
end
end
# Hier ausrechnen welche angezeigt werden sollen
@toolbar_elements << {:hicon=>'icon-plus', :text=> I18n.t('fotos.new-fotos'), :path=>new_gallery_foto_path(@gallery)} if can? :create, @gallery
@toolbar_elements << {:hicon=>'icon-pencil', :text => I18n.t('common.edit'), :path=>edit_gallery_path(@gallery)} if can? :edit, @gallery
@toolbar_elements << {:hicon=>'icon-arrow-left', :text=>I18n.t('common.back'), :path=>galleries_path()} @toolbar_elements << {:hicon=>'icon-arrow-left', :text=>I18n.t('common.back'), :path=>galleries_path()}
@toolbar_elements << {:hicon => 'icon-remove-circle', :text => I18n.t('common.delete'), :path => gallery_path(@gallery),:confirm=>'Sure?', :method=>:delete} if can? :delete, Gallery
respond_to do |format| respond_to do |format|
format.html # show.html.erb format.html {
if @fotos.nil? || @fotos.empty?
redirect_to new_gallery_foto_path(@gallery)
end
}
format.json { render json: @gallery } format.json { render json: @gallery }
end end
end end
@@ -56,6 +88,7 @@ class GalleriesController < ApplicationController
# GET /galleries/1/edit # GET /galleries/1/edit
def edit def edit
@gallery = Gallery.find(params[:id]) @gallery = Gallery.find(params[:id])
@fotos_old = @gallery.fotos
end end
# POST /galleries # POST /galleries
@@ -81,6 +114,10 @@ class GalleriesController < ApplicationController
@foto = Foto.new @foto = Foto.new
respond_to do |format| respond_to do |format|
if @gallery.update_attributes(params[:gallery]) if @gallery.update_attributes(params[:gallery])
Foto.where(:gallery_id=>nil).each do |tbd|
tbd.destroy
end
format.html { redirect_to @gallery, notice: 'Gallery was successfully updated.' } format.html { redirect_to @gallery, notice: 'Gallery was successfully updated.' }
format.json { head :no_content } format.json { head :no_content }
else else

View File

@@ -33,8 +33,8 @@ class GremienController < ApplicationController
def show def show
@gremium = Gremium.find(params[:id]) @gremium = Gremium.find(params[:id])
@gremientabs=Gremium.tabs @gremientabs=Gremium.tabs
@memberships=@gremium.memberships.active.includes(:fetprofile).order(:typ,"fetprofiles.vorname","fetprofiles.nachname") @memberships=@gremium.memberships.visible_in_gremium
@nlinks = @gremium.nlinks.page(params[:page]).per(5)
respond_to do |format| respond_to do |format|
format.html # show.html.erb format.html # show.html.erb
format.json { render json: @gremium } format.json { render json: @gremium }
@@ -85,7 +85,17 @@ class GremienController < ApplicationController
respond_to do |format| respond_to do |format|
if @gremium.update_attributes(params[:gremium]) if @gremium.update_attributes(params[:gremium])
format.html { redirect_to @gremium, notice: 'Gremium was successfully updated.' } format.html {
unless params[:button]=="continue" || params[:commit]=="continue"
redirect_to @gremium, notice: 'Gremium was successfully updated.'
else
@memberships=@gremium.memberships.order(:typ)
@memberships<< Membership.new
@memberships<< Membership.new
@memberships<< Membership.new
render action: "edit", notice: 'gremium was successfully updated.'
end
}
format.json { head :no_content } format.json { head :no_content }
else else
format.html { render action: "edit" } format.html { render action: "edit" }
@@ -95,7 +105,8 @@ class GremienController < ApplicationController
end end
# DELETE /gremien/1 # DELETE /gremien/1
# DELETE /gremien/1.json #
#
def destroy def destroy
@gremium = Gremium.find(params[:id]) @gremium = Gremium.find(params[:id])
@gremium.destroy @gremium.destroy

View File

@@ -1,18 +1,60 @@
class HomeController < ApplicationController class HomeController < ApplicationController
def index def index
@beispiele = Beispiel.last([Beispiel.count, 3].min) @beispiele = Beispiel.last([Beispiel.count, 3].min)
@neuigkeiten = Neuigkeit.recent @neuigkeiten = Neuigkeit.accessible_by(current_ability, :show).limit(10)
if Thema.count>0
t=YAML.load_file("#{::Rails.root.to_s}/config/start_topic.yml")
@rubriken= Rubrik.accessible_by(current_ability, :show)
params[:month]= Date.today.month if params[:month].nil?
params[:year]= Date.today.year if params[:year].nil?
@calentries= (@rubriken.map {|r| r.calendar}).collect(&:calentries).flatten.select {|c| c.object !=nil}
@starttopic= @themen = Thema.where(:id=>t).first
else
@starttopic=@themen = nil
end
@stickythemen = Thema.where(:sticky_startpage=>true)
end end
def dev def dev
end
def infoscreen
authorize! :infoscreen, User
@neuigkeiten = Neuigkeit.accessible_by(current_ability, :show).where(flag_infoscreen: true)
render layout: false
end end
def kontakt def kontakt
t=YAML.load_file("#{::Rails.root.to_s}/config/contact_topic.yml")
@themen = Thema.where(:id=>t)
end
def treeview
authorize! :doadmin, User
@themengruppen = Themengruppe.order(:priority).reverse
@themengruppen += Themengruppe.intern.order(:priority).reverse
end end
def intern def intern
authorize! :seeintern, User authorize! :seeintern, User
@neuigkeiten = Neuigkeit.intern.recent @neuigkeiten = Neuigkeit.intern.recent
@themengruppen=Themengruppe.intern @themengruppen=Themengruppe.intern.order(:priority).reverse
end
def admin
authorize! :doadmin, User
t=YAML.load_file("#{::Rails.root.to_s}/config/contact_topic.yml")
@kontaktthemen = Thema.where(:id=>t)
end
def log
authorize! :doadmin, User
lines = params[:lines]
if Rails.env == "production"
@logs = `tail -n #{lines} log/production.log | grep -v 'actionpack\\|railties\\|activesupport\\|::Translation'`
else
@logs = `tail -n #{lines} log/development.log | grep -v 'actionpack\\|railties\\|activesupport\\|::Translation'`
end
end end
def startdev def startdev
render 'setup_fetsite_dev' render 'setup_fetsite_dev'
@@ -20,11 +62,33 @@ class HomeController < ApplicationController
def linksnotimplemented def linksnotimplemented
render 'links_notimplemented' render 'links_notimplemented'
end end
def search def search
unless params['query'].nil? || params['query'].empty? unless params['query'].nil? || params['query'].empty?
@neuigkeiten=Neuigkeit.search(params['query']) @results = Sunspot.search Neuigkeit,Rubrik, Fetprofile, Thema, Themengruppe, Lva, Studium, Modul, Modulgruppe, Gremium, Document do
@fetprofiles = Fetprofile.search(params['query']) fulltext params['query']
@themen=Thema.search(params['query']) end
@neuigkeiten=[];
if can?(:showintern, Neuigkeit)
#@neuigkeiten=Neuigkeit.search(params['query'])
else
# @neuigkeiten =Neuigkeit.search(params['query']).public
end
@res=[]
@results.results.each do |r|
@res << r if can?(:show,r)
end
# @fetprofiles = Fetprofile.search(params['query'])
@fetprofiles=[]
# if can?(:showintern, Neuigkeit)
# @themen=Thema.search(params['query'])
# else
# @themen=Thema.search(params['query']).public
# end
@themen=[]
else else
@neuigkeiten=[] @neuigkeiten=[]
@fetprofiles=[] @fetprofiles=[]
@@ -35,4 +99,22 @@ class HomeController < ApplicationController
format.js format.js
end end
end end
def language
redirect_to :back
rescue ActionController::RedirectBackError
redirect_to :root
end
def choose_contact_topics
authorize! :doadmin, User
t=YAML.load_file("#{::Rails.root.to_s}/config/contact_topic.yml")
unless params[:themen].nil?
t=([t].flatten+params[:themen]).uniq
end
unless params[:rmthema].nil?
t=t-[params[:rmthema]]
end
File.open("config/contact_topic.yml",'w'){|f| f.write(t.to_yaml)}
redirect_to admin_home_index_path
end
end end

View File

@@ -1,7 +1,12 @@
class LvasController < ApplicationController class LvasController < ApplicationController
# GET /lvas # GET /lvas
before_filter :load_toolbar, :only => [:show] require 'zip'
before_filter :load_toolbar, :only => [:verwalten]
load_and_authorize_resource load_and_authorize_resource
before_filter :load_studien
def load_studien
@studien = Studium.accessible_by(current_ability, :show)
end
def index def index
@lvas = Lva.all @lvas = Lva.all
@toolbar_elements=[{:hicon=>'icon-plus-sign',:text =>I18n.t('lva.add'),:path => new_lva_path}] @toolbar_elements=[{:hicon=>'icon-plus-sign',:text =>I18n.t('lva.add'),:path => new_lva_path}]
@@ -9,24 +14,60 @@ class LvasController < ApplicationController
{:hicon=>'icon-list', :text=>I18n.t("modul.list"),:path=>moduls_path}, {:hicon=>'icon-list', :text=>I18n.t("modul.list"),:path=>moduls_path},
{:hicon=>'icon-list', :text=>I18n.t("lva.list"),:path=>lvas_path}] {:hicon=>'icon-list', :text=>I18n.t("lva.list"),:path=>lvas_path}]
end end
def beispiel_sammlung
@lva = Lva.find_by_id(params[:id])
filename = 'beispiel_sammlung_' + @lva.lvanr.to_s + '_' + l(Date.today).to_s + '.zip'
temp_file = Tempfile.new(filename)
begin
Zip::OutputStream.open(temp_file) { |zos| }
Zip::File.open(temp_file.path, Zip::File::CREATE) do |zip|
i=1
@lva.beispiele.each do |bsp|
zip.add(i.to_s + '_' + File.basename(bsp.beispieldatei.current_path), bsp.beispieldatei.current_path)
i = i + 1
end
end
#Read the binary data from the file
zip_data = File.read(temp_file.path)
send_data(zip_data, :type => 'application/zip', :filename => filename)
ensure
#Close and delete the temp file
temp_file.close
temp_file.unlink
end
end
# GET /lvas/1 # GET /lvas/1
def show def show
@lva = Lva.find_by_id(params[:id]) @lva = Lva.find_by_id(params[:id])
@beispiel=Beispiel.new @beispiel=Beispiel.new
@beispiele_all=@lva.beispiele.order(:datum).accessible_by(current_ability, :show)
@beispiele = @lva.beispiele.not_flag_badquality.not_flag_delete.order(:lecturer_id,:datum).accessible_by(current_ability, :show)
@beispiele_badQ = @lva.beispiele.flag_badquality.not_flag_delete.order(:datum).accessible_by(current_ability, :show)
@beispiele_deleted = @lva.beispiele.flag_delete.order(:datum).accessible_by(current_ability, :show)
@toolbar_elements =[]
@toolbar_elements<<{:hicon=>'icon-pencil', :icon=>:pencil,:text =>I18n.t('common.manage'),:path => verwalten_lva_path(@lva)} if can? :verwalten, @lva
@crawlobjects = @lva.crawlobjects.roots.accessible_by(current_ability)
@questions=@lva.questions.accessible_by(current_ability,:show)
end
def verwalten
@lva = Lva.find_by_id(params[:id])
@beispiel=Beispiel.new
@beispiele_all=@lva.beispiele.order(:datum).accessible_by(current_ability, :show)
@beispiele = @lva.beispiele.not_flag_badquality.not_flag_delete.order(:lecturer_id,:datum).accessible_by(current_ability, :show)
@beispiele_badQ = @lva.beispiele.flag_badquality.not_flag_delete.order(:datum).accessible_by(current_ability, :show)
@beispiele_deleted = @lva.beispiele.flag_delete.order(:datum).accessible_by(current_ability, :show)
render :show
end end
# GET /lvas/new
# GET /lvas/new.json
def new def new
@lva = Lva.new @lva = Lva.new
modul=Modul.find_by_id(params[:modul_id]) modul=Modul.find_by_id(params[:modul_id])
@lva.modul<<modul unless modul.nil? # @lva.modul<<modul unless modul.nil? #
end end
# GET /lvas/1/edit
def edit def edit
@lva = Lva.find(params[:id]) @lva = Lva.find(params[:id])
@semester = @lva.modul.map(&:modulgruppen).flatten.map(&:studium).map(&:semester).flatten.uniq @semester = @lva.modul.map(&:modulgruppen).flatten.map(&:studium).map(&:semester).flatten.uniq
@@ -36,13 +77,13 @@ class LvasController < ApplicationController
@lva = Lva.find_by_id(params[:id]) @lva = Lva.find_by_id(params[:id])
@lvatiss = Lva.new @lvatiss = Lva.new
@lvatiss.lvanr=@lva.lvanr @lvatiss.lvanr=@lva.lvanr
@lvatiss.load_tissdata("-2013W") @lvatiss.load_tissdata
end end
def load_tiss def load_tiss
@lva = Lva.find_by_id(params[:id]) @lva = Lva.find_by_id(params[:id])
@lva.load_tissdata("-2013W") @lva.load_tissdata
if @lva.save if @lva.save
redirect_to @lva , notice: 'Lva von TISS geladen.' redirect_to @lva , notice: 'Lva von TISS geladen.'
else else
@@ -77,7 +118,6 @@ class LvasController < ApplicationController
def destroy def destroy
@lva = Lva.find(params[:id]) @lva = Lva.find(params[:id])
@lva.destroy @lva.destroy
respond_to do |format| respond_to do |format|
format.html { redirect_to lvas_url } format.html { redirect_to lvas_url }
end end
@@ -89,11 +129,7 @@ private
@toolbar_elements =[] @toolbar_elements =[]
@toolbar_elements<<{:hicon=>'icon-pencil', :icon=>:pencil,:text =>I18n.t('common.edit'),:path => edit_lva_path(@lva)} if can? :edit, @lva @toolbar_elements<<{:hicon=>'icon-pencil', :icon=>:pencil,:text =>I18n.t('common.edit'),:path => edit_lva_path(@lva)} if can? :edit, @lva
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=>"Tissvergleichladen", :path=> compare_tiss_lva_path(@lva)} if can? :compare_tiss, @lva @toolbar_elements << {:hicon=>'icon-remove-circle', :text=>"Tissvergleichladen", :path=> compare_tiss_lva_path(@lva)} if can? :compare_tiss, @lva
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t('common.delete'), :path=> lva_path(@lva), :method=>:delete, :confirm=>'Sure?' } if can? :delete, @lva @toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t('lva.delete'), :path=> lva_path(@lva), :method=>:delete, :confirm=>t('lva.deletesure') } if can? :delete, @lva
end end
end end

View File

@@ -0,0 +1,140 @@
class MeetingsController < ApplicationController
load_and_authorize_resource
def index
parent=params[:parent_type].constantize.find(params[:parent_id])
unless parent.nil?
#authorize! :show, parent
if params[:filter]=="upcomming"
@meetings=parent.meetings.upcomming
else
@meetings=parent.meetings
end
@parent=parent
end
respond_to do |format|
format.html {redirect_to rubriken_path}
format.js
end
end
def announce
m=Meeting.find(params[:id])
m.create_announcement(current_user)
m.save
@meeting=Meeting.find(params[:id])
respond_to do |format|
format.html {redirect_to m.parent}
format.js {render action: :show}
end
end
def show
m=Meeting.find(params[:id])
respond_to do |format|
format.html {
if can?(:show, m.parent)
redirect_to m.parent
else
if can?(:show, m.neuigkeit) && !m.neuigkeit.nil?
redirect_to m.neuigkeit
else
redirect_to m.parent
end
end
}
format.js
end
end
def new
@meeting=Meeting.new
@meeting.parent=params[:parent_type].constantize.find(params[:parent_id])
@parent=@meeting.parent
@meeting.calentry=Calentry.new
@meeting.calentry.typ = 2
respond_to do |format|
format.js
end
end
def create_protocol
@meeting = Meeting.find(params[:id])
@meeting.create_protocol
@meeting.save
respond_to do |format|
format.js {render action: :show}
end
end
def create_agenda
@meeting = Meeting.find(params[:id])
@meeting.create_agenda
respond_to do |format|
format.js {render action: :show}
end
end
def edit
@meeting = Meeting.find(params[:id])
@parent=@meeting.parent
respond_to do |format|
format.js
end
end
def create
@meeting = Meeting.new(params[:meeting])
@parent=@meeting.parent
#@meeting.assign_attributes(params[:meeting])
respond_to do |format|
if @meeting.save
# format.html { redirect_to @meeting, notice: 'Meeting was successfully created.' }
#format.json { render json: @meeting, status: :created, location: @meeting }
format.js
else
# format.html { render action: "new" }
# format.json { render json: @meeting.errors, status: :unprocessable_entity }
format.js { render action: "new" }
end
end
end
def update
@meeting = Meeting.find(params[:id])
@parent=@meeting.parent
respond_to do |format|
if @meeting.update_attributes(params[:meeting])
format.html { redirect_to @meeting, notice: 'Meeting was successfully updated.' }
format.json { head :no_content }
format.js
else
# format.html
# format.json { render json: @meeting.errors, status: :unprocessable_entity }
format.js { render action: "edit" }
end
end
end
def destroy
logger.info("-------------delete------------------")
@meeting = Meeting.find(params[:id])
@parent=@meeting.parent
@meeting_id = params[:id]
@meeting.destroy
respond_to do |format|
#format.html { redirect_to @object}
#format.json { head :no_content }
format.js
end
end
end

View File

@@ -0,0 +1,76 @@
class MeetingtypsController < ApplicationController
load_and_authorize_resource
def index
@meetingtyps=Meetingtyp.all
end
def show
redirect_to action: :index
end
def edit
@meetingtyp = Meetingtyp.find(params[:id])
end
def new
@meetingtyp=Meetingtyp.new
end
def create_protocol_and_agenda
@meetingtyp = Meetingtyp.find(params[:id])
if @meetingtyp.agenda.nil?
d=Document.new
d.typ=11
d.name="Agendavorlage"
d.save
@meetingtyp.agenda=d
end
if @meetingtyp.protocol.nil?
d=Document.new
d.typ=10
d.name="Protokollvorlage"
d.save
@meetingtyp.protocol=d
end
redirect_to action: :index
end
def create
@meetingtyp = Meetingtyp.new(params[:meetingtyp])
@meetingtyp.assign_attributes(params[:meetingtyp])
respond_to do |format|
if @meetingtyp.save
format.html { redirect_to @meetingtyp, notice: 'Meeting was successfully created.' }
#format.json { render json: @meeting, status: :created, location: @meeting }
format.js
else
format.html { render action: "new" }
# format.json { render json: @meeting.errors, status: :unprocessable_entity }
format.js { render action: "new" }
end
end
end
def update
@meetingtyp = Meetingtyp.find(params[:id])
respond_to do |format|
if @meetingtyp.update_attributes(params[:meetingtyp])
format.html { redirect_to @meetingtyp, notice: 'Meeting was successfully updated.' }
# format.json { head :no_content }
format.js
else
format.html { render action: "edit" }
# format.json { render json: @meeting.errors, status: :unprocessable_entity }
format.js { render action: "edit" }
end
end
end
def destroy
@meetingtyp = Meeting.find(params[:id])
@meetingtyp.destroy
respond_to do |format|
format.html { redirect_to action: :index}
end
end
end

View File

@@ -4,7 +4,13 @@ class ModulgruppenController < ApplicationController
before_filter :load_toolbar_show, :only=>[:show] # Toolbar für show erstellen before_filter :load_toolbar_show, :only=>[:show] # Toolbar für show erstellen
load_and_authorize_resource load_and_authorize_resource
before_filter :load_studien
def load_studien
@studien = Studium.accessible_by(current_ability, :show)
end
def index def index
@studien = Studium.accessible_by(current_ability, :show)
@modulgruppen = Modulgruppe.all @modulgruppen = Modulgruppe.all
if !params[:studium_id].nil? if !params[:studium_id].nil?
@studium=Studium.find(params[:studium_id]) @studium=Studium.find(params[:studium_id])
@@ -16,6 +22,8 @@ class ModulgruppenController < ApplicationController
# GET /modulgruppen/1 # GET /modulgruppen/1
def show def show
@modulgruppe = Modulgruppe.find(params[:id]) @modulgruppe = Modulgruppe.find(params[:id])
@studien = Studium.accessible_by(current_ability, :show)
@studium = Studium.find(@modulgruppe.studium_id) @studium = Studium.find(@modulgruppe.studium_id)
if !params[:studium_id].nil? if !params[:studium_id].nil?
@studium=Studium.find(params[:studium_id]) @studium=Studium.find(params[:studium_id])
@@ -25,6 +33,8 @@ class ModulgruppenController < ApplicationController
# GET /modulgruppen/new # GET /modulgruppen/new
def new def new
@studien = Studium.accessible_by(current_ability, :show)
@modulgruppe = Modulgruppe.new @modulgruppe = Modulgruppe.new
if !params[:studium_id].nil? if !params[:studium_id].nil?
@modulgruppe.studium_id=(params[:studium_id]) @modulgruppe.studium_id=(params[:studium_id])
@@ -39,6 +49,8 @@ class ModulgruppenController < ApplicationController
# GET /modulgruppen/1/edit # GET /modulgruppen/1/edit
def edit def edit
@studien = Studium.accessible_by(current_ability, :show)
@modulgruppe = Modulgruppe.find(params[:id]) @modulgruppe = Modulgruppe.find(params[:id])
if !params[:studium_id].nil? if !params[:studium_id].nil?
@studium=Studium.find(params[:studium_id]) @studium=Studium.find(params[:studium_id])
@@ -97,11 +109,11 @@ class ModulgruppenController < ApplicationController
end end
def load_toolbar_show def load_toolbar_show
@toolbar_elements = [ {:text=>'Zurück', :path=>studium_path(@modulgruppe.studium, :ansicht=>:modulgruppenansicht)}] @toolbar_elements = [ {:text=>'Zurück', :path=>studium_path(@modulgruppe.studium, :ansicht=>:modulgruppenansicht)}]
@toolbar_elements << {:hicon=>'icon-plus-sign', :text=>I18n.t('modulgruppe.addmodule'), :path=>new_bulk_moduls_path(:modulgruppen_id=>@modulgruppe.id)} @toolbar_elements << {:hicon=>'icon-plus-sign', :text=>I18n.t('modulgruppe.addmodule'), :path=>new_bulk_moduls_path(:modulgruppen_id=>@modulgruppe.id)} if can? :new ,Modul
@toolbar_elements << {:hicon=>'icon-plus-sign', :text=>I18n.t('modulgruppe.addmodul'), :path=>new_modul_path(:modulgruppen_id=>@modulgruppe.id)} @toolbar_elements << {:hicon=>'icon-plus-sign', :text=>I18n.t('modulgruppe.addmodul'), :path=>new_modul_path(:modulgruppen_id=>@modulgruppe.id)} if can? :new, Modul
@toolbar_elements << {:hicon=>'icon-pencil', :text=>I18n.t('modulgruppe.edit'), :path=>edit_modulgruppe_path(@modulgruppe)} @toolbar_elements << {:hicon=>'icon-pencil', :text=>I18n.t('modulgruppe.edit'), :path=>edit_modulgruppe_path(@modulgruppe)} if can? :edit, @modulgruppe
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=> I18n.t('common.delete'),:path => modulgruppe_path(@modulgruppe, :ansicht=>:modulgruppenansicht), :method=> :delete,:confirm=>'Sure?' } @toolbar_elements << {:hicon=>'icon-remove-circle', :text=> I18n.t('common.delete'),:path => modulgruppe_path(@modulgruppe, :ansicht=>:modulgruppenansicht), :method=> :delete,:confirm=>'Sure?' }if can? :delete, Modulgruppe
end end

View File

@@ -7,6 +7,10 @@ class ModulsController < ApplicationController
before_filter :load_toolbar_index, :only=>[:index] # Toolbar für index erstellen before_filter :load_toolbar_index, :only=>[:index] # Toolbar für index erstellen
load_and_authorize_resource load_and_authorize_resource
before_filter :load_studien
def load_studien
@studien = Studium.accessible_by(current_ability, :show)
end
def index def index
@moduls = Modul.all @moduls = Modul.all
if @moduls if @moduls
@@ -121,13 +125,13 @@ end
def show_tiss def show_tiss
@lvas=[]; @lvas=[];
@semester = @modul.modulgruppen.flatten.map(&:studium).map(&:semester).flatten.uniq @semester = @modul.modulgruppen.flatten.map(&:studium).map(&:semester).uniq
params["lvas"].to_a.each do |l| params["lvas"].to_a.each do |l|
unless l.last["lvanr"].empty? unless l.last["lvanr"].empty?
l=l.last l=l.last
lva=Lva.new lva=Lva.new
lva.lvanr=l["lvanr"] lva.lvanr=l["lvanr"]
lva.load_tissdata("-"+ l["sem"]) lva.load_tissdata
lva.modul<<@modul lva.modul<<@modul
@lvas<<lva # @lvas<<lva #
end end
@@ -175,11 +179,12 @@ end
end end
def load_toolbar_show def load_toolbar_show
@toolbar_elements = [{:hicon=>'icon-plus-sign', :text=>I18n.t("lva.add"), :path=>new_lva_path(:modul_id =>@modul.id)}] @toolbar_elements=[]
@toolbar_elements << {:hicon=>'icon-pencil', :text=>"Lvas bearbeiten", :path=>edit_lvas_modul_path(@modul)} @toolbar_elements << {:hicon=>'icon-plus-sign', :text=>I18n.t("lva.add"), :path=>new_lva_path(:modul_id =>@modul.id)} if can? :new, Lva
@toolbar_elements << {:hicon=>'icon-plus-sign', :text=>"ADD FROM TISS", :path=>load_tiss_modul_path(:modul_id =>@modul.id)} @toolbar_elements << {:hicon=>'icon-pencil', :text=>"Lvas bearbeiten", :path=>edit_lvas_modul_path(@modul)} if can? :edit, Lva
@toolbar_elements << {:hicon=>'icon-pencil', :text=>I18n.t("modul.edit"), :path=>edit_modul_path(@modul)} @toolbar_elements << {:hicon=>'icon-plus-sign', :text=>"ADD FROM TISS", :path=>load_tiss_modul_path(:modul_id =>@modul.id)} if can? :load_tiss, Modul
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t("common.delete"),:path=>@modul , :method=>:delete , :data=>{:confirm =>'Are you sure'}} @toolbar_elements << {:hicon=>'icon-pencil', :text=>I18n.t("modul.edit"), :path=>edit_modul_path(@modul)} if can? :edit, @modul
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t("common.delete"),:path=>@modul , :method=>:delete , :data=>{:confirm =>'Are you sure'}} if can? :delete, @modul
@topbar_elements = [{:hicon=>'icon-list', :text=>I18n.t("modul.list"),:path=>moduls_path}] @topbar_elements = [{:hicon=>'icon-list', :text=>I18n.t("modul.list"),:path=>moduls_path}]
@tb=[] @tb=[]
@@ -188,8 +193,9 @@ end
def load_toolbar_index def load_toolbar_index
@toolbar_elements = [{:hicon=>'icon-plus-sign', :text=>I18n.t("modul.add"), :path=>new_modul_path}] @toolbar_elements = []
@topbar_elements =[{:hicon=>'icon-list', :text=>I18n.t("studien.allestudien"),:path=>studien_path}] @topbar_elements<<{:hicon=>'icon-plus-sign', :text=>I18n.t("modul.add"), :path=>new_modul_path} if can? :new , Modul
@topbar_elements<< {:hicon=>'icon-list', :text=>I18n.t("studien.allestudien"),:path=>studien_path}
@topbar_elements<<{:hicon=>'icon-list', :text=>I18n.t("modul.list"),:path=>moduls_path} @topbar_elements<<{:hicon=>'icon-list', :text=>I18n.t("modul.list"),:path=>moduls_path}
@topbar_elements<<{:hicon=>'icon-list', :text=>I18n.t("lva.list"),:path=>lvas_path} @topbar_elements<<{:hicon=>'icon-list', :text=>I18n.t("lva.list"),:path=>lvas_path}

View File

@@ -1,24 +1,35 @@
# -*- coding: utf-8 -*-
class NeuigkeitenController < ApplicationController class NeuigkeitenController < ApplicationController
before_filter :load_toolbar_elements, :only=>[:show,:find_link] before_filter :load_toolbar_elements, :only=>[:show,:find_link]
before_filter :load_toolbar_elements_edit, :only=>[:edit] before_filter :load_toolbar_elements_edit, :only=>[:edit]
acts_as_flagable
load_and_authorize_resource load_and_authorize_resource
def default_url_options
super
# super.merge({host: request.host_with_port})
end
def show def show
@neuigkeit = Neuigkeit.find(params[:id]) @neuigkeit = Neuigkeit.find(params[:id])
@rubrik = @neuigkeit.rubrik @rubrik = @neuigkeit.rubrik
@questions = @neuigkeit.questions.accessible_by(current_ability,:show)
if can?(:shownonpublic, Rubrik) if can?(:shownonpublic, Rubrik)
@rubriken = Rubrik.all @rubriken = Rubrik.all
else else
@rubriken = Rubrik.where(:public=>true) @rubriken = Rubrik.where(:public=>true)
end end
if !params[:version].nil? if !params[:version].nil? && can?(:showversions, Neuigkeit)
@neuigkeit.assign_attributes(@neuigkeit.translation.versions.reverse[params[:version].to_i].reify.attributes.select{|k,v| @neuigkeit.translated_attribute_names.include? k.to_sym }) @neuigkeit.assign_attributes(@neuigkeit.translation.versions.reverse[params[:version].to_i].reify.attributes.select{|k,v| @neuigkeit.translated_attribute_names.include? k.to_sym })
end end
@calentries1=@neuigkeit.calentries @calentries1=@neuigkeit.calentries
respond_to do |format|
format.html
format.js
end
end end
@@ -49,23 +60,86 @@ class NeuigkeitenController < ApplicationController
@neuigkeit = Neuigkeit.find(params[:id]) @neuigkeit = Neuigkeit.find(params[:id])
@neuigkeit.reverse_publish @neuigkeit.reverse_publish
@neuigkeit.save @neuigkeit.save
@questions = @neuigkeit.questions.accessible_by(current_ability,:show)
if params[:verwalten] if params[:verwalten]
redirect_to verwalten_rubrik_path(@neuigkeit.rubrik) redirect_to verwalten_rubrik_path(@neuigkeit.rubrik)
else
respond_to do |format|
format.html { redirect_to rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit)}
format.js { render partial: "show"}
end end
redirect_to rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit) end
end end
def publish def publish
@neuigkeit = Neuigkeit.find(params[:id]) @neuigkeit = Neuigkeit.find(params[:id])
@neuigkeit.publish @neuigkeit.publish
@neuigkeit.save @neuigkeit.save
@questions = @neuigkeit.questions.accessible_by(current_ability,:show)
if params[:verwalten] if params[:verwalten]
redirect_to verwalten_rubrik_path(@neuigkeit.rubrik) redirect_to verwalten_rubrik_path(@neuigkeit.rubrik)
else
respond_to do |format|
format.html { redirect_to rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit)}
format.js { render partial: "show"}
end end
redirect_to rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit)
end end
end
def publish_to_facebook
@neuigkeit = Neuigkeit.find(params[:id])
unless @neuigkeit.picture.url.nil?
picture_url=URI(root_url)
picture_url.path=@neuigkeit.picture.url(:locale=>nil, :theme=>nil)
end
unless @neuigkeit.published?
redirect_to [@neuigkeit.rubrik,@neuigkeit], notice: 'Neuigkeit muss veröffentlicht sein um sie auf Facebook zu posten.'
else
page=YAML.load_file("#{::Rails.root.to_s}/config/page.yml")
# page.feed!(:access_token=>page.access_token, :message=>@neuigkeit.text_first_words, :name=>@neuigkeit.title, :link=>rubrik_neuigkeit_url(@neuigkeit.rubrik, @neuigkeit)+".html", :picture=>@neuigkeit.picture.url)
page.feed!(:access_token=>page.access_token, :message=>@neuigkeit.text_first_words, :name=>@neuigkeit.title, :link=>rubrik_neuigkeit_url(@neuigkeit.rubrik, @neuigkeit)+".html")# , :picture=>picture_url)
redirect_to [@neuigkeit.rubrik,@neuigkeit], notice: 'Neuigkeit auf Facebook gepostet'
end
end
def mail_to_fet
ActionMailer::Base.default_url_options[:host] = request.host_with_port
@neuigkeit = Neuigkeit.find(params[:id])
authorize! :publish, @neuigkeit
unless @neuigkeit.published?
redirect_to [@neuigkeit.rubrik,@neuigkeit], notice: 'Neuigkeit muss veröffentlicht sein um sie als Mail zu versenden.'
else
NewsMailer.neuigkeit_mail("all@fet.at", params[:id]).deliver
redirect_to [@neuigkeit.rubrik,@neuigkeit], notice: 'Neuigkeit versendet'
end
end
def mail_preview
ActionMailer::Base.default_url_options[:host] = request.host_with_port
@neuigkeit = Neuigkeit.find(params[:id])
@user=current_user
@ability=Ability.new(@user)
@mail = NewsMailer.neuigkeit_mail("all@fet.at", params[:id])
authorize! :publish, @neuigkeit
render layout: false
end
def newsletter_preview
authorize! :publish, Neuigkeit
@neuigkeiten=Neuigkeit.accessible_by(current_ability).where("cache_order<2")
render template: "news_mailer/daily_newsletter", layout: false
end
def edit def edit
@neuigkeit = Neuigkeit.find(params[:id]) @neuigkeit = Neuigkeit.find(params[:id])
@neuigkeit.no_fallbacks=true
@rubrik=@neuigkeit.rubrik
@calentries= @neuigkeit.calentries @calentries= @neuigkeit.calentries
@calentries<< Calentry.new @calentries<< Calentry.new
@@ -80,22 +154,39 @@ class NeuigkeitenController < ApplicationController
end end
@calentries1=@neuigkeit.calentries @calentries1=@neuigkeit.calentries
@nlink_search = Neuigkeit::LINKTYPES.clone nlink_search = Neuigkeit::LINKTYPES.clone
nlink_search.collect!{|t| t.constantize}
# @nlink_search.collect!{|t| t.search(params[:query]).limit(2)}
@results= Sunspot.search nlink_search do
fulltext params[:query]
end
@nlink_search.collect!{|t| t.constantize} respond_to do |format|
@nlink_search.collect!{|t| t.search(params[:query]).limit(2)} format.html { render action:"show" }
format.js
end
@nlink_search.flatten!
render action:"show"
end end
def create_link def create_link
@neuigkeit = Neuigkeit.find(params[:id])
Nlink.create(:link=>params[:link_type].constantize.find(params[:link_id]),:neuigkeit=>Neuigkeit.find(params[:id])) Nlink.create(:link=>params[:link_type].constantize.find(params[:link_id]),:neuigkeit=>Neuigkeit.find(params[:id]))
@nlinks=@neuigkeit.nlinks
redirect_to action:"show" respond_to do |format|
format.html { redirect_to action:"show" }
format.js
end
end
def delete_link
@neuigkeit = Neuigkeit.find(params[:id])
@nlink = @neuigkeit.nlinks.find(params[:nlink_id])
@nlink.destroy
respond_to do |format|
format.html { redirect_to @neuigkeit }
format.js
end
end end
def create def create
@neuigkeit = Neuigkeit.new(params[:neuigkeit]) @neuigkeit = Neuigkeit.new(params[:neuigkeit])
@neuigkeit.author=current_user @neuigkeit.author=current_user
@@ -137,15 +228,24 @@ private
def load_toolbar_elements def load_toolbar_elements
@neuigkeit=Neuigkeit.find(params[:id]) @neuigkeit=Neuigkeit.find(params[:id])
@toolbar_elements=[] @toolbar_elements=[]
@toolbar_elements << {:hicon=>'icon-plus', :text=> I18n.t('neuigkeit.publish'),:path => publish_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=>'Sure?' } if can?(:publish, @neuigkeit) && @neuigkeit.published? actions=[]
@toolbar_elements << {:hicon=>'icon-minus', :text=> I18n.t('neuigkeit.unpublish'),:path => unpublish_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=>'Sure?' } if can?(:unpublish, @neuigkeit) && !@neuigkeit.published? actions << {:hicon=>'icon-plus', :text=> I18n.t('neuigkeit.publish'),:path => publish_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=> I18n.t('neuigkeit.publish_sure') } if can?(:publish, @neuigkeit) && !@neuigkeit.published?
actions << {:hicon=>'ffi1-facebook1', :text=> I18n.t('neuigkeit.publishfb'),:path => publish_to_facebook_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=>I18n.t('neuigkeit.publishfb_sure') } if can?(:publish, @neuigkeit) && @neuigkeit.published?
actions << {:hicon=>'icon-facebook', :text=> I18n.t('neuigkeit.publishfetmail'),:path => mail_to_fet_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=>I18n.t('neuigkeit.publishfetmail_sure') } if can?(:publish, @neuigkeit) && @neuigkeit.published?
actions << {:hicon=>'icon-minus', :text=> I18n.t('neuigkeit.unpublish'),:path => unpublish_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:confirm=> I18n.t('neuigkeit.unpublish_sure') } if can?(:unpublish, @neuigkeit) && @neuigkeit.published?
@toolbar_elements << {:text=>I18n.t('common.edit'),:path=>edit_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:icon=>:pencil} if can? :edit, @neuigkeit.rubrik @toolbar_elements << {:text=>I18n.t('common.edit'),:path=>edit_rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:icon=>:pencil} if can? :edit, @neuigkeit.rubrik
if can?(:showversions, Neuigkeit)
@versions= @neuigkeit.translation.versions.select([:created_at]).reverse @versions= @neuigkeit.translation.versions.select([:created_at]).reverse
@toolbar_elements <<{:path=>rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:method=>:versions,:versions=>@versions} @toolbar_elements <<{:path=>rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit),:method=>:versions,:versions=>@versions}
end
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=> I18n.t('common.delete'),:path => rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit), :method=> :delete,:confirm=>'Sure?' } if can? :delete, @neuigkeit actions << {:hicon=>'icon-remove-circle', :text=> I18n.t('common.delete'),:path => rubrik_neuigkeit_path(@neuigkeit.rubrik,@neuigkeit), :method=> :delete,:confirm=>'Sure?' } if can? :delete, @neuigkeit
@toolbar_elements << {:text => "action", :method => :dropdown, :elements=> actions} unless actions.empty?
end end

View File

@@ -2,42 +2,53 @@ class RubrikenController < ApplicationController
before_filter {@toolbar_elements=[]} before_filter {@toolbar_elements=[]}
load_and_authorize_resource load_and_authorize_resource
def index def index
if can?(:shownonpublic, Rubrik) # if can?(:showintern, Rubrik)
@rubriken = Rubrik.all # @rubriken = Rubrik.all
else # @neuigkeiten = Neuigkeit.page(params[:page]).per(3)
@rubriken = Rubrik.where(:public=>true) # else
# @rubriken = Rubrik.where(:public=>true)
# @neuigkeiten = Neuigkeit.public.published.page(params[:page]).per(3)
# end
params[:month]= Date.today.month if params[:month].nil?
params[:year]= Date.today.year if params[:year].nil?
@rubriken= Rubrik.accessible_by(current_ability, :show)
@neuigkeiten = Neuigkeit.accessible_by(current_ability, :list).page(params[:page]).per(3)
@calentries= (@rubriken.map {|r| r.calendar.calentries.of_month(Date.new(params[:year],params[:month],1))}).flatten.select {|c| c.object !=nil}
respond_to do |format|
format.html
format.js {render action: :show}
end end
@neuigkeiten = @rubriken.collect(&:neuigkeiten).map(&:recent).flatten
@calentries= @rubriken.collect(&:calentries).flatten
end end
def intern def intern
end end
def show def show
if can?(:shownonpublic, Rubrik) @rubriken= Rubrik.accessible_by(current_ability, :show)
@rubriken = Rubrik.all
else
@rubriken = Rubrik.where(:public=>true)
end
@rubrik = Rubrik.find(params[:id]) @rubrik = Rubrik.find(params[:id])
@moderatoren=User.with_role(:newsmoderator,@rubrik) @moderatoren=User.with_role(:newsmoderator,@rubrik)
@calentries= @rubrik.calentries
if can?(:showunpublished, Neuigkeit) params[:month]= Date.today.month if params[:month].nil?
@neuigkeiten = @rubrik.neuigkeiten params[:year]= Date.today.year if params[:year].nil?
else
@neuigkeiten = @rubrik.neuigkeiten.published @calentries= @rubrik.calendar.calentries.select {|c| c.object !=nil}
end @neuigkeiten = @rubrik.neuigkeiten.accessible_by(current_ability, :list).page(params[:page]).per(3)
@toolbar_elements << {:text=>I18n.t('neuigkeit.new.title'), :path=> new_rubrik_neuigkeit_path(@rubrik),:hicon=>'icon-plus-sign'} if can? :verwalten, @rubrik @toolbar_elements << {:text=>I18n.t('neuigkeit.new.title'), :path=> new_rubrik_neuigkeit_path(@rubrik),:hicon=>'icon-plus-sign'} if can? :verwalten, @rubrik
@toolbar_elements << {:text=>I18n.t('common.verwalten'), :path=>verwalten_rubrik_path(@rubrik),:icon=>:pencil} if can? :verwalten, @rubrik @toolbar_elements << {:text=>I18n.t('common.verwalten'), :path=>verwalten_rubrik_path(@rubrik),:icon=>:pencil} if can? :verwalten, @rubrik
respond_to do |format|
format.html
format.js
end
end end
def new def new
@rubrik = Rubrik.new @rubrik = Rubrik.new
end end
def edit def edit

View File

@@ -3,17 +3,17 @@ class StudienController < ApplicationController
# before_filter :authorize, :only => :verwalten # before_filter :authorize, :only => :verwalten
load_and_authorize_resource load_and_authorize_resource
def index def index
@studien = Studium.all @studien = Studium.accessible_by(current_ability, :show)
@topbar_elements=[{:hicon=>'icon-list', :text=>I18n.t("studien.allestudien"),:path=>studien_path}] @topbar_elements=[{:hicon=>'icon-list', :text=>I18n.t("studien.allestudien"),:path=>studien_path}]
@topbar_elements<<{:hicon=>'icon-list', :text=>I18n.t("modul.list"),:path=>moduls_path} @topbar_elements<<{:hicon=>'icon-list', :text=>I18n.t("modul.list"),:path=>moduls_path}
@topbar_elements<<{:hicon=>'icon-list', :text=>I18n.t("lva.list"),:path=>lvas_path} @topbar_elements<<{:hicon=>'icon-list', :text=>I18n.t("lva.list"),:path=>lvas_path}
@toolbar_elements<<{:icon =>:plus, :hicon=>'icon-plus-sign', :text=> I18n.t('studien.new') ,:path=>new_studium_path } @toolbar_elements<<{:icon =>:plus, :hicon=>'icon-plus-sign', :text=> I18n.t('studien.new') ,:path=>new_studium_path } if can? :new, Studium
# @toolbar_elements<<{:text=> I18n.t('modulgruppe.show.link') ,:path=>modulgruppen_path } # @toolbar_elements<<{:text=> I18n.t('modulgruppe.show.link') ,:path=>modulgruppen_path }
end end
def show def show
@studium= Studium.find(params[:id]) @studium= Studium.find(params[:id])
@studien = Studium.accessible_by(current_ability, :show)
@studienphasen=[] @studienphasen=[]
[1, 2 ,3].each do |ph| [1, 2 ,3].each do |ph|
modulgruppen_phase=@studium.modulgruppen.where(:phase=>ph) modulgruppen_phase=@studium.modulgruppen.where(:phase=>ph)
@@ -31,14 +31,14 @@ class StudienController < ApplicationController
end end
@studienphasen << {:modulgruppen=>modulgruppen, :phase => ph}.merge(opts) @studienphasen << {:modulgruppen=>modulgruppen, :phase => ph}.merge(opts)
end end
@toolbar_elements=[]
@toolbar_elements=[{:icon=>:plus, :hicon =>'icon-plus-sign' ,:text=> I18n.t('studien.new') , :path => new_studium_path(@studium) }, @toolbar_elements<<{:icon=>:pencil, :hicon=>'icon-pencil',:text =>I18n.t('common.edit'),:path => edit_studium_path(@studium)} if can? :edit, Studium
{:icon=>:pencil, :hicon=>'icon-pencil',:text =>I18n.t('common.edit'),:path => edit_studium_path(@studium)}, @toolbar_elements<<{:icon=>:pencil, :hicon=>'icon-pencil',:text =>I18n.t('lva.editlvas'),:path => edit_lvas_studium_path(@studium)} if can? :edit_lvas, Studium
{:icon=>:pencil, :hicon=>'icon-pencil',:text =>I18n.t('common.edit'),:path => edit_lvas_studium_path(@studium)}, @toolbar_elements<<{:hicon=>'icon-remove-circle', :text=> I18n.t('common.delete'),:path => studium_path(@studium), :method=> :delete,:confirm=>'Sure?' } if can? :delete, Studium
{:hicon=>'icon-remove-circle', :text=> I18n.t('common.delete'),:path => studium_path(@studium), :method=> :delete,:confirm=>'Sure?' }] @toolbar_modulgruppen =[]
@toolbar_modulgruppen << {:hicon=>'icon-plus-sign', :text=> I18n.t('modulgruppe.new'), :path=>new_studium_modulgruppe_path(@studium)} if can? :new, Modulgruppe
@toolbar_modulgruppen =[ {:hicon=>'icon-plus-sign', :text=> I18n.t('modulgruppe.new'), :path=>new_studium_modulgruppe_path(@studium)}, #@toolbar_modulgruppen << {:hicon=>'icon-list', :text => I18n.t('modulgruppe.list'), :path=>modulgruppen_path} if can? :index, Modulgruppe
{:hicon=>'icon-list', :text => I18n.t('modulgruppe.list'), :path=>modulgruppen_path}]
case params[:ansicht] case params[:ansicht]
when 'semesteransicht' when 'semesteransicht'
when 'infoansicht' when 'infoansicht'
@@ -49,18 +49,21 @@ class StudienController < ApplicationController
end end
def new def new
@studien = Studium.accessible_by(current_ability, :show)
@studium = Studium.new @studium = Studium.new
end end
def edit def edit
@studien = Studium.accessible_by(current_ability, :show)
@studium = Studium.find(params[:id]) @studium = Studium.find(params[:id])
@toolbar_elements=[{:text => I18n.t('studien.anzeigen') , :path => url_for(@studium) }] @toolbar_elements=[{:text => I18n.t('studien.anzeigen') , :path => url_for(@studium) }]
@toolbar_elements<<{:text =>I18n.t('studien.allestudien'),:path=>studien_path(@studium)} @toolbar_elements<<{:text =>I18n.t('studien.allestudien'),:path=>studien_path(@studium)}
end end
def edit_lvas def edit_lvas
@studien = Studium.accessible_by(current_ability, :show)
@studium = Studium.find(params[:id]) @studium = Studium.find(params[:id])
@lvas=@studium.lvas @lvas=@studium.lvas.uniq
@semester=@studium.semester @semester=@studium.semester
@toolbar_elements=[{:text => I18n.t('studien.anzeigen') , :path => url_for(@studium) }] @toolbar_elements=[{:text => I18n.t('studien.anzeigen') , :path => url_for(@studium) }]
@toolbar_elements<<{:text =>I18n.t('studien.allestudien'),:path=>studien_path(@studium)} @toolbar_elements<<{:text =>I18n.t('studien.allestudien'),:path=>studien_path(@studium)}
@@ -83,6 +86,7 @@ class StudienController < ApplicationController
def update def update
@studium = Studium.find(params[:id]) @studium = Studium.find(params[:id])
@studien = Studium.accessible_by(current_ability, :show)
logger.info "params: #{params[:studium].inspect}" logger.info "params: #{params[:studium].inspect}"
if @studium.update_attributes(params[:studium]) if @studium.update_attributes(params[:studium])
if @studium.lvas.map(&:valid?).all? if @studium.lvas.map(&:valid?).all?
@@ -106,7 +110,8 @@ class StudienController < ApplicationController
def verwalten def verwalten
@new_params={:std_verw=>params[:std_verw], :mg_verw=>params[:mg_verw], :m_verw=>params[:m_verw], :lva_verw=>params[:lva_verw], :b_verw=>params[:b_verw], :lec_verw=>params[:lec_verw]} @new_params={:std_verw=>params[:std_verw], :mg_verw=>params[:mg_verw], :m_verw=>params[:m_verw], :lva_verw=>params[:lva_verw], :b_verw=>params[:b_verw], :lec_verw=>params[:lec_verw]}
if @new_params.values.compact.empty? if @new_params.values.compact.empty?
@studien=Studium.all
@modulgruppen=Modulgruppe.all @modulgruppen=Modulgruppe.all
@module=Modul.all @module=Modul.all
@lvas=Lva.all @lvas=Lva.all

View File

@@ -0,0 +1,103 @@
class Survey::ChoicesController < ApplicationController
# GET /survey/choices
# GET /survey/choices.json
load_and_authorize_resource
def index
@survey_choices = Survey::Choice.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @survey_choices }
end
end
# GET /survey/choices/1
# GET /survey/choices/1.json
def show
@survey_choice = Survey::Choice.find(params[:id])
respond_to do |format|
format.html {redirect_to @survey_choice.question}
format.json { render json: @survey_choice }
format.js
end
end
# GET /survey/choices/new
# GET /survey/choices/new.json
def new
@question= Survey::Question.find(params[:question_id])
@choice=Survey::Choice.new
@choice.question=@question
respond_to do |format|
format.js
format.html # new.html.erb
format.json { render json: @survey_choice }
end
end
# GET /survey/choices/1/edit
def edit
@choice = Survey::Choice.find(params[:id])
respond_to do |format|
format.html
format.js
end
end
# POST /survey/choices
# POST /survey/choices.json
include PluginsHelper
def create
@survey_choice = Survey::Choice.new(params[:survey_choice])
@divid = divid_for(@survey_choice)
respond_to do |format|
if @survey_choice.save
format.html { redirect_to @survey_choice, notice: 'Choice was successfully created.' }
format.json { render json: @survey_choice, status: :created, location: @survey_choice }
format.js
else
format.html { render action: "new" }
format.json { render json: @survey_choice.errors, status: :unprocessable_entity }
end
end
end
# PUT /survey/choices/1
# PUT /survey/choices/1.json
def update
@survey_choice = Survey::Choice.find(params[:id])
respond_to do |format|
if @survey_choice.update_attributes(params[:survey_choice])
format.html { redirect_to @survey_choice, notice: 'Choice was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @survey_choice.errors, status: :unprocessable_entity }
5 end
end
end
# DELETE /survey/choices/1
# DELETE /survey/choices/1.json
def destroy
@survey_choice = Survey::Choice.find(params[:id])
if @survey_choice.answers.count>0
redirect_to action: :show
else
@divid = divid_for(@survey_choice)
@survey_choice.destroy
respond_to do |format|
format.html { redirect_to survey_choices_url }
format.json { head :no_content }
format.js
end
end
end
end

View File

@@ -0,0 +1,104 @@
class Survey::QuestionsController < ApplicationController
# GET /survey/questions
# GET /survey/questions.json
load_and_authorize_resource
acts_as_flagable
def index
@survey_questions = Survey::Question.all
respond_to do |format|
format.html # index.html.erb
end
end
def answer
@survey_question = Survey::Question.find(params[:id])
if (params[:key].nil? || params[:key].empty?)
user = current_user
else
k=Key.find_by_uuid(params[:key] )
if k.is_valid && k.typ==3 && k.parent == @survey_question
user = k.user
end
end
@survey_question.do_answer(params[:survey_question][:selected],user)
respond_to do |format|
format.html { redirect_to action: :show}
format.js { render action: :show}
end
end
# GET /survey/questions/1
# GET /survey/questions/1.json
def create_from_template
@template = Survey::Question.find(params[:id])
parent= params[:parent_type].constantize.find(params[:parent_id])
@survey_question = @template.copy_from_template_for(parent)
@survey_question.user=current_user
render action: :show
end
def show
@survey_question = Survey::Question.find(params[:id])
respond_to do |format|
format.html # show.html.erb
end
end
# GET /survey/questions/new
# GET /survey/questions/new.json
def new
@survey_question = Survey::Question.new
@parent=params[:parent_type].constantize.find(params[:parent_id])
@survey_question.parent=@parent
respond_to do |format|
format.html # new.html.erb
end
end
# GET /survey/questions/1/edit
def edit
@survey_question = Survey::Question.find(params[:id])
end
# POST /survey/questions
# POST /survey/questions.json
def create
@survey_question = Survey::Question.new(params[:survey_question])
@survey_question.user=current_user
respond_to do |format|
if @survey_question.save
format.html { redirect_to @survey_question, notice: 'Question was successfully created.' }
else
format.html { render action: "new" }
end
end
end
# PUT /survey/questions/1
# PUT /survey/questions/1.json
def update
@survey_question = Survey::Question.find(params[:id])
@survey_question.user=current_user
@survey_question.save
respond_to do |format|
if @survey_question.update_attributes(params[:survey_question])
format.html { redirect_to @survey_question, notice: 'Question was successfully updated.' }
else
format.html { render action: "edit" }
end
end
end
# DELETE /survey/questions/1
# DELETE /survey/questions/1.json
def destroy
@survey_question = Survey::Question.find(params[:id])
@survey_question.destroy
respond_to do |format|
format.html { redirect_to survey_questions_url }
end
end
end

View File

@@ -1,44 +1,62 @@
class ThemenController < ApplicationController class ThemenController < ApplicationController
# GET /themen # GET /themen
# GET /themen.json # GET /themen.json
load_and_authorize_resource load_and_authorize_resource
def index def index
@themen = Thema.all @themen = Thema.accessible_by(current_ability,:show).where(:isdraft=>false)
@themen_drafts = Thema.accessible_by(current_ability,:show).where(:isdraft=>true)
respond_to do |format| @themen_outdated =Thema.accessible_by(current_ability,:show).outdated
format.html # index.html.erb
format.json { render json: @themen }
end end
end
# GET /themen/1
# GET /themen/1.json
def show def show
@thema = Thema.find(params[:id]) @thema = Thema.find(params[:id])
@fragen=@thema.fragen @fragen=@thema.fragen
@toolbar_elements = [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>"Verwalten", :path=>verwalten_thema_path(@thema)}]
@toolbar_elements = [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('thema.edit'), :path=>edit_thema_path(@thema)}] @toolbar_elements = [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t("thema.manage"), :path=>verwalten_thema_path(@thema)}]
@toolbar_elements << [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('thema.edit'), :path=>edit_thema_path(@thema)}]
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t('thema.remove'), :path=>thema_path(@thema), :method=>:delete, :confirm=>I18n.t('thema.sure')} @toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t('thema.remove'), :path=>thema_path(@thema), :method=>:delete, :confirm=>I18n.t('thema.sure')}
respond_to do |format| respond_to do |format|
format.html { format.html {
redirect_to :controller=>'themengruppen', :id=>@thema.themengruppe.id, :action=>:show, :anchor=> "thema_"+params[:id].to_s # redirect_to :controller=>'themengruppen', :id=>@thema.themengruppe.id, :action=>:show, :anchor=> "thema_"+params[:id].to_s
} }
format.js format.js
end end
end end
def sanitize
require 'sanitize'
@thema = Thema.find(params[:id])
@fragen = @thema.fragen
trans_icons= lambda do |env|
node=env[:node]
node_name=env[:node_name]
return if env[:is_whitelisted] || !node.element?
return unless node_name == 'span'
# return unless node["class"] =~ /.*ffi.*/
Sanitize.node!(node,{:elements=>["span"],:attributes=>{"span"=>["class","style"]},:css=>{:properties=>["color"]}})
{:node_whitelist=>[node]}
end
@thema.text = Sanitize.fragment(@thema.text, {:elements=>['table','tr','td','p','h1','h2','h3','h4','h5','a','th','img','ul','li','i','b','em','pre','code'],:attributes=>{'p'=>['class'],'table'=>['class'],'a'=>['href','data'],'img'=>['src','width','height'],:all=>['class']},:css=>{:properties=>['float']},:transformers=>[trans_icons]})
# # #
# #
# #
#
# @thema.text = @thema.text.sanitize
render :edit
end
def version
@thema = Thema.find(params[:id])
end
def verwalten def verwalten
@thema = Thema.find(params[:id]) @thema = Thema.find(params[:id])
@attachment=Attachment.new @attachment=Attachment.new
@fragen=@thema.fragen @fragen=@thema.fragen
@toolbar_elements = [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>"Verwalten", :path=>verwalten_thema_path(@thema)}]
@toolbar_elements = [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('thema.edit'), :path=>edit_thema_path(@thema)}] @toolbar_elements = [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('thema.edit'), :path=>edit_thema_path(@thema)}]
@toolbar_elements <<{ :hicon=>'icon-leaf', :text=>"Sanitize", :path=>sanitize_thema_path(@thema)}
@toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t('thema.remove'), :path=>thema_path(@thema), :method=>:delete, :confirm=>I18n.t('thema.sure')} @toolbar_elements << {:hicon=>'icon-remove-circle', :text=>I18n.t('thema.remove'), :path=>thema_path(@thema), :method=>:delete, :confirm=>I18n.t('thema.sure')}
end end
@@ -57,13 +75,11 @@ class ThemenController < ApplicationController
# GET /themen/1/edit # GET /themen/1/edit
def edit def edit
@thema = Thema.find(params[:id]) @thema = Thema.find(params[:id])
unless ( @thema.wikiname.nil? || @thema.wikiname.empty? )
redirect_to edit_wiki_path(Wiki.find(@thema.id))
return
end
respond_to do |format| respond_to do |format|
format.html format.html
format.js format.js { @themen= @thema.themengruppe.themen }
end end
end end
@@ -71,20 +87,28 @@ class ThemenController < ApplicationController
# POST /themen.json # POST /themen.json
def create def create
@thema = Thema.new(params[:thema]) @thema = Thema.new(params[:thema])
@themen = @thema.themengruppe.themen.order(:priority).reverse @themen = @thema.themengruppe.themen.order(:priority).reverse
respond_to do |format| respond_to do |format|
if @thema.save if @thema.save
format.html { redirect_to @thema, notice: 'Thema was successfully created.' } @themen = @thema.themengruppe.themen.order(:priority).reverse
format.html { redirect_to @thema, notice: I18n.t("thema.created") }
format.json { render json: @thema, status: :created, location: @thema } format.json { render json: @thema, status: :created, location: @thema }
format.js {render action: "update"} format.js {render action: "update"}
else else
@themen = @thema.themengruppe.themen.order(:priority).reverse
format.html { render action: "new" } format.html { render action: "new" }
format.json { render json: @thema.errors, status: :unprocessable_entity } format.json { render json: @thema.errors, status: :unprocessable_entity }
format.js { render action: "edit" } format.js { render action: "edit" }
end end
end end
end end
def is_updated
@thema = Thema.find(params[:id])
@thema.translation.touch
redirect_to @thema
end
def fragen def fragen
@thema = Thema.find(params[:id]) @thema = Thema.find(params[:id])
@fragen=@thema.fragen @fragen=@thema.fragen
@@ -92,6 +116,13 @@ class ThemenController < ApplicationController
format.js format.js
end end
end end
def documents
@thema = Thema.find(params[:id])
@documents=@thema.documents
respond_to do |format|
format.js
end
end
def attachments def attachments
@thema = Thema.find(params[:id]) @thema = Thema.find(params[:id])
@attachments=@thema.attachments @attachments=@thema.attachments
@@ -105,9 +136,18 @@ class ThemenController < ApplicationController
def update def update
@thema = Thema.find(params[:id]) @thema = Thema.find(params[:id])
@themen = @thema.themengruppe.themen.order(:priority).reverse @themen = @thema.themengruppe.themen.order(:priority).reverse
@thema.assign_attributes(params[:thema])
# @thema.fix_links(request.host_with_port)
respond_to do |format| respond_to do |format|
if @thema.update_attributes(params[:thema]) if @thema.save
format.html { redirect_to @thema, notice: 'Thema was successfully updated.' } format.html {
if params["button"]=="continue"
render action: "edit", notice: I18n.t("thema.updated")
else
redirect_to @thema, notice: I18n.t("thema.updated")
end
}
format.json { head :no_content } format.json { head :no_content }
format.js format.js
else else
@@ -123,7 +163,7 @@ class ThemenController < ApplicationController
def destroy def destroy
@thema = Thema.find(params[:id]) @thema = Thema.find(params[:id])
@thema.destroy @thema.destroy
@themen = @thema.themengruppe.themen.order(:priority).reverse
respond_to do |format| respond_to do |format|
format.html { redirect_to themengruppe_path(@thema.themengruppe) } format.html { redirect_to themengruppe_path(@thema.themengruppe) }
format.json { head :no_content } format.json { head :no_content }

View File

@@ -3,9 +3,10 @@ class ThemengruppenController < ApplicationController
# GET /themengruppen.json # GET /themengruppen.json
load_and_authorize_resource load_and_authorize_resource
def index def index
@themengruppen = Themengruppe.public.order(:priority).reverse @themengruppen = Themengruppe.accessible_by(current_ability, :show).public.includes(:themen)
@toolbar_elements = [{:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('themengruppe.new'), :path=>new_themengruppe_path()}] @toolbar_elements = []
@toolbar_elements = [{:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('common.verwalten'), :path=>verwalten_all_themengruppen_path()}] @toolbar_elements << {:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('themengruppe.new'), :path=>new_themengruppe_path()} if can? :new, Themengruppe
@toolbar_elements << {:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('themengruppe.manage_all'), :path=>verwalten_all_themengruppen_path()} if can? :verwalten_all, Themengruppe
respond_to do |format| respond_to do |format|
format.html # index.html.erb format.html # index.html.erb
@@ -13,7 +14,7 @@ class ThemengruppenController < ApplicationController
end end
end end
def faqs def faqs
@themengruppen = Themengruppe.order("themengruppen.priority").includes(:themen,{themen: :fragen}).order("themen.priority").reverse @themengruppen = Themengruppe.accessible_by(current_ability, :show).order("themengruppen.priority").includes(:themen,{themen: :fragen}).order("themen.priority")
end end
@@ -21,7 +22,7 @@ class ThemengruppenController < ApplicationController
# GET /themengruppen/1.json # GET /themengruppen/1.json
def show def show
@themengruppe = Themengruppe.find(params[:id]) @themengruppe = Themengruppe.find(params[:id])
@themen = @themengruppe.themen.order(:priority).reverse @themen=@themengruppe.themen.accessible_by(current_ability, :show)
@toolbar_elements = [] @toolbar_elements = []
@toolbar_elements << {:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t("themengruppe.manage"), :path=>themengruppe_verwalten_path(@themengruppe)} if can? :edit, @themengruppe @toolbar_elements << {:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t("themengruppe.manage"), :path=>themengruppe_verwalten_path(@themengruppe)} if can? :edit, @themengruppe
@@ -48,19 +49,20 @@ class ThemengruppenController < ApplicationController
@themengruppe = Themengruppe.find(params[:id]) @themengruppe = Themengruppe.find(params[:id])
end end
def verwalten_all def verwalten_all
@themengruppen =Themengruppe.order(:priority).reverse @themengruppen =Themengruppe.public.order(:priority).reverse
@themengruppen_intern =Themengruppe.intern.order(:priority).reverse
@toolbar_elements = [{:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('themengruppe.new'), :path=>new_themengruppe_path()}] @toolbar_elements = [{:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('themengruppe.new'), :path=>new_themengruppe_path()}]
end end
def verwalten def verwalten
@themengruppe = Themengruppe.find(params[:themengruppe_id]) @themengruppe = Themengruppe.find(params[:themengruppe_id])
@themen = @themengruppe.themen.order(:priority).reverse @themen = @themengruppe.themen
@toolbar_elements =[] @toolbar_elements =[]
@toolbar_elements << {:text=>I18n.t('themengruppe.show'), :path=>themengruppe_path(@themengruppe)} if can? :show, @themengruppe
@toolbar_elements << {:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('themengruppe.edit'), :path=>edit_themengruppe_path(@themengruppe)} if can? :edit, @themengruppe @toolbar_elements << {:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('themengruppe.edit'), :path=>edit_themengruppe_path(@themengruppe)} if can? :edit, @themengruppe
@toolbar_elements << {:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('thema.add'), :path=>new_themengruppe_thema_path(@themengruppe)} if can? :new, Themengruppe @toolbar_elements << {:icon=>:plus, :hicon=>'icon-plus-sign', :text=>I18n.t('thema.add'), :path=>new_themengruppe_thema_path(@themengruppe), :remote=>true} if can? :new, Thema
@toolbar_elements << {:hicon=>'icon-remove-circle',:text=>I18n.t('themengruppe.remove'), :path=>themengruppe_path(@themengruppe), :method=>:delete,:confirm=>I18n.t('themengruppe.sure')} if can? :delete, @themengruppe @toolbar_elements << {:hicon=>'icon-remove-circle',:text=>I18n.t('themengruppe.remove'), :path=>themengruppe_path(@themengruppe), :method=>:delete,:confirm=>I18n.t('themengruppe.sure')} if can? :delete, @themengruppe
end end
def sort_themengruppen def sort_themengruppen
@@ -122,9 +124,7 @@ class ThemengruppenController < ApplicationController
format.json { render json: @themengruppe.errors, status: :unprocessable_entity } format.json { render json: @themengruppe.errors, status: :unprocessable_entity }
end end
end end
end end # DELETE /themengruppen/1
# DELETE /themengruppen/1
# DELETE /themengruppen/1.json # DELETE /themengruppen/1.json
def destroy def destroy
@themengruppe = Themengruppe.find(params[:id]) @themengruppe = Themengruppe.find(params[:id])

View File

@@ -10,6 +10,8 @@ end
def facebook def facebook
# You need to implement the method below in your model (e.g. app/models/user.rb) # You need to implement the method below in your model (e.g. app/models/user.rb)
@user = User.find_for_facebook_oauth(request.env["omniauth.auth"], current_user) @user = User.find_for_facebook_oauth(request.env["omniauth.auth"], current_user)
data=request.env["omniauth.auth"]
session[:fbuser_access_token]=data.credentials.token
if @user if @user
sign_in_and_redirect @user, :event => :authentication #this will throw if @user is not activated sign_in_and_redirect @user, :event => :authentication #this will throw if @user is not activated

View File

@@ -1,8 +1,22 @@
class UsersController < ApplicationController class UsersController < ApplicationController
def index def index
authorize!(:index,User)
@users = User.all @users = User.all
end end
def show
@user=User.find(params[:id])
authorize!(:show, @user)
end
def set_preferred_theme
@user=User.find(params[:id])
authorize!(:set_preferred_theme, @user)
@user.preferredtheme=params[:theme]
@user.save
redirect_to root_url
end
def add_role def add_role
authorize!(:add_role, User)
@user= User.find(params[:id]) @user= User.find(params[:id])
if (params[:role]=="fetuser" && can?(:addfetuser,User)) if (params[:role]=="fetuser" && can?(:addfetuser,User))
@user.add_role(params[:role]) @user.add_role(params[:role])
@@ -12,9 +26,24 @@ class UsersController < ApplicationController
end end
redirect_to users_url redirect_to users_url
end end
def fb_set_default_publish_page
authorize!(:doadmin, User)
if Fetsite::Application.config.facebookconfig_enabled
if params["page"].nil? || !(current_user.provider=="facebook")
redirect_to intern_home_index_path
else
@fbu=FbGraph::User.new(current_user.uid.to_s).fetch(:access_token=>session["fbuser_access_token"])
File.open("config/page.yml",'w'){|f| f.write(@fbu.accounts(:access_token=>session["fbuser_access_token"]).select { |p| p.name == params["page"] }.first.to_yaml)}
logger.info @fbu.to_s
logger.info "FbGraph Access" + session["fbuser_access_token"]
redirect_to admin_home_index_path
end
end
end
def all_update def all_update
authorize! :doadmin,User
params[:users].each do |id,u| params[:users].each do |id,u|
user=User.find(id) user=User.find(id)
user.fetprofile = Fetprofile.find(u[:fetprofile_id].to_i) if u[:fetprofile_id].to_i>0 user.fetprofile = Fetprofile.find(u[:fetprofile_id].to_i) if u[:fetprofile_id].to_i>0
@@ -26,7 +55,6 @@ class UsersController < ApplicationController
def do_confirm def do_confirm
@user= User.find(params[:id]) @user= User.find(params[:id])
@user.confirm! @user.confirm!
redirect_to users_url redirect_to users_url
end end
end end

View File

@@ -1,46 +0,0 @@
class WikisController < ApplicationController
load_and_authorize_resource
def show
@wiki = Wiki.find(params[:id])
@fragen = @wiki.fragen
@toolbar_elements = [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('wiki.edit'), :path=>verwalten_wiki_path(@wiki)}]
end
def wiki
@wiki = Wiki.find_or_init(params[:name])
@fragen = @wiki.fragen
@toolbar_elements = []
# @toolbar_elements = [{:icon=>:pencil, :hicon=>'icon-pencil', :text=>I18n.t('wiki.edit'), :path=>verwalten_wiki_path(@wiki)}]
redirect_to wiki_path(@wiki)
end
def edit
@wiki = Wiki.find(params[:id])
respond_to do |format|
format.html
format.js
end
end
def update
@wiki = Wiki.find(params[:id])
@themen = @wiki.themengruppe.themen.order(:priority).reverse
@wiki.raw_data=params[:wiki][:raw_data]
respond_to do |format|
if @wiki.update_attributes(params[:wiki])
format.html { redirect_to verwalten_thema_path(@wiki), notice: 'Thema was successfully updated.' }
format.json { head :no_content }
format.js
else
format.html { render action: "edit" }
format.json { render json: @wiki.errors, status: :unprocessable_entity }
format.js { render action: "edit" }
end
end
end
end

View File

@@ -1,13 +1,85 @@
module ApplicationHelper module ApplicationHelper
def cache_array_key(array,prefix="")
return "empty_array" if array.nil? or array.empty?
prefix+array.map{|c| c.id}.join('_')+"_"+array.max{|c|c.updated_at.to_i}.updated_at.try(:utc).to_s+"_"+I18n.locale.to_s
# array.map{|c| c.id}.join('')+"_"+array.map{|c|c.try(:updated_at).try(:utc).to_s}.join('') +"_"+I18n.locale.to_s
end
def clean_calendar(cal)
cal.rubrik.meetingtyps.each do |mt|
mt.meetings.each do |m|
m.calentry.calendar=cal
end
end
end
def strip_control_chars(value)
value.chars.inject("") do |str, char|
unless char.ascii_only? && (char.ord < 32 || char.ord == 127)
str << char
end
str
end
end
def convert_topic_to_meeting(t,mt)
m=Meeting.new_with_date_and_typ(t,t.title.to_date+16.hour,mt)
m.save
m.create_protocol
m.protocol.text=t.text
m.protocol.save
m.update_time_from_protocol
m.save
t.meetings << m
t.save
end
def current_url1(overwrite={}) def current_url1(overwrite={})
url_for :params => params.merge(overwrite).except(:controller,:action,:ansicht) url_for :params => params.merge(overwrite).except(:controller,:action,:ansicht)
end end
def switch_locale_url(target_locale) def switch_locale_url(target_locale)
current_url1({:locale=>target_locale}) .sub "/"+I18n.locale.to_s+"/", "/"+target_locale.to_s+"/" # current_url1({:locale=>target_locale}) .sub "/"+I18n.locale.to_s+"/", "/"+target_locale.to_s+"/"
language_path(locale: target_locale)
end
def ffi1_icon (name)
content_tag("i","", class: "ficon ffi1-"+name )
end
def ffi2_icon (name)
content_tag("i","", class: "ficon ffi2-"+name )
end
def ff_icon (name)
content_tag("i","", class: "ficon "+name )
end
def fa_stack(icon1, icon2)
content_tag("span", content_tag("span", content_tag("i","", class: "ficon "+" fa-"+icon1+" fa fa-stack-1x" ) + content_tag("i","", class: "ficon "+" fa-"+icon2+" fa fa-stack-2x" ),class: "fa-stack "),class:"fa-stack-sm")
end end
def ffi1_list
y=YAML.load_file("#{::Rails.root.to_s}/config/flatfeticon1.yml")
y["ffi1"]
end
def ffi2_list
y=YAML.load_file("#{::Rails.root.to_s}/config/flatfeticon2.yml")
y["ffi2"]
end
def fa_list
y=YAML.load_file("#{::Rails.root.to_s}/config/fontawesome.yml")
y["fa"]
end
def tinymce_icon_choice
s=""
ffi1_list.each do |i|
s=s+'<a onclick="insertIcon_ffi1(\'ffi1-'+i+'\')">'+ffi1_icon(i)+'</a>'
end
raw(s)
end
def toolbar_html(elemente) def toolbar_html(elemente)
html = "" html = ""
limiter = " | " limiter = " | "
@@ -47,4 +119,46 @@ module ApplicationHelper
end end
raw(html) raw(html)
end end
def absurl(path)
if path.nil?
return nil
end
url=URI(root_url)
url.path=path
return url
end
def get_theme_help(u)
# if params[:theme]== "default" || params[:theme]=="2003" || params[:theme].nil?
# params[:theme]="blue1"
# end
if ! u.try(:preferredtheme).nil? and ThemesForRails.available_theme_names.include?(u.preferredtheme)
u.preferredtheme
else
"blue1"
end
end
def like_dislike_for(obj)
out=""
if can?(:like, obj)
out += link_to ffi1_icon("like3")+" like" + "("+obj.get_likes.size.to_s+")", url_for([:like, obj]),title: "liked by " + ((current_user.liked?(obj)) ? ("you and " + ((obj.get_likes.size - 1).to_s + " others")) : obj.get_likes.size.to_s), remote: true
else
out += "liked by " + obj.get_likes.size.to_s
end
if can?(:dislike, obj)
out += link_to ffi1_icon("dislike")+" dislike" + "("+obj.get_dislikes.size.to_s+")", url_for([:dislike, obj]),title:"disliked by " + ((current_user.disliked?(obj)) ? ("you and " + ((obj.get_dislikes.size - 1).to_s + " others")) : obj.get_dislikes.size.to_s) , remote: true
else
out += "disliked by " + obj.get_dislikes.size.to_s
end
raw(out)
end
def li_tag(content)
content_tag("li", content)
end
def meta_itemprop(itemprop, content)
tag("meta", itemprop: itemprop, content: content)
end
end end

View File

@@ -1,2 +1,21 @@
module AttachmentsHelper module AttachmentsHelper
def render_attachments_for(p)
a= Attachment.new
a.parent=p
render(partial:"attachments/attachment_list", object: p.attachments, locals: {editor: (can?(:edit, p)), parent: p} )+ ((can?(:edit, p))? (render partial:"attachments/form_bulk2", object: a ): "")
end
def render_attachments_list_for(p)
a= Attachment.new
a.parent=p
render(partial:"attachments/attachment_list", object: p.attachments, locals: {editor: (can?(:edit, p)), parent: p} )
end
def render_new_attachments_for(p, text="", options={})
a= Attachment.new
a.parent=p
((can?(:edit, p))? (render partial:"attachments/form_bulk2", object: a ): "")
end
end end

View File

@@ -1,2 +1,9 @@
module CalentriesHelper module CalentriesHelper
def render_calentries_for(p)
calentry_list=p.calentries
render(partial: "calentries/calentry_list", object: calentry_list, locals:{parent: p})
end
def new_calentry_div(p)
content_tag("div", "", id: divid_for(p, "new_calentry"))
end
end end

View File

@@ -0,0 +1,8 @@
module CommentsHelper
def wrapid_for(o)
divid_for(o,"comments")
end
def render_comments_for(o)
render partial: "comments/comments_block", object: o
end
end

View File

@@ -0,0 +1,4 @@
module CrawlobjectHelper
end

View File

View File

@@ -0,0 +1,3 @@
module MailerHelper
end

View File

@@ -0,0 +1,2 @@
module MeetingsHelper
end

View File

@@ -0,0 +1,2 @@
module MeetingtypsHelper
end

View File

@@ -1,2 +1,5 @@
module NeuigkeitenHelper # :nodoc: module NeuigkeitenHelper # :nodoc:
def send_daily_newsletter(user)
NewsMailer.daily_newsletter(user.id).deliver
end
end end

View File

@@ -0,0 +1,14 @@
module PluginsHelper
def divid_for(obj,suffix="")
if obj.nil?
""
else
obj.class.to_s.downcase.gsub("::","_")+ "_" + suffix.downcase + "_" + obj.id.to_s
end
end
def div_tag_for(o,&block)
content = capture(&block)
content_tag(:div, content, :id=>divid_for(o))
end
end

View File

@@ -0,0 +1,2 @@
module Survey::AnswersHelper
end

View File

@@ -0,0 +1,2 @@
module Survey::ChoicesHelper
end

View File

@@ -0,0 +1,5 @@
module Survey::QuestionsHelper
def new_question_for(obj,t="Neue Frage")
render partial: "survey/questions/new_question", locals: {question_templates: Survey::Question.templates, parent: obj, text: t}
end
end

View File

@@ -0,0 +1,28 @@
class CheckboxAutocompleteInput < FormtasticBootstrap::Inputs::CheckBoxesInput
def input_html_options
super
#super.merge(:class => "input-append date")
end
def html_options
super
#super.merge(:default => Date.today)
end
def wrapper_html_options
super.merge(:class=>"")
#super.merge(:class=>"datepicker",'date-date-format'.to_sym=>"%d.%m.%Y")
end
def controls_wrapper_html_options
super.merge(:class=> "datepicker date input-append", 'data-date'.to_sym =>I18n.l(Date.today()).to_s, 'data-date-format'.to_sym=>I18n.t('date.formats.default-picker'))
end
def to_html
bootstrap_wrapping do
builder.text_field(method, input_html_options) + 'sdf'
end
end
def options
super
#d.merge(:class=>"datepicker")
#super.merge(:append_content=>'<span class="add-on input-append"
#super.merge(:append_content=>'<span class="add-on" ><i class="icon-th"></i></span>')
end
end

View File

@@ -0,0 +1,32 @@
class DatetimepickerInput < FormtasticBootstrap::Inputs::StringInput
def input_html_options
s=super
value=builder.object.send(method)
value=I18n.l(value) unless value.nil?
super.merge(:class => "datetimepicker",:value=>value)
end
def html_options
super
end
def wrapper_html_options
super.merge(:class=>"")
#super.merge(:class=>"datepicker",'date-date-format'.to_sym=>"%d.%m.%Y")
end
def controls_wrapper_html_options
super.merge(:class=> " date input-append", 'data-date'.to_sym =>I18n.l(Date.today()).to_s, 'data-date-format'.to_sym=>I18n.t('date.formats.default-picker'))
end
def to_html
bootstrap_wrapping do
builder.text_field(method, input_html_options) +
'<span class="add-on" ><i class="icon-th"></i></span>'.html_safe()
end
end
def options
super
#d.merge(:class=>"datepicker")
#super.merge(:append_content=>'<span class="add-on input-append"
#super.merge(:append_content=>'<span class="add-on" ><i class="icon-th"></i></span>')
end
end

View File

@@ -0,0 +1,162 @@
# A formtastic input which incorporates carrierwave uploader functionality.
#
# Intelligently adds the cache field, displays and links to the current
# value if there is one, adds a class to the wrapper when replacing an
# existing value, allows removing an existing value with the checkbox
# taking into account validation requirements.
#
# There are several options:
#
# * Toggle the replacement field with `replaceable: true/false`.
# * The replace file label is translatable as `replace_label` or using option `replace_label: "value"` (like `label`).
# * Toggle the remove checkbox with `removable: true/false` (`true` overrides `required`).
# * The remove checkbox label is translatable as `remove_label` or using option `remove_label: "value"` (like `label`).
# * Override existing file display and links using `existing_html` and `existing_link_html` (like `wrapper_html`).
#
# Example: `form.input :file, as: "uploader"`
#
# Copyright (c) Samuel Cochran 2012, under the [MIT license](http://www.opensource.org/licenses/mit-license).
class UploaderInput < Formtastic::Inputs::FileInput
def linkable?
options[:linkable] != false
end
def replaceable?
options[:replaceable] != false
end
def removable?
options[:removable] != false and (options[:removable] == true or not required?)
end
def method_present?
if object.respond_to?("#{method}?")
object.send("#{method}?")
else
object.send(method).present?
end
end
def method_changed?
if object.respond_to? "#{method}_changed?"
object.send "#{method}_changed?"
else
false
end
end
def method_was_present?
if not method_changed?
method_present?
else
object.send("#{method}_was").present?
end
end
def wrapper_html_options
super.tap do |options|
options[:class] << " replaceable" if replaceable?
options[:class] << " removable" if removable?
options[:class] << " present" if method_present?
options[:class] << " changed" if method_changed?
options[:class] << " was_present" if method_was_present?
end
end
def cache_html
if method_changed?
builder.hidden_field("#{method}_cache")
end or "".html_safe
end
def file_html
builder.file_field(method, input_html_options)
end
def existing_html_options
expand_html_options(options[:existing_html]) do |opts|
opts[:class] << "existing"
end
end
def existing_link_html_options
expand_html_options(options[:existing_link_html]) do |opts|
opts[:class] << "existing"
end
end
def existing_html
if method_present?
# TODO: Add classes based on mime type for icons, etc.
existing = template.content_tag(:span, template.image_tag( object.send(method).thumb), existing_html_options)
template.link_to_if linkable?, existing, object.send(method).url, existing_link_html_options
end or "".html_safe
end
def replace_label_html
template.content_tag(:label, class: "replace_label") do
template.content_tag(:span, localized_string(method, "Replace #{method.to_s.titleize}", :replace_label))
end
end
def replace_html
if replaceable?
replace_label_html <<
file_html
end or "".html_safe
end
def remove_html
if removable?
template.content_tag(:label, class: "remove_label") do
template.check_box_tag("#{object_name}[remove_#{method}]", "1", false, id: "#{sanitized_object_name}_remove_#{sanitized_method_name}") <<
# XXX: There are probably better ways to do these translations using defaults.
template.content_tag(:span, localized_string(method, "Remove #{method.to_s.titleize}", :remove_label))
end
end or "".html_safe
end
def to_html
input_wrapping do
label_html <<
cache_html <<
if method_was_present?
existing_html <<
replace_html <<
remove_html
else
existing_html <<
file_html
end
end
end
protected
def expand_html_options opts
(opts || {}).dup.tap do |opts|
opts[:class] =
case opts[:class]
when Array
opts[:class].dup
when nil
[]
else
[opts[:class].to_s]
end
opts[:data] =
case opts[:data]
when Hash
opts[:data].dup
when nil
{}
else
{"" => opts[:data].to_s}
end
yield opts if block_given?
opts[:class] = opts[:class].join(' ')
end
end
end

Some files were not shown because too many files have changed in this diff Show More