WP Events Manager - Version 2.1.4

Version Description

  • Fix update booking status with PHP 7
  • Update auto shortcode redirect

=

Download this release

Release Info

Developer leehld
Plugin Icon 128x128 WP Events Manager
Version 2.1.4
Comparing to
See all releases

Version 2.1.4

Files changed (119) hide show
  1. assets/css/admin/admin.css +302 -0
  2. assets/css/admin/admin.min.css +1 -0
  3. assets/css/datetimepicker/jquery.datetimepicker.min.css +1 -0
  4. assets/css/frontend/events.css +213 -0
  5. assets/css/frontend/events.min.css +1 -0
  6. assets/fonts/glyphicons-halflings-regular.eot +0 -0
  7. assets/fonts/glyphicons-halflings-regular.svg +288 -0
  8. assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  9. assets/fonts/glyphicons-halflings-regular.woff +0 -0
  10. assets/fonts/glyphicons-halflings-regular.woff2 +0 -0
  11. assets/fonts/icomoon.eot +0 -0
  12. assets/fonts/icomoon.svg +11 -0
  13. assets/fonts/icomoon.ttf +0 -0
  14. assets/fonts/icomoon.woff +0 -0
  15. assets/images/map-marker.png +0 -0
  16. assets/js/admin/admin-events.js +127 -0
  17. assets/js/admin/admin-events.min.js +1 -0
  18. assets/js/datetimepicker/jquery.datetimepicker.full.js +3192 -0
  19. assets/js/datetimepicker/jquery.datetimepicker.full.min.js +2 -0
  20. assets/js/datetimepicker/jquery.datetimepicker.min.js +2 -0
  21. assets/js/frontend/events.js +265 -0
  22. assets/js/frontend/events.min.js +1 -0
  23. assets/js/frontend/google-map.js +125 -0
  24. inc/abstracts/class-wpems-abstract-payment-gateway.php +111 -0
  25. inc/abstracts/class-wpems-abstract-setting.php +92 -0
  26. inc/admin/class-wpems-admin-assets.php +29 -0
  27. inc/admin/class-wpems-admin-menu.php +65 -0
  28. inc/admin/class-wpems-admin-metaboxes.php +92 -0
  29. inc/admin/class-wpems-admin-settings.php +202 -0
  30. inc/admin/class-wpems-admin-users.php +254 -0
  31. inc/admin/class-wpems-admin.php +22 -0
  32. inc/admin/metaboxes/class-wpems-admin-metabox-booking.php +28 -0
  33. inc/admin/metaboxes/class-wpems-admin-metabox-event.php +62 -0
  34. inc/admin/settings/class-wpems-admin-setting-checkout.php +121 -0
  35. inc/admin/settings/class-wpems-admin-setting-emails.php +89 -0
  36. inc/admin/settings/class-wpems-admin-setting-general.php +110 -0
  37. inc/admin/settings/class-wpems-admin-setting-pages.php +88 -0
  38. inc/admin/upgrades/upgrade-2.0.8.php +33 -0
  39. inc/admin/upgrades/upgrade-2.0.php +47 -0
  40. inc/admin/views/metaboxes/booking-actions.php +28 -0
  41. inc/admin/views/metaboxes/booking-details.php +77 -0
  42. inc/admin/views/metaboxes/event-settings.php +84 -0
  43. inc/admin/views/settings/checkbox.php +31 -0
  44. inc/admin/views/settings/image-size.php +45 -0
  45. inc/admin/views/settings/radio.php +37 -0
  46. inc/admin/views/settings/section-end.php +12 -0
  47. inc/admin/views/settings/section-start.php +18 -0
  48. inc/admin/views/settings/select-page.php +37 -0
  49. inc/admin/views/settings/select.php +40 -0
  50. inc/admin/views/settings/text.php +40 -0
  51. inc/admin/views/settings/textarea.php +30 -0
  52. inc/admin/views/settings/yes-no.php +31 -0
  53. inc/class-wpems-ajax.php +218 -0
  54. inc/class-wpems-assets.php +149 -0
  55. inc/class-wpems-autoloader.php +88 -0
  56. inc/class-wpems-booking.php +122 -0
  57. inc/class-wpems-event.php +178 -0
  58. inc/class-wpems-frontend-assets.php +46 -0
  59. inc/class-wpems-install.php +168 -0
  60. inc/class-wpems-payment-gateways.php +74 -0
  61. inc/class-wpems-post-types.php +494 -0
  62. inc/class-wpems-session.php +125 -0
  63. inc/class-wpems-settings.php +135 -0
  64. inc/class-wpems-shortcodes.php +259 -0
  65. inc/class-wpems-template.php +52 -0
  66. inc/class-wpems-user-process.php +226 -0
  67. inc/emails/class-wpems-register-event.php +78 -0
  68. inc/gateways/paypal/class-wpems-payment-gateway-paypal.php +251 -0
  69. inc/gateways/paypal/paypal.png +0 -0
  70. inc/libraries/bootstrap/css/bootstrap-theme.min.css +1 -0
  71. inc/libraries/bootstrap/css/bootstrap.min.css +9 -0
  72. inc/libraries/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
  73. inc/libraries/bootstrap/fonts/glyphicons-halflings-regular.svg +228 -0
  74. inc/libraries/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
  75. inc/libraries/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
  76. inc/libraries/bootstrap/js/bootstrap.min.js +6 -0
  77. inc/libraries/countdown/css/jquery.countdown.css +54 -0
  78. inc/libraries/countdown/js/jquery.countdown.min.js +6 -0
  79. inc/libraries/countdown/js/jquery.plugin.min.js +4 -0
  80. inc/libraries/magnific-popup/css/magnific-popup.css +429 -0
  81. inc/libraries/magnific-popup/js/jquery.magnific-popup.js +1860 -0
  82. inc/libraries/magnific-popup/js/jquery.magnific-popup.min.js +4 -0
  83. inc/libraries/owl-carousel/css/grabbing.png +0 -0
  84. inc/libraries/owl-carousel/css/owl.carousel.css +71 -0
  85. inc/libraries/owl-carousel/js/owl.carousel.min.js +47 -0
  86. inc/plugins/wp-events-manager-woo-payment.zip +0 -0
  87. inc/widgets/class-wpems-widget-countdown.php +174 -0
  88. inc/wpems-core-functions.php +1525 -0
  89. index.php +0 -0
  90. languages/wp-events-manager.pot +1333 -0
  91. license.txt +339 -0
  92. readme.txt +132 -0
  93. templates/archive-event.php +89 -0
  94. templates/content-event.php +82 -0
  95. templates/content-single-event.php +51 -0
  96. templates/emails/register-event.php +57 -0
  97. templates/loop/booking-form.php +55 -0
  98. templates/loop/content.php +11 -0
  99. templates/loop/countdown.php +20 -0
  100. templates/loop/excerpt.php +14 -0
  101. templates/loop/location.php +13 -0
  102. templates/loop/register.php +42 -0
  103. templates/loop/thumbnail.php +21 -0
  104. templates/loop/title.php +20 -0
  105. templates/notices/error.php +16 -0
  106. templates/notices/messages.php +15 -0
  107. templates/notices/success.php +11 -0
  108. templates/shortcodes/event-countdown.php +28 -0
  109. templates/shortcodes/event-list.php +79 -0
  110. templates/shortcodes/forgot-password.php +56 -0
  111. templates/shortcodes/form-login.php +44 -0
  112. templates/shortcodes/form-register.php +51 -0
  113. templates/shortcodes/register-completed.php +10 -0
  114. templates/shortcodes/register-error.php +8 -0
  115. templates/shortcodes/reset-password.php +71 -0
  116. templates/shortcodes/user-account.php +77 -0
  117. templates/shortcodes/user-cannot-register.php +7 -0
  118. templates/single-event.php +30 -0
  119. wp-events-manager.php +175 -0
assets/css/admin/admin.css ADDED
@@ -0,0 +1,302 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .tp_event_admin_widget {
2
+ max-height: 100px;
3
+ overflow: scroll;
4
+ border: 1px solid #dddddd;
5
+ padding: 5px 10px;
6
+ max-width: 100%;
7
+ overflow-x: hidden;
8
+ }
9
+
10
+ #event-settings-metabox .shortcode {
11
+ min-width: 300px;
12
+ }
13
+
14
+ .tp_event_widget_tab li {
15
+ display: inline-block;
16
+ }
17
+
18
+ .tp_event_admin_widget {
19
+ display: none;
20
+ }
21
+
22
+ .tp_event_admin_widget.active {
23
+ display: block;
24
+ }
25
+
26
+ .tp_event_setting_wrapper a.nav-tab:focus {
27
+ box-shadow: none;
28
+ }
29
+
30
+ .tp_event_wrapper_content table th {
31
+ text-align: left;
32
+ min-width: 300px;
33
+ max-width: 300px;
34
+ }
35
+
36
+ .tp_event_wrapper_content table p {
37
+ margin: 2px;
38
+ font-weight: normal;
39
+ }
40
+
41
+ .tp_event_wrapper_content table select,
42
+ .tp_event_wrapper_content table input[type="text"]
43
+ .tp_event_wrapper_content table input[type="email"] {
44
+ width: auto;
45
+ min-width: 250px;
46
+ }
47
+
48
+ #checkout h3 a {
49
+ font-size: 12px;
50
+ font-weight: 600;
51
+ padding: 0px 12px;
52
+ }
53
+
54
+ #checkout h3 a.active {
55
+ border-bottom: 1px solid #f1f1f1;
56
+ background: #f1f1f1;
57
+ color: #000;
58
+ }
59
+
60
+ /**
61
+ * metabox
62
+ */
63
+ #event-settings-metabox .inside {
64
+ margin: 0;
65
+ padding: 0;
66
+ overflow: hidden;
67
+ }
68
+
69
+ .event_meta_box_container {
70
+ overflow: hidden;
71
+ }
72
+
73
+ .event_meta_box_container .option_group {
74
+ border-bottom: 1px solid #eee;
75
+ }
76
+
77
+ .event_meta_box_container .form-field {
78
+ padding: 5px 20px 5px;
79
+ overflow: hidden;
80
+ }
81
+
82
+ .event_meta_box_container label {
83
+ width: 150px;
84
+ float: left;
85
+ display: block;
86
+ font-size: 12px;
87
+ }
88
+
89
+ .event_meta_box_container input[type="text"],
90
+ .event_meta_box_container input[type="email"],
91
+ .event_meta_box_container input[type="number"],
92
+ .event_meta_box_container textarea {
93
+ width: 50%;
94
+ float: left;
95
+ }
96
+
97
+ .event_metabox_setting {
98
+ position: relative;
99
+ float: left;
100
+ width: 20%;
101
+ margin: 0;
102
+ background-color: #fdfdfd;
103
+ border-right: 1px solid #dfdfdf;
104
+ box-sizing: border-box;
105
+ }
106
+
107
+ .event_metabox_setting:before {
108
+ display: block;
109
+ content: '';
110
+ position: absolute;
111
+ left: 0;
112
+ right: 0;
113
+ top: 100%;
114
+ width: 100%;
115
+ height: 1000px;
116
+ background-color: #fdfdfd;
117
+ border-right: 1px solid #dfdfdf;
118
+ }
119
+
120
+ .event_metabox_setting li {
121
+ margin: 0;
122
+ }
123
+
124
+ .event_metabox_setting li a {
125
+ text-decoration: none;
126
+ padding: 8px 12px;
127
+ display: block;
128
+ line-height: 20px;
129
+ font-size: 13px;
130
+ }
131
+
132
+ .event_metabox_setting li a:focus {
133
+ box-shadow: none;
134
+ }
135
+
136
+ .event_metabox_setting_container {
137
+ width: 80%;
138
+ float: left;
139
+ }
140
+
141
+ .event_auth_admin_table_booking td,
142
+ .event_auth_admin_table_booking th {
143
+ padding: 10px;
144
+ border: 1px solid;
145
+ }
146
+
147
+ .event_booking_status {
148
+ font-size: 13px;
149
+ font-weight: 500;
150
+ font-style: italic;
151
+ }
152
+
153
+ .event_booking_status.pending {
154
+ color: #DC3838;
155
+ }
156
+
157
+ .event_booking_status.processing {
158
+ color: #F9D209;
159
+ }
160
+
161
+ .event_booking_status.completed {
162
+ color: #38DC55;
163
+ }
164
+
165
+ /*booking details page*/
166
+ #event-booking-details {
167
+ margin: 20px;
168
+ }
169
+
170
+ #event-booking-details .booking-user-data, #event-booking-details .booking-data {
171
+ display: inline-block;
172
+ }
173
+
174
+ #event-booking-details .booking-user-data {
175
+ width: calc(100% - 200px);
176
+ position: relative;
177
+ }
178
+
179
+ #event-booking-details .booking-data {
180
+ width: 200px;
181
+ float: right;
182
+ }
183
+
184
+ #event-booking-details .booking-user-data .user-avatar, #event-booking-details .booking-user-data .order-user-meta {
185
+ display: inline-block;
186
+ }
187
+
188
+ #event-booking-details .booking-user-data .order-user-meta {
189
+ position: absolute;
190
+ margin-left: 20px;
191
+ }
192
+
193
+ #event-booking-details .booking-user-data .order-user-meta .user-display-name {
194
+ margin-bottom: 10px;
195
+ }
196
+
197
+ #event-booking-details .booking-user-data .order-user-meta .user-display-name a {
198
+ text-decoration: none;
199
+ margin-bottom: 10px;
200
+ }
201
+
202
+ #event-booking-details .booking-data .booking-data-number {
203
+ font-size: 24px;
204
+ font-weight: 700;
205
+ margin-bottom: 10px;
206
+ }
207
+
208
+ #event-booking-details .booking-data .booking-date {
209
+ font-size: 14px;
210
+ font-style: italic;
211
+ margin-bottom: 5px;
212
+ }
213
+
214
+ #event-booking-details table.booking-table {
215
+ width: 100%;
216
+ margin-top: 20px;
217
+ border: 1px solid #DDD;
218
+ }
219
+
220
+ #event-booking-details table.booking-table tr {
221
+ border-bottom: 1px solid #EEE;
222
+ }
223
+
224
+ #event-booking-details table.booking-table tr th {
225
+ height: 30px;
226
+ text-align: left;
227
+ font-size: 16px;
228
+ padding: 15px 10px;
229
+ border: 1px solid #DDD;
230
+ }
231
+
232
+ #event-booking-details table.booking-table tr td {
233
+ padding: 15px 10px;
234
+ font-size: 16px;
235
+ border: 1px solid #DDD;
236
+ }
237
+
238
+ #booking-status-side label {
239
+ display: block;
240
+ margin-bottom: 10px;
241
+ font-weight: bold;
242
+ }
243
+
244
+ #booking-status-side .booking-status-description {
245
+ font-size: smaller;
246
+ background: #CEE8FF;
247
+ padding: 5px;
248
+ font-style: italic;
249
+ color: #848484;
250
+ position: relative;
251
+ margin-top: 10px;
252
+ border-radius: 3px;
253
+ }
254
+
255
+ #booking-status-side .booking-status-description::before {
256
+ content: '';
257
+ border: 5px solid transparent;
258
+ border-bottom-color: #CEE8FF;
259
+ position: absolute;
260
+ top: -10px;
261
+ }
262
+
263
+ #booking-status-side textarea{
264
+ width: 100%;
265
+ }
266
+
267
+ .event-form-field .description {
268
+ font-style: italic;
269
+ margin-top: 5px;
270
+ }
271
+
272
+ .event_meta_box_container .event-meta-notice {
273
+ margin-left: 170px;
274
+ margin-top: -15px;
275
+ font-style: italic;
276
+ }
277
+
278
+ #event-time-metabox {
279
+ margin: 14px 0;
280
+ }
281
+
282
+ #event-time-metabox input {
283
+ display: inline-block;
284
+ }
285
+
286
+ #event-time-metabox #_date_start, #event-time-metabox #_date_end {
287
+ width: 100px;
288
+ margin-right: 4px;
289
+ }
290
+
291
+ #event-time-metabox #_time_start, #event-time-metabox #_time_end {
292
+ width: 75px;
293
+ }
294
+
295
+ #event-time-metabox .time-connect {
296
+ float: left;
297
+ margin: 5px 14px;
298
+ }
299
+
300
+ .post-type-event_auth_book #postbox-container-2{
301
+ margin-top: -20px;
302
+ }
assets/css/admin/admin.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .event_metabox_setting li a:focus,.tp_event_setting_wrapper a.nav-tab:focus{box-shadow:none}#event-settings-metabox .shortcode{min-width:300px}.tp_event_widget_tab li{display:inline-block}.tp_event_admin_widget{max-height:100px;overflow:scroll;border:1px solid #ddd;padding:5px 10px;max-width:100%;overflow-x:hidden;display:none}.tp_event_admin_widget.active{display:block}.tp_event_wrapper_content table th{text-align:left;min-width:300px;max-width:300px}.tp_event_wrapper_content table p{margin:2px;font-weight:400}.tp_event_wrapper_content table input[type=text] .tp_event_wrapper_content table input[type=email],.tp_event_wrapper_content table select{width:auto;min-width:250px}#checkout h3 a{font-size:12px;font-weight:600;padding:0 12px}#checkout h3 a.active{border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}.event_metabox_setting,.event_metabox_setting:before{background-color:#fdfdfd;border-right:1px solid #dfdfdf}#event-settings-metabox .inside{margin:0;padding:0;overflow:hidden}.event_meta_box_container{overflow:hidden}.event_meta_box_container .option_group{border-bottom:1px solid #eee}.event_meta_box_container .form-field{padding:5px 20px;overflow:hidden}.event_meta_box_container label{width:150px;float:left;display:block;font-size:12px}.event_meta_box_container input[type=text],.event_meta_box_container input[type=email],.event_meta_box_container input[type=number],.event_meta_box_container textarea{width:50%;float:left}.event_metabox_setting{position:relative;float:left;width:20%;margin:0;box-sizing:border-box}.event_metabox_setting:before{display:block;content:'';position:absolute;left:0;right:0;top:100%;width:100%;height:1000px}.event_metabox_setting li{margin:0}.event_metabox_setting li a{text-decoration:none;padding:8px 12px;display:block;line-height:20px;font-size:13px}#event-booking-details .booking-data,#event-booking-details .booking-user-data,#event-booking-details .booking-user-data .order-user-meta,#event-booking-details .booking-user-data .user-avatar,#event-time-metabox input{display:inline-block}.event_metabox_setting_container{width:80%;float:left}.event_auth_admin_table_booking td,.event_auth_admin_table_booking th{padding:10px;border:1px solid}.event_booking_status{font-size:13px;font-weight:500;font-style:italic}.event_booking_status.pending{color:#DC3838}.event_booking_status.processing{color:#F9D209}.event_booking_status.completed{color:#38DC55}#event-booking-details{margin:20px}#event-booking-details .booking-user-data{width:calc(100% - 200px);position:relative}#event-booking-details .booking-data{width:200px;float:right}#event-booking-details .booking-user-data .order-user-meta{position:absolute;margin-left:20px}#event-booking-details .booking-user-data .order-user-meta .user-display-name{margin-bottom:10px}#event-booking-details .booking-user-data .order-user-meta .user-display-name a{text-decoration:none;margin-bottom:10px}#event-booking-details .booking-data .booking-data-number{font-size:24px;font-weight:700;margin-bottom:10px}#event-booking-details .booking-data .booking-date{font-size:14px;font-style:italic;margin-bottom:5px}#event-booking-details table.booking-table{width:100%;margin-top:20px;border:1px solid #DDD}#event-booking-details table.booking-table tr{border-bottom:1px solid #EEE}#event-booking-details table.booking-table tr td,#event-booking-details table.booking-table tr th{padding:15px 10px;font-size:16px;border:1px solid #DDD}#event-booking-details table.booking-table tr th{height:30px;text-align:left}#booking-status-side label{display:block;margin-bottom:10px;font-weight:700}#booking-status-side .booking-status-description{font-size:smaller;background:#CEE8FF;padding:5px;font-style:italic;color:#848484;position:relative;margin-top:10px;border-radius:3px}#booking-status-side .booking-status-description::before{content:'';border:5px solid transparent;border-bottom-color:#CEE8FF;position:absolute;top:-10px}#booking-status-side textarea{width:100%}.event-form-field .description{font-style:italic;margin-top:5px}.event_meta_box_container .event-meta-notice{margin-left:170px;margin-top:-15px;font-style:italic}#event-time-metabox{margin:14px 0}#event-time-metabox #_date_end,#event-time-metabox #_date_start{width:100px;margin-right:4px}#event-time-metabox #_time_end,#event-time-metabox #_time_start{width:75px}#event-time-metabox .time-connect{float:left;margin:5px 14px}.post-type-event_auth_book #postbox-container-2{margin-top:-20px}
assets/css/datetimepicker/jquery.datetimepicker.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .xdsoft_datetimepicker{box-shadow:0 5px 15px -5px rgba(0,0,0,0.506);background:#fff;border-bottom:1px solid #bbb;border-left:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;color:#333;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;padding:8px;padding-left:0;padding-top:2px;position:absolute;z-index:9999;-moz-box-sizing:border-box;box-sizing:border-box;display:none}.xdsoft_datetimepicker.xdsoft_rtl{padding:8px 0 8px 8px}.xdsoft_datetimepicker iframe{position:absolute;left:0;top:0;width:75px;height:210px;background:transparent;border:0}.xdsoft_datetimepicker button{border:none !important}.xdsoft_noselect{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.xdsoft_noselect::selection{background:transparent}.xdsoft_noselect::-moz-selection{background:transparent}.xdsoft_datetimepicker.xdsoft_inline{display:inline-block;position:static;box-shadow:none}.xdsoft_datetimepicker *{-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin:0}.xdsoft_datetimepicker .xdsoft_datepicker,.xdsoft_datetimepicker .xdsoft_timepicker{display:none}.xdsoft_datetimepicker .xdsoft_datepicker.active,.xdsoft_datetimepicker .xdsoft_timepicker.active{display:block}.xdsoft_datetimepicker .xdsoft_datepicker{width:224px;float:left;margin-left:8px}.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_datepicker{float:right;margin-right:8px;margin-left:0}.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_datepicker{width:256px}.xdsoft_datetimepicker .xdsoft_timepicker{width:58px;float:left;text-align:center;margin-left:8px;margin-top:0}.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker{float:right;margin-right:8px;margin-left:0}.xdsoft_datetimepicker .xdsoft_datepicker.active+.xdsoft_timepicker{margin-top:8px;margin-bottom:3px}.xdsoft_datetimepicker .xdsoft_monthpicker{position:relative;text-align:center}.xdsoft_datetimepicker .xdsoft_label i,.xdsoft_datetimepicker .xdsoft_prev,.xdsoft_datetimepicker .xdsoft_next,.xdsoft_datetimepicker .xdsoft_today_button{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0NBRjI1NjM0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0NBRjI1NjQ0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDQ0FGMjU2MTQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDQ0FGMjU2MjQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoNEP54AAAIOSURBVHja7Jq9TsMwEMcxrZD4WpBYeKUCe+kTMCACHZh4BFfHO/AAIHZGFhYkBBsSEqxsLCAgXKhbXYOTxh9pfJVP+qutnZ5s/5Lz2Y5I03QhWji2GIcgAokWgfCxNvcOCCGKqiSqhUp0laHOne05vdEyGMfkdxJDVjgwDlEQgYQBgx+ULJaWSXXS6r/ER5FBVR8VfGftTKcITNs+a1XpcFoExREIDF14AVIFxgQUS+h520cdud6wNkC0UBw6BCO/HoCYwBhD8QCkQ/x1mwDyD4plh4D6DDV0TAGyo4HcawLIBBSLDkHeH0Mg2yVP3l4TQMZQDDsEOl/MgHQqhMNuE0D+oBh0CIr8MAKyazBH9WyBuKxDWgbXfjNf32TZ1KWm/Ap1oSk/R53UtQ5xTh3LUlMmT8gt6g51Q9p+SobxgJQ/qmsfZhWywGFSl0yBjCLJCMgXail3b7+rumdVJ2YRss4cN+r6qAHDkPWjPjdJCF4n9RmAD/V9A/Wp4NQassDjwlB6XBiCxcJQWmZZb8THFilfy/lfrTvLghq2TqTHrRMTKNJ0sIhdo15RT+RpyWwFdY96UZ/LdQKBGjcXpcc1AlSFEfLmouD+1knuxBDUVrvOBmoOC/rEcN7OQxKVeJTCiAdUzUJhA2Oez9QTkp72OTVcxDcXY8iKNkxGAJXmJCOQwOa6dhyXsOa6XwEGAKdeb5ET3rQdAAAAAElFTkSuQmCC)}.xdsoft_datetimepicker .xdsoft_label i{opacity:.5;background-position:-92px -19px;display:inline-block;width:9px;height:20px;vertical-align:middle}.xdsoft_datetimepicker .xdsoft_prev{float:left;background-position:-20px 0}.xdsoft_datetimepicker .xdsoft_today_button{float:left;background-position:-70px 0;margin-left:5px}.xdsoft_datetimepicker .xdsoft_next{float:right;background-position:0 0}.xdsoft_datetimepicker .xdsoft_next,.xdsoft_datetimepicker .xdsoft_prev,.xdsoft_datetimepicker .xdsoft_today_button{background-color:transparent;background-repeat:no-repeat;border:0 none;cursor:pointer;display:block;height:30px;opacity:.5;-ms-filter:"alpha(opacity=50)";outline:medium none;overflow:hidden;padding:0;position:relative;text-indent:100%;white-space:nowrap;width:20px;min-width:0}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_next{float:none;background-position:-40px -15px;height:15px;width:30px;display:block;margin-left:14px;margin-top:7px}.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker .xdsoft_prev,.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker .xdsoft_next{float:none;margin-left:0;margin-right:14px}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev{background-position:-40px 0;margin-bottom:7px;margin-top:0}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box{height:151px;overflow:hidden;border-bottom:1px solid #ddd}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div{background:#f5f5f5;border-top:1px solid #ddd;color:#666;font-size:12px;text-align:center;border-collapse:collapse;cursor:pointer;border-bottom-width:0;height:25px;line-height:25px}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div:first-child{border-top-width:0}.xdsoft_datetimepicker .xdsoft_today_button:hover,.xdsoft_datetimepicker .xdsoft_next:hover,.xdsoft_datetimepicker .xdsoft_prev:hover{opacity:1;-ms-filter:"alpha(opacity=100)"}.xdsoft_datetimepicker .xdsoft_label{display:inline;position:relative;z-index:9999;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:bold;background-color:#fff;float:left;width:182px;text-align:center;cursor:pointer}.xdsoft_datetimepicker .xdsoft_label:hover>span{text-decoration:underline}.xdsoft_datetimepicker .xdsoft_label:hover i{opacity:1.0}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select{border:1px solid #ccc;position:absolute;right:0;top:30px;z-index:101;display:none;background:#fff;max-height:160px;overflow-y:hidden}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select.xdsoft_monthselect{right:-7px}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select.xdsoft_yearselect{right:2px}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select>div>.xdsoft_option:hover{color:#fff;background:#ff8000}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select>div>.xdsoft_option{padding:2px 10px 2px 5px;text-decoration:none !important}.xdsoft_datetimepicker .xdsoft_label>.xdsoft_select>div>.xdsoft_option.xdsoft_current{background:#3af;box-shadow:#178fe5 0 1px 3px 0 inset;color:#fff;font-weight:700}.xdsoft_datetimepicker .xdsoft_month{width:100px;text-align:right}.xdsoft_datetimepicker .xdsoft_calendar{clear:both}.xdsoft_datetimepicker .xdsoft_year{width:48px;margin-left:5px}.xdsoft_datetimepicker .xdsoft_calendar table{border-collapse:collapse;width:100%}.xdsoft_datetimepicker .xdsoft_calendar td>div{padding-right:5px}.xdsoft_datetimepicker .xdsoft_calendar th{height:25px}.xdsoft_datetimepicker .xdsoft_calendar td,.xdsoft_datetimepicker .xdsoft_calendar th{width:14.2857142%;background:#f5f5f5;border:1px solid #ddd;color:#666;font-size:12px;text-align:right;vertical-align:middle;padding:0;border-collapse:collapse;cursor:pointer;height:25px}.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar td,.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar th{width:12.5%}.xdsoft_datetimepicker .xdsoft_calendar th{background:#f1f1f1}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_today{color:#3af}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_default{background:#ffe9d2;box-shadow:#ffb871 0 1px 4px 0 inset;color:#000}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_mint{background:#c1ffc9;box-shadow:#00dd1c 0 1px 4px 0 inset;color:#000}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default,.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current{background:#3af;box-shadow:#178fe5 0 1px 3px 0 inset;color:#fff;font-weight:700}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month,.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled,.xdsoft_datetimepicker .xdsoft_time_box>div>div.xdsoft_disabled{opacity:.5;-ms-filter:"alpha(opacity=50)";cursor:default}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month.xdsoft_disabled{opacity:.2;-ms-filter:"alpha(opacity=20)"}.xdsoft_datetimepicker .xdsoft_calendar td:hover,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div:hover{color:#fff !important;background:#ff8000 !important;box-shadow:none !important}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current.xdsoft_disabled:hover,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current.xdsoft_disabled:hover{background:#3af !important;box-shadow:#178fe5 0 1px 3px 0 inset !important;color:#fff !important}.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled:hover,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_disabled:hover{color:inherit !important;background:inherit !important;box-shadow:inherit !important}.xdsoft_datetimepicker .xdsoft_calendar th{font-weight:700;text-align:center;color:#999;cursor:default}.xdsoft_datetimepicker .xdsoft_copyright{color:#ccc !important;font-size:10px;clear:both;float:none;margin-left:8px}.xdsoft_datetimepicker .xdsoft_copyright a{color:#eee !important}.xdsoft_datetimepicker .xdsoft_copyright a:hover{color:#aaa !important}.xdsoft_time_box{position:relative;border:1px solid #ccc}.xdsoft_scrollbar>.xdsoft_scroller{background:#ccc !important;height:20px;border-radius:3px}.xdsoft_scrollbar{position:absolute;width:7px;right:0;top:0;bottom:0;cursor:pointer}.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_scrollbar{left:0;right:auto}.xdsoft_scroller_box{position:relative}.xdsoft_datetimepicker.xdsoft_dark{box-shadow:0 5px 15px -5px rgba(255,255,255,0.506);background:#000;border-bottom:1px solid #444;border-left:1px solid #333;border-right:1px solid #333;border-top:1px solid #333;color:#ccc}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box{border-bottom:1px solid #222}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box>div>div{background:#0a0a0a;border-top:1px solid #222;color:#999}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label{background-color:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label>.xdsoft_select{border:1px solid #333;background:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label>.xdsoft_select>div>.xdsoft_option:hover{color:#000;background:#007fff}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label>.xdsoft_select>div>.xdsoft_option.xdsoft_current{background:#c50;box-shadow:#b03e00 0 1px 3px 0 inset;color:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label i,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_prev,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_next,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_today_button{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUExQUUzOTA0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUExQUUzOTE0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQTFBRTM4RTQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQTFBRTM4RjQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp0VxGEAAAIASURBVHja7JrNSgMxEMebtgh+3MSLr1T1Xn2CHoSKB08+QmR8Bx9A8e7RixdB9CKCoNdexIugxFlJa7rNZneTbLIpM/CnNLsdMvNjM8l0mRCiQ9Ye61IKCAgZAUnH+mU3MMZaHYChBnJUDzWOFZdVfc5+ZFLbrWDeXPwbxIqrLLfaeS0hEBVGIRQCEiZoHQwtlGSByCCdYBl8g8egTTAWoKQMRBRBcZxYlhzhKegqMOageErsCHVkk3hXIFooDgHB1KkHIHVgzKB4ADJQ/A1jAFmAYhkQqA5TOBtocrKrgXwQA8gcFIuAIO8sQSA7hidvPwaQGZSaAYHOUWJABhWWw2EMIH9QagQERU4SArJXo0ZZL18uvaxejXt/Em8xjVBXmvFr1KVm/AJ10tRe2XnraNqaJvKE3KHuUbfK1E+VHB0q40/y3sdQSxY4FHWeKJCunP8UyDdqJZenT3ntVV5jIYCAh20vT7ioP8tpf6E2lfEMwERe+whV1MHjwZB7PBiCxcGQWwKZKD62lfGNnP/1poFAA60T7rF1UgcKd2id3KDeUS+oLWV8DfWAepOfq00CgQabi9zjcgJVYVD7PVzQUAUGAQkbNJTBICDhgwYTjDYD6XeW08ZKh+A4pYkzenOxXUbvZcWz7E8ykRMnIHGX1XPl+1m2vPYpL+2qdb8CDAARlKFEz/ZVkAAAAABJRU5ErkJggg==)}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th{background:#0a0a0a;border:1px solid #222;color:#999}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th{background:#0e0e0e}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_today{color:#c50}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_default{background:#ffe9d2;box-shadow:#ffb871 0 1px 4px 0 inset;color:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_mint{background:#c1ffc9;box-shadow:#00dd1c 0 1px 4px 0 inset;color:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_default,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_current,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current{background:#c50;box-shadow:#b03e00 0 1px 3px 0 inset;color:#000}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td:hover,.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box>div>div:hover{color:#000 !important;background:#007fff !important}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th{color:#666}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright{color:#333 !important}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a{color:#111 !important}.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a:hover{color:#555 !important}.xdsoft_dark .xdsoft_time_box{border:1px solid #333}.xdsoft_dark .xdsoft_scrollbar>.xdsoft_scroller{background:#333 !important}.xdsoft_datetimepicker .xdsoft_save_selected{display:block;border:1px solid #ddd !important;margin-top:5px;width:100%;color:#454551;font-size:13px}.xdsoft_datetimepicker .blue-gradient-button{font-family:"museo-sans","Book Antiqua",sans-serif;font-size:12px;font-weight:300;color:#82878c;height:28px;position:relative;padding:4px 17px 4px 33px;border:1px solid #d7d8da;background:-moz-linear-gradient(top,#fff 0,#f4f8fa 73%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(73%,#f4f8fa));background:-webkit-linear-gradient(top,#fff 0,#f4f8fa 73%);background:-o-linear-gradient(top,#fff 0,#f4f8fa 73%);background:-ms-linear-gradient(top,#fff 0,#f4f8fa 73%);background:linear-gradient(to bottom,#fff 0,#f4f8fa 73%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff',endColorstr='#f4f8fa',GradientType=0)}.xdsoft_datetimepicker .blue-gradient-button:hover,.xdsoft_datetimepicker .blue-gradient-button:focus,.xdsoft_datetimepicker .blue-gradient-button:hover span,.xdsoft_datetimepicker .blue-gradient-button:focus span{color:#454551;background:-moz-linear-gradient(top,#f4f8fa 0,#FFF 73%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f4f8fa),color-stop(73%,#FFF));background:-webkit-linear-gradient(top,#f4f8fa 0,#FFF 73%);background:-o-linear-gradient(top,#f4f8fa 0,#FFF 73%);background:-ms-linear-gradient(top,#f4f8fa 0,#FFF 73%);background:linear-gradient(to bottom,#f4f8fa 0,#FFF 73%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f4f8fa',endColorstr='#FFF',GradientType=0)}
assets/css/frontend/events.css ADDED
@@ -0,0 +1,213 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .tp_event_counter {
2
+ background-color: #ffb606;
3
+ height: auto;
4
+ overflow: hidden;
5
+ padding: 20px;
6
+ }
7
+
8
+ .countdown-section {
9
+ background: rgba(255, 255, 255, .2);
10
+ border: 1px solid rgba(255, 255, 255, .1);
11
+ padding: 10px;
12
+ }
13
+
14
+ .countdown-amount {
15
+ position: relative;
16
+ width: 50px;
17
+ height: 40px;
18
+ overflow: hidden;
19
+ }
20
+
21
+ .countdown-period {
22
+
23
+ }
24
+
25
+ .countdown-descr {
26
+ font-size: 13px !important;
27
+ }
28
+
29
+ @font-face {
30
+ font-family: 'icomoon';
31
+ src: url('../fonts/icomoon.eot?c3wvz6');
32
+ src: url('../fonts/icomoon.eot?c3wvz6#iefix') format('embedded-opentype'),
33
+ url('../fonts/icomoon.ttf?c3wvz6') format('truetype'),
34
+ url('../fonts/icomoon.woff?c3wvz6') format('woff'),
35
+ url('../fonts/icomoon.svg?c3wvz6#icomoon') format('svg');
36
+ font-weight: normal;
37
+ font-style: normal;
38
+ }
39
+
40
+ [class^="event-icon-"], [class*=" event-icon-"] {
41
+ /* use !important to prevent issues with browser extensions that change fonts */
42
+ font-family: 'icomoon' !important;
43
+ speak: none;
44
+ font-style: normal;
45
+ font-weight: normal;
46
+ font-variant: normal;
47
+ text-transform: none;
48
+ line-height: 1;
49
+
50
+ /* Better Font Rendering =========== */
51
+ -webkit-font-smoothing: antialiased;
52
+ -moz-osx-font-smoothing: grayscale;
53
+ }
54
+
55
+ .event-icon-spinner2:before {
56
+ content: "\e97b";
57
+ }
58
+
59
+ @keyframes anim-rotate {
60
+ 0% {
61
+ transform: rotate(0);
62
+ }
63
+ 100% {
64
+ transform: rotate(360deg);
65
+ }
66
+ }
67
+
68
+ .spinner {
69
+ display: inline-block;
70
+ line-height: 1;
71
+ margin: .5em;
72
+ animation: anim-rotate 2s infinite linear;
73
+ color: #fff;
74
+ text-shadow: 0 0 .25em rgba(255, 255, 255, .3);
75
+ }
76
+
77
+ /**end FONT**/
78
+ .event-lightbox-wrap .mfp-close {
79
+ display: none;
80
+ }
81
+
82
+ #event-lightbox {
83
+ display: none;
84
+ visibility: none;
85
+ position: relative;
86
+ width: 500px;
87
+ margin: 0 auto;
88
+ padding: 20px;
89
+ background-color: #fff;
90
+ }
91
+
92
+ #event-lightbox.event-fade {
93
+ display: block;
94
+ opacity: 0;
95
+ -webkit-backface-visibility: hidden;
96
+ /* ideally, transition speed should match zoom duration */
97
+ -webkit-transition: all 0.35s ease-in-out;
98
+ -moz-transition: all 0.35s ease-in-out;
99
+ -o-transition: all 0.35s ease-in-out;
100
+ transition: all 0.35s ease-in-out;
101
+ }
102
+
103
+ #event-lightbox.event-fade.event-in {
104
+ opacity: 1;
105
+ visibility: visible;
106
+ }
107
+
108
+ .tp-event-notice {
109
+ margin: 10px 0 2em !important;
110
+ position: relative;
111
+ list-style: none !important;
112
+ width: auto;
113
+ word-wrap: break-word;
114
+ }
115
+
116
+ .tp-event-notice.success {
117
+ color: #31708f;
118
+ background: #d9edf7;
119
+ padding: 10px 15px !important;
120
+ }
121
+
122
+ .tp-event-notice.error {
123
+ padding: 1em 2em 1em 1.5em !important;
124
+ background-color: #fdb494;
125
+ color: #515151;
126
+ border-left: 3px solid #c35a2c;
127
+ }
128
+
129
+ .form-row input,
130
+ .form-row input[type="text"],
131
+ .form-row input[type="email"],
132
+ .form-row input[type="checkbox"],
133
+ .form-row input[type="number"],
134
+ .form-row input[type="password"] {
135
+ border: 1px solid #eee;
136
+ background-color: transparent;
137
+ }
138
+
139
+ .form-row.has-error {
140
+ color: #a00;
141
+ }
142
+
143
+ .form-row.has-error input {
144
+ border-color: #a00;
145
+ }
146
+
147
+ .form-row.validated input {
148
+ border-color: #69bf29;
149
+ }
150
+
151
+ .event_auth_button {
152
+ background: #1a1a1a;
153
+ border: 0;
154
+ border-radius: 2px;
155
+ color: #fff;
156
+ font-family: Montserrat, "Helvetica Neue", sans-serif;
157
+ font-weight: 700;
158
+ letter-spacing: 0.046875em;
159
+ line-height: 1;
160
+ padding: 0.84375em 0.875em 0.78125em;
161
+ text-transform: uppercase;
162
+ }
163
+
164
+ .event_auth_button:hover {
165
+ background: #007acc;
166
+ cursor: pointer;
167
+ color: #fff;
168
+ }
169
+
170
+ .event_auth_payment_methods {
171
+ margin: 10px 0;
172
+ list-style: none;
173
+ padding: 10px;
174
+ border-radius: 3px;
175
+ background-color: #eee;
176
+ }
177
+
178
+ .single-tp_event .entry-summary {
179
+ margin-bottom: 0;
180
+ }
181
+
182
+ .post-type-archive-tp_event .entry-title, .tax-tp_event_category .entry-title, .entry-summary .entry-countdown, .entry-summary .entry-content {
183
+ margin-top: 20px;
184
+ }
185
+
186
+ .post-type-archive-tp_event ul, .tax-tp_event_category ul {
187
+ list-style-type: none;
188
+ }
189
+
190
+ .post-type-archive-tp_event ul li.tp_event, .tax-tp_event_category ul li.tp_event {
191
+ width: calc(50% - 30px);
192
+ float: left;
193
+ }
194
+
195
+ .post-type-archive-tp_event ul li.tp_event:nth-child(2n), .tax-tp_event_category ul li.tp_event:nth-child(2n) {
196
+ margin-left: 15px;
197
+ }
198
+
199
+ .post-type-archive-tp_event ul li.tp_event:nth-child(2n+1), .tax-tp_event_category ul li.tp_event:nth-child(2n+1) {
200
+ margin-right: 15px;
201
+ clear: both;
202
+ }
203
+
204
+ #content article.tp_single_event .entry-content {
205
+ float: none;
206
+ width: 100%;
207
+ }
208
+
209
+ .single-tp_event .entry-register a {
210
+ display: inline-block;
211
+ margin-top: -10px;
212
+ margin-bottom: 20px;
213
+ }
assets/css/frontend/events.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .tp_event_counter{background-color:#ffb606;height:auto;overflow:hidden;padding:20px}.countdown-section{background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.1);padding:10px}.countdown-amount{position:relative;width:50px;height:40px;overflow:hidden}.countdown-descr{font-size:13px!important}@font-face{font-family:icomoon;src:url(../fonts/icomoon.eot?c3wvz6);src:url(../fonts/icomoon.eot?c3wvz6#iefix) format('embedded-opentype'),url(../fonts/icomoon.ttf?c3wvz6) format('truetype'),url(../fonts/icomoon.woff?c3wvz6) format('woff'),url(../fonts/icomoon.svg?c3wvz6#icomoon) format('svg');font-weight:400;font-style:normal}[class*=" event-icon-"],[class^=event-icon-]{font-family:icomoon!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.event-icon-spinner2:before{content:"\e97b"}@keyframes anim-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.spinner{display:inline-block;line-height:1;margin:.5em;animation:anim-rotate 2s infinite linear;color:#fff;text-shadow:0 0 .25em rgba(255,255,255,.3)}.event-lightbox-wrap .mfp-close{display:none}#event-lightbox{display:none;visibility:none;position:relative;width:500px;margin:0 auto;padding:20px;background-color:#fff}#event-lightbox.event-fade{display:block;opacity:0;-webkit-backface-visibility:hidden;-webkit-transition:all .35s ease-in-out;-moz-transition:all .35s ease-in-out;-o-transition:all .35s ease-in-out;transition:all .35s ease-in-out}#event-lightbox.event-fade.event-in{opacity:1;visibility:visible}.tp-event-notice{margin:10px 0 2em!important;position:relative;list-style:none!important;width:auto;word-wrap:break-word}.tp-event-notice.success{color:#31708f;background:#d9edf7;padding:10px 15px!important}.tp-event-notice.error{padding:1em 2em 1em 1.5em!important;background-color:#fdb494;color:#515151;border-left:3px solid #c35a2c}.form-row input,.form-row input[type=checkbox],.form-row input[type=number],.form-row input[type=password],.form-row input[type=text],.form-row input[type=email]{border:1px solid #eee;background-color:transparent}.form-row.has-error{color:#a00}.form-row.has-error input{border-color:#a00}.form-row.validated input{border-color:#69bf29}.event_auth_button{background:#1a1a1a;border:0;border-radius:2px;color:#fff;font-family:Montserrat,"Helvetica Neue",sans-serif;font-weight:700;letter-spacing:.046875em;line-height:1;padding:.84375em .875em .78125em;text-transform:uppercase}.event_auth_button:hover{background:#007acc;cursor:pointer;color:#fff}.event_auth_payment_methods{margin:10px 0;list-style:none;padding:10px;border-radius:3px;background-color:#eee}.single-tp_event .entry-summary{margin-bottom:0}.entry-summary .entry-content,.entry-summary .entry-countdown,.post-type-archive-tp_event .entry-title,.tax-tp_event_category .entry-title{margin-top:20px}.post-type-archive-tp_event ul,.tax-tp_event_category ul{list-style-type:none}.post-type-archive-tp_event ul li.tp_event,.tax-tp_event_category ul li.tp_event{width:calc(50% - 30px);float:left}.post-type-archive-tp_event ul li.tp_event:nth-child(2n),.tax-tp_event_category ul li.tp_event:nth-child(2n){margin-left:15px}.post-type-archive-tp_event ul li.tp_event:nth-child(2n+1),.tax-tp_event_category ul li.tp_event:nth-child(2n+1){margin-right:15px;clear:both}#content article.tp_single_event .entry-content{float:none;width:100%}.single-tp_event .entry-register a{display:inline-block;margin-top:-10px;margin-bottom:20px}
assets/fonts/glyphicons-halflings-regular.eot ADDED
Binary file
assets/fonts/glyphicons-halflings-regular.svg ADDED
@@ -0,0 +1,288 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata></metadata>
5
+ <defs>
6
+ <font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
7
+ <font-face units-per-em="1200" ascent="960" descent="-240" />
8
+ <missing-glyph horiz-adv-x="500" />
9
+ <glyph horiz-adv-x="0" />
10
+ <glyph horiz-adv-x="400" />
11
+ <glyph unicode=" " />
12
+ <glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
13
+ <glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
14
+ <glyph unicode="&#xa0;" />
15
+ <glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
16
+ <glyph unicode="&#x2000;" horiz-adv-x="650" />
17
+ <glyph unicode="&#x2001;" horiz-adv-x="1300" />
18
+ <glyph unicode="&#x2002;" horiz-adv-x="650" />
19
+ <glyph unicode="&#x2003;" horiz-adv-x="1300" />
20
+ <glyph unicode="&#x2004;" horiz-adv-x="433" />
21
+ <glyph unicode="&#x2005;" horiz-adv-x="325" />
22
+ <glyph unicode="&#x2006;" horiz-adv-x="216" />
23
+ <glyph unicode="&#x2007;" horiz-adv-x="216" />
24
+ <glyph unicode="&#x2008;" horiz-adv-x="162" />
25
+ <glyph unicode="&#x2009;" horiz-adv-x="260" />
26
+ <glyph unicode="&#x200a;" horiz-adv-x="72" />
27
+ <glyph unicode="&#x202f;" horiz-adv-x="260" />
28
+ <glyph unicode="&#x205f;" horiz-adv-x="325" />
29
+ <glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
30
+ <glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
31
+ <glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
32
+ <glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
33
+ <glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
34
+ <glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
35
+ <glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
36
+ <glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
37
+ <glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
38
+ <glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
39
+ <glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
40
+ <glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
41
+ <glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
42
+ <glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
43
+ <glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
44
+ <glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
45
+ <glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
46
+ <glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
47
+ <glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
48
+ <glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
49
+ <glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
50
+ <glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
51
+ <glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
52
+ <glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
53
+ <glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
54
+ <glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
55
+ <glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
56
+ <glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
57
+ <glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
58
+ <glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
59
+ <glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
60
+ <glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
61
+ <glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
62
+ <glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
63
+ <glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
64
+ <glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
65
+ <glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
66
+ <glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
67
+ <glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
68
+ <glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
69
+ <glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
70
+ <glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
71
+ <glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
72
+ <glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
73
+ <glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
74
+ <glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
75
+ <glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
76
+ <glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
77
+ <glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
78
+ <glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
79
+ <glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
80
+ <glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
81
+ <glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
82
+ <glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
83
+ <glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
84
+ <glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
85
+ <glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
86
+ <glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
87
+ <glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
88
+ <glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
89
+ <glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
90
+ <glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
91
+ <glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
92
+ <glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
93
+ <glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
94
+ <glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
95
+ <glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
96
+ <glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
97
+ <glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
98
+ <glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
99
+ <glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
100
+ <glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
101
+ <glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
102
+ <glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
103
+ <glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
104
+ <glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
105
+ <glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
106
+ <glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
107
+ <glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
108
+ <glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
109
+ <glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
110
+ <glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
111
+ <glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
112
+ <glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
113
+ <glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
114
+ <glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
115
+ <glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
116
+ <glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
117
+ <glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
118
+ <glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
119
+ <glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
120
+ <glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
121
+ <glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
122
+ <glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
123
+ <glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
124
+ <glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
125
+ <glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
126
+ <glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
127
+ <glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
128
+ <glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
129
+ <glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
130
+ <glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
131
+ <glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
132
+ <glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
133
+ <glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
134
+ <glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
135
+ <glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
136
+ <glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
137
+ <glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
138
+ <glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
139
+ <glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
140
+ <glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
141
+ <glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
142
+ <glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
143
+ <glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
144
+ <glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
145
+ <glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
146
+ <glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
147
+ <glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
148
+ <glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
149
+ <glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
150
+ <glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
151
+ <glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
152
+ <glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
153
+ <glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
154
+ <glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
155
+ <glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
156
+ <glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
157
+ <glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
158
+ <glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
159
+ <glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
160
+ <glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
161
+ <glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
162
+ <glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
163
+ <glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
164
+ <glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
165
+ <glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
166
+ <glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
167
+ <glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
168
+ <glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
169
+ <glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
170
+ <glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
171
+ <glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
172
+ <glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
173
+ <glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
174
+ <glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
175
+ <glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
176
+ <glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
177
+ <glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
178
+ <glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
179
+ <glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
180
+ <glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
181
+ <glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
182
+ <glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
183
+ <glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
184
+ <glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
185
+ <glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
186
+ <glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
187
+ <glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
188
+ <glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
189
+ <glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
190
+ <glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
191
+ <glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
192
+ <glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
193
+ <glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
194
+ <glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
195
+ <glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
196
+ <glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
197
+ <glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
198
+ <glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
199
+ <glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
200
+ <glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
201
+ <glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
202
+ <glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
203
+ <glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
204
+ <glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
205
+ <glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
206
+ <glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
207
+ <glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
208
+ <glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
209
+ <glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
210
+ <glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
211
+ <glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
212
+ <glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
213
+ <glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
214
+ <glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
215
+ <glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
216
+ <glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
217
+ <glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
218
+ <glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
219
+ <glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
220
+ <glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
221
+ <glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
222
+ <glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
223
+ <glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
224
+ <glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
225
+ <glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
226
+ <glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
227
+ <glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
228
+ <glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
229
+ <glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
230
+ <glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
231
+ <glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
232
+ <glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
233
+ <glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
234
+ <glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
235
+ <glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
236
+ <glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
237
+ <glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
238
+ <glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
239
+ <glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
240
+ <glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
241
+ <glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
242
+ <glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
243
+ <glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
244
+ <glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
245
+ <glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
246
+ <glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
247
+ <glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
248
+ <glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
249
+ <glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
250
+ <glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
251
+ <glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
252
+ <glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
253
+ <glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
254
+ <glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
255
+ <glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
256
+ <glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
257
+ <glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
258
+ <glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
259
+ <glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
260
+ <glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
261
+ <glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
262
+ <glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
263
+ <glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
264
+ <glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
265
+ <glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
266
+ <glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
267
+ <glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
268
+ <glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
269
+ <glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
270
+ <glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
271
+ <glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
272
+ <glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
273
+ <glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
274
+ <glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
275
+ <glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
276
+ <glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
277
+ <glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
278
+ <glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
279
+ <glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
280
+ <glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
281
+ <glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
282
+ <glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
283
+ <glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
284
+ <glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
285
+ <glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
286
+ <glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
287
+ </font>
288
+ </defs></svg>
assets/fonts/glyphicons-halflings-regular.ttf ADDED
Binary file
assets/fonts/glyphicons-halflings-regular.woff ADDED
Binary file
assets/fonts/glyphicons-halflings-regular.woff2 ADDED
Binary file
assets/fonts/icomoon.eot ADDED
Binary file
assets/fonts/icomoon.svg ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata>Generated by IcoMoon</metadata>
5
+ <defs>
6
+ <font id="icomoon" horiz-adv-x="1024">
7
+ <font-face units-per-em="1024" ascent="960" descent="-64" />
8
+ <missing-glyph horiz-adv-x="1024" />
9
+ <glyph unicode="&#x20;" horiz-adv-x="512" d="" />
10
+ <glyph unicode="&#xe97b;" glyph-name="spinner2" d="M1024 448c-1.278 66.862-15.784 133.516-42.576 194.462-26.704 61-65.462 116.258-113.042 161.92-47.552 45.696-103.944 81.82-164.984 105.652-61.004 23.924-126.596 35.352-191.398 33.966-64.81-1.282-129.332-15.374-188.334-41.356-59.048-25.896-112.542-63.47-156.734-109.576-44.224-46.082-79.16-100.708-102.186-159.798-23.114-59.062-34.128-122.52-32.746-185.27 1.286-62.76 14.964-125.148 40.134-182.206 25.088-57.1 61.476-108.828 106.11-151.548 44.61-42.754 97.472-76.504 154.614-98.72 57.118-22.304 118.446-32.902 179.142-31.526 60.708 1.29 120.962 14.554 176.076 38.914 55.15 24.282 105.116 59.48 146.366 102.644 41.282 43.14 73.844 94.236 95.254 149.43 13.034 33.458 21.88 68.4 26.542 103.798 1.246-0.072 2.498-0.12 3.762-0.12 35.346 0 64 28.652 64 64 0 1.796-0.094 3.572-0.238 5.332h0.238zM922.306 278.052c-23.472-53.202-57.484-101.4-99.178-141.18-41.67-39.81-91-71.186-144.244-91.79-53.228-20.678-110.29-30.452-166.884-29.082-56.604 1.298-112.596 13.736-163.82 36.474-51.25 22.666-97.684 55.49-135.994 95.712-38.338 40.198-68.528 87.764-88.322 139.058-19.87 51.284-29.228 106.214-27.864 160.756 1.302 54.552 13.328 108.412 35.254 157.69 21.858 49.3 53.498 93.97 92.246 130.81 38.73 36.868 84.53 65.87 133.874 84.856 49.338 19.060 102.136 28.006 154.626 26.644 52.5-1.306 104.228-12.918 151.562-34.034 47.352-21.050 90.256-51.502 125.624-88.782 35.396-37.258 63.21-81.294 81.39-128.688 18.248-47.392 26.782-98.058 25.424-148.496h0.238c-0.144-1.76-0.238-3.536-0.238-5.332 0-33.012 24.992-60.174 57.086-63.624-6.224-34.822-16.53-68.818-30.78-100.992z" />
11
+ </font></defs></svg>
assets/fonts/icomoon.ttf ADDED
Binary file
assets/fonts/icomoon.woff ADDED
Binary file
assets/images/map-marker.png ADDED
Binary file
assets/js/admin/admin-events.js ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function ($) {
2
+ "use strict";
3
+ var TP_Event_Admin = {};
4
+
5
+ TP_Event_Admin.init = function () {
6
+
7
+ // widgets
8
+ var forms = $('#widgets-right .widget-content');
9
+ for (var i = 0; i <= forms.length; i++) {
10
+ var form = $(forms[i]);
11
+
12
+ form.find('.tp_event_admin_widget:first').addClass('active');
13
+
14
+ form.find('.tp_event_widget_tab li a:first').addClass('button-primary');
15
+ $(document).on('click', '.tp_event_widget_tab li a', function (e) {
16
+ e.preventDefault();
17
+ var tab_content = $(this).attr('data-tab'),
18
+ widget_content = $(this).parents('.widget-content'),
19
+ parent = $(this).parents('.tp_event_widget_tab');
20
+ parent.find('li a').removeClass('button-primary');
21
+ $(this).addClass('button-primary');
22
+
23
+ widget_content.find('.tp_event_admin_widget').removeClass('active');
24
+ widget_content.find('.tp_event_admin_widget[data-status="' + tab_content + '"]').addClass('active');
25
+ return false;
26
+ });
27
+ }
28
+
29
+ $('input[name="thimpress_events_email_enable"]').on('click', function () {
30
+ var toggle = !($(this).is(':checked'));
31
+ $('.email-setting-form-name, .email-setting-email-form, .email-setting-subject').toggleClass('hide-if-js', toggle);
32
+ });
33
+
34
+ $('input[name="thimpress_events_paypal_enable"]').on('click', function () {
35
+ var toggle = !($(this).is(':checked'));
36
+ $('.paypal-production-email, .paypal-sandbox-mode, .paypal-sandbox-email').toggleClass('hide-if-js', toggle);
37
+ });
38
+
39
+ $('input[name="thimpress_events_allow_register_event"]').on('click', function () {
40
+ var toggle = !($(this).is(':checked'));
41
+ $('.setting-currency, .setting-currency-position, .setting-currency-thousand, .setting-currency-separator, .setting-number-decimals').toggleClass('hide-if-js', toggle);
42
+ });
43
+
44
+ $(document).on('click', '.tp-event-dismiss-notice button', function (event) {
45
+ var parent = $(this).closest('.tp-event-dismiss-notice');
46
+ if (parent.length) {
47
+ event.preventDefault();
48
+ $.ajax({
49
+ url : ajaxurl,
50
+ type: 'POST',
51
+ data: {
52
+ action: 'event_remove_notice'
53
+ }
54
+ })
55
+ }
56
+ });
57
+
58
+
59
+ TP_Event_Admin.admin_meta_boxes.init();
60
+ };
61
+
62
+ // event meta boxes
63
+ TP_Event_Admin.admin_meta_boxes = {
64
+ init : function () {
65
+ var _doc = $(document);
66
+ _doc.on('click', '.event_meta_panel .open-extra', this.open_extra);
67
+ this.datetimepicker();
68
+ },
69
+ open_extra : function (e) {
70
+ e.preventDefault();
71
+ var _this = $(this),
72
+ _input_target = $('#' + _this.attr('data-target')),
73
+ _group = _input_target.parents('.option_group:first'),
74
+ _data_text = _this.attr('data-text'),
75
+ _text = _this.text();
76
+
77
+ if (_input_target.val() === 'yes') {
78
+ _group.addClass('hide-if-js');
79
+ _input_target.val('');
80
+ } else {
81
+ _group.removeClass('hide-if-js');
82
+ _input_target.val('yes');
83
+ }
84
+
85
+ _this.attr('data-text', _text).text(_data_text);
86
+ },
87
+ datetimepicker: function () {
88
+ var _date_from = $('#_date_start'),
89
+ _time_from = $('#_time_start'),
90
+ _date_end = $('#_date_end'),
91
+ _time_end = $('#_time_end');
92
+
93
+ _date_from.datetimepicker({
94
+ timepicker: false,
95
+ format : 'Y-m-d',
96
+ onShow : function (ct) {
97
+ this.setOptions({
98
+ maxDate: _date_end.val() ? _date_end.val() : false
99
+ });
100
+ }
101
+ });
102
+ _time_from.datetimepicker({
103
+ datepicker: false,
104
+ format : 'H:i'
105
+ });
106
+ _date_end.datetimepicker({
107
+ timepicker: false,
108
+ format : 'Y-m-d',
109
+ setDate : '+1',
110
+ onShow : function (ct) {
111
+ this.setOptions({
112
+ minDate: _date_from.val() ? _date_from.val() : false
113
+ });
114
+ }
115
+ });
116
+ _time_end.datetimepicker({
117
+ datepicker: false,
118
+ format : 'H:i'
119
+ });
120
+ }
121
+
122
+ };
123
+
124
+ $(document).ready(function () {
125
+ TP_Event_Admin.init();
126
+ });
127
+ })(jQuery);
assets/js/admin/admin-events.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a){"use strict";var b={};b.init=function(){for(var c=a("#widgets-right .widget-content"),d=0;d<=c.length;d++){var e=a(c[d]);e.find(".tp_event_admin_widget:first").addClass("active"),e.find(".tp_event_widget_tab li a:first").addClass("button-primary"),a(document).on("click",".tp_event_widget_tab li a",function(b){b.preventDefault();var c=a(this).attr("data-tab"),d=a(this).parents(".widget-content"),e=a(this).parents(".tp_event_widget_tab");return e.find("li a").removeClass("button-primary"),a(this).addClass("button-primary"),d.find(".tp_event_admin_widget").removeClass("active"),d.find('.tp_event_admin_widget[data-status="'+c+'"]').addClass("active"),!1})}a('input[name="thimpress_events_email_enable"]').on("click",function(){var b=!a(this).is(":checked");a(".email-setting-form-name, .email-setting-email-form, .email-setting-subject").toggleClass("hide-if-js",b)}),a('input[name="thimpress_events_paypal_enable"]').on("click",function(){var b=!a(this).is(":checked");a(".paypal-production-email, .paypal-sandbox-mode, .paypal-sandbox-email").toggleClass("hide-if-js",b)}),a('input[name="thimpress_events_allow_register_event"]').on("click",function(){var b=!a(this).is(":checked");a(".setting-currency, .setting-currency-position, .setting-currency-thousand, .setting-currency-separator, .setting-number-decimals").toggleClass("hide-if-js",b)}),a(document).on("click",".tp-event-dismiss-notice button",function(b){var c=a(this).closest(".tp-event-dismiss-notice");c.length&&(b.preventDefault(),a.ajax({url:ajaxurl,type:"POST",data:{action:"event_remove_notice"}}))}),b.admin_meta_boxes.init()},b.admin_meta_boxes={init:function(){var b=a(document);b.on("click",".event_meta_panel .open-extra",this.open_extra),this.datetimepicker()},open_extra:function(b){b.preventDefault();var c=a(this),d=a("#"+c.attr("data-target")),e=d.parents(".option_group:first"),f=c.attr("data-text"),g=c.text();"yes"===d.val()?(e.addClass("hide-if-js"),d.val("")):(e.removeClass("hide-if-js"),d.val("yes")),c.attr("data-text",g).text(f)},datetimepicker:function(){var b=a("#_date_start"),c=a("#_time_start"),d=a("#_date_end"),e=a("#_time_end");b.datetimepicker({timepicker:!1,format:"Y-m-d",onShow:function(a){this.setOptions({maxDate:!!d.val()&&d.val()})}}),c.datetimepicker({datepicker:!1,format:"H:i"}),d.datetimepicker({timepicker:!1,format:"Y-m-d",setDate:"+1",onShow:function(a){this.setOptions({minDate:!!b.val()&&b.val()})}}),e.datetimepicker({datepicker:!1,format:"H:i"})}},a(document).ready(function(){b.init()})}(jQuery);
assets/js/datetimepicker/jquery.datetimepicker.full.js ADDED
@@ -0,0 +1,3192 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * @copyright Copyright &copy; Kartik Visweswaran, Krajee.com, 2014 - 2015
3
+ * @version 1.3.3
4
+ *
5
+ * Date formatter utility library that allows formatting date/time variables or Date objects using PHP DateTime format.
6
+ * @see http://php.net/manual/en/function.date.php
7
+ *
8
+ * For more JQuery plugins visit http://plugins.krajee.com
9
+ * For more Yii related demos visit http://demos.krajee.com
10
+ */
11
+ var DateFormatter;
12
+ (function () {
13
+ "use strict";
14
+
15
+ var _compare, _lpad, _extend, defaultSettings, DAY, HOUR;
16
+ DAY = 1000 * 60 * 60 * 24;
17
+ HOUR = 3600;
18
+
19
+ _compare = function (str1, str2) {
20
+ return typeof(str1) === 'string' && typeof(str2) === 'string' && str1.toLowerCase() === str2.toLowerCase();
21
+ };
22
+ _lpad = function (value, length, char) {
23
+ var chr = char || '0', val = value.toString();
24
+ return val.length < length ? _lpad(chr + val, length) : val;
25
+ };
26
+ _extend = function (out) {
27
+ var i, obj;
28
+ out = out || {};
29
+ for (i = 1; i < arguments.length; i++) {
30
+ obj = arguments[i];
31
+ if (!obj) {
32
+ continue;
33
+ }
34
+ for (var key in obj) {
35
+ if (obj.hasOwnProperty(key)) {
36
+ if (typeof obj[key] === 'object') {
37
+ _extend(out[key], obj[key]);
38
+ } else {
39
+ out[key] = obj[key];
40
+ }
41
+ }
42
+ }
43
+ }
44
+ return out;
45
+ };
46
+ defaultSettings = {
47
+ dateSettings: {
48
+ days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
49
+ daysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
50
+ months: [
51
+ 'January', 'February', 'March', 'April', 'May', 'June', 'July',
52
+ 'August', 'September', 'October', 'November', 'December'
53
+ ],
54
+ monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
55
+ meridiem: ['AM', 'PM'],
56
+ ordinal: function (number) {
57
+ var n = number % 10, suffixes = {1: 'st', 2: 'nd', 3: 'rd'};
58
+ return Math.floor(number % 100 / 10) === 1 || !suffixes[n] ? 'th' : suffixes[n];
59
+ }
60
+ },
61
+ separators: /[ \-+\/\.T:@]/g,
62
+ validParts: /[dDjlNSwzWFmMntLoYyaABgGhHisueTIOPZcrU]/g,
63
+ intParts: /[djwNzmnyYhHgGis]/g,
64
+ tzParts: /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
65
+ tzClip: /[^-+\dA-Z]/g
66
+ };
67
+
68
+ DateFormatter = function (options) {
69
+ var self = this, config = _extend(defaultSettings, options);
70
+ self.dateSettings = config.dateSettings;
71
+ self.separators = config.separators;
72
+ self.validParts = config.validParts;
73
+ self.intParts = config.intParts;
74
+ self.tzParts = config.tzParts;
75
+ self.tzClip = config.tzClip;
76
+ };
77
+
78
+ DateFormatter.prototype = {
79
+ constructor: DateFormatter,
80
+ parseDate: function (vDate, vFormat) {
81
+ var self = this, vFormatParts, vDateParts, i, vDateFlag = false, vTimeFlag = false, vDatePart, iDatePart,
82
+ vSettings = self.dateSettings, vMonth, vMeriIndex, vMeriOffset, len, mer,
83
+ out = {date: null, year: null, month: null, day: null, hour: 0, min: 0, sec: 0};
84
+ if (!vDate) {
85
+ return undefined;
86
+ }
87
+ if (vDate instanceof Date) {
88
+ return vDate;
89
+ }
90
+ if (typeof vDate === 'number') {
91
+ return new Date(vDate);
92
+ }
93
+ if (vFormat === 'U') {
94
+ i = parseInt(vDate);
95
+ return i ? new Date(i * 1000) : vDate;
96
+ }
97
+ if (typeof vDate !== 'string') {
98
+ return '';
99
+ }
100
+ vFormatParts = vFormat.match(self.validParts);
101
+ if (!vFormatParts || vFormatParts.length === 0) {
102
+ throw new Error("Invalid date format definition.");
103
+ }
104
+ vDateParts = vDate.replace(self.separators, '\0').split('\0');
105
+ for (i = 0; i < vDateParts.length; i++) {
106
+ vDatePart = vDateParts[i];
107
+ iDatePart = parseInt(vDatePart);
108
+ switch (vFormatParts[i]) {
109
+ case 'y':
110
+ case 'Y':
111
+ len = vDatePart.length;
112
+ if (len === 2) {
113
+ out.year = parseInt((iDatePart < 70 ? '20' : '19') + vDatePart);
114
+ } else if (len === 4) {
115
+ out.year = iDatePart;
116
+ }
117
+ vDateFlag = true;
118
+ break;
119
+ case 'm':
120
+ case 'n':
121
+ case 'M':
122
+ case 'F':
123
+ if (isNaN(vDatePart)) {
124
+ vMonth = vSettings.monthsShort.indexOf(vDatePart);
125
+ if (vMonth > -1) {
126
+ out.month = vMonth + 1;
127
+ }
128
+ vMonth = vSettings.months.indexOf(vDatePart);
129
+ if (vMonth > -1) {
130
+ out.month = vMonth + 1;
131
+ }
132
+ } else {
133
+ if (iDatePart >= 1 && iDatePart <= 12) {
134
+ out.month = iDatePart;
135
+ }
136
+ }
137
+ vDateFlag = true;
138
+ break;
139
+ case 'd':
140
+ case 'j':
141
+ if (iDatePart >= 1 && iDatePart <= 31) {
142
+ out.day = iDatePart;
143
+ }
144
+ vDateFlag = true;
145
+ break;
146
+ case 'g':
147
+ case 'h':
148
+ vMeriIndex = (vFormatParts.indexOf('a') > -1) ? vFormatParts.indexOf('a') :
149
+ (vFormatParts.indexOf('A') > -1) ? vFormatParts.indexOf('A') : -1;
150
+ mer = vDateParts[vMeriIndex];
151
+ if (vMeriIndex > -1) {
152
+ vMeriOffset = _compare(mer, vSettings.meridiem[0]) ? 0 :
153
+ (_compare(mer, vSettings.meridiem[1]) ? 12 : -1);
154
+ if (iDatePart >= 1 && iDatePart <= 12 && vMeriOffset > -1) {
155
+ out.hour = iDatePart + vMeriOffset;
156
+ } else if (iDatePart >= 0 && iDatePart <= 23) {
157
+ out.hour = iDatePart;
158
+ }
159
+ } else if (iDatePart >= 0 && iDatePart <= 23) {
160
+ out.hour = iDatePart;
161
+ }
162
+ vTimeFlag = true;
163
+ break;
164
+ case 'G':
165
+ case 'H':
166
+ if (iDatePart >= 0 && iDatePart <= 23) {
167
+ out.hour = iDatePart;
168
+ }
169
+ vTimeFlag = true;
170
+ break;
171
+ case 'i':
172
+ if (iDatePart >= 0 && iDatePart <= 59) {
173
+ out.min = iDatePart;
174
+ }
175
+ vTimeFlag = true;
176
+ break;
177
+ case 's':
178
+ if (iDatePart >= 0 && iDatePart <= 59) {
179
+ out.sec = iDatePart;
180
+ }
181
+ vTimeFlag = true;
182
+ break;
183
+ }
184
+ }
185
+ if (vDateFlag === true && out.year && out.month && out.day) {
186
+ out.date = new Date(out.year, out.month - 1, out.day, out.hour, out.min, out.sec, 0);
187
+ } else {
188
+ if (vTimeFlag !== true) {
189
+ return false;
190
+ }
191
+ out.date = new Date(0, 0, 0, out.hour, out.min, out.sec, 0);
192
+ }
193
+ return out.date;
194
+ },
195
+ guessDate: function (vDateStr, vFormat) {
196
+ if (typeof vDateStr !== 'string') {
197
+ return vDateStr;
198
+ }
199
+ var self = this, vParts = vDateStr.replace(self.separators, '\0').split('\0'), vPattern = /^[djmn]/g,
200
+ vFormatParts = vFormat.match(self.validParts), vDate = new Date(), vDigit = 0, vYear, i, iPart, iSec;
201
+
202
+ if (!vPattern.test(vFormatParts[0])) {
203
+ return vDateStr;
204
+ }
205
+
206
+ for (i = 0; i < vParts.length; i++) {
207
+ vDigit = 2;
208
+ iPart = vParts[i];
209
+ iSec = parseInt(iPart.substr(0, 2));
210
+ switch (i) {
211
+ case 0:
212
+ if (vFormatParts[0] === 'm' || vFormatParts[0] === 'n') {
213
+ vDate.setMonth(iSec - 1);
214
+ } else {
215
+ vDate.setDate(iSec);
216
+ }
217
+ break;
218
+ case 1:
219
+ if (vFormatParts[0] === 'm' || vFormatParts[0] === 'n') {
220
+ vDate.setDate(iSec);
221
+ } else {
222
+ vDate.setMonth(iSec - 1);
223
+ }
224
+ break;
225
+ case 2:
226
+ vYear = vDate.getFullYear();
227
+ if (iPart.length < 4) {
228
+ vDate.setFullYear(parseInt(vYear.toString().substr(0, 4 - iPart.length) + iPart));
229
+ vDigit = iPart.length;
230
+ } else {
231
+ vDate.setFullYear = parseInt(iPart.substr(0, 4));
232
+ vDigit = 4;
233
+ }
234
+ break;
235
+ case 3:
236
+ vDate.setHours(iSec);
237
+ break;
238
+ case 4:
239
+ vDate.setMinutes(iSec);
240
+ break;
241
+ case 5:
242
+ vDate.setSeconds(iSec);
243
+ break;
244
+ }
245
+ if (iPart.substr(vDigit).length > 0) {
246
+ vParts.splice(i + 1, 0, iPart.substr(vDigit));
247
+ }
248
+ }
249
+ return vDate;
250
+ },
251
+ parseFormat: function (vChar, vDate) {
252
+ var self = this, vSettings = self.dateSettings, fmt, backspace = /\\?(.?)/gi, doFormat = function (t, s) {
253
+ return fmt[t] ? fmt[t]() : s;
254
+ };
255
+ fmt = {
256
+ /////////
257
+ // DAY //
258
+ /////////
259
+ /**
260
+ * Day of month with leading 0: `01..31`
261
+ * @return {string}
262
+ */
263
+ d: function () {
264
+ return _lpad(fmt.j(), 2);
265
+ },
266
+ /**
267
+ * Shorthand day name: `Mon...Sun`
268
+ * @return {string}
269
+ */
270
+ D: function () {
271
+ return vSettings.daysShort[fmt.w()];
272
+ },
273
+ /**
274
+ * Day of month: `1..31`
275
+ * @return {number}
276
+ */
277
+ j: function () {
278
+ return vDate.getDate();
279
+ },
280
+ /**
281
+ * Full day name: `Monday...Sunday`
282
+ * @return {number}
283
+ */
284
+ l: function () {
285
+ return vSettings.days[fmt.w()];
286
+ },
287
+ /**
288
+ * ISO-8601 day of week: `1[Mon]..7[Sun]`
289
+ * @return {number}
290
+ */
291
+ N: function () {
292
+ return fmt.w() || 7;
293
+ },
294
+ /**
295
+ * Day of week: `0[Sun]..6[Sat]`
296
+ * @return {number}
297
+ */
298
+ w: function () {
299
+ return vDate.getDay();
300
+ },
301
+ /**
302
+ * Day of year: `0..365`
303
+ * @return {number}
304
+ */
305
+ z: function () {
306
+ var a = new Date(fmt.Y(), fmt.n() - 1, fmt.j()), b = new Date(fmt.Y(), 0, 1);
307
+ return Math.round((a - b) / DAY);
308
+ },
309
+
310
+ //////////
311
+ // WEEK //
312
+ //////////
313
+ /**
314
+ * ISO-8601 week number
315
+ * @return {number}
316
+ */
317
+ W: function () {
318
+ var a = new Date(fmt.Y(), fmt.n() - 1, fmt.j() - fmt.N() + 3), b = new Date(a.getFullYear(), 0, 4);
319
+ return _lpad(1 + Math.round((a - b) / DAY / 7), 2);
320
+ },
321
+
322
+ ///////////
323
+ // MONTH //
324
+ ///////////
325
+ /**
326
+ * Full month name: `January...December`
327
+ * @return {string}
328
+ */
329
+ F: function () {
330
+ return vSettings.months[vDate.getMonth()];
331
+ },
332
+ /**
333
+ * Month w/leading 0: `01..12`
334
+ * @return {string}
335
+ */
336
+ m: function () {
337
+ return _lpad(fmt.n(), 2);
338
+ },
339
+ /**
340
+ * Shorthand month name; `Jan...Dec`
341
+ * @return {string}
342
+ */
343
+ M: function () {
344
+ return vSettings.monthsShort[vDate.getMonth()];
345
+ },
346
+ /**
347
+ * Month: `1...12`
348
+ * @return {number}
349
+ */
350
+ n: function () {
351
+ return vDate.getMonth() + 1;
352
+ },
353
+ /**
354
+ * Days in month: `28...31`
355
+ * @return {number}
356
+ */
357
+ t: function () {
358
+ return (new Date(fmt.Y(), fmt.n(), 0)).getDate();
359
+ },
360
+
361
+ //////////
362
+ // YEAR //
363
+ //////////
364
+ /**
365
+ * Is leap year? `0 or 1`
366
+ * @return {number}
367
+ */
368
+ L: function () {
369
+ var Y = fmt.Y();
370
+ return (Y % 4 === 0 && Y % 100 !== 0 || Y % 400 === 0) ? 1 : 0;
371
+ },
372
+ /**
373
+ * ISO-8601 year
374
+ * @return {number}
375
+ */
376
+ o: function () {
377
+ var n = fmt.n(), W = fmt.W(), Y = fmt.Y();
378
+ return Y + (n === 12 && W < 9 ? 1 : n === 1 && W > 9 ? -1 : 0);
379
+ },
380
+ /**
381
+ * Full year: `e.g. 1980...2010`
382
+ * @return {number}
383
+ */
384
+ Y: function () {
385
+ return vDate.getFullYear();
386
+ },
387
+ /**
388
+ * Last two digits of year: `00...99`
389
+ * @return {string}
390
+ */
391
+ y: function () {
392
+ return fmt.Y().toString().slice(-2);
393
+ },
394
+
395
+ //////////
396
+ // TIME //
397
+ //////////
398
+ /**
399
+ * Meridian lower: `am or pm`
400
+ * @return {string}
401
+ */
402
+ a: function () {
403
+ return fmt.A().toLowerCase();
404
+ },
405
+ /**
406
+ * Meridian upper: `AM or PM`
407
+ * @return {string}
408
+ */
409
+ A: function () {
410
+ var n = fmt.G() < 12 ? 0 : 1;
411
+ return vSettings.meridiem[n];
412
+ },
413
+ /**
414
+ * Swatch Internet time: `000..999`
415
+ * @return {string}
416
+ */
417
+ B: function () {
418
+ var H = vDate.getUTCHours() * HOUR, i = vDate.getUTCMinutes() * 60, s = vDate.getUTCSeconds();
419
+ return _lpad(Math.floor((H + i + s + HOUR) / 86.4) % 1000, 3);
420
+ },
421
+ /**
422
+ * 12-Hours: `1..12`
423
+ * @return {number}
424
+ */
425
+ g: function () {
426
+ return fmt.G() % 12 || 12;
427
+ },
428
+ /**
429
+ * 24-Hours: `0..23`
430
+ * @return {number}
431
+ */
432
+ G: function () {
433
+ return vDate.getHours();
434
+ },
435
+ /**
436
+ * 12-Hours with leading 0: `01..12`
437
+ * @return {string}
438
+ */
439
+ h: function () {
440
+ return _lpad(fmt.g(), 2);
441
+ },
442
+ /**
443
+ * 24-Hours w/leading 0: `00..23`
444
+ * @return {string}
445
+ */
446
+ H: function () {
447
+ return _lpad(fmt.G(), 2);
448
+ },
449
+ /**
450
+ * Minutes w/leading 0: `00..59`
451
+ * @return {string}
452
+ */
453
+ i: function () {
454
+ return _lpad(vDate.getMinutes(), 2);
455
+ },
456
+ /**
457
+ * Seconds w/leading 0: `00..59`
458
+ * @return {string}
459
+ */
460
+ s: function () {
461
+ return _lpad(vDate.getSeconds(), 2);
462
+ },
463
+ /**
464
+ * Microseconds: `000000-999000`
465
+ * @return {string}
466
+ */
467
+ u: function () {
468
+ return _lpad(vDate.getMilliseconds() * 1000, 6);
469
+ },
470
+
471
+ //////////////
472
+ // TIMEZONE //
473
+ //////////////
474
+ /**
475
+ * Timezone identifier: `e.g. Atlantic/Azores, ...`
476
+ * @return {string}
477
+ */
478
+ e: function () {
479
+ var str = /\((.*)\)/.exec(String(vDate))[1];
480
+ return str || 'Coordinated Universal Time';
481
+ },
482
+ /**
483
+ * Timezone abbreviation: `e.g. EST, MDT, ...`
484
+ * @return {string}
485
+ */
486
+ T: function () {
487
+ var str = (String(vDate).match(self.tzParts) || [""]).pop().replace(self.tzClip, "");
488
+ return str || 'UTC';
489
+ },
490
+ /**
491
+ * DST observed? `0 or 1`
492
+ * @return {number}
493
+ */
494
+ I: function () {
495
+ var a = new Date(fmt.Y(), 0), c = Date.UTC(fmt.Y(), 0),
496
+ b = new Date(fmt.Y(), 6), d = Date.UTC(fmt.Y(), 6);
497
+ return ((a - c) !== (b - d)) ? 1 : 0;
498
+ },
499
+ /**
500
+ * Difference to GMT in hour format: `e.g. +0200`
501
+ * @return {string}
502
+ */
503
+ O: function () {
504
+ var tzo = vDate.getTimezoneOffset(), a = Math.abs(tzo);
505
+ return (tzo > 0 ? '-' : '+') + _lpad(Math.floor(a / 60) * 100 + a % 60, 4);
506
+ },
507
+ /**
508
+ * Difference to GMT with colon: `e.g. +02:00`
509
+ * @return {string}
510
+ */
511
+ P: function () {
512
+ var O = fmt.O();
513
+ return (O.substr(0, 3) + ':' + O.substr(3, 2));
514
+ },
515
+ /**
516
+ * Timezone offset in seconds: `-43200...50400`
517
+ * @return {number}
518
+ */
519
+ Z: function () {
520
+ return -vDate.getTimezoneOffset() * 60;
521
+ },
522
+
523
+ ////////////////////
524
+ // FULL DATE TIME //
525
+ ////////////////////
526
+ /**
527
+ * ISO-8601 date
528
+ * @return {string}
529
+ */
530
+ c: function () {
531
+ return 'Y-m-d\\TH:i:sP'.replace(backspace, doFormat);
532
+ },
533
+ /**
534
+ * RFC 2822 date
535
+ * @return {string}
536
+ */
537
+ r: function () {
538
+ return 'D, d M Y H:i:s O'.replace(backspace, doFormat);
539
+ },
540
+ /**
541
+ * Seconds since UNIX epoch
542
+ * @return {number}
543
+ */
544
+ U: function () {
545
+ return vDate.getTime() / 1000 || 0;
546
+ }
547
+ };
548
+ return doFormat(vChar, vChar);
549
+ },
550
+ formatDate: function (vDate, vFormat) {
551
+ var self = this, i, n, len, str, vChar, vDateStr = '';
552
+ if (typeof vDate === 'string') {
553
+ vDate = self.parseDate(vDate, vFormat);
554
+ if (vDate === false) {
555
+ return false;
556
+ }
557
+ }
558
+ if (vDate instanceof Date) {
559
+ len = vFormat.length;
560
+ for (i = 0; i < len; i++) {
561
+ vChar = vFormat.charAt(i);
562
+ if (vChar === 'S') {
563
+ continue;
564
+ }
565
+ str = self.parseFormat(vChar, vDate);
566
+ if (i !== (len - 1) && self.intParts.test(vChar) && vFormat.charAt(i + 1) === 'S') {
567
+ n = parseInt(str);
568
+ str += self.dateSettings.ordinal(n);
569
+ }
570
+ vDateStr += str;
571
+ }
572
+ return vDateStr;
573
+ }
574
+ return '';
575
+ }
576
+ };
577
+ })();/**
578
+ * @preserve jQuery DateTimePicker plugin v2.5.4
579
+ * @homepage http://xdsoft.net/jqplugins/datetimepicker/
580
+ * @author Chupurnov Valeriy (<chupurnov@gmail.com>)
581
+ */
582
+ /*global DateFormatter, document,window,jQuery,setTimeout,clearTimeout,HighlightedDate,getCurrentValue*/
583
+ ;(function (factory) {
584
+ if ( typeof define === 'function' && define.amd ) {
585
+ // AMD. Register as an anonymous module.
586
+ define(['jquery', 'jquery-mousewheel'], factory);
587
+ } else if (typeof exports === 'object') {
588
+ // Node/CommonJS style for Browserify
589
+ module.exports = factory;
590
+ } else {
591
+ // Browser globals
592
+ factory(jQuery);
593
+ }
594
+ }(function ($) {
595
+ 'use strict';
596
+
597
+ var currentlyScrollingTimeDiv = false;
598
+
599
+ var default_options = {
600
+ i18n: {
601
+ ar: { // Arabic
602
+ months: [
603
+ "كانون الثاني", "شباط", "آذار", "نيسان", "مايو", "حزيران", "تموز", "آب", "أيلول", "تشرين الأول", "تشرين الثاني", "كانون الأول"
604
+ ],
605
+ dayOfWeekShort: [
606
+ "ن", "ث", "ع", "خ", "ج", "س", "ح"
607
+ ],
608
+ dayOfWeek: ["الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت", "الأحد"]
609
+ },
610
+ ro: { // Romanian
611
+ months: [
612
+ "Ianuarie", "Februarie", "Martie", "Aprilie", "Mai", "Iunie", "Iulie", "August", "Septembrie", "Octombrie", "Noiembrie", "Decembrie"
613
+ ],
614
+ dayOfWeekShort: [
615
+ "Du", "Lu", "Ma", "Mi", "Jo", "Vi", "Sâ"
616
+ ],
617
+ dayOfWeek: ["Duminică", "Luni", "Marţi", "Miercuri", "Joi", "Vineri", "Sâmbătă"]
618
+ },
619
+ id: { // Indonesian
620
+ months: [
621
+ "Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"
622
+ ],
623
+ dayOfWeekShort: [
624
+ "Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"
625
+ ],
626
+ dayOfWeek: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"]
627
+ },
628
+ is: { // Icelandic
629
+ months: [
630
+ "Janúar", "Febrúar", "Mars", "Apríl", "Maí", "Júní", "Júlí", "Ágúst", "September", "Október", "Nóvember", "Desember"
631
+ ],
632
+ dayOfWeekShort: [
633
+ "Sun", "Mán", "Þrið", "Mið", "Fim", "Fös", "Lau"
634
+ ],
635
+ dayOfWeek: ["Sunnudagur", "Mánudagur", "Þriðjudagur", "Miðvikudagur", "Fimmtudagur", "Föstudagur", "Laugardagur"]
636
+ },
637
+ bg: { // Bulgarian
638
+ months: [
639
+ "Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември"
640
+ ],
641
+ dayOfWeekShort: [
642
+ "Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"
643
+ ],
644
+ dayOfWeek: ["Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота"]
645
+ },
646
+ fa: { // Persian/Farsi
647
+ months: [
648
+ 'فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'
649
+ ],
650
+ dayOfWeekShort: [
651
+ 'یکشنبه', 'دوشنبه', 'سه شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'
652
+ ],
653
+ dayOfWeek: ["یک‌شنبه", "دوشنبه", "سه‌شنبه", "چهارشنبه", "پنج‌شنبه", "جمعه", "شنبه", "یک‌شنبه"]
654
+ },
655
+ ru: { // Russian
656
+ months: [
657
+ 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'
658
+ ],
659
+ dayOfWeekShort: [
660
+ "Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"
661
+ ],
662
+ dayOfWeek: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"]
663
+ },
664
+ uk: { // Ukrainian
665
+ months: [
666
+ 'Січень', 'Лютий', 'Березень', 'Квітень', 'Травень', 'Червень', 'Липень', 'Серпень', 'Вересень', 'Жовтень', 'Листопад', 'Грудень'
667
+ ],
668
+ dayOfWeekShort: [
669
+ "Ндл", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Сбт"
670
+ ],
671
+ dayOfWeek: ["Неділя", "Понеділок", "Вівторок", "Середа", "Четвер", "П'ятниця", "Субота"]
672
+ },
673
+ en: { // English
674
+ months: [
675
+ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
676
+ ],
677
+ dayOfWeekShort: [
678
+ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
679
+ ],
680
+ dayOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
681
+ },
682
+ el: { // Ελληνικά
683
+ months: [
684
+ "Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος"
685
+ ],
686
+ dayOfWeekShort: [
687
+ "Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ"
688
+ ],
689
+ dayOfWeek: ["Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο"]
690
+ },
691
+ de: { // German
692
+ months: [
693
+ 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'
694
+ ],
695
+ dayOfWeekShort: [
696
+ "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"
697
+ ],
698
+ dayOfWeek: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"]
699
+ },
700
+ nl: { // Dutch
701
+ months: [
702
+ "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"
703
+ ],
704
+ dayOfWeekShort: [
705
+ "zo", "ma", "di", "wo", "do", "vr", "za"
706
+ ],
707
+ dayOfWeek: ["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"]
708
+ },
709
+ tr: { // Turkish
710
+ months: [
711
+ "Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"
712
+ ],
713
+ dayOfWeekShort: [
714
+ "Paz", "Pts", "Sal", "Çar", "Per", "Cum", "Cts"
715
+ ],
716
+ dayOfWeek: ["Pazar", "Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi"]
717
+ },
718
+ fr: { //French
719
+ months: [
720
+ "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"
721
+ ],
722
+ dayOfWeekShort: [
723
+ "Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"
724
+ ],
725
+ dayOfWeek: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"]
726
+ },
727
+ es: { // Spanish
728
+ months: [
729
+ "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"
730
+ ],
731
+ dayOfWeekShort: [
732
+ "Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb"
733
+ ],
734
+ dayOfWeek: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"]
735
+ },
736
+ th: { // Thai
737
+ months: [
738
+ 'มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม'
739
+ ],
740
+ dayOfWeekShort: [
741
+ 'อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'
742
+ ],
743
+ dayOfWeek: ["อาทิตย์", "จันทร์", "อังคาร", "พุธ", "พฤหัส", "ศุกร์", "เสาร์", "อาทิตย์"]
744
+ },
745
+ pl: { // Polish
746
+ months: [
747
+ "styczeń", "luty", "marzec", "kwiecień", "maj", "czerwiec", "lipiec", "sierpień", "wrzesień", "październik", "listopad", "grudzień"
748
+ ],
749
+ dayOfWeekShort: [
750
+ "nd", "pn", "wt", "śr", "cz", "pt", "sb"
751
+ ],
752
+ dayOfWeek: ["niedziela", "poniedziałek", "wtorek", "środa", "czwartek", "piątek", "sobota"]
753
+ },
754
+ pt: { // Portuguese
755
+ months: [
756
+ "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"
757
+ ],
758
+ dayOfWeekShort: [
759
+ "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab"
760
+ ],
761
+ dayOfWeek: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"]
762
+ },
763
+ ch: { // Simplified Chinese
764
+ months: [
765
+ "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"
766
+ ],
767
+ dayOfWeekShort: [
768
+ "日", "一", "二", "三", "四", "五", "六"
769
+ ]
770
+ },
771
+ se: { // Swedish
772
+ months: [
773
+ "Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"
774
+ ],
775
+ dayOfWeekShort: [
776
+ "Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör"
777
+ ]
778
+ },
779
+ kr: { // Korean
780
+ months: [
781
+ "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"
782
+ ],
783
+ dayOfWeekShort: [
784
+ "일", "월", "화", "수", "목", "금", "토"
785
+ ],
786
+ dayOfWeek: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"]
787
+ },
788
+ it: { // Italian
789
+ months: [
790
+ "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"
791
+ ],
792
+ dayOfWeekShort: [
793
+ "Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab"
794
+ ],
795
+ dayOfWeek: ["Domenica", "Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"]
796
+ },
797
+ da: { // Dansk
798
+ months: [
799
+ "January", "Februar", "Marts", "April", "Maj", "Juni", "July", "August", "September", "Oktober", "November", "December"
800
+ ],
801
+ dayOfWeekShort: [
802
+ "Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør"
803
+ ],
804
+ dayOfWeek: ["søndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag"]
805
+ },
806
+ no: { // Norwegian
807
+ months: [
808
+ "Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"
809
+ ],
810
+ dayOfWeekShort: [
811
+ "Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør"
812
+ ],
813
+ dayOfWeek: ['Søndag', 'Mandag', 'Tirsdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lørdag']
814
+ },
815
+ ja: { // Japanese
816
+ months: [
817
+ "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"
818
+ ],
819
+ dayOfWeekShort: [
820
+ "日", "月", "火", "水", "木", "金", "土"
821
+ ],
822
+ dayOfWeek: ["日曜", "月曜", "火曜", "水曜", "木曜", "金曜", "土曜"]
823
+ },
824
+ vi: { // Vietnamese
825
+ months: [
826
+ "Tháng 1", "Tháng 2", "Tháng 3", "Tháng 4", "Tháng 5", "Tháng 6", "Tháng 7", "Tháng 8", "Tháng 9", "Tháng 10", "Tháng 11", "Tháng 12"
827
+ ],
828
+ dayOfWeekShort: [
829
+ "CN", "T2", "T3", "T4", "T5", "T6", "T7"
830
+ ],
831
+ dayOfWeek: ["Chủ nhật", "Thứ hai", "Thứ ba", "Thứ tư", "Thứ năm", "Thứ sáu", "Thứ bảy"]
832
+ },
833
+ sl: { // Slovenščina
834
+ months: [
835
+ "Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December"
836
+ ],
837
+ dayOfWeekShort: [
838
+ "Ned", "Pon", "Tor", "Sre", "Čet", "Pet", "Sob"
839
+ ],
840
+ dayOfWeek: ["Nedelja", "Ponedeljek", "Torek", "Sreda", "Četrtek", "Petek", "Sobota"]
841
+ },
842
+ cs: { // Čeština
843
+ months: [
844
+ "Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"
845
+ ],
846
+ dayOfWeekShort: [
847
+ "Ne", "Po", "Út", "St", "Čt", "Pá", "So"
848
+ ]
849
+ },
850
+ hu: { // Hungarian
851
+ months: [
852
+ "Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"
853
+ ],
854
+ dayOfWeekShort: [
855
+ "Va", "Hé", "Ke", "Sze", "Cs", "Pé", "Szo"
856
+ ],
857
+ dayOfWeek: ["vasárnap", "hétfő", "kedd", "szerda", "csütörtök", "péntek", "szombat"]
858
+ },
859
+ az: { //Azerbaijanian (Azeri)
860
+ months: [
861
+ "Yanvar", "Fevral", "Mart", "Aprel", "May", "Iyun", "Iyul", "Avqust", "Sentyabr", "Oktyabr", "Noyabr", "Dekabr"
862
+ ],
863
+ dayOfWeekShort: [
864
+ "B", "Be", "Ça", "Ç", "Ca", "C", "Ş"
865
+ ],
866
+ dayOfWeek: ["Bazar", "Bazar ertəsi", "Çərşənbə axşamı", "Çərşənbə", "Cümə axşamı", "Cümə", "Şənbə"]
867
+ },
868
+ bs: { //Bosanski
869
+ months: [
870
+ "Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"
871
+ ],
872
+ dayOfWeekShort: [
873
+ "Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub"
874
+ ],
875
+ dayOfWeek: ["Nedjelja","Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"]
876
+ },
877
+ ca: { //Català
878
+ months: [
879
+ "Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre"
880
+ ],
881
+ dayOfWeekShort: [
882
+ "Dg", "Dl", "Dt", "Dc", "Dj", "Dv", "Ds"
883
+ ],
884
+ dayOfWeek: ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte"]
885
+ },
886
+ 'en-GB': { //English (British)
887
+ months: [
888
+ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
889
+ ],
890
+ dayOfWeekShort: [
891
+ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
892
+ ],
893
+ dayOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
894
+ },
895
+ et: { //"Eesti"
896
+ months: [
897
+ "Jaanuar", "Veebruar", "Märts", "Aprill", "Mai", "Juuni", "Juuli", "August", "September", "Oktoober", "November", "Detsember"
898
+ ],
899
+ dayOfWeekShort: [
900
+ "P", "E", "T", "K", "N", "R", "L"
901
+ ],
902
+ dayOfWeek: ["Pühapäev", "Esmaspäev", "Teisipäev", "Kolmapäev", "Neljapäev", "Reede", "Laupäev"]
903
+ },
904
+ eu: { //Euskara
905
+ months: [
906
+ "Urtarrila", "Otsaila", "Martxoa", "Apirila", "Maiatza", "Ekaina", "Uztaila", "Abuztua", "Iraila", "Urria", "Azaroa", "Abendua"
907
+ ],
908
+ dayOfWeekShort: [
909
+ "Ig.", "Al.", "Ar.", "Az.", "Og.", "Or.", "La."
910
+ ],
911
+ dayOfWeek: ['Igandea', 'Astelehena', 'Asteartea', 'Asteazkena', 'Osteguna', 'Ostirala', 'Larunbata']
912
+ },
913
+ fi: { //Finnish (Suomi)
914
+ months: [
915
+ "Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kesäkuu", "Heinäkuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu"
916
+ ],
917
+ dayOfWeekShort: [
918
+ "Su", "Ma", "Ti", "Ke", "To", "Pe", "La"
919
+ ],
920
+ dayOfWeek: ["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"]
921
+ },
922
+ gl: { //Galego
923
+ months: [
924
+ "Xan", "Feb", "Maz", "Abr", "Mai", "Xun", "Xul", "Ago", "Set", "Out", "Nov", "Dec"
925
+ ],
926
+ dayOfWeekShort: [
927
+ "Dom", "Lun", "Mar", "Mer", "Xov", "Ven", "Sab"
928
+ ],
929
+ dayOfWeek: ["Domingo", "Luns", "Martes", "Mércores", "Xoves", "Venres", "Sábado"]
930
+ },
931
+ hr: { //Hrvatski
932
+ months: [
933
+ "Siječanj", "Veljača", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac"
934
+ ],
935
+ dayOfWeekShort: [
936
+ "Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub"
937
+ ],
938
+ dayOfWeek: ["Nedjelja", "Ponedjeljak", "Utorak", "Srijeda", "Četvrtak", "Petak", "Subota"]
939
+ },
940
+ ko: { //Korean (한국어)
941
+ months: [
942
+ "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"
943
+ ],
944
+ dayOfWeekShort: [
945
+ "일", "월", "화", "수", "목", "금", "토"
946
+ ],
947
+ dayOfWeek: ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"]
948
+ },
949
+ lt: { //Lithuanian (lietuvių)
950
+ months: [
951
+ "Sausio", "Vasario", "Kovo", "Balandžio", "Gegužės", "Birželio", "Liepos", "Rugpjūčio", "Rugsėjo", "Spalio", "Lapkričio", "Gruodžio"
952
+ ],
953
+ dayOfWeekShort: [
954
+ "Sek", "Pir", "Ant", "Tre", "Ket", "Pen", "Šeš"
955
+ ],
956
+ dayOfWeek: ["Sekmadienis", "Pirmadienis", "Antradienis", "Trečiadienis", "Ketvirtadienis", "Penktadienis", "Šeštadienis"]
957
+ },
958
+ lv: { //Latvian (Latviešu)
959
+ months: [
960
+ "Janvāris", "Februāris", "Marts", "Aprīlis ", "Maijs", "Jūnijs", "Jūlijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris"
961
+ ],
962
+ dayOfWeekShort: [
963
+ "Sv", "Pr", "Ot", "Tr", "Ct", "Pk", "St"
964
+ ],
965
+ dayOfWeek: ["Svētdiena", "Pirmdiena", "Otrdiena", "Trešdiena", "Ceturtdiena", "Piektdiena", "Sestdiena"]
966
+ },
967
+ mk: { //Macedonian (Македонски)
968
+ months: [
969
+ "јануари", "февруари", "март", "април", "мај", "јуни", "јули", "август", "септември", "октомври", "ноември", "декември"
970
+ ],
971
+ dayOfWeekShort: [
972
+ "нед", "пон", "вто", "сре", "чет", "пет", "саб"
973
+ ],
974
+ dayOfWeek: ["Недела", "Понеделник", "Вторник", "Среда", "Четврток", "Петок", "Сабота"]
975
+ },
976
+ mn: { //Mongolian (Монгол)
977
+ months: [
978
+ "1-р сар", "2-р сар", "3-р сар", "4-р сар", "5-р сар", "6-р сар", "7-р сар", "8-р сар", "9-р сар", "10-р сар", "11-р сар", "12-р сар"
979
+ ],
980
+ dayOfWeekShort: [
981
+ "Дав", "Мяг", "Лха", "Пүр", "Бсн", "Бям", "Ням"
982
+ ],
983
+ dayOfWeek: ["Даваа", "Мягмар", "Лхагва", "Пүрэв", "Баасан", "Бямба", "Ням"]
984
+ },
985
+ 'pt-BR': { //Português(Brasil)
986
+ months: [
987
+ "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"
988
+ ],
989
+ dayOfWeekShort: [
990
+ "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb"
991
+ ],
992
+ dayOfWeek: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"]
993
+ },
994
+ sk: { //Slovenčina
995
+ months: [
996
+ "Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December"
997
+ ],
998
+ dayOfWeekShort: [
999
+ "Ne", "Po", "Ut", "St", "Št", "Pi", "So"
1000
+ ],
1001
+ dayOfWeek: ["Nedeľa", "Pondelok", "Utorok", "Streda", "Štvrtok", "Piatok", "Sobota"]
1002
+ },
1003
+ sq: { //Albanian (Shqip)
1004
+ months: [
1005
+ "Janar", "Shkurt", "Mars", "Prill", "Maj", "Qershor", "Korrik", "Gusht", "Shtator", "Tetor", "Nëntor", "Dhjetor"
1006
+ ],
1007
+ dayOfWeekShort: [
1008
+ "Die", "Hën", "Mar", "Mër", "Enj", "Pre", "Shtu"
1009
+ ],
1010
+ dayOfWeek: ["E Diel", "E Hënë", "E Martē", "E Mërkurë", "E Enjte", "E Premte", "E Shtunë"]
1011
+ },
1012
+ 'sr-YU': { //Serbian (Srpski)
1013
+ months: [
1014
+ "Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar"
1015
+ ],
1016
+ dayOfWeekShort: [
1017
+ "Ned", "Pon", "Uto", "Sre", "čet", "Pet", "Sub"
1018
+ ],
1019
+ dayOfWeek: ["Nedelja","Ponedeljak", "Utorak", "Sreda", "Četvrtak", "Petak", "Subota"]
1020
+ },
1021
+ sr: { //Serbian Cyrillic (Српски)
1022
+ months: [
1023
+ "јануар", "фебруар", "март", "април", "мај", "јун", "јул", "август", "септембар", "октобар", "новембар", "децембар"
1024
+ ],
1025
+ dayOfWeekShort: [
1026
+ "нед", "пон", "уто", "сре", "чет", "пет", "суб"
1027
+ ],
1028
+ dayOfWeek: ["Недеља","Понедељак", "Уторак", "Среда", "Четвртак", "Петак", "Субота"]
1029
+ },
1030
+ sv: { //Svenska
1031
+ months: [
1032
+ "Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"
1033
+ ],
1034
+ dayOfWeekShort: [
1035
+ "Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör"
1036
+ ],
1037
+ dayOfWeek: ["Söndag", "Måndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag"]
1038
+ },
1039
+ 'zh-TW': { //Traditional Chinese (繁體中文)
1040
+ months: [
1041
+ "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"
1042
+ ],
1043
+ dayOfWeekShort: [
1044
+ "日", "一", "二", "三", "四", "五", "六"
1045
+ ],
1046
+ dayOfWeek: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]
1047
+ },
1048
+ zh: { //Simplified Chinese (简体中文)
1049
+ months: [
1050
+ "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"
1051
+ ],
1052
+ dayOfWeekShort: [
1053
+ "日", "一", "二", "三", "四", "五", "六"
1054
+ ],
1055
+ dayOfWeek: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]
1056
+ },
1057
+ he: { //Hebrew (עברית)
1058
+ months: [
1059
+ 'ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר'
1060
+ ],
1061
+ dayOfWeekShort: [
1062
+ 'א\'', 'ב\'', 'ג\'', 'ד\'', 'ה\'', 'ו\'', 'שבת'
1063
+ ],
1064
+ dayOfWeek: ["ראשון", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת", "ראשון"]
1065
+ },
1066
+ hy: { // Armenian
1067
+ months: [
1068
+ "Հունվար", "Փետրվար", "Մարտ", "Ապրիլ", "Մայիս", "Հունիս", "Հուլիս", "Օգոստոս", "Սեպտեմբեր", "Հոկտեմբեր", "Նոյեմբեր", "Դեկտեմբեր"
1069
+ ],
1070
+ dayOfWeekShort: [
1071
+ "Կի", "Երկ", "Երք", "Չոր", "Հնգ", "Ուրբ", "Շբթ"
1072
+ ],
1073
+ dayOfWeek: ["Կիրակի", "Երկուշաբթի", "Երեքշաբթի", "Չորեքշաբթի", "Հինգշաբթի", "Ուրբաթ", "Շաբաթ"]
1074
+ },
1075
+ kg: { // Kyrgyz
1076
+ months: [
1077
+ 'Үчтүн айы', 'Бирдин айы', 'Жалган Куран', 'Чын Куран', 'Бугу', 'Кулжа', 'Теке', 'Баш Оона', 'Аяк Оона', 'Тогуздун айы', 'Жетинин айы', 'Бештин айы'
1078
+ ],
1079
+ dayOfWeekShort: [
1080
+ "Жек", "Дүй", "Шей", "Шар", "Бей", "Жум", "Ише"
1081
+ ],
1082
+ dayOfWeek: [
1083
+ "Жекшемб", "Дүйшөмб", "Шейшемб", "Шаршемб", "Бейшемби", "Жума", "Ишенб"
1084
+ ]
1085
+ },
1086
+ rm: { // Romansh
1087
+ months: [
1088
+ "Schaner", "Favrer", "Mars", "Avrigl", "Matg", "Zercladur", "Fanadur", "Avust", "Settember", "October", "November", "December"
1089
+ ],
1090
+ dayOfWeekShort: [
1091
+ "Du", "Gli", "Ma", "Me", "Gie", "Ve", "So"
1092
+ ],
1093
+ dayOfWeek: [
1094
+ "Dumengia", "Glindesdi", "Mardi", "Mesemna", "Gievgia", "Venderdi", "Sonda"
1095
+ ]
1096
+ },
1097
+ ka: { // Georgian
1098
+ months: [
1099
+ 'იანვარი', 'თებერვალი', 'მარტი', 'აპრილი', 'მაისი', 'ივნისი', 'ივლისი', 'აგვისტო', 'სექტემბერი', 'ოქტომბერი', 'ნოემბერი', 'დეკემბერი'
1100
+ ],
1101
+ dayOfWeekShort: [
1102
+ "კვ", "ორშ", "სამშ", "ოთხ", "ხუთ", "პარ", "შაბ"
1103
+ ],
1104
+ dayOfWeek: ["კვირა", "ორშაბათი", "სამშაბათი", "ოთხშაბათი", "ხუთშაბათი", "პარასკევი", "შაბათი"]
1105
+ },
1106
+ },
1107
+ value: '',
1108
+ rtl: false,
1109
+
1110
+ format: 'Y/m/d H:i',
1111
+ formatTime: 'H:i',
1112
+ formatDate: 'Y/m/d',
1113
+
1114
+ startDate: false, // new Date(), '1986/12/08', '-1970/01/05','-1970/01/05',
1115
+ step: 60,
1116
+ monthChangeSpinner: true,
1117
+
1118
+ closeOnDateSelect: false,
1119
+ closeOnTimeSelect: true,
1120
+ closeOnWithoutClick: true,
1121
+ closeOnInputClick: true,
1122
+
1123
+ timepicker: true,
1124
+ datepicker: true,
1125
+ weeks: false,
1126
+
1127
+ defaultTime: false, // use formatTime format (ex. '10:00' for formatTime: 'H:i')
1128
+ defaultDate: false, // use formatDate format (ex new Date() or '1986/12/08' or '-1970/01/05' or '-1970/01/05')
1129
+
1130
+ minDate: false,
1131
+ maxDate: false,
1132
+ minTime: false,
1133
+ maxTime: false,
1134
+ disabledMinTime: false,
1135
+ disabledMaxTime: false,
1136
+
1137
+ allowTimes: [],
1138
+ opened: false,
1139
+ initTime: true,
1140
+ inline: false,
1141
+ theme: '',
1142
+
1143
+ onSelectDate: function () {},
1144
+ onSelectTime: function () {},
1145
+ onChangeMonth: function () {},
1146
+ onGetWeekOfYear: function () {},
1147
+ onChangeYear: function () {},
1148
+ onChangeDateTime: function () {},
1149
+ onShow: function () {},
1150
+ onClose: function () {},
1151
+ onGenerate: function () {},
1152
+
1153
+ withoutCopyright: true,
1154
+ inverseButton: false,
1155
+ hours12: false,
1156
+ next: 'xdsoft_next',
1157
+ prev : 'xdsoft_prev',
1158
+ dayOfWeekStart: 0,
1159
+ parentID: 'body',
1160
+ timeHeightInTimePicker: 25,
1161
+ timepickerScrollbar: true,
1162
+ todayButton: true,
1163
+ prevButton: true,
1164
+ nextButton: true,
1165
+ defaultSelect: true,
1166
+
1167
+ scrollMonth: true,
1168
+ scrollTime: true,
1169
+ scrollInput: true,
1170
+
1171
+ lazyInit: false,
1172
+ mask: false,
1173
+ validateOnBlur: true,
1174
+ allowBlank: true,
1175
+ yearStart: 1950,
1176
+ yearEnd: 2050,
1177
+ monthStart: 0,
1178
+ monthEnd: 11,
1179
+ style: '',
1180
+ id: '',
1181
+ fixed: false,
1182
+ roundTime: 'round', // ceil, floor
1183
+ className: '',
1184
+ weekends: [],
1185
+ highlightedDates: [],
1186
+ highlightedPeriods: [],
1187
+ allowDates : [],
1188
+ allowDateRe : null,
1189
+ disabledDates : [],
1190
+ disabledWeekDays: [],
1191
+ yearOffset: 0,
1192
+ beforeShowDay: null,
1193
+
1194
+ enterLikeTab: true,
1195
+ showApplyButton: false
1196
+ };
1197
+
1198
+ var dateHelper = null,
1199
+ globalLocaleDefault = 'en',
1200
+ globalLocale = 'en';
1201
+
1202
+ var dateFormatterOptionsDefault = {
1203
+ meridiem: ['AM', 'PM']
1204
+ };
1205
+
1206
+ var initDateFormatter = function(){
1207
+ var locale = default_options.i18n[globalLocale],
1208
+ opts = {
1209
+ days: locale.dayOfWeek,
1210
+ daysShort: locale.dayOfWeekShort,
1211
+ months: locale.months,
1212
+ monthsShort: $.map(locale.months, function(n){ return n.substring(0, 3) }),
1213
+ };
1214
+
1215
+ dateHelper = new DateFormatter({
1216
+ dateSettings: $.extend({}, dateFormatterOptionsDefault, opts)
1217
+ });
1218
+ };
1219
+
1220
+ // for locale settings
1221
+ $.datetimepicker = {
1222
+ setLocale: function(locale){
1223
+ var newLocale = default_options.i18n[locale]?locale:globalLocaleDefault;
1224
+ if(globalLocale != newLocale){
1225
+ globalLocale = newLocale;
1226
+ // reinit date formatter
1227
+ initDateFormatter();
1228
+ }
1229
+ },
1230
+ setDateFormatter: function(dateFormatter) {
1231
+ dateHelper = dateFormatter;
1232
+ },
1233
+ RFC_2822: 'D, d M Y H:i:s O',
1234
+ ATOM: 'Y-m-d\TH:i:sP',
1235
+ ISO_8601: 'Y-m-d\TH:i:sO',
1236
+ RFC_822: 'D, d M y H:i:s O',
1237
+ RFC_850: 'l, d-M-y H:i:s T',
1238
+ RFC_1036: 'D, d M y H:i:s O',
1239
+ RFC_1123: 'D, d M Y H:i:s O',
1240
+ RSS: 'D, d M Y H:i:s O',
1241
+ W3C: 'Y-m-d\TH:i:sP'
1242
+ };
1243
+
1244
+ // first init date formatter
1245
+ initDateFormatter();
1246
+
1247
+ // fix for ie8
1248
+ if (!window.getComputedStyle) {
1249
+ window.getComputedStyle = function (el, pseudo) {
1250
+ this.el = el;
1251
+ this.getPropertyValue = function (prop) {
1252
+ var re = /(\-([a-z]){1})/g;
1253
+ if (prop === 'float') {
1254
+ prop = 'styleFloat';
1255
+ }
1256
+ if (re.test(prop)) {
1257
+ prop = prop.replace(re, function (a, b, c) {
1258
+ return c.toUpperCase();
1259
+ });
1260
+ }
1261
+ return el.currentStyle[prop] || null;
1262
+ };
1263
+ return this;
1264
+ };
1265
+ }
1266
+ if (!Array.prototype.indexOf) {
1267
+ Array.prototype.indexOf = function (obj, start) {
1268
+ var i, j;
1269
+ for (i = (start || 0), j = this.length; i < j; i += 1) {
1270
+ if (this[i] === obj) { return i; }
1271
+ }
1272
+ return -1;
1273
+ };
1274
+ }
1275
+ Date.prototype.countDaysInMonth = function () {
1276
+ return new Date(this.getFullYear(), this.getMonth() + 1, 0).getDate();
1277
+ };
1278
+ $.fn.xdsoftScroller = function (percent) {
1279
+ return this.each(function () {
1280
+ var timeboxparent = $(this),
1281
+ pointerEventToXY = function (e) {
1282
+ var out = {x: 0, y: 0},
1283
+ touch;
1284
+ if (e.type === 'touchstart' || e.type === 'touchmove' || e.type === 'touchend' || e.type === 'touchcancel') {
1285
+ touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
1286
+ out.x = touch.clientX;
1287
+ out.y = touch.clientY;
1288
+ } else if (e.type === 'mousedown' || e.type === 'mouseup' || e.type === 'mousemove' || e.type === 'mouseover' || e.type === 'mouseout' || e.type === 'mouseenter' || e.type === 'mouseleave') {
1289
+ out.x = e.clientX;
1290
+ out.y = e.clientY;
1291
+ }
1292
+ return out;
1293
+ },
1294
+ timebox,
1295
+ parentHeight,
1296
+ height,
1297
+ scrollbar,
1298
+ scroller,
1299
+ maximumOffset = 100,
1300
+ start = false,
1301
+ startY = 0,
1302
+ startTop = 0,
1303
+ h1 = 0,
1304
+ touchStart = false,
1305
+ startTopScroll = 0,
1306
+ calcOffset = function () {};
1307
+ if (percent === 'hide') {
1308
+ timeboxparent.find('.xdsoft_scrollbar').hide();
1309
+ return;
1310
+ }
1311
+ if (!$(this).hasClass('xdsoft_scroller_box')) {
1312
+ timebox = timeboxparent.children().eq(0);
1313
+ parentHeight = timeboxparent[0].clientHeight;
1314
+ height = timebox[0].offsetHeight;
1315
+ scrollbar = $('<div class="xdsoft_scrollbar"></div>');
1316
+ scroller = $('<div class="xdsoft_scroller"></div>');
1317
+ scrollbar.append(scroller);
1318
+
1319
+ timeboxparent.addClass('xdsoft_scroller_box').append(scrollbar);
1320
+ calcOffset = function calcOffset(event) {
1321
+ var offset = pointerEventToXY(event).y - startY + startTopScroll;
1322
+ if (offset < 0) {
1323
+ offset = 0;
1324
+ }
1325
+ if (offset + scroller[0].offsetHeight > h1) {
1326
+ offset = h1 - scroller[0].offsetHeight;
1327
+ }
1328
+ timeboxparent.trigger('scroll_element.xdsoft_scroller', [maximumOffset ? offset / maximumOffset : 0]);
1329
+ };
1330
+
1331
+ scroller
1332
+ .on('touchstart.xdsoft_scroller mousedown.xdsoft_scroller', function (event) {
1333
+ if (!parentHeight) {
1334
+ timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]);
1335
+ }
1336
+
1337
+ startY = pointerEventToXY(event).y;
1338
+ startTopScroll = parseInt(scroller.css('margin-top'), 10);
1339
+ h1 = scrollbar[0].offsetHeight;
1340
+
1341
+ if (event.type === 'mousedown' || event.type === 'touchstart') {
1342
+ if (document) {
1343
+ $(document.body).addClass('xdsoft_noselect');
1344
+ }
1345
+ $([document.body, window]).on('touchend mouseup.xdsoft_scroller', function arguments_callee() {
1346
+ $([document.body, window]).off('touchend mouseup.xdsoft_scroller', arguments_callee)
1347
+ .off('mousemove.xdsoft_scroller', calcOffset)
1348
+ .removeClass('xdsoft_noselect');
1349
+ });
1350
+ $(document.body).on('mousemove.xdsoft_scroller', calcOffset);
1351
+ } else {
1352
+ touchStart = true;
1353
+ event.stopPropagation();
1354
+ event.preventDefault();
1355
+ }
1356
+ })
1357
+ .on('touchmove', function (event) {
1358
+ if (touchStart) {
1359
+ event.preventDefault();
1360
+ calcOffset(event);
1361
+ }
1362
+ })
1363
+ .on('touchend touchcancel', function () {
1364
+ touchStart = false;
1365
+ startTopScroll = 0;
1366
+ });
1367
+
1368
+ timeboxparent
1369
+ .on('scroll_element.xdsoft_scroller', function (event, percentage) {
1370
+ if (!parentHeight) {
1371
+ timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percentage, true]);
1372
+ }
1373
+ percentage = percentage > 1 ? 1 : (percentage < 0 || isNaN(percentage)) ? 0 : percentage;
1374
+
1375
+ scroller.css('margin-top', maximumOffset * percentage);
1376
+
1377
+ setTimeout(function () {
1378
+ timebox.css('marginTop', -parseInt((timebox[0].offsetHeight - parentHeight) * percentage, 10));
1379
+ }, 10);
1380
+ })
1381
+ .on('resize_scroll.xdsoft_scroller', function (event, percentage, noTriggerScroll) {
1382
+ var percent, sh;
1383
+ parentHeight = timeboxparent[0].clientHeight;
1384
+ height = timebox[0].offsetHeight;
1385
+ percent = parentHeight / height;
1386
+ sh = percent * scrollbar[0].offsetHeight;
1387
+ if (percent > 1) {
1388
+ scroller.hide();
1389
+ } else {
1390
+ scroller.show();
1391
+ scroller.css('height', parseInt(sh > 10 ? sh : 10, 10));
1392
+ maximumOffset = scrollbar[0].offsetHeight - scroller[0].offsetHeight;
1393
+ if (noTriggerScroll !== true) {
1394
+ timeboxparent.trigger('scroll_element.xdsoft_scroller', [percentage || Math.abs(parseInt(timebox.css('marginTop'), 10)) / (height - parentHeight)]);
1395
+ }
1396
+ }
1397
+ });
1398
+
1399
+ timeboxparent.on('mousewheel', function (event) {
1400
+ var top = Math.abs(parseInt(timebox.css('marginTop'), 10));
1401
+
1402
+ top = top - (event.deltaY * 20);
1403
+ if (top < 0) {
1404
+ top = 0;
1405
+ }
1406
+
1407
+ timeboxparent.trigger('scroll_element.xdsoft_scroller', [top / (height - parentHeight)]);
1408
+ event.stopPropagation();
1409
+ return false;
1410
+ });
1411
+
1412
+ timeboxparent.on('touchstart', function (event) {
1413
+ start = pointerEventToXY(event);
1414
+ startTop = Math.abs(parseInt(timebox.css('marginTop'), 10));
1415
+ });
1416
+
1417
+ timeboxparent.on('touchmove', function (event) {
1418
+ if (start) {
1419
+ event.preventDefault();
1420
+ var coord = pointerEventToXY(event);
1421
+ timeboxparent.trigger('scroll_element.xdsoft_scroller', [(startTop - (coord.y - start.y)) / (height - parentHeight)]);
1422
+ }
1423
+ });
1424
+
1425
+ timeboxparent.on('touchend touchcancel', function () {
1426
+ start = false;
1427
+ startTop = 0;
1428
+ });
1429
+ }
1430
+ timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]);
1431
+ });
1432
+ };
1433
+
1434
+ $.fn.datetimepicker = function (opt, opt2) {
1435
+ var result = this,
1436
+ KEY0 = 48,
1437
+ KEY9 = 57,
1438
+ _KEY0 = 96,
1439
+ _KEY9 = 105,
1440
+ CTRLKEY = 17,
1441
+ DEL = 46,
1442
+ ENTER = 13,
1443
+ ESC = 27,
1444
+ BACKSPACE = 8,
1445
+ ARROWLEFT = 37,
1446
+ ARROWUP = 38,
1447
+ ARROWRIGHT = 39,
1448
+ ARROWDOWN = 40,
1449
+ TAB = 9,
1450
+ F5 = 116,
1451
+ AKEY = 65,
1452
+ CKEY = 67,
1453
+ VKEY = 86,
1454
+ ZKEY = 90,
1455
+ YKEY = 89,
1456
+ ctrlDown = false,
1457
+ options = ($.isPlainObject(opt) || !opt) ? $.extend(true, {}, default_options, opt) : $.extend(true, {}, default_options),
1458
+
1459
+ lazyInitTimer = 0,
1460
+ createDateTimePicker,
1461
+ destroyDateTimePicker,
1462
+
1463
+ lazyInit = function (input) {
1464
+ input
1465
+ .on('open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart', function initOnActionCallback() {
1466
+ if (input.is(':disabled') || input.data('xdsoft_datetimepicker')) {
1467
+ return;
1468
+ }
1469
+ clearTimeout(lazyInitTimer);
1470
+ lazyInitTimer = setTimeout(function () {
1471
+
1472
+ if (!input.data('xdsoft_datetimepicker')) {
1473
+ createDateTimePicker(input);
1474
+ }
1475
+ input
1476
+ .off('open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart', initOnActionCallback)
1477
+ .trigger('open.xdsoft');
1478
+ }, 100);
1479
+ });
1480
+ };
1481
+
1482
+ createDateTimePicker = function (input) {
1483
+ var datetimepicker = $('<div class="xdsoft_datetimepicker xdsoft_noselect"></div>'),
1484
+ xdsoft_copyright = $('<div class="xdsoft_copyright"><a target="_blank" href="http://xdsoft.net/jqplugins/datetimepicker/">xdsoft.net</a></div>'),
1485
+ datepicker = $('<div class="xdsoft_datepicker active"></div>'),
1486
+ month_picker = $('<div class="xdsoft_monthpicker"><button type="button" class="xdsoft_prev"></button><button type="button" class="xdsoft_today_button"></button>' +
1487
+ '<div class="xdsoft_label xdsoft_month"><span></span><i></i></div>' +
1488
+ '<div class="xdsoft_label xdsoft_year"><span></span><i></i></div>' +
1489
+ '<button type="button" class="xdsoft_next"></button></div>'),
1490
+ calendar = $('<div class="xdsoft_calendar"></div>'),
1491
+ timepicker = $('<div class="xdsoft_timepicker active"><button type="button" class="xdsoft_prev"></button><div class="xdsoft_time_box"></div><button type="button" class="xdsoft_next"></button></div>'),
1492
+ timeboxparent = timepicker.find('.xdsoft_time_box').eq(0),
1493
+ timebox = $('<div class="xdsoft_time_variant"></div>'),
1494
+ applyButton = $('<button type="button" class="xdsoft_save_selected blue-gradient-button">Save Selected</button>'),
1495
+
1496
+ monthselect = $('<div class="xdsoft_select xdsoft_monthselect"><div></div></div>'),
1497
+ yearselect = $('<div class="xdsoft_select xdsoft_yearselect"><div></div></div>'),
1498
+ triggerAfterOpen = false,
1499
+ XDSoft_datetime,
1500
+
1501
+ xchangeTimer,
1502
+ timerclick,
1503
+ current_time_index,
1504
+ setPos,
1505
+ timer = 0,
1506
+ _xdsoft_datetime,
1507
+ forEachAncestorOf,
1508
+ throttle;
1509
+
1510
+ if (options.id) {
1511
+ datetimepicker.attr('id', options.id);
1512
+ }
1513
+ if (options.style) {
1514
+ datetimepicker.attr('style', options.style);
1515
+ }
1516
+ if (options.weeks) {
1517
+ datetimepicker.addClass('xdsoft_showweeks');
1518
+ }
1519
+ if (options.rtl) {
1520
+ datetimepicker.addClass('xdsoft_rtl');
1521
+ }
1522
+
1523
+ datetimepicker.addClass('xdsoft_' + options.theme);
1524
+ datetimepicker.addClass(options.className);
1525
+
1526
+ month_picker
1527
+ .find('.xdsoft_month span')
1528
+ .after(monthselect);
1529
+ month_picker
1530
+ .find('.xdsoft_year span')
1531
+ .after(yearselect);
1532
+
1533
+ month_picker
1534
+ .find('.xdsoft_month,.xdsoft_year')
1535
+ .on('touchstart mousedown.xdsoft', function (event) {
1536
+ var select = $(this).find('.xdsoft_select').eq(0),
1537
+ val = 0,
1538
+ top = 0,
1539
+ visible = select.is(':visible'),
1540
+ items,
1541
+ i;
1542
+
1543
+ month_picker
1544
+ .find('.xdsoft_select')
1545
+ .hide();
1546
+ if (_xdsoft_datetime.currentTime) {
1547
+ val = _xdsoft_datetime.currentTime[$(this).hasClass('xdsoft_month') ? 'getMonth' : 'getFullYear']();
1548
+ }
1549
+
1550
+ select[visible ? 'hide' : 'show']();
1551
+ for (items = select.find('div.xdsoft_option'), i = 0; i < items.length; i += 1) {
1552
+ if (items.eq(i).data('value') === val) {
1553
+ break;
1554
+ } else {
1555
+ top += items[0].offsetHeight;
1556
+ }
1557
+ }
1558
+
1559
+ select.xdsoftScroller(top / (select.children()[0].offsetHeight - (select[0].clientHeight)));
1560
+ event.stopPropagation();
1561
+ return false;
1562
+ });
1563
+
1564
+ month_picker
1565
+ .find('.xdsoft_select')
1566
+ .xdsoftScroller()
1567
+ .on('touchstart mousedown.xdsoft', function (event) {
1568
+ event.stopPropagation();
1569
+ event.preventDefault();
1570
+ })
1571
+ .on('touchstart mousedown.xdsoft', '.xdsoft_option', function () {
1572
+ if (_xdsoft_datetime.currentTime === undefined || _xdsoft_datetime.currentTime === null) {
1573
+ _xdsoft_datetime.currentTime = _xdsoft_datetime.now();
1574
+ }
1575
+
1576
+ var year = _xdsoft_datetime.currentTime.getFullYear();
1577
+ if (_xdsoft_datetime && _xdsoft_datetime.currentTime) {
1578
+ _xdsoft_datetime.currentTime[$(this).parent().parent().hasClass('xdsoft_monthselect') ? 'setMonth' : 'setFullYear']($(this).data('value'));
1579
+ }
1580
+
1581
+ $(this).parent().parent().hide();
1582
+
1583
+ datetimepicker.trigger('xchange.xdsoft');
1584
+ if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) {
1585
+ options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
1586
+ }
1587
+
1588
+ if (year !== _xdsoft_datetime.currentTime.getFullYear() && $.isFunction(options.onChangeYear)) {
1589
+ options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
1590
+ }
1591
+ });
1592
+
1593
+ datetimepicker.getValue = function () {
1594
+ return _xdsoft_datetime.getCurrentTime();
1595
+ };
1596
+
1597
+ datetimepicker.setOptions = function (_options) {
1598
+ var highlightedDates = {};
1599
+
1600
+ options = $.extend(true, {}, options, _options);
1601
+
1602
+ if (_options.allowTimes && $.isArray(_options.allowTimes) && _options.allowTimes.length) {
1603
+ options.allowTimes = $.extend(true, [], _options.allowTimes);
1604
+ }
1605
+
1606
+ if (_options.weekends && $.isArray(_options.weekends) && _options.weekends.length) {
1607
+ options.weekends = $.extend(true, [], _options.weekends);
1608
+ }
1609
+
1610
+ if (_options.allowDates && $.isArray(_options.allowDates) && _options.allowDates.length) {
1611
+ options.allowDates = $.extend(true, [], _options.allowDates);
1612
+ }
1613
+
1614
+ if (_options.allowDateRe && Object.prototype.toString.call(_options.allowDateRe)==="[object String]") {
1615
+ options.allowDateRe = new RegExp(_options.allowDateRe);
1616
+ }
1617
+
1618
+ if (_options.highlightedDates && $.isArray(_options.highlightedDates) && _options.highlightedDates.length) {
1619
+ $.each(_options.highlightedDates, function (index, value) {
1620
+ var splitData = $.map(value.split(','), $.trim),
1621
+ exDesc,
1622
+ hDate = new HighlightedDate(dateHelper.parseDate(splitData[0], options.formatDate), splitData[1], splitData[2]), // date, desc, style
1623
+ keyDate = dateHelper.formatDate(hDate.date, options.formatDate);
1624
+ if (highlightedDates[keyDate] !== undefined) {
1625
+ exDesc = highlightedDates[keyDate].desc;
1626
+ if (exDesc && exDesc.length && hDate.desc && hDate.desc.length) {
1627
+ highlightedDates[keyDate].desc = exDesc + "\n" + hDate.desc;
1628
+ }
1629
+ } else {
1630
+ highlightedDates[keyDate] = hDate;
1631
+ }
1632
+ });
1633
+
1634
+ options.highlightedDates = $.extend(true, [], highlightedDates);
1635
+ }
1636
+
1637
+ if (_options.highlightedPeriods && $.isArray(_options.highlightedPeriods) && _options.highlightedPeriods.length) {
1638
+ highlightedDates = $.extend(true, [], options.highlightedDates);
1639
+ $.each(_options.highlightedPeriods, function (index, value) {
1640
+ var dateTest, // start date
1641
+ dateEnd,
1642
+ desc,
1643
+ hDate,
1644
+ keyDate,
1645
+ exDesc,
1646
+ style;
1647
+ if ($.isArray(value)) {
1648
+ dateTest = value[0];
1649
+ dateEnd = value[1];
1650
+ desc = value[2];
1651
+ style = value[3];
1652
+ }
1653
+ else {
1654
+ var splitData = $.map(value.split(','), $.trim);
1655
+ dateTest = dateHelper.parseDate(splitData[0], options.formatDate);
1656
+ dateEnd = dateHelper.parseDate(splitData[1], options.formatDate);
1657
+ desc = splitData[2];
1658
+ style = splitData[3];
1659
+ }
1660
+
1661
+ while (dateTest <= dateEnd) {
1662
+ hDate = new HighlightedDate(dateTest, desc, style);
1663
+ keyDate = dateHelper.formatDate(dateTest, options.formatDate);
1664
+ dateTest.setDate(dateTest.getDate() + 1);
1665
+ if (highlightedDates[keyDate] !== undefined) {
1666
+ exDesc = highlightedDates[keyDate].desc;
1667
+ if (exDesc && exDesc.length && hDate.desc && hDate.desc.length) {
1668
+ highlightedDates[keyDate].desc = exDesc + "\n" + hDate.desc;
1669
+ }
1670
+ } else {
1671
+ highlightedDates[keyDate] = hDate;
1672
+ }
1673
+ }
1674
+ });
1675
+
1676
+ options.highlightedDates = $.extend(true, [], highlightedDates);
1677
+ }
1678
+
1679
+ if (_options.disabledDates && $.isArray(_options.disabledDates) && _options.disabledDates.length) {
1680
+ options.disabledDates = $.extend(true, [], _options.disabledDates);
1681
+ }
1682
+
1683
+ if (_options.disabledWeekDays && $.isArray(_options.disabledWeekDays) && _options.disabledWeekDays.length) {
1684
+ options.disabledWeekDays = $.extend(true, [], _options.disabledWeekDays);
1685
+ }
1686
+
1687
+ if ((options.open || options.opened) && (!options.inline)) {
1688
+ input.trigger('open.xdsoft');
1689
+ }
1690
+
1691
+ if (options.inline) {
1692
+ triggerAfterOpen = true;
1693
+ datetimepicker.addClass('xdsoft_inline');
1694
+ input.after(datetimepicker).hide();
1695
+ }
1696
+
1697
+ if (options.inverseButton) {
1698
+ options.next = 'xdsoft_prev';
1699
+ options.prev = 'xdsoft_next';
1700
+ }
1701
+
1702
+ if (options.datepicker) {
1703
+ datepicker.addClass('active');
1704
+ } else {
1705
+ datepicker.removeClass('active');
1706
+ }
1707
+
1708
+ if (options.timepicker) {
1709
+ timepicker.addClass('active');
1710
+ } else {
1711
+ timepicker.removeClass('active');
1712
+ }
1713
+
1714
+ if (options.value) {
1715
+ _xdsoft_datetime.setCurrentTime(options.value);
1716
+ if (input && input.val) {
1717
+ input.val(_xdsoft_datetime.str);
1718
+ }
1719
+ }
1720
+
1721
+ if (isNaN(options.dayOfWeekStart)) {
1722
+ options.dayOfWeekStart = 0;
1723
+ } else {
1724
+ options.dayOfWeekStart = parseInt(options.dayOfWeekStart, 10) % 7;
1725
+ }
1726
+
1727
+ if (!options.timepickerScrollbar) {
1728
+ timeboxparent.xdsoftScroller('hide');
1729
+ }
1730
+
1731
+ if (options.minDate && /^[\+\-](.*)$/.test(options.minDate)) {
1732
+ options.minDate = dateHelper.formatDate(_xdsoft_datetime.strToDateTime(options.minDate), options.formatDate);
1733
+ }
1734
+
1735
+ if (options.maxDate && /^[\+\-](.*)$/.test(options.maxDate)) {
1736
+ options.maxDate = dateHelper.formatDate(_xdsoft_datetime.strToDateTime(options.maxDate), options.formatDate);
1737
+ }
1738
+
1739
+ applyButton.toggle(options.showApplyButton);
1740
+
1741
+ month_picker
1742
+ .find('.xdsoft_today_button')
1743
+ .css('visibility', !options.todayButton ? 'hidden' : 'visible');
1744
+
1745
+ month_picker
1746
+ .find('.' + options.prev)
1747
+ .css('visibility', !options.prevButton ? 'hidden' : 'visible');
1748
+
1749
+ month_picker
1750
+ .find('.' + options.next)
1751
+ .css('visibility', !options.nextButton ? 'hidden' : 'visible');
1752
+
1753
+ setMask(options);
1754
+
1755
+ if (options.validateOnBlur) {
1756
+ input
1757
+ .off('blur.xdsoft')
1758
+ .on('blur.xdsoft', function () {
1759
+ if (options.allowBlank && (!$.trim($(this).val()).length || (typeof options.mask == "string" && $.trim($(this).val()) === options.mask.replace(/[0-9]/g, '_')))) {
1760
+ $(this).val(null);
1761
+ datetimepicker.data('xdsoft_datetime').empty();
1762
+ } else {
1763
+ var d = dateHelper.parseDate($(this).val(), options.format);
1764
+ if (d) { // parseDate() may skip some invalid parts like date or time, so make it clear for user: show parsed date/time
1765
+ $(this).val(dateHelper.formatDate(d, options.format));
1766
+ } else {
1767
+ var splittedHours = +([$(this).val()[0], $(this).val()[1]].join('')),
1768
+ splittedMinutes = +([$(this).val()[2], $(this).val()[3]].join(''));
1769
+
1770
+ // parse the numbers as 0312 => 03:12
1771
+ if (!options.datepicker && options.timepicker && splittedHours >= 0 && splittedHours < 24 && splittedMinutes >= 0 && splittedMinutes < 60) {
1772
+ $(this).val([splittedHours, splittedMinutes].map(function (item) {
1773
+ return item > 9 ? item : '0' + item;
1774
+ }).join(':'));
1775
+ } else {
1776
+ $(this).val(dateHelper.formatDate(_xdsoft_datetime.now(), options.format));
1777
+ }
1778
+ }
1779
+ datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val());
1780
+ }
1781
+
1782
+ datetimepicker.trigger('changedatetime.xdsoft');
1783
+ datetimepicker.trigger('close.xdsoft');
1784
+ });
1785
+ }
1786
+ options.dayOfWeekStartPrev = (options.dayOfWeekStart === 0) ? 6 : options.dayOfWeekStart - 1;
1787
+
1788
+ datetimepicker
1789
+ .trigger('xchange.xdsoft')
1790
+ .trigger('afterOpen.xdsoft');
1791
+ };
1792
+
1793
+ datetimepicker
1794
+ .data('options', options)
1795
+ .on('touchstart mousedown.xdsoft', function (event) {
1796
+ event.stopPropagation();
1797
+ event.preventDefault();
1798
+ yearselect.hide();
1799
+ monthselect.hide();
1800
+ return false;
1801
+ });
1802
+
1803
+ //scroll_element = timepicker.find('.xdsoft_time_box');
1804
+ timeboxparent.append(timebox);
1805
+ timeboxparent.xdsoftScroller();
1806
+
1807
+ datetimepicker.on('afterOpen.xdsoft', function () {
1808
+ timeboxparent.xdsoftScroller();
1809
+ });
1810
+
1811
+ datetimepicker
1812
+ .append(datepicker)
1813
+ .append(timepicker);
1814
+
1815
+ if (options.withoutCopyright !== true) {
1816
+ datetimepicker
1817
+ .append(xdsoft_copyright);
1818
+ }
1819
+
1820
+ datepicker
1821
+ .append(month_picker)
1822
+ .append(calendar)
1823
+ .append(applyButton);
1824
+
1825
+ $(options.parentID)
1826
+ .append(datetimepicker);
1827
+
1828
+ XDSoft_datetime = function () {
1829
+ var _this = this;
1830
+ _this.now = function (norecursion) {
1831
+ var d = new Date(),
1832
+ date,
1833
+ time;
1834
+
1835
+ if (!norecursion && options.defaultDate) {
1836
+ date = _this.strToDateTime(options.defaultDate);
1837
+ d.setFullYear(date.getFullYear());
1838
+ d.setMonth(date.getMonth());
1839
+ d.setDate(date.getDate());
1840
+ }
1841
+
1842
+ if (options.yearOffset) {
1843
+ d.setFullYear(d.getFullYear() + options.yearOffset);
1844
+ }
1845
+
1846
+ if (!norecursion && options.defaultTime) {
1847
+ time = _this.strtotime(options.defaultTime);
1848
+ d.setHours(time.getHours());
1849
+ d.setMinutes(time.getMinutes());
1850
+ }
1851
+ return d;
1852
+ };
1853
+
1854
+ _this.isValidDate = function (d) {
1855
+ if (Object.prototype.toString.call(d) !== "[object Date]") {
1856
+ return false;
1857
+ }
1858
+ return !isNaN(d.getTime());
1859
+ };
1860
+
1861
+ _this.setCurrentTime = function (dTime, requireValidDate) {
1862
+ if (typeof dTime === 'string') {
1863
+ _this.currentTime = _this.strToDateTime(dTime);
1864
+ }
1865
+ else if (_this.isValidDate(dTime)) {
1866
+ _this.currentTime = dTime;
1867
+ }
1868
+ else if (!dTime && !requireValidDate && options.allowBlank) {
1869
+ _this.currentTime = null;
1870
+ }
1871
+ else {
1872
+ _this.currentTime = _this.now();
1873
+ }
1874
+
1875
+ datetimepicker.trigger('xchange.xdsoft');
1876
+ };
1877
+
1878
+ _this.empty = function () {
1879
+ _this.currentTime = null;
1880
+ };
1881
+
1882
+ _this.getCurrentTime = function (dTime) {
1883
+ return _this.currentTime;
1884
+ };
1885
+
1886
+ _this.nextMonth = function () {
1887
+
1888
+ if (_this.currentTime === undefined || _this.currentTime === null) {
1889
+ _this.currentTime = _this.now();
1890
+ }
1891
+
1892
+ var month = _this.currentTime.getMonth() + 1,
1893
+ year;
1894
+ if (month === 12) {
1895
+ _this.currentTime.setFullYear(_this.currentTime.getFullYear() + 1);
1896
+ month = 0;
1897
+ }
1898
+
1899
+ year = _this.currentTime.getFullYear();
1900
+
1901
+ _this.currentTime.setDate(
1902
+ Math.min(
1903
+ new Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(),
1904
+ _this.currentTime.getDate()
1905
+ )
1906
+ );
1907
+ _this.currentTime.setMonth(month);
1908
+
1909
+ if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) {
1910
+ options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
1911
+ }
1912
+
1913
+ if (year !== _this.currentTime.getFullYear() && $.isFunction(options.onChangeYear)) {
1914
+ options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
1915
+ }
1916
+
1917
+ datetimepicker.trigger('xchange.xdsoft');
1918
+ return month;
1919
+ };
1920
+
1921
+ _this.prevMonth = function () {
1922
+
1923
+ if (_this.currentTime === undefined || _this.currentTime === null) {
1924
+ _this.currentTime = _this.now();
1925
+ }
1926
+
1927
+ var month = _this.currentTime.getMonth() - 1;
1928
+ if (month === -1) {
1929
+ _this.currentTime.setFullYear(_this.currentTime.getFullYear() - 1);
1930
+ month = 11;
1931
+ }
1932
+ _this.currentTime.setDate(
1933
+ Math.min(
1934
+ new Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(),
1935
+ _this.currentTime.getDate()
1936
+ )
1937
+ );
1938
+ _this.currentTime.setMonth(month);
1939
+ if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) {
1940
+ options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
1941
+ }
1942
+ datetimepicker.trigger('xchange.xdsoft');
1943
+ return month;
1944
+ };
1945
+
1946
+ _this.getWeekOfYear = function (datetime) {
1947
+ if (options.onGetWeekOfYear && $.isFunction(options.onGetWeekOfYear)) {
1948
+ var week = options.onGetWeekOfYear.call(datetimepicker, datetime);
1949
+ if (typeof week !== 'undefined') {
1950
+ return week;
1951
+ }
1952
+ }
1953
+ var onejan = new Date(datetime.getFullYear(), 0, 1);
1954
+ //First week of the year is th one with the first Thursday according to ISO8601
1955
+ if(onejan.getDay()!=4)
1956
+ onejan.setMonth(0, 1 + ((4 - onejan.getDay()+ 7) % 7));
1957
+ return Math.ceil((((datetime - onejan) / 86400000) + onejan.getDay() + 1) / 7);
1958
+ };
1959
+
1960
+ _this.strToDateTime = function (sDateTime) {
1961
+ var tmpDate = [], timeOffset, currentTime;
1962
+
1963
+ if (sDateTime && sDateTime instanceof Date && _this.isValidDate(sDateTime)) {
1964
+ return sDateTime;
1965
+ }
1966
+
1967
+ tmpDate = /^(\+|\-)(.*)$/.exec(sDateTime);
1968
+ if (tmpDate) {
1969
+ tmpDate[2] = dateHelper.parseDate(tmpDate[2], options.formatDate);
1970
+ }
1971
+ if (tmpDate && tmpDate[2]) {
1972
+ timeOffset = tmpDate[2].getTime() - (tmpDate[2].getTimezoneOffset()) * 60000;
1973
+ currentTime = new Date((_this.now(true)).getTime() + parseInt(tmpDate[1] + '1', 10) * timeOffset);
1974
+ } else {
1975
+ currentTime = sDateTime ? dateHelper.parseDate(sDateTime, options.format) : _this.now();
1976
+ }
1977
+
1978
+ if (!_this.isValidDate(currentTime)) {
1979
+ currentTime = _this.now();
1980
+ }
1981
+
1982
+ return currentTime;
1983
+ };
1984
+
1985
+ _this.strToDate = function (sDate) {
1986
+ if (sDate && sDate instanceof Date && _this.isValidDate(sDate)) {
1987
+ return sDate;
1988
+ }
1989
+
1990
+ var currentTime = sDate ? dateHelper.parseDate(sDate, options.formatDate) : _this.now(true);
1991
+ if (!_this.isValidDate(currentTime)) {
1992
+ currentTime = _this.now(true);
1993
+ }
1994
+ return currentTime;
1995
+ };
1996
+
1997
+ _this.strtotime = function (sTime) {
1998
+ if (sTime && sTime instanceof Date && _this.isValidDate(sTime)) {
1999
+ return sTime;
2000
+ }
2001
+ var currentTime = sTime ? dateHelper.parseDate(sTime, options.formatTime) : _this.now(true);
2002
+ if (!_this.isValidDate(currentTime)) {
2003
+ currentTime = _this.now(true);
2004
+ }
2005
+ return currentTime;
2006
+ };
2007
+
2008
+ _this.str = function () {
2009
+ return dateHelper.formatDate(_this.currentTime, options.format);
2010
+ };
2011
+ _this.currentTime = this.now();
2012
+ };
2013
+
2014
+ _xdsoft_datetime = new XDSoft_datetime();
2015
+
2016
+ applyButton.on('touchend click', function (e) {//pathbrite
2017
+ e.preventDefault();
2018
+ datetimepicker.data('changed', true);
2019
+ _xdsoft_datetime.setCurrentTime(getCurrentValue());
2020
+ input.val(_xdsoft_datetime.str());
2021
+ datetimepicker.trigger('close.xdsoft');
2022
+ });
2023
+ month_picker
2024
+ .find('.xdsoft_today_button')
2025
+ .on('touchend mousedown.xdsoft', function () {
2026
+ datetimepicker.data('changed', true);
2027
+ _xdsoft_datetime.setCurrentTime(0, true);
2028
+ datetimepicker.trigger('afterOpen.xdsoft');
2029
+ }).on('dblclick.xdsoft', function () {
2030
+ var currentDate = _xdsoft_datetime.getCurrentTime(), minDate, maxDate;
2031
+ currentDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate());
2032
+ minDate = _xdsoft_datetime.strToDate(options.minDate);
2033
+ minDate = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate());
2034
+ if (currentDate < minDate) {
2035
+ return;
2036
+ }
2037
+ maxDate = _xdsoft_datetime.strToDate(options.maxDate);
2038
+ maxDate = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate());
2039
+ if (currentDate > maxDate) {
2040
+ return;
2041
+ }
2042
+ input.val(_xdsoft_datetime.str());
2043
+ input.trigger('change');
2044
+ datetimepicker.trigger('close.xdsoft');
2045
+ });
2046
+ month_picker
2047
+ .find('.xdsoft_prev,.xdsoft_next')
2048
+ .on('touchend mousedown.xdsoft', function () {
2049
+ var $this = $(this),
2050
+ timer = 0,
2051
+ stop = false;
2052
+
2053
+ (function arguments_callee1(v) {
2054
+ if ($this.hasClass(options.next)) {
2055
+ _xdsoft_datetime.nextMonth();
2056
+ } else if ($this.hasClass(options.prev)) {
2057
+ _xdsoft_datetime.prevMonth();
2058
+ }
2059
+ if (options.monthChangeSpinner) {
2060
+ if (!stop) {
2061
+ timer = setTimeout(arguments_callee1, v || 100);
2062
+ }
2063
+ }
2064
+ }(500));
2065
+
2066
+ $([document.body, window]).on('touchend mouseup.xdsoft', function arguments_callee2() {
2067
+ clearTimeout(timer);
2068
+ stop = true;
2069
+ $([document.body, window]).off('touchend mouseup.xdsoft', arguments_callee2);
2070
+ });
2071
+ });
2072
+
2073
+ timepicker
2074
+ .find('.xdsoft_prev,.xdsoft_next')
2075
+ .on('touchend mousedown.xdsoft', function () {
2076
+ var $this = $(this),
2077
+ timer = 0,
2078
+ stop = false,
2079
+ period = 110;
2080
+ (function arguments_callee4(v) {
2081
+ var pheight = timeboxparent[0].clientHeight,
2082
+ height = timebox[0].offsetHeight,
2083
+ top = Math.abs(parseInt(timebox.css('marginTop'), 10));
2084
+ if ($this.hasClass(options.next) && (height - pheight) - options.timeHeightInTimePicker >= top) {
2085
+ timebox.css('marginTop', '-' + (top + options.timeHeightInTimePicker) + 'px');
2086
+ } else if ($this.hasClass(options.prev) && top - options.timeHeightInTimePicker >= 0) {
2087
+ timebox.css('marginTop', '-' + (top - options.timeHeightInTimePicker) + 'px');
2088
+ }
2089
+ /**
2090
+ * Fixed bug:
2091
+ * When using css3 transition, it will cause a bug that you cannot scroll the timepicker list.
2092
+ * The reason is that the transition-duration time, if you set it to 0, all things fine, otherwise, this
2093
+ * would cause a bug when you use jquery.css method.
2094
+ * Let's say: * { transition: all .5s ease; }
2095
+ * jquery timebox.css('marginTop') will return the original value which is before you clicking the next/prev button,
2096
+ * meanwhile the timebox[0].style.marginTop will return the right value which is after you clicking the
2097
+ * next/prev button.
2098
+ *
2099
+ * What we should do:
2100
+ * Replace timebox.css('marginTop') with timebox[0].style.marginTop.
2101
+ */
2102
+ timeboxparent.trigger('scroll_element.xdsoft_scroller', [Math.abs(parseInt(timebox[0].style.marginTop, 10) / (height - pheight))]);
2103
+ period = (period > 10) ? 10 : period - 10;
2104
+ if (!stop) {
2105
+ timer = setTimeout(arguments_callee4, v || period);
2106
+ }
2107
+ }(500));
2108
+ $([document.body, window]).on('touchend mouseup.xdsoft', function arguments_callee5() {
2109
+ clearTimeout(timer);
2110
+ stop = true;
2111
+ $([document.body, window])
2112
+ .off('touchend mouseup.xdsoft', arguments_callee5);
2113
+ });
2114
+ });
2115
+
2116
+ xchangeTimer = 0;
2117
+ // base handler - generating a calendar and timepicker
2118
+ datetimepicker
2119
+ .on('xchange.xdsoft', function (event) {
2120
+ clearTimeout(xchangeTimer);
2121
+ xchangeTimer = setTimeout(function () {
2122
+
2123
+ if (_xdsoft_datetime.currentTime === undefined || _xdsoft_datetime.currentTime === null) {
2124
+ //In case blanks are allowed, delay construction until we have a valid date
2125
+ if (options.allowBlank)
2126
+ return;
2127
+
2128
+ _xdsoft_datetime.currentTime = _xdsoft_datetime.now();
2129
+ }
2130
+
2131
+ var table = '',
2132
+ start = new Date(_xdsoft_datetime.currentTime.getFullYear(), _xdsoft_datetime.currentTime.getMonth(), 1, 12, 0, 0),
2133
+ i = 0,
2134
+ j,
2135
+ today = _xdsoft_datetime.now(),
2136
+ maxDate = false,
2137
+ minDate = false,
2138
+ hDate,
2139
+ day,
2140
+ d,
2141
+ y,
2142
+ m,
2143
+ w,
2144
+ classes = [],
2145
+ customDateSettings,
2146
+ newRow = true,
2147
+ time = '',
2148
+ h = '',
2149
+ line_time,
2150
+ description;
2151
+
2152
+ while (start.getDay() !== options.dayOfWeekStart) {
2153
+ start.setDate(start.getDate() - 1);
2154
+ }
2155
+
2156
+ table += '<table><thead><tr>';
2157
+
2158
+ if (options.weeks) {
2159
+ table += '<th></th>';
2160
+ }
2161
+
2162
+ for (j = 0; j < 7; j += 1) {
2163
+ table += '<th>' + options.i18n[globalLocale].dayOfWeekShort[(j + options.dayOfWeekStart) % 7] + '</th>';
2164
+ }
2165
+
2166
+ table += '</tr></thead>';
2167
+ table += '<tbody>';
2168
+
2169
+ if (options.maxDate !== false) {
2170
+ maxDate = _xdsoft_datetime.strToDate(options.maxDate);
2171
+ maxDate = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate(), 23, 59, 59, 999);
2172
+ }
2173
+
2174
+ if (options.minDate !== false) {
2175
+ minDate = _xdsoft_datetime.strToDate(options.minDate);
2176
+ minDate = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate());
2177
+ }
2178
+
2179
+ while (i < _xdsoft_datetime.currentTime.countDaysInMonth() || start.getDay() !== options.dayOfWeekStart || _xdsoft_datetime.currentTime.getMonth() === start.getMonth()) {
2180
+ classes = [];
2181
+ i += 1;
2182
+
2183
+ day = start.getDay();
2184
+ d = start.getDate();
2185
+ y = start.getFullYear();
2186
+ m = start.getMonth();
2187
+ w = _xdsoft_datetime.getWeekOfYear(start);
2188
+ description = '';
2189
+
2190
+ classes.push('xdsoft_date');
2191
+
2192
+ if (options.beforeShowDay && $.isFunction(options.beforeShowDay.call)) {
2193
+ customDateSettings = options.beforeShowDay.call(datetimepicker, start);
2194
+ } else {
2195
+ customDateSettings = null;
2196
+ }
2197
+
2198
+ if(options.allowDateRe && Object.prototype.toString.call(options.allowDateRe) === "[object RegExp]"){
2199
+ if(!options.allowDateRe.test(dateHelper.formatDate(start, options.formatDate))){
2200
+ classes.push('xdsoft_disabled');
2201
+ }
2202
+ } else if(options.allowDates && options.allowDates.length>0){
2203
+ if(options.allowDates.indexOf(dateHelper.formatDate(start, options.formatDate)) === -1){
2204
+ classes.push('xdsoft_disabled');
2205
+ }
2206
+ } else if ((maxDate !== false && start > maxDate) || (minDate !== false && start < minDate) || (customDateSettings && customDateSettings[0] === false)) {
2207
+ classes.push('xdsoft_disabled');
2208
+ } else if (options.disabledDates.indexOf(dateHelper.formatDate(start, options.formatDate)) !== -1) {
2209
+ classes.push('xdsoft_disabled');
2210
+ } else if (options.disabledWeekDays.indexOf(day) !== -1) {
2211
+ classes.push('xdsoft_disabled');
2212
+ }else if (input.is('[readonly]')) {
2213
+ classes.push('xdsoft_disabled');
2214
+ }
2215
+
2216
+ if (customDateSettings && customDateSettings[1] !== "") {
2217
+ classes.push(customDateSettings[1]);
2218
+ }
2219
+
2220
+ if (_xdsoft_datetime.currentTime.getMonth() !== m) {
2221
+ classes.push('xdsoft_other_month');
2222
+ }
2223
+
2224
+ if ((options.defaultSelect || datetimepicker.data('changed')) && dateHelper.formatDate(_xdsoft_datetime.currentTime, options.formatDate) === dateHelper.formatDate(start, options.formatDate)) {
2225
+ classes.push('xdsoft_current');
2226
+ }
2227
+
2228
+ if (dateHelper.formatDate(today, options.formatDate) === dateHelper.formatDate(start, options.formatDate)) {
2229
+ classes.push('xdsoft_today');
2230
+ }
2231
+
2232
+ if (start.getDay() === 0 || start.getDay() === 6 || options.weekends.indexOf(dateHelper.formatDate(start, options.formatDate)) !== -1) {
2233
+ classes.push('xdsoft_weekend');
2234
+ }
2235
+
2236
+ if (options.highlightedDates[dateHelper.formatDate(start, options.formatDate)] !== undefined) {
2237
+ hDate = options.highlightedDates[dateHelper.formatDate(start, options.formatDate)];
2238
+ classes.push(hDate.style === undefined ? 'xdsoft_highlighted_default' : hDate.style);
2239
+ description = hDate.desc === undefined ? '' : hDate.desc;
2240
+ }
2241
+
2242
+ if (options.beforeShowDay && $.isFunction(options.beforeShowDay)) {
2243
+ classes.push(options.beforeShowDay(start));
2244
+ }
2245
+
2246
+ if (newRow) {
2247
+ table += '<tr>';
2248
+ newRow = false;
2249
+ if (options.weeks) {
2250
+ table += '<th>' + w + '</th>';
2251
+ }
2252
+ }
2253
+
2254
+ table += '<td data-date="' + d + '" data-month="' + m + '" data-year="' + y + '"' + ' class="xdsoft_date xdsoft_day_of_week' + start.getDay() + ' ' + classes.join(' ') + '" title="' + description + '">' +
2255
+ '<div>' + d + '</div>' +
2256
+ '</td>';
2257
+
2258
+ if (start.getDay() === options.dayOfWeekStartPrev) {
2259
+ table += '</tr>';
2260
+ newRow = true;
2261
+ }
2262
+
2263
+ start.setDate(d + 1);
2264
+ }
2265
+ table += '</tbody></table>';
2266
+
2267
+ calendar.html(table);
2268
+
2269
+ month_picker.find('.xdsoft_label span').eq(0).text(options.i18n[globalLocale].months[_xdsoft_datetime.currentTime.getMonth()]);
2270
+ month_picker.find('.xdsoft_label span').eq(1).text(_xdsoft_datetime.currentTime.getFullYear());
2271
+
2272
+ // generate timebox
2273
+ time = '';
2274
+ h = '';
2275
+ m = '';
2276
+
2277
+ line_time = function line_time(h, m) {
2278
+ var now = _xdsoft_datetime.now(), optionDateTime, current_time,
2279
+ isALlowTimesInit = options.allowTimes && $.isArray(options.allowTimes) && options.allowTimes.length;
2280
+ now.setHours(h);
2281
+ h = parseInt(now.getHours(), 10);
2282
+ now.setMinutes(m);
2283
+ m = parseInt(now.getMinutes(), 10);
2284
+ optionDateTime = new Date(_xdsoft_datetime.currentTime);
2285
+ optionDateTime.setHours(h);
2286
+ optionDateTime.setMinutes(m);
2287
+ classes = [];
2288
+ if ((options.minDateTime !== false && options.minDateTime > optionDateTime) || (options.maxTime !== false && _xdsoft_datetime.strtotime(options.maxTime).getTime() < now.getTime()) || (options.minTime !== false && _xdsoft_datetime.strtotime(options.minTime).getTime() > now.getTime())) {
2289
+ classes.push('xdsoft_disabled');
2290
+ } else if ((options.minDateTime !== false && options.minDateTime > optionDateTime) || ((options.disabledMinTime !== false && now.getTime() > _xdsoft_datetime.strtotime(options.disabledMinTime).getTime()) && (options.disabledMaxTime !== false && now.getTime() < _xdsoft_datetime.strtotime(options.disabledMaxTime).getTime()))) {
2291
+ classes.push('xdsoft_disabled');
2292
+ } else if (input.is('[readonly]')) {
2293
+ classes.push('xdsoft_disabled');
2294
+ }
2295
+
2296
+ current_time = new Date(_xdsoft_datetime.currentTime);
2297
+ current_time.setHours(parseInt(_xdsoft_datetime.currentTime.getHours(), 10));
2298
+
2299
+ if (!isALlowTimesInit) {
2300
+ current_time.setMinutes(Math[options.roundTime](_xdsoft_datetime.currentTime.getMinutes() / options.step) * options.step);
2301
+ }
2302
+
2303
+ if ((options.initTime || options.defaultSelect || datetimepicker.data('changed')) && current_time.getHours() === parseInt(h, 10) && ((!isALlowTimesInit && options.step > 59) || current_time.getMinutes() === parseInt(m, 10))) {
2304
+ if (options.defaultSelect || datetimepicker.data('changed')) {
2305
+ classes.push('xdsoft_current');
2306
+ } else if (options.initTime) {
2307
+ classes.push('xdsoft_init_time');
2308
+ }
2309
+ }
2310
+ if (parseInt(today.getHours(), 10) === parseInt(h, 10) && parseInt(today.getMinutes(), 10) === parseInt(m, 10)) {
2311
+ classes.push('xdsoft_today');
2312
+ }
2313
+ time += '<div class="xdsoft_time ' + classes.join(' ') + '" data-hour="' + h + '" data-minute="' + m + '">' + dateHelper.formatDate(now, options.formatTime) + '</div>';
2314
+ };
2315
+
2316
+ if (!options.allowTimes || !$.isArray(options.allowTimes) || !options.allowTimes.length) {
2317
+ for (i = 0, j = 0; i < (options.hours12 ? 12 : 24); i += 1) {
2318
+ for (j = 0; j < 60; j += options.step) {
2319
+ h = (i < 10 ? '0' : '') + i;
2320
+ m = (j < 10 ? '0' : '') + j;
2321
+ line_time(h, m);
2322
+ }
2323
+ }
2324
+ } else {
2325
+ for (i = 0; i < options.allowTimes.length; i += 1) {
2326
+ h = _xdsoft_datetime.strtotime(options.allowTimes[i]).getHours();
2327
+ m = _xdsoft_datetime.strtotime(options.allowTimes[i]).getMinutes();
2328
+ line_time(h, m);
2329
+ }
2330
+ }
2331
+
2332
+ timebox.html(time);
2333
+
2334
+ opt = '';
2335
+ i = 0;
2336
+
2337
+ for (i = parseInt(options.yearStart, 10) + options.yearOffset; i <= parseInt(options.yearEnd, 10) + options.yearOffset; i += 1) {
2338
+ opt += '<div class="xdsoft_option ' + (_xdsoft_datetime.currentTime.getFullYear() === i ? 'xdsoft_current' : '') + '" data-value="' + i + '">' + i + '</div>';
2339
+ }
2340
+ yearselect.children().eq(0)
2341
+ .html(opt);
2342
+
2343
+ for (i = parseInt(options.monthStart, 10), opt = ''; i <= parseInt(options.monthEnd, 10); i += 1) {
2344
+ opt += '<div class="xdsoft_option ' + (_xdsoft_datetime.currentTime.getMonth() === i ? 'xdsoft_current' : '') + '" data-value="' + i + '">' + options.i18n[globalLocale].months[i] + '</div>';
2345
+ }
2346
+ monthselect.children().eq(0).html(opt);
2347
+ $(datetimepicker)
2348
+ .trigger('generate.xdsoft');
2349
+ }, 10);
2350
+ event.stopPropagation();
2351
+ })
2352
+ .on('afterOpen.xdsoft', function () {
2353
+ if (options.timepicker) {
2354
+ var classType, pheight, height, top;
2355
+ if (timebox.find('.xdsoft_current').length) {
2356
+ classType = '.xdsoft_current';
2357
+ } else if (timebox.find('.xdsoft_init_time').length) {
2358
+ classType = '.xdsoft_init_time';
2359
+ }
2360
+ if (classType) {
2361
+ pheight = timeboxparent[0].clientHeight;
2362
+ height = timebox[0].offsetHeight;
2363
+ top = timebox.find(classType).index() * options.timeHeightInTimePicker + 1;
2364
+ if ((height - pheight) < top) {
2365
+ top = height - pheight;
2366
+ }
2367
+ timeboxparent.trigger('scroll_element.xdsoft_scroller', [parseInt(top, 10) / (height - pheight)]);
2368
+ } else {
2369
+ timeboxparent.trigger('scroll_element.xdsoft_scroller', [0]);
2370
+ }
2371
+ }
2372
+ });
2373
+
2374
+ timerclick = 0;
2375
+ calendar
2376
+ .on('touchend click.xdsoft', 'td', function (xdevent) {
2377
+ xdevent.stopPropagation(); // Prevents closing of Pop-ups, Modals and Flyouts in Bootstrap
2378
+ timerclick += 1;
2379
+ var $this = $(this),
2380
+ currentTime = _xdsoft_datetime.currentTime;
2381
+
2382
+ if (currentTime === undefined || currentTime === null) {
2383
+ _xdsoft_datetime.currentTime = _xdsoft_datetime.now();
2384
+ currentTime = _xdsoft_datetime.currentTime;
2385
+ }
2386
+
2387
+ if ($this.hasClass('xdsoft_disabled')) {
2388
+ return false;
2389
+ }
2390
+
2391
+ currentTime.setDate(1);
2392
+ currentTime.setFullYear($this.data('year'));
2393
+ currentTime.setMonth($this.data('month'));
2394
+ currentTime.setDate($this.data('date'));
2395
+
2396
+ datetimepicker.trigger('select.xdsoft', [currentTime]);
2397
+
2398
+ input.val(_xdsoft_datetime.str());
2399
+
2400
+ if (options.onSelectDate && $.isFunction(options.onSelectDate)) {
2401
+ options.onSelectDate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent);
2402
+ }
2403
+
2404
+ datetimepicker.data('changed', true);
2405
+ datetimepicker.trigger('xchange.xdsoft');
2406
+ datetimepicker.trigger('changedatetime.xdsoft');
2407
+ if ((timerclick > 1 || (options.closeOnDateSelect === true || (options.closeOnDateSelect === false && !options.timepicker))) && !options.inline) {
2408
+ datetimepicker.trigger('close.xdsoft');
2409
+ }
2410
+ setTimeout(function () {
2411
+ timerclick = 0;
2412
+ }, 200);
2413
+ });
2414
+
2415
+ timebox
2416
+ .on('touchmove', 'div', function () { currentlyScrollingTimeDiv = true; })
2417
+ .on('touchend click.xdsoft', 'div', function (xdevent) {
2418
+ xdevent.stopPropagation();
2419
+ if (currentlyScrollingTimeDiv) {
2420
+ currentlyScrollingTimeDiv = false;
2421
+ return;
2422
+ }
2423
+ var $this = $(this),
2424
+ currentTime = _xdsoft_datetime.currentTime;
2425
+
2426
+ if (currentTime === undefined || currentTime === null) {
2427
+ _xdsoft_datetime.currentTime = _xdsoft_datetime.now();
2428
+ currentTime = _xdsoft_datetime.currentTime;
2429
+ }
2430
+
2431
+ if ($this.hasClass('xdsoft_disabled')) {
2432
+ return false;
2433
+ }
2434
+ currentTime.setHours($this.data('hour'));
2435
+ currentTime.setMinutes($this.data('minute'));
2436
+ datetimepicker.trigger('select.xdsoft', [currentTime]);
2437
+
2438
+ datetimepicker.data('input').val(_xdsoft_datetime.str());
2439
+
2440
+ if (options.onSelectTime && $.isFunction(options.onSelectTime)) {
2441
+ options.onSelectTime.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent);
2442
+ }
2443
+ datetimepicker.data('changed', true);
2444
+ datetimepicker.trigger('xchange.xdsoft');
2445
+ datetimepicker.trigger('changedatetime.xdsoft');
2446
+ if (options.inline !== true && options.closeOnTimeSelect === true) {
2447
+ datetimepicker.trigger('close.xdsoft');
2448
+ }
2449
+ });
2450
+
2451
+ datepicker
2452
+ .on('mousewheel.xdsoft', function (event) {
2453
+ if (!options.scrollMonth) {
2454
+ return true;
2455
+ }
2456
+ if (event.deltaY < 0) {
2457
+ _xdsoft_datetime.nextMonth();
2458
+ } else {
2459
+ _xdsoft_datetime.prevMonth();
2460
+ }
2461
+ return false;
2462
+ });
2463
+
2464
+ input
2465
+ .on('mousewheel.xdsoft', function (event) {
2466
+ if (!options.scrollInput) {
2467
+ return true;
2468
+ }
2469
+ if (!options.datepicker && options.timepicker) {
2470
+ current_time_index = timebox.find('.xdsoft_current').length ? timebox.find('.xdsoft_current').eq(0).index() : 0;
2471
+ if (current_time_index + event.deltaY >= 0 && current_time_index + event.deltaY < timebox.children().length) {
2472
+ current_time_index += event.deltaY;
2473
+ }
2474
+ if (timebox.children().eq(current_time_index).length) {
2475
+ timebox.children().eq(current_time_index).trigger('mousedown');
2476
+ }
2477
+ return false;
2478
+ }
2479
+ if (options.datepicker && !options.timepicker) {
2480
+ datepicker.trigger(event, [event.deltaY, event.deltaX, event.deltaY]);
2481
+ if (input.val) {
2482
+ input.val(_xdsoft_datetime.str());
2483
+ }
2484
+ datetimepicker.trigger('changedatetime.xdsoft');
2485
+ return false;
2486
+ }
2487
+ });
2488
+
2489
+ datetimepicker
2490
+ .on('changedatetime.xdsoft', function (event) {
2491
+ if (options.onChangeDateTime && $.isFunction(options.onChangeDateTime)) {
2492
+ var $input = datetimepicker.data('input');
2493
+ options.onChangeDateTime.call(datetimepicker, _xdsoft_datetime.currentTime, $input, event);
2494
+ delete options.value;
2495
+ $input.trigger('change');
2496
+ }
2497
+ })
2498
+ .on('generate.xdsoft', function () {
2499
+ if (options.onGenerate && $.isFunction(options.onGenerate)) {
2500
+ options.onGenerate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));
2501
+ }
2502
+ if (triggerAfterOpen) {
2503
+ datetimepicker.trigger('afterOpen.xdsoft');
2504
+ triggerAfterOpen = false;
2505
+ }
2506
+ })
2507
+ .on('click.xdsoft', function (xdevent) {
2508
+ xdevent.stopPropagation();
2509
+ });
2510
+
2511
+ current_time_index = 0;
2512
+
2513
+ /**
2514
+ * Runs the callback for each of the specified node's ancestors.
2515
+ *
2516
+ * Return FALSE from the callback to stop ascending.
2517
+ *
2518
+ * @param {DOMNode} node
2519
+ * @param {Function} callback
2520
+ * @returns {undefined}
2521
+ */
2522
+ forEachAncestorOf = function (node, callback) {
2523
+ do {
2524
+ node = node.parentNode;
2525
+
2526
+ if (callback(node) === false) {
2527
+ break;
2528
+ }
2529
+ } while (node.nodeName !== 'HTML');
2530
+ };
2531
+
2532
+ /**
2533
+ * Sets the position of the picker.
2534
+ *
2535
+ * @returns {undefined}
2536
+ */
2537
+ setPos = function () {
2538
+ var dateInputOffset,
2539
+ dateInputElem,
2540
+ verticalPosition,
2541
+ left,
2542
+ position,
2543
+ datetimepickerElem,
2544
+ dateInputHasFixedAncestor,
2545
+ $dateInput,
2546
+ windowWidth,
2547
+ verticalAnchorEdge,
2548
+ datetimepickerCss,
2549
+ windowHeight,
2550
+ windowScrollTop;
2551
+
2552
+ $dateInput = datetimepicker.data('input');
2553
+ dateInputOffset = $dateInput.offset();
2554
+ dateInputElem = $dateInput[0];
2555
+
2556
+ verticalAnchorEdge = 'top';
2557
+ verticalPosition = (dateInputOffset.top + dateInputElem.offsetHeight) - 1;
2558
+ left = dateInputOffset.left;
2559
+ position = "absolute";
2560
+
2561
+ windowWidth = $(window).width();
2562
+ windowHeight = $(window).height();
2563
+ windowScrollTop = $(window).scrollTop();
2564
+
2565
+ if ((document.documentElement.clientWidth - dateInputOffset.left) < datepicker.parent().outerWidth(true)) {
2566
+ var diff = datepicker.parent().outerWidth(true) - dateInputElem.offsetWidth;
2567
+ left = left - diff;
2568
+ }
2569
+
2570
+ if ($dateInput.parent().css('direction') === 'rtl') {
2571
+ left -= (datetimepicker.outerWidth() - $dateInput.outerWidth());
2572
+ }
2573
+
2574
+ if (options.fixed) {
2575
+ verticalPosition -= windowScrollTop;
2576
+ left -= $(window).scrollLeft();
2577
+ position = "fixed";
2578
+ } else {
2579
+ dateInputHasFixedAncestor = false;
2580
+
2581
+ forEachAncestorOf(dateInputElem, function (ancestorNode) {
2582
+ if (window.getComputedStyle(ancestorNode).getPropertyValue('position') === 'fixed') {
2583
+ dateInputHasFixedAncestor = true;
2584
+ return false;
2585
+ }
2586
+ });
2587
+
2588
+ if (dateInputHasFixedAncestor) {
2589
+ position = 'fixed';
2590
+
2591
+ //If the picker won't fit entirely within the viewport then display it above the date input.
2592
+ if (verticalPosition + datetimepicker.outerHeight() > windowHeight + windowScrollTop) {
2593
+ verticalAnchorEdge = 'bottom';
2594
+ verticalPosition = (windowHeight + windowScrollTop) - dateInputOffset.top;
2595
+ } else {
2596
+ verticalPosition -= windowScrollTop;
2597
+ }
2598
+ } else {
2599
+ if (verticalPosition + dateInputElem.offsetHeight > windowHeight + windowScrollTop) {
2600
+ verticalPosition = dateInputOffset.top - dateInputElem.offsetHeight + 1;
2601
+ }
2602
+ }
2603
+
2604
+ if (verticalPosition < 0) {
2605
+ verticalPosition = 0;
2606
+ }
2607
+
2608
+ if (left + dateInputElem.offsetWidth > windowWidth) {
2609
+ left = windowWidth - dateInputElem.offsetWidth;
2610
+ }
2611
+ }
2612
+
2613
+ datetimepickerElem = datetimepicker[0];
2614
+
2615
+ forEachAncestorOf(datetimepickerElem, function (ancestorNode) {
2616
+ var ancestorNodePosition;
2617
+
2618
+ ancestorNodePosition = window.getComputedStyle(ancestorNode).getPropertyValue('position');
2619
+
2620
+ if (ancestorNodePosition === 'relative' && windowWidth >= ancestorNode.offsetWidth) {
2621
+ left = left - ((windowWidth - ancestorNode.offsetWidth) / 2);
2622
+ return false;
2623
+ }
2624
+ });
2625
+
2626
+ datetimepickerCss = {
2627
+ position: position,
2628
+ left: left,
2629
+ top: '', //Initialize to prevent previous values interfering with new ones.
2630
+ bottom: '' //Initialize to prevent previous values interfering with new ones.
2631
+ };
2632
+
2633
+ datetimepickerCss[verticalAnchorEdge] = verticalPosition;
2634
+
2635
+ datetimepicker.css(datetimepickerCss);
2636
+ };
2637
+
2638
+ datetimepicker
2639
+ .on('open.xdsoft', function (event) {
2640
+ var onShow = true;
2641
+ if (options.onShow && $.isFunction(options.onShow)) {
2642
+ onShow = options.onShow.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event);
2643
+ }
2644
+ if (onShow !== false) {
2645
+ datetimepicker.show();
2646
+ setPos();
2647
+ $(window)
2648
+ .off('resize.xdsoft', setPos)
2649
+ .on('resize.xdsoft', setPos);
2650
+
2651
+ if (options.closeOnWithoutClick) {
2652
+ $([document.body, window]).on('touchstart mousedown.xdsoft', function arguments_callee6() {
2653
+ datetimepicker.trigger('close.xdsoft');
2654
+ $([document.body, window]).off('touchstart mousedown.xdsoft', arguments_callee6);
2655
+ });
2656
+ }
2657
+ }
2658
+ })
2659
+ .on('close.xdsoft', function (event) {
2660
+ var onClose = true;
2661
+ month_picker
2662
+ .find('.xdsoft_month,.xdsoft_year')
2663
+ .find('.xdsoft_select')
2664
+ .hide();
2665
+ if (options.onClose && $.isFunction(options.onClose)) {
2666
+ onClose = options.onClose.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event);
2667
+ }
2668
+ if (onClose !== false && !options.opened && !options.inline) {
2669
+ datetimepicker.hide();
2670
+ }
2671
+ event.stopPropagation();
2672
+ })
2673
+ .on('toggle.xdsoft', function () {
2674
+ if (datetimepicker.is(':visible')) {
2675
+ datetimepicker.trigger('close.xdsoft');
2676
+ } else {
2677
+ datetimepicker.trigger('open.xdsoft');
2678
+ }
2679
+ })
2680
+ .data('input', input);
2681
+
2682
+ timer = 0;
2683
+
2684
+ datetimepicker.data('xdsoft_datetime', _xdsoft_datetime);
2685
+ datetimepicker.setOptions(options);
2686
+
2687
+ function getCurrentValue() {
2688
+ var ct = false, time;
2689
+
2690
+ if (options.startDate) {
2691
+ ct = _xdsoft_datetime.strToDate(options.startDate);
2692
+ } else {
2693
+ ct = options.value || ((input && input.val && input.val()) ? input.val() : '');
2694
+ if (ct) {
2695
+ ct = _xdsoft_datetime.strToDateTime(ct);
2696
+ } else if (options.defaultDate) {
2697
+ ct = _xdsoft_datetime.strToDateTime(options.defaultDate);
2698
+ if (options.defaultTime) {
2699
+ time = _xdsoft_datetime.strtotime(options.defaultTime);
2700
+ ct.setHours(time.getHours());
2701
+ ct.setMinutes(time.getMinutes());
2702
+ }
2703
+ }
2704
+ }
2705
+
2706
+ if (ct && _xdsoft_datetime.isValidDate(ct)) {
2707
+ datetimepicker.data('changed', true);
2708
+ } else {
2709
+ ct = '';
2710
+ }
2711
+
2712
+ return ct || 0;
2713
+ }
2714
+
2715
+ function setMask(options) {
2716
+
2717
+ var isValidValue = function (mask, value) {
2718
+ var reg = mask
2719
+ .replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g, '\\$1')
2720
+ .replace(/_/g, '{digit+}')
2721
+ .replace(/([0-9]{1})/g, '{digit$1}')
2722
+ .replace(/\{digit([0-9]{1})\}/g, '[0-$1_]{1}')
2723
+ .replace(/\{digit[\+]\}/g, '[0-9_]{1}');
2724
+ return (new RegExp(reg)).test(value);
2725
+ },
2726
+ getCaretPos = function (input) {
2727
+ try {
2728
+ if (document.selection && document.selection.createRange) {
2729
+ var range = document.selection.createRange();
2730
+ return range.getBookmark().charCodeAt(2) - 2;
2731
+ }
2732
+ if (input.setSelectionRange) {
2733
+ return input.selectionStart;
2734
+ }
2735
+ } catch (e) {
2736
+ return 0;
2737
+ }
2738
+ },
2739
+ setCaretPos = function (node, pos) {
2740
+ node = (typeof node === "string" || node instanceof String) ? document.getElementById(node) : node;
2741
+ if (!node) {
2742
+ return false;
2743
+ }
2744
+ if (node.createTextRange) {
2745
+ var textRange = node.createTextRange();
2746
+ textRange.collapse(true);
2747
+ textRange.moveEnd('character', pos);
2748
+ textRange.moveStart('character', pos);
2749
+ textRange.select();
2750
+ return true;
2751
+ }
2752
+ if (node.setSelectionRange) {
2753
+ node.setSelectionRange(pos, pos);
2754
+ return true;
2755
+ }
2756
+ return false;
2757
+ };
2758
+ if(options.mask) {
2759
+ input.off('keydown.xdsoft');
2760
+ }
2761
+ if (options.mask === true) {
2762
+ if (typeof moment != 'undefined') {
2763
+ options.mask = options.format
2764
+ .replace(/Y{4}/g, '9999')
2765
+ .replace(/Y{2}/g, '99')
2766
+ .replace(/M{2}/g, '19')
2767
+ .replace(/D{2}/g, '39')
2768
+ .replace(/H{2}/g, '29')
2769
+ .replace(/m{2}/g, '59')
2770
+ .replace(/s{2}/g, '59');
2771
+ } else {
2772
+ options.mask = options.format
2773
+ .replace(/Y/g, '9999')
2774
+ .replace(/F/g, '9999')
2775
+ .replace(/m/g, '19')
2776
+ .replace(/d/g, '39')
2777
+ .replace(/H/g, '29')
2778
+ .replace(/i/g, '59')
2779
+ .replace(/s/g, '59');
2780
+ }
2781
+ }
2782
+
2783
+ if ($.type(options.mask) === 'string') {
2784
+ if (!isValidValue(options.mask, input.val())) {
2785
+ input.val(options.mask.replace(/[0-9]/g, '_'));
2786
+ setCaretPos(input[0], 0);
2787
+ }
2788
+
2789
+ input.on('keydown.xdsoft', function (event) {
2790
+ var val = this.value,
2791
+ key = event.which,
2792
+ pos,
2793
+ digit;
2794
+
2795
+ if (((key >= KEY0 && key <= KEY9) || (key >= _KEY0 && key <= _KEY9)) || (key === BACKSPACE || key === DEL)) {
2796
+ pos = getCaretPos(this);
2797
+ digit = (key !== BACKSPACE && key !== DEL) ? String.fromCharCode((_KEY0 <= key && key <= _KEY9) ? key - KEY0 : key) : '_';
2798
+
2799
+ if ((key === BACKSPACE || key === DEL) && pos) {
2800
+ pos -= 1;
2801
+ digit = '_';
2802
+ }
2803
+
2804
+ while (/[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0) {
2805
+ pos += (key === BACKSPACE || key === DEL) ? -1 : 1;
2806
+ }
2807
+
2808
+ val = val.substr(0, pos) + digit + val.substr(pos + 1);
2809
+ if ($.trim(val) === '') {
2810
+ val = options.mask.replace(/[0-9]/g, '_');
2811
+ } else {
2812
+ if (pos === options.mask.length) {
2813
+ event.preventDefault();
2814
+ return false;
2815
+ }
2816
+ }
2817
+
2818
+ pos += (key === BACKSPACE || key === DEL) ? 0 : 1;
2819
+ while (/[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0) {
2820
+ pos += (key === BACKSPACE || key === DEL) ? -1 : 1;
2821
+ }
2822
+
2823
+ if (isValidValue(options.mask, val)) {
2824
+ this.value = val;
2825
+ setCaretPos(this, pos);
2826
+ } else if ($.trim(val) === '') {
2827
+ this.value = options.mask.replace(/[0-9]/g, '_');
2828
+ } else {
2829
+ input.trigger('error_input.xdsoft');
2830
+ }
2831
+ } else {
2832
+ if (([AKEY, CKEY, VKEY, ZKEY, YKEY].indexOf(key) !== -1 && ctrlDown) || [ESC, ARROWUP, ARROWDOWN, ARROWLEFT, ARROWRIGHT, F5, CTRLKEY, TAB, ENTER].indexOf(key) !== -1) {
2833
+ return true;
2834
+ }
2835
+ }
2836
+
2837
+ event.preventDefault();
2838
+ return false;
2839
+ });
2840
+ }
2841
+ }
2842
+
2843
+ _xdsoft_datetime.setCurrentTime(getCurrentValue());
2844
+
2845
+ input
2846
+ .data('xdsoft_datetimepicker', datetimepicker)
2847
+ .on('open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart', function () {
2848
+ if (input.is(':disabled') || (input.data('xdsoft_datetimepicker').is(':visible') && options.closeOnInputClick)) {
2849
+ return;
2850
+ }
2851
+ clearTimeout(timer);
2852
+ timer = setTimeout(function () {
2853
+ if (input.is(':disabled')) {
2854
+ return;
2855
+ }
2856
+
2857
+ triggerAfterOpen = true;
2858
+ _xdsoft_datetime.setCurrentTime(getCurrentValue(), true);
2859
+ if(options.mask) {
2860
+ setMask(options);
2861
+ }
2862
+ datetimepicker.trigger('open.xdsoft');
2863
+ }, 100);
2864
+ })
2865
+ .on('keydown.xdsoft', function (event) {
2866
+ var elementSelector,
2867
+ key = event.which;
2868
+ if ([ENTER].indexOf(key) !== -1 && options.enterLikeTab) {
2869
+ elementSelector = $("input:visible,textarea:visible,button:visible,a:visible");
2870
+ datetimepicker.trigger('close.xdsoft');
2871
+ elementSelector.eq(elementSelector.index(this) + 1).focus();
2872
+ return false;
2873
+ }
2874
+ if ([TAB].indexOf(key) !== -1) {
2875
+ datetimepicker.trigger('close.xdsoft');
2876
+ return true;
2877
+ }
2878
+ })
2879
+ .on('blur.xdsoft', function () {
2880
+ datetimepicker.trigger('close.xdsoft');
2881
+ });
2882
+ };
2883
+ destroyDateTimePicker = function (input) {
2884
+ var datetimepicker = input.data('xdsoft_datetimepicker');
2885
+ if (datetimepicker) {
2886
+ datetimepicker.data('xdsoft_datetime', null);
2887
+ datetimepicker.remove();
2888
+ input
2889
+ .data('xdsoft_datetimepicker', null)
2890
+ .off('.xdsoft');
2891
+ $(window).off('resize.xdsoft');
2892
+ $([window, document.body]).off('mousedown.xdsoft touchstart');
2893
+ if (input.unmousewheel) {
2894
+ input.unmousewheel();
2895
+ }
2896
+ }
2897
+ };
2898
+ $(document)
2899
+ .off('keydown.xdsoftctrl keyup.xdsoftctrl')
2900
+ .on('keydown.xdsoftctrl', function (e) {
2901
+ if (e.keyCode === CTRLKEY) {
2902
+ ctrlDown = true;
2903
+ }
2904
+ })
2905
+ .on('keyup.xdsoftctrl', function (e) {
2906
+ if (e.keyCode === CTRLKEY) {
2907
+ ctrlDown = false;
2908
+ }
2909
+ });
2910
+
2911
+ this.each(function () {
2912
+ var datetimepicker = $(this).data('xdsoft_datetimepicker'), $input;
2913
+ if (datetimepicker) {
2914
+ if ($.type(opt) === 'string') {
2915
+ switch (opt) {
2916
+ case 'show':
2917
+ $(this).select().focus();
2918
+ datetimepicker.trigger('open.xdsoft');
2919
+ break;
2920
+ case 'hide':
2921
+ datetimepicker.trigger('close.xdsoft');
2922
+ break;
2923
+ case 'toggle':
2924
+ datetimepicker.trigger('toggle.xdsoft');
2925
+ break;
2926
+ case 'destroy':
2927
+ destroyDateTimePicker($(this));
2928
+ break;
2929
+ case 'reset':
2930
+ this.value = this.defaultValue;
2931
+ if (!this.value || !datetimepicker.data('xdsoft_datetime').isValidDate(dateHelper.parseDate(this.value, options.format))) {
2932
+ datetimepicker.data('changed', false);
2933
+ }
2934
+ datetimepicker.data('xdsoft_datetime').setCurrentTime(this.value);
2935
+ break;
2936
+ case 'validate':
2937
+ $input = datetimepicker.data('input');
2938
+ $input.trigger('blur.xdsoft');
2939
+ break;
2940
+ default:
2941
+ if (datetimepicker[opt] && $.isFunction(datetimepicker[opt])) {
2942
+ result = datetimepicker[opt](opt2);
2943
+ }
2944
+ }
2945
+ } else {
2946
+ datetimepicker
2947
+ .setOptions(opt);
2948
+ }
2949
+ return 0;
2950
+ }
2951
+ if ($.type(opt) !== 'string') {
2952
+ if (!options.lazyInit || options.open || options.inline) {
2953
+ createDateTimePicker($(this));
2954
+ } else {
2955
+ lazyInit($(this));
2956
+ }
2957
+ }
2958
+ });
2959
+
2960
+ return result;
2961
+ };
2962
+
2963
+ $.fn.datetimepicker.defaults = default_options;
2964
+
2965
+ function HighlightedDate(date, desc, style) {
2966
+ "use strict";
2967
+ this.date = date;
2968
+ this.desc = desc;
2969
+ this.style = style;
2970
+ }
2971
+ }));
2972
+ /*!
2973
+ * jQuery Mousewheel 3.1.13
2974
+ *
2975
+ * Copyright jQuery Foundation and other contributors
2976
+ * Released under the MIT license
2977
+ * http://jquery.org/license
2978
+ */
2979
+
2980
+ (function (factory) {
2981
+ if ( typeof define === 'function' && define.amd ) {
2982
+ // AMD. Register as an anonymous module.
2983
+ define(['jquery'], factory);
2984
+ } else if (typeof exports === 'object') {
2985
+ // Node/CommonJS style for Browserify
2986
+ module.exports = factory;
2987
+ } else {
2988
+ // Browser globals
2989
+ factory(jQuery);
2990
+ }
2991
+ }(function ($) {
2992
+
2993
+ var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],
2994
+ toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?
2995
+ ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],
2996
+ slice = Array.prototype.slice,
2997
+ nullLowestDeltaTimeout, lowestDelta;
2998
+
2999
+ if ( $.event.fixHooks ) {
3000
+ for ( var i = toFix.length; i; ) {
3001
+ $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;
3002
+ }
3003
+ }
3004
+
3005
+ var special = $.event.special.mousewheel = {
3006
+ version: '3.1.12',
3007
+
3008
+ setup: function() {
3009
+ if ( this.addEventListener ) {
3010
+ for ( var i = toBind.length; i; ) {
3011
+ this.addEventListener( toBind[--i], handler, false );
3012
+ }
3013
+ } else {
3014
+ this.onmousewheel = handler;
3015
+ }
3016
+ // Store the line height and page height for this particular element
3017
+ $.data(this, 'mousewheel-line-height', special.getLineHeight(this));
3018
+ $.data(this, 'mousewheel-page-height', special.getPageHeight(this));
3019
+ },
3020
+
3021
+ teardown: function() {
3022
+ if ( this.removeEventListener ) {
3023
+ for ( var i = toBind.length; i; ) {
3024
+ this.removeEventListener( toBind[--i], handler, false );
3025
+ }
3026
+ } else {
3027
+ this.onmousewheel = null;
3028
+ }
3029
+ // Clean up the data we added to the element
3030
+ $.removeData(this, 'mousewheel-line-height');
3031
+ $.removeData(this, 'mousewheel-page-height');
3032
+ },
3033
+
3034
+ getLineHeight: function(elem) {
3035
+ var $elem = $(elem),
3036
+ $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();
3037
+ if (!$parent.length) {
3038
+ $parent = $('body');
3039
+ }
3040
+ return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;
3041
+ },
3042
+
3043
+ getPageHeight: function(elem) {
3044
+ return $(elem).height();
3045
+ },
3046
+
3047
+ settings: {
3048
+ adjustOldDeltas: true, // see shouldAdjustOldDeltas() below
3049
+ normalizeOffset: true // calls getBoundingClientRect for each event
3050
+ }
3051
+ };
3052
+
3053
+ $.fn.extend({
3054
+ mousewheel: function(fn) {
3055
+ return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');
3056
+ },
3057
+
3058
+ unmousewheel: function(fn) {
3059
+ return this.unbind('mousewheel', fn);
3060
+ }
3061
+ });
3062
+
3063
+
3064
+ function handler(event) {
3065
+ var orgEvent = event || window.event,
3066
+ args = slice.call(arguments, 1),
3067
+ delta = 0,
3068
+ deltaX = 0,
3069
+ deltaY = 0,
3070
+ absDelta = 0,
3071
+ offsetX = 0,
3072
+ offsetY = 0;
3073
+ event = $.event.fix(orgEvent);
3074
+ event.type = 'mousewheel';
3075
+
3076
+ // Old school scrollwheel delta
3077
+ if ( 'detail' in orgEvent ) { deltaY = orgEvent.detail * -1; }
3078
+ if ( 'wheelDelta' in orgEvent ) { deltaY = orgEvent.wheelDelta; }
3079
+ if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY; }
3080
+ if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }
3081
+
3082
+ // Firefox < 17 horizontal scrolling related to DOMMouseScroll event
3083
+ if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
3084
+ deltaX = deltaY * -1;
3085
+ deltaY = 0;
3086
+ }
3087
+
3088
+ // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy
3089
+ delta = deltaY === 0 ? deltaX : deltaY;
3090
+
3091
+ // New school wheel delta (wheel event)
3092
+ if ( 'deltaY' in orgEvent ) {
3093
+ deltaY = orgEvent.deltaY * -1;
3094
+ delta = deltaY;
3095
+ }
3096
+ if ( 'deltaX' in orgEvent ) {
3097
+ deltaX = orgEvent.deltaX;
3098
+ if ( deltaY === 0 ) { delta = deltaX * -1; }
3099
+ }
3100
+
3101
+ // No change actually happened, no reason to go any further
3102
+ if ( deltaY === 0 && deltaX === 0 ) { return; }
3103
+
3104
+ // Need to convert lines and pages to pixels if we aren't already in pixels
3105
+ // There are three delta modes:
3106
+ // * deltaMode 0 is by pixels, nothing to do
3107
+ // * deltaMode 1 is by lines
3108
+ // * deltaMode 2 is by pages
3109
+ if ( orgEvent.deltaMode === 1 ) {
3110
+ var lineHeight = $.data(this, 'mousewheel-line-height');
3111
+ delta *= lineHeight;
3112
+ deltaY *= lineHeight;
3113
+ deltaX *= lineHeight;
3114
+ } else if ( orgEvent.deltaMode === 2 ) {
3115
+ var pageHeight = $.data(this, 'mousewheel-page-height');
3116
+ delta *= pageHeight;
3117
+ deltaY *= pageHeight;
3118
+ deltaX *= pageHeight;
3119
+ }
3120
+
3121
+ // Store lowest absolute delta to normalize the delta values
3122
+ absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );
3123
+
3124
+ if ( !lowestDelta || absDelta < lowestDelta ) {
3125
+ lowestDelta = absDelta;
3126
+
3127
+ // Adjust older deltas if necessary
3128
+ if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
3129
+ lowestDelta /= 40;
3130
+ }
3131
+ }
3132
+
3133
+ // Adjust older deltas if necessary
3134
+ if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
3135
+ // Divide all the things by 40!
3136
+ delta /= 40;
3137
+ deltaX /= 40;
3138
+ deltaY /= 40;
3139
+ }
3140
+
3141
+ // Get a whole, normalized value for the deltas
3142
+ delta = Math[ delta >= 1 ? 'floor' : 'ceil' ](delta / lowestDelta);
3143
+ deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);
3144
+ deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);
3145
+
3146
+ // Normalise offsetX and offsetY properties
3147
+ if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {
3148
+ var boundingRect = this.getBoundingClientRect();
3149
+ offsetX = event.clientX - boundingRect.left;
3150
+ offsetY = event.clientY - boundingRect.top;
3151
+ }
3152
+
3153
+ // Add information to the event object
3154
+ event.deltaX = deltaX;
3155
+ event.deltaY = deltaY;
3156
+ event.deltaFactor = lowestDelta;
3157
+ event.offsetX = offsetX;
3158
+ event.offsetY = offsetY;
3159
+ // Go ahead and set deltaMode to 0 since we converted to pixels
3160
+ // Although this is a little odd since we overwrite the deltaX/Y
3161
+ // properties with normalized deltas.
3162
+ event.deltaMode = 0;
3163
+
3164
+ // Add event and delta to the front of the arguments
3165
+ args.unshift(event, delta, deltaX, deltaY);
3166
+
3167
+ // Clearout lowestDelta after sometime to better
3168
+ // handle multiple device types that give different
3169
+ // a different lowestDelta
3170
+ // Ex: trackpad = 3 and mouse wheel = 120
3171
+ if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }
3172
+ nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);
3173
+
3174
+ return ($.event.dispatch || $.event.handle).apply(this, args);
3175
+ }
3176
+
3177
+ function nullLowestDelta() {
3178
+ lowestDelta = null;
3179
+ }
3180
+
3181
+ function shouldAdjustOldDeltas(orgEvent, absDelta) {
3182
+ // If this is an older event and the delta is divisable by 120,
3183
+ // then we are assuming that the browser is treating this as an
3184
+ // older mouse wheel event and that we should divide the deltas
3185
+ // by 40 to try and get a more usable deltaFactor.
3186
+ // Side note, this actually impacts the reported scroll distance
3187
+ // in older browsers and can cause scrolling to be slower than native.
3188
+ // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.
3189
+ return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;
3190
+ }
3191
+
3192
+ }));
assets/js/datetimepicker/jquery.datetimepicker.full.min.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ var DateFormatter;!function(){"use strict";var e,t,a,r,n,o;n=864e5,o=3600,e=function(e,t){return"string"==typeof e&&"string"==typeof t&&e.toLowerCase()===t.toLowerCase()},t=function(e,a,r){var n=r||"0",o=e.toString();return o.length<a?t(n+o,a):o},a=function(e){var t,r;for(e=e||{},t=1;t<arguments.length;t++)if(r=arguments[t])for(var n in r)r.hasOwnProperty(n)&&("object"==typeof r[n]?a(e[n],r[n]):e[n]=r[n]);return e},r={dateSettings:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],meridiem:["AM","PM"],ordinal:function(e){var t=e%10,a={1:"st",2:"nd",3:"rd"};return 1!==Math.floor(e%100/10)&&a[t]?a[t]:"th"}},separators:/[ \-+\/\.T:@]/g,validParts:/[dDjlNSwzWFmMntLoYyaABgGhHisueTIOPZcrU]/g,intParts:/[djwNzmnyYhHgGis]/g,tzParts:/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,tzClip:/[^-+\dA-Z]/g},DateFormatter=function(e){var t=this,n=a(r,e);t.dateSettings=n.dateSettings,t.separators=n.separators,t.validParts=n.validParts,t.intParts=n.intParts,t.tzParts=n.tzParts,t.tzClip=n.tzClip},DateFormatter.prototype={constructor:DateFormatter,parseDate:function(t,a){var r,n,o,i,s,d,u,l,f,c,m=this,h=!1,g=!1,p=m.dateSettings,y={date:null,year:null,month:null,day:null,hour:0,min:0,sec:0};if(!t)return void 0;if(t instanceof Date)return t;if("number"==typeof t)return new Date(t);if("U"===a)return o=parseInt(t),o?new Date(1e3*o):t;if("string"!=typeof t)return"";if(r=a.match(m.validParts),!r||0===r.length)throw new Error("Invalid date format definition.");for(n=t.replace(m.separators,"\x00").split("\x00"),o=0;o<n.length;o++)switch(i=n[o],s=parseInt(i),r[o]){case"y":case"Y":f=i.length,2===f?y.year=parseInt((70>s?"20":"19")+i):4===f&&(y.year=s),h=!0;break;case"m":case"n":case"M":case"F":isNaN(i)?(d=p.monthsShort.indexOf(i),d>-1&&(y.month=d+1),d=p.months.indexOf(i),d>-1&&(y.month=d+1)):s>=1&&12>=s&&(y.month=s),h=!0;break;case"d":case"j":s>=1&&31>=s&&(y.day=s),h=!0;break;case"g":case"h":u=r.indexOf("a")>-1?r.indexOf("a"):r.indexOf("A")>-1?r.indexOf("A"):-1,c=n[u],u>-1?(l=e(c,p.meridiem[0])?0:e(c,p.meridiem[1])?12:-1,s>=1&&12>=s&&l>-1?y.hour=s+l:s>=0&&23>=s&&(y.hour=s)):s>=0&&23>=s&&(y.hour=s),g=!0;break;case"G":case"H":s>=0&&23>=s&&(y.hour=s),g=!0;break;case"i":s>=0&&59>=s&&(y.min=s),g=!0;break;case"s":s>=0&&59>=s&&(y.sec=s),g=!0}if(h===!0&&y.year&&y.month&&y.day)y.date=new Date(y.year,y.month-1,y.day,y.hour,y.min,y.sec,0);else{if(g!==!0)return!1;y.date=new Date(0,0,0,y.hour,y.min,y.sec,0)}return y.date},guessDate:function(e,t){if("string"!=typeof e)return e;var a,r,n,o,i=this,s=e.replace(i.separators,"\x00").split("\x00"),d=/^[djmn]/g,u=t.match(i.validParts),l=new Date,f=0;if(!d.test(u[0]))return e;for(r=0;r<s.length;r++){switch(f=2,n=s[r],o=parseInt(n.substr(0,2)),r){case 0:"m"===u[0]||"n"===u[0]?l.setMonth(o-1):l.setDate(o);break;case 1:"m"===u[0]||"n"===u[0]?l.setDate(o):l.setMonth(o-1);break;case 2:a=l.getFullYear(),n.length<4?(l.setFullYear(parseInt(a.toString().substr(0,4-n.length)+n)),f=n.length):(l.setFullYear=parseInt(n.substr(0,4)),f=4);break;case 3:l.setHours(o);break;case 4:l.setMinutes(o);break;case 5:l.setSeconds(o)}n.substr(f).length>0&&s.splice(r+1,0,n.substr(f))}return l},parseFormat:function(e,a){var r,i=this,s=i.dateSettings,d=/\\?(.?)/gi,u=function(e,t){return r[e]?r[e]():t};return r={d:function(){return t(r.j(),2)},D:function(){return s.daysShort[r.w()]},j:function(){return a.getDate()},l:function(){return s.days[r.w()]},N:function(){return r.w()||7},w:function(){return a.getDay()},z:function(){var e=new Date(r.Y(),r.n()-1,r.j()),t=new Date(r.Y(),0,1);return Math.round((e-t)/n)},W:function(){var e=new Date(r.Y(),r.n()-1,r.j()-r.N()+3),a=new Date(e.getFullYear(),0,4);return t(1+Math.round((e-a)/n/7),2)},F:function(){return s.months[a.getMonth()]},m:function(){return t(r.n(),2)},M:function(){return s.monthsShort[a.getMonth()]},n:function(){return a.getMonth()+1},t:function(){return new Date(r.Y(),r.n(),0).getDate()},L:function(){var e=r.Y();return e%4===0&&e%100!==0||e%400===0?1:0},o:function(){var e=r.n(),t=r.W(),a=r.Y();return a+(12===e&&9>t?1:1===e&&t>9?-1:0)},Y:function(){return a.getFullYear()},y:function(){return r.Y().toString().slice(-2)},a:function(){return r.A().toLowerCase()},A:function(){var e=r.G()<12?0:1;return s.meridiem[e]},B:function(){var e=a.getUTCHours()*o,r=60*a.getUTCMinutes(),n=a.getUTCSeconds();return t(Math.floor((e+r+n+o)/86.4)%1e3,3)},g:function(){return r.G()%12||12},G:function(){return a.getHours()},h:function(){return t(r.g(),2)},H:function(){return t(r.G(),2)},i:function(){return t(a.getMinutes(),2)},s:function(){return t(a.getSeconds(),2)},u:function(){return t(1e3*a.getMilliseconds(),6)},e:function(){var e=/\((.*)\)/.exec(String(a))[1];return e||"Coordinated Universal Time"},T:function(){var e=(String(a).match(i.tzParts)||[""]).pop().replace(i.tzClip,"");return e||"UTC"},I:function(){var e=new Date(r.Y(),0),t=Date.UTC(r.Y(),0),a=new Date(r.Y(),6),n=Date.UTC(r.Y(),6);return e-t!==a-n?1:0},O:function(){var e=a.getTimezoneOffset(),r=Math.abs(e);return(e>0?"-":"+")+t(100*Math.floor(r/60)+r%60,4)},P:function(){var e=r.O();return e.substr(0,3)+":"+e.substr(3,2)},Z:function(){return 60*-a.getTimezoneOffset()},c:function(){return"Y-m-d\\TH:i:sP".replace(d,u)},r:function(){return"D, d M Y H:i:s O".replace(d,u)},U:function(){return a.getTime()/1e3||0}},u(e,e)},formatDate:function(e,t){var a,r,n,o,i,s=this,d="";if("string"==typeof e&&(e=s.parseDate(e,t),e===!1))return!1;if(e instanceof Date){for(n=t.length,a=0;n>a;a++)i=t.charAt(a),"S"!==i&&(o=s.parseFormat(i,e),a!==n-1&&s.intParts.test(i)&&"S"===t.charAt(a+1)&&(r=parseInt(o),o+=s.dateSettings.ordinal(r)),d+=o);return d}return""}}}(),function(e){"function"==typeof define&&define.amd?define(["jquery","jquery-mousewheel"],e):"object"==typeof exports?module.exports=e:e(jQuery)}(function(e){"use strict";function t(e,t,a){this.date=e,this.desc=t,this.style=a}var a={i18n:{ar:{months:["كانون الثاني","شباط","آذار","نيسان","مايو","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],dayOfWeekShort:["ن","ث","ع","خ","ج","س","ح"],dayOfWeek:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"]},ro:{months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],dayOfWeekShort:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],dayOfWeek:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"]},id:{months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],dayOfWeekShort:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],dayOfWeek:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"]},is:{months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],dayOfWeekShort:["Sun","Mán","Þrið","Mið","Fim","Fös","Lau"],dayOfWeek:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"]},bg:{months:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],dayOfWeekShort:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],dayOfWeek:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"]},fa:{months:["فروردین","اردیبهشت","خرداد","تیر","مرداد","شهریور","مهر","آبان","آذر","دی","بهمن","اسفند"],dayOfWeekShort:["یکشنبه","دوشنبه","سه شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayOfWeek:["یک‌شنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنج‌شنبه","جمعه","شنبه","یک‌شنبه"]},ru:{months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],dayOfWeekShort:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],dayOfWeek:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"]},uk:{months:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],dayOfWeekShort:["Ндл","Пнд","Втр","Срд","Чтв","Птн","Сбт"],dayOfWeek:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"]},en:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeekShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},el:{months:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],dayOfWeekShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayOfWeek:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"]},de:{months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],dayOfWeekShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayOfWeek:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},nl:{months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],dayOfWeekShort:["zo","ma","di","wo","do","vr","za"],dayOfWeek:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"]},tr:{months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],dayOfWeekShort:["Paz","Pts","Sal","Çar","Per","Cum","Cts"],dayOfWeek:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"]},fr:{months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],dayOfWeekShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],dayOfWeek:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},es:{months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],dayOfWeekShort:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"],dayOfWeek:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"]},th:{months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],dayOfWeekShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayOfWeek:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัส","ศุกร์","เสาร์","อาทิตย์"]},pl:{months:["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],dayOfWeekShort:["nd","pn","wt","śr","cz","pt","sb"],dayOfWeek:["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"]},pt:{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeekShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sab"],dayOfWeek:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"]},ch:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"]},se:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeekShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"]},kr:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeekShort:["일","월","화","수","목","금","토"],dayOfWeek:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},it:{months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],dayOfWeekShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayOfWeek:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"]},da:{months:["January","Februar","Marts","April","Maj","Juni","July","August","September","Oktober","November","December"],dayOfWeekShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayOfWeek:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"]},no:{months:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],dayOfWeekShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayOfWeek:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"]},ja:{months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayOfWeekShort:["日","月","火","水","木","金","土"],dayOfWeek:["日曜","月曜","火曜","水曜","木曜","金曜","土曜"]},vi:{months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayOfWeekShort:["CN","T2","T3","T4","T5","T6","T7"],dayOfWeek:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"]},sl:{months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],dayOfWeekShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayOfWeek:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"]},cs:{months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],dayOfWeekShort:["Ne","Po","Út","St","Čt","Pá","So"]},hu:{months:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],dayOfWeekShort:["Va","Hé","Ke","Sze","Cs","Pé","Szo"],dayOfWeek:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"]},az:{months:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],dayOfWeekShort:["B","Be","Ça","Ç","Ca","C","Ş"],dayOfWeek:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"]},bs:{months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],dayOfWeekShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayOfWeek:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"]},ca:{months:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],dayOfWeekShort:["Dg","Dl","Dt","Dc","Dj","Dv","Ds"],dayOfWeek:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"]},"en-GB":{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeekShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},et:{months:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],dayOfWeekShort:["P","E","T","K","N","R","L"],dayOfWeek:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"]},eu:{months:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],dayOfWeekShort:["Ig.","Al.","Ar.","Az.","Og.","Or.","La."],dayOfWeek:["Igandea","Astelehena","Asteartea","Asteazkena","Osteguna","Ostirala","Larunbata"]},fi:{months:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],dayOfWeekShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayOfWeek:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"]},gl:{months:["Xan","Feb","Maz","Abr","Mai","Xun","Xul","Ago","Set","Out","Nov","Dec"],dayOfWeekShort:["Dom","Lun","Mar","Mer","Xov","Ven","Sab"],dayOfWeek:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"]},hr:{months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],dayOfWeekShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayOfWeek:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"]},ko:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeekShort:["일","월","화","수","목","금","토"],dayOfWeek:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},lt:{months:["Sausio","Vasario","Kovo","Balandžio","Gegužės","Birželio","Liepos","Rugpjūčio","Rugsėjo","Spalio","Lapkričio","Gruodžio"],dayOfWeekShort:["Sek","Pir","Ant","Tre","Ket","Pen","Šeš"],dayOfWeek:["Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis"]},lv:{months:["Janvāris","Februāris","Marts","Aprīlis ","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],dayOfWeekShort:["Sv","Pr","Ot","Tr","Ct","Pk","St"],dayOfWeek:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"]},mk:{months:["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"],dayOfWeekShort:["нед","пон","вто","сре","чет","пет","саб"],dayOfWeek:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"]},mn:{months:["1-р сар","2-р сар","3-р сар","4-р сар","5-р сар","6-р сар","7-р сар","8-р сар","9-р сар","10-р сар","11-р сар","12-р сар"],dayOfWeekShort:["Дав","Мяг","Лха","Пүр","Бсн","Бям","Ням"],dayOfWeek:["Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба","Ням"]},"pt-BR":{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeekShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayOfWeek:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"]},sk:{months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],dayOfWeekShort:["Ne","Po","Ut","St","Št","Pi","So"],dayOfWeek:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"]},sq:{months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],dayOfWeekShort:["Die","Hën","Mar","Mër","Enj","Pre","Shtu"],dayOfWeek:["E Diel","E Hënë","E Martē","E Mërkurë","E Enjte","E Premte","E Shtunë"]},"sr-YU":{months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],dayOfWeekShort:["Ned","Pon","Uto","Sre","čet","Pet","Sub"],dayOfWeek:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"]},sr:{months:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],dayOfWeekShort:["нед","пон","уто","сре","чет","пет","суб"],dayOfWeek:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"]},sv:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeekShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayOfWeek:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"]},"zh-TW":{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},zh:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},he:{months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],dayOfWeekShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayOfWeek:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת","ראשון"]},hy:{months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],dayOfWeekShort:["Կի","Երկ","Երք","Չոր","Հնգ","Ուրբ","Շբթ"],dayOfWeek:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ"]},kg:{months:["Үчтүн айы","Бирдин айы","Жалган Куран","Чын Куран","Бугу","Кулжа","Теке","Баш Оона","Аяк Оона","Тогуздун айы","Жетинин айы","Бештин айы"],dayOfWeekShort:["Жек","Дүй","Шей","Шар","Бей","Жум","Ише"],dayOfWeek:["Жекшемб","Дүйшөмб","Шейшемб","Шаршемб","Бейшемби","Жума","Ишенб"]},rm:{months:["Schaner","Favrer","Mars","Avrigl","Matg","Zercladur","Fanadur","Avust","Settember","October","November","December"],dayOfWeekShort:["Du","Gli","Ma","Me","Gie","Ve","So"],dayOfWeek:["Dumengia","Glindesdi","Mardi","Mesemna","Gievgia","Venderdi","Sonda"]},ka:{months:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],dayOfWeekShort:["კვ","ორშ","სამშ","ოთხ","ხუთ","პარ","შაბ"],dayOfWeek:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"]}},value:"",rtl:!1,format:"Y/m/d H:i",formatTime:"H:i",formatDate:"Y/m/d",startDate:!1,step:60,monthChangeSpinner:!0,closeOnDateSelect:!1,closeOnTimeSelect:!0,closeOnWithoutClick:!0,closeOnInputClick:!0,timepicker:!0,datepicker:!0,weeks:!1,defaultTime:!1,defaultDate:!1,minDate:!1,maxDate:!1,minTime:!1,maxTime:!1,disabledMinTime:!1,disabledMaxTime:!1,allowTimes:[],opened:!1,initTime:!0,inline:!1,theme:"",onSelectDate:function(){},onSelectTime:function(){},onChangeMonth:function(){},onGetWeekOfYear:function(){},onChangeYear:function(){},onChangeDateTime:function(){},onShow:function(){},onClose:function(){},onGenerate:function(){},withoutCopyright:!0,inverseButton:!1,hours12:!1,next:"xdsoft_next",prev:"xdsoft_prev",dayOfWeekStart:0,parentID:"body",timeHeightInTimePicker:25,timepickerScrollbar:!0,todayButton:!0,prevButton:!0,nextButton:!0,defaultSelect:!0,scrollMonth:!0,scrollTime:!0,scrollInput:!0,lazyInit:!1,mask:!1,validateOnBlur:!0,allowBlank:!0,yearStart:1950,yearEnd:2050,monthStart:0,monthEnd:11,style:"",id:"",fixed:!1,roundTime:"round",className:"",weekends:[],highlightedDates:[],highlightedPeriods:[],allowDates:[],allowDateRe:null,disabledDates:[],disabledWeekDays:[],yearOffset:0,beforeShowDay:null,enterLikeTab:!0,showApplyButton:!1},r=null,n="en",o="en",i={meridiem:["AM","PM"]},s=function(){var t=a.i18n[o],n={days:t.dayOfWeek,daysShort:t.dayOfWeekShort,months:t.months,monthsShort:e.map(t.months,function(e){return e.substring(0,3)})};r=new DateFormatter({dateSettings:e.extend({},i,n)})};e.datetimepicker={setLocale:function(e){var t=a.i18n[e]?e:n;o!=t&&(o=t,s())},setDateFormatter:function(e){r=e},RFC_2822:"D, d M Y H:i:s O",ATOM:"Y-m-dTH:i:sP",ISO_8601:"Y-m-dTH:i:sO",RFC_822:"D, d M y H:i:s O",RFC_850:"l, d-M-y H:i:s T",RFC_1036:"D, d M y H:i:s O",RFC_1123:"D, d M Y H:i:s O",RSS:"D, d M Y H:i:s O",W3C:"Y-m-dTH:i:sP"},s(),window.getComputedStyle||(window.getComputedStyle=function(e){return this.el=e,this.getPropertyValue=function(t){var a=/(\-([a-z]){1})/g;return"float"===t&&(t="styleFloat"),a.test(t)&&(t=t.replace(a,function(e,t,a){return a.toUpperCase()})),e.currentStyle[t]||null},this}),Array.prototype.indexOf||(Array.prototype.indexOf=function(e,t){var a,r;for(a=t||0,r=this.length;r>a;a+=1)if(this[a]===e)return a;return-1}),Date.prototype.countDaysInMonth=function(){return new Date(this.getFullYear(),this.getMonth()+1,0).getDate()},e.fn.xdsoftScroller=function(t){return this.each(function(){var a,r,n,o,i,s=e(this),d=function(e){var t,a={x:0,y:0};return"touchstart"===e.type||"touchmove"===e.type||"touchend"===e.type||"touchcancel"===e.type?(t=e.originalEvent.touches[0]||e.originalEvent.changedTouches[0],a.x=t.clientX,a.y=t.clientY):("mousedown"===e.type||"mouseup"===e.type||"mousemove"===e.type||"mouseover"===e.type||"mouseout"===e.type||"mouseenter"===e.type||"mouseleave"===e.type)&&(a.x=e.clientX,a.y=e.clientY),a},u=100,l=!1,f=0,c=0,m=0,h=!1,g=0,p=function(){};return"hide"===t?void s.find(".xdsoft_scrollbar").hide():(e(this).hasClass("xdsoft_scroller_box")||(a=s.children().eq(0),r=s[0].clientHeight,n=a[0].offsetHeight,o=e('<div class="xdsoft_scrollbar"></div>'),i=e('<div class="xdsoft_scroller"></div>'),o.append(i),s.addClass("xdsoft_scroller_box").append(o),p=function(e){var t=d(e).y-f+g;0>t&&(t=0),t+i[0].offsetHeight>m&&(t=m-i[0].offsetHeight),s.trigger("scroll_element.xdsoft_scroller",[u?t/u:0])},i.on("touchstart.xdsoft_scroller mousedown.xdsoft_scroller",function(a){r||s.trigger("resize_scroll.xdsoft_scroller",[t]),f=d(a).y,g=parseInt(i.css("margin-top"),10),m=o[0].offsetHeight,"mousedown"===a.type||"touchstart"===a.type?(document&&e(document.body).addClass("xdsoft_noselect"),e([document.body,window]).on("touchend mouseup.xdsoft_scroller",function n(){e([document.body,window]).off("touchend mouseup.xdsoft_scroller",n).off("mousemove.xdsoft_scroller",p).removeClass("xdsoft_noselect")}),e(document.body).on("mousemove.xdsoft_scroller",p)):(h=!0,a.stopPropagation(),a.preventDefault())}).on("touchmove",function(e){h&&(e.preventDefault(),p(e))}).on("touchend touchcancel",function(){h=!1,g=0}),s.on("scroll_element.xdsoft_scroller",function(e,t){r||s.trigger("resize_scroll.xdsoft_scroller",[t,!0]),t=t>1?1:0>t||isNaN(t)?0:t,i.css("margin-top",u*t),setTimeout(function(){a.css("marginTop",-parseInt((a[0].offsetHeight-r)*t,10))},10)}).on("resize_scroll.xdsoft_scroller",function(e,t,d){var l,f;r=s[0].clientHeight,n=a[0].offsetHeight,l=r/n,f=l*o[0].offsetHeight,l>1?i.hide():(i.show(),i.css("height",parseInt(f>10?f:10,10)),u=o[0].offsetHeight-i[0].offsetHeight,d!==!0&&s.trigger("scroll_element.xdsoft_scroller",[t||Math.abs(parseInt(a.css("marginTop"),10))/(n-r)]))}),s.on("mousewheel",function(e){var t=Math.abs(parseInt(a.css("marginTop"),10));return t-=20*e.deltaY,0>t&&(t=0),s.trigger("scroll_element.xdsoft_scroller",[t/(n-r)]),e.stopPropagation(),!1}),s.on("touchstart",function(e){l=d(e),c=Math.abs(parseInt(a.css("marginTop"),10))}),s.on("touchmove",function(e){if(l){e.preventDefault();var t=d(e);s.trigger("scroll_element.xdsoft_scroller",[(c-(t.y-l.y))/(n-r)])}}),s.on("touchend touchcancel",function(){l=!1,c=0})),void s.trigger("resize_scroll.xdsoft_scroller",[t]))})},e.fn.datetimepicker=function(n,i){var s,d,u=this,l=48,f=57,c=96,m=105,h=17,g=46,p=13,y=27,v=8,b=37,D=38,k=39,x=40,T=9,S=116,w=65,O=67,M=86,_=90,W=89,F=!1,C=e.isPlainObject(n)||!n?e.extend(!0,{},a,n):e.extend(!0,{},a),P=0,A=function(e){e.on("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",function t(){e.is(":disabled")||e.data("xdsoft_datetimepicker")||(clearTimeout(P),P=setTimeout(function(){e.data("xdsoft_datetimepicker")||s(e),e.off("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",t).trigger("open.xdsoft")},100))})};return s=function(a){function i(){var e,t=!1;return C.startDate?t=j.strToDate(C.startDate):(t=C.value||(a&&a.val&&a.val()?a.val():""),t?t=j.strToDateTime(t):C.defaultDate&&(t=j.strToDateTime(C.defaultDate),C.defaultTime&&(e=j.strtotime(C.defaultTime),t.setHours(e.getHours()),t.setMinutes(e.getMinutes())))),t&&j.isValidDate(t)?J.data("changed",!0):t="",t||0}function s(t){var r=function(e,t){var a=e.replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g,"\\$1").replace(/_/g,"{digit+}").replace(/([0-9]{1})/g,"{digit$1}").replace(/\{digit([0-9]{1})\}/g,"[0-$1_]{1}").replace(/\{digit[\+]\}/g,"[0-9_]{1}");return new RegExp(a).test(t)},n=function(e){try{if(document.selection&&document.selection.createRange){var t=document.selection.createRange();return t.getBookmark().charCodeAt(2)-2}if(e.setSelectionRange)return e.selectionStart}catch(a){return 0}},o=function(e,t){if(e="string"==typeof e||e instanceof String?document.getElementById(e):e,!e)return!1;if(e.createTextRange){var a=e.createTextRange();return a.collapse(!0),a.moveEnd("character",t),a.moveStart("character",t),a.select(),!0}return e.setSelectionRange?(e.setSelectionRange(t,t),!0):!1};t.mask&&a.off("keydown.xdsoft"),t.mask===!0&&(t.mask="undefined"!=typeof moment?t.format.replace(/Y{4}/g,"9999").replace(/Y{2}/g,"99").replace(/M{2}/g,"19").replace(/D{2}/g,"39").replace(/H{2}/g,"29").replace(/m{2}/g,"59").replace(/s{2}/g,"59"):t.format.replace(/Y/g,"9999").replace(/F/g,"9999").replace(/m/g,"19").replace(/d/g,"39").replace(/H/g,"29").replace(/i/g,"59").replace(/s/g,"59")),"string"===e.type(t.mask)&&(r(t.mask,a.val())||(a.val(t.mask.replace(/[0-9]/g,"_")),o(a[0],0)),a.on("keydown.xdsoft",function(i){var s,d,u=this.value,C=i.which;if(C>=l&&f>=C||C>=c&&m>=C||C===v||C===g){for(s=n(this),d=C!==v&&C!==g?String.fromCharCode(C>=c&&m>=C?C-l:C):"_",C!==v&&C!==g||!s||(s-=1,d="_");/[^0-9_]/.test(t.mask.substr(s,1))&&s<t.mask.length&&s>0;)s+=C===v||C===g?-1:1;if(u=u.substr(0,s)+d+u.substr(s+1),""===e.trim(u))u=t.mask.replace(/[0-9]/g,"_");else if(s===t.mask.length)return i.preventDefault(),!1;for(s+=C===v||C===g?0:1;/[^0-9_]/.test(t.mask.substr(s,1))&&s<t.mask.length&&s>0;)s+=C===v||C===g?-1:1;r(t.mask,u)?(this.value=u,o(this,s)):""===e.trim(u)?this.value=t.mask.replace(/[0-9]/g,"_"):a.trigger("error_input.xdsoft")}else if(-1!==[w,O,M,_,W].indexOf(C)&&F||-1!==[y,D,x,b,k,S,h,T,p].indexOf(C))return!0;return i.preventDefault(),!1}))}var d,u,P,A,Y,j,H,J=e('<div class="xdsoft_datetimepicker xdsoft_noselect"></div>'),z=e('<div class="xdsoft_copyright"><a target="_blank" href="http://xdsoft.net/jqplugins/datetimepicker/">xdsoft.net</a></div>'),I=e('<div class="xdsoft_datepicker active"></div>'),N=e('<div class="xdsoft_monthpicker"><button type="button" class="xdsoft_prev"></button><button type="button" class="xdsoft_today_button"></button><div class="xdsoft_label xdsoft_month"><span></span><i></i></div><div class="xdsoft_label xdsoft_year"><span></span><i></i></div><button type="button" class="xdsoft_next"></button></div>'),L=e('<div class="xdsoft_calendar"></div>'),E=e('<div class="xdsoft_timepicker active"><button type="button" class="xdsoft_prev"></button><div class="xdsoft_time_box"></div><button type="button" class="xdsoft_next"></button></div>'),R=E.find(".xdsoft_time_box").eq(0),B=e('<div class="xdsoft_time_variant"></div>'),V=e('<button type="button" class="xdsoft_save_selected blue-gradient-button">Save Selected</button>'),G=e('<div class="xdsoft_select xdsoft_monthselect"><div></div></div>'),U=e('<div class="xdsoft_select xdsoft_yearselect"><div></div></div>'),q=!1,X=0;C.id&&J.attr("id",C.id),C.style&&J.attr("style",C.style),C.weeks&&J.addClass("xdsoft_showweeks"),C.rtl&&J.addClass("xdsoft_rtl"),J.addClass("xdsoft_"+C.theme),J.addClass(C.className),N.find(".xdsoft_month span").after(G),N.find(".xdsoft_year span").after(U),N.find(".xdsoft_month,.xdsoft_year").on("touchstart mousedown.xdsoft",function(t){var a,r,n=e(this).find(".xdsoft_select").eq(0),o=0,i=0,s=n.is(":visible");for(N.find(".xdsoft_select").hide(),j.currentTime&&(o=j.currentTime[e(this).hasClass("xdsoft_month")?"getMonth":"getFullYear"]()),n[s?"hide":"show"](),a=n.find("div.xdsoft_option"),r=0;r<a.length&&a.eq(r).data("value")!==o;r+=1)i+=a[0].offsetHeight;return n.xdsoftScroller(i/(n.children()[0].offsetHeight-n[0].clientHeight)),t.stopPropagation(),!1}),N.find(".xdsoft_select").xdsoftScroller().on("touchstart mousedown.xdsoft",function(e){e.stopPropagation(),e.preventDefault()}).on("touchstart mousedown.xdsoft",".xdsoft_option",function(){(void 0===j.currentTime||null===j.currentTime)&&(j.currentTime=j.now());var t=j.currentTime.getFullYear();j&&j.currentTime&&j.currentTime[e(this).parent().parent().hasClass("xdsoft_monthselect")?"setMonth":"setFullYear"](e(this).data("value")),e(this).parent().parent().hide(),J.trigger("xchange.xdsoft"),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(J,j.currentTime,J.data("input")),t!==j.currentTime.getFullYear()&&e.isFunction(C.onChangeYear)&&C.onChangeYear.call(J,j.currentTime,J.data("input"))}),J.getValue=function(){return j.getCurrentTime()},J.setOptions=function(n){var o={};C=e.extend(!0,{},C,n),n.allowTimes&&e.isArray(n.allowTimes)&&n.allowTimes.length&&(C.allowTimes=e.extend(!0,[],n.allowTimes)),n.weekends&&e.isArray(n.weekends)&&n.weekends.length&&(C.weekends=e.extend(!0,[],n.weekends)),n.allowDates&&e.isArray(n.allowDates)&&n.allowDates.length&&(C.allowDates=e.extend(!0,[],n.allowDates)),n.allowDateRe&&"[object String]"===Object.prototype.toString.call(n.allowDateRe)&&(C.allowDateRe=new RegExp(n.allowDateRe)),n.highlightedDates&&e.isArray(n.highlightedDates)&&n.highlightedDates.length&&(e.each(n.highlightedDates,function(a,n){var i,s=e.map(n.split(","),e.trim),d=new t(r.parseDate(s[0],C.formatDate),s[1],s[2]),u=r.formatDate(d.date,C.formatDate);void 0!==o[u]?(i=o[u].desc,i&&i.length&&d.desc&&d.desc.length&&(o[u].desc=i+"\n"+d.desc)):o[u]=d}),C.highlightedDates=e.extend(!0,[],o)),n.highlightedPeriods&&e.isArray(n.highlightedPeriods)&&n.highlightedPeriods.length&&(o=e.extend(!0,[],C.highlightedDates),
2
+ e.each(n.highlightedPeriods,function(a,n){var i,s,d,u,l,f,c;if(e.isArray(n))i=n[0],s=n[1],d=n[2],c=n[3];else{var m=e.map(n.split(","),e.trim);i=r.parseDate(m[0],C.formatDate),s=r.parseDate(m[1],C.formatDate),d=m[2],c=m[3]}for(;s>=i;)u=new t(i,d,c),l=r.formatDate(i,C.formatDate),i.setDate(i.getDate()+1),void 0!==o[l]?(f=o[l].desc,f&&f.length&&u.desc&&u.desc.length&&(o[l].desc=f+"\n"+u.desc)):o[l]=u}),C.highlightedDates=e.extend(!0,[],o)),n.disabledDates&&e.isArray(n.disabledDates)&&n.disabledDates.length&&(C.disabledDates=e.extend(!0,[],n.disabledDates)),n.disabledWeekDays&&e.isArray(n.disabledWeekDays)&&n.disabledWeekDays.length&&(C.disabledWeekDays=e.extend(!0,[],n.disabledWeekDays)),!C.open&&!C.opened||C.inline||a.trigger("open.xdsoft"),C.inline&&(q=!0,J.addClass("xdsoft_inline"),a.after(J).hide()),C.inverseButton&&(C.next="xdsoft_prev",C.prev="xdsoft_next"),C.datepicker?I.addClass("active"):I.removeClass("active"),C.timepicker?E.addClass("active"):E.removeClass("active"),C.value&&(j.setCurrentTime(C.value),a&&a.val&&a.val(j.str)),C.dayOfWeekStart=isNaN(C.dayOfWeekStart)?0:parseInt(C.dayOfWeekStart,10)%7,C.timepickerScrollbar||R.xdsoftScroller("hide"),C.minDate&&/^[\+\-](.*)$/.test(C.minDate)&&(C.minDate=r.formatDate(j.strToDateTime(C.minDate),C.formatDate)),C.maxDate&&/^[\+\-](.*)$/.test(C.maxDate)&&(C.maxDate=r.formatDate(j.strToDateTime(C.maxDate),C.formatDate)),V.toggle(C.showApplyButton),N.find(".xdsoft_today_button").css("visibility",C.todayButton?"visible":"hidden"),N.find("."+C.prev).css("visibility",C.prevButton?"visible":"hidden"),N.find("."+C.next).css("visibility",C.nextButton?"visible":"hidden"),s(C),C.validateOnBlur&&a.off("blur.xdsoft").on("blur.xdsoft",function(){if(C.allowBlank&&(!e.trim(e(this).val()).length||"string"==typeof C.mask&&e.trim(e(this).val())===C.mask.replace(/[0-9]/g,"_")))e(this).val(null),J.data("xdsoft_datetime").empty();else{var t=r.parseDate(e(this).val(),C.format);if(t)e(this).val(r.formatDate(t,C.format));else{var a=+[e(this).val()[0],e(this).val()[1]].join(""),n=+[e(this).val()[2],e(this).val()[3]].join("");e(this).val(!C.datepicker&&C.timepicker&&a>=0&&24>a&&n>=0&&60>n?[a,n].map(function(e){return e>9?e:"0"+e}).join(":"):r.formatDate(j.now(),C.format))}J.data("xdsoft_datetime").setCurrentTime(e(this).val())}J.trigger("changedatetime.xdsoft"),J.trigger("close.xdsoft")}),C.dayOfWeekStartPrev=0===C.dayOfWeekStart?6:C.dayOfWeekStart-1,J.trigger("xchange.xdsoft").trigger("afterOpen.xdsoft")},J.data("options",C).on("touchstart mousedown.xdsoft",function(e){return e.stopPropagation(),e.preventDefault(),U.hide(),G.hide(),!1}),R.append(B),R.xdsoftScroller(),J.on("afterOpen.xdsoft",function(){R.xdsoftScroller()}),J.append(I).append(E),C.withoutCopyright!==!0&&J.append(z),I.append(N).append(L).append(V),e(C.parentID).append(J),d=function(){var t=this;t.now=function(e){var a,r,n=new Date;return!e&&C.defaultDate&&(a=t.strToDateTime(C.defaultDate),n.setFullYear(a.getFullYear()),n.setMonth(a.getMonth()),n.setDate(a.getDate())),C.yearOffset&&n.setFullYear(n.getFullYear()+C.yearOffset),!e&&C.defaultTime&&(r=t.strtotime(C.defaultTime),n.setHours(r.getHours()),n.setMinutes(r.getMinutes())),n},t.isValidDate=function(e){return"[object Date]"!==Object.prototype.toString.call(e)?!1:!isNaN(e.getTime())},t.setCurrentTime=function(e,a){t.currentTime="string"==typeof e?t.strToDateTime(e):t.isValidDate(e)?e:e||a||!C.allowBlank?t.now():null,J.trigger("xchange.xdsoft")},t.empty=function(){t.currentTime=null},t.getCurrentTime=function(){return t.currentTime},t.nextMonth=function(){(void 0===t.currentTime||null===t.currentTime)&&(t.currentTime=t.now());var a,r=t.currentTime.getMonth()+1;return 12===r&&(t.currentTime.setFullYear(t.currentTime.getFullYear()+1),r=0),a=t.currentTime.getFullYear(),t.currentTime.setDate(Math.min(new Date(t.currentTime.getFullYear(),r+1,0).getDate(),t.currentTime.getDate())),t.currentTime.setMonth(r),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(J,j.currentTime,J.data("input")),a!==t.currentTime.getFullYear()&&e.isFunction(C.onChangeYear)&&C.onChangeYear.call(J,j.currentTime,J.data("input")),J.trigger("xchange.xdsoft"),r},t.prevMonth=function(){(void 0===t.currentTime||null===t.currentTime)&&(t.currentTime=t.now());var a=t.currentTime.getMonth()-1;return-1===a&&(t.currentTime.setFullYear(t.currentTime.getFullYear()-1),a=11),t.currentTime.setDate(Math.min(new Date(t.currentTime.getFullYear(),a+1,0).getDate(),t.currentTime.getDate())),t.currentTime.setMonth(a),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(J,j.currentTime,J.data("input")),J.trigger("xchange.xdsoft"),a},t.getWeekOfYear=function(t){if(C.onGetWeekOfYear&&e.isFunction(C.onGetWeekOfYear)){var a=C.onGetWeekOfYear.call(J,t);if("undefined"!=typeof a)return a}var r=new Date(t.getFullYear(),0,1);return 4!=r.getDay()&&r.setMonth(0,1+(4-r.getDay()+7)%7),Math.ceil(((t-r)/864e5+r.getDay()+1)/7)},t.strToDateTime=function(e){var a,n,o=[];return e&&e instanceof Date&&t.isValidDate(e)?e:(o=/^(\+|\-)(.*)$/.exec(e),o&&(o[2]=r.parseDate(o[2],C.formatDate)),o&&o[2]?(a=o[2].getTime()-6e4*o[2].getTimezoneOffset(),n=new Date(t.now(!0).getTime()+parseInt(o[1]+"1",10)*a)):n=e?r.parseDate(e,C.format):t.now(),t.isValidDate(n)||(n=t.now()),n)},t.strToDate=function(e){if(e&&e instanceof Date&&t.isValidDate(e))return e;var a=e?r.parseDate(e,C.formatDate):t.now(!0);return t.isValidDate(a)||(a=t.now(!0)),a},t.strtotime=function(e){if(e&&e instanceof Date&&t.isValidDate(e))return e;var a=e?r.parseDate(e,C.formatTime):t.now(!0);return t.isValidDate(a)||(a=t.now(!0)),a},t.str=function(){return r.formatDate(t.currentTime,C.format)},t.currentTime=this.now()},j=new d,V.on("touchend click",function(e){e.preventDefault(),J.data("changed",!0),j.setCurrentTime(i()),a.val(j.str()),J.trigger("close.xdsoft")}),N.find(".xdsoft_today_button").on("touchend mousedown.xdsoft",function(){J.data("changed",!0),j.setCurrentTime(0,!0),J.trigger("afterOpen.xdsoft")}).on("dblclick.xdsoft",function(){var e,t,r=j.getCurrentTime();r=new Date(r.getFullYear(),r.getMonth(),r.getDate()),e=j.strToDate(C.minDate),e=new Date(e.getFullYear(),e.getMonth(),e.getDate()),e>r||(t=j.strToDate(C.maxDate),t=new Date(t.getFullYear(),t.getMonth(),t.getDate()),r>t||(a.val(j.str()),a.trigger("change"),J.trigger("close.xdsoft")))}),N.find(".xdsoft_prev,.xdsoft_next").on("touchend mousedown.xdsoft",function(){var t=e(this),a=0,r=!1;!function n(e){t.hasClass(C.next)?j.nextMonth():t.hasClass(C.prev)&&j.prevMonth(),C.monthChangeSpinner&&(r||(a=setTimeout(n,e||100)))}(500),e([document.body,window]).on("touchend mouseup.xdsoft",function o(){clearTimeout(a),r=!0,e([document.body,window]).off("touchend mouseup.xdsoft",o)})}),E.find(".xdsoft_prev,.xdsoft_next").on("touchend mousedown.xdsoft",function(){var t=e(this),a=0,r=!1,n=110;!function o(e){var i=R[0].clientHeight,s=B[0].offsetHeight,d=Math.abs(parseInt(B.css("marginTop"),10));t.hasClass(C.next)&&s-i-C.timeHeightInTimePicker>=d?B.css("marginTop","-"+(d+C.timeHeightInTimePicker)+"px"):t.hasClass(C.prev)&&d-C.timeHeightInTimePicker>=0&&B.css("marginTop","-"+(d-C.timeHeightInTimePicker)+"px"),R.trigger("scroll_element.xdsoft_scroller",[Math.abs(parseInt(B[0].style.marginTop,10)/(s-i))]),n=n>10?10:n-10,r||(a=setTimeout(o,e||n))}(500),e([document.body,window]).on("touchend mouseup.xdsoft",function i(){clearTimeout(a),r=!0,e([document.body,window]).off("touchend mouseup.xdsoft",i)})}),u=0,J.on("xchange.xdsoft",function(t){clearTimeout(u),u=setTimeout(function(){if(void 0===j.currentTime||null===j.currentTime){if(C.allowBlank)return;j.currentTime=j.now()}for(var t,i,s,d,u,l,f,c,m,h,g="",p=new Date(j.currentTime.getFullYear(),j.currentTime.getMonth(),1,12,0,0),y=0,v=j.now(),b=!1,D=!1,k=[],x=!0,T="",S="";p.getDay()!==C.dayOfWeekStart;)p.setDate(p.getDate()-1);for(g+="<table><thead><tr>",C.weeks&&(g+="<th></th>"),t=0;7>t;t+=1)g+="<th>"+C.i18n[o].dayOfWeekShort[(t+C.dayOfWeekStart)%7]+"</th>";for(g+="</tr></thead>",g+="<tbody>",C.maxDate!==!1&&(b=j.strToDate(C.maxDate),b=new Date(b.getFullYear(),b.getMonth(),b.getDate(),23,59,59,999)),C.minDate!==!1&&(D=j.strToDate(C.minDate),D=new Date(D.getFullYear(),D.getMonth(),D.getDate()));y<j.currentTime.countDaysInMonth()||p.getDay()!==C.dayOfWeekStart||j.currentTime.getMonth()===p.getMonth();)k=[],y+=1,s=p.getDay(),d=p.getDate(),u=p.getFullYear(),l=p.getMonth(),f=j.getWeekOfYear(p),h="",k.push("xdsoft_date"),c=C.beforeShowDay&&e.isFunction(C.beforeShowDay.call)?C.beforeShowDay.call(J,p):null,C.allowDateRe&&"[object RegExp]"===Object.prototype.toString.call(C.allowDateRe)?C.allowDateRe.test(r.formatDate(p,C.formatDate))||k.push("xdsoft_disabled"):C.allowDates&&C.allowDates.length>0?-1===C.allowDates.indexOf(r.formatDate(p,C.formatDate))&&k.push("xdsoft_disabled"):b!==!1&&p>b||D!==!1&&D>p||c&&c[0]===!1?k.push("xdsoft_disabled"):-1!==C.disabledDates.indexOf(r.formatDate(p,C.formatDate))?k.push("xdsoft_disabled"):-1!==C.disabledWeekDays.indexOf(s)?k.push("xdsoft_disabled"):a.is("[readonly]")&&k.push("xdsoft_disabled"),c&&""!==c[1]&&k.push(c[1]),j.currentTime.getMonth()!==l&&k.push("xdsoft_other_month"),(C.defaultSelect||J.data("changed"))&&r.formatDate(j.currentTime,C.formatDate)===r.formatDate(p,C.formatDate)&&k.push("xdsoft_current"),r.formatDate(v,C.formatDate)===r.formatDate(p,C.formatDate)&&k.push("xdsoft_today"),(0===p.getDay()||6===p.getDay()||-1!==C.weekends.indexOf(r.formatDate(p,C.formatDate)))&&k.push("xdsoft_weekend"),void 0!==C.highlightedDates[r.formatDate(p,C.formatDate)]&&(i=C.highlightedDates[r.formatDate(p,C.formatDate)],k.push(void 0===i.style?"xdsoft_highlighted_default":i.style),h=void 0===i.desc?"":i.desc),C.beforeShowDay&&e.isFunction(C.beforeShowDay)&&k.push(C.beforeShowDay(p)),x&&(g+="<tr>",x=!1,C.weeks&&(g+="<th>"+f+"</th>")),g+='<td data-date="'+d+'" data-month="'+l+'" data-year="'+u+'" class="xdsoft_date xdsoft_day_of_week'+p.getDay()+" "+k.join(" ")+'" title="'+h+'"><div>'+d+"</div></td>",p.getDay()===C.dayOfWeekStartPrev&&(g+="</tr>",x=!0),p.setDate(d+1);if(g+="</tbody></table>",L.html(g),N.find(".xdsoft_label span").eq(0).text(C.i18n[o].months[j.currentTime.getMonth()]),N.find(".xdsoft_label span").eq(1).text(j.currentTime.getFullYear()),T="",S="",l="",m=function(t,n){var o,i,s=j.now(),d=C.allowTimes&&e.isArray(C.allowTimes)&&C.allowTimes.length;s.setHours(t),t=parseInt(s.getHours(),10),s.setMinutes(n),n=parseInt(s.getMinutes(),10),o=new Date(j.currentTime),o.setHours(t),o.setMinutes(n),k=[],C.minDateTime!==!1&&C.minDateTime>o||C.maxTime!==!1&&j.strtotime(C.maxTime).getTime()<s.getTime()||C.minTime!==!1&&j.strtotime(C.minTime).getTime()>s.getTime()?k.push("xdsoft_disabled"):C.minDateTime!==!1&&C.minDateTime>o||C.disabledMinTime!==!1&&s.getTime()>j.strtotime(C.disabledMinTime).getTime()&&C.disabledMaxTime!==!1&&s.getTime()<j.strtotime(C.disabledMaxTime).getTime()?k.push("xdsoft_disabled"):a.is("[readonly]")&&k.push("xdsoft_disabled"),i=new Date(j.currentTime),i.setHours(parseInt(j.currentTime.getHours(),10)),d||i.setMinutes(Math[C.roundTime](j.currentTime.getMinutes()/C.step)*C.step),(C.initTime||C.defaultSelect||J.data("changed"))&&i.getHours()===parseInt(t,10)&&(!d&&C.step>59||i.getMinutes()===parseInt(n,10))&&(C.defaultSelect||J.data("changed")?k.push("xdsoft_current"):C.initTime&&k.push("xdsoft_init_time")),parseInt(v.getHours(),10)===parseInt(t,10)&&parseInt(v.getMinutes(),10)===parseInt(n,10)&&k.push("xdsoft_today"),T+='<div class="xdsoft_time '+k.join(" ")+'" data-hour="'+t+'" data-minute="'+n+'">'+r.formatDate(s,C.formatTime)+"</div>"},C.allowTimes&&e.isArray(C.allowTimes)&&C.allowTimes.length)for(y=0;y<C.allowTimes.length;y+=1)S=j.strtotime(C.allowTimes[y]).getHours(),l=j.strtotime(C.allowTimes[y]).getMinutes(),m(S,l);else for(y=0,t=0;y<(C.hours12?12:24);y+=1)for(t=0;60>t;t+=C.step)S=(10>y?"0":"")+y,l=(10>t?"0":"")+t,m(S,l);for(B.html(T),n="",y=0,y=parseInt(C.yearStart,10)+C.yearOffset;y<=parseInt(C.yearEnd,10)+C.yearOffset;y+=1)n+='<div class="xdsoft_option '+(j.currentTime.getFullYear()===y?"xdsoft_current":"")+'" data-value="'+y+'">'+y+"</div>";for(U.children().eq(0).html(n),y=parseInt(C.monthStart,10),n="";y<=parseInt(C.monthEnd,10);y+=1)n+='<div class="xdsoft_option '+(j.currentTime.getMonth()===y?"xdsoft_current":"")+'" data-value="'+y+'">'+C.i18n[o].months[y]+"</div>";G.children().eq(0).html(n),e(J).trigger("generate.xdsoft")},10),t.stopPropagation()}).on("afterOpen.xdsoft",function(){if(C.timepicker){var e,t,a,r;B.find(".xdsoft_current").length?e=".xdsoft_current":B.find(".xdsoft_init_time").length&&(e=".xdsoft_init_time"),e?(t=R[0].clientHeight,a=B[0].offsetHeight,r=B.find(e).index()*C.timeHeightInTimePicker+1,r>a-t&&(r=a-t),R.trigger("scroll_element.xdsoft_scroller",[parseInt(r,10)/(a-t)])):R.trigger("scroll_element.xdsoft_scroller",[0])}}),P=0,L.on("touchend click.xdsoft","td",function(t){t.stopPropagation(),P+=1;var r=e(this),n=j.currentTime;return(void 0===n||null===n)&&(j.currentTime=j.now(),n=j.currentTime),r.hasClass("xdsoft_disabled")?!1:(n.setDate(1),n.setFullYear(r.data("year")),n.setMonth(r.data("month")),n.setDate(r.data("date")),J.trigger("select.xdsoft",[n]),a.val(j.str()),C.onSelectDate&&e.isFunction(C.onSelectDate)&&C.onSelectDate.call(J,j.currentTime,J.data("input"),t),J.data("changed",!0),J.trigger("xchange.xdsoft"),J.trigger("changedatetime.xdsoft"),(P>1||C.closeOnDateSelect===!0||C.closeOnDateSelect===!1&&!C.timepicker)&&!C.inline&&J.trigger("close.xdsoft"),void setTimeout(function(){P=0},200))}),B.on("touchend click.xdsoft","div",function(t){t.stopPropagation();var a=e(this),r=j.currentTime;return(void 0===r||null===r)&&(j.currentTime=j.now(),r=j.currentTime),a.hasClass("xdsoft_disabled")?!1:(r.setHours(a.data("hour")),r.setMinutes(a.data("minute")),J.trigger("select.xdsoft",[r]),J.data("input").val(j.str()),C.onSelectTime&&e.isFunction(C.onSelectTime)&&C.onSelectTime.call(J,j.currentTime,J.data("input"),t),J.data("changed",!0),J.trigger("xchange.xdsoft"),J.trigger("changedatetime.xdsoft"),void(C.inline!==!0&&C.closeOnTimeSelect===!0&&J.trigger("close.xdsoft")))}),I.on("mousewheel.xdsoft",function(e){return C.scrollMonth?(e.deltaY<0?j.nextMonth():j.prevMonth(),!1):!0}),a.on("mousewheel.xdsoft",function(e){return C.scrollInput?!C.datepicker&&C.timepicker?(A=B.find(".xdsoft_current").length?B.find(".xdsoft_current").eq(0).index():0,A+e.deltaY>=0&&A+e.deltaY<B.children().length&&(A+=e.deltaY),B.children().eq(A).length&&B.children().eq(A).trigger("mousedown"),!1):C.datepicker&&!C.timepicker?(I.trigger(e,[e.deltaY,e.deltaX,e.deltaY]),a.val&&a.val(j.str()),J.trigger("changedatetime.xdsoft"),!1):void 0:!0}),J.on("changedatetime.xdsoft",function(t){if(C.onChangeDateTime&&e.isFunction(C.onChangeDateTime)){var a=J.data("input");C.onChangeDateTime.call(J,j.currentTime,a,t),delete C.value,a.trigger("change")}}).on("generate.xdsoft",function(){C.onGenerate&&e.isFunction(C.onGenerate)&&C.onGenerate.call(J,j.currentTime,J.data("input")),q&&(J.trigger("afterOpen.xdsoft"),q=!1)}).on("click.xdsoft",function(e){e.stopPropagation()}),A=0,H=function(e,t){do if(e=e.parentNode,t(e)===!1)break;while("HTML"!==e.nodeName)},Y=function(){var t,a,r,n,o,i,s,d,u,l,f,c,m;if(d=J.data("input"),t=d.offset(),a=d[0],l="top",r=t.top+a.offsetHeight-1,n=t.left,o="absolute",u=e(window).width(),c=e(window).height(),m=e(window).scrollTop(),document.documentElement.clientWidth-t.left<I.parent().outerWidth(!0)){var h=I.parent().outerWidth(!0)-a.offsetWidth;n-=h}"rtl"===d.parent().css("direction")&&(n-=J.outerWidth()-d.outerWidth()),C.fixed?(r-=m,n-=e(window).scrollLeft(),o="fixed"):(s=!1,H(a,function(e){return"fixed"===window.getComputedStyle(e).getPropertyValue("position")?(s=!0,!1):void 0}),s?(o="fixed",r+J.outerHeight()>c+m?(l="bottom",r=c+m-t.top):r-=m):r+a.offsetHeight>c+m&&(r=t.top-a.offsetHeight+1),0>r&&(r=0),n+a.offsetWidth>u&&(n=u-a.offsetWidth)),i=J[0],H(i,function(e){var t;return t=window.getComputedStyle(e).getPropertyValue("position"),"relative"===t&&u>=e.offsetWidth?(n-=(u-e.offsetWidth)/2,!1):void 0}),f={position:o,left:n,top:"",bottom:""},f[l]=r,J.css(f)},J.on("open.xdsoft",function(t){var a=!0;C.onShow&&e.isFunction(C.onShow)&&(a=C.onShow.call(J,j.currentTime,J.data("input"),t)),a!==!1&&(J.show(),Y(),e(window).off("resize.xdsoft",Y).on("resize.xdsoft",Y),C.closeOnWithoutClick&&e([document.body,window]).on("touchstart mousedown.xdsoft",function r(){J.trigger("close.xdsoft"),e([document.body,window]).off("touchstart mousedown.xdsoft",r)}))}).on("close.xdsoft",function(t){var a=!0;N.find(".xdsoft_month,.xdsoft_year").find(".xdsoft_select").hide(),C.onClose&&e.isFunction(C.onClose)&&(a=C.onClose.call(J,j.currentTime,J.data("input"),t)),a===!1||C.opened||C.inline||J.hide(),t.stopPropagation()}).on("toggle.xdsoft",function(){J.trigger(J.is(":visible")?"close.xdsoft":"open.xdsoft")}).data("input",a),X=0,J.data("xdsoft_datetime",j),J.setOptions(C),j.setCurrentTime(i()),a.data("xdsoft_datetimepicker",J).on("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",function(){a.is(":disabled")||a.data("xdsoft_datetimepicker").is(":visible")&&C.closeOnInputClick||(clearTimeout(X),X=setTimeout(function(){a.is(":disabled")||(q=!0,j.setCurrentTime(i(),!0),C.mask&&s(C),J.trigger("open.xdsoft"))},100))}).on("keydown.xdsoft",function(t){var a,r=t.which;return-1!==[p].indexOf(r)&&C.enterLikeTab?(a=e("input:visible,textarea:visible,button:visible,a:visible"),J.trigger("close.xdsoft"),a.eq(a.index(this)+1).focus(),!1):-1!==[T].indexOf(r)?(J.trigger("close.xdsoft"),!0):void 0}).on("blur.xdsoft",function(){J.trigger("close.xdsoft")})},d=function(t){var a=t.data("xdsoft_datetimepicker");a&&(a.data("xdsoft_datetime",null),a.remove(),t.data("xdsoft_datetimepicker",null).off(".xdsoft"),e(window).off("resize.xdsoft"),e([window,document.body]).off("mousedown.xdsoft touchstart"),t.unmousewheel&&t.unmousewheel())},e(document).off("keydown.xdsoftctrl keyup.xdsoftctrl").on("keydown.xdsoftctrl",function(e){e.keyCode===h&&(F=!0)}).on("keyup.xdsoftctrl",function(e){e.keyCode===h&&(F=!1)}),this.each(function(){var t,a=e(this).data("xdsoft_datetimepicker");if(a){if("string"===e.type(n))switch(n){case"show":e(this).select().focus(),a.trigger("open.xdsoft");break;case"hide":a.trigger("close.xdsoft");break;case"toggle":a.trigger("toggle.xdsoft");break;case"destroy":d(e(this));break;case"reset":this.value=this.defaultValue,this.value&&a.data("xdsoft_datetime").isValidDate(r.parseDate(this.value,C.format))||a.data("changed",!1),a.data("xdsoft_datetime").setCurrentTime(this.value);break;case"validate":t=a.data("input"),t.trigger("blur.xdsoft");break;default:a[n]&&e.isFunction(a[n])&&(u=a[n](i))}else a.setOptions(n);return 0}"string"!==e.type(n)&&(!C.lazyInit||C.open||C.inline?s(e(this)):A(e(this)))}),u},e.fn.datetimepicker.defaults=a}),function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e:e(jQuery)}(function(e){function t(t){var i=t||window.event,s=d.call(arguments,1),u=0,f=0,c=0,m=0,h=0,g=0;if(t=e.event.fix(i),t.type="mousewheel","detail"in i&&(c=-1*i.detail),"wheelDelta"in i&&(c=i.wheelDelta),"wheelDeltaY"in i&&(c=i.wheelDeltaY),"wheelDeltaX"in i&&(f=-1*i.wheelDeltaX),"axis"in i&&i.axis===i.HORIZONTAL_AXIS&&(f=-1*c,c=0),u=0===c?f:c,"deltaY"in i&&(c=-1*i.deltaY,u=c),"deltaX"in i&&(f=i.deltaX,0===c&&(u=-1*f)),0!==c||0!==f){if(1===i.deltaMode){var p=e.data(this,"mousewheel-line-height");u*=p,c*=p,f*=p}else if(2===i.deltaMode){var y=e.data(this,"mousewheel-page-height");u*=y,c*=y,f*=y}if(m=Math.max(Math.abs(c),Math.abs(f)),(!o||o>m)&&(o=m,r(i,m)&&(o/=40)),r(i,m)&&(u/=40,f/=40,c/=40),u=Math[u>=1?"floor":"ceil"](u/o),f=Math[f>=1?"floor":"ceil"](f/o),c=Math[c>=1?"floor":"ceil"](c/o),l.settings.normalizeOffset&&this.getBoundingClientRect){var v=this.getBoundingClientRect();h=t.clientX-v.left,g=t.clientY-v.top}return t.deltaX=f,t.deltaY=c,t.deltaFactor=o,t.offsetX=h,t.offsetY=g,t.deltaMode=0,s.unshift(t,u,f,c),n&&clearTimeout(n),n=setTimeout(a,200),(e.event.dispatch||e.event.handle).apply(this,s)}}function a(){o=null}function r(e,t){return l.settings.adjustOldDeltas&&"mousewheel"===e.type&&t%120===0}var n,o,i=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],s="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],d=Array.prototype.slice;if(e.event.fixHooks)for(var u=i.length;u;)e.event.fixHooks[i[--u]]=e.event.mouseHooks;var l=e.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var a=s.length;a;)this.addEventListener(s[--a],t,!1);else this.onmousewheel=t;e.data(this,"mousewheel-line-height",l.getLineHeight(this)),e.data(this,"mousewheel-page-height",l.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var a=s.length;a;)this.removeEventListener(s[--a],t,!1);else this.onmousewheel=null;e.removeData(this,"mousewheel-line-height"),e.removeData(this,"mousewheel-page-height")},getLineHeight:function(t){var a=e(t),r=a["offsetParent"in e.fn?"offsetParent":"parent"]();return r.length||(r=e("body")),parseInt(r.css("fontSize"),10)||parseInt(a.css("fontSize"),10)||16},getPageHeight:function(t){return e(t).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};e.fn.extend({mousewheel:function(e){return e?this.bind("mousewheel",e):this.trigger("mousewheel")},unmousewheel:function(e){return this.unbind("mousewheel",e)}})});
assets/js/datetimepicker/jquery.datetimepicker.min.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ !function(e){"function"==typeof define&&define.amd?define(["jquery","jquery-mousewheel"],e):"object"==typeof exports?module.exports=e:e(jQuery)}(function(e){"use strict";function t(e,t,a){this.date=e,this.desc=t,this.style=a}var a={i18n:{ar:{months:["كانون الثاني","شباط","آذار","نيسان","مايو","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],dayOfWeekShort:["ن","ث","ع","خ","ج","س","ح"],dayOfWeek:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"]},ro:{months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],dayOfWeekShort:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],dayOfWeek:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"]},id:{months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],dayOfWeekShort:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],dayOfWeek:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"]},is:{months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],dayOfWeekShort:["Sun","Mán","Þrið","Mið","Fim","Fös","Lau"],dayOfWeek:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"]},bg:{months:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],dayOfWeekShort:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],dayOfWeek:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"]},fa:{months:["فروردین","اردیبهشت","خرداد","تیر","مرداد","شهریور","مهر","آبان","آذر","دی","بهمن","اسفند"],dayOfWeekShort:["یکشنبه","دوشنبه","سه شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayOfWeek:["یک‌شنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنج‌شنبه","جمعه","شنبه","یک‌شنبه"]},ru:{months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],dayOfWeekShort:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],dayOfWeek:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"]},uk:{months:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],dayOfWeekShort:["Ндл","Пнд","Втр","Срд","Чтв","Птн","Сбт"],dayOfWeek:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"]},en:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeekShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},el:{months:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],dayOfWeekShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayOfWeek:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"]},de:{months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],dayOfWeekShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayOfWeek:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},nl:{months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],dayOfWeekShort:["zo","ma","di","wo","do","vr","za"],dayOfWeek:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"]},tr:{months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],dayOfWeekShort:["Paz","Pts","Sal","Çar","Per","Cum","Cts"],dayOfWeek:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"]},fr:{months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],dayOfWeekShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],dayOfWeek:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},es:{months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],dayOfWeekShort:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"],dayOfWeek:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"]},th:{months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],dayOfWeekShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayOfWeek:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัส","ศุกร์","เสาร์","อาทิตย์"]},pl:{months:["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],dayOfWeekShort:["nd","pn","wt","śr","cz","pt","sb"],dayOfWeek:["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"]},pt:{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeekShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sab"],dayOfWeek:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"]},ch:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"]},se:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeekShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"]},kr:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeekShort:["일","월","화","수","목","금","토"],dayOfWeek:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},it:{months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],dayOfWeekShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayOfWeek:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"]},da:{months:["January","Februar","Marts","April","Maj","Juni","July","August","September","Oktober","November","December"],dayOfWeekShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayOfWeek:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"]},no:{months:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],dayOfWeekShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayOfWeek:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"]},ja:{months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayOfWeekShort:["日","月","火","水","木","金","土"],dayOfWeek:["日曜","月曜","火曜","水曜","木曜","金曜","土曜"]},vi:{months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayOfWeekShort:["CN","T2","T3","T4","T5","T6","T7"],dayOfWeek:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"]},sl:{months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],dayOfWeekShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayOfWeek:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"]},cs:{months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],dayOfWeekShort:["Ne","Po","Út","St","Čt","Pá","So"]},hu:{months:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],dayOfWeekShort:["Va","Hé","Ke","Sze","Cs","Pé","Szo"],dayOfWeek:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"]},az:{months:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],dayOfWeekShort:["B","Be","Ça","Ç","Ca","C","Ş"],dayOfWeek:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"]},bs:{months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],dayOfWeekShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayOfWeek:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"]},ca:{months:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],dayOfWeekShort:["Dg","Dl","Dt","Dc","Dj","Dv","Ds"],dayOfWeek:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"]},"en-GB":{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeekShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},et:{months:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],dayOfWeekShort:["P","E","T","K","N","R","L"],dayOfWeek:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"]},eu:{months:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],dayOfWeekShort:["Ig.","Al.","Ar.","Az.","Og.","Or.","La."],dayOfWeek:["Igandea","Astelehena","Asteartea","Asteazkena","Osteguna","Ostirala","Larunbata"]},fi:{months:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],dayOfWeekShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayOfWeek:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"]},gl:{months:["Xan","Feb","Maz","Abr","Mai","Xun","Xul","Ago","Set","Out","Nov","Dec"],dayOfWeekShort:["Dom","Lun","Mar","Mer","Xov","Ven","Sab"],dayOfWeek:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"]},hr:{months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],dayOfWeekShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayOfWeek:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"]},ko:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeekShort:["일","월","화","수","목","금","토"],dayOfWeek:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},lt:{months:["Sausio","Vasario","Kovo","Balandžio","Gegužės","Birželio","Liepos","Rugpjūčio","Rugsėjo","Spalio","Lapkričio","Gruodžio"],dayOfWeekShort:["Sek","Pir","Ant","Tre","Ket","Pen","Šeš"],dayOfWeek:["Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis"]},lv:{months:["Janvāris","Februāris","Marts","Aprīlis ","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],dayOfWeekShort:["Sv","Pr","Ot","Tr","Ct","Pk","St"],dayOfWeek:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"]},mk:{months:["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"],dayOfWeekShort:["нед","пон","вто","сре","чет","пет","саб"],dayOfWeek:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"]},mn:{months:["1-р сар","2-р сар","3-р сар","4-р сар","5-р сар","6-р сар","7-р сар","8-р сар","9-р сар","10-р сар","11-р сар","12-р сар"],dayOfWeekShort:["Дав","Мяг","Лха","Пүр","Бсн","Бям","Ням"],dayOfWeek:["Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба","Ням"]},"pt-BR":{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeekShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayOfWeek:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"]},sk:{months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],dayOfWeekShort:["Ne","Po","Ut","St","Št","Pi","So"],dayOfWeek:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"]},sq:{months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],dayOfWeekShort:["Die","Hën","Mar","Mër","Enj","Pre","Shtu"],dayOfWeek:["E Diel","E Hënë","E Martē","E Mërkurë","E Enjte","E Premte","E Shtunë"]},"sr-YU":{months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],dayOfWeekShort:["Ned","Pon","Uto","Sre","čet","Pet","Sub"],dayOfWeek:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"]},sr:{months:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],dayOfWeekShort:["нед","пон","уто","сре","чет","пет","суб"],dayOfWeek:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"]},sv:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeekShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayOfWeek:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"]},"zh-TW":{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},zh:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},he:{months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],dayOfWeekShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayOfWeek:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת","ראשון"]},hy:{months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],dayOfWeekShort:["Կի","Երկ","Երք","Չոր","Հնգ","Ուրբ","Շբթ"],dayOfWeek:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ"]},kg:{months:["Үчтүн айы","Бирдин айы","Жалган Куран","Чын Куран","Бугу","Кулжа","Теке","Баш Оона","Аяк Оона","Тогуздун айы","Жетинин айы","Бештин айы"],dayOfWeekShort:["Жек","Дүй","Шей","Шар","Бей","Жум","Ише"],dayOfWeek:["Жекшемб","Дүйшөмб","Шейшемб","Шаршемб","Бейшемби","Жума","Ишенб"]},rm:{months:["Schaner","Favrer","Mars","Avrigl","Matg","Zercladur","Fanadur","Avust","Settember","October","November","December"],dayOfWeekShort:["Du","Gli","Ma","Me","Gie","Ve","So"],dayOfWeek:["Dumengia","Glindesdi","Mardi","Mesemna","Gievgia","Venderdi","Sonda"]},ka:{months:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],dayOfWeekShort:["კვ","ორშ","სამშ","ოთხ","ხუთ","პარ","შაბ"],dayOfWeek:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"]}},value:"",rtl:!1,format:"Y/m/d H:i",formatTime:"H:i",formatDate:"Y/m/d",startDate:!1,step:60,monthChangeSpinner:!0,closeOnDateSelect:!1,closeOnTimeSelect:!0,closeOnWithoutClick:!0,closeOnInputClick:!0,timepicker:!0,datepicker:!0,weeks:!1,defaultTime:!1,defaultDate:!1,minDate:!1,maxDate:!1,minTime:!1,maxTime:!1,disabledMinTime:!1,disabledMaxTime:!1,allowTimes:[],opened:!1,initTime:!0,inline:!1,theme:"",onSelectDate:function(){},onSelectTime:function(){},onChangeMonth:function(){},onGetWeekOfYear:function(){},onChangeYear:function(){},onChangeDateTime:function(){},onShow:function(){},onClose:function(){},onGenerate:function(){},withoutCopyright:!0,inverseButton:!1,hours12:!1,next:"xdsoft_next",prev:"xdsoft_prev",dayOfWeekStart:0,parentID:"body",timeHeightInTimePicker:25,timepickerScrollbar:!0,todayButton:!0,prevButton:!0,nextButton:!0,defaultSelect:!0,scrollMonth:!0,scrollTime:!0,scrollInput:!0,lazyInit:!1,mask:!1,validateOnBlur:!0,allowBlank:!0,yearStart:1950,yearEnd:2050,monthStart:0,monthEnd:11,style:"",id:"",fixed:!1,roundTime:"round",className:"",weekends:[],highlightedDates:[],highlightedPeriods:[],allowDates:[],allowDateRe:null,disabledDates:[],disabledWeekDays:[],yearOffset:0,beforeShowDay:null,enterLikeTab:!0,showApplyButton:!1},o=null,r="en",n="en",i={meridiem:["AM","PM"]},s=function(){var t=a.i18n[n],r={days:t.dayOfWeek,daysShort:t.dayOfWeekShort,months:t.months,monthsShort:e.map(t.months,function(e){return e.substring(0,3)})};o=new DateFormatter({dateSettings:e.extend({},i,r)})};e.datetimepicker={setLocale:function(e){var t=a.i18n[e]?e:r;n!=t&&(n=t,s())},setDateFormatter:function(e){o=e},RFC_2822:"D, d M Y H:i:s O",ATOM:"Y-m-dTH:i:sP",ISO_8601:"Y-m-dTH:i:sO",RFC_822:"D, d M y H:i:s O",RFC_850:"l, d-M-y H:i:s T",RFC_1036:"D, d M y H:i:s O",RFC_1123:"D, d M Y H:i:s O",RSS:"D, d M Y H:i:s O",W3C:"Y-m-dTH:i:sP"},s(),window.getComputedStyle||(window.getComputedStyle=function(e){return this.el=e,this.getPropertyValue=function(t){var a=/(\-([a-z]){1})/g;return"float"===t&&(t="styleFloat"),a.test(t)&&(t=t.replace(a,function(e,t,a){return a.toUpperCase()})),e.currentStyle[t]||null},this}),Array.prototype.indexOf||(Array.prototype.indexOf=function(e,t){var a,o;for(a=t||0,o=this.length;o>a;a+=1)if(this[a]===e)return a;return-1}),Date.prototype.countDaysInMonth=function(){return new Date(this.getFullYear(),this.getMonth()+1,0).getDate()},e.fn.xdsoftScroller=function(t){return this.each(function(){var a,o,r,n,i,s=e(this),d=function(e){var t,a={x:0,y:0};return"touchstart"===e.type||"touchmove"===e.type||"touchend"===e.type||"touchcancel"===e.type?(t=e.originalEvent.touches[0]||e.originalEvent.changedTouches[0],a.x=t.clientX,a.y=t.clientY):("mousedown"===e.type||"mouseup"===e.type||"mousemove"===e.type||"mouseover"===e.type||"mouseout"===e.type||"mouseenter"===e.type||"mouseleave"===e.type)&&(a.x=e.clientX,a.y=e.clientY),a},u=100,l=!1,f=0,c=0,m=0,h=!1,g=0,p=function(){};return"hide"===t?void s.find(".xdsoft_scrollbar").hide():(e(this).hasClass("xdsoft_scroller_box")||(a=s.children().eq(0),o=s[0].clientHeight,r=a[0].offsetHeight,n=e('<div class="xdsoft_scrollbar"></div>'),i=e('<div class="xdsoft_scroller"></div>'),n.append(i),s.addClass("xdsoft_scroller_box").append(n),p=function(e){var t=d(e).y-f+g;0>t&&(t=0),t+i[0].offsetHeight>m&&(t=m-i[0].offsetHeight),s.trigger("scroll_element.xdsoft_scroller",[u?t/u:0])},i.on("touchstart.xdsoft_scroller mousedown.xdsoft_scroller",function(a){o||s.trigger("resize_scroll.xdsoft_scroller",[t]),f=d(a).y,g=parseInt(i.css("margin-top"),10),m=n[0].offsetHeight,"mousedown"===a.type||"touchstart"===a.type?(document&&e(document.body).addClass("xdsoft_noselect"),e([document.body,window]).on("touchend mouseup.xdsoft_scroller",function r(){e([document.body,window]).off("touchend mouseup.xdsoft_scroller",r).off("mousemove.xdsoft_scroller",p).removeClass("xdsoft_noselect")}),e(document.body).on("mousemove.xdsoft_scroller",p)):(h=!0,a.stopPropagation(),a.preventDefault())}).on("touchmove",function(e){h&&(e.preventDefault(),p(e))}).on("touchend touchcancel",function(){h=!1,g=0}),s.on("scroll_element.xdsoft_scroller",function(e,t){o||s.trigger("resize_scroll.xdsoft_scroller",[t,!0]),t=t>1?1:0>t||isNaN(t)?0:t,i.css("margin-top",u*t),setTimeout(function(){a.css("marginTop",-parseInt((a[0].offsetHeight-o)*t,10))},10)}).on("resize_scroll.xdsoft_scroller",function(e,t,d){var l,f;o=s[0].clientHeight,r=a[0].offsetHeight,l=o/r,f=l*n[0].offsetHeight,l>1?i.hide():(i.show(),i.css("height",parseInt(f>10?f:10,10)),u=n[0].offsetHeight-i[0].offsetHeight,d!==!0&&s.trigger("scroll_element.xdsoft_scroller",[t||Math.abs(parseInt(a.css("marginTop"),10))/(r-o)]))}),s.on("mousewheel",function(e){var t=Math.abs(parseInt(a.css("marginTop"),10));return t-=20*e.deltaY,0>t&&(t=0),s.trigger("scroll_element.xdsoft_scroller",[t/(r-o)]),e.stopPropagation(),!1}),s.on("touchstart",function(e){l=d(e),c=Math.abs(parseInt(a.css("marginTop"),10))}),s.on("touchmove",function(e){if(l){e.preventDefault();var t=d(e);s.trigger("scroll_element.xdsoft_scroller",[(c-(t.y-l.y))/(r-o)])}}),s.on("touchend touchcancel",function(){l=!1,c=0})),void s.trigger("resize_scroll.xdsoft_scroller",[t]))})},e.fn.datetimepicker=function(r,i){var s,d,u=this,l=48,f=57,c=96,m=105,h=17,g=46,p=13,y=27,k=8,b=37,x=38,v=39,D=40,T=9,S=116,O=65,w=67,M=86,_=90,W=89,F=!1,C=e.isPlainObject(r)||!r?e.extend(!0,{},a,r):e.extend(!0,{},a),A=0,P=function(e){e.on("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",function t(){e.is(":disabled")||e.data("xdsoft_datetimepicker")||(clearTimeout(A),A=setTimeout(function(){e.data("xdsoft_datetimepicker")||s(e),e.off("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",t).trigger("open.xdsoft")},100))})};return s=function(a){function i(){var e,t=!1;return C.startDate?t=J.strToDate(C.startDate):(t=C.value||(a&&a.val&&a.val()?a.val():""),t?t=J.strToDateTime(t):C.defaultDate&&(t=J.strToDateTime(C.defaultDate),C.defaultTime&&(e=J.strtotime(C.defaultTime),t.setHours(e.getHours()),t.setMinutes(e.getMinutes())))),t&&J.isValidDate(t)?Y.data("changed",!0):t="",t||0}function s(t){var o=function(e,t){var a=e.replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g,"\\$1").replace(/_/g,"{digit+}").replace(/([0-9]{1})/g,"{digit$1}").replace(/\{digit([0-9]{1})\}/g,"[0-$1_]{1}").replace(/\{digit[\+]\}/g,"[0-9_]{1}");return new RegExp(a).test(t)},r=function(e){try{if(document.selection&&document.selection.createRange){var t=document.selection.createRange();return t.getBookmark().charCodeAt(2)-2}if(e.setSelectionRange)return e.selectionStart}catch(a){return 0}},n=function(e,t){if(e="string"==typeof e||e instanceof String?document.getElementById(e):e,!e)return!1;if(e.createTextRange){var a=e.createTextRange();return a.collapse(!0),a.moveEnd("character",t),a.moveStart("character",t),a.select(),!0}return e.setSelectionRange?(e.setSelectionRange(t,t),!0):!1};t.mask&&a.off("keydown.xdsoft"),t.mask===!0&&(t.mask="undefined"!=typeof moment?t.format.replace(/Y{4}/g,"9999").replace(/Y{2}/g,"99").replace(/M{2}/g,"19").replace(/D{2}/g,"39").replace(/H{2}/g,"29").replace(/m{2}/g,"59").replace(/s{2}/g,"59"):t.format.replace(/Y/g,"9999").replace(/F/g,"9999").replace(/m/g,"19").replace(/d/g,"39").replace(/H/g,"29").replace(/i/g,"59").replace(/s/g,"59")),"string"===e.type(t.mask)&&(o(t.mask,a.val())||(a.val(t.mask.replace(/[0-9]/g,"_")),n(a[0],0)),a.on("keydown.xdsoft",function(i){var s,d,u=this.value,C=i.which;if(C>=l&&f>=C||C>=c&&m>=C||C===k||C===g){for(s=r(this),d=C!==k&&C!==g?String.fromCharCode(C>=c&&m>=C?C-l:C):"_",C!==k&&C!==g||!s||(s-=1,d="_");/[^0-9_]/.test(t.mask.substr(s,1))&&s<t.mask.length&&s>0;)s+=C===k||C===g?-1:1;if(u=u.substr(0,s)+d+u.substr(s+1),""===e.trim(u))u=t.mask.replace(/[0-9]/g,"_");else if(s===t.mask.length)return i.preventDefault(),!1;for(s+=C===k||C===g?0:1;/[^0-9_]/.test(t.mask.substr(s,1))&&s<t.mask.length&&s>0;)s+=C===k||C===g?-1:1;o(t.mask,u)?(this.value=u,n(this,s)):""===e.trim(u)?this.value=t.mask.replace(/[0-9]/g,"_"):a.trigger("error_input.xdsoft")}else if(-1!==[O,w,M,_,W].indexOf(C)&&F||-1!==[y,x,D,b,v,S,h,T,p].indexOf(C))return!0;return i.preventDefault(),!1}))}var d,u,A,P,j,J,H,Y=e('<div class="xdsoft_datetimepicker xdsoft_noselect"></div>'),z=e('<div class="xdsoft_copyright"><a target="_blank" href="http://xdsoft.net/jqplugins/datetimepicker/">xdsoft.net</a></div>'),N=e('<div class="xdsoft_datepicker active"></div>'),I=e('<div class="xdsoft_monthpicker"><button type="button" class="xdsoft_prev"></button><button type="button" class="xdsoft_today_button"></button><div class="xdsoft_label xdsoft_month"><span></span><i></i></div><div class="xdsoft_label xdsoft_year"><span></span><i></i></div><button type="button" class="xdsoft_next"></button></div>'),L=e('<div class="xdsoft_calendar"></div>'),R=e('<div class="xdsoft_timepicker active"><button type="button" class="xdsoft_prev"></button><div class="xdsoft_time_box"></div><button type="button" class="xdsoft_next"></button></div>'),V=R.find(".xdsoft_time_box").eq(0),E=e('<div class="xdsoft_time_variant"></div>'),B=e('<button type="button" class="xdsoft_save_selected blue-gradient-button">Save Selected</button>'),G=e('<div class="xdsoft_select xdsoft_monthselect"><div></div></div>'),q=e('<div class="xdsoft_select xdsoft_yearselect"><div></div></div>'),K=!1,U=0;C.id&&Y.attr("id",C.id),C.style&&Y.attr("style",C.style),C.weeks&&Y.addClass("xdsoft_showweeks"),C.rtl&&Y.addClass("xdsoft_rtl"),Y.addClass("xdsoft_"+C.theme),Y.addClass(C.className),I.find(".xdsoft_month span").after(G),I.find(".xdsoft_year span").after(q),I.find(".xdsoft_month,.xdsoft_year").on("touchstart mousedown.xdsoft",function(t){var a,o,r=e(this).find(".xdsoft_select").eq(0),n=0,i=0,s=r.is(":visible");for(I.find(".xdsoft_select").hide(),J.currentTime&&(n=J.currentTime[e(this).hasClass("xdsoft_month")?"getMonth":"getFullYear"]()),r[s?"hide":"show"](),a=r.find("div.xdsoft_option"),o=0;o<a.length&&a.eq(o).data("value")!==n;o+=1)i+=a[0].offsetHeight;return r.xdsoftScroller(i/(r.children()[0].offsetHeight-r[0].clientHeight)),t.stopPropagation(),!1}),I.find(".xdsoft_select").xdsoftScroller().on("touchstart mousedown.xdsoft",function(e){e.stopPropagation(),e.preventDefault()}).on("touchstart mousedown.xdsoft",".xdsoft_option",function(){(void 0===J.currentTime||null===J.currentTime)&&(J.currentTime=J.now());var t=J.currentTime.getFullYear();J&&J.currentTime&&J.currentTime[e(this).parent().parent().hasClass("xdsoft_monthselect")?"setMonth":"setFullYear"](e(this).data("value")),e(this).parent().parent().hide(),Y.trigger("xchange.xdsoft"),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(Y,J.currentTime,Y.data("input")),t!==J.currentTime.getFullYear()&&e.isFunction(C.onChangeYear)&&C.onChangeYear.call(Y,J.currentTime,Y.data("input"))}),Y.getValue=function(){return J.getCurrentTime()},Y.setOptions=function(r){var n={};C=e.extend(!0,{},C,r),r.allowTimes&&e.isArray(r.allowTimes)&&r.allowTimes.length&&(C.allowTimes=e.extend(!0,[],r.allowTimes)),r.weekends&&e.isArray(r.weekends)&&r.weekends.length&&(C.weekends=e.extend(!0,[],r.weekends)),r.allowDates&&e.isArray(r.allowDates)&&r.allowDates.length&&(C.allowDates=e.extend(!0,[],r.allowDates)),r.allowDateRe&&"[object String]"===Object.prototype.toString.call(r.allowDateRe)&&(C.allowDateRe=new RegExp(r.allowDateRe)),r.highlightedDates&&e.isArray(r.highlightedDates)&&r.highlightedDates.length&&(e.each(r.highlightedDates,function(a,r){var i,s=e.map(r.split(","),e.trim),d=new t(o.parseDate(s[0],C.formatDate),s[1],s[2]),u=o.formatDate(d.date,C.formatDate);void 0!==n[u]?(i=n[u].desc,i&&i.length&&d.desc&&d.desc.length&&(n[u].desc=i+"\n"+d.desc)):n[u]=d}),C.highlightedDates=e.extend(!0,[],n)),r.highlightedPeriods&&e.isArray(r.highlightedPeriods)&&r.highlightedPeriods.length&&(n=e.extend(!0,[],C.highlightedDates),e.each(r.highlightedPeriods,function(a,r){var i,s,d,u,l,f,c;if(e.isArray(r))i=r[0],s=r[1],d=r[2],c=r[3];else{var m=e.map(r.split(","),e.trim);i=o.parseDate(m[0],C.formatDate),s=o.parseDate(m[1],C.formatDate),d=m[2],c=m[3]}for(;s>=i;)u=new t(i,d,c),l=o.formatDate(i,C.formatDate),i.setDate(i.getDate()+1),void 0!==n[l]?(f=n[l].desc,f&&f.length&&u.desc&&u.desc.length&&(n[l].desc=f+"\n"+u.desc)):n[l]=u}),C.highlightedDates=e.extend(!0,[],n)),r.disabledDates&&e.isArray(r.disabledDates)&&r.disabledDates.length&&(C.disabledDates=e.extend(!0,[],r.disabledDates)),r.disabledWeekDays&&e.isArray(r.disabledWeekDays)&&r.disabledWeekDays.length&&(C.disabledWeekDays=e.extend(!0,[],r.disabledWeekDays)),!C.open&&!C.opened||C.inline||a.trigger("open.xdsoft"),C.inline&&(K=!0,Y.addClass("xdsoft_inline"),a.after(Y).hide()),C.inverseButton&&(C.next="xdsoft_prev",C.prev="xdsoft_next"),C.datepicker?N.addClass("active"):N.removeClass("active"),C.timepicker?R.addClass("active"):R.removeClass("active"),C.value&&(J.setCurrentTime(C.value),a&&a.val&&a.val(J.str)),C.dayOfWeekStart=isNaN(C.dayOfWeekStart)?0:parseInt(C.dayOfWeekStart,10)%7,C.timepickerScrollbar||V.xdsoftScroller("hide"),C.minDate&&/^[\+\-](.*)$/.test(C.minDate)&&(C.minDate=o.formatDate(J.strToDateTime(C.minDate),C.formatDate)),C.maxDate&&/^[\+\-](.*)$/.test(C.maxDate)&&(C.maxDate=o.formatDate(J.strToDateTime(C.maxDate),C.formatDate)),B.toggle(C.showApplyButton),I.find(".xdsoft_today_button").css("visibility",C.todayButton?"visible":"hidden"),I.find("."+C.prev).css("visibility",C.prevButton?"visible":"hidden"),I.find("."+C.next).css("visibility",C.nextButton?"visible":"hidden"),s(C),C.validateOnBlur&&a.off("blur.xdsoft").on("blur.xdsoft",function(){if(C.allowBlank&&(!e.trim(e(this).val()).length||"string"==typeof C.mask&&e.trim(e(this).val())===C.mask.replace(/[0-9]/g,"_")))e(this).val(null),Y.data("xdsoft_datetime").empty();else{var t=o.parseDate(e(this).val(),C.format);if(t)e(this).val(o.formatDate(t,C.format));else{var a=+[e(this).val()[0],e(this).val()[1]].join(""),r=+[e(this).val()[2],e(this).val()[3]].join("");e(this).val(!C.datepicker&&C.timepicker&&a>=0&&24>a&&r>=0&&60>r?[a,r].map(function(e){return e>9?e:"0"+e}).join(":"):o.formatDate(J.now(),C.format))}Y.data("xdsoft_datetime").setCurrentTime(e(this).val())}Y.trigger("changedatetime.xdsoft"),Y.trigger("close.xdsoft")}),C.dayOfWeekStartPrev=0===C.dayOfWeekStart?6:C.dayOfWeekStart-1,Y.trigger("xchange.xdsoft").trigger("afterOpen.xdsoft")},Y.data("options",C).on("touchstart mousedown.xdsoft",function(e){return e.stopPropagation(),e.preventDefault(),q.hide(),G.hide(),!1}),V.append(E),V.xdsoftScroller(),Y.on("afterOpen.xdsoft",function(){V.xdsoftScroller()}),Y.append(N).append(R),C.withoutCopyright!==!0&&Y.append(z),N.append(I).append(L).append(B),e(C.parentID).append(Y),d=function(){var t=this;t.now=function(e){var a,o,r=new Date;return!e&&C.defaultDate&&(a=t.strToDateTime(C.defaultDate),r.setFullYear(a.getFullYear()),r.setMonth(a.getMonth()),r.setDate(a.getDate())),C.yearOffset&&r.setFullYear(r.getFullYear()+C.yearOffset),!e&&C.defaultTime&&(o=t.strtotime(C.defaultTime),r.setHours(o.getHours()),r.setMinutes(o.getMinutes())),r},t.isValidDate=function(e){return"[object Date]"!==Object.prototype.toString.call(e)?!1:!isNaN(e.getTime())},t.setCurrentTime=function(e,a){t.currentTime="string"==typeof e?t.strToDateTime(e):t.isValidDate(e)?e:e||a||!C.allowBlank?t.now():null,Y.trigger("xchange.xdsoft")},t.empty=function(){t.currentTime=null},t.getCurrentTime=function(){return t.currentTime},t.nextMonth=function(){(void 0===t.currentTime||null===t.currentTime)&&(t.currentTime=t.now());var a,o=t.currentTime.getMonth()+1;return 12===o&&(t.currentTime.setFullYear(t.currentTime.getFullYear()+1),o=0),a=t.currentTime.getFullYear(),t.currentTime.setDate(Math.min(new Date(t.currentTime.getFullYear(),o+1,0).getDate(),t.currentTime.getDate())),t.currentTime.setMonth(o),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(Y,J.currentTime,Y.data("input")),a!==t.currentTime.getFullYear()&&e.isFunction(C.onChangeYear)&&C.onChangeYear.call(Y,J.currentTime,Y.data("input")),Y.trigger("xchange.xdsoft"),o},t.prevMonth=function(){(void 0===t.currentTime||null===t.currentTime)&&(t.currentTime=t.now());var a=t.currentTime.getMonth()-1;return-1===a&&(t.currentTime.setFullYear(t.currentTime.getFullYear()-1),a=11),t.currentTime.setDate(Math.min(new Date(t.currentTime.getFullYear(),a+1,0).getDate(),t.currentTime.getDate())),t.currentTime.setMonth(a),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(Y,J.currentTime,Y.data("input")),Y.trigger("xchange.xdsoft"),a},t.getWeekOfYear=function(t){if(C.onGetWeekOfYear&&e.isFunction(C.onGetWeekOfYear)){var a=C.onGetWeekOfYear.call(Y,t);if("undefined"!=typeof a)return a}var o=new Date(t.getFullYear(),0,1);return 4!=o.getDay()&&o.setMonth(0,1+(4-o.getDay()+7)%7),Math.ceil(((t-o)/864e5+o.getDay()+1)/7)},t.strToDateTime=function(e){var a,r,n=[];return e&&e instanceof Date&&t.isValidDate(e)?e:(n=/^(\+|\-)(.*)$/.exec(e),n&&(n[2]=o.parseDate(n[2],C.formatDate)),n&&n[2]?(a=n[2].getTime()-6e4*n[2].getTimezoneOffset(),r=new Date(t.now(!0).getTime()+parseInt(n[1]+"1",10)*a)):r=e?o.parseDate(e,C.format):t.now(),t.isValidDate(r)||(r=t.now()),r)},t.strToDate=function(e){if(e&&e instanceof Date&&t.isValidDate(e))return e;var a=e?o.parseDate(e,C.formatDate):t.now(!0);return t.isValidDate(a)||(a=t.now(!0)),a},t.strtotime=function(e){if(e&&e instanceof Date&&t.isValidDate(e))return e;var a=e?o.parseDate(e,C.formatTime):t.now(!0);return t.isValidDate(a)||(a=t.now(!0)),a},t.str=function(){return o.formatDate(t.currentTime,C.format)},t.currentTime=this.now()},J=new d,B.on("touchend click",function(e){e.preventDefault(),Y.data("changed",!0),J.setCurrentTime(i()),a.val(J.str()),Y.trigger("close.xdsoft")}),I.find(".xdsoft_today_button").on("touchend mousedown.xdsoft",function(){
2
+ Y.data("changed",!0),J.setCurrentTime(0,!0),Y.trigger("afterOpen.xdsoft")}).on("dblclick.xdsoft",function(){var e,t,o=J.getCurrentTime();o=new Date(o.getFullYear(),o.getMonth(),o.getDate()),e=J.strToDate(C.minDate),e=new Date(e.getFullYear(),e.getMonth(),e.getDate()),e>o||(t=J.strToDate(C.maxDate),t=new Date(t.getFullYear(),t.getMonth(),t.getDate()),o>t||(a.val(J.str()),a.trigger("change"),Y.trigger("close.xdsoft")))}),I.find(".xdsoft_prev,.xdsoft_next").on("touchend mousedown.xdsoft",function(){var t=e(this),a=0,o=!1;!function r(e){t.hasClass(C.next)?J.nextMonth():t.hasClass(C.prev)&&J.prevMonth(),C.monthChangeSpinner&&(o||(a=setTimeout(r,e||100)))}(500),e([document.body,window]).on("touchend mouseup.xdsoft",function n(){clearTimeout(a),o=!0,e([document.body,window]).off("touchend mouseup.xdsoft",n)})}),R.find(".xdsoft_prev,.xdsoft_next").on("touchend mousedown.xdsoft",function(){var t=e(this),a=0,o=!1,r=110;!function n(e){var i=V[0].clientHeight,s=E[0].offsetHeight,d=Math.abs(parseInt(E.css("marginTop"),10));t.hasClass(C.next)&&s-i-C.timeHeightInTimePicker>=d?E.css("marginTop","-"+(d+C.timeHeightInTimePicker)+"px"):t.hasClass(C.prev)&&d-C.timeHeightInTimePicker>=0&&E.css("marginTop","-"+(d-C.timeHeightInTimePicker)+"px"),V.trigger("scroll_element.xdsoft_scroller",[Math.abs(parseInt(E[0].style.marginTop,10)/(s-i))]),r=r>10?10:r-10,o||(a=setTimeout(n,e||r))}(500),e([document.body,window]).on("touchend mouseup.xdsoft",function i(){clearTimeout(a),o=!0,e([document.body,window]).off("touchend mouseup.xdsoft",i)})}),u=0,Y.on("xchange.xdsoft",function(t){clearTimeout(u),u=setTimeout(function(){if(void 0===J.currentTime||null===J.currentTime){if(C.allowBlank)return;J.currentTime=J.now()}for(var t,i,s,d,u,l,f,c,m,h,g="",p=new Date(J.currentTime.getFullYear(),J.currentTime.getMonth(),1,12,0,0),y=0,k=J.now(),b=!1,x=!1,v=[],D=!0,T="",S="";p.getDay()!==C.dayOfWeekStart;)p.setDate(p.getDate()-1);for(g+="<table><thead><tr>",C.weeks&&(g+="<th></th>"),t=0;7>t;t+=1)g+="<th>"+C.i18n[n].dayOfWeekShort[(t+C.dayOfWeekStart)%7]+"</th>";for(g+="</tr></thead>",g+="<tbody>",C.maxDate!==!1&&(b=J.strToDate(C.maxDate),b=new Date(b.getFullYear(),b.getMonth(),b.getDate(),23,59,59,999)),C.minDate!==!1&&(x=J.strToDate(C.minDate),x=new Date(x.getFullYear(),x.getMonth(),x.getDate()));y<J.currentTime.countDaysInMonth()||p.getDay()!==C.dayOfWeekStart||J.currentTime.getMonth()===p.getMonth();)v=[],y+=1,s=p.getDay(),d=p.getDate(),u=p.getFullYear(),l=p.getMonth(),f=J.getWeekOfYear(p),h="",v.push("xdsoft_date"),c=C.beforeShowDay&&e.isFunction(C.beforeShowDay.call)?C.beforeShowDay.call(Y,p):null,C.allowDateRe&&"[object RegExp]"===Object.prototype.toString.call(C.allowDateRe)?C.allowDateRe.test(o.formatDate(p,C.formatDate))||v.push("xdsoft_disabled"):C.allowDates&&C.allowDates.length>0?-1===C.allowDates.indexOf(o.formatDate(p,C.formatDate))&&v.push("xdsoft_disabled"):b!==!1&&p>b||x!==!1&&x>p||c&&c[0]===!1?v.push("xdsoft_disabled"):-1!==C.disabledDates.indexOf(o.formatDate(p,C.formatDate))?v.push("xdsoft_disabled"):-1!==C.disabledWeekDays.indexOf(s)?v.push("xdsoft_disabled"):a.is("[readonly]")&&v.push("xdsoft_disabled"),c&&""!==c[1]&&v.push(c[1]),J.currentTime.getMonth()!==l&&v.push("xdsoft_other_month"),(C.defaultSelect||Y.data("changed"))&&o.formatDate(J.currentTime,C.formatDate)===o.formatDate(p,C.formatDate)&&v.push("xdsoft_current"),o.formatDate(k,C.formatDate)===o.formatDate(p,C.formatDate)&&v.push("xdsoft_today"),(0===p.getDay()||6===p.getDay()||-1!==C.weekends.indexOf(o.formatDate(p,C.formatDate)))&&v.push("xdsoft_weekend"),void 0!==C.highlightedDates[o.formatDate(p,C.formatDate)]&&(i=C.highlightedDates[o.formatDate(p,C.formatDate)],v.push(void 0===i.style?"xdsoft_highlighted_default":i.style),h=void 0===i.desc?"":i.desc),C.beforeShowDay&&e.isFunction(C.beforeShowDay)&&v.push(C.beforeShowDay(p)),D&&(g+="<tr>",D=!1,C.weeks&&(g+="<th>"+f+"</th>")),g+='<td data-date="'+d+'" data-month="'+l+'" data-year="'+u+'" class="xdsoft_date xdsoft_day_of_week'+p.getDay()+" "+v.join(" ")+'" title="'+h+'"><div>'+d+"</div></td>",p.getDay()===C.dayOfWeekStartPrev&&(g+="</tr>",D=!0),p.setDate(d+1);if(g+="</tbody></table>",L.html(g),I.find(".xdsoft_label span").eq(0).text(C.i18n[n].months[J.currentTime.getMonth()]),I.find(".xdsoft_label span").eq(1).text(J.currentTime.getFullYear()),T="",S="",l="",m=function(t,r){var n,i,s=J.now(),d=C.allowTimes&&e.isArray(C.allowTimes)&&C.allowTimes.length;s.setHours(t),t=parseInt(s.getHours(),10),s.setMinutes(r),r=parseInt(s.getMinutes(),10),n=new Date(J.currentTime),n.setHours(t),n.setMinutes(r),v=[],C.minDateTime!==!1&&C.minDateTime>n||C.maxTime!==!1&&J.strtotime(C.maxTime).getTime()<s.getTime()||C.minTime!==!1&&J.strtotime(C.minTime).getTime()>s.getTime()?v.push("xdsoft_disabled"):C.minDateTime!==!1&&C.minDateTime>n||C.disabledMinTime!==!1&&s.getTime()>J.strtotime(C.disabledMinTime).getTime()&&C.disabledMaxTime!==!1&&s.getTime()<J.strtotime(C.disabledMaxTime).getTime()?v.push("xdsoft_disabled"):a.is("[readonly]")&&v.push("xdsoft_disabled"),i=new Date(J.currentTime),i.setHours(parseInt(J.currentTime.getHours(),10)),d||i.setMinutes(Math[C.roundTime](J.currentTime.getMinutes()/C.step)*C.step),(C.initTime||C.defaultSelect||Y.data("changed"))&&i.getHours()===parseInt(t,10)&&(!d&&C.step>59||i.getMinutes()===parseInt(r,10))&&(C.defaultSelect||Y.data("changed")?v.push("xdsoft_current"):C.initTime&&v.push("xdsoft_init_time")),parseInt(k.getHours(),10)===parseInt(t,10)&&parseInt(k.getMinutes(),10)===parseInt(r,10)&&v.push("xdsoft_today"),T+='<div class="xdsoft_time '+v.join(" ")+'" data-hour="'+t+'" data-minute="'+r+'">'+o.formatDate(s,C.formatTime)+"</div>"},C.allowTimes&&e.isArray(C.allowTimes)&&C.allowTimes.length)for(y=0;y<C.allowTimes.length;y+=1)S=J.strtotime(C.allowTimes[y]).getHours(),l=J.strtotime(C.allowTimes[y]).getMinutes(),m(S,l);else for(y=0,t=0;y<(C.hours12?12:24);y+=1)for(t=0;60>t;t+=C.step)S=(10>y?"0":"")+y,l=(10>t?"0":"")+t,m(S,l);for(E.html(T),r="",y=0,y=parseInt(C.yearStart,10)+C.yearOffset;y<=parseInt(C.yearEnd,10)+C.yearOffset;y+=1)r+='<div class="xdsoft_option '+(J.currentTime.getFullYear()===y?"xdsoft_current":"")+'" data-value="'+y+'">'+y+"</div>";for(q.children().eq(0).html(r),y=parseInt(C.monthStart,10),r="";y<=parseInt(C.monthEnd,10);y+=1)r+='<div class="xdsoft_option '+(J.currentTime.getMonth()===y?"xdsoft_current":"")+'" data-value="'+y+'">'+C.i18n[n].months[y]+"</div>";G.children().eq(0).html(r),e(Y).trigger("generate.xdsoft")},10),t.stopPropagation()}).on("afterOpen.xdsoft",function(){if(C.timepicker){var e,t,a,o;E.find(".xdsoft_current").length?e=".xdsoft_current":E.find(".xdsoft_init_time").length&&(e=".xdsoft_init_time"),e?(t=V[0].clientHeight,a=E[0].offsetHeight,o=E.find(e).index()*C.timeHeightInTimePicker+1,o>a-t&&(o=a-t),V.trigger("scroll_element.xdsoft_scroller",[parseInt(o,10)/(a-t)])):V.trigger("scroll_element.xdsoft_scroller",[0])}}),A=0,L.on("touchend click.xdsoft","td",function(t){t.stopPropagation(),A+=1;var o=e(this),r=J.currentTime;return(void 0===r||null===r)&&(J.currentTime=J.now(),r=J.currentTime),o.hasClass("xdsoft_disabled")?!1:(r.setDate(1),r.setFullYear(o.data("year")),r.setMonth(o.data("month")),r.setDate(o.data("date")),Y.trigger("select.xdsoft",[r]),a.val(J.str()),C.onSelectDate&&e.isFunction(C.onSelectDate)&&C.onSelectDate.call(Y,J.currentTime,Y.data("input"),t),Y.data("changed",!0),Y.trigger("xchange.xdsoft"),Y.trigger("changedatetime.xdsoft"),(A>1||C.closeOnDateSelect===!0||C.closeOnDateSelect===!1&&!C.timepicker)&&!C.inline&&Y.trigger("close.xdsoft"),void setTimeout(function(){A=0},200))}),E.on("touchend click.xdsoft","div",function(t){t.stopPropagation();var a=e(this),o=J.currentTime;return(void 0===o||null===o)&&(J.currentTime=J.now(),o=J.currentTime),a.hasClass("xdsoft_disabled")?!1:(o.setHours(a.data("hour")),o.setMinutes(a.data("minute")),Y.trigger("select.xdsoft",[o]),Y.data("input").val(J.str()),C.onSelectTime&&e.isFunction(C.onSelectTime)&&C.onSelectTime.call(Y,J.currentTime,Y.data("input"),t),Y.data("changed",!0),Y.trigger("xchange.xdsoft"),Y.trigger("changedatetime.xdsoft"),void(C.inline!==!0&&C.closeOnTimeSelect===!0&&Y.trigger("close.xdsoft")))}),N.on("mousewheel.xdsoft",function(e){return C.scrollMonth?(e.deltaY<0?J.nextMonth():J.prevMonth(),!1):!0}),a.on("mousewheel.xdsoft",function(e){return C.scrollInput?!C.datepicker&&C.timepicker?(P=E.find(".xdsoft_current").length?E.find(".xdsoft_current").eq(0).index():0,P+e.deltaY>=0&&P+e.deltaY<E.children().length&&(P+=e.deltaY),E.children().eq(P).length&&E.children().eq(P).trigger("mousedown"),!1):C.datepicker&&!C.timepicker?(N.trigger(e,[e.deltaY,e.deltaX,e.deltaY]),a.val&&a.val(J.str()),Y.trigger("changedatetime.xdsoft"),!1):void 0:!0}),Y.on("changedatetime.xdsoft",function(t){if(C.onChangeDateTime&&e.isFunction(C.onChangeDateTime)){var a=Y.data("input");C.onChangeDateTime.call(Y,J.currentTime,a,t),delete C.value,a.trigger("change")}}).on("generate.xdsoft",function(){C.onGenerate&&e.isFunction(C.onGenerate)&&C.onGenerate.call(Y,J.currentTime,Y.data("input")),K&&(Y.trigger("afterOpen.xdsoft"),K=!1)}).on("click.xdsoft",function(e){e.stopPropagation()}),P=0,H=function(e,t){do if(e=e.parentNode,t(e)===!1)break;while("HTML"!==e.nodeName)},j=function(){var t,a,o,r,n,i,s,d,u,l,f,c,m;if(d=Y.data("input"),t=d.offset(),a=d[0],l="top",o=t.top+a.offsetHeight-1,r=t.left,n="absolute",u=e(window).width(),c=e(window).height(),m=e(window).scrollTop(),document.documentElement.clientWidth-t.left<N.parent().outerWidth(!0)){var h=N.parent().outerWidth(!0)-a.offsetWidth;r-=h}"rtl"===d.parent().css("direction")&&(r-=Y.outerWidth()-d.outerWidth()),C.fixed?(o-=m,r-=e(window).scrollLeft(),n="fixed"):(s=!1,H(a,function(e){return"fixed"===window.getComputedStyle(e).getPropertyValue("position")?(s=!0,!1):void 0}),s?(n="fixed",o+Y.outerHeight()>c+m?(l="bottom",o=c+m-t.top):o-=m):o+a.offsetHeight>c+m&&(o=t.top-a.offsetHeight+1),0>o&&(o=0),r+a.offsetWidth>u&&(r=u-a.offsetWidth)),i=Y[0],H(i,function(e){var t;return t=window.getComputedStyle(e).getPropertyValue("position"),"relative"===t&&u>=e.offsetWidth?(r-=(u-e.offsetWidth)/2,!1):void 0}),f={position:n,left:r,top:"",bottom:""},f[l]=o,Y.css(f)},Y.on("open.xdsoft",function(t){var a=!0;C.onShow&&e.isFunction(C.onShow)&&(a=C.onShow.call(Y,J.currentTime,Y.data("input"),t)),a!==!1&&(Y.show(),j(),e(window).off("resize.xdsoft",j).on("resize.xdsoft",j),C.closeOnWithoutClick&&e([document.body,window]).on("touchstart mousedown.xdsoft",function o(){Y.trigger("close.xdsoft"),e([document.body,window]).off("touchstart mousedown.xdsoft",o)}))}).on("close.xdsoft",function(t){var a=!0;I.find(".xdsoft_month,.xdsoft_year").find(".xdsoft_select").hide(),C.onClose&&e.isFunction(C.onClose)&&(a=C.onClose.call(Y,J.currentTime,Y.data("input"),t)),a===!1||C.opened||C.inline||Y.hide(),t.stopPropagation()}).on("toggle.xdsoft",function(){Y.trigger(Y.is(":visible")?"close.xdsoft":"open.xdsoft")}).data("input",a),U=0,Y.data("xdsoft_datetime",J),Y.setOptions(C),J.setCurrentTime(i()),a.data("xdsoft_datetimepicker",Y).on("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",function(){a.is(":disabled")||a.data("xdsoft_datetimepicker").is(":visible")&&C.closeOnInputClick||(clearTimeout(U),U=setTimeout(function(){a.is(":disabled")||(K=!0,J.setCurrentTime(i(),!0),C.mask&&s(C),Y.trigger("open.xdsoft"))},100))}).on("keydown.xdsoft",function(t){var a,o=t.which;return-1!==[p].indexOf(o)&&C.enterLikeTab?(a=e("input:visible,textarea:visible,button:visible,a:visible"),Y.trigger("close.xdsoft"),a.eq(a.index(this)+1).focus(),!1):-1!==[T].indexOf(o)?(Y.trigger("close.xdsoft"),!0):void 0}).on("blur.xdsoft",function(){Y.trigger("close.xdsoft")})},d=function(t){var a=t.data("xdsoft_datetimepicker");a&&(a.data("xdsoft_datetime",null),a.remove(),t.data("xdsoft_datetimepicker",null).off(".xdsoft"),e(window).off("resize.xdsoft"),e([window,document.body]).off("mousedown.xdsoft touchstart"),t.unmousewheel&&t.unmousewheel())},e(document).off("keydown.xdsoftctrl keyup.xdsoftctrl").on("keydown.xdsoftctrl",function(e){e.keyCode===h&&(F=!0)}).on("keyup.xdsoftctrl",function(e){e.keyCode===h&&(F=!1)}),this.each(function(){var t,a=e(this).data("xdsoft_datetimepicker");if(a){if("string"===e.type(r))switch(r){case"show":e(this).select().focus(),a.trigger("open.xdsoft");break;case"hide":a.trigger("close.xdsoft");break;case"toggle":a.trigger("toggle.xdsoft");break;case"destroy":d(e(this));break;case"reset":this.value=this.defaultValue,this.value&&a.data("xdsoft_datetime").isValidDate(o.parseDate(this.value,C.format))||a.data("changed",!1),a.data("xdsoft_datetime").setCurrentTime(this.value);break;case"validate":t=a.data("input"),t.trigger("blur.xdsoft");break;default:a[r]&&e.isFunction(a[r])&&(u=a[r](i))}else a.setOptions(r);return 0}"string"!==e.type(r)&&(!C.lazyInit||C.open||C.inline?s(e(this)):P(e(this)))}),u},e.fn.datetimepicker.defaults=a});
assets/js/frontend/events.js ADDED
@@ -0,0 +1,265 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function ($) {
2
+
3
+ var TP_Event_Frontend = {
4
+ init : function () {
5
+ var $doc = $(document);
6
+ /**
7
+ * load register form
8
+ */
9
+ $doc.on('click', '.event-load-booking-form', this.load_form_register);
10
+ $doc.on('submit', 'form.event_register:not(.active)', this.book_event_form);
11
+
12
+ /**
13
+ * Sanitize form field
14
+ */
15
+ this.sanitize_form_field();
16
+
17
+ $doc.on('submit', '#event-lightbox .event-auth-form', this.ajax_login);
18
+ },
19
+ load_form_register : function (e) {
20
+ e.preventDefault();
21
+ var _this = $(this),
22
+ _event_id = _this.attr('data-event');
23
+
24
+ $.ajax({
25
+ url : WPEMS.ajaxurl,
26
+ type : 'POST',
27
+ dataType : 'html',
28
+ async : false,
29
+ data : {
30
+ event_id: _event_id,
31
+ nonce : WPEMS.register_button,
32
+ action : 'load_form_register'
33
+ },
34
+ beforeSend: function () {
35
+ _this.append('<i class="event-icon-spinner2 spinner"></i>');
36
+ }
37
+ })
38
+ .always(function () {
39
+ _this.find('.event-icon-spinner2').remove();
40
+ })
41
+ .done(function (html) {
42
+ TP_Event_Frontend.lightbox(html);
43
+ })
44
+ .fail(function () {
45
+
46
+ });
47
+ return false;
48
+ },
49
+ /**
50
+ * Ajax action register form
51
+ * @returns boolean
52
+ */
53
+ book_event_form : function (e) {
54
+ e.preventDefault();
55
+ var _self = $(this),
56
+ _data = _self.serializeArray(),
57
+ button = _self.find('button[type="submit"]'),
58
+ _notices = _self.find('.tp-event-notice');
59
+
60
+ $.ajax({
61
+ url : WPEMS.ajaxurl,
62
+ type : 'POST',
63
+ data : _data,
64
+ dataType : 'json',
65
+ beforeSend: function () {
66
+ _notices.slideUp().remove();
67
+ button.addClass('event-register-loading');
68
+ _self.addClass('active');
69
+ }
70
+ }).done(function (res) {
71
+ button.removeClass('event-register-loading');
72
+ if (typeof res.status === 'undefined') {
73
+ TP_Event_Frontend.set_message(_self, WPEMS.something_wrong);
74
+ return;
75
+ }
76
+
77
+ if (res.status === true && typeof res.url !== 'undefined' && res.url !== '') {
78
+ window.location.href = res.url;
79
+ }
80
+
81
+ if (res.status === true && res.url == '' && typeof res.event !== 'undefined') {
82
+ $.magnificPopup.close();
83
+ $('.woocommerce-message').hide();
84
+ setTimeout(function () {
85
+ $('.entry-register, .event_register_foot').append(
86
+ '<div class="woocommerce-message">' +
87
+ WPEMS.woo_cart_url +
88
+ '<p>' + '“' + res.event + '”' + WPEMS.add_to_cart + '</p>' +
89
+ '</div>'
90
+ )
91
+ }, 100);
92
+ }
93
+
94
+ if (typeof res.message !== 'undefined') {
95
+ TP_Event_Frontend.set_message(_self, res.message);
96
+ return;
97
+ }
98
+
99
+ }).fail(function () {
100
+ button.removeClass('event-register-loading');
101
+ TP_Event_Frontend.set_message(_self, WPEMS.something_wrong);
102
+ return;
103
+ }).always(function () {
104
+ _self.removeClass('active');
105
+ });
106
+ // button.removeClass('event-register-loading');
107
+ return false;
108
+ },
109
+ set_message : function (form, message) {
110
+ var html = '<div class="tp-event-notice error">';
111
+ html += '<div class="event_auth_register_message_error">' + message + '</div>';
112
+ html += '</div>';
113
+ form.find('.event_register_foot').append(html);
114
+ },
115
+ /**
116
+ * sanitize form field
117
+ * @returns null
118
+ */
119
+ sanitize_form_field: function () {
120
+ var _form_fields = $('.form-row.form-required');
121
+
122
+ for (var i = 0; i < _form_fields.length; i++) {
123
+ var field = $(_form_fields[i]),
124
+ input = field.find('input');
125
+
126
+ input.on('blur', function (e) {
127
+ e.preventDefault();
128
+ var _this = $(this),
129
+ _form_row = _this.parents('.form-row:first');
130
+ if (!_form_row.hasClass('form-required')) return;
131
+
132
+ if (_this.val() == '') {
133
+ _form_row.removeClass('validated').addClass('has-error');
134
+ } else {
135
+ _form_row.removeClass('has-error').addClass('validated');
136
+ }
137
+ });
138
+ }
139
+ },
140
+ lightbox : function (content) {
141
+ var html = [];
142
+ html.push('<div id="event-lightbox">');
143
+ html.push(content);
144
+ html.push('</div>');
145
+
146
+ $.magnificPopup.open({
147
+ items : {
148
+ type: 'inline',
149
+ src : $(html.join(''))
150
+ },
151
+ mainClass: 'event-lightbox-wrap',
152
+ callbacks: {
153
+ open : function () {
154
+ var lightbox = $('#event-lightbox');
155
+
156
+ lightbox.addClass('event-fade');
157
+ var timeout = setTimeout(function () {
158
+ lightbox.addClass('event-in');
159
+ clearTimeout(timeout);
160
+ TP_Event_Frontend.sanitize_form_field();
161
+ }, 100);
162
+ },
163
+ close: function () {
164
+ var lightbox = $('#event-lightbox');
165
+ lightbox.remove();
166
+ }
167
+ }
168
+ });
169
+ },
170
+ ajax_login : function (e) {
171
+ e.preventDefault();
172
+
173
+ var _this = $(this),
174
+ _button = _this.find('#wp-submit'),
175
+ _lightbox = $('#event-lightbox'),
176
+ _data = _this.serializeArray();
177
+
178
+ $.ajax({
179
+ url : WPEMS.ajaxurl,
180
+ type : 'POST',
181
+ data : _data,
182
+ async : false,
183
+ beforeSend: function () {
184
+ // setTimeout( function(){
185
+ _lightbox.find('.tp-event-notice').slideUp().remove();
186
+ // } );
187
+ _button.addClass('event-register-loading');
188
+ }
189
+ }).always(function () {
190
+ _button.find('.event-icon-spinner2').remove();
191
+ }).done(function (res) {
192
+ if (typeof res.notices !== 'undefined') {
193
+ _this.before(res.notices);
194
+ }
195
+
196
+ if (typeof res.status !== 'undefined' && res.status === true) {
197
+ if (typeof res.redirect !== 'undefined' && res.redirect) {
198
+ window.location.href = res.redirect;
199
+ } else {
200
+ window.location.reload();
201
+ }
202
+ }
203
+ }).fail(function (jqXHR, textStatus, errorThrown) {
204
+ var html = '<ul class="tp-event-notice error">';
205
+ html += '<li>' + jqXHR + '</li>';
206
+ html += '</ul>';
207
+ _this.before(res.notices);
208
+ });
209
+
210
+ return false;
211
+ }
212
+ };
213
+
214
+ $(document).ready(function () {
215
+
216
+ TP_Event_Frontend.init();
217
+
218
+ // countdown each
219
+ var counts = $('.tp_event_counter');
220
+ for (var i = 0; i < counts.length; i++) {
221
+ var time = $(counts[i]).attr('data-time');
222
+ time = new Date(time);
223
+
224
+ var current_time = new Date(time - WPEMS.gmt_offset * 60 * 60 * 1000);
225
+
226
+ $(counts[i]).countdown({
227
+ labels : WPEMS.l18n.labels,
228
+ labels1 : WPEMS.l18n.labels1,
229
+ until : current_time,
230
+ serverSync: WPEMS.current_time
231
+ });
232
+ }
233
+
234
+ // owl-carausel
235
+ var carousels = $('.tp_event_owl_carousel');
236
+ for (var i = 0; i < carousels.length; i++) {
237
+ var data = $(carousels[i]).attr('data-countdown');
238
+ var options = {
239
+ navigation : true, // Show next and prev buttons
240
+ slideSpeed : 300,
241
+ paginationSpeed: 400,
242
+ singleItem : true
243
+ };
244
+ if (typeof data !== 'undefined') {
245
+ data = JSON.parse(data);
246
+ $.extend(options, data);
247
+
248
+ $.each(options, function (k, v) {
249
+ if (v === 'true') {
250
+ options[k] = true;
251
+ } else if (v === 'false') {
252
+ options[k] = false;
253
+ }
254
+ });
255
+ }
256
+
257
+ if (typeof options.slide === 'undefined' || options.slide === true) {
258
+ $(carousels[i]).owlCarousel(options);
259
+ } else {
260
+ $(carousels[i]).removeClass('owl-carousel');
261
+ }
262
+ }
263
+ });
264
+
265
+ })(jQuery);
assets/js/frontend/events.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(a){var b={init:function(){var b=a(document);b.on("click",".event-load-booking-form",this.load_form_register),b.on("submit","form.event_register:not(.active)",this.book_event_form),this.sanitize_form_field(),b.on("submit","#event-lightbox .event-auth-form",this.ajax_login)},load_form_register:function(c){c.preventDefault();var d=a(this),e=d.attr("data-event");return a.ajax({url:WPEMS.ajaxurl,type:"POST",dataType:"html",async:!1,data:{event_id:e,nonce:WPEMS.register_button,action:"load_form_register"},beforeSend:function(){d.append('<i class="event-icon-spinner2 spinner"></i>')}}).always(function(){d.find(".event-icon-spinner2").remove()}).done(function(a){b.lightbox(a)}).fail(function(){}),!1},book_event_form:function(c){c.preventDefault();var d=a(this),e=d.serializeArray(),f=d.find('button[type="submit"]'),g=d.find(".tp-event-notice");return a.ajax({url:WPEMS.ajaxurl,type:"POST",data:e,dataType:"json",beforeSend:function(){g.slideUp().remove(),f.addClass("event-register-loading"),d.addClass("active")}}).done(function(c){return f.removeClass("event-register-loading"),"undefined"==typeof c.status?void b.set_message(d,WPEMS.something_wrong):(c.status===!0&&"undefined"!=typeof c.url&&""!==c.url&&(window.location.href=c.url),c.status===!0&&""==c.url&&"undefined"!=typeof c.event&&(a.magnificPopup.close(),a(".woocommerce-message").hide(),setTimeout(function(){a(".entry-register, .event_register_foot").append('<div class="woocommerce-message">'+WPEMS.woo_cart_url+"<p>“"+c.event+"”"+WPEMS.add_to_cart+"</p></div>")},100)),"undefined"!=typeof c.message?void b.set_message(d,c.message):void 0)}).fail(function(){f.removeClass("event-register-loading"),b.set_message(d,WPEMS.something_wrong)}).always(function(){d.removeClass("active")}),!1},set_message:function(a,b){var c='<div class="tp-event-notice error">';c+='<div class="event_auth_register_message_error">'+b+"</div>",c+="</div>",a.find(".event_register_foot").append(c)},sanitize_form_field:function(){for(var b=a(".form-row.form-required"),c=0;c<b.length;c++){var d=a(b[c]),e=d.find("input");e.on("blur",function(b){b.preventDefault();var c=a(this),d=c.parents(".form-row:first");d.hasClass("form-required")&&(""==c.val()?d.removeClass("validated").addClass("has-error"):d.removeClass("has-error").addClass("validated"))})}},lightbox:function(c){var d=[];d.push('<div id="event-lightbox">'),d.push(c),d.push("</div>"),a.magnificPopup.open({items:{type:"inline",src:a(d.join(""))},mainClass:"event-lightbox-wrap",callbacks:{open:function(){var c=a("#event-lightbox");c.addClass("event-fade");var d=setTimeout(function(){c.addClass("event-in"),clearTimeout(d),b.sanitize_form_field()},100)},close:function(){var b=a("#event-lightbox");b.remove()}}})},ajax_login:function(b){b.preventDefault();var c=a(this),d=c.find("#wp-submit"),e=a("#event-lightbox"),f=c.serializeArray();return a.ajax({url:WPEMS.ajaxurl,type:"POST",data:f,async:!1,beforeSend:function(){e.find(".tp-event-notice").slideUp().remove(),d.addClass("event-register-loading")}}).always(function(){d.find(".event-icon-spinner2").remove()}).done(function(a){"undefined"!=typeof a.notices&&c.before(a.notices),"undefined"!=typeof a.status&&a.status===!0&&("undefined"!=typeof a.redirect&&a.redirect?window.location.href=a.redirect:window.location.reload())}).fail(function(a,b,d){var e='<ul class="tp-event-notice error">';e+="<li>"+a+"</li>",e+="</ul>",c.before(res.notices)}),!1}};a(document).ready(function(){b.init();for(var c=a(".tp_event_counter"),d=0;d<c.length;d++){var e=a(c[d]).attr("data-time");e=new Date(e);var f=new Date(e-60*WPEMS.gmt_offset*60*1e3);a(c[d]).countdown({labels:WPEMS.l18n.labels,labels1:WPEMS.l18n.label1,until:f,serverSync:WPEMS.current_time})}for(var g=a(".tp_event_owl_carousel"),d=0;d<g.length;d++){var h=a(g[d]).attr("data-countdown"),i={navigation:!0,slideSpeed:300,paginationSpeed:400,singleItem:!0};"undefined"!=typeof h&&(h=JSON.parse(h),a.extend(i,h),a.each(i,function(a,b){"true"===b?i[a]=!0:"false"===b&&(i[a]=!1)})),"undefined"==typeof i.slide||i.slide===!0?a(g[d]).owlCarousel(i):a(g[d]).removeClass("owl-carousel")}})}(jQuery);
assets/js/frontend/google-map.js ADDED
@@ -0,0 +1,125 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * (c) Greg Priday, freely distributable under the terms of the GPL 2.0 license.
3
+ */
4
+
5
+ function event_loadMap($) {
6
+ $('.event-google-map-canvas').each(function () {
7
+ var $$ = $(this);
8
+ // We use the ob_geocoder
9
+ var ob_geocoder = new google.maps.Geocoder();
10
+ ob_geocoder.geocode({'address': $$.data('address')}, function (results, status) {
11
+ if (status == google.maps.GeocoderStatus.OK) {
12
+ var zoom = Number($$.data('zoom'));
13
+ if (!zoom) zoom = 14;
14
+ var userMapTypeId = 'user_map_style';
15
+ var mapOptions = {
16
+ zoom : zoom,
17
+ scrollwheel : Boolean($$.data('scroll-zoom')),
18
+ // draggable: Boolean( $$.data('draggable') ),
19
+ center : results[0].geometry.location,
20
+ mapTypeControlOptions: {
21
+ mapTypeIds: [google.maps.MapTypeId.ROADMAP, userMapTypeId]
22
+ }
23
+ };
24
+
25
+ var map = new google.maps.Map($$.get(0), mapOptions);
26
+
27
+ var userMapOptions = {
28
+ name: $$.data('map-name')
29
+ };
30
+
31
+ var userMapStyles = $$.data('map-styles');
32
+
33
+ if (userMapStyles) {
34
+ var userMapType = new google.maps.StyledMapType(userMapStyles, userMapOptions);
35
+
36
+ map.mapTypes.set(userMapTypeId, userMapType);
37
+ map.setMapTypeId(userMapTypeId);
38
+ }
39
+
40
+ if (Boolean($$.data('marker-at-center'))) {
41
+
42
+ new google.maps.Marker({
43
+ position: results[0].geometry.location,
44
+ map : map,
45
+ // draggable: Boolean( $$.data('markers-draggable') ),
46
+ icon : $$.data('marker-icon'),
47
+ title : ''
48
+ });
49
+ }
50
+ var markerPositions = $$.data('marker-positions');
51
+ if (markerPositions && markerPositions.length) {
52
+ markerPositions.forEach(
53
+ function (mrkr) {
54
+ ob_geocoder.geocode({'address': mrkr.place}, function (res, status) {
55
+ if (status == google.maps.GeocoderStatus.OK) {
56
+ new google.maps.Marker({
57
+ position: res[0].geometry.location,
58
+ map : map,
59
+ // draggable: Boolean( $$.data('markers-draggable') ),
60
+ icon : $$.data('marker-icon'),
61
+ title : ''
62
+ });
63
+ }
64
+ });
65
+ }
66
+ );
67
+ }
68
+ var directions = $$.data('directions');
69
+ if (directions) {
70
+
71
+ if (directions.waypoints && directions.waypoints.length) {
72
+ directions.waypoints.map(
73
+ function (wypt) {
74
+ wypt.stopover = Boolean(wypt.stopover);
75
+ }
76
+ );
77
+ }
78
+
79
+ var directionsRenderer = new google.maps.DirectionsRenderer();
80
+ directionsRenderer.setMap(map);
81
+
82
+ var directionsService = new google.maps.DirectionsService();
83
+ directionsService.route({
84
+ origin : directions.origin,
85
+ destination : directions.destination,
86
+ travelMode : directions.travelMode.toUpperCase(),
87
+ avoidHighways : Boolean(directions.avoidHighways),
88
+ avoidTolls : Boolean(directions.avoidTolls),
89
+ waypoints : directions.waypoints,
90
+ optimizeWaypoints: Boolean(directions.optimizeWaypoints)
91
+
92
+ },
93
+ function (result, status) {
94
+ if (status == google.maps.DirectionsStatus.OK) {
95
+ directionsRenderer.setDirections(result);
96
+ }
97
+ });
98
+ }
99
+ }
100
+ else if (status == google.maps.GeocoderStatus.ZERO_RESULTS) {
101
+ $$.append('<div><p><strong>There were no results for the place you entered. Please try another.</strong></p></div>');
102
+ }
103
+ });
104
+ });
105
+ }
106
+
107
+ function ob_loadApi($) {
108
+ var apiKey = $('.event-google-map-canvas').data('api-key');
109
+ if (apiKey) {
110
+ var apiUrl = 'https://maps.googleapis.com/maps/api/js?v=3.exp&callback=initialize';
111
+ if (apiKey) {
112
+ apiUrl += '&key=' + apiKey;
113
+ }
114
+ var script = $('<script type="text/javascript" src="' + apiUrl + '">');
115
+ $('body').append(script);
116
+ }
117
+ }
118
+
119
+ function initialize() {
120
+ event_loadMap(window.jQuery);
121
+ }
122
+
123
+ jQuery(function ($) {
124
+ ob_loadApi($);
125
+ });
inc/abstracts/class-wpems-abstract-payment-gateway.php ADDED
@@ -0,0 +1,111 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( !defined( 'ABSPATH' ) ) {
4
+ exit;
5
+ }
6
+
7
+ abstract class WPEMS_Abstract_Payment_Gateway {
8
+
9
+ /**
10
+ * id of payment
11
+ * @var null
12
+ */
13
+ protected $id = null;
14
+
15
+ /**
16
+ * payment title
17
+ * @var null
18
+ */
19
+ protected $title = null;
20
+ // is enable
21
+ public $is_enable = false;
22
+ // icon
23
+ public $icon = null;
24
+
25
+ public function __construct() {
26
+ add_action( 'event_admin_setting_page_checkout_section', array( $this, 'add_sections' ) );
27
+ add_action( 'event_auth_payment_gateways_select', array( $this, 'event_auth_gateways' ) );
28
+ }
29
+
30
+ public function add_sections( $sections ) {
31
+ $sections[$this->id] = $this->title;
32
+ return $sections;
33
+ }
34
+
35
+ public function get_title() {
36
+ return apply_filters( 'event_payment_title', $this->title, $this->id );
37
+ }
38
+
39
+ /**
40
+ * payment process
41
+ * @return null
42
+ */
43
+ protected function process( $event_id = false ) {
44
+
45
+ }
46
+
47
+ /**
48
+ * refund action
49
+ * @return null
50
+ */
51
+ protected function refund() {
52
+
53
+ }
54
+
55
+ /**
56
+ * payment send email
57
+ * @return null
58
+ */
59
+ public function send_email() {
60
+
61
+ }
62
+
63
+ /**
64
+ * admin setting fields
65
+ * @return array
66
+ */
67
+ public function admin_fields() {
68
+ return array();
69
+ }
70
+
71
+ /**
72
+ * enable
73
+ * @return boolean
74
+ */
75
+ public function is_enable() {
76
+ if ( wpems_get_option( $this->id . '_enable', 'yes' ) === 'yes' ) {
77
+ return $this->is_enable = true;
78
+ }
79
+ return $this->is_enable = false;
80
+ }
81
+
82
+ /**
83
+ * event_auth_gateways fontend display
84
+ * @return html
85
+ */
86
+ public function event_auth_gateways() {
87
+ $html = array();
88
+
89
+ $html[] = '<input id="payment_method_' . esc_attr( $this->id ) . '" type="radio" name="payment_method" value="' . esc_attr( $this->id ) . '"/>';
90
+ $html[] = '<label for="payment_method_' . esc_attr( $this->id ) . '"><img width="115" height="50" src="' . esc_attr( $this->_icon ) . '" /></label>';
91
+
92
+ echo implode( '', $html );
93
+ }
94
+
95
+ public function is_available() {
96
+ return true;
97
+ }
98
+
99
+ /**
100
+ * add notice message completed when payment completed
101
+ * @return null
102
+ */
103
+ public function completed_process_message() {
104
+ if ( !tp_event_has_notice( 'success' ) ) {
105
+ tp_event_has_notice( 'success', __( 'Payment completed. We will send you email when payment method verify.', 'wp-events-manager' ) );
106
+ }
107
+ }
108
+
109
+ }
110
+
111
+
inc/abstracts/class-wpems-abstract-setting.php ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ defined( 'ABSPATH' ) || exit();
4
+
5
+ abstract class WPEMS_Abstract_Setting {
6
+
7
+ /**
8
+ * Setting page id
9
+ * @var type string
10
+ */
11
+ protected $id = null;
12
+
13
+ /**
14
+ * Setting page title
15
+ * @var type string
16
+ */
17
+ protected $label = null;
18
+
19
+ public function __construct() {
20
+ add_filter( 'event_admin_settings_tabs_array', array( $this, 'add_setting_tab' ) );
21
+ add_action( 'event_admin_setting_sections_' . $this->id, array( $this, 'output_section' ) );
22
+ add_action( 'event_admin_setting_update_' . $this->id, array( $this, 'save' ) );
23
+ add_action( 'event_admin_setting_' . $this->id, array( $this, 'output' ) );
24
+ }
25
+
26
+ /**
27
+ * Get options setting page
28
+ * @return type array
29
+ */
30
+ public function get_settings() {
31
+ return apply_filters( 'event_admin_setting_page_' . $this->id, array() );
32
+ }
33
+
34
+ /**
35
+ * Get options setting page section
36
+ * @return type array
37
+ */
38
+ public function get_sections() {
39
+ return apply_filters( 'event_admin_setting_page_' . $this->id . '_section', array() );
40
+ }
41
+
42
+ /**
43
+ * Add admin setting page 'event_admin_settings_tabs_array' callback
44
+ *
45
+ * @param array $tabs
46
+ *
47
+ * @return type
48
+ */
49
+ public function add_setting_tab( $tabs ) {
50
+ $tabs[$this->id] = $this->label;
51
+ return $tabs;
52
+ }
53
+
54
+ /**
55
+ * Display section tabs of setting page 'event_admin_setting_sections_' . $this->id callback
56
+ *
57
+ * @param type $tab
58
+ */
59
+ public function output_section( $tab ) {
60
+ global $current_section;
61
+ $sections = $this->get_sections();
62
+ if ( $sections ) {
63
+ echo '<ul class="subsubsub">';
64
+ $array_keys = array_keys( $sections );
65
+ foreach ( $sections as $id => $label ) {
66
+ echo '<li><a href="' . admin_url( 'admin.php?page=tp-event-setting&tab=' . $this->id . '&section=' . sanitize_title( $id ) ) . '" class="' . ( $current_section === $id ? 'current' : '' ) . '">' . $label . '</a> ' . ( end( $array_keys ) == $id ? '' : '|' ) . ' </li>';
67
+ }
68
+
69
+ echo '</ul><br class="clear" />';
70
+ }
71
+ }
72
+
73
+ /**
74
+ * Display Output settings
75
+ *
76
+ * @param type $tab
77
+ */
78
+ public function output( $tab ) {
79
+ $settings = $this->get_settings();
80
+ WPEMS_Admin_Settings::render_fields( $settings );
81
+ }
82
+
83
+ /**
84
+ * Save action callback
85
+ * @since 2.0
86
+ */
87
+ public function save() {
88
+ $settings = $this->get_settings();
89
+ WPEMS_Admin_Settings::save_fields( $settings );
90
+ }
91
+
92
+ }
inc/admin/class-wpems-admin-assets.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ defined( 'ABSPATH' ) || exit();
4
+
5
+ class WPEMS_Admin_Assets {
6
+
7
+ /**
8
+ * Register scripts
9
+ * @since 1.4.1.4
10
+ */
11
+ public static function init() {
12
+ add_action( 'tp_event_before_enqueue_scripts', array( __CLASS__, 'register_scripts' ) );
13
+ }
14
+
15
+ /**
16
+ * Register scripts
17
+ *
18
+ * @param type $hook
19
+ */
20
+ public static function register_scripts( $hook ) {
21
+ WPEMS_Assets::register_script( 'wpems-admin-js', WPEMS_ASSETS_URI . '/js/admin/admin-events.js' );
22
+ WPEMS_Assets::register_style( 'wpems-admin-css', WPEMS_ASSETS_URI . '/css/admin/admin.css' );
23
+ WPEMS_Assets::register_script( 'wpems-admin-datetimepicker-full', WPEMS_ASSETS_URI . '/js/datetimepicker/jquery.datetimepicker.full.min.js' );
24
+ WPEMS_Assets::register_style( 'wpems-admin-datetimepicker-min', WPEMS_ASSETS_URI . '/css/datetimepicker/jquery.datetimepicker.min.css' );
25
+ }
26
+
27
+ }
28
+
29
+ WPEMS_Admin_Assets::init();
inc/admin/class-wpems-admin-menu.php ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( !defined( 'ABSPATH' ) ) {
4
+ exit();
5
+ }
6
+
7
+ class WPEMS_Admin_Menu {
8
+
9
+ /**
10
+ * menus
11
+ * @var array
12
+ */
13
+ public $_menus = array();
14
+
15
+ /**
16
+ * instead new class
17
+ * @var null
18
+ */
19
+ static $_instance = null;
20
+
21
+ public function __construct() {
22
+ // admin menu
23
+ add_action( 'admin_menu', array( $this, 'admin_menu' ) );
24
+ }
25
+
26
+ // add admin menu callback
27
+ public function admin_menu() {
28
+ /**
29
+ * menus
30
+ * @var array
31
+ */
32
+ $menus = apply_filters( 'tp_event_admin_menu', $this->_menus );
33
+ add_menu_page( __( 'Events Manager', 'wp-events-manager' ), __( 'Events Manager', 'wp-events-manager' ), 'administrator', 'tp-event-setting', null, 'dashicons-calendar-alt', 4 );
34
+ if ( $menus ) {
35
+ foreach ( $menus as $menu ) {
36
+ call_user_func_array( 'add_submenu_page', $menu );
37
+ }
38
+ }
39
+ add_submenu_page( 'tp-event-setting', __( 'TP Event Users', 'wp-events-manager' ), __( 'Users', 'wp-events-manager' ), 'administrator', 'tp-event-users', array( 'WPEMS_Admin_Users', 'output' ) );
40
+ add_submenu_page( 'tp-event-setting', __( 'TP Event Settings', 'wp-events-manager' ), __( 'Settings', 'wp-events-manager' ), 'administrator', 'tp-event-setting', array( 'WPEMS_Admin_Settings', 'output' ) );
41
+ }
42
+
43
+ /**
44
+ * add menu item
45
+ *
46
+ * @param $params
47
+ */
48
+ public function add_menu( $params ) {
49
+ $this->_menus[] = $params;
50
+ }
51
+
52
+ /**
53
+ * instance
54
+ * @return object class
55
+ */
56
+ public static function instance() {
57
+ if ( self::$_instance )
58
+ return self::$_instance;
59
+
60
+ return new self();
61
+ }
62
+
63
+ }
64
+
65
+ WPEMS_Admin_Menu::instance();
inc/admin/class-wpems-admin-metaboxes.php ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ defined( 'ABSPATH' ) || exit();
4
+
5
+ class WPEMS_Admin_Metaboxes {
6
+
7
+ public static function init() {
8
+ add_action( 'add_meta_boxes', array( __CLASS__, 'add_meta_boxes' ), 0 );
9
+ add_action( 'save_post', array( __CLASS__, 'save_post_meta' ) );
10
+ add_action( 'admin_notices', array( __CLASS__, 'print_errors' ) );
11
+
12
+ /**
13
+ * Save post meta
14
+ */
15
+ add_action( 'tp_event_process_update_tp_event_meta', array( 'WPEMS_Admin_Metabox_Event', 'save' ), 10, 2 );
16
+ add_action( 'tp_event_process_update_event_auth_book_meta', array( 'WPEMS_Admin_Metabox_Booking', 'save' ), 10, 2 );
17
+ }
18
+
19
+ /**
20
+ * Add meta boxes
21
+ */
22
+ public static function add_meta_boxes() {
23
+ add_meta_box(
24
+ 'event-settings-metabox', __( 'Event Settings', 'wp-events-manager' ), array( 'WPEMS_Admin_Metabox_Event', 'render' ), 'tp_event', 'normal', 'high'
25
+ );
26
+ add_meta_box(
27
+ 'booking-information-metabox', __( 'Booking Information', 'wp-events-manager' ), array( 'WPEMS_Admin_Metabox_Booking', 'render' ), 'event_auth_book', 'normal', 'default'
28
+ );
29
+ add_meta_box(
30
+ 'booking-status-side', __( 'Booking Actions', 'wp-events-manager' ), array( 'WPEMS_Admin_Metabox_Booking', 'side' ), 'event_auth_book', 'side', 'high'
31
+ );
32
+ }
33
+
34
+ /**
35
+ * Save post meta
36
+ *
37
+ * @param type $post_id
38
+ *
39
+ * @return boolean
40
+ */
41
+ public static function save_post_meta( $post_id ) {
42
+ if ( empty( $_POST ) && defined( 'DOING_AJAX' ) && DOING_AJAX ) {
43
+ return false;
44
+ }
45
+
46
+ $post_type = get_post_type( $post_id );
47
+ if ( !in_array( $post_type, array( 'tp_event', 'event_auth_book' ) ) ) {
48
+ return false;
49
+ }
50
+
51
+ if ( $post_type == 'tp_event' && ( empty( $_POST['event-nonce'] ) || !wp_verify_nonce( $_POST['event-nonce'], 'event_nonce' ) ) ) {
52
+ return false;
53
+ } elseif ( $post_type == 'event_auth_book' && ( empty( $_POST['event-booking-nonce'] ) || !wp_verify_nonce( $_POST['event-booking-nonce'], 'event_booking_nonce' ) ) ) {
54
+ return false;
55
+ }
56
+
57
+ do_action( 'tp_event_process_update_' . $post_type . '_meta', $post_id, $_POST );
58
+ }
59
+
60
+ /**
61
+ * Add error message save post meta
62
+ *
63
+ * @param type $message
64
+ */
65
+ public static function add_error( $message = '' ) {
66
+ $error = get_option( 'tp_event_meta_box_error_messages', array() );
67
+ $error[] = $message;
68
+ update_option( 'tp_event_meta_box_error_messages', $error );
69
+ }
70
+
71
+ /**
72
+ * Print notices error save post meta
73
+ * @return type
74
+ */
75
+ public static function print_errors() {
76
+ $errors = get_option( 'tp_event_meta_box_error_messages' );
77
+ if ( !$errors ) {
78
+ return;
79
+ }
80
+ echo '<div id="event_error" class="error notice is-dismissible">';
81
+
82
+ foreach ( $errors as $error ) {
83
+ echo '<p>' . wp_kses_post( $error ) . '</p>';
84
+ }
85
+
86
+ echo '</div>';
87
+ delete_option( 'tp_event_meta_box_error_messages' );
88
+ }
89
+
90
+ }
91
+
92
+ WPEMS_Admin_Metaboxes::init();
inc/admin/class-wpems-admin-settings.php ADDED
@@ -0,0 +1,202 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ defined( 'ABSPATH' ) || exit();
3
+
4
+ class WPEMS_Admin_Settings {
5
+
6
+ private static $messages = array();
7
+
8
+ public static function init() {
9
+ add_action( 'admin_init', array( __CLASS__, 'register_setting' ) );
10
+ }
11
+
12
+ /**
13
+ * Get Setting Page
14
+ */
15
+ public static function get_setting_pages() {
16
+ $settings = array();
17
+ $settings[] = require_once WPEMS_INC . 'admin/settings/class-wpems-admin-setting-general.php';
18
+ $settings[] = require_once WPEMS_INC . 'admin/settings/class-wpems-admin-setting-pages.php';
19
+ $settings[] = require_once WPEMS_INC . 'admin/settings/class-wpems-admin-setting-emails.php';
20
+ $settings[] = require_once WPEMS_INC . 'admin/settings/class-wpems-admin-setting-checkout.php';
21
+ return apply_filters( 'event_admin_setting_pages', $settings );
22
+ }
23
+
24
+ /**
25
+ * Add message
26
+ *
27
+ * @param type $message
28
+ *
29
+ * @since 2.0
30
+ */
31
+ public static function add_message( $message = '' ) {
32
+ self::$messages[] = $message;
33
+ }
34
+
35
+ /**
36
+ * Display messages
37
+ * @since 2.0
38
+ */
39
+ public static function show_messages() {
40
+ foreach ( self::$messages as $message ) {
41
+ echo '<div class="updated inline"><p>' . esc_html( $message ) . '</p></div>';
42
+ }
43
+ }
44
+
45
+ /**
46
+ * Save event setting
47
+ * @since 2.0
48
+ */
49
+ public static function save() {
50
+ if ( empty( $_POST['tp-event-settings-nonce'] ) || !wp_verify_nonce( $_POST['tp-event-settings-nonce'], 'tp-event-settings' ) ) {
51
+ return false;
52
+ }
53
+ global $current_tab;
54
+
55
+ do_action( 'event_admin_setting_update_' . $current_tab );
56
+ do_action( 'event_admin_setting_update', $current_tab );
57
+
58
+ self::add_message( __( 'Your settings have been saved.', 'wp-events-manager' ) );
59
+ do_action( 'event_admin_settings_updated', $_POST );
60
+ }
61
+
62
+ /**
63
+ * Output page setting
64
+ * @since 2.0
65
+ */
66
+ public static function output() {
67
+ global $current_tab, $current_section;
68
+ self::get_setting_pages();
69
+ $tabs = apply_filters( 'event_admin_settings_tabs_array', array() );
70
+ $current_tab = isset( $_GET['tab'] ) && $_GET['tab'] ? sanitize_text_field($_GET['tab']) : current( array_keys( $tabs ) );
71
+ $current_section = isset( $_GET['section'] ) && $_GET['section'] ? sanitize_text_field($_GET['section']) : '';
72
+ if ( !empty( $_POST ) ) {
73
+ self::save();
74
+ }
75
+ if ( $tabs ): ?>
76
+ <div class="wrap">
77
+ <form method="POST" name="tp_event_options" action="">
78
+ <h2 class="nav-tab-wrapper">
79
+ <?php foreach ( $tabs as $key => $title ): ?>
80
+ <a href="<?php echo esc_url( admin_url( 'admin.php?page=tp-event-setting&tab=' . $key ) ); ?>" class="nav-tab<?php echo $current_tab === $key ? ' nav-tab-active' : '' ?>" data-tab="<?php echo esc_attr( $key ) ?>">
81
+ <?php printf( '%s', $title ) ?>
82
+ </a>
83
+ <?php endforeach; ?>
84
+ </h2>
85
+ <div class="tp_event_wrapper_content">
86
+ <?php do_action( 'event_admin_setting_sections_' . $current_tab ); ?>
87
+ <!--Display message updated || error-->
88
+ <?php self::show_messages(); ?>
89
+ <?php do_action( 'event_admin_setting_' . $current_tab ); ?>
90
+ </div>
91
+ <p class="submit">
92
+ <?php wp_nonce_field( 'tp-event-settings', 'tp-event-settings-nonce' ); ?>
93
+ <input name="save" class="button-primary" type="submit" value="<?php esc_attr_e( 'Save changes', 'wp-events-manager' ); ?>" />
94
+ </p>
95
+ </form>
96
+ </div>
97
+ <?php endif;
98
+ }
99
+
100
+ /**
101
+ * Render fields
102
+ *
103
+ * @param type $fields
104
+ *
105
+ * @return type mixed
106
+ */
107
+ public static function render_fields( $fields = array() ) {
108
+ if ( empty( $fields ) ) {
109
+ return;
110
+ }
111
+ foreach ( $fields as $k => $field ) {
112
+ $field = wp_parse_args( $field, array(
113
+ 'id' => '',
114
+ 'class' => '',
115
+ 'title' => '',
116
+ 'desc' => '',
117
+ 'default' => '',
118
+ 'type' => '',
119
+ 'placeholder' => '',
120
+ 'options' => '',
121
+ 'atts' => array()
122
+ ) );
123
+
124
+ $custom_attr = '';
125
+ if ( !empty( $field['atts'] ) ) {
126
+ foreach ( $field['atts'] as $k => $val ) {
127
+ $custom_attr .= $k . '="' . $val . '"';
128
+ }
129
+ }
130
+ switch ( $field['type'] ) {
131
+ case 'section_start':
132
+ include( WPEMS_INC . 'admin/views/settings/section-start.php' );
133
+ break;
134
+ case 'section_end':
135
+ include( WPEMS_INC . 'admin/views/settings/section-end.php' );
136
+ break;
137
+
138
+ case 'select':
139
+ case 'multiselect':
140
+ include( WPEMS_INC . 'admin/views/settings/select.php' );
141
+ break;
142
+
143
+ case 'text':
144
+ case 'number':
145
+ case 'email':
146
+ case 'password':
147
+ include( WPEMS_INC . 'admin/views/settings/text.php' );
148
+ break;
149
+
150
+ case 'checkbox':
151
+ include( WPEMS_INC . 'admin/views/settings/checkbox.php' );
152
+ break;
153
+
154
+ case 'yes_no':
155
+ include( WPEMS_INC . 'admin/views/settings/yes-no.php' );
156
+ break;
157
+
158
+ case 'radio':
159
+ include( WPEMS_INC . 'admin/views/settings/radio.php' );
160
+ break;
161
+
162
+ case 'image_size':
163
+ include( WPEMS_INC . 'admin/views/settings/image-size.php' );
164
+ break;
165
+
166
+ case 'textarea':
167
+ include( WPEMS_INC . 'admin/views/settings/textarea.php' );
168
+ break;
169
+
170
+ case 'select_page':
171
+ include( WPEMS_INC . 'admin/views/settings/select-page.php' );
172
+ break;
173
+
174
+ default:
175
+ do_action( 'tp_event_setting_field_' . $field['id'], $field );
176
+ break;
177
+ }
178
+ }
179
+ }
180
+
181
+ /**
182
+ * Save fields options
183
+ *
184
+ * @param type $settings
185
+ *
186
+ * @since 2.0
187
+ */
188
+ public static function save_fields( $settings = array() ) {
189
+ foreach ( $settings as $setting ) {
190
+ if ( isset( $setting['id'] ) && array_key_exists( $setting['id'], $_POST ) ) {
191
+ update_option( $setting['id'], sanitize_text_field($_POST[$setting['id']]) );
192
+ }
193
+ }
194
+ }
195
+
196
+ public static function register_setting() {
197
+ register_setting( 'thimpress_events', 'thimpress_events' );
198
+ }
199
+
200
+ }
201
+
202
+ WPEMS_Admin_Settings::init();
inc/admin/class-wpems-admin-users.php ADDED
@@ -0,0 +1,254 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * @author leehld
4
+ */
5
+
6
+ /**
7
+ * Prevent loading this file directly
8
+ */
9
+ defined( 'ABSPATH' ) || exit;
10
+
11
+
12
+ if ( !class_exists( 'WP_List_Table' ) ) {
13
+ require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
14
+ }
15
+
16
+ class WPEMS_Admin_Users extends WP_List_Table {
17
+
18
+ public $items = null;
19
+
20
+ public function __construct() {
21
+ parent::__construct( array(
22
+ 'singular' => __( 'user', 'wp-events-manager' ),
23
+ 'plural' => __( 'users', 'wp-events-manager' ),
24
+ 'ajax' => false
25
+ ) );
26
+ }
27
+
28
+ public function load_users() {
29
+ global $wpdb;
30
+ if ( isset( $_GET['user_id'] ) && $_GET['user_id'] ) {
31
+ $query = $wpdb->prepare( "
32
+ SELECT user.* FROM $wpdb->users AS user
33
+ LEFT JOIN $wpdb->postmeta AS pm ON user.ID = pm.meta_value
34
+ LEFT JOIN $wpdb->posts AS book ON pm.post_id = book.ID
35
+ WHERE
36
+ pm.meta_key = %s
37
+ AND book.post_type = %s
38
+ AND book.post_status IN (%s,%s,%s,%s)
39
+ AND user.ID = %d
40
+ GROUP BY user.ID
41
+ ", 'ea_booking_user_id', 'event_auth_book', 'ea-cancelled', 'ea-pending', 'ea-processing', 'ea-completed', absint( $_GET['user_id'] ) );
42
+ } else {
43
+ $query = $wpdb->prepare( "
44
+ SELECT user.* FROM $wpdb->users AS user
45
+ LEFT JOIN $wpdb->postmeta AS pm ON user.ID = pm.meta_value
46
+ LEFT JOIN $wpdb->posts AS book ON pm.post_id = book.ID
47
+ WHERE
48
+ pm.meta_key = %s
49
+ AND book.post_type = %s
50
+ AND book.post_status IN (%s,%s,%s,%s)
51
+ GROUP BY user.ID
52
+ ", 'ea_booking_user_id', 'event_auth_book', 'ea-cancelled', 'ea-pending', 'ea-processing', 'ea-completed' );
53
+ }
54
+
55
+ $users = $wpdb->get_results( $query );
56
+
57
+ $results = array();
58
+
59
+ if ( $users ) {
60
+ foreach ( $users as $user ) {
61
+ // $approve = is_super_admin( $user->ID ) || get_user_meta( $user->ID, 'ea_user_approved', true ) ;
62
+
63
+ $booking_url = admin_url() . 'edit.php?post_type=event_auth_book&user_id=' . $user->ID;
64
+ $results[] = array(
65
+ 'ID' => $user->ID,
66
+ 'user_login' => sprintf( '<a href="%s">%s</a>', get_edit_user_link( $user->ID ), $user->user_login ),
67
+ 'user_nicename' => $user->user_nicename,
68
+ 'user_email' => $user->user_email,
69
+ 'bookings' => sprintf( '<a href="%s">%s</a>', $booking_url, __( 'View', 'wp-events-manager' ) ),
70
+ // 'approved' => (boolean) $approve
71
+ );
72
+ }
73
+ }
74
+
75
+ return $results;
76
+ }
77
+
78
+ // $this->items is empty
79
+ public function no_items() {
80
+ _e( 'No users found.', 'wp-events-manager' );
81
+ }
82
+
83
+ // default columns
84
+ public function column_default( $item, $column ) {
85
+ switch ( $column ) {
86
+ case 'ID':
87
+ case 'user_login':
88
+ case 'user_nicename':
89
+ case 'user_email':
90
+ return $item[$column];
91
+ break;
92
+ case 'bookings':
93
+ return $item[$column];
94
+ break;
95
+ default:
96
+ return print_r( $item, true );
97
+ break;
98
+ }
99
+ }
100
+
101
+ // sort columns
102
+ public function get_sortable_columns() {
103
+ $sortable = array(
104
+ 'user_login' => array( 'user_login', false )
105
+ );
106
+ return $sortable;
107
+ }
108
+
109
+ public function get_columns() {
110
+ $columns = array(
111
+ 'cb' => '<input type="checkbox" />',
112
+ 'user_login' => __( 'Username', 'wp-events-manager' ),
113
+ 'user_nicename' => __( 'Name', 'wp-events-manager' ),
114
+ 'user_email' => __( 'Email', 'wp-events-manager' ),
115
+ 'bookings' => __( 'Event Booking', 'wp-events-manager' )
116
+ );
117
+ return $columns;
118
+ }
119
+
120
+ public function sort_data( $a, $b ) {
121
+ $orderby = ( !empty( $_GET['orderby'] ) ) ? sanitize_text_field($_GET['orderby']) : 'user_login';
122
+
123
+ $order = ( !empty( $_GET['order'] ) ) ? sanitize_text_field($_GET['order']) : 'asc';
124
+
125
+ $result = strcmp( $a[$orderby], $b[$orderby] );
126
+ return ( $order === 'asc' ) ? $result : - $result;
127
+ }
128
+
129
+ // bulk action
130
+ public function get_bulk_actions() {
131
+
132
+ return array(
133
+ // 'approve' => __( 'Approve', 'wp-events-manager' ),
134
+ // 'unapprove' => __( 'Unapprove', 'wp-events-manager' )
135
+ );
136
+ }
137
+
138
+ // process bulk action
139
+ public function process_bulk_action() {
140
+ return;
141
+ if ( $_SERVER['REQUEST_METHOD'] === 'POST' ) {
142
+ if ( !isset( $_POST['action'] ) || !$_POST['action'] || !isset( $_POST['users'] ) || empty( $_POST['users'] ) ) {
143
+ return;
144
+ }
145
+
146
+ $action = sanitize_text_field( $_POST['action'] );
147
+ $users = absint($_POST['users']);
148
+
149
+ foreach ( $users as $user ) {
150
+ $status = get_user_meta( $user, 'ea_user_approved', true );
151
+ if ( $action === 'approve' || is_super_admin( $user ) ) {
152
+ update_user_meta( $user, 'ea_user_approved', true );
153
+ } else if ( $action === 'unapprove' ) {
154
+ delete_user_meta( $user, 'ea_user_approved' );
155
+ }
156
+ }
157
+ } else {
158
+ if ( !isset( $_REQUEST['page'] ) || $_REQUEST['page'] !== 'tp-event-users' ) {
159
+ return;
160
+ }
161
+
162
+ if ( !isset( $_REQUEST['event_nonce'] ) || !wp_verify_nonce( $_REQUEST['event_nonce'], 'event_auth_user_action' ) ) {
163
+ return;
164
+ }
165
+
166
+ if ( !isset( $_REQUEST['action'] ) || !$_REQUEST['action'] || !isset( $_REQUEST['user_id'] ) || !$_REQUEST['user_id'] ) {
167
+ return;
168
+ }
169
+
170
+ $action = sanitize_text_field( $_REQUEST['action'] );
171
+ $user_id = absint( sanitize_text_field( $_REQUEST['user_id'] ) );
172
+
173
+ if ( $action === 'approve' ) {
174
+ update_user_meta( $user_id, 'ea_user_approved', true );
175
+ } elseif ( $action === 'unapprove' ) {
176
+ delete_user_meta( $user_id, 'ea_user_approved' );
177
+ }
178
+ }
179
+ }
180
+
181
+ public function column_user_login( $item ) {
182
+ // $status = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ;
183
+ // $status = wp_nonce_url( $status, 'event_auth_user_action', 'event_nonce' );
184
+ $actions = array();
185
+ if ( isset( $item['approved'] ) && !$item['approved'] ) {
186
+ // $status_name = __( 'Approve', 'wp-events-manager' );
187
+ // $status = add_query_arg( array(
188
+ // 'action' => 'approve',
189
+ // 'user_id' => $item['ID']
190
+ // ), $status );
191
+ // $actions['edit'] = sprintf( __( '<a href="%s">%s</a>' ), $status, $status_name );
192
+ } else {
193
+ // $status_name = __( 'Unapprove', 'wp-events-manager' );
194
+ // $status = add_query_arg( array(
195
+ // 'action' => 'unapprove',
196
+ // 'user_id' => $item['ID']
197
+ // ), $status );
198
+ // $actions['spam'] = sprintf( __( '<a href="%s">%s</a>' ), $status, $status_name );
199
+ }
200
+
201
+ return sprintf( '%1$s %2$s', $item['user_login'], $this->row_actions( $actions ) );
202
+ }
203
+
204
+ public function column_cb( $item ) {
205
+ return sprintf(
206
+ '<input type="checkbox" name="users[]" value="%s" />', $item['ID']
207
+ );
208
+ }
209
+
210
+ public function prepare_items() {
211
+ // process bulk action
212
+ $this->process_bulk_action();
213
+
214
+ // load items
215
+ $this->items = $this->load_users();
216
+
217
+ $columns = $this->get_columns();
218
+ $hidden = array();
219
+ $sortable = $this->get_sortable_columns();
220
+ $this->_column_headers = array( $columns, $hidden, $sortable );
221
+ usort( $this->items, array( $this, 'sort_data' ) );
222
+
223
+ $per_page = 10;
224
+ $total_items = count( $this->items );
225
+ // pagination
226
+ if ( $total_items > $per_page ) {
227
+ $this->items = array_slice( $this->items, ( $this->get_pagenum() - 1 ) * $per_page, $per_page );
228
+ }
229
+ $this->set_pagination_args( array(
230
+ 'total_items' => $total_items,
231
+ 'per_page' => $per_page
232
+ ) );
233
+
234
+ $this->items = $this->items;
235
+ }
236
+
237
+ public static function output() {
238
+ $user_table = new WPEMS_Admin_Users();
239
+ ?>
240
+ <div class="wrap">
241
+
242
+ <h2><?php _e( 'Event Users', 'wp-events-manager' ); ?></h2>
243
+
244
+ <?php $user_table->prepare_items(); ?>
245
+ <form method="post">
246
+ <?php $user_table->display(); ?>
247
+ </form>
248
+
249
+ </div>
250
+ <?php
251
+ }
252
+
253
+
254
+ }
inc/admin/class-wpems-admin.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ defined( 'ABSPATH' ) || exit();
4
+
5
+ class WPEMS_Admin {
6
+
7
+ public function __construct() {
8
+
9
+ $this->_includes();
10
+ }
11
+
12
+ private function _includes() {
13
+ include( WPEMS_PATH . 'inc/admin/class-wpems-admin-menu.php' );
14
+ include( WPEMS_PATH . 'inc/admin/class-wpems-admin-assets.php' );
15
+ include( WPEMS_PATH . 'inc/admin/class-wpems-admin-metaboxes.php' );
16
+ include( WPEMS_PATH . 'inc/admin/class-wpems-admin-settings.php' );
17
+ include( WPEMS_PATH . 'inc/admin/class-wpems-admin-users.php' );
18
+ }
19
+
20
+ }
21
+
22
+ new WPEMS_Admin();
inc/admin/metaboxes/class-wpems-admin-metabox-booking.php ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ defined( 'ABSPATH' ) || exit();
3
+
4
+ class WPEMS_Admin_Metabox_Booking {
5
+
6
+ public static function save( $post_id, $posted ) {
7
+ if ( ! empty( $_POST['booking-status'] ) ) {
8
+ remove_action( 'tp_event_process_update_event_auth_book_meta', array( __CLASS__, 'save' ), 10, 3 );
9
+ $booking = WPEMS_Booking::instance( $post_id );
10
+
11
+ $status = sanitize_text_field( $_POST['booking-status'] );
12
+ $booking->update_status( $status );
13
+ add_action( 'tp_event_process_update_event_auth_book_meta', array( __CLASS__, 'save' ), 10, 3 );
14
+ }
15
+ if ( ! empty( $_POST['booking-notes'] ) ) {
16
+ update_post_meta( $post_id, 'ea_booking_note', sanitize_textarea_field( $_POST['booking-notes'] ) );
17
+ }
18
+ }
19
+
20
+ public static function render() {
21
+ require_once( WPEMS_INC . 'admin/views/metaboxes/booking-details.php' );
22
+ }
23
+
24
+ public static function side() {
25
+ require_once( WPEMS_INC . 'admin/views/metaboxes/booking-actions.php' );
26
+ }
27
+
28
+ }
inc/admin/metaboxes/class-wpems-admin-metabox-event.php ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) {
3
+ exit; // Exit if accessed directly
4
+ }
5
+
6
+ class WPEMS_Admin_Metabox_Event {
7
+
8
+ public static function save( $post_id, $posted ) {
9
+ if ( empty( $posted ) )
10
+ return;
11
+
12
+ foreach ( $posted as $name => $value ) {
13
+ if ( strpos( $name, 'tp_event_' ) !== 0 ) {
14
+ continue;
15
+ }
16
+ update_post_meta( $post_id, $name, $value );
17
+ }
18
+ // Start
19
+ $start = !empty( $_POST['tp_event_date_start'] ) ? sanitize_text_field( $_POST['tp_event_date_start'] ) : '';
20
+ $start .= $start && !empty( $_POST['tp_event_time_start'] ) ? ' ' . sanitize_text_field( $_POST['tp_event_time_start'] ) : '';
21
+
22
+ // End
23
+ $end = !empty( $_POST['tp_event_date_end'] ) ? sanitize_text_field( $_POST['tp_event_date_end'] ) : '';
24
+ $end .= $end && !empty( $_POST['tp_event_time_end'] ) ? ' ' . sanitize_text_field( $_POST['tp_event_time_end'] ) : '';
25
+
26
+ if ( ( $start && !$end ) || ( strtotime( $start ) >= strtotime( $end ) ) ) {
27
+ WPEMS_Admin_Metaboxes::add_error( __( 'Please make sure event time is validate', 'wp-events-manager' ) );
28
+ wp_update_post( array( 'ID' => $post_id, 'post_status' => 'publish' ) );
29
+ }
30
+
31
+ $event_start = strtotime( $start );
32
+ $event_end = strtotime( $end );
33
+
34
+ $time = strtotime( current_time( 'Y-m-d H:i' ) );
35
+
36
+ $offset_time = get_option( 'gmt_offset' ) * 60 * 60;
37
+
38
+ $status = 'publish';
39
+ if ( $event_start && $event_end ) {
40
+ if ( $event_start > $time ) {
41
+ $status = 'tp-event-upcoming';
42
+ } else if ( $event_start <= $time && $time < $event_end ) {
43
+ $status = 'tp-event-happenning';
44
+ } else if ( $time >= $event_end ) {
45
+ $status = 'tp-event-expired';
46
+ }
47
+
48
+ wp_schedule_single_event( $event_start - $offset_time, 'tp_event_schedule_status', array( $post_id, 'tp-event-happenning' ) );
49
+ wp_schedule_single_event( $event_end - $offset_time, 'tp_event_schedule_status', array( $post_id, 'tp-event-expired' ) );
50
+ }
51
+
52
+ if ( !in_array( get_post_status( $post_id ), array( 'tp-event-upcoming', 'tp-event-happenning', 'tp-event-expired' ) ) ) {
53
+ wp_update_post( array( 'ID' => $post_id, 'post_status' => $status ) );
54
+ }
55
+
56
+ }
57
+
58
+ public static function render() {
59
+ require_once( WPEMS_INC . 'admin/views/metaboxes/event-settings.php' );
60
+ }
61
+
62
+ }
inc/admin/settings/class-wpems-admin-setting-checkout.php ADDED
@@ -0,0 +1,121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( !defined( 'ABSPATH' ) ) {
4
+ exit();
5
+ }
6
+
7
+ class WPEMS_Admin_Setting_Checkout extends WPEMS_Abstract_Setting {
8
+
9
+ /**
10
+ * ID
11
+ * @var type mixed
12
+ */
13
+ public $id = null;
14
+
15
+ /**
16
+ * Title
17
+ * @var type string
18
+ */
19
+ public $label = null;
20
+
21
+ public function __construct() {
22
+ $this->id = 'event_checkout';
23
+ $this->label = __( 'Checkout', 'wp-events-manager' );
24
+ add_filter( 'event_admin_settings_tabs_array', array( $this, 'add_setting_tab' ) );
25
+ add_action( 'event_admin_setting_sections_' . $this->id, array( $this, 'output_section' ) );
26
+ add_action( 'event_admin_setting_update_' . $this->id, array( $this, 'save' ) );
27
+ add_action( 'event_admin_setting_' . $this->id, array( $this, 'output' ) );
28
+ }
29
+
30
+ /**
31
+ * Get options setting page
32
+ * @return type array
33
+ */
34
+ public function get_settings() {
35
+ $prefix = 'thimpress_events_';
36
+ return apply_filters( 'event_admin_setting_page_' . $this->id, array(
37
+ array(
38
+ 'type' => 'section_start',
39
+ 'id' => 'general_settings',
40
+ 'title' => __( 'Checkout Process', 'wp-events-manager' ),
41
+ 'desc' => __( 'General options for system', 'wp-events-manager' )
42
+ ),
43
+ array(
44
+ 'type' => 'select',
45
+ 'title' => __( 'Booking times free event/email', 'wp-events-manager' ),
46
+ 'desc' => __( 'This controls how many time booking free event of an email', 'wp-events-manager' ),
47
+ 'id' => $prefix . 'email_register_times',
48
+ 'options' => array(
49
+ 'once' => __( 'Once', 'wp-events-manager' ),
50
+ 'many' => __( 'Many', 'wp-events-manager' )
51
+ ),
52
+ 'default' => 'many'
53
+ ),
54
+ array(
55
+ 'type' => 'number',
56
+ 'title' => __( 'Cancel payment status', 'wp-events-manager' ),
57
+ 'desc' => __( 'How long cancel a payment (hour)', 'wp-events-manager' ),
58
+ 'atts' => array(
59
+ 'min' => 0,
60
+ 'step' => 'any'
61
+ ),
62
+ 'id' => $prefix . 'cancel_payment',
63
+ 'default' => 12,
64
+ 'placeholder' => 12
65
+ ),
66
+ array(
67
+ 'type' => 'section_end',
68
+ 'id' => 'general_settings'
69
+ )
70
+ ) );
71
+ }
72
+
73
+ /**
74
+ * Add Sections
75
+ */
76
+ public function get_sections() {
77
+ $sections[''] = __( 'Checkout General', 'wp-events-manager' );
78
+ $payment_gateways = wpems_payment_gateways();
79
+ if ( $payment_gateways ) {
80
+ foreach ( $payment_gateways as $id => $gateway ) {
81
+ $sections[$id] = $gateway->title;
82
+ }
83
+ }
84
+ return $sections;
85
+ }
86
+
87
+ public function output( $tab ) {
88
+ global $current_section;
89
+ if ( $current_section ) {
90
+ $gateways = wpems_payment_gateways();
91
+ foreach ( $gateways as $gateway ) {
92
+ if ( $current_section === $gateway->id ) {
93
+ $fields = $gateway->admin_fields();
94
+ WPEMS_Admin_Settings::render_fields( $fields );
95
+ break;
96
+ }
97
+ }
98
+ } else {
99
+ parent::output( $tab );
100
+ }
101
+ }
102
+
103
+ public function save() {
104
+ global $current_section;
105
+ if ( $current_section ) {
106
+ $gateways = wpems_payment_gateways();
107
+ foreach ( $gateways as $gateway ) {
108
+ if ( $current_section === $gateway->id ) {
109
+ $fields = $gateway->admin_fields();
110
+ WPEMS_Admin_Settings::save_fields( $fields );
111
+ break;
112
+ }
113
+ }
114
+ } else {
115
+ parent::save();
116
+ }
117
+ }
118
+
119
+ }
120
+
121
+ return new WPEMS_Admin_Setting_Checkout();
inc/admin/settings/class-wpems-admin-setting-emails.php ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( !defined( 'ABSPATH' ) ) {
4
+ exit();
5
+ }
6
+
7
+ class WPEMS_Admin_Setting_Emails extends WPEMS_Abstract_Setting {
8
+
9
+ /**
10
+ * ID
11
+ * @var type mixed
12
+ */
13
+ public $id = null;
14
+
15
+ /**
16
+ * Title
17
+ * @var type string
18
+ */
19
+ public $label = null;
20
+
21
+ public function __construct() {
22
+ $this->id = 'event_emails';
23
+ $this->label = __( 'Emails', 'wp-events-manager' );
24
+ parent::__construct();
25
+ }
26
+
27
+ /**
28
+ * Get options setting page
29
+ * @return type array
30
+ */
31
+ public function get_settings() {
32
+ $prefix = 'thimpress_events_';
33
+
34
+ $register_event_mail = wpems_get_option( 'email_enable' );
35
+
36
+ return apply_filters( 'event_admin_setting_page_' . $this->id, array(
37
+ array(
38
+ 'type' => 'section_start',
39
+ 'id' => 'email_settings',
40
+ 'title' => __( 'Email Notifications', 'wp-events-manager' ),
41
+ ),
42
+ array(
43
+ 'type' => 'yes_no',
44
+ 'title' => __( 'Event register', 'wp-events-manager' ),
45
+ 'desc' => __( 'Send notify when user register event', 'wp-events-manager' ),
46
+ 'id' => $prefix . 'email_enable',
47
+ 'default' => 'yes'
48
+ ),
49
+ array(
50
+ 'type' => 'text',
51
+ 'title' => __( 'From name', 'wp-events-manager' ),
52
+ 'placeholder' => get_option( 'blogname' ),
53
+ 'id' => $prefix . 'email_from_name',
54
+ 'default' => get_option( 'blog_name' ),
55
+ 'class' => 'email-setting-form-name' . ( $register_event_mail == 'no' ? ' hide-if-js' : '' )
56
+ ),
57
+ array(
58
+ 'type' => 'email',
59
+ 'title' => __( 'Email from', 'wp-events-manager' ),
60
+ 'placeholder' => get_option( 'admin_email' ),
61
+ 'id' => $prefix . 'admin_email',
62
+ 'default' => get_option( 'admin_email' ),
63
+ 'class' => 'email-setting-email-form' . ( $register_event_mail == 'no' ? ' hide-if-js' : '' )
64
+ ),
65
+ array(
66
+ 'type' => 'text',
67
+ 'title' => __( 'Subject', 'wp-events-manager' ),
68
+ 'placeholder' => __( 'Register event', 'wp-events-manager' ),
69
+ 'id' => $prefix . 'email_subject',
70
+ 'default' => '',
71
+ 'class' => 'email-setting-subject' . ( $register_event_mail == 'no' ? ' hide-if-js' : '' )
72
+ ),
73
+ array(
74
+ 'type' => 'checkbox',
75
+ 'title' => __( 'Account register', 'wp-events-manager' ),
76
+ 'desc' => __( 'Send notify when user register account', 'wp-events-manager' ),
77
+ 'id' => $prefix . 'register_notify',
78
+ 'default' => false
79
+ ),
80
+ array(
81
+ 'type' => 'section_end',
82
+ 'id' => 'email_settings'
83
+ )
84
+ ) );
85
+ }
86
+
87
+ }
88
+
89
+ return new WPEMS_Admin_Setting_Emails();
inc/admin/settings/class-wpems-admin-setting-general.php ADDED
@@ -0,0 +1,110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( !defined( 'ABSPATH' ) ) {
4
+ exit();
5
+ }
6
+
7
+ class WPEMS_Admin_Setting_General extends WPEMS_Abstract_Setting {
8
+
9
+ /**
10
+ * ID
11
+ * @var type mixed
12
+ */
13
+ public $id = null;
14
+
15
+ /**
16
+ * Title
17
+ * @var type string
18
+ */
19
+ public $label = null;
20
+
21
+ public function __construct() {
22
+ $this->id = 'event_general';
23
+ $this->label = __( 'General', 'wp-events-manager' );
24
+ parent::__construct();
25
+ }
26
+
27
+ /**
28
+ * Get options setting page
29
+ * @return type array
30
+ */
31
+ public function get_settings() {
32
+ $prefix = 'thimpress_events_';
33
+
34
+ $allow_register_event = wpems_get_option( 'allow_register_event' );
35
+
36
+ return apply_filters( 'event_admin_setting_page_' . $this->id, array(
37
+ // Currency
38
+ array(
39
+ 'type' => 'section_start',
40
+ 'id' => 'auth_currency_settings',
41
+ 'title' => __( 'General Options', 'wp-events-manager' ),
42
+ ),
43
+ array(
44
+ 'type' => 'yes_no',
45
+ 'title' => __( 'Event registration', 'wp-events-manager' ),
46
+ 'desc' => __( 'Allows user register events', 'wp-events-manager' ),
47
+ 'id' => $prefix . 'allow_register_event',
48
+ 'default' => 'yes'
49
+ ),
50
+ array(
51
+ 'type' => 'select',
52
+ 'title' => __( 'Currency', 'wp-events-manager' ),
53
+ 'desc' => __( 'This controls what the currency prices', 'wp-events-manager' ),
54
+ 'id' => $prefix . 'currency',
55
+ 'options' => wpems_currencies(),
56
+ 'default' => 'USD',
57
+ 'class' => 'setting-currency' . ( $allow_register_event == 'no' ? ' hide-if-js' : '' ) . apply_filters( 'tp_event_currency_setting_fields_class', '' )
58
+ ),
59
+ array(
60
+ 'type' => 'select',
61
+ 'title' => __( 'Currency Position', 'wp-events-manager' ),
62
+ 'desc' => __( 'This controls the position of the currency symbol', 'wp-events-manager' ),
63
+ 'id' => $prefix . 'currency_position',
64
+ 'options' => array(
65
+ 'left' => __( 'Left', 'wp-events-manager' ) . ' ' . '(£99.99)',
66
+ 'right' => __( 'Right', 'wp-events-manager' ) . ' ' . '(99.99£)',
67
+ 'left_space' => __( 'Left with space', 'wp-events-manager' ) . ' ' . '(£ 99.99)',
68
+ 'right_space' => __( 'Right with space', 'wp-events-manager' ) . ' ' . '(99.99 £)',
69
+ ),
70
+ 'default' => 'left',
71
+ 'class' => 'setting-currency-position' . ( $allow_register_event == 'no' ? ' hide-if-js' : '' ) . apply_filters( 'tp_event_currency_setting_fields_class', '' )
72
+ ),
73
+ array(
74
+ 'type' => 'text',
75
+ 'title' => __( 'Thousand Separator', 'wp-events-manager' ),
76
+ 'id' => $prefix . 'currency_thousand',
77
+ 'default' => ',',
78
+ 'class' => 'setting-currency-thousand' . ( $allow_register_event == 'no' ? ' hide-if-js' : '' ) . apply_filters( 'tp_event_currency_setting_fields_class', '' )
79
+ ),
80
+ array(
81
+ 'type' => 'text',
82
+ 'title' => __( 'Decimal Separator', 'wp-events-manager' ),
83
+ 'id' => $prefix . 'currency_separator',
84
+ 'default' => '.',
85
+ 'class' => 'setting-currency-separator' . ( $allow_register_event == 'no' ? ' hide-if-js' : '' ) . apply_filters( 'tp_event_currency_setting_fields_class', '' )
86
+ ),
87
+ array(
88
+ 'type' => 'number',
89
+ 'title' => __( 'Number of Decimals', 'wp-events-manager' ),
90
+ 'id' => $prefix . 'currency_num_decimal',
91
+ 'atts' => array( 'step' => 'any' ),
92
+ 'default' => '2',
93
+ 'class' => 'setting-number-decimals' . ( $allow_register_event == 'no' ? ' hide-if-js' : '' ) . apply_filters( 'tp_event_currency_setting_fields_class', '' )
94
+ ),
95
+ array(
96
+ 'type' => 'text',
97
+ 'title' => __( 'Google Map API Key', 'wp-events-manager' ),
98
+ 'id' => $prefix . 'google_map_api_key',
99
+ 'desc' => __( 'Refer on https://developers.google.com/maps/documentation/javascript/get-api-key#get-an-api-key', 'wp-events-manager' ),
100
+ ),
101
+ array(
102
+ 'type' => 'section_end',
103
+ 'id' => 'auth_currency_settings'
104
+ ),
105
+ ) );
106
+ }
107
+
108
+ }
109
+
110
+ return new WPEMS_Admin_Setting_General();
inc/admin/settings/class-wpems-admin-setting-pages.php ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * @author leehld
4
+ */
5
+
6
+ /**
7
+ * Prevent loading this file directly
8
+ */
9
+ defined( 'ABSPATH' ) || exit;
10
+
11
+ class WPEMS_Admin_Setting_Pages extends WPEMS_Abstract_Setting {
12
+
13
+ /**
14
+ * ID
15
+ * @var type mixed
16
+ */
17
+ public $id = null;
18
+
19
+ /**
20
+ * Title
21
+ * @var type string
22
+ */
23
+ public $label = null;
24
+
25
+ public function __construct() {
26
+ $this->id = 'event_pages';
27
+ $this->label = __( 'Pages', 'wp-events-manager' );
28
+ add_action( 'event_admin_setting_update_' . $this->id, array( $this, 'save' ) );
29
+ parent::__construct();
30
+ }
31
+
32
+
33
+ public function save() {
34
+ parent::save();
35
+ }
36
+
37
+ /**
38
+ * Get options setting page
39
+ * @return type array
40
+ */
41
+ public function get_settings() {
42
+ $prefix = 'thimpress_events_';
43
+ return apply_filters( 'event_admin_setting_page_' . $this->id, array(
44
+ array(
45
+ 'type' => 'section_start',
46
+ 'id' => 'pages_settings',
47
+ 'title' => __( 'Pages Settings', 'wp-events-manager' ),
48
+ ),
49
+ array(
50
+ 'type' => 'select_page',
51
+ 'title' => __( 'Register Page', 'wp-events-manager' ),
52
+ 'desc' => __( 'This controls which the register page', 'wp-events-manager' ),
53
+ 'id' => $prefix . 'register_page_id',
54
+ ),
55
+ array(
56
+ 'type' => 'select_page',
57
+ 'title' => __( 'Login Page', 'wp-events-manager' ),
58
+ 'desc' => __( 'This controls which the login page', 'wp-events-manager' ),
59
+ 'id' => $prefix . 'login_page_id',
60
+ ),
61
+ array(
62
+ 'type' => 'select_page',
63
+ 'title' => __( 'Forgot Password', 'wp-events-manager' ),
64
+ 'desc' => __( 'This controls which the forgot password page', 'wp-events-manager' ),
65
+ 'id' => $prefix . 'forgot_password_page_id',
66
+ ),
67
+ array(
68
+ 'type' => 'select_page',
69
+ 'title' => __( 'Reset Password', 'wp-events-manager' ),
70
+ 'desc' => __( 'This controls which the reset password page', 'wp-events-manager' ),
71
+ 'id' => $prefix . 'reset_password_page_id',
72
+ ),
73
+ array(
74
+ 'type' => 'select_page',
75
+ 'title' => __( 'My Account', 'wp-events-manager' ),
76
+ 'desc' => __( 'This controls which the user account page', 'wp-events-manager' ),
77
+ 'id' => $prefix . 'account_page_id',
78
+ ),
79
+ array(
80
+ 'type' => 'section_end',
81
+ 'id' => 'pages_settings'
82
+ )
83
+ ) );
84
+ }
85
+
86
+ }
87
+
88
+ return new WPEMS_Admin_Setting_Pages();
inc/admin/upgrades/upgrade-2.0.8.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) || ! defined( 'WPEMS_INSTALLING' ) || ! WPEMS_INSTALLING ) {
4
+ exit();
5
+ }
6
+
7
+ /**
8
+ * Update event date meta
9
+ */
10
+ $event_args = array(
11
+ 'post_type' => 'tp_event',
12
+ 'posts_per_page' => - 1,
13
+ 'post_status' => 'any'
14
+ );
15
+ $events = new WP_Query( $event_args );
16
+ if ( $events->have_posts() ) {
17
+ while ( $events->have_posts() ) {
18
+ $events->the_post();
19
+
20
+ // update for event date meta
21
+ $start = get_post_meta( get_the_ID(), 'tp_event_date_start', true );
22
+ $end = get_post_meta( get_the_ID(), 'tp_event_date_end', true );
23
+
24
+ if ( $start ) {
25
+ update_post_meta( get_the_ID(), 'tp_event_date_start', date( 'Y-m-d', strtotime( $start ) ) );
26
+ }
27
+ if ( $end ) {
28
+ update_post_meta( get_the_ID(), 'tp_event_date_end', date( 'Y-m-d', strtotime( $end ) ) );
29
+ }
30
+
31
+ }
32
+ wp_reset_query();
33
+ }
inc/admin/upgrades/upgrade-2.0.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( !defined( 'ABSPATH' ) || !defined( 'WPEMS_INSTALLING' ) || !WPEMS_INSTALLING ) {
4
+ exit();
5
+ }
6
+
7
+ /**
8
+ * Update post meta
9
+ */
10
+ $event_args = array(
11
+ 'post_type' => 'tp_event',
12
+ 'posts_per_page' => - 1,
13
+ 'post_status' => 'any'
14
+ );
15
+ $events = new WP_Query( $event_args );
16
+ if ( $events->have_posts() ) {
17
+ while ( $events->have_posts() ) {
18
+ $events->the_post();
19
+
20
+ // update for event auth
21
+ $qty = get_post_meta( get_the_ID(), 'thimpress_event_auth_quantity', true );
22
+ $price = get_post_meta( get_the_ID(), 'thimpress_event_auth_cost', true );
23
+ update_post_meta( get_the_ID(), 'tp_event_qty', absint( $qty ) );
24
+ update_post_meta( get_the_ID(), 'tp_event_price', absint( $price ) );
25
+
26
+ $start = strtotime( get_post_meta( get_the_ID(), 'tp_event_date_start', true ) . ' ' . get_post_meta( get_the_ID(), 'tp_event_time_start', true ) );
27
+ $end = strtotime( get_post_meta( get_the_ID(), 'tp_event_date_end', true ) . ' ' . get_post_meta( get_the_ID(), 'tp_event_time_end', true ) );
28
+ $time = current_time( 'timestamp' );
29
+
30
+
31
+ $status = 'publish';
32
+ if ( $start && $end ) {
33
+ if ( $start > $time ) {
34
+ $status = 'tp-event-upcoming';
35
+ } else if ( $start <= $time && $time < $end ) {
36
+ $status = 'tp-event-happenning';
37
+ } else if ( $time >= $end ) {
38
+ $status = 'tp-event-expired';
39
+ }
40
+ }
41
+ if ( in_array( get_post_status( get_the_ID() ), array( 'tp-event-upcoming', 'tp-event-happenning', 'tp-event-expired' ) ) ) {
42
+ wp_update_post( array( 'ID' => get_the_ID(), 'post_status' => $status ) );
43
+ }
44
+
45
+ }
46
+ wp_reset_query();
47
+ }
inc/admin/views/metaboxes/booking-actions.php ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * @author leehld
4
+ */
5
+
6
+ /**
7
+ * Prevent loading this file directly
8
+ */
9
+ defined( 'ABSPATH' ) || exit;
10
+ ?>
11
+
12
+ <?php global $post; ?>
13
+
14
+ <?php $notes = get_post_meta( $post->ID, 'ea_booking_note', true ); ?>
15
+
16
+ <div id="event-booking-actions" class="booking-actions">
17
+ <label for="booking-status"><?php echo esc_html__( 'Booking Status', 'wp-events-manager' ); ?></label>
18
+ <select name="booking-status" id="booking-status">
19
+ <?php foreach ( wpems_get_payment_status() as $key => $text ) : ?>
20
+ <option value="<?php echo esc_attr( $key ) ?>"<?php echo get_post_status( $post->ID ) === $key ? ' selected' : '' ?>><?php printf( '%s', $text ) ?></option>
21
+ <?php endforeach; ?>
22
+ </select>
23
+ <p class="booking-status-description"><?php echo esc_html__( 'Update booking event status', 'wp-events-manager' ); ?></p>
24
+ </div>
25
+ <div id="event-booking-notes" class="booking-notes">
26
+ <label for="booking-notes"><?php echo esc_html__( 'Booking Notes', 'wp-events-manager' ); ?></label>
27
+ <textarea id="booking-notes" name="booking-notes" rows="3"><?php echo esc_html( $notes ); ?></textarea>
28
+ </div>
inc/admin/views/metaboxes/booking-details.php ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * @author leehld
4
+ */
5
+
6
+ /**
7
+ * Prevent loading this file directly
8
+ */
9
+ defined( 'ABSPATH' ) || exit;
10
+
11
+ global $post;
12
+ $booking = WPEMS_Booking::instance( $post->ID );
13
+ $user = get_userdata( $booking->user_id );
14
+ $prefix = 'tp_event_';
15
+ ?>
16
+
17
+ <?php do_action( 'tp_event_admin_booking_metabox_before_fields', $post, $prefix ); ?>
18
+
19
+ <div id="event-booking-details" class="booking-details">
20
+ <div class="booking-user-data">
21
+ <div class="user-avatar">
22
+ <?php echo get_avatar( $booking->user_id, 120 ); ?>
23
+ </div>
24
+ <div class="order-user-meta">
25
+ <div class="user-display-name">
26
+ <?php echo sprintf( '<a href="%s">%s</a>', admin_url( 'admin.php?page=tp-event-users&user_id=' . $booking->user_id ), $user->data->user_nicename ); ?>
27
+ </div>
28
+ <div class="user-email">
29
+ <?php echo $user->user_email ? $user->user_email : ''; ?>
30
+ </div>
31
+ </div>
32
+ </div>
33
+ <div class="booking-data">
34
+ <h3 class="booking-data-number"><?php echo sprintf( esc_attr__( 'Order %s', 'wp-events-manager' ), wpems_format_ID( $post->ID ) ); ?></h3>
35
+ <div class="booking-date">
36
+ <?php echo sprintf( __( 'Date %s', 'wp-events-manager' ), $post->post_date ); ?>
37
+ </div>
38
+ </div>
39
+
40
+ <h3><?php _e( 'Booking Details', 'wp-events-manager' ); ?></h3>
41
+
42
+ <table class="booking-table">
43
+ <thead>
44
+ <tr>
45
+ <th><?php _e( 'Item', 'wp-events-manager' ); ?></th>
46
+ <th><?php _e( 'Cost', 'wp-events-manager' ); ?></th>
47
+ <th><?php _e( 'Quantity', 'wp-events-manager' ); ?></th>
48
+ <th><?php _e( 'Payment Method', 'wp-events-manager' ) ?></th>
49
+ <th><?php _e( 'Amount', 'wp-events-manager' ); ?></th>
50
+ </tr>
51
+ </thead>
52
+ <tbody>
53
+ <tr data-item_id="<?php echo esc_attr( $booking->event_id ); ?>">
54
+ <?php $event = WPEMS_Event::instance( $booking->event_id ); ?>
55
+ <td><?php echo sprintf( '<a href="%s">%s</a>', get_edit_post_link( $booking->event_id ), get_the_title( $booking->event_id ) ) ?></td>
56
+ <td><?php echo sprintf( '%s', wpems_format_price( floatval( $event->price ) ) ) ?></td>
57
+ <td><?php echo sprintf( '%s', $booking->qty ) ?></td>
58
+ <td><?php echo sprintf( '%s', $booking->payment_id ? wpems_get_payment_title( $booking->payment_id ) : __( 'No payment', 'wp-events-manager' ) ) ?></td>
59
+ <td><?php echo sprintf( '%s', wpems_format_price( floatval( $booking->price ) ) ) ?></td>
60
+ </tr>
61
+ </tbody>
62
+ <tfoot>
63
+ <tr>
64
+ <td width="300" colspan="4"><?php _e( 'Sub Total', 'wp-events-manager' ); ?></td>
65
+ <td width="100"><span class="booking-subtotal"><?php ?></span></td>
66
+ </tr>
67
+ <tr>
68
+ <td colspan="4"><?php _e( 'Total', 'wp-events-manager' ); ?></td>
69
+ <td class="booking-total"><?php echo sprintf( '%s', wpems_format_price( floatval( $booking->price ) ) ) ?></td>
70
+ </tr>
71
+ </tfoot>
72
+ <?php wp_nonce_field( 'event_booking_nonce', 'event-booking-nonce' ); ?>
73
+ </table>
74
+ </div>
75
+
76
+
77
+ <?php do_action( 'tp_event_admin_booking_metabox_after_fields', $post, $prefix ); ?>
inc/admin/views/metaboxes/event-settings.php ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * @author leehld
4
+ */
5
+
6
+ /**
7
+ * Prevent loading this file directly
8
+ */
9
+ defined( 'ABSPATH' ) || exit;
10
+
11
+ global $post;
12
+ $post_id = $post->ID;
13
+ $prefix = 'tp_event_';
14
+ $date_start = get_post_meta( $post->ID, $prefix . 'date_start', true ) ? date( 'Y-m-d', strtotime( get_post_meta( $post->ID, $prefix . 'date_start', true ) ) ) : '';
15
+ $time_start = get_post_meta( $post->ID, $prefix . 'time_start', true ) ? date( 'H:i', strtotime( get_post_meta( $post->ID, $prefix . 'time_start', true ) ) ) : '';
16
+
17
+ $date_end = get_post_meta( $post->ID, $prefix . 'date_end', true ) ? date( 'Y-m-d', strtotime( get_post_meta( $post->ID, $prefix . 'date_end', true ) ) ) : '';
18
+ $time_end = get_post_meta( $post->ID, $prefix . 'time_end', true ) ? date( 'H:i', strtotime( get_post_meta( $post->ID, $prefix . 'time_end', true ) ) ) : '';
19
+
20
+ $qty = get_post_meta( $post_id, $prefix . 'qty', true );
21
+ $price = get_post_meta( $post_id, $prefix . 'price', true );
22
+ $location = get_post_meta( $post_id, $prefix . 'location', true );
23
+ $today = date( "Y-m-d", strtotime( 'today' ) );
24
+ $tomorrow = date( "Y-m-d", strtotime( 'tomorrow' ) );
25
+ ?>
26
+ <div class="event_meta_box_container">
27
+ <div class="event_meta_panel">
28
+ <?php do_action( 'tp_event_admin_event_metabox_before_fields', $post, $prefix ); ?>
29
+ <div class="option_group">
30
+ <p class="form-field">
31
+ <label for="_qty"><?php _e( 'Quantity', 'wp-events-manager' ) ?></label>
32
+ <input type="number" min="0" step="1" class="short" name="<?php echo esc_attr( $prefix ) ?>qty" id="_qty" value="<?php echo esc_attr( absint( $qty ) ) ?>">
33
+ </p>
34
+ </div>
35
+ <div class="option_group">
36
+ <p class="form-field">
37
+ <label for="_price"><?php printf( '%s(%s)', __( 'Price', 'wp-events-manager' ), wpems_get_currency_symbol() ) ?></label>
38
+ <input type="number" step="any" min="0" class="short" name="<?php echo esc_attr( $prefix ) ?>price" id="_price" value="<?php echo esc_attr( floatval( $price ) ) ?>" />
39
+ </p>
40
+ <p class="event-meta-notice">
41
+ <?php echo esc_html__( 'Set 0 to make it becomes free event', 'wp-events-manager' ); ?>
42
+ </p>
43
+ </div>
44
+
45
+ <div class="option_group">
46
+ <div class="form-field" id="event-time-metabox">
47
+ <label><?php echo esc_html__( 'Start/End', 'wp-events-manager' ); ?></label>
48
+ <label hidden for="_date_start"></label>
49
+ <input type="text" class="short date-start" name="<?php echo esc_attr( $prefix ) ?>date_start" id="_date_start"
50
+ value="<?php echo $date_start ? esc_attr( $date_start ) : esc_attr( $today ); ?>">
51
+ <label hidden for="_time_start"></label>
52
+ <input type="text" class="short time-start" name="<?php echo esc_attr( $prefix ) ?>time_start" id="_time_start"
53
+ value="<?php echo $time_start ? esc_attr( $time_start ) : '' ?>">
54
+ <span class="time-connect"> <?php echo esc_html__( 'to', 'wp-events-manager' ); ?></span>
55
+ <label hidden for="_date_end"></label>
56
+ <input type="text" class="short date-end" name="<?php echo esc_attr( $prefix ) ?>date_end" id="_date_end"
57
+ value="<?php echo $date_end ? esc_attr( $date_end ) : esc_attr( $tomorrow ); ?>">
58
+ <label hidden for="_time_end"></label>
59
+ <input type="text" class="short time-end" name="<?php echo esc_attr( $prefix ) ?>time_end" id="_time_end"
60
+ value="<?php echo $time_end ? esc_attr( $time_end ) : '' ?>">
61
+ </div>
62
+ </div>
63
+ <div class="option_group">
64
+ <p class="form-field">
65
+ <label for="_location"><?php _e( 'Location', 'wp-events-manager' ) ?></label>
66
+ <input type="text" class="short" name="<?php echo esc_attr( $prefix ) ?>location" id="_location" value="<?php echo esc_attr( $location ) ?>">
67
+ </p>
68
+ <?php if ( !wpems_get_option( 'google_map_api_key' ) ): ?>
69
+ <p class="event-meta-notice">
70
+ <?php echo esc_html__( 'You need set up Google Map API Key to show map.', 'wp-events-manager' ); ?>
71
+ <a href="<?php echo esc_url( get_admin_url() . '/admin.php?page=tp-event-setting&tab=event_general' ); ?>"><?php echo esc_html__( 'Set up here' ) ?></a>
72
+ </p>
73
+ <?php endif; ?>
74
+ </div>
75
+ <div class="option_group">
76
+ <p class="form-field">
77
+ <label for="_shortcode"><?php _e( 'Shortcode', 'wp-events-manager' ) ?></label>
78
+ <input type="text" class="short" id="_shortcode" value="<?php echo esc_attr( '[wp_event_countdown event_id="' . $post->ID . '"]' ); ?>" readonly>
79
+ </p>
80
+ </div>
81
+ <?php wp_nonce_field( 'event_nonce', 'event-nonce' ); ?>
82
+ <?php do_action( 'tp_event_admin_event_metabox_after_fields', $post, $prefix ); ?>
83
+ </div>
84
+ </div>
inc/admin/views/settings/checkbox.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * @author leehld
4
+ */
5
+
6
+ /**
7
+ * Prevent loading this file directly
8
+ */
9
+ defined( 'ABSPATH' ) || exit;
10
+
11
+ $val = wpems_get_option( $field['id'] );
12
+ ?>
13
+ <tr valign="top" <?php echo $field['class'] ? 'class="' . $field['class'] . '"' : ''; ?>>
14
+ <th scope="row">
15
+ <?php if ( isset( $field['title'] ) ) : ?>
16
+ <label for="<?php echo isset( $field['id'] ) ? esc_attr( $field['id'] ) : '' ?>">
17
+ <?php echo esc_html( $field['title'] ) ?>
18
+ </label>
19
+ <?php endif; ?>
20
+ </th>
21
+ <td class="event-form-field event-form-field-<?php echo esc_attr( $field['type'] ) ?>">
22
+ <input type="hidden" name="<?php echo isset( $field['id'] ) ? esc_attr( $field['id'] ) : '' ?>" value="0" />
23
+ <input type="checkbox" name="<?php echo isset( $field['id'] ) ? esc_attr( $field['id'] ) : '' ?>" value="1"
24
+ <?php echo empty( $val ) ? checked( $field['default'], 1 ) : checked( $val, 1, false ); ?>
25
+ />
26
+
27
+ <?php if ( isset( $field['desc'] ) ) : ?>
28
+ <div class="description"><?php echo esc_html( $field['desc'] ) ?></div>
29
+ <?php endif; ?>
30
+ </td>
31
+ </tr>
inc/admin/views/settings/image-size.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * @author leehld
4
+ */
5
+
6
+ /**
7
+ * Prevent loading this file directly
8
+ */
9
+ defined( 'ABSPATH' ) || exit;
10
+
11
+ $width = wpems_get_option( $field['id'] . '_width', isset( $field['default']['width'] ) ? $field['default']['width'] : 270 );
12
+ $height = wpems_get_option( $field['id'] . '_height', isset( $field['default']['height'] ) ? $field['default']['height'] : 270 );
13
+ ?>
14
+ <tr valign="top" <?php echo $field['class'] ? 'class="' . $field['class'] . '"' : ''; ?>>
15
+ <th scope="row">
16
+ <?php if ( isset( $field['title'] ) ) : ?>
17
+ <label for="<?php echo isset( $field['id'] ) ? esc_attr( $field['id'] ) : '' ?>">
18
+ <?php echo esc_html( $field['title'] ) ?>
19
+ </label>
20
+ <?php endif; ?>
21
+ </th>
22
+ <td class="event-form-field event-form-field-<?php echo esc_attr( $field['type'] ) ?>">
23
+ <?php if ( isset( $field['id'] ) && isset( $field['options'] ) ) : ?>
24
+
25
+ <?php if ( isset( $field['options']['width'] ) ) : ?>
26
+ <input
27
+ type="number"
28
+ name="<?php echo esc_attr( $field['id'] ) ?>_width"
29
+ value="<?php echo esc_attr( $width ) ?>"
30
+ /> x
31
+ <?php endif; ?>
32
+ <?php if ( isset( $field['options']['height'] ) ) : ?>
33
+ <input
34
+ type="number"
35
+ name="<?php echo esc_attr( $field['id'] ) ?>_height"
36
+ value="<?php echo esc_attr( $height ) ?>"
37
+ /> px
38
+ <?php endif; ?>
39
+
40
+ <?php if ( isset( $field['desc'] ) ) : ?>
41
+ <div class="description"><?php echo esc_html( $field['desc'] ) ?></div>
42
+ <?php endif; ?>
43
+ <?php endif; ?>
44
+ </td>
45
+ </tr>
inc/admin/views/settings/radio.php ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * @author leehld
4
+ */
5
+
6
+ /**
7
+ * Prevent loading this file directly
8
+ */
9
+ defined( 'ABSPATH' ) || exit;
10
+
11
+ $selected = wpems_get_option( $field['id'], isset( $field['default'] ) ? $field['default'] : '' );
12
+ ?>
13
+ <tr valign="top" <?php echo $field['class'] ? 'class="' . $field['class'] . '"' : ''; ?>>
14
+ <th scope="row">
15
+ <?php if ( isset( $field['title'] ) ) : ?>
16
+ <label for="<?php echo isset( $field['id'] ) ? esc_attr( $field['id'] ) : '' ?>">
17
+ <?php echo esc_html( $field['title'] ) ?>
18
+ </label>
19
+ <?php endif; ?>
20
+ </th>
21
+ <td class="event-form-field event-form-field-<?php echo esc_attr( $field['type'] ) ?>">
22
+ <?php if ( isset( $field['options'] ) ) : ?>
23
+ <?php foreach ( $field['options'] as $val => $text ) : ?>
24
+
25
+ <label>
26
+ <input type="radio" name="<?php echo isset( $field['id'] ) ? esc_attr( $field['id'] ) : '' ?>"<?php selected( $selected, $val ); ?>/>
27
+ <?php echo esc_html( $text ) ?>
28
+ </label>
29
+
30
+ <?php endforeach; ?>
31
+
32
+ <?php if ( isset( $field['desc'] ) ) : ?>
33
+ <div class="description"><?php echo esc_html( $field['desc'] ) ?></div>
34
+ <?php endif; ?>
35
+ <?php endif; ?>
36
+ </td>
37
+ </tr>
inc/admin/views/settings/section-end.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * @author leehld
4
+ */
5
+
6
+ /**
7
+ * Prevent loading this file directly
8
+ */
9
+ defined( 'ABSPATH' ) || exit;
10
+
11
+ echo '</table>';
12
+ do_action( 'tp_event_after_' . $field['id'] . '_after' );
inc/admin/views/settings/section-start.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * @author leehld
4
+ */
5
+
6
+ /**
7
+ * Prevent loading this file directly
8
+ */
9
+ defined( 'ABSPATH' ) || exit;
10
+
11
+ if ( isset( $field['title'] ) ) {
12
+ echo '<h3>' . esc_html( $field['title'] ) . '</h3>';
13
+ if ( isset( $field['desc'] ) ) {
14
+ echo '<span class="description">' . esc_html( $field['desc'] ) . '</span>';
15
+ }
16
+ do_action( 'tp_event_before_' . $field['id'] . '_fields' );
17
+ echo '<table class="form-table">';
18
+ }
inc/admin/views/settings/select-page.php ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * @author leehld
4
+ */
5
+
6
+ /**
7
+ * Prevent loading this file directly
8
+ */
9
+ defined( 'ABSPATH' ) || exit;
10
+
11
+ $selected = wpems_get_option( $field['id'], 0 );
12
+ ?>
13
+ <tr valign="top" <?php echo $field['class'] ? 'class="' . $field['class'] . '"' : ''; ?>>
14
+ <th scope="row">
15
+ <?php if ( isset( $field['title'] ) ) : ?>
16
+ <label for="<?php echo isset( $field['id'] ) ? esc_attr( $field['id'] ) : '' ?>">
17
+ <?php echo esc_html( $field['title'] ) ?>
18
+ </label>
19
+ <?php endif; ?>
20
+ </th>
21
+ <td class="event-form-field event-form-field-<?php echo esc_attr( $field['type'] ) ?>">
22
+ <?php if ( isset( $field['id'] ) ) : ?>
23
+ <?php wp_dropdown_pages(
24
+ array(
25
+ 'show_option_none' => __( 'Select Page', 'wp-events-manager' ),
26
+ 'option_none_value' => 0,
27
+ 'name' => $field['id'],
28
+ 'selected' => $selected
29
+ )
30
+ ); ?>
31
+
32
+ <?php if ( isset( $field['desc'] ) ) : ?>
33
+ <div class="description"><?php echo esc_html( $field['desc'] ) ?></div>
34
+ <?php endif; ?>
35
+ <?php endif; ?>
36
+ </td>
37
+ </tr>
inc/admin/views/settings/select.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * @author leehld
4
+ */
5
+
6
+ /**
7
+ * Prevent loading this file directly
8
+ */
9
+ defined( 'ABSPATH' ) || exit;
10
+
11
+ $selected = wpems_get_option( $field['id'], isset( $field['default'] ) ? $field['default'] : array() );
12
+ ?>
13
+ <tr valign="top" <?php echo $field['class'] ? 'class="' . $field['class'] . '"' : ''; ?>>
14
+ <th scope="row">
15
+ <?php if ( isset( $field['title'] ) ) : ?>
16
+ <label for="<?php echo isset( $field['id'] ) ? esc_attr( $field['id'] ) : '' ?>">
17
+ <?php echo esc_html( $field['title'] ) ?>
18
+ </label>
19
+ <?php endif; ?>
20
+ </th>
21
+ <td class="event-form-field event-form-field-<?php echo esc_attr( $field['type'] ) ?>">
22
+ <?php if ( isset( $field['options'] ) ) : ?>
23
+ <select name="<?php echo isset( $field['id'] ) ? esc_attr( $field['id'] ) : '' ?><?php echo $field['type'] === 'multiselect' ? '[]' : '' ?>"
24
+ id="<?php echo isset( $field['id'] ) ? esc_attr( $field['id'] ) : '' ?>"
25
+ <?php echo ( $field['type'] === 'multiple' ) ? 'multiple="multiple"' : '' ?>
26
+ >
27
+ <?php foreach ( $field['options'] as $val => $text ) : ?>
28
+ <option value="<?php echo esc_attr( $val ) ?>"
29
+ <?php echo ( is_array( $selected ) && in_array( $val, $selected ) ) || $selected === $val ? ' selected' : '' ?>
30
+ >
31
+ <?php echo esc_html( $text ) ?>
32
+ </option>
33
+ <?php endforeach; ?>
34
+ </select>
35
+ <?php if ( isset( $field['desc'] ) ) : ?>
36
+ <div class="description"><?php echo esc_html( $field['desc'] ) ?></div>
37
+ <?php endif; ?>
38
+ <?php endif; ?>
39
+ </td>
40
+ </tr>
inc/admin/views/settings/text.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * @author leehld
4
+ */
5
+
6
+ /**
7
+ * Prevent loading this file directly
8
+ */
9
+ defined( 'ABSPATH' ) || exit;
10
+
11
+ $value = wpems_get_option( $field['id'] ) ? wpems_get_option( $field['id'] ) : esc_attr( $field['default'] );
12
+ ?>
13
+ <tr valign="top" <?php echo $field['class'] ? 'class="' . $field['class'] . '"' : ''; ?>>
14
+ <th scope="row">
15
+ <?php if ( isset( $field['title'] ) ) : ?>
16
+ <label for="<?php echo isset( $field['id'] ) ? esc_attr( $field['id'] ) : '' ?>">
17
+ <?php echo esc_html( $field['title'] ) ?>
18
+ </label>
19
+ <?php endif; ?>
20
+ </th>
21
+ <td class="event-form-field event-form-field-<?php echo esc_attr( $field['type'] ) ?>">
22
+ <input
23
+ type="<?php echo esc_attr( $field['type'] ) ?>"
24
+ name="<?php echo esc_attr( $field['id'] ) ?>"
25
+ value="<?php echo esc_attr( $value ) ?>"
26
+ class="regular-text"
27
+ placeholder="<?php echo esc_attr( $field['placeholder'] ) ?>"
28
+ <?php if ( $field['type'] === 'number' ) : ?>
29
+
30
+ <?php echo isset( $field['min'] ) && is_numeric( $field['min'] ) ? ' min="' . esc_attr( $field['min'] ) . '"' : '' ?>
31
+ <?php echo isset( $field['max'] ) && is_numeric( $field['max'] ) ? ' max="' . esc_attr( $field['max'] ) . '"' : '' ?>
32
+ <?php echo isset( $field['step'] ) ? ' step="' . esc_attr( $field['step'] ) . '"' : '' ?>
33
+
34
+ <?php endif; ?>
35
+ />
36
+ <?php if ( isset( $field['desc'] ) ) : ?>
37
+ <div class="description"><?php echo esc_html( $field['desc'] ) ?></div>
38
+ <?php endif; ?>
39
+ </td>
40
+ </tr>
inc/admin/views/settings/textarea.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * @author leehld
4
+ */
5
+
6
+ /**
7
+ * Prevent loading this file directly
8
+ */
9
+ defined( 'ABSPATH' ) || exit;
10
+
11
+ $content = wpems_get_option( $field['id'] );
12
+ ?>
13
+ <tr valign="top" <?php echo $field['class'] ? 'class="' . $field['class'] . '"' : ''; ?>>
14
+ <th scope="row">
15
+ <?php if ( isset( $field['title'] ) ) : ?>
16
+ <label for="<?php echo isset( $field['id'] ) ? esc_attr( $field['id'] ) : '' ?>">
17
+ <?php echo esc_html( $field['title'] ) ?>
18
+ </label>
19
+ <?php endif; ?>
20
+ </th>
21
+ <td class="event-form-field event-form-field-<?php echo esc_attr( $field['type'] ) ?>">
22
+ <?php if ( isset( $field['id'] ) ) : ?>
23
+ <?php wp_editor( $content, $field['id'], isset( $field['options'] ) ? $field['options'] : array() ); ?>
24
+
25
+ <?php if ( isset( $field['desc'] ) ) : ?>
26
+ <div class="description"><?php echo esc_html( $field['desc'] ) ?></div>
27
+ <?php endif; ?>
28
+ <?php endif; ?>
29
+ </td>
30
+ </tr>
inc/admin/views/settings/yes-no.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * @author leehld
4
+ */
5
+
6
+ /**
7
+ * Prevent loading this file directly
8
+ */
9
+ defined( 'ABSPATH' ) || exit;
10
+
11
+ $val = wpems_get_option( $field['id'] );
12
+ ?>
13
+ <tr valign="top" <?php echo $field['class'] ? 'class="' . $field['class'] . '"' : ''; ?>>
14
+ <th scope="row">
15
+ <?php if ( isset( $field['title'] ) ) : ?>
16
+ <label for="<?php echo isset( $field['id'] ) ? esc_attr( $field['id'] ) : '' ?>">
17
+ <?php echo esc_html( $field['title'] ) ?>
18
+ </label>
19
+ <?php endif; ?>
20
+ </th>
21
+ <td class="event-form-field event-form-field-<?php echo esc_attr( $field['type'] ) ?>">
22
+ <input type="hidden" name="<?php echo isset( $field['id'] ) ? esc_attr( $field['id'] ) : '' ?>" value="no" />
23
+ <input type="checkbox" name="<?php echo isset( $field['id'] ) ? esc_attr( $field['id'] ) : '' ?>" value="yes"
24
+ <?php echo empty( $val ) ? checked( $field['default'], 'yes' ) : checked( $val, 'yes', false ); ?>
25
+ />
26
+
27
+ <?php if ( isset( $field['desc'] ) ) : ?>
28
+ <div class="description"><?php echo esc_html( $field['desc'] ) ?></div>
29
+ <?php endif; ?>
30
+ </td>
31
+ </tr>
inc/class-wpems-ajax.php ADDED
@@ -0,0 +1,218 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( !defined( 'ABSPATH' ) ) {
4
+ exit;
5
+ }
6
+
7
+ /**
8
+ * Ajax Process
9
+ */
10
+ class WPEMS_Ajax {
11
+
12
+ public function __construct() {
13
+ // actions with
14
+ // key is action ajax: wp_ajax_{action}
15
+ // value is allow ajax nopriv: wp_ajax_nopriv_{action}
16
+ $actions = array(
17
+ 'event_remove_notice' => true,
18
+ 'event_auth_register' => false,
19
+ 'event_login_action' => true,
20
+ 'load_form_register' => true
21
+ );
22
+
23
+ foreach ( $actions as $action => $nopriv ) {
24
+ add_action( 'wp_ajax_' . $action, array( $this, $action ) );
25
+ if ( $nopriv ) {
26
+ add_action( 'wp_ajax_nopriv_' . $action, array( $this, $action ) );
27
+ } else {
28
+ add_action( 'wp_ajax_nopriv_' . $action, array( $this, 'must_login' ) );
29
+ }
30
+ }
31
+ }
32
+
33
+ /**
34
+ * Remove admin notice
35
+ */
36
+ public function event_remove_notice() {
37
+
38
+ if ( is_multisite() ) {
39
+ update_site_option( 'thimpress_events_show_remove_event_auth_notice', 1 );
40
+ } else {
41
+ update_option( 'thimpress_events_show_remove_event_auth_notice', 1 );
42
+ }
43
+ wp_send_json( array(
44
+ 'status' => true,
45
+ 'message' => __( 'Remove admin notice successful', 'wp-events-manager' )
46
+ ) );
47
+ }
48
+
49
+
50
+ /**
51
+ * load form register
52
+ * @return html login form if user not logged in || @return html register event form
53
+ */
54
+ public function load_form_register() {
55
+ if ( empty( $_POST['nonce'] ) || !wp_verify_nonce( $_POST['nonce'], 'event-auth-register-nonce' ) ) {
56
+ return;
57
+ }
58
+
59
+ $event_id = !empty( $_POST['event_id'] ) ? absint( $_POST['event_id'] ) : 0;
60
+
61
+ if ( !$event_id ) {
62
+ wpems_add_notice( 'error', __( 'Event not found.', 'wp-events-manager' ) );
63
+ wpems_print_notices();
64
+ die();
65
+ } else if ( !is_user_logged_in() ) {
66
+ wpems_print_notices( 'error', __( 'You must login before register ', 'wp-events-manager' ) . sprintf( ' <strong>%s</strong>', get_the_title( $event_id ) ) );
67
+ die();
68
+ } else {
69
+ $event = new WPEMS_Event( $event_id );
70
+ $registered_time = $event->booked_quantity( get_current_user_id() );
71
+ ob_start();
72
+ if ( get_post_status( $event_id ) === 'tp-event-expired' ) {
73
+ wpems_print_notices( 'error', sprintf( '%s %s', get_the_title( $event_id ), __( 'has been expired', 'wp-events-manager' ) ) );
74
+ } else if ( $registered_time && wpems_get_option( 'email_register_times' ) === 'once' && $event->is_free() ) {
75
+ wpems_print_notices( 'error', __( 'You have registered this event before', 'wp-events-manager' ) );
76
+ } else if ( !$event->get_slot_available() ) {
77
+ wpems_print_notices( 'error', __( 'The event is full, the registration is closed', 'wp-events-manager' ) );
78
+ } else {
79
+ wpems_get_template( 'loop/booking-form.php', array( 'event_id' => $event_id ) );
80
+ }
81
+ echo ob_get_clean();
82
+ die();
83
+ }
84
+ }
85
+
86
+ /**
87
+ * Login Ajax
88
+ */
89
+ public function event_login_action() {
90
+ WPEMS_User_Process::process_login();
91
+ die();
92
+ }
93
+
94
+ // register event
95
+ public function event_auth_register() {
96
+ try {
97
+ // sanitize, validate data
98
+ if ( $_SERVER['REQUEST_METHOD'] !== 'POST' ) {
99
+ throw new Exception( __( 'Invalid request', 'wp-events-manager' ) );
100
+ }
101
+
102
+ if ( !isset( $_POST['action'] ) || !check_ajax_referer( 'event_auth_register_nonce', 'event_auth_register_nonce' ) ) {
103
+ throw new Exception( __( 'Invalid request', 'wp-events-manager' ) );
104
+ }
105
+
106
+ $event_id = false;
107
+ if ( !isset( $_POST['event_id'] ) || !is_numeric( $_POST['event_id'] ) ) {
108
+ throw new Exception( __( 'Invalid event request', 'wp-events-manager' ) );
109
+ } else {
110
+ $event_id = absint( sanitize_text_field( $_POST['event_id'] ) );
111
+ }
112
+
113
+ $qty = 0;
114
+ if ( !isset( $_POST['qty'] ) || !is_numeric( $_POST['qty'] ) ) {
115
+ throw new Exception( __( 'Quantity must integer', 'wp-events-manager' ) );
116
+ } else {
117
+ $qty = absint( sanitize_text_field( $_POST['qty'] ) );
118
+ }
119
+
120
+ // End sanitize, validate data
121
+ // load booking module
122
+ $booking = WPEMS_Booking::instance();
123
+ $event = WPEMS_Event::instance( $event_id );
124
+
125
+ $user = wp_get_current_user();
126
+ $registered = $event->booked_quantity( $user->ID );
127
+
128
+ if ( $event->is_free() && $registered != 0 && wpems_get_option( 'email_register_times', 'once' ) === 'once' ) {
129
+ throw new Exception( __( 'You are registered this event.', 'wp-events-manager' ) );
130
+ }
131
+
132
+ $payment_methods = wpems_payment_gateways();
133
+
134
+ $payment = isset( $_POST['payment_method'] ) ? sanitize_text_field( $_POST['payment_method'] ) : false;
135
+
136
+ // create new book return $booking_id if success and WP Error if fail
137
+ $args = apply_filters( 'tp_event_create_booking_args', array(
138
+ 'event_id' => $event_id,
139
+ 'qty' => $qty,
140
+ 'price' => (float) $event->get_price() * $qty,
141
+ 'payment_id' => $payment,
142
+ 'currency' => wpems_get_currency()
143
+ ) );
144
+
145
+ $payment = !empty( $payment_methods[$payment] ) ? $payment_methods[$payment] : false;
146
+
147
+ $return = array();
148
+
149
+ if ( $args['price'] > 0 && $payment && !$payment->is_available() ) {
150
+ throw new Exception( sprintf( '%s %s', get_title(), __( 'is not ready. Please contact administrator to setup payment gateways', 'wp-events-manager' ) ) );
151
+ }
152
+
153
+ if ( $payment->id == 'woo_payment' ) {
154
+
155
+ do_action( 'tp_event_register_event_action', $args );
156
+ $return = $payment->process( $event_id );
157
+ wp_send_json( $return );
158
+
159
+ } else {
160
+
161
+ $booking_id = $booking->create_booking( $args, $args['payment_id'] );
162
+ // create booking result
163
+ if ( is_wp_error( $booking_id ) ) {
164
+ throw new Exception( $booking_id->get_error_message() );
165
+ } else {
166
+ if ( $args['price'] == 0 ) {
167
+ // update booking status
168
+ $book = WPEMS_Booking::instance( $booking_id );
169
+ $book->update_status( 'pending' );
170
+
171
+ // user booking
172
+ $user = get_userdata( $book->user_id );
173
+ wpems_add_notice( 'success', sprintf( __( 'Book ID <strong>%s</strong> completed! We\'ll send mail to <strong>%s</strong> when it is approve.', 'wp-events-manager' ), wpems_format_ID( $booking_id ), $user->user_email ) );
174
+ wp_send_json( apply_filters( 'event_auth_register_ajax_result', array(
175
+ 'status' => true,
176
+ 'url' => wpems_account_url()
177
+ ) ) );
178
+ } else if ( $payment ) {
179
+
180
+ $return = $payment->process( $booking_id );
181
+ if ( isset( $return['status'] ) && $return['status'] === false ) {
182
+ wp_delete_post( $booking_id );
183
+ }
184
+ wp_send_json( $return );
185
+ } else {
186
+ wp_send_json( array(
187
+ 'status' => false,
188
+ 'message' => __( 'Payment method is not available', 'wp-events-manager' )
189
+ ) );
190
+ }
191
+ }
192
+ }
193
+
194
+ } catch ( Exception $e ) {
195
+ if ( $e ) {
196
+ wpems_add_notice( 'error', $e->getMessage() );
197
+ }
198
+ }
199
+ wpems_print_notices();
200
+ $message = ob_get_clean();
201
+ // allow hook
202
+ wp_send_json( array(
203
+ 'status' => false,
204
+ 'message' => $message
205
+ ) );
206
+ die();
207
+ }
208
+
209
+ // ajax nopriv: user is not signin
210
+ public function must_login() {
211
+ wp_send_json( array( 'status' => false, 'message' => sprintf( __( 'You Must <a href="%s">Login</a>', 'wp-events-manager' ), tp_event_login_url() ) ) );
212
+ die();
213
+ }
214
+
215
+ }
216
+
217
+ // initialize ajax class process
218
+ new WPEMS_Ajax();
inc/class-wpems-assets.php ADDED
@@ -0,0 +1,149 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ defined( 'ABSPATH' ) || exit();
4
+
5
+ /**
6
+ * DN_Assets class
7
+ */
8
+ class WPEMS_Assets {
9
+
10
+ /**
11
+ * styles
12
+ * @var type array
13
+ */
14
+ public static $_styles = array();
15
+
16
+ /**
17
+ * scripts
18
+ * @var type array
19
+ */
20
+ public static $_scripts = array();
21
+
22
+ /**
23
+ * localize
24
+ * @var type array
25
+ */
26
+ public static $_localize_scripts = array();
27
+
28
+ public static function init() {
29
+ add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_scripts' ) );
30
+ add_action( 'wp_enqueue_scripts', array( __CLASS__, 'enqueue_scripts' ) );
31
+ }
32
+
33
+ /**
34
+ * register script
35
+ */
36
+ public static function register_script( $handle = '', $src = '', $deps = array(), $ver = false, $in_footer = true ) {
37
+ self::$_scripts[$handle] = array( $handle, self::_get_file_uri( $src ), $deps, $ver, $in_footer );
38
+ }
39
+
40
+ /**
41
+ * register style
42
+ */
43
+ public static function register_style( $handle, $src, $deps = array(), $ver = false, $media = 'all' ) {
44
+ self::$_styles[$handle] = array( $handle, self::_get_file_uri( $src ), $deps, $ver, $media );
45
+ }
46
+
47
+ /**
48
+ * localize_script scripts
49
+ *
50
+ * @param type $handle
51
+ * @param type $name
52
+ * @param type $data
53
+ */
54
+ public static function localize_script( $handle, $name, $data ) {
55
+ self::$_localize_scripts[$handle] = array( $handle, $name, $data );
56
+ }
57
+
58
+ /**
59
+ * frontend enqueue scripts
60
+ */
61
+ public static function enqueue_scripts( $hook ) {
62
+ /**
63
+ * Before enqueue scripts
64
+ */
65
+ do_action( 'tp_event_before_enqueue_scripts', $hook );
66
+
67
+ wp_enqueue_script( 'jquery' );
68
+ // wp_dequeue_script( 'jquery-ui-datepicker' );
69
+ wp_enqueue_script( 'jquery-ui-core' );
70
+ wp_enqueue_script( 'wp-util' );
71
+ wp_enqueue_script( 'backbone' );
72
+ wp_enqueue_script( 'underscore' );
73
+
74
+ if ( self::$_scripts ) {
75
+ foreach ( self::$_scripts as $handle => $param ) {
76
+ call_user_func_array( 'wp_register_script', $param );
77
+ if ( array_key_exists( $handle, self::$_localize_scripts ) ) {
78
+ call_user_func_array( 'wp_localize_script', self::$_localize_scripts[$handle] );
79
+ }
80
+ wp_enqueue_script( $handle );
81
+ }
82
+ }
83
+
84
+ if ( self::$_styles ) {
85
+ foreach ( self::$_styles as $handle => $param ) {
86
+ call_user_func_array( 'wp_register_style', $param );
87
+ wp_enqueue_style( $handle );
88
+ }
89
+ }
90
+
91
+ /**
92
+ * After enqueue scripts
93
+ */
94
+ do_action( 'tp_event_after_enqueue_scripts', $hook );
95
+ }
96
+
97
+ /**
98
+ * Get file uri.
99
+ * if WP_DEBUG is FALSE will load minify file
100
+ */
101
+ public static function _get_file_uri( $uri = '' ) {
102
+ if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
103
+ return $uri;
104
+ }
105
+ $file = self::_get_path_by_uri( $uri );
106
+ $file_name = basename( $file );
107
+ $parse = explode( '.', $file_name );
108
+ /**
109
+ * file's extension '.js' or '.css'
110
+ */
111
+ $file_type = end( $parse );
112
+ if ( in_array( 'min', $parse ) ) {
113
+ return $uri;
114
+ }
115
+
116
+ array_pop( $parse );
117
+ $parse[] = 'min';
118
+ $parse[] = $file_type;
119
+ $new_file = implode( '.', $parse );
120
+
121
+ $new_uri = str_replace( $file_name, $new_file, $uri );
122
+ $new_path = self::_get_path_by_uri( $new_uri );
123
+ if ( file_exists( $new_path ) ) {
124
+ return $new_uri;
125
+ }
126
+ return $uri;
127
+ }
128
+
129
+ /**
130
+ * get file path by uri
131
+ *
132
+ * @param type $uri
133
+ */
134
+ public static function _get_path_by_uri( $uri = '' ) {
135
+ $base_url = trailingslashit( WPEMS_URI );
136
+ $path = trailingslashit( WPEMS_PATH );
137
+
138
+ /**
139
+ * file path
140
+ */
141
+ return str_replace( $base_url, $path, $uri );
142
+ }
143
+
144
+ }
145
+
146
+ /**
147
+ * init
148
+ */
149
+ WPEMS_Assets::init();
inc/class-wpems-autoloader.php ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( !defined( 'ABSPATH' ) ) {
4
+ exit;
5
+ }
6
+
7
+ class WPEMS_Autoloader {
8
+
9
+ /**
10
+ * Path to the includes directory
11
+ * @var string
12
+ */
13
+ private $include_path = '';
14
+
15
+ /**
16
+ * The Constructor
17
+ */
18
+ public function __construct() {
19
+ if ( function_exists( "__autoload" ) ) {
20
+ spl_autoload_register( "__autoload" );
21
+ }
22
+
23
+ spl_autoload_register( array( $this, 'autoload' ) );
24
+
25
+ $this->include_path = untrailingslashit( WPEMS_PATH ) . '/inc/';
26
+ }
27
+
28
+ /**
29
+ * Take a class name and turn it into a file name
30
+ *
31
+ * @param string $class
32
+ *
33
+ * @return string
34
+ */
35
+ private function get_file_name_from_class( $class ) {
36
+ return 'class-' . str_replace( array( 'tp_', '_' ), array( '', '-' ), $class ) . '.php';
37
+ }
38
+
39
+ /**
40
+ * Include a class file
41
+ *
42
+ * @param string $path
43
+ *
44
+ * @return bool successful or not
45
+ */
46
+ private function load_file( $path ) {
47
+ if ( $path && is_readable( $path ) ) {
48
+ include_once( $path );
49
+ return true;
50
+ }
51
+ return false;
52
+ }
53
+
54
+ /**
55
+ * Auto-load WPEMS classes on demand to reduce memory consumption.
56
+ *
57
+ * @param string $class
58
+ */
59
+ public function autoload( $class ) {
60
+ $class = strtolower( $class );
61
+ $file = $this->get_file_name_from_class( $class );
62
+
63
+ $path = $this->include_path;
64
+
65
+ // payment gateways
66
+ if ( strpos( $class, 'wpems_payment_gateway_' ) === 0 ) {
67
+ $path = $this->include_path . 'gateways/' . substr( str_replace( '_', '-', $class ), strlen( 'wpems_payment_gateway_' ) ) . '/';
68
+ }
69
+ // abstract class
70
+ if ( strpos( $class, 'wpems_abstract_' ) === 0 ) {
71
+ $path = $this->include_path . 'abstracts/';
72
+ }
73
+
74
+ // admin metaboxs
75
+ if ( strpos( $class, 'wpems_admin_metabox_' ) === 0 ) {
76
+ $path = $this->include_path . 'admin/metaboxes/';
77
+ }
78
+
79
+ // widgets
80
+ if ( stripos( $class, 'wpems_widget_' ) === 0 ) {
81
+ $path = $this->include_path . '/widgets/';
82
+ }
83
+
84
+ $this->load_file( $path . $file );
85
+ }
86
+ }
87
+
88
+ new WPEMS_Autoloader();
inc/class-wpems-booking.php ADDED
@@ -0,0 +1,122 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( !defined( 'ABSPATH' ) ) {
4
+ exit;
5
+ }
6
+
7
+ /**
8
+ * WPEMS_Booking
9
+ */
10
+ class WPEMS_Booking {
11
+
12
+ private static $instance = null;
13
+ public $post = null;
14
+ public $ID = null;
15
+
16
+ public function __construct( $id = null ) {
17
+
18
+ if ( is_numeric( $id ) && get_post_type( $id ) === 'event_auth_book' ) {
19
+ $this->post = get_post( $id );
20
+ } else if ( $id instanceof WP_Post || is_object( $id ) ) {
21
+ $this->post = $id;
22
+ }
23
+
24
+ if ( $this->post ) {
25
+ $this->ID = $this->post->ID;
26
+ }
27
+
28
+ }
29
+
30
+ /**
31
+ * Megic method
32
+ *
33
+ * @param type $key
34
+ *
35
+ * @return mixed
36
+ */
37
+ public function __get( $key = null ) {
38
+
39
+ switch ( $key ) {
40
+
41
+ default:
42
+ $result = get_post_meta( $this->ID, 'ea_booking_' . $key, true );
43
+ break;
44
+ }
45
+
46
+ return $result;
47
+ }
48
+
49
+ // create booking
50
+ public function create_booking( $args = array(), $payment ) {
51
+
52
+ // current user
53
+ $user = wp_get_current_user();
54
+ // merge argument
55
+ $args = wp_parse_args( $args, array(
56
+ 'user_id' => $user->ID,
57
+ 'event_id' => 0,
58
+ 'qty' => 1,
59
+ 'cost' => 0,
60
+ 'payment_id' => false
61
+ ) );
62
+ $booking_id = wp_insert_post( array(
63
+ 'post_title' => sprintf( __( '%s booking event %s', 'wp-events-manager' ), $user->user_nicename, $args['event_id'] ),
64
+ 'post_content' => sprintf( __( '%s booking event %s with %s slot', 'wp-events-manager' ), $user->user_nicename, $args['event_id'], $args['qty'] ),
65
+ 'post_exceprt' => sprintf( __( '%s booking event %s with %s slot', 'wp-events-manager' ), $user->user_nicename, $args['event_id'], $args['qty'] ),
66
+ 'post_status' => 'ea-pending',
67
+ 'post_type' => 'event_auth_book'
68
+ ) );
69
+
70
+ if ( is_wp_error( $booking_id ) ) {
71
+ return $booking_id;
72
+ } else {
73
+ foreach ( $args as $key => $val ) {
74
+ update_post_meta( $booking_id, 'ea_booking_' . $key, $val );
75
+ }
76
+
77
+ do_action( 'tp_event_create_new_booking', $booking_id, $args );
78
+ return $booking_id;
79
+ }
80
+ }
81
+
82
+ // update status
83
+ public function update_status( $status = 'ea-completed' ) {
84
+ if ( !$this->post || $this->post->post_type !== 'event_auth_book' ) {
85
+ return;
86
+ }
87
+ if ( !$this->post || !$this->ID ) {
88
+ throw new Exception( sprintf( __( 'Booking ID #%s is not exists.', 'wp-events-manager' ), $this->ID ) );
89
+ }
90
+ $old_status = get_post_status( $this->ID );
91
+
92
+ if ( strpos( $status, 'ea-' ) === false ) {
93
+ $status = 'ea-' . $status;
94
+ }
95
+
96
+ $id = wp_update_post( array( 'ID' => $this->ID, 'post_status' => $status ) );
97
+
98
+ if ( $id && !is_wp_error( $id ) ) {
99
+ // send email or anythings
100
+ do_action( 'tp_event_updated_status', $id, $old_status, $status );
101
+
102
+ do_action( 'tp_event_updated_status_' . $old_status . '_' . $status, $id, $old_status, $status );
103
+ }
104
+ }
105
+
106
+ public static function instance( $id = null ) {
107
+ $booking_id = null;
108
+ if ( is_numeric( $id ) && get_post_type( $id ) === 'event_auth_book' ) {
109
+ $post = get_post( $id );
110
+ $booking_id = $post->ID;
111
+ } else if ( $id instanceof WP_Post || is_object( $id ) ) {
112
+ $booking_id = $id->ID;
113
+ }
114
+
115
+ if ( !empty( self::$instance[$booking_id] ) ) {
116
+ return self::$instance[$booking_id];
117
+ }
118
+
119
+ return self::$instance[$booking_id] = new self( $booking_id );
120
+ }
121
+
122
+ }
inc/class-wpems-event.php ADDED
@@ -0,0 +1,178 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( !defined( 'ABSPATH' ) ) {
4
+ exit;
5
+ }
6
+
7
+ class WPEMS_Event {
8
+
9
+ public $post = null;
10
+ public $ID = null;
11
+ static $instance = null;
12
+
13
+ public function __construct( $id = null ) {
14
+ if ( is_numeric( $id ) && $id && get_post_type( $id ) === 'tp_event' ) {
15
+ $this->post = get_post( $id );
16
+ } else if ( $id instanceof WP_Post || is_object( $id ) ) {
17
+ $this->post = $id;
18
+ }
19
+
20
+ if ( $this->post ) {
21
+ $this->ID = $this->post->ID;
22
+ }
23
+ }
24
+
25
+ /**
26
+ * Magic method
27
+ *
28
+ * @param type $key
29
+ *
30
+ * @return mixed
31
+ */
32
+ public function __get( $key = null ) {
33
+ $result = null;
34
+ switch ( $key ) {
35
+ default:
36
+ $result = get_post_meta( $this->ID, 'tp_event_' . $key, true );
37
+ break;
38
+ }
39
+ return $result;
40
+ }
41
+
42
+ /**
43
+ * get event title
44
+ * @return string
45
+ */
46
+ public function get_title() {
47
+ return get_the_title( $this->ID );
48
+ }
49
+
50
+ /**
51
+ * is free
52
+ * @return type boolean
53
+ */
54
+ public function is_free() {
55
+ return ( !$this->get_price() ) ? true : false;
56
+ }
57
+
58
+ /**
59
+ * get price
60
+ * @return type float
61
+ */
62
+ public function get_price() {
63
+ return floatval( $this->price );
64
+ }
65
+
66
+ /**
67
+ * registered
68
+ * @global type $wpdb
69
+ * @return array
70
+ */
71
+ public function load_registered() {
72
+ global $wpdb;
73
+ $query = $wpdb->prepare( "
74
+ SELECT booked.* FROM $wpdb->posts AS booked
75
+ LEFT JOIN $wpdb->postmeta AS event ON event.post_id = booked.ID
76
+ LEFT JOIN $wpdb->postmeta AS book_quanity ON book_quanity.post_id = booked.ID
77
+ LEFT JOIN $wpdb->postmeta AS user_booked ON user_booked.post_id = booked.ID
78
+ LEFT JOIN $wpdb->users AS user ON user.ID = user_booked.meta_value
79
+ WHERE booked.post_type = %s
80
+ AND event.meta_key = %s
81
+ AND event.meta_value = %d
82
+ AND user_booked.meta_key = %s
83
+ AND book_quanity.meta_key = %s
84
+ ", 'event_auth_book', 'ea_booking_event_id', $this->ID, 'ea_booking_user_id', 'ea_booking_qty' );
85
+
86
+ return $wpdb->get_results( $query );
87
+ }
88
+
89
+ /**
90
+ * get available slot
91
+ * @return type
92
+ */
93
+ public function get_slot_available() {
94
+ return apply_filters( 'event_slot_available', $this->qty - $this->booked_quantity() );
95
+ }
96
+
97
+ /**
98
+ * register time
99
+ * @return init
100
+ */
101
+ public function get_registered_time() {
102
+ return apply_filters( 'event_registered_time', count( $this->load_registered() ) );
103
+ }
104
+
105
+ /**
106
+ * get booked quantity
107
+ * @global type $wpdb
108
+ *
109
+ * @param type $user_id
110
+ *
111
+ * @return init
112
+ */
113
+ public function booked_quantity( $user_id = null ) {
114
+ global $wpdb;
115
+
116
+ if ( $user_id && is_numeric( $user_id ) ) {
117
+ $query = $wpdb->prepare( "
118
+ SELECT SUM( pm.meta_value ) AS qty FROM $wpdb->postmeta AS pm
119
+ INNER JOIN $wpdb->posts AS book ON book.ID = pm.post_id
120
+ INNER JOIN $wpdb->postmeta AS pm2 ON pm2.post_id = book.ID
121
+ INNER JOIN $wpdb->postmeta AS pm3 ON pm3.post_id = book.ID
122
+ INNER JOIN $wpdb->posts AS event ON event.ID = pm3.meta_value
123
+ INNER JOIN $wpdb->users AS user ON user.ID = pm2.meta_value
124
+ WHERE
125
+ pm.meta_key = %s
126
+ AND book.post_type = %s
127
+ AND pm2.meta_key = %s
128
+ AND pm3.meta_key = %s
129
+ AND event.ID = %d
130
+ AND event.post_type = %s
131
+ AND user.ID = %d
132
+ ", 'ea_booking_qty', 'event_auth_book', 'ea_booking_user_id', 'ea_booking_event_id', $this->ID, 'tp_event', $user_id );
133
+ } else {
134
+ $query = $wpdb->prepare( "
135
+ SELECT SUM( pm.meta_value ) AS qty FROM $wpdb->postmeta AS pm
136
+ INNER JOIN $wpdb->posts AS book ON book.ID = pm.post_id
137
+ INNER JOIN $wpdb->postmeta AS pm2 ON pm2.post_id = book.ID
138
+ INNER JOIN $wpdb->postmeta AS pm3 ON pm3.post_id = book.ID
139
+ INNER JOIN $wpdb->posts AS event ON event.ID = pm3.meta_value
140
+ INNER JOIN $wpdb->users AS user ON user.ID = pm2.meta_value
141
+ WHERE
142
+ pm.meta_key = %s
143
+ AND book.post_type = %s
144
+ AND book.post_status = %s
145
+ AND pm2.meta_key = %s
146
+ AND pm3.meta_key = %s
147
+ AND event.ID = %d
148
+ AND event.post_type = %s
149
+ ", 'ea_booking_qty', 'event_auth_book', 'ea-completed', 'ea_booking_user_id', 'ea_booking_event_id', $this->ID, 'tp_event' );
150
+ }
151
+
152
+ return apply_filters( 'event_auth_booked_quanity', (int) $wpdb->get_var( $query ) );
153
+ }
154
+
155
+ /**
156
+ * WPEMS_Event instance
157
+ *
158
+ * @param WP_Post $id
159
+ *
160
+ * @return type
161
+ */
162
+ public static function instance( $id, $option = null ) {
163
+ $event_id = false;
164
+ if ( is_numeric( $id ) && $id && get_post_type( $id ) === 'tp_event' ) {
165
+ $post = get_post( $id );
166
+ $event_id = $post->ID;
167
+ } else if ( $id instanceof WP_Post || is_object( $id ) ) {
168
+ $event_id = $id->ID;
169
+ }
170
+
171
+ if ( !empty( self::$instance[$event_id] ) ) {
172
+ return self::$instance[$event_id];
173
+ }
174
+
175
+ return self::$instance[$event_id] = new self( $event_id );
176
+ }
177
+
178
+ }
inc/class-wpems-frontend-assets.php ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ defined( 'ABSPATH' ) || exit();
4
+
5
+ class WPEMS_Frontend_Assets {
6
+
7
+ /**
8
+ * Register scripts
9
+ * @since 1.4.1.4
10
+ */
11
+ public static function init() {
12
+ add_action( 'tp_event_before_enqueue_scripts', array( __CLASS__, 'register_scripts' ) );
13
+ }
14
+
15
+ /**
16
+ * Register scripts
17
+ *
18
+ * @param type $hook
19
+ */
20
+ public static function register_scripts( $hook ) {
21
+ WPEMS_Assets::register_script( 'wpems-countdown-plugin-js', WPEMS_LIB_URI . '/countdown/js/jquery.plugin.min.js' );
22
+ WPEMS_Assets::register_script( 'wpems-countdown-js', WPEMS_LIB_URI . '/countdown/js/jquery.countdown.min.js' );
23
+ WPEMS_Assets::register_style( 'wpems-countdown-css', WPEMS_LIB_URI . '/countdown/css/jquery.countdown.css' );
24
+ WPEMS_Assets::localize_script( 'wpems-countdown-js', 'WPEMS', wpems_l18n() );
25
+
26
+ // google map
27
+ if ( is_singular( 'tp_event' ) ) {
28
+ WPEMS_Assets::register_script( 'wpems-google-map', WPEMS_ASSETS_URI . '/js/frontend/google-map.js' );
29
+ }
30
+
31
+ // owl-carousel
32
+ WPEMS_Assets::register_script( 'wpems-owl-carousel-js', WPEMS_LIB_URI . '/owl-carousel/js/owl.carousel.min.js' );
33
+ WPEMS_Assets::register_style( 'wpems-owl-carousel-css', WPEMS_LIB_URI . '/owl-carousel/css/owl.carousel.css' );
34
+
35
+ // magnific-popup
36
+ WPEMS_Assets::register_script( 'wpems-magnific-popup-js', WPEMS_LIB_URI . '/magnific-popup/js/jquery.magnific-popup.min.js', array(), WPEMS_VER, true );
37
+ WPEMS_Assets::register_style( 'wpems-magnific-popup-css', WPEMS_LIB_URI . '/magnific-popup/css/magnific-popup.css', array() );
38
+
39
+ // events
40
+ WPEMS_Assets::register_script( 'wpems-frontend-js', WPEMS_ASSETS_URI . '/js/frontend/events.js' );
41
+ WPEMS_Assets::register_style( 'wpems-fronted-css', WPEMS_ASSETS_URI . '/css/frontend/events.css' );
42
+ }
43
+
44
+ }
45
+
46
+ WPEMS_Frontend_Assets::init();
inc/class-wpems-install.php ADDED
@@ -0,0 +1,168 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) {
4
+ exit;
5
+ }
6
+
7
+ class WPEMS_Install {
8
+
9
+ /**
10
+ * upgrade store
11
+ * @var type null || array
12
+ */
13
+ public static $db_upgrade = null;
14
+
15
+ /**
16
+ * Init
17
+ */
18
+ public static function init() {
19
+ self::$db_upgrade = array(
20
+ '2.0' => WPEMS_INC . 'admin/upgrades/upgrade-2.0.php',
21
+ '2.0.8' => WPEMS_INC . 'admin/upgrades/upgrade-2.0.8.php'
22
+ );
23
+ }
24
+
25
+ /**
26
+ * register_activation_hook callback
27
+ */
28
+ public static function install() {
29
+ if ( ! defined( 'WPEMS_INSTALLING' ) ) {
30
+ define( 'WPEMS_INSTALLING', true );
31
+ if ( ! function_exists( 'get_plugin_data' ) ) {
32
+ require_once ABSPATH . '/wp-admin/includes/plugin.php';
33
+ }
34
+
35
+ $active_plugins = array();
36
+
37
+ $plugins = array(
38
+ 'tp-event-auth/tp-event-auth.php',
39
+ 'tp-event/tp-event.php'
40
+ );
41
+
42
+ foreach ( $plugins as $plugin ) {
43
+ if ( is_multisite() ) {
44
+ deactivate_plugins( $plugin, false, true );
45
+ } else {
46
+ deactivate_plugins( $plugin, false, false );
47
+ }
48
+ }
49
+
50
+ /**
51
+ * Update options
52
+ */
53
+ if ( ! get_option( 'thimpress-event-version' ) ) {
54
+
55
+ $prefix = 'thimpress_events';
56
+ $settings = get_option( $prefix );
57
+ if ( $settings ) {
58
+ foreach ( $settings as $name => $value ) {
59
+ if ( is_array( $value ) ) {
60
+ foreach ( $value as $n => $v ) {
61
+ if ( $name === 'email' ) {
62
+ if ( $n != 'email_subject' ) {
63
+ update_option( $prefix . '_' . $name . '_' . $n, $v );
64
+ } else {
65
+ update_option( $prefix . '_' . $n, $v );
66
+ }
67
+ } else if ( $name === 'checkout' ) {
68
+ if ( $n == 'paypal_sanbox_email' ) {
69
+ update_option( $prefix . '_paypal_sanbox_email', $v );
70
+ }
71
+ if ( $n == 'paypal_email' ) {
72
+ update_option( $prefix . '_paypal_email', $v );
73
+ }
74
+ if ( $n == 'paypal_enable' ) {
75
+ update_option( $prefix . '_paypal_enable', $v );
76
+ }
77
+ update_option( $prefix . '_' . $name . '_' . $n, $v );
78
+ } else {
79
+ update_option( $prefix . '_' . $n, $v );
80
+ }
81
+
82
+ }
83
+ }
84
+ }
85
+ }
86
+ }
87
+ }
88
+ /**
89
+ * Upgrade options
90
+ */
91
+ self::upgrade_database();
92
+ /**
93
+ * Create Pages
94
+ */
95
+ self::create_pages();
96
+ /**
97
+ * Update current version
98
+ */
99
+ update_option( 'thimpress-event-version', WPEMS_VER );
100
+ }
101
+
102
+ /**
103
+ * register_deactivation_hook callback
104
+ */
105
+ public static function uninstall() {
106
+ if ( is_multisite() ) {
107
+ delete_site_option( 'thimpress_events_show_remove_event_auth_notice' );
108
+ } else {
109
+ delete_option( 'thimpress_events_show_remove_event_auth_notice' );
110
+ }
111
+ }
112
+
113
+
114
+ /**
115
+ * Create pages
116
+ */
117
+ public static function create_pages() {
118
+ $pages = array(
119
+ 'register' => array(
120
+ 'name' => _x( 'user-register', 'Page slug', 'wp-events-manager' ),
121
+ 'title' => _x( 'User Register', 'Page title', 'wp-events-manager' ),
122
+ 'content' => '[' . apply_filters( 'tp_event_register_shortcode_tag', 'wp_event_register' ) . ']'
123
+ ),
124
+ 'login' => array(
125
+ 'name' => _x( 'user-login', 'Page slug', 'wp-events-manager' ),
126
+ 'title' => _x( 'User Login', 'Page title', 'wp-events-manager' ),
127
+ 'content' => '[' . apply_filters( 'tp_event_login_shortcode_tag', 'wp_event_login' ) . ']'
128
+ ),
129
+ 'forgot_password' => array(
130
+ 'name' => _x( 'forgot-password', 'Page slug', 'wp-events-manager' ),
131
+ 'title' => _x( 'Forgot Password', 'Page title', 'wp-events-manager' ),
132
+ 'content' => '[' . apply_filters( 'tp_event_forgot_password_shortcode_tag', 'wp_event_forgot_password' ) . ']'
133
+ ),
134
+ 'reset_password' => array(
135
+ 'name' => _x( 'reset-password', 'Page slug', 'wp-events-manager' ),
136
+ 'title' => _x( 'Reset Password', 'Page title', 'wp-events-manager' ),
137
+ 'content' => '[' . apply_filters( 'tp_event_reset_password_shortcode_tag', 'wp_event_reset_password' ) . ']'
138
+ ),
139
+ 'account' => array(
140
+ 'name' => _x( 'user-account', 'Page slug', 'wp-events-manager' ),
141
+ 'title' => _x( 'User Account', 'Page title', 'wp-events-manager' ),
142
+ 'content' => '[' . apply_filters( 'tp_event_account_shortcode_tag', 'wp_event_account' ) . ']'
143
+ ),
144
+ );
145
+ foreach ( $pages as $name => $page ) {
146
+ wpems_create_page( esc_sql( $page['name'] ), $name . '_page_id', $page['title'], $page['content'], ! empty( $page['parent'] ) ? wpems_get_page_id( $page['parent'] ) : '' );
147
+ }
148
+ }
149
+
150
+ /**
151
+ * Upgrade Database
152
+ */
153
+ public static function upgrade_database() {
154
+ $old_version = get_option( 'thimpress-event-version' );
155
+ foreach ( self::$db_upgrade as $ver => $file ) {
156
+ if ( ! $old_version || version_compare( $old_version, $ver, '<' ) ) {
157
+ require_once $file;
158
+ }
159
+ }
160
+ }
161
+
162
+ }
163
+
164
+ WPEMS_Install::init();
165
+
166
+ // active plugin
167
+ register_activation_hook( WPEMS_MAIN_FILE, array( 'WPEMS_Install', 'install' ) );
168
+ register_deactivation_hook( WPEMS_MAIN_FILE, array( 'WPEMS_Install', 'uninstall' ) );
inc/class-wpems-payment-gateways.php ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ defined( 'ABSPATH' ) || exit();
4
+
5
+ class WPEMS_Payment_Gateways {
6
+
7
+ /**
8
+ * gateways method
9
+ * @var type array
10
+ */
11
+ public $gateways = array();
12
+ public static $instance = null;
13
+
14
+ public function __construct() {
15
+ $this->init();
16
+ }
17
+
18
+ public function init() {
19
+ $payment_gateways = array( 'WPEMS_Payment_Gateway_Paypal' );
20
+
21
+ foreach ( $payment_gateways as $gateway ) {
22
+ $gateway = is_string( $gateway ) ? new $gateway : $gateway;
23
+ $this->gateways[$gateway->id] = $gateway;
24
+ }
25
+
26
+ return $this->gateways;
27
+ }
28
+
29
+ /**
30
+ * Get payment gateways available
31
+ *
32
+ * @return array
33
+ */
34
+ public function get_payment_gateways() {
35
+ $gateways = $this->gateways;
36
+
37
+ $gateways = apply_filters( 'wpems_payment_gateways', $gateways );
38
+
39
+ $available = array();
40
+ foreach ( $gateways as $id => $gateway ) {
41
+ if ( $gateway->is_available() ) {
42
+ $available[$id] = $gateway;
43
+ }
44
+ }
45
+ return $available;
46
+ }
47
+
48
+ /**
49
+ * Get payment gateways enable
50
+ *
51
+ * @return array
52
+ */
53
+ public function get_payment_gateways_enable() {
54
+ $gateways = $this->get_payment_gateways();
55
+
56
+ $enable = array();
57
+ foreach ( $gateways as $id => $gateway ) {
58
+ if ( $gateway->is_enable() ) {
59
+ $enable[$id] = $gateway;
60
+ }
61
+ }
62
+ return $enable;
63
+ }
64
+
65
+ public static function instance() {
66
+ if ( !self::$instance ) {
67
+ self::$instance = new self();
68
+ }
69
+ return self::$instance;
70
+ }
71
+
72
+ }
73
+
74
+ WPEMS_Payment_Gateways::instance();
inc/class-wpems-post-types.php ADDED
@@ -0,0 +1,494 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit();
4
+ }
5
+
6
+ /**
7
+ * register all post type
8
+ */
9
+ class WPEMS_Custom_Post_Types {
10
+
11
+ public function __construct() {
12
+
13
+ // register post types
14
+ add_action( 'after_setup_theme', array( $this, 'register_event_post_type' ) );
15
+ add_action( 'init', array( $this, 'register_booking_post_type' ) );
16
+
17
+ // register event category
18
+ add_action( 'init', array( $this, 'register_event_category_tax' ) );
19
+
20
+ // register post type status
21
+ add_action( 'init', array( $this, 'register_event_status' ) );
22
+ add_action( 'init', array( $this, 'register_booking_status' ) );
23
+
24
+ // custom event post type column
25
+ add_filter( 'manage_tp_event_posts_columns', array( $this, 'event_columns' ) );
26
+ add_action( 'manage_tp_event_posts_custom_column', array( $this, 'event_column_content' ), 10, 2 );
27
+ add_filter( 'manage_edit-tp_event_sortable_columns', array( $this, 'sortable_columns' ) );
28
+
29
+ add_filter( 'manage_edit-tp_event_category_columns', array( $this, 'event_category_columns' ) );
30
+
31
+ add_filter( 'manage_event_auth_book_posts_columns', array( $this, 'booking_columns' ) );
32
+ add_action( 'manage_event_auth_book_posts_custom_column', array( $this, 'booking_column_content' ), 10, 2 );
33
+
34
+ add_filter( 'post_updated_messages', array( $this, 'update_message' ) );
35
+ // filter nav-menu
36
+ add_filter( 'nav_menu_meta_box_object', array( $this, 'nav_menu_event' ) );
37
+
38
+ if ( is_admin() ) {
39
+ // filter booking event by user ID
40
+ add_filter( 'parse_query', array( $this, 'request_query' ) );
41
+ }
42
+ }
43
+
44
+ /**
45
+ * Register event post type
46
+ */
47
+ public function register_event_post_type() {
48
+ // post type
49
+ $labels = array(
50
+ 'name' => _x( 'Events', 'post type general name', 'wp-events-manager' ),
51
+ 'singular_name' => _x( 'Event', 'post type singular name', 'wp-events-manager' ),
52
+ 'menu_name' => _x( 'Events', 'admin menu', 'wp-events-manager' ),
53
+ 'name_admin_bar' => _x( 'Event', 'add new on admin bar', 'wp-events-manager' ),
54
+ 'add_new' => _x( 'Add New', 'event', 'wp-events-manager' ),
55
+ 'add_new_item' => __( 'Add New Event', 'wp-events-manager' ),
56
+ 'new_item' => __( 'New Event', 'wp-events-manager' ),
57
+ 'edit_item' => __( 'Edit Event', 'wp-events-manager' ),
58
+ 'view_item' => __( 'View Event', 'wp-events-manager' ),
59
+ 'all_items' => __( 'Events', 'wp-events-manager' ),
60
+ 'search_items' => __( 'Search Events', 'wp-events-manager' ),
61
+ 'parent_item_colon' => __( 'Parent Events:', 'wp-events-manager' ),
62
+ 'not_found' => __( 'No events found.', 'wp-events-manager' ),
63
+ 'not_found_in_trash' => __( 'No events found in Trash.', 'wp-events-manager' )
64
+ );
65
+
66
+ $args = array(
67
+ 'labels' => $labels,
68
+ 'description' => __( 'Event post type.', 'wp-events-manager' ),
69
+ 'public' => true,
70
+ 'publicly_queryable' => true,
71
+ 'show_ui' => true,
72
+ 'show_in_menu' => 'tp-event-setting',
73
+ 'query_var' => true,
74
+ 'rewrite' => array( 'slug' => _x( 'events', 'URL slug', 'wp-events-manager' ) ),
75
+ 'taxonomies' => array( 'tp_event_category' ),
76
+ 'capability_type' => 'post',
77
+ 'map_meta_cap' => true,
78
+ 'has_archive' => true,
79
+ 'hierarchical' => true,
80
+ 'menu_position' => 8,
81
+ 'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' )
82
+ );
83
+
84
+ $args = apply_filters( 'tp_event_register_event_post_type_args', $args );
85
+ register_post_type( 'tp_event', $args );
86
+ }
87
+
88
+
89
+ /**
90
+ * Register booking event post type
91
+ */
92
+ public function register_booking_post_type() {
93
+ // event auth book
94
+ $labels = array(
95
+ 'name' => _x( 'Bookings', 'post type general name', 'wp-events-manager' ),
96
+ 'singular_name' => _x( 'Booking', 'post type singular name', 'wp-events-manager' ),
97
+ 'menu_name' => _x( 'Bookings', 'admin menu', 'wp-events-manager' ),
98
+ 'name_admin_bar' => _x( 'Booking', 'add new on admin bar', 'wp-events-manager' ),
99
+ 'add_new' => _x( 'Add New', 'book', 'wp-events-manager' ),
100
+ 'add_new_item' => __( 'Add New Booking', 'wp-events-manager' ),
101
+ 'new_item' => __( 'New Booking', 'wp-events-manager' ),
102
+ 'edit_item' => __( 'Booking Details', 'wp-events-manager' ),
103
+ 'view_item' => __( 'View Booking', 'wp-events-manager' ),
104
+ 'all_items' => __( 'Bookings', 'wp-events-manager' ),
105
+ 'search_items' => __( 'Search Books', 'wp-events-manager' ),
106
+ 'parent_item_colon' => __( 'Parent Books:', 'wp-events-manager' ),
107
+ 'not_found' => __( 'No books found.', 'wp-events-manager' ),
108
+ 'not_found_in_trash' => __( 'No books found in Trash.', 'wp-events-manager' )
109
+ );
110
+
111
+ $args = array(
112
+ 'labels' => $labels,
113
+ 'description' => __( 'Description.', 'wp-events-manager' ),
114
+ 'public' => true,
115
+ 'publicly_queryable' => false,
116
+ 'show_in_admin_bar' => false,
117
+ 'show_ui' => true,
118
+ 'show_in_menu' => 'tp-event-setting',
119
+ 'query_var' => true,
120
+ 'rewrite' => array( 'slug' => _x( 'event-book', 'URL slug', 'wp-events-manager' ) ),
121
+ 'capability_type' => 'post',
122
+ 'has_archive' => false,
123
+ 'hierarchical' => false,
124
+ 'menu_position' => null,
125
+ 'supports' => false,
126
+ 'capabilities' => array(
127
+ 'create_posts' => 'do_not_allow'
128
+ ),
129
+ 'map_meta_cap' => true
130
+ );
131
+
132
+ $args = apply_filters( 'event_auth_book_args', $args );
133
+ register_post_type( 'event_auth_book', $args );
134
+ }
135
+
136
+ /**
137
+ * Register event category taxonomy
138
+ */
139
+ public function register_event_category_tax() {
140
+
141
+ $labels = array(
142
+ 'name' => _x( 'Event Categories', 'taxonomy general name', 'wp-events-manager' ),
143
+ 'singular_name' => _x( 'Event Category', 'taxonomy singular name', 'wp-events-manager' ),
144
+ 'search_items' => __( 'Search Categories', 'wp-events-manager' ),
145
+ 'all_items' => __( 'All Categories', 'wp-events-manager' ),
146
+ 'parent_item' => __( 'Parent Category', 'wp-events-manager' ),
147
+ 'parent_item_colon' => __( 'Parent Category:', 'wp-events-manager' ),
148
+ 'edit_item' => __( 'Edit Category', 'wp-events-manager' ),
149
+ 'update_item' => __( 'Update Category', 'wp-events-manager' ),
150
+ 'add_new_item' => __( 'Add New Category', 'wp-events-manager' ),
151
+ 'new_item_name' => __( 'New Category Name', 'wp-events-manager' ),
152
+ 'menu_name' => __( 'Category', 'wp-events-manager' ),
153
+ );
154
+
155
+ $args = array(
156
+ 'public' => true,
157
+ 'hierarchical' => true,
158
+ 'labels' => $labels,
159
+ 'show_ui' => true,
160
+ 'show_admin_column' => true,
161
+ 'query_var' => true,
162
+ 'rewrite' => array( 'slug' => 'tp-event-category' ),
163
+ );
164
+
165
+ register_taxonomy( 'tp_event_category', array( 'tp_event' ), $args );
166
+ }
167
+
168
+ /**
169
+ * Register event status
170
+ */
171
+ public function register_event_status() {
172
+ // post status // upcoming // expired // happening
173
+
174
+ register_post_status( 'tp-event-upcoming', apply_filters( 'tp_event_register_upcoming_status_args', array(
175
+ 'label' => _x( 'Upcoming', 'wp-events-manager' ),
176
+ 'public' => true,
177
+ 'exclude_from_search' => false,
178
+ 'show_in_admin_all_list' => true,
179
+ 'show_in_admin_status_list' => true,
180
+ 'label_count' => _n_noop( 'Upcoming <span class="count">(%s)</span>', 'Upcoming <span class="count">(%s)</span>' ),
181
+ ) ) );
182
+
183
+ register_post_status( 'tp-event-happenning', apply_filters( 'tp_event_register_happening_status_args', array(
184
+ 'label' => _x( 'Happening', 'wp-events-manager' ),
185
+ 'public' => true,
186
+ 'exclude_from_search' => false,
187
+ 'show_in_admin_all_list' => true,
188
+ 'show_in_admin_status_list' => true,
189
+ 'label_count' => _n_noop( 'Happening <span class="count">(%s)</span>', 'Happening <span class="count">(%s)</span>' ),
190
+ ) ) );
191
+
192
+ register_post_status( 'tp-event-expired', apply_filters( 'tp_event_register_expired_status_args', array(
193
+ 'label' => _x( 'Expired', 'wp-events-manager' ),
194
+ 'public' => true,
195
+ 'exclude_from_search' => false,
196
+ 'show_in_admin_all_list' => true,
197
+ 'show_in_admin_status_list' => true,
198
+ 'label_count' => _n_noop( 'Expired <span class="count">(%s)</span>', 'Expired <span class="count">(%s)</span>' ),
199
+ ) ) );
200
+ }
201
+
202
+ /**
203
+ * Register booking status
204
+ */
205
+ public function register_booking_status() {
206
+
207
+ register_post_status( 'ea-cancelled', apply_filters( 'event_auth_register_status_cancelled', array(
208
+ 'label' => _x( 'Cancelled', 'Booking status', 'wp-events-manager' ),
209
+ 'public' => true,
210
+ 'exclude_from_search' => false,
211
+ 'show_in_admin_all_list' => true,
212
+ 'show_in_admin_status_list' => true,
213
+ 'label_count' => _n_noop( 'Cancelled <span class="count">(%s)</span>', 'Cancelled <span class="count">(%s)</span>' ),
214
+ ) ) );
215
+
216
+ register_post_status( 'ea-pending', apply_filters( 'event_auth_register_status_pending', array(
217
+ 'label' => _x( 'Pending', 'Booking status', 'wp-events-manager' ),
218
+ 'public' => true,
219
+ 'exclude_from_search' => false,
220
+ 'show_in_admin_all_list' => true,
221
+ 'show_in_admin_status_list' => true,
222
+ 'label_count' => _n_noop( 'Pending <span class="count">(%s)</span>', 'Pending <span class="count">(%s)</span>' ),
223
+ ) ) );
224
+
225
+ register_post_status( 'ea-processing', apply_filters( 'event_auth_register_status_processing', array(
226
+ 'label' => _x( 'Processing', 'Booking status', 'wp-events-manager' ),
227
+ 'public' => true,
228
+ 'exclude_from_search' => false,
229
+ 'show_in_admin_all_list' => true,
230
+ 'show_in_admin_status_list' => true,
231
+ 'label_count' => _n_noop( 'Processing <span class="count">(%s)</span>', 'Processing <span class="count">(%s)</span>' ),
232
+ ) ) );
233
+
234
+ register_post_status( 'ea-completed', apply_filters( 'event_auth_register_status_completed', array(
235
+ 'label' => _x( 'Completed', 'Booking status', 'wp-events-manager' ),
236
+ 'public' => true,
237
+ 'exclude_from_search' => false,
238
+ 'show_in_admin_all_list' => true,
239
+ 'show_in_admin_status_list' => true,
240
+ 'label_count' => _n_noop( 'Completed <span class="count">(%s)</span>', 'Completed <span class="count">(%s)</span>' ),
241
+ ) ) );
242
+
243
+ }
244
+
245
+ /**
246
+ * Custom event columns.
247
+ *
248
+ * @param $columns
249
+ *
250
+ * @return mixed
251
+ */
252
+ public function event_columns( $columns ) {
253
+ unset( $columns['comments'], $columns['date'] );
254
+ $columns['start'] = __( 'Start', 'wp-events-manager' );
255
+ $columns['end'] = __( 'End', 'wp-events-manager' );
256
+ $columns['status'] = __( 'Status', 'wp-events-manager' );
257
+ $columns['price'] = __( 'Price', 'wp-events-manager' );
258
+ $columns['booked_slot'] = __( 'Booked / Total', 'wp-events-manager' );
259
+
260
+ return $columns;
261
+ }
262
+
263
+
264
+ /**
265
+ * Custom event category columns.
266
+ *
267
+ * @param $columns
268
+ *
269
+ * @return mixed
270
+ */
271
+ public function event_category_columns( $columns ) {
272
+ unset( $columns['posts'] );
273
+
274
+ return $columns;
275
+ }
276
+
277
+ /**
278
+ * Event custom columns content
279
+ *
280
+ * @param type $column
281
+ * @param type $post_id
282
+ */
283
+ public function event_column_content( $column, $post_id ) {
284
+ $event = WPEMS_Event::instance( $post_id );
285
+ switch ( $column ) {
286
+ case 'status' :
287
+ $status = get_post_status_object( get_post_status( $post_id ) );
288
+ echo $status->label;
289
+ break;
290
+ case 'start' :
291
+ $date_start = get_post_meta( $post_id, 'tp_event_date_start', true );
292
+ $time_start = get_post_meta( $post_id, 'tp_event_time_start', true );
293
+ if ( $date_start ) {
294
+ printf( '%s', date( get_option( 'date_format' ), strtotime( $date_start ) ) );
295
+ }
296
+ if ( $time_start ) {
297
+ printf( ' %s', date( get_option( 'time_format' ), strtotime( $time_start ) ) );
298
+ }
299
+ break;
300
+ case 'end' :
301
+ $date_end = get_post_meta( $post_id, 'tp_event_date_end', true );
302
+ $time_end = get_post_meta( $post_id, 'tp_event_time_end', true );
303
+ if ( $date_end ) {
304
+ printf( '%s', date( get_option( 'date_format' ), strtotime( $date_end ) ) );
305
+ }
306
+ if ( $time_end ) {
307
+ printf( ' %s', date( get_option( 'time_format' ), strtotime( $time_end ) ) );
308
+ }
309
+ break;
310
+ case 'price':
311
+ if ( $event->is_free() ) {
312
+ echo '<span class="event_auth_event_type">' . __( 'Free', 'wp-events-manager' ) . '</span>';
313
+ } else {
314
+ echo sprintf( __( '<span class="event_auth_event_type">%s/%s</span>', 'wp-events-manager' ), wpems_format_price( $event->get_price() ), __( 'slot', 'wp-events-manager' ) );
315
+ }
316
+ break;
317
+ case 'booked_slot':
318
+ $total = get_post_meta( $post_id, 'tp_event_qty', true ) ? get_post_meta( $post_id, 'tp_event_qty', true ) : esc_html__( 'Unlimited', 'wp-events-manager' );
319
+ echo sprintf( '%s / %s', $event->booked_quantity(), $total );
320
+ break;
321
+ default:
322
+ break;
323
+ }
324
+ }
325
+
326
+
327
+ /**
328
+ * Add booking custom columns
329
+ *
330
+ * @return array
331
+ */
332
+ public function booking_columns() {
333
+ $columns = array();
334
+ // set
335
+ $columns['cb'] = __( '<label class="screen-reader-text __web-inspector-hide-shortcut__" for="cb-select-all-1">Select All</label><input id="cb-select-all-1" type="checkbox">' );
336
+ $columns['ID'] = __( 'ID', 'wp-events-manager' );
337
+ $columns['event'] = __( 'Event', 'wp-events-manager' );
338
+ $columns['user'] = __( 'User', 'wp-events-manager' );
339
+ $columns['booking_date'] = __( 'Date', 'wp-events-manager' );
340
+ $columns['cost'] = __( 'Cost', 'wp-events-manager' );
341
+ $columns['slot'] = __( 'Quantity', 'wp-events-manager' );
342
+ $columns['status'] = __( 'Status', 'wp-events-manager' );
343
+
344
+ return $columns;
345
+ }
346
+
347
+ /**
348
+ * Booking custom columns content
349
+ *
350
+ * @param $column
351
+ * @param $booking_id
352
+ */
353
+ public function booking_column_content( $column, $booking_id ) {
354
+ $booking = WPEMS_Booking::instance( $booking_id );
355
+ switch ( $column ) {
356
+ case 'ID':
357
+ echo sprintf( '<a href="%s">%s</a>', get_edit_post_link( $booking->ID ), wpems_format_ID( $booking_id ) );
358
+ break;
359
+ case 'event':
360
+ echo sprintf( '<a href="%s">%s</a>', get_edit_post_link( $booking->event_id ), get_the_title( $booking->event_id ) );
361
+ break;
362
+ case 'user':
363
+ $user = get_userdata( $booking->user_id );
364
+ $return = array();
365
+ $return[] = sprintf( __( '<a href="%s">%s</a>', 'wp-events-manager' ), admin_url( 'admin.php?page=tp-event-users&user_id=' . $booking->user_id ), $user->display_name );
366
+ $return = implode( '', $return );
367
+ echo $return;
368
+ break;
369
+ case 'booking_date':
370
+ echo get_the_date( '', $booking->ID );
371
+ break;
372
+ case 'cost':
373
+ echo $booking->price > 0 ? wpems_format_price( $booking->price ) : __( 'Free', 'wp-events-manager' );
374
+ break;
375
+ case 'slot':
376
+ echo $booking->qty;
377
+ break;
378
+ case 'status':
379
+ $return = array();
380
+ $return[] = sprintf( '%s', wpems_booking_status( $booking_id ) );
381
+ $return[] = $booking->payment_id ? '<p>' . __( sprintf( '(via %s)', wpems_get_payment_title( $booking->payment_id ) ), 'wp-events-manager' ) . '</p>' : '';
382
+ $return = implode( '', $return );
383
+ echo $return;
384
+ break;
385
+ default:
386
+ break;
387
+ }
388
+ }
389
+
390
+ /**
391
+ * sortable columns
392
+ *
393
+ * @param type $columns
394
+ *
395
+ * @return array
396
+ */
397
+ public function sortable_columns( $columns ) {
398
+ return wp_parse_args( $columns, array( 'start' => 'start', 'end' => 'end' ) );
399
+ }
400
+
401
+ /**
402
+ * Filter booking event by user ID
403
+ *
404
+ * @param $query
405
+ *
406
+ * @return mixed
407
+ */
408
+ public function request_query( $query ) {
409
+ global $typenow, $wp_query, $wp_post_statuses;
410
+
411
+ if ( isset( $_GET['user_id'] ) && 'event_auth_book' === $typenow ) {
412
+ // Status
413
+ $query->query_vars['meta_key'] = 'ea_booking_user_id';
414
+ $query->query_vars['meta_value'] = absint( sanitize_text_field( $_GET['user_id'] ) );
415
+ }
416
+
417
+ return $query;
418
+ }
419
+
420
+ /**
421
+ * Filter nav-menu
422
+ *
423
+ * @param null $object
424
+ *
425
+ * @return null
426
+ */
427
+ public function nav_menu_event( $object = null ) {
428
+ if ( isset( $object->name ) && $object->name === 'tp_event' ) {
429
+ // default query
430
+ $object->_default_query = array(
431
+ 'post_status' => array(
432
+ 'tp-event-upcoming',
433
+ 'tp-event-happenning',
434
+ 'tp-event-expired'
435
+ )
436
+ );
437
+ }
438
+
439
+ return $object;
440
+ }
441
+
442
+ /**
443
+ * update post message
444
+ *
445
+ * @param type $messages
446
+ *
447
+ * @return type array
448
+ */
449
+ public function update_message( $messages ) {
450
+ $post = get_post();
451
+ $post_type = get_post_type( $post );
452
+ $post_type_object = get_post_type_object( $post_type );
453
+ if ( $post_type !== 'tp_event' ) {
454
+ return $messages;
455
+ }
456
+ $messages['tp_event'] = array(
457
+ 0 => '', // Unused. Messages start at index 1.
458
+ 1 => __( 'Event updated.', 'wp-events-manager' ),
459
+ 2 => __( 'Custom field updated.', 'wp-events-manager' ),
460
+ 3 => __( 'Custom field deleted.', 'wp-events-manager' ),
461
+ 4 => __( 'Event updated.', 'wp-events-manager' ),
462
+ /* translators: %s: date and time of the revision */
463
+ 5 => isset( $_GET['revision'] ) ? sprintf( __( 'Book restored to revision from %s', 'wp-events-manager' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
464
+ 6 => __( 'Event updated.', 'wp-events-manager' ),
465
+ 7 => __( 'Event saved.', 'wp-events-manager' ),
466
+ 8 => __( 'Event submitted.', 'wp-events-manager' ),
467
+ 9 => sprintf(
468
+ __( 'Event scheduled for: <strong>%1$s</strong>.', 'wp-events-manager' ),
469
+ // translators: Publish box date format, see http://php.net/date
470
+ date_i18n( __( 'M j, Y @ G:i', 'wp-events-manager' ), strtotime( $post->post_date ) )
471
+ ),
472
+ 10 => __( 'Event draft updated.', 'wp-events-manager' )
473
+ );
474
+
475
+ if ( $post_type_object->publicly_queryable ) {
476
+ $permalink = get_permalink( $post->ID );
477
+
478
+ $view_link = sprintf( ' <a href="%s">%s</a>', esc_url( $permalink ), __( 'View event', 'wp-events-manager' ) );
479
+ $messages[ $post_type ][1] .= $view_link;
480
+ $messages[ $post_type ][6] .= $view_link;
481
+ $messages[ $post_type ][9] .= $view_link;
482
+
483
+ $preview_permalink = add_query_arg( 'preview', 'true', $permalink );
484
+ $preview_link = sprintf( ' <a target="_blank" href="%s">%s</a>', esc_url( $preview_permalink ), __( 'Preview event', 'wp-events-manager' ) );
485
+ $messages[ $post_type ][8] .= $preview_link;
486
+ $messages[ $post_type ][10] .= $preview_link;
487
+ }
488
+
489
+ return $messages;
490
+ }
491
+
492
+ }
493
+
494
+ new WPEMS_Custom_Post_Types();
inc/class-wpems-session.php ADDED
@@ -0,0 +1,125 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Description of session
4
+ *
5
+ * @author ducnvtt
6
+ */
7
+
8
+ class WPEMS_Session {
9
+
10
+ /**
11
+ * array key of session or cookie
12
+ * @var type string
13
+ */
14
+ private $_name = null;
15
+
16
+ /**
17
+ * is change is TRUE if has change $_data
18
+ * @var type bool
19
+ */
20
+ private $_is_changed = false;
21
+
22
+ /**
23
+ * session data
24
+ * @var type array
25
+ */
26
+ private $_data = array();
27
+
28
+ /**
29
+ * live time of cookie
30
+ * @var type timestamp
31
+ */
32
+ private $_live_time = null;
33
+
34
+ public function __construct() {
35
+ $this->_name = 'event_auth_session_' . COOKIEHASH;
36
+ $this->_data = $this->get_session_data();
37
+ add_action( 'shutdown', array( $this, 'maybe_save_data' ), 0 );
38
+ }
39
+
40
+ /**
41
+ * get data
42
+ *
43
+ * @param type $name
44
+ */
45
+ public function __get( $name ) {
46
+ $this->get( $name );
47
+ }
48
+
49
+ /**
50
+ * set data
51
+ *
52
+ * @param type $name
53
+ * @param type $value
54
+ */
55
+ public function __set( $name, $value ) {
56
+ $this->set( $name, $value );
57
+ }
58
+
59
+ /**
60
+ * isset array key data
61
+ *
62
+ * @param type $name
63
+ *
64
+ * @return type bool
65
+ */
66
+ public function __isset( $name ) {
67
+ return isset( $this->_data[$name] );
68
+ }
69
+
70
+ /**
71
+ * unset item data
72
+ *
73
+ * @param type $name
74
+ */
75
+ public function __unset( $name ) {
76
+ if ( isset( $this->_data[$name] ) ) {
77
+ unset( $this->_data[$name] );
78
+ $this->_is_changed = true;
79
+ }
80
+ }
81
+
82
+ /**
83
+ * get data
84
+ *
85
+ * @param type $name
86
+ * @param type $default
87
+ *
88
+ * @return type
89
+ */
90
+ public function get( $name = null, $default = null ) {
91
+ return isset( $this->_data[$name] ) ? maybe_unserialize( $this->_data[$name] ) : $default;
92
+ }
93
+
94
+ /**
95
+ * set data
96
+ *
97
+ * @param type $name
98
+ * @param type $value
99
+ */
100
+ public function set( $name = '', $value = '' ) {
101
+ if ( $name && $value !== $this->get( $name ) ) {
102
+ $this->_data[$name] = maybe_serialize( $value );
103
+ $this->_is_changed = true;
104
+ $this->maybe_save_data();
105
+ }
106
+ }
107
+
108
+ /**
109
+ * save session data
110
+ */
111
+ public function maybe_save_data() {
112
+ if ( $this->_is_changed ) {
113
+ $_SESSION[$this->_name] = maybe_serialize( $this->_data );
114
+ }
115
+ }
116
+
117
+ /**
118
+ * get session data
119
+ * @return array
120
+ */
121
+ private function get_session_data() {
122
+ return isset( $_SESSION[$this->_name] ) ? maybe_unserialize( $_SESSION[$this->_name] ) : array();
123
+ }
124
+
125
+ }
inc/class-wpems-settings.php ADDED
@@ -0,0 +1,135 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) {
3
+ exit();
4
+ }
5
+
6
+ class WPEMS_Settings {
7
+
8
+ /**
9
+ * $_options
10
+ * @var null
11
+ */
12
+ public $_options = null;
13
+
14
+ /**
15
+ * prefix option name
16
+ * @var string
17
+ */
18
+ public $_prefix = 'thimpress_events';
19
+
20
+ /**
21
+ * _instance
22
+ * @var null
23
+ */
24
+ static $_instance = null;
25
+
26
+ public function __construct( $prefix = null ) {
27
+ if ( $prefix )
28
+ $this->_prefix = $prefix;
29
+
30
+ // load options
31
+ if ( !$this->_options )
32
+ $this->_options = $this->options();
33
+ }
34
+
35
+ public function __get( $id = null ) {
36
+ $settings = apply_filters( 'tp_event_settings_field', array() );
37
+
38
+ if ( isset( $settings[$id] ) ) {
39
+ return $settings[$id];
40
+ }
41
+ }
42
+
43
+ /**
44
+ * options load options
45
+ * @return array || null
46
+ */
47
+ protected function options() {
48
+
49
+ if ( is_array( get_option( $this->_prefix, null ) ) ) {
50
+ return call_user_func_array( 'array_merge', get_option( $this->_prefix, null ) );
51
+ }
52
+
53
+ return get_option( $this->_prefix, null );
54
+ }
55
+
56
+ /**
57
+ * get_name_field
58
+ *
59
+ * @param $name of field option
60
+ *
61
+ * @return string name field
62
+ */
63
+ public function get_field_name( $name = null ) {
64
+ if ( !$this->_prefix || !$name )
65
+ return;
66
+
67
+ return $this->_prefix . '[' . $name . ']';
68
+ }
69
+
70
+ /**
71
+ * get_name_field
72
+ *
73
+ * @param $name of field option
74
+ *
75
+ * @return string name field
76
+ */
77
+ public function get_field_id( $name = null, $default = null ) {
78
+ if ( !$this->_prefix || !$name )
79
+ return;
80
+
81
+ return $this->_prefix . '_' . $name;
82
+ }
83
+
84
+ /**
85
+ * get option value
86
+ *
87
+ * @param $name
88
+ *
89
+ * @return option value. array, string, boolean
90
+ */
91
+ public function get( $name = null, $default = null ) {
92
+ if ( !$this->_options )
93
+ $this->_options = $this->options();
94
+
95
+ if ( $name && isset( $this->_options[$name] ) )
96
+ return $this->_options[$name];
97
+
98
+ return $default;
99
+ }
100
+
101
+ /**
102
+ * get option value
103
+ *
104
+ * @param $name
105
+ *
106
+ * @return option value. array, string, boolean
107
+ */
108
+ public function set( $name = null, $default = null ) {
109
+ if ( !$this->_options )
110
+ $this->_options = $this->options();
111
+
112
+ if ( $name && isset( $this->_options[$name] ) )
113
+ return $this->_options[$name];
114
+
115
+ return $default;
116
+ }
117
+
118
+ /**
119
+ * instance
120
+ *
121
+ * @param $prefix
122
+ *
123
+ * @return object class
124
+ */
125
+ public static function instance( $prefix = null ) {
126
+
127
+ if ( !empty( self::$_instance[$prefix] ) ) {
128
+
129
+ return $GLOBALS['event_auth_settings'] = self::$_instance[$prefix];
130
+ }
131
+
132
+ return $GLOBALS['event_auth_settings'] = self::$_instance[$prefix] = new self( $prefix );
133
+ }
134
+
135
+ }
inc/class-wpems-shortcodes.php ADDED
@@ -0,0 +1,259 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * @author leehld
4
+ */
5
+
6
+ /**
7
+ * Prevent loading this file directly
8
+ */
9
+ defined( 'ABSPATH' ) || exit;
10
+
11
+ /**
12
+ * WPEMS_Shortcodes class
13
+ */
14
+ class WPEMS_Shortcodes {
15
+
16
+ /**
17
+ * Init shortcodes
18
+ */
19
+ public static function init() {
20
+ add_action( 'tp_event_shortcode_wrapper_start', array( __CLASS__, 'shortcode_wrapper_start' ) );
21
+ add_action( 'tp_event_shortcode_wrapper_end', array( __CLASS__, 'shortcode_wrapper_end' ) );
22
+
23
+ $shortcodes = array(
24
+ 'list_event' => __CLASS__ . '::list_event',
25
+ 'register' => __CLASS__ . '::register',
26
+ 'login' => __CLASS__ . '::login',
27
+ 'forgot_password' => __CLASS__ . '::forgot_password',
28
+ 'reset_password' => __CLASS__ . '::reset_password',
29
+ 'account' => __CLASS__ . '::account',
30
+ 'countdown' => __CLASS__ . '::countdown',
31
+ );
32
+
33
+ foreach ( $shortcodes as $shortcode => $function ) {
34
+ add_shortcode( apply_filters( "wp_event_{$shortcode}_shortcode_tag", 'wp_event_' . $shortcode ), $function );
35
+ }
36
+
37
+ add_action( 'template_redirect', array( __CLASS__, 'auto_shortcode' ) );
38
+ }
39
+
40
+ /**
41
+ * Redirect page
42
+ */
43
+ public static function auto_shortcode() {
44
+ if ( ! is_page() ) {
45
+ return;
46
+ }
47
+
48
+ global $post;
49
+
50
+ if ( ! isset( $post->ID ) ) {
51
+ return;
52
+ }
53
+
54
+ $page_id = array();
55
+
56
+ if ( $register_id = wpems_get_page_id( 'register' ) ) {
57
+ $page_id[] = $register_id;
58
+ }
59
+ if ( $login_id = wpems_get_page_id( 'login' ) ) {
60
+ $page_id[] = $login_id;
61
+ }
62
+
63
+ if ( is_user_logged_in() && in_array( $post->ID, $page_id ) ) {
64
+ wp_safe_redirect( home_url( '/' ) );
65
+ }
66
+ }
67
+
68
+ /**
69
+ * Shortcode wrapper start
70
+ *
71
+ * @param $shortcode
72
+ */
73
+ public static function shortcode_wrapper_start( $shortcode ) {
74
+ echo '<div class="event-wrapper-shortcode ' . esc_attr( $shortcode ) . '">';
75
+ }
76
+
77
+ /**
78
+ * Shortcode wrapper end
79
+ */
80
+ public static function shortcode_wrapper_end() {
81
+ echo '</div>';
82
+ }
83
+
84
+ /**
85
+ * Render shortcode
86
+ *
87
+ * @param string $shortcode
88
+ * @param string $template
89
+ * @param array $atts
90
+ *
91
+ * @return string
92
+ */
93
+ public static function render( $shortcode = '', $template = '', $atts = array() ) {
94
+ ob_start();
95
+ do_action( 'tp_event_shortcode_wrapper_start', $shortcode );
96
+ wpems_get_template( 'shortcodes/' . $template, $atts );
97
+ do_action( 'tp_event_shortcode_wrapper_end', $shortcode );
98
+
99
+ return ob_get_clean();
100
+ }
101
+
102
+ /**
103
+ * Shortcode show list event
104
+ *
105
+ * @param $atts
106
+ *
107
+ * @return string
108
+ */
109
+ public static function list_event( $atts ) {
110
+ $args = array( 'post_type' => 'tp_event' );
111
+
112
+ return WPEMS_Shortcodes::render( 'list-event', 'event-list.php', array( 'args' => $args ) );
113
+ }
114
+
115
+
116
+ /**
117
+ * Shortcode user register
118
+ *
119
+ * @param $atts
120
+ *
121
+ * @return string
122
+ */
123
+ public static function register( $atts ) {
124
+
125
+ if ( ! wpems_get_page_id( 'register' ) ) {
126
+ return '';
127
+ }
128
+ if ( ! get_option( 'users_can_register' ) ) {
129
+ return WPEMS_Shortcodes::render( 'user-register', 'user-cannot-register.php' );
130
+ } elseif ( ! empty( $_REQUEST['registered'] ) ) {
131
+ $email = sanitize_email( $_REQUEST['registered'] );
132
+ $user = get_user_by( 'email', $email );
133
+ if ( $user && $user->ID ) {
134
+ wp_new_user_notification( $user->ID );
135
+
136
+ // register completed
137
+ return WPEMS_Shortcodes::render( 'user-register', 'register-completed.php' );
138
+ } else {
139
+ // error
140
+ return WPEMS_Shortcodes::render( 'user-register', 'register-error.php' );
141
+ }
142
+ } elseif ( ! is_user_logged_in() ) {
143
+ // show register form
144
+ return WPEMS_Shortcodes::render( 'user-register', 'form-register.php' );
145
+ }
146
+
147
+ return '';
148
+ }
149
+
150
+ /**
151
+ * Shortcode user login
152
+ *
153
+ * @param $atts
154
+ *
155
+ * @return string
156
+ */
157
+ public static function login( $atts ) {
158
+ if ( ! wpems_get_page_id( 'login' ) || is_user_logged_in() ) {
159
+ return '';
160
+ }
161
+
162
+ return WPEMS_Shortcodes::render( 'user-login', 'form-login.php' );
163
+ }
164
+
165
+ /**
166
+ * Shortcode forgot password
167
+ *
168
+ * @param $atts
169
+ *
170
+ * @return string
171
+ */
172
+ public static function forgot_password( $atts ) {
173
+ if ( ! wpems_get_page_id( 'forgot_password' ) ) {
174
+ return '';
175
+ }
176
+
177
+ $checkemail = isset( $_REQUEST['checkemail'] ) && $_REQUEST['checkemail'] === 'confirm' ? true : false;
178
+ if ( $checkemail ) {
179
+ wpems_add_notice( 'success', __( 'Check your email for a link to reset your password.', 'wp-events-manager' ) );
180
+ } else {
181
+ return WPEMS_Shortcodes::render( 'forgot-password', 'forgot-password.php' );
182
+ }
183
+
184
+ return '';
185
+ }
186
+
187
+ /**
188
+ * Shortcode reset password
189
+ *
190
+ * @param $atts
191
+ *
192
+ * @return string
193
+ */
194
+ public static function reset_password( $atts ) {
195
+ if ( ! wpems_get_page_id( 'reset_password' ) ) {
196
+ return '';
197
+ }
198
+
199
+ $atts = wp_parse_args( $atts, array(
200
+ 'key' => isset( $_REQUEST['key'] ) ? sanitize_text_field( $_REQUEST['key'] ) : '',
201
+ 'login' => isset( $_REQUEST['login'] ) ? sanitize_text_field( $_REQUEST['login'] ) : ''
202
+ ) );
203
+
204
+ $atts = wp_parse_args( $atts, array(
205
+ 'user_login' => '',
206
+ 'redirect_to' => '',
207
+ 'checkemail' => isset( $_REQUEST['checkemail'] ) && $_REQUEST['checkemail'] === 'confirm' ? true : false
208
+ ) );
209
+
210
+ if ( $atts['checkemail'] ) {
211
+ wpems_add_notice( 'success', __( 'Check your email for a link to reset your password.', 'wp-events-manager' ) );
212
+ }
213
+
214
+ return WPEMS_Shortcodes::render( 'reset-password', 'reset-password.php', array( 'atts' => $atts ) );
215
+
216
+ }
217
+
218
+ /**
219
+ * Shortcode user account
220
+ *
221
+ * @return string
222
+ */
223
+ public static function account( $atts ) {
224
+ $user = wp_get_current_user();
225
+ $args = array(
226
+ 'post_type' => 'event_auth_book',
227
+ 'post_per_page' => - 1,
228
+ 'order' => 'DESC',
229
+ 'meta_query' => array(
230
+ array(
231
+ 'key' => 'ea_booking_user_id',
232
+ 'value' => $user->ID
233
+ ),
234
+ ),
235
+ );
236
+
237
+ return WPEMS_Shortcodes::render( 'user-account', 'user-account.php', array( 'args' => $args ) );
238
+ }
239
+
240
+ /**
241
+ * Countdown time for event
242
+ *
243
+ * @param $atts
244
+ *
245
+ * @return string
246
+ */
247
+ public static function countdown( $atts ) {
248
+ $atts = shortcode_atts(
249
+ array(
250
+ 'event_id' => ''
251
+ ), $atts
252
+ );
253
+
254
+ return WPEMS_Shortcodes::render( 'event-countdown', 'event-countdown.php', array( 'args' => $atts ) );
255
+ }
256
+
257
+ }
258
+
259
+ WPEMS_Shortcodes::init();
inc/class-wpems-template.php ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( !defined( 'ABSPATH' ) ) {
4
+ exit;
5
+ }
6
+
7
+ class WPEMS_Template {
8
+
9
+ /**
10
+ * Path to the includes directory
11
+ * @var string
12
+ */
13
+ private $include_path = '';
14
+
15
+ /**
16
+ * The Constructor
17
+ */
18
+ public function __construct() {
19
+ add_filter( 'template_include', array( $this, 'template_loader' ) );
20
+ }
21
+
22
+ public function template_loader( $template ) {
23
+ $post_type = get_post_type();
24
+
25
+ $file = '';
26
+ $find = array();
27
+ if ( $post_type !== 'tp_event' )
28
+ return $template;
29
+
30
+ if ( is_post_type_archive( 'tp_event' ) || is_tax( 'tp_event_category' ) ) {
31
+ $file = 'archive-event.php';
32
+ $find[] = $file;
33
+ $find[] = wpems_template_path() . '/' . $file;
34
+ } else if ( is_single() ) {
35
+ $file = 'single-event.php';
36
+ $find[] = $file;
37
+ $find[] = wpems_template_path() . '/' . $file;
38
+ }
39
+
40
+ if ( $file ) {
41
+ $find[] = wpems_template_path() . $file;
42
+ $template = locate_template( array_unique( $find ) );
43
+ if ( !$template ) {
44
+ $template = untrailingslashit( WPEMS_PATH ) . '/templates/' . $file;
45
+ }
46
+ }
47
+
48
+ return $template;
49
+ }
50
+ }
51
+
52
+ new WPEMS_Template();
inc/class-wpems-user-process.php ADDED
@@ -0,0 +1,226 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( !defined( 'ABSPATH' ) ) {
4
+ exit;
5
+ }
6
+
7
+ class WPEMS_User_Process {
8
+
9
+ private static $login_url = null;
10
+ private static $register_url = null;
11
+ private static $forgot_url = null;
12
+ private static $account_url = null;
13
+ private static $reset_url = null;
14
+ private static $session = null;
15
+
16
+ public static function init() {
17
+ /**
18
+ * Process Register
19
+ * Login
20
+ * Lost Password
21
+ * Reset Password
22
+ */
23
+ add_action( 'init', array( __CLASS__, 'user_process_init' ), 10 );
24
+ add_action( 'init', array( __CLASS__, 'process_register' ), 50 );
25
+ add_action( 'init', array( __CLASS__, 'process_login' ), 50 );
26
+ add_action( 'init', array( __CLASS__, 'process_lost_password' ), 50 );
27
+ add_action( 'init', array( __CLASS__, 'process_reset_password' ), 50 );
28
+
29
+ // process
30
+ add_action( 'wp_logout', array( __CLASS__, 'wp_logout' ) );
31
+ }
32
+
33
+ public static function user_process_init() {
34
+
35
+ self::$login_url = wpems_login_url();
36
+
37
+ self::$register_url = wpems_register_url();
38
+
39
+ self::$forgot_url = wpems_forgot_password_url();
40
+
41
+ self::$account_url = wpems_account_url();
42
+
43
+ self::$reset_url = wpems_reset_password_url();
44
+ }
45
+
46
+ // redirect logout
47
+ public static function wp_logout() {
48
+ wpems_add_notice( 'success', sprintf( '%s', __( 'You have been sign out!', 'wp-events-manager' ) ) );
49
+ wp_safe_redirect( self::$login_url );
50
+ exit();
51
+ }
52
+
53
+ /**
54
+ * Process Register
55
+ */
56
+ public static function process_register() {
57
+ if ( empty( $_POST['auth-nonce'] ) || !wp_verify_nonce( $_POST['auth-nonce'], 'auth-reigter-nonce' ) ) {
58
+ return;
59
+ }
60
+
61
+ $username = !empty( $_POST['user_login'] ) ? $_POST['user_login'] : '';
62
+ $email = !empty( $_POST['user_email'] ) ? $_POST['user_email'] : '';
63
+ $password = !empty( $_POST['user_pass'] ) ? $_POST['user_pass'] : '';
64
+ $password1 = !empty( $_POST['confirm_password'] ) ? $_POST['confirm_password'] : '';
65
+
66
+ $user_id = wpems_create_new_user( apply_filters( 'event_auth_user_process_register_data', array(
67
+ 'username' => $username, 'email' => $email, 'password' => $password, 'confirm_password' => $password1
68
+ ) ) );
69
+
70
+ if ( is_wp_error( $user_id ) ) {
71
+ $fields = array();
72
+ foreach ( $user_id->errors as $code => $message ) {
73
+ if ( !$message[0] )
74
+ continue;
75
+ if ( wpems_is_ajax() ) {
76
+ $fields[$code] = $message[0];
77
+ } else {
78
+ wpems_add_notice( 'error', $message[0] );
79
+ }
80
+ }
81
+ if ( wpems_is_ajax() ) {
82
+ wp_send_json( array( 'status' => false, 'fields' => $fields ) );
83
+ }
84
+ } else {
85
+
86
+ $url = wp_get_referer();
87
+ if ( !$url ) {
88
+ $url = self::$register_url;
89
+ }
90
+
91
+ // not enable option 'register_notify' login user now
92
+ $send_notify = wpems_get_option( 'register_notify', true );
93
+ if ( !$send_notify ) {
94
+ wp_set_auth_cookie( $user_id, true, is_ssl() );
95
+ } else {
96
+ $url = add_query_arg( 'registered', $email, self::$register_url );
97
+ }
98
+
99
+ if ( wpems_is_ajax() ) {
100
+ wp_send_json( array( 'status' => true, 'redirect' => $url ) );
101
+ } else {
102
+ wp_safe_redirect( $url );
103
+ exit();
104
+ }
105
+ }
106
+ }
107
+
108
+ /**
109
+ * Process Login
110
+ */
111
+ public static function process_login() {
112
+
113
+ $nonce_value = isset( $_POST['_wpnonce'] ) ? sanitize_text_field( $_POST['_wpnonce'] ) : '';
114
+ $nonce_value = isset( $_POST['auth-nonce'] ) ? sanitize_text_field( $_POST['auth-nonce'] ) : $nonce_value;
115
+
116
+ if ( !wp_verify_nonce( $nonce_value, 'auth-login-nonce' ) ) {
117
+ return;
118
+ }
119
+ $redirect = self::$account_url;
120
+ if ( !empty( $_POST['redirect_to'] ) && $_POST['redirect_to'] !== '/wp-admin/admin-ajax.php' ) {
121
+ $redirect = esc_url( $_POST['redirect_to'] );
122
+ } elseif ( wp_get_referer() ) {
123
+ $redirect = wp_get_referer();
124
+ }
125
+
126
+ $redirect = strpos( $redirect, '/wp-admin/admin-ajax.php' ) ? self::$account_url : $redirect;
127
+
128
+ try {
129
+
130
+ $creds = array();
131
+ $username = !empty( $_POST['user_login'] ) ? sanitize_text_field( trim( $_POST['user_login'] ) ) : '';
132
+ $password = !empty( $_POST['user_pass'] ) ? sanitize_text_field( trim( $_POST['user_pass'] ) ) : '';
133
+
134
+ $validation_error = new WP_Error();
135
+ $validation_error = apply_filters( 'event_auth_process_login_errors', $validation_error, $username, $password );
136
+
137
+ if ( $validation_error->get_error_code() ) {
138
+ wpems_add_notice( 'error', '<strong>' . __( 'ERROR', 'wp-events-manager' ) . ':</strong> ' . $validation_error->get_error_message() );
139
+ }
140
+
141
+ if ( empty( $username ) ) {
142
+ wpems_add_notice( 'error', '<strong>' . __( 'ERROR', 'wp-events-manager' ) . ':</strong> ' . __( 'Username is required.', 'wp-events-manager' ) );
143
+ }
144
+
145
+ if ( empty( $_POST['user_pass'] ) ) {
146
+ wpems_add_notice( 'error', '<strong>' . __( 'ERROR', 'wp-events-manager' ) . ':</strong> ' . __( 'Password is required.', 'wp-events-manager' ) );
147
+ }
148
+
149
+ if ( is_email( $username ) && apply_filters( 'event_auth_get_username_from_email', true ) ) {
150
+ $user = get_user_by( 'email', $username );
151
+
152
+ if ( isset( $user->user_login ) ) {
153
+ $creds['user_login'] = $user->user_login;
154
+ } else {
155
+ wpems_add_notice( 'error', '<strong>' . __( 'ERROR', 'wp-events-manager' ) . ':</strong> ' . __( 'A user could not be found with this email address.', 'wp-events-manager' ) );
156
+ }
157
+ } else {
158
+ $creds['user_login'] = $username;
159
+ }
160
+
161
+ $creds['user_password'] = $password;
162
+ $creds['remember'] = isset( $_POST['rememberme'] );
163
+ $secure_cookie = is_ssl() ? true : false;
164
+
165
+ if ( !wpems_has_notice( 'error' ) ) {
166
+ $user = wp_signon( apply_filters( 'event_auth_login_credentials', $creds ), $secure_cookie );
167
+
168
+ if ( is_wp_error( $user ) ) {
169
+ $message = $user->get_error_message();
170
+ $message = str_replace( wp_lostpassword_url(), self::$forgot_url, $message );
171
+ $message = str_replace( '<strong>' . esc_html( $creds['user_login'] ) . '</strong>', '<strong>' . esc_html( $username ) . '</strong>', $message );
172
+ wpems_add_notice( 'error', $message );
173
+
174
+ // break
175
+ throw new Exception;
176
+ } else {
177
+ wpems_add_notice( 'success', __( 'You have logged in', 'wp-events-manager' ) );
178
+
179
+ if ( !defined( 'DOING_AJAX' ) || !DOING_AJAX ) {
180
+ wp_redirect( apply_filters( 'event_auth_login_redirect', $redirect, $user ) );
181
+ exit;
182
+ } else {
183
+ $response = array();
184
+ $response['status'] = true;
185
+ $response['redirect'] = apply_filters( 'event_auth_ajax_login_redirect', $redirect );
186
+ ob_start();
187
+ wpems_print_notices();
188
+ $response['notices'] = ob_get_clean();
189
+ wp_send_json( $response );
190
+ }
191
+ }
192
+ }
193
+ } catch ( Exception $ex ) {
194
+ if ( $ex ) {
195
+ wpems_add_notice( 'error', $ex->getMessage() );
196
+ }
197
+ }
198
+
199
+ if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
200
+ $response = array();
201
+ $response['status'] = false;
202
+ $response['redirect'] = apply_filters( 'event_auth_ajax_login_redirect', $redirect );
203
+ ob_start();
204
+ wpems_print_notices();
205
+ $response['notices'] = ob_get_clean();
206
+ wp_send_json( $response );
207
+ }
208
+ }
209
+
210
+ /**
211
+ * Process Lost Password
212
+ */
213
+ public static function process_lost_password() {
214
+
215
+ }
216
+
217
+ /**
218
+ * Process Reset Password
219
+ */
220
+ public static function process_reset_password() {
221
+
222
+ }
223
+
224
+ }
225
+
226
+ WPEMS_User_Process::init();
inc/emails/class-wpems-register-event.php ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( !defined( 'ABSPATH' ) ) {
4
+ exit;
5
+ }
6
+
7
+ /**
8
+ *
9
+ */
10
+ class WPEMS_Email_Register_Event {
11
+
12
+ public function __construct() {
13
+
14
+ add_action( 'tp_event_updated_status', array( $this, 'email_register' ), 10, 3 );
15
+ }
16
+
17
+ // send email
18
+ public function email_register( $booking_id, $old_status, $status ) {
19
+
20
+ if ( $old_status === $status ) {
21
+ return;
22
+ }
23
+
24
+ if ( !$booking_id ) {
25
+ throw new Exception( sprintf( __( 'Error %s booking ID', 'wp-events-manager' ), $booking_id ) );
26
+ }
27
+
28
+ if ( wpems_get_option( 'email_enable', 'yes' ) === 'no' ) {
29
+ return;
30
+ }
31
+
32
+ $booking = WPEMS_Booking::instance( $booking_id );
33
+
34
+ if ( $booking ) {
35
+ $user_id = $booking->user_id;
36
+ if ( !$user_id ) {
37
+ throw new Exception( __( 'User is not exists!', 'wp-events-manager' ) );
38
+ die();
39
+ }
40
+ $user = get_userdata( $user_id );
41
+
42
+ $email_subject = wpems_get_option( 'email_subject', '' );
43
+
44
+ $headers[] = 'Content-Type: text/html; charset=UTF-8';
45
+ // set mail from email
46
+ add_filter( 'wp_mail_from', array( $this, 'email_from' ) );
47
+ // set mail from name
48
+ add_filter( 'wp_mail_from_name', array( $this, 'from_name' ) );
49
+
50
+ if ( $user && $to = $user->data->user_email ) {
51
+ $email_content = wpems_get_template_content( 'emails/register-event.php', array( 'booking' => $booking, 'user' => $user ) );
52
+
53
+ return wp_mail( $to, $email_subject, stripslashes( $email_content ), $headers );
54
+ }
55
+ }
56
+ }
57
+
58
+ // set from email
59
+ public function email_from( $email ) {
60
+ if ( $email = wpems_get_option( 'admin_email', get_option( 'admin_email' ) ) ) {
61
+ if ( filter_var( $email, FILTER_VALIDATE_EMAIL ) ) {
62
+ return $email;
63
+ }
64
+ }
65
+ return $email;
66
+ }
67
+
68
+ // set from name
69
+ public function from_name( $name ) {
70
+ if ( $name = wpems_get_option( 'email_from_name' ) ) {
71
+ return $name;
72
+ }
73
+ return $name;
74
+ }
75
+
76
+ }
77
+
78
+ new WPEMS_Email_Register_Event();
inc/gateways/paypal/class-wpems-payment-gateway-paypal.php ADDED
@@ -0,0 +1,251 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+
6
+ class WPEMS_Payment_Gateway_Paypal extends WPEMS_Abstract_Payment_Gateway {
7
+
8
+ /**
9
+ * id of payment
10
+ * @var null
11
+ */
12
+ public $id = 'paypal';
13
+ // title
14
+ public $title = null;
15
+ // email
16
+ protected $paypal_email = null;
17
+ // url
18
+ protected $paypal_url = null;
19
+ // payment url
20
+ protected $paypal_payment_url = null;
21
+ // enable
22
+ protected static $enable = false;
23
+
24
+ public function __construct() {
25
+ $this->title = __( 'PayPal', 'wp-events-manager' );
26
+ $this->icon = WPEMS_INC_URI . '/gateways/' . $this->id . '/' . $this->id . '.png';
27
+ parent::__construct();
28
+
29
+ // production environment
30
+ $this->paypal_url = 'https://www.paypal.com/';
31
+ $this->paypal_payment_url = 'https://www.paypal.com/cgi-bin/webscr';
32
+ $this->paypal_email = wpems_get_option( 'paypal_email' ) ? wpems_get_option( 'paypal_email' ) : '';
33
+
34
+ if ( wpems_get_option( 'paypal_sandbox_mode' ) ) {
35
+ $this->paypal_url = 'https://www.sandbox.paypal.com/';
36
+ $this->paypal_payment_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
37
+ $this->paypal_email = wpems_get_option( 'paypal_sanbox_email' ) ? wpems_get_option( 'paypal_sanbox_email' ) : '';
38
+ }
39
+
40
+ // // init process
41
+ add_action( 'init', array( $this, 'payment_validation' ), 99 );
42
+ }
43
+
44
+ /*
45
+ * Check gateway available
46
+ */
47
+ public function is_available() {
48
+ return true;
49
+ }
50
+
51
+ /*
52
+ * Check gateway enable
53
+ */
54
+ public function is_enable() {
55
+ self::$enable = !empty( $this->paypal_email ) && wpems_get_option( 'paypal_enable' ) === 'yes';
56
+ return apply_filters( 'tp_event_enable_paypal_payment', self::$enable );
57
+ }
58
+
59
+
60
+ // callback
61
+ public function payment_validation() {
62
+ if ( isset( $_GET['event-auth-paypal-payment'] ) && $_GET['event-auth-paypal-payment'] ) {
63
+ if ( !isset( $_GET['tp-event-paypal-nonce'] ) || !wp_verify_nonce( $_GET['tp-event-paypal-nonce'], 'tp-event-paypal-nonce' ) ) {
64
+ return;
65
+ }
66
+
67
+ if ( sanitize_text_field( $_GET['event-auth-paypal-payment'] ) === 'completed' ) {
68
+ wpems_add_notice( 'success', sprintf( __( 'Payment is completed. We will send you email when payment status is completed', 'wp-events-manager' ) ) );
69
+ } else if ( sanitize_text_field( $_GET['event-auth-paypal-payment'] ) === 'cancel' ) {
70
+ wpems_add_notice( 'success', sprintf( __( 'Booking is cancel.', 'wp-events-manager' ) ) );
71
+ }
72
+ // redirect
73
+ $url = add_query_arg( array( 'tp-event-paypal-nonce' => esc_url( $_GET['tp-event-paypal-nonce'] )), wpems_account_url() );
74
+ wp_redirect( $url );
75
+ exit();
76
+ }
77
+
78
+ // validate payment notify_url, update status
79
+ if ( !empty( $_POST ) && isset( $_POST['txn_type'] ) && $_POST['txn_type'] === 'web_accept' ) {
80
+ if ( !isset( $_POST['payment_status'] ) )
81
+ return;
82
+
83
+ if ( empty( $_POST['custom'] ) )
84
+ return;
85
+
86
+ // transaction object
87
+ $transaction_subject = stripcslashes( $_POST['custom'] );
88
+ $transaction_subject = json_decode( $transaction_subject );
89
+
90
+ $booking_id = false;
91
+ if ( !isset( $transaction_subject->booking_id ) || !$booking_id = $transaction_subject->booking_id )
92
+ return;
93
+
94
+ $book = WPEMS_Booking::instance( $booking_id );
95
+
96
+ // santitize
97
+ $pay_verify = array_merge( array( 'cmd' => '_notify-validate' ), array_map( 'stripcslashes', $_POST ) );
98
+
99
+ $paypal_api_url = isset( $_POST['test_ipn'] ) && $_POST['test_ipn'] == 1 ? 'https://www.sandbox.paypal.com/cgi-bin/webscr' : 'https://www.paypal.com/cgi-bin/webscr';
100
+
101
+ // $response = wp_remote_post( $paypal_api_url, array( 'body' => $pay_verify ) );
102
+ $params = array(
103
+ 'body' => $pay_verify,
104
+ 'timeout' => 60,
105
+ 'httpversion' => '1.1',
106
+ 'compress' => false,
107
+ 'decompress' => false,
108
+ 'user-agent' => 'Event'
109
+ );
110
+ $response = wp_safe_remote_post( $paypal_api_url, $params );
111
+
112
+ if ( !is_wp_error( $response ) && wp_remote_retrieve_response_code( $response ) === 200 ) {
113
+ $body = wp_remote_retrieve_body( $response );
114
+
115
+ if ( strtolower( $body ) === 'verified' ) {
116
+ // payment status
117
+ $payment_status = strtolower( $_POST['payment_status'] );
118
+
119
+ if ( in_array( $payment_status, array( 'pending', 'completed' ) ) ) {
120
+ $status = 'ea-completed';
121
+ $book->update_status( $status );
122
+ }
123
+ }
124
+ }
125
+ }
126
+ }
127
+
128
+ /**
129
+ * fields settings
130
+ * @return array
131
+ */
132
+ public function admin_fields() {
133
+ $prefix = 'thimpress_events_';
134
+ $paypal_enable = wpems_get_option( 'paypal_enable' );
135
+ return apply_filters( 'tp_event_paypal_admin_fields', array(
136
+ array(
137
+ 'type' => 'section_start',
138
+ 'id' => 'paypal_settings',
139
+ 'title' => __( 'Paypal Settings', 'wp-events-manager' ),
140
+ 'desc' => esc_html__( 'Make payment via Paypal', 'wp-events-manager' )
141
+ ),
142
+ array(
143
+ 'type' => 'yes_no',
144
+ 'title' => __( 'Enable', 'wp-events-manager' ),
145
+ 'id' => $prefix . 'paypal_enable',
146
+ 'default' => 'no',
147
+ 'desc' => apply_filters( 'tp_event_filter_enable_paypal_gateway', '' )
148
+ ),
149
+ array(
150
+ 'type' => 'text',
151
+ 'title' => __( 'Paypal email', 'wp-events-manager' ),
152
+ 'id' => $prefix . 'paypal_email',
153
+ 'default' => '',
154
+ 'class' => 'paypal-production-email' . ( $paypal_enable == 'no' ? ' hide-if-js' : '' )
155
+ ),
156
+ array(
157
+ 'type' => 'checkbox',
158
+ 'title' => __( 'Sandbox mode', 'wp-events-manager' ),
159
+ 'id' => $prefix . 'paypal_sandbox_mode',
160
+ 'default' => false,
161
+ 'class' => 'paypal-sandbox-mode' . ( $paypal_enable == 'no' ? ' hide-if-js' : '' )
162
+ ),
163
+ array(
164
+ 'type' => 'text',
165
+ 'title' => __( 'Paypal Sandbox email', 'wp-events-manager' ),
166
+ 'id' => $prefix . 'paypal_sanbox_email',
167
+ 'default' => '',
168
+ 'class' => 'paypal-sandbox-email' . ( $paypal_enable == 'no' ? ' hide-if-js' : '' )
169
+ ),
170
+ array(
171
+ 'type' => 'section_end',
172
+ 'id' => 'paypal_settings'
173
+ )
174
+ ) );
175
+ }
176
+
177
+ /**
178
+ * get_item_name
179
+ * @return string
180
+ */
181
+ public function get_item_name( $booking_id = null ) {
182
+ if ( !$booking_id )
183
+ return;
184
+
185
+ // book
186
+ $book = WPEMS_Booking::instance( $booking_id );
187
+ $description = sprintf( '%s(%s)', $book->post->post_title, wpems_format_price( $book->price, $book->currency ) );
188
+
189
+ return $description;
190
+ }
191
+
192
+ /**
193
+ * checkout url
194
+ * @return url string
195
+ */
196
+ public function checkout_url( $booking_id = false ) {
197
+ if ( !$booking_id ) {
198
+ wp_send_json( array(
199
+ 'status' => false,
200
+ 'message' => __( 'Booking ID is not exists!', 'wp-events-manager' )
201
+ ) );
202
+ die();
203
+ }
204
+ // book
205
+ $book = wpems_get_booking( $booking_id );
206
+
207
+ // create nonce
208
+ $nonce = wp_create_nonce( 'tp-event-paypal-nonce' );
209
+
210
+ $user = get_userdata( $book->user_id );
211
+ $email = $user->user_email;
212
+
213
+ // query post
214
+ $query = array(
215
+ 'cmd' => '_xclick',
216
+ 'amount' => (float) $book->price,
217
+ 'quantity' => '1',
218
+ 'business' => $this->paypal_email, // business email paypal
219
+ 'item_name' => $this->get_item_name( $booking_id ),
220
+ 'currency_code' => wpems_get_currency(),
221
+ 'notify_url' => home_url(),
222
+ 'no_note' => '1',
223
+ 'shipping' => '0',
224
+ 'email' => $email,
225
+ 'rm' => '2',
226
+ 'no_shipping' => '1',
227
+ 'return' => add_query_arg( array( 'event-auth-paypal-payment' => 'completed', 'tp-event-paypal-nonce' => $nonce ), wpems_account_url() ),
228
+ 'cancel_return' => add_query_arg( array( 'event-auth-paypal-payment' => 'cancel', 'tp-event-paypal-nonce' => $nonce ), wpems_account_url() ),
229
+ 'custom' => json_encode( array( 'booking_id' => $booking_id, 'user_id' => $book->user_id ) )
230
+ );
231
+
232
+ // allow hook paypal param
233
+ $query = apply_filters( 'tp_event_paypal_payment_params', $query );
234
+
235
+ return $this->paypal_payment_url . '?' . http_build_query( $query );
236
+ }
237
+
238
+ public function process( $amount = false ) {
239
+ if ( !$this->is_available() ) {
240
+ return array(
241
+ 'status' => false,
242
+ 'message' => __( 'Email Business PayPal is invalid. Please contact administrator to setup PayPal email.', 'wp-events-manager' )
243
+ );
244
+ }
245
+ return array(
246
+ 'status' => true,
247
+ 'url' => $this->checkout_url( $amount )
248
+ );
249
+ }
250
+
251
+ }
inc/gateways/paypal/paypal.png ADDED
Binary file
inc/libraries/bootstrap/css/bootstrap-theme.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left 0,left 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,0%,#e6e6e6,100%);background-image:-moz-linear-gradient(top,#fff 0,#e6e6e6 100%);background-image:linear-gradient(to bottom,#fff 0,#e6e6e6 100%);background-repeat:repeat-x;border-color:#e0e0e0;border-color:#ccc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0)}.btn-default:active,.btn-default.active{background-color:#e6e6e6;border-color:#e0e0e0}.btn-primary{background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#3071a9));background-image:-webkit-linear-gradient(top,#428bca,0%,#3071a9,100%);background-image:-moz-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;border-color:#2d6ca2;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3071a9',GradientType=0)}.btn-primary:active,.btn-primary.active{background-color:#3071a9;border-color:#2d6ca2}.btn-success{background-image:-webkit-gradient(linear,left 0,left 100%,from(#5cb85c),to(#449d44));background-image:-webkit-linear-gradient(top,#5cb85c,0%,#449d44,100%);background-image:-moz-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;border-color:#419641;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0)}.btn-success:active,.btn-success.active{background-color:#449d44;border-color:#419641}.btn-warning{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f0ad4e),to(#ec971f));background-image:-webkit-linear-gradient(top,#f0ad4e,0%,#ec971f,100%);background-image:-moz-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;border-color:#eb9316;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0)}.btn-warning:active,.btn-warning.active{background-color:#ec971f;border-color:#eb9316}.btn-danger{background-image:-webkit-gradient(linear,left 0,left 100%,from(#d9534f),to(#c9302c));background-image:-webkit-linear-gradient(top,#d9534f,0%,#c9302c,100%);background-image:-moz-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;border-color:#c12e2a;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0)}.btn-danger:active,.btn-danger.active{background-color:#c9302c;border-color:#c12e2a}.btn-info{background-image:-webkit-gradient(linear,left 0,left 100%,from(#5bc0de),to(#31b0d5));background-image:-webkit-linear-gradient(top,#5bc0de,0%,#31b0d5,100%);background-image:-moz-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;border-color:#2aabd2;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0)}.btn-info:active,.btn-info.active{background-color:#31b0d5;border-color:#2aabd2}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#357ebd;background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#357ebd));background-image:-webkit-linear-gradient(top,#428bca,0%,#357ebd,100%);background-image:-moz-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.navbar{background-image:-webkit-gradient(linear,left 0,left 100%,from(#fff),to(#f8f8f8));background-image:-webkit-linear-gradient(top,#fff,0%,#f8f8f8,100%);background-image:-moz-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff8f8f8',GradientType=0);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.navbar .navbar-nav>.active>a{background-color:#f8f8f8}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.navbar-inverse{background-image:-webkit-gradient(linear,left 0,left 100%,from(#3c3c3c),to(#222));background-image:-webkit-linear-gradient(top,#3c3c3c,0%,#222,100%);background-image:-moz-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c',endColorstr='#ff222222',GradientType=0)}.navbar-inverse .navbar-nav>.active>a{background-color:#222}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05)}.alert-success{background-image:-webkit-gradient(linear,left 0,left 100%,from(#dff0d8),to(#c8e5bc));background-image:-webkit-linear-gradient(top,#dff0d8,0%,#c8e5bc,100%);background-image:-moz-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border-color:#b2dba1;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffc8e5bc',GradientType=0)}.alert-info{background-image:-webkit-gradient(linear,left 0,left 100%,from(#d9edf7),to(#b9def0));background-image:-webkit-linear-gradient(top,#d9edf7,0%,#b9def0,100%);background-image:-moz-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffb9def0',GradientType=0)}.alert-warning{background-image:-webkit-gradient(linear,left 0,left 100%,from(#fcf8e3),to(#f8efc0));background-image:-webkit-linear-gradient(top,#fcf8e3,0%,#f8efc0,100%);background-image:-moz-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);background-repeat:repeat-x;border-color:#f5e79e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fff8efc0',GradientType=0)}.alert-danger{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f2dede),to(#e7c3c3));background-image:-webkit-linear-gradient(top,#f2dede,0%,#e7c3c3,100%);background-image:-moz-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);background-repeat:repeat-x;border-color:#dca7a7;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffe7c3c3',GradientType=0)}.progress{background-image:-webkit-gradient(linear,left 0,left 100%,from(#ebebeb),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#ebebeb,0%,#f5f5f5,100%);background-image:-moz-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff5f5f5',GradientType=0)}.progress-bar{background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#3071a9));background-image:-webkit-linear-gradient(top,#428bca,0%,#3071a9,100%);background-image:-moz-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3071a9',GradientType=0)}.progress-bar-success{background-image:-webkit-gradient(linear,left 0,left 100%,from(#5cb85c),to(#449d44));background-image:-webkit-linear-gradient(top,#5cb85c,0%,#449d44,100%);background-image:-moz-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0)}.progress-bar-info{background-image:-webkit-gradient(linear,left 0,left 100%,from(#5bc0de),to(#31b0d5));background-image:-webkit-linear-gradient(top,#5bc0de,0%,#31b0d5,100%);background-image:-moz-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0)}.progress-bar-warning{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f0ad4e),to(#ec971f));background-image:-webkit-linear-gradient(top,#f0ad4e,0%,#ec971f,100%);background-image:-moz-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0)}.progress-bar-danger{background-image:-webkit-gradient(linear,left 0,left 100%,from(#d9534f),to(#c9302c));background-image:-webkit-linear-gradient(top,#d9534f,0%,#c9302c,100%);background-image:-moz-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#3278b3));background-image:-webkit-linear-gradient(top,#428bca,0%,#3278b3,100%);background-image:-moz-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3278b3',GradientType=0)}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.panel-default>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f5f5f5),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#f5f5f5,0%,#e8e8e8,100%);background-image:-moz-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#357ebd));background-image:-webkit-linear-gradient(top,#428bca,0%,#357ebd,100%);background-image:-moz-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#dff0d8),to(#d0e9c6));background-image:-webkit-linear-gradient(top,#dff0d8,0%,#d0e9c6,100%);background-image:-moz-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffd0e9c6',GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#d9edf7),to(#c4e3f3));background-image:-webkit-linear-gradient(top,#d9edf7,0%,#c4e3f3,100%);background-image:-moz-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffc4e3f3',GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#fcf8e3),to(#faf2cc));background-image:-webkit-linear-gradient(top,#fcf8e3,0%,#faf2cc,100%);background-image:-moz-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fffaf2cc',GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f2dede),to(#ebcccc));background-image:-webkit-linear-gradient(top,#f2dede,0%,#ebcccc,100%);background-image:-moz-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffebcccc',GradientType=0)}.well{background-image:-webkit-gradient(linear,left 0,left 100%,from(#e8e8e8),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#e8e8e8,0%,#f5f5f5,100%);background-image:-moz-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8',endColorstr='#fff5f5f5',GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1)}
inc/libraries/bootstrap/css/bootstrap.min.css ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Bootstrap v3.0.0
3
+ *
4
+ * Copyright 2013 Twitter, Inc
5
+ * Licensed under the Apache License v2.0
6
+ * http://www.apache.org/licenses/LICENSE-2.0
7
+ *
8
+ * Designed and built with all the love in the world by @mdo and @fat.
9
+ *//*! normalize.css v2.1.0 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{margin:.67em 0;font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid #c0c0c0}legend{padding:0;border:0}button,input,select,textarea{margin:0;font-family:inherit;font-size:100%}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{padding:0;box-sizing:border-box}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:2cm .5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}button,input,select[multiple],textarea{background-image:none}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}img{vertical-align:middle}.img-responsive{display:block;height:auto;max-width:100%}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16.099999999999998px;font-weight:200;line-height:1.4}@media(min-width:768px){.lead{font-size:21px}}small{font-size:85%}cite{font-style:normal}.text-muted{color:#999}.text-primary{color:#428bca}.text-warning{color:#c09853}.text-danger{color:#b94a48}.text-success{color:#468847}.text-info{color:#3a87ad}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{margin-top:20px;margin-bottom:10px}h4,h5,h6{margin-top:10px;margin-bottom:10px}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}h1 small,.h1 small{font-size:24px}h2 small,.h2 small{font-size:18px}h3 small,.h3 small,h4 small,.h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dt,dd{line-height:1.428571429}dt{font-weight:bold}dd{margin-left:0}@media(min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}blockquote p:last-child{margin-bottom:0}blockquote small{display:block;line-height:1.428571429;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:1.428571429}code,pre{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.row{margin-right:-15px;margin-left:-15px}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11{float:left}.col-xs-1{width:8.333333333333332%}.col-xs-2{width:16.666666666666664%}.col-xs-3{width:25%}.col-xs-4{width:33.33333333333333%}.col-xs-5{width:41.66666666666667%}.col-xs-6{width:50%}.col-xs-7{width:58.333333333333336%}.col-xs-8{width:66.66666666666666%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333333334%}.col-xs-11{width:91.66666666666666%}.col-xs-12{width:100%}@media(min-width:768px){.container{max-width:750px}.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11{float:left}.col-sm-1{width:8.333333333333332%}.col-sm-2{width:16.666666666666664%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333333333%}.col-sm-5{width:41.66666666666667%}.col-sm-6{width:50%}.col-sm-7{width:58.333333333333336%}.col-sm-8{width:66.66666666666666%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333333334%}.col-sm-11{width:91.66666666666666%}.col-sm-12{width:100%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-11{left:91.66666666666666%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-11{margin-left:91.66666666666666%}}@media(min-width:992px){.container{max-width:970px}.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11{float:left}.col-md-1{width:8.333333333333332%}.col-md-2{width:16.666666666666664%}.col-md-3{width:25%}.col-md-4{width:33.33333333333333%}.col-md-5{width:41.66666666666667%}.col-md-6{width:50%}.col-md-7{width:58.333333333333336%}.col-md-8{width:66.66666666666666%}.col-md-9{width:75%}.col-md-10{width:83.33333333333334%}.col-md-11{width:91.66666666666666%}.col-md-12{width:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.333333333333332%}.col-md-push-2{left:16.666666666666664%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333333333%}.col-md-push-5{left:41.66666666666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.333333333333336%}.col-md-push-8{left:66.66666666666666%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333333334%}.col-md-push-11{left:91.66666666666666%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-11{right:91.66666666666666%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-11{margin-left:91.66666666666666%}}@media(min-width:1200px){.container{max-width:1170px}.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11{float:left}.col-lg-1{width:8.333333333333332%}.col-lg-2{width:16.666666666666664%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333333333%}.col-lg-5{width:41.66666666666667%}.col-lg-6{width:50%}.col-lg-7{width:58.333333333333336%}.col-lg-8{width:66.66666666666666%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333333334%}.col-lg-11{width:91.66666666666666%}.col-lg-12{width:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-11{left:91.66666666666666%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-11{margin-left:91.66666666666666%}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table thead>tr>th,.table tbody>tr>th,.table tfoot>tr>th,.table thead>tr>td,.table tbody>tr>td,.table tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.table thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table caption+thead tr:first-child th,.table colgroup+thead tr:first-child th,.table thead:first-child tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed thead>tr>th,.table-condensed tbody>tr>th,.table-condensed tfoot>tr>th,.table-condensed thead>tr>td,.table-condensed tbody>tr>td,.table-condensed tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{display:table-column;float:none}table td[class*="col-"],table th[class*="col-"]{display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8;border-color:#d6e9c6}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td{background-color:#d0e9c6;border-color:#c9e2b3}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede;border-color:#eed3d7}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td{background-color:#ebcccc;border-color:#e6c1c7}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3;border-color:#fbeed5}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td{background-color:#faf2cc;border-color:#f8e5be}@media(max-width:768px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0;background-color:#fff}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>thead>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>thead>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}select[multiple],select[size]{height:auto}select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type="number"]::-webkit-outer-spin-button,input[type="number"]::-webkit-inner-spin-button{height:auto}.form-control:-moz-placeholder{color:#999}.form-control::-moz-placeholder{color:#999}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}textarea.form-control{height:auto}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.radio label,.checkbox label{display:inline;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:normal;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm{height:auto}.input-lg{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:45px;line-height:45px}textarea.input-lg{height:auto}.has-warning .help-block,.has-warning .control-label{color:#c09853}.has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.has-warning .input-group-addon{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.has-error .help-block,.has-error .control-label{color:#b94a48}.has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.has-error .input-group-addon{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.has-success .help-block,.has-success .control-label{color:#468847}.has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.has-success .input-group-addon{color:#468847;background-color:#dff0d8;border-color:#468847}.form-control-static{padding-top:7px;margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media(min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block}.form-inline .radio,.form-inline .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}@media(min-width:768px){.form-horizontal .control-label{text-align:right}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:normal;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;border:1px solid transparent;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-link{font-weight:normal;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-xs{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;line-height:1}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-print:before{content:"\e045"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-briefcase:before{content:"\1f4bc"}.glyphicon-calendar:before{content:"\1f4c5"}.glyphicon-pushpin:before{content:"\1f4cc"}.glyphicon-paperclip:before{content:"\1f4ce"}.glyphicon-camera:before{content:"\1f4f7"}.glyphicon-lock:before{content:"\1f512"}.glyphicon-bell:before{content:"\1f514"}.glyphicon-bookmark:before{content:"\1f516"}.glyphicon-fire:before{content:"\1f525"}.glyphicon-wrench:before{content:"\1f527"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid #000;border-right:4px solid transparent;border-bottom:0 dotted;border-left:4px solid transparent;content:""}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#fff;text-decoration:none;background-color:#428bca}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0 dotted;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media(min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.btn-default .caret{border-top-color:#333}.btn-primary .caret,.btn-success .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret{border-top-color:#fff}.dropup .btn-default .caret{border-bottom-color:#333}.dropup .btn-primary .caret,.dropup .btn-success .caret,.dropup .btn-warning .caret,.dropup .btn-danger .caret,.dropup .btn-info .caret{border-bottom-color:#fff}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group{float:left}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group,.btn-toolbar>.btn-group+.btn-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:5px 10px;padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.btn-group-justified .btn{display:table-cell;float:none;width:1%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group.col{float:none;padding-right:0;padding-left:0}.input-group .form-control{width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:45px;line-height:45px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-4px}.input-group-btn>.btn:hover,.input-group-btn>.btn:active{z-index:2}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center}@media(min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}}.nav-tabs.nav-justified>li>a{margin-right:0;border-bottom:1px solid #ddd}.nav-tabs.nav-justified>.active>a{border-bottom-color:#fff}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:5px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center}@media(min-width:768px){.nav-justified>li{display:table-cell;width:1%}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-bottom:1px solid #ddd}.nav-tabs-justified>.active>a{border-bottom-color:#fff}.tabbable:before,.tabbable:after{display:table;content:" "}.tabbable:after{clear:both}.tabbable:before,.tabbable:after{display:table;content:" "}.tabbable:after{clear:both}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.nav .caret{border-top-color:#428bca;border-bottom-color:#428bca}.nav a:hover .caret{border-top-color:#2a6496;border-bottom-color:#2a6496}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;z-index:1000;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}@media(min-width:768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}@media(min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media(min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-collapse .navbar-nav.navbar-left:first-child{margin-left:-15px}.navbar-collapse .navbar-nav.navbar-right:last-child{margin-right:-15px}.navbar-collapse .navbar-text:last-child{margin-right:0}}.container>.navbar-header,.container>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media(min-width:768px){.container>.navbar-header,.container>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{border-width:0 0 1px}@media(min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;border-width:0 0 1px}@media(min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;z-index:1030}.navbar-fixed-bottom{bottom:0;margin-bottom:0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media(min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:4px}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media(min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media(max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media(min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}@media(min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}@media(min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}}@media(max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media(min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-nav.pull-right>li>.dropdown-menu,.navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-text{float:left;margin-top:15px;margin-bottom:15px}@media(min-width:768px){.navbar-text{margin-right:15px;margin-left:15px}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e6e6e6}.navbar-default .navbar-nav>.dropdown>a:hover .caret,.navbar-default .navbar-nav>.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.open>a .caret,.navbar-default .navbar-nav>.open>a:hover .caret,.navbar-default .navbar-nav>.open>a:focus .caret{border-top-color:#555;border-bottom-color:#555}.navbar-default .navbar-nav>.dropdown>a .caret{border-top-color:#777;border-bottom-color:#777}@media(max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.dropdown>a:hover .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-nav>.dropdown>a .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .navbar-nav>.open>a .caret,.navbar-inverse .navbar-nav>.open>a:hover .caret,.navbar-inverse .navbar-nav>.open>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}@media(max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{background-color:#eee}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#999;border-radius:10px}.badge:empty{display:none}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.btn .badge{position:relative;top:-1px}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.jumbotron h1{line-height:1;color:inherit}.jumbotron p{line-height:1.4}.container .jumbotron{border-radius:6px}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1{font-size:63px}}.thumbnail{display:inline-block;display:block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img{display:block;height:auto;max-width:100%}a.thumbnail:hover,a.thumbnail:focus{border-color:#428bca}.thumbnail>img{margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#356635}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#2d6987}.alert-warning{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.alert-warning hr{border-top-color:#f8e5be}.alert-warning .alert-link{color:#a47e3c}.alert-danger{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger hr{border-top-color:#e6c1c7}.alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0}.panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.list-group .list-group-item:last-child{border-bottom:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table{margin-bottom:0}.panel>.panel-body+.table{border-top:1px solid #ddd}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-title{margin-top:0;margin-bottom:0;font-size:16px}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-warning{border-color:#fbeed5}.panel-warning>.panel-heading{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#fbeed5}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#fbeed5}.panel-danger{border-color:#eed3d7}.panel-danger>.panel-heading{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#eed3d7}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#eed3d7}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}body.modal-open,.modal-open .navbar-fixed-top,.modal-open .navbar-fixed-bottom{margin-right:15px}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{z-index:1050;width:auto;padding:10px;margin-right:auto;margin-left:auto}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:20px}.modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.modal-dialog{right:auto;left:50%;width:600px;padding-top:30px;padding-bottom:30px}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}}.tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;height:auto;max-width:100%;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);opacity:.5;filter:alpha(opacity=50)}.carousel-control.left{background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.5)),to(rgba(0,0,0,0.0001)));background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.5) 0),color-stop(rgba(0,0,0,0.0001) 100%));background-image:-moz-linear-gradient(left,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1)}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.0001)),to(rgba(0,0,0,0.5)));background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.0001) 0),color-stop(rgba(0,0,0,0.5) 100%));background-image:-moz-linear-gradient(left,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1)}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;left:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after{display:table;content:" "}.clearfix:after{clear:both}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.affix{position:fixed}@-ms-viewport{width:device-width}@media screen and (max-width:400px){@-ms-viewport{width:320px}}.hidden{display:none!important;visibility:hidden!important}.visible-xs{display:none!important}tr.visible-xs{display:none!important}th.visible-xs,td.visible-xs{display:none!important}@media(max-width:767px){.visible-xs{display:block!important}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}tr.visible-xs.visible-sm{display:table-row!important}th.visible-xs.visible-sm,td.visible-xs.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}tr.visible-xs.visible-md{display:table-row!important}th.visible-xs.visible-md,td.visible-xs.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-xs.visible-lg{display:block!important}tr.visible-xs.visible-lg{display:table-row!important}th.visible-xs.visible-lg,td.visible-xs.visible-lg{display:table-cell!important}}.visible-sm{display:none!important}tr.visible-sm{display:none!important}th.visible-sm,td.visible-sm{display:none!important}@media(max-width:767px){.visible-sm.visible-xs{display:block!important}tr.visible-sm.visible-xs{display:table-row!important}th.visible-sm.visible-xs,td.visible-sm.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-sm{display:block!important}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}tr.visible-sm.visible-md{display:table-row!important}th.visible-sm.visible-md,td.visible-sm.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-sm.visible-lg{display:block!important}tr.visible-sm.visible-lg{display:table-row!important}th.visible-sm.visible-lg,td.visible-sm.visible-lg{display:table-cell!important}}.visible-md{display:none!important}tr.visible-md{display:none!important}th.visible-md,td.visible-md{display:none!important}@media(max-width:767px){.visible-md.visible-xs{display:block!important}tr.visible-md.visible-xs{display:table-row!important}th.visible-md.visible-xs,td.visible-md.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}tr.visible-md.visible-sm{display:table-row!important}th.visible-md.visible-sm,td.visible-md.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-md{display:block!important}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-md.visible-lg{display:block!important}tr.visible-md.visible-lg{display:table-row!important}th.visible-md.visible-lg,td.visible-md.visible-lg{display:table-cell!important}}.visible-lg{display:none!important}tr.visible-lg{display:none!important}th.visible-lg,td.visible-lg{display:none!important}@media(max-width:767px){.visible-lg.visible-xs{display:block!important}tr.visible-lg.visible-xs{display:table-row!important}th.visible-lg.visible-xs,td.visible-lg.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}tr.visible-lg.visible-sm{display:table-row!important}th.visible-lg.visible-sm,td.visible-lg.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}tr.visible-lg.visible-md{display:table-row!important}th.visible-lg.visible-md,td.visible-lg.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-lg{display:block!important}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}.hidden-xs{display:block!important}tr.hidden-xs{display:table-row!important}th.hidden-xs,td.hidden-xs{display:table-cell!important}@media(max-width:767px){.hidden-xs{display:none!important}tr.hidden-xs{display:none!important}th.hidden-xs,td.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm{display:none!important}tr.hidden-xs.hidden-sm{display:none!important}th.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md{display:none!important}tr.hidden-xs.hidden-md{display:none!important}th.hidden-xs.hidden-md,td.hidden-xs.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-xs.hidden-lg{display:none!important}tr.hidden-xs.hidden-lg{display:none!important}th.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg{display:none!important}}.hidden-sm{display:block!important}tr.hidden-sm{display:table-row!important}th.hidden-sm,td.hidden-sm{display:table-cell!important}@media(max-width:767px){.hidden-sm.hidden-xs{display:none!important}tr.hidden-sm.hidden-xs{display:none!important}th.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}tr.hidden-sm{display:none!important}th.hidden-sm,td.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md{display:none!important}tr.hidden-sm.hidden-md{display:none!important}th.hidden-sm.hidden-md,td.hidden-sm.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-sm.hidden-lg{display:none!important}tr.hidden-sm.hidden-lg{display:none!important}th.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg{display:none!important}}.hidden-md{display:block!important}tr.hidden-md{display:table-row!important}th.hidden-md,td.hidden-md{display:table-cell!important}@media(max-width:767px){.hidden-md.hidden-xs{display:none!important}tr.hidden-md.hidden-xs{display:none!important}th.hidden-md.hidden-xs,td.hidden-md.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-md.hidden-sm{display:none!important}tr.hidden-md.hidden-sm{display:none!important}th.hidden-md.hidden-sm,td.hidden-md.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}tr.hidden-md{display:none!important}th.hidden-md,td.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-md.hidden-lg{display:none!important}tr.hidden-md.hidden-lg{display:none!important}th.hidden-md.hidden-lg,td.hidden-md.hidden-lg{display:none!important}}.hidden-lg{display:block!important}tr.hidden-lg{display:table-row!important}th.hidden-lg,td.hidden-lg{display:table-cell!important}@media(max-width:767px){.hidden-lg.hidden-xs{display:none!important}tr.hidden-lg.hidden-xs{display:none!important}th.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-lg.hidden-sm{display:none!important}tr.hidden-lg.hidden-sm{display:none!important}th.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-lg.hidden-md{display:none!important}tr.hidden-lg.hidden-md{display:none!important}th.hidden-lg.hidden-md,td.hidden-lg.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-lg{display:none!important}tr.hidden-lg{display:none!important}th.hidden-lg,td.hidden-lg{display:none!important}}.visible-print{display:none!important}tr.visible-print{display:none!important}th.visible-print,td.visible-print{display:none!important}@media print{.visible-print{display:block!important}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}.hidden-print{display:none!important}tr.hidden-print{display:none!important}th.hidden-print,td.hidden-print{display:none!important}}
inc/libraries/bootstrap/fonts/glyphicons-halflings-regular.eot ADDED
Binary file
inc/libraries/bootstrap/fonts/glyphicons-halflings-regular.svg ADDED
@@ -0,0 +1,228 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata></metadata>
5
+ <defs>
6
+ <font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
7
+ <font-face units-per-em="1200" ascent="960" descent="-240" />
8
+ <missing-glyph horiz-adv-x="500" />
9
+ <glyph />
10
+ <glyph />
11
+ <glyph unicode=" " />
12
+ <glyph unicode="*" d="M1100 500h-259l183 -183l-141 -141l-183 183v-259h-200v259l-183 -183l-141 141l183 183h-259v200h259l-183 183l141 141l183 -183v259h200v-259l183 183l141 -141l-183 -183h259v-200z" />
13
+ <glyph unicode="+" d="M1100 400h-400v-400h-300v400h-400v300h400v400h300v-400h400v-300z" />
14
+ <glyph unicode="&#xa0;" />
15
+ <glyph unicode="&#x2000;" horiz-adv-x="652" />
16
+ <glyph unicode="&#x2001;" horiz-adv-x="1304" />
17
+ <glyph unicode="&#x2002;" horiz-adv-x="652" />
18
+ <glyph unicode="&#x2003;" horiz-adv-x="1304" />
19
+ <glyph unicode="&#x2004;" horiz-adv-x="434" />
20
+ <glyph unicode="&#x2005;" horiz-adv-x="326" />
21
+ <glyph unicode="&#x2006;" horiz-adv-x="217" />
22
+ <glyph unicode="&#x2007;" horiz-adv-x="217" />
23
+ <glyph unicode="&#x2008;" horiz-adv-x="163" />
24
+ <glyph unicode="&#x2009;" horiz-adv-x="260" />
25
+ <glyph unicode="&#x200a;" horiz-adv-x="72" />
26
+ <glyph unicode="&#x202f;" horiz-adv-x="260" />
27
+ <glyph unicode="&#x205f;" horiz-adv-x="326" />
28
+ <glyph unicode="&#x20ac;" d="M800 500h-300q9 -74 33 -132t52.5 -91t62 -54.5t59 -29t46.5 -7.5q29 0 66 13t75 37t63.5 67.5t25.5 96.5h174q-31 -172 -128 -278q-107 -117 -274 -117q-205 0 -324 158q-36 46 -69 131.5t-45 205.5h-217l100 100h113q0 47 5 100h-218l100 100h135q37 167 112 257 q117 141 297 141q242 0 354 -189q60 -103 66 -209h-181q0 55 -25.5 99t-63.5 68t-75 36.5t-67 12.5q-24 0 -52.5 -10t-62.5 -32t-65.5 -67t-50.5 -107h379l-100 -100h-300q-6 -46 -6 -100h406z" />
29
+ <glyph unicode="&#x2212;" d="M1100 700h-900v-300h900v300z" />
30
+ <glyph unicode="&#x2601;" d="M178 300h750q120 0 205 86t85 208q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5q0 -80 56.5 -137t135.5 -57z" />
31
+ <glyph unicode="&#x2709;" d="M1200 1100h-1200l600 -603zM300 600l-300 -300v600zM1200 900v-600l-300 300zM800 500l400 -400h-1200l400 400l200 -200z" />
32
+ <glyph unicode="&#x270f;" d="M1101 889l99 92q13 13 13 32.5t-13 33.5l-153 153q-15 13 -33 13t-33 -13l-94 -97zM401 189l614 614l-214 214l-614 -614zM-13 -13l333 112l-223 223z" />
33
+ <glyph unicode="&#xe000;" horiz-adv-x="500" d="M0 0z" />
34
+ <glyph unicode="&#xe001;" d="M700 100h300v-100h-800v100h300v550l-500 550h1200l-500 -550v-550z" />
35
+ <glyph unicode="&#xe002;" d="M1000 934v-521q-64 16 -138 -7q-79 -26 -122.5 -83t-25.5 -111q17 -55 85.5 -75.5t147.5 4.5q70 23 111.5 63.5t41.5 95.5v881q0 10 -7 15.5t-17 2.5l-752 -193q-10 -3 -17 -12.5t-7 -19.5v-689q-64 17 -138 -7q-79 -25 -122.5 -82t-25.5 -112t86 -75.5t147 5.5 q65 21 109 69t44 90v606z" />
36
+ <glyph unicode="&#xe003;" d="M913 432l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342t142 342t342 142t342 -142t142 -342q0 -142 -78 -261zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233z" />
37
+ <glyph unicode="&#xe005;" d="M649 949q48 69 109.5 105t121.5 38t118.5 -20.5t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-149.5 152.5t-126.5 127.5t-94 124.5t-33.5 117.5q0 64 28 123t73 100.5t104.5 64t119 20.5 t120 -38.5t104.5 -104.5z" />
38
+ <glyph unicode="&#xe006;" d="M791 522l145 -449l-384 275l-382 -275l146 447l-388 280h479l146 400h2l146 -400h472zM168 71l2 1z" />
39
+ <glyph unicode="&#xe007;" d="M791 522l145 -449l-384 275l-382 -275l146 447l-388 280h479l146 400h2l146 -400h472zM747 331l-74 229l193 140h-235l-77 211l-78 -211h-239l196 -142l-73 -226l192 140zM168 71l2 1z" />
40
+ <glyph unicode="&#xe008;" d="M1200 143v-143h-1200v143l400 257v100q-37 0 -68.5 74.5t-31.5 125.5v200q0 124 88 212t212 88t212 -88t88 -212v-200q0 -51 -31.5 -125.5t-68.5 -74.5v-100z" />
41
+ <glyph unicode="&#xe009;" d="M1200 1100v-1100h-1200v1100h1200zM200 1000h-100v-100h100v100zM900 1000h-600v-400h600v400zM1100 1000h-100v-100h100v100zM200 800h-100v-100h100v100zM1100 800h-100v-100h100v100zM200 600h-100v-100h100v100zM1100 600h-100v-100h100v100zM900 500h-600v-400h600 v400zM200 400h-100v-100h100v100zM1100 400h-100v-100h100v100zM200 200h-100v-100h100v100zM1100 200h-100v-100h100v100z" />
42
+ <glyph unicode="&#xe010;" d="M500 1050v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5zM1100 1050v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h400 q21 0 35.5 -14.5t14.5 -35.5zM500 450v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5zM1100 450v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5z" />
43
+ <glyph unicode="&#xe011;" d="M300 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM700 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200 q21 0 35.5 -14.5t14.5 -35.5zM1100 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM300 650v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM700 650v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM1100 650v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM300 250v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM700 250v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM1100 250v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5 t14.5 -35.5z" />
44
+ <glyph unicode="&#xe012;" d="M300 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM1200 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h700 q21 0 35.5 -14.5t14.5 -35.5zM300 450v200q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-200q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5zM1200 650v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5zM300 250v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM1200 250v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5z" />
45
+ <glyph unicode="&#xe013;" d="M448 34l818 820l-212 212l-607 -607l-206 207l-212 -212z" />
46
+ <glyph unicode="&#xe014;" d="M882 106l-282 282l-282 -282l-212 212l282 282l-282 282l212 212l282 -282l282 282l212 -212l-282 -282l282 -282z" />
47
+ <glyph unicode="&#xe015;" d="M913 432l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342t142 342t342 142t342 -142t142 -342q0 -142 -78 -261zM507 363q137 0 233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5t-234 -97t-97 -233 t97 -233t234 -97zM600 800h100v-200h-100v-100h-200v100h-100v200h100v100h200v-100z" />
48
+ <glyph unicode="&#xe016;" d="M913 432l300 -299q7 -7 7 -18t-7 -18l-109 -109q-8 -8 -18 -8t-18 8l-300 299q-120 -77 -261 -77q-200 0 -342 142t-142 342t142 342t342 142t342 -142t142 -342q0 -141 -78 -262zM176 694q0 -136 97 -233t234 -97t233.5 97t96.5 233t-96.5 233t-233.5 97t-234 -97 t-97 -233zM300 801v-200h400v200h-400z" />
49
+ <glyph unicode="&#xe017;" d="M700 750v400q0 21 -14.5 35.5t-35.5 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-400q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5zM800 975v166q167 -62 272 -210t105 -331q0 -118 -45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123 t-123 184t-45.5 224.5q0 183 105 331t272 210v-166q-103 -55 -165 -155t-62 -220q0 -177 125 -302t302 -125t302 125t125 302q0 120 -62 220t-165 155z" />
50
+ <glyph unicode="&#xe018;" d="M1200 1h-200v1200h200v-1200zM900 1h-200v800h200v-800zM600 1h-200v500h200v-500zM300 301h-200v-300h200v300z" />
51
+ <glyph unicode="&#xe019;" d="M488 183l38 -151q40 -5 74 -5q27 0 74 5l38 151l6 2q46 13 93 39l5 3l134 -81q56 44 104 105l-80 134l3 5q24 44 39 93l1 6l152 38q5 40 5 74q0 28 -5 73l-152 38l-1 6q-16 51 -39 93l-3 5l80 134q-44 58 -104 105l-134 -81l-5 3q-45 25 -93 39l-6 1l-38 152q-40 5 -74 5 q-27 0 -74 -5l-38 -152l-5 -1q-50 -14 -94 -39l-5 -3l-133 81q-59 -47 -105 -105l80 -134l-3 -5q-25 -47 -38 -93l-2 -6l-151 -38q-6 -48 -6 -73q0 -33 6 -74l151 -38l2 -6q14 -49 38 -93l3 -5l-80 -134q45 -59 105 -105l133 81l5 -3q45 -26 94 -39zM600 815q89 0 152 -63 t63 -151q0 -89 -63 -152t-152 -63t-152 63t-63 152q0 88 63 151t152 63z" />
52
+ <glyph unicode="&#xe020;" d="M900 1100h275q10 0 17.5 -7.5t7.5 -17.5v-50q0 -11 -7 -18t-18 -7h-1050q-11 0 -18 7t-7 18v50q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5v-100zM800 1100v100h-300v-100h300zM200 900h900v-800q0 -41 -29.5 -71 t-70.5 -30h-700q-41 0 -70.5 30t-29.5 71v800zM300 100h100v700h-100v-700zM500 100h100v700h-100v-700zM700 100h100v700h-100v-700zM900 100h100v700h-100v-700z" />
53
+ <glyph unicode="&#xe021;" d="M1301 601h-200v-600h-300v400h-300v-400h-300v600h-200l656 644z" />
54
+ <glyph unicode="&#xe022;" d="M600 700h400v-675q0 -11 -7 -18t-18 -7h-850q-11 0 -18 7t-7 18v1150q0 11 7 18t18 7h475v-500zM1000 800h-300v300z" />
55
+ <glyph unicode="&#xe023;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM600 600h200 v-100h-300v400h100v-300z" />
56
+ <glyph unicode="&#xe024;" d="M721 400h-242l-40 -400h-539l431 1200h209l-21 -300h162l-20 300h208l431 -1200h-538zM712 500l-27 300h-170l-27 -300h224z" />
57
+ <glyph unicode="&#xe025;" d="M1100 400v-400h-1100v400h490l-290 300h200v500h300v-500h200l-290 -300h490zM988 300h-175v-100h175v100z" />
58
+ <glyph unicode="&#xe026;" d="M600 1199q122 0 233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233t47.5 233t127.5 191t191 127.5t233 47.5zM600 1012q-170 0 -291 -121t-121 -291t121 -291t291 -121t291 121 t121 291t-121 291t-291 121zM700 600h150l-250 -300l-250 300h150v300h200v-300z" />
59
+ <glyph unicode="&#xe027;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM850 600h-150 v-300h-200v300h-150l250 300z" />
60
+ <glyph unicode="&#xe028;" d="M0 500l200 700h800q199 -700 200 -700v-475q0 -11 -7 -18t-18 -7h-1150q-11 0 -18 7t-7 18v475zM903 1000h-606l-97 -500h200l50 -200h300l50 200h200z" />
61
+ <glyph unicode="&#xe029;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5zM797 598 l-297 -201v401z" />
62
+ <glyph unicode="&#xe030;" d="M1177 600h-150q0 -177 -125 -302t-302 -125t-302 125t-125 302t125 302t302 125q136 0 246 -81l-146 -146h400v400l-145 -145q-157 122 -355 122q-118 0 -224.5 -45.5t-184 -123t-123 -184t-45.5 -224.5t45.5 -224.5t123 -184t184 -123t224.5 -45.5t224.5 45.5t184 123 t123 184t45.5 224.5z" />
63
+ <glyph unicode="&#xe031;" d="M700 800l147 147q-112 80 -247 80q-177 0 -302 -125t-125 -302h-150q0 118 45.5 224.5t123 184t184 123t224.5 45.5q198 0 355 -122l145 145v-400h-400zM500 400l-147 -147q112 -80 247 -80q177 0 302 125t125 302h150q0 -118 -45.5 -224.5t-123 -184t-184 -123 t-224.5 -45.5q-198 0 -355 122l-145 -145v400h400z" />
64
+ <glyph unicode="&#xe032;" d="M100 1200v-1200h1100v1200h-1100zM1100 100h-900v900h900v-900zM400 800h-100v100h100v-100zM1000 800h-500v100h500v-100zM400 600h-100v100h100v-100zM1000 600h-500v100h500v-100zM400 400h-100v100h100v-100zM1000 400h-500v100h500v-100zM400 200h-100v100h100v-100 zM1000 300h-500v-100h500v100z" />
65
+ <glyph unicode="&#xe034;" d="M200 0h-100v1100h100v-1100zM1100 600v500q-40 -81 -101.5 -115.5t-127.5 -29.5t-138 25t-139.5 40t-125.5 25t-103 -29.5t-65 -115.5v-500q60 60 127.5 84t127.5 17.5t122 -23t119 -30t110 -11t103 42t91 120.5z" />
66
+ <glyph unicode="&#xe035;" d="M1200 275v300q0 116 -49.5 227t-131 192.5t-192.5 131t-227 49.5t-227 -49.5t-192.5 -131t-131 -192.5t-49.5 -227v-300q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 127 70.5 231.5t184.5 161.5t245 57t245 -57t184.5 -161.5t70.5 -231.5v-300q0 -11 7 -18t18 -7h50 q11 0 18 7t7 18zM400 480v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14zM1000 480v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14z" />
67
+ <glyph unicode="&#xe036;" d="M0 800v-400h300l300 -200v800l-300 -200h-300zM971 600l141 -141l-71 -71l-141 141l-141 -141l-71 71l141 141l-141 141l71 71l141 -141l141 141l71 -71z" />
68
+ <glyph unicode="&#xe037;" d="M0 800v-400h300l300 -200v800l-300 -200h-300zM700 857l69 53q111 -135 111 -310q0 -169 -106 -302l-67 54q86 110 86 248q0 146 -93 257z" />
69
+ <glyph unicode="&#xe038;" d="M974 186l6 8q142 178 142 405q0 230 -144 408l-6 8l-83 -64l7 -8q123 -151 123 -344q0 -189 -119 -339l-7 -8zM300 801l300 200v-800l-300 200h-300v400h300zM702 858l69 53q111 -135 111 -310q0 -170 -106 -303l-67 55q86 110 86 248q0 145 -93 257z" />
70
+ <glyph unicode="&#xe039;" d="M100 700h400v100h100v100h-100v300h-500v-600h100v100zM1200 700v500h-600v-200h100v-300h200v-300h300v200h-200v100h200zM100 1100h300v-300h-300v300zM800 800v300h300v-300h-300zM200 900h100v100h-100v-100zM900 1000h100v-100h-100v100zM300 600h-100v-100h-200 v-500h500v500h-200v100zM900 200v-100h-200v100h-100v100h100v200h-200v100h300v-300h200v-100h-100zM400 400v-300h-300v300h300zM300 200h-100v100h100v-100zM1100 300h100v-100h-100v100zM600 100h100v-100h-100v100zM1200 100v-100h-300v100h300z" />
71
+ <glyph unicode="&#xe040;" d="M100 1200h-100v-1000h100v1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 1200v-1000h-200v1000h200zM400 100v-100h-300v100h300zM500 91h100v-91h-100v91zM700 91h100v-91h-100v91zM1100 91v-91h-200v91h200z " />
72
+ <glyph unicode="&#xe041;" d="M1200 500l-500 -500l-699 700v475q0 10 7.5 17.5t17.5 7.5h474zM320 882q29 29 29 71t-29 71q-30 30 -71.5 30t-71.5 -30q-29 -29 -29 -71t29 -71q30 -30 71.5 -30t71.5 30z" />
73
+ <glyph unicode="&#xe042;" d="M1201 500l-500 -500l-699 700v475q0 11 7 18t18 7h474zM1501 500l-500 -500l-50 50l450 450l-700 700h100zM320 882q30 29 30 71t-30 71q-29 30 -71 30t-71 -30q-30 -29 -30 -71t30 -71q29 -30 71 -30t71 30z" />
74
+ <glyph unicode="&#xe043;" d="M1200 1200v-1000l-100 -100v1000h-750l-100 -100h750v-1000h-900v1025l175 175h925z" />
75
+ <glyph unicode="&#xe045;" d="M947 829l-94 346q-2 11 -10 18t-18 7h-450q-10 0 -18 -7t-10 -18l-94 -346l40 -124h592zM1200 800v-700h-200v200h-800v-200h-200v700h200l100 -200h600l100 200h200zM881 176l38 -152q2 -10 -3.5 -17t-15.5 -7h-600q-10 0 -15.5 7t-3.5 17l38 152q2 10 11.5 17t19.5 7 h500q10 0 19.5 -7t11.5 -17z" />
76
+ <glyph unicode="&#xe047;" d="M1200 0v66q-34 1 -74 43q-18 19 -33 42t-21 37l-6 13l-385 998h-93l-399 -1006q-24 -48 -52 -75q-12 -12 -33 -25t-36 -20l-15 -7v-66h365v66q-41 0 -72 11t-49 38t1 71l92 234h391l82 -222q16 -45 -5.5 -88.5t-74.5 -43.5v-66h417zM416 521l178 457l46 -140l116 -317 h-340z" />
77
+ <glyph unicode="&#xe048;" d="M100 1199h471q120 0 213 -88t93 -228q0 -55 -11.5 -101.5t-28 -74t-33.5 -47.5t-28 -28l-12 -7q8 -3 21.5 -9t48 -31.5t60.5 -58t47.5 -91.5t21.5 -129q0 -84 -59 -156.5t-142 -111t-162 -38.5h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 28 -1 39.5t-5.5 26t-15.5 21 t-29 14t-49 14.5v70zM400 1079v-379h139q76 0 130 61.5t54 138.5q0 82 -84 130.5t-239 48.5zM400 200h161q89 0 153 48.5t64 132.5q0 90 -62.5 154.5t-156.5 64.5h-159v-400z" />
78
+ <glyph unicode="&#xe049;" d="M877 1200l2 -57q-33 -8 -62 -25.5t-46 -37t-29.5 -38t-17.5 -30.5l-5 -12l-128 -825q-10 -52 14 -82t95 -36v-57h-500v57q77 7 134.5 40.5t65.5 80.5l173 849q10 56 -10 74t-91 37q-6 1 -10.5 2.5t-9.5 2.5v57h425z" />
79
+ <glyph unicode="&#xe050;" d="M1150 1200h150v-300h-50q0 29 -8 48.5t-18.5 30t-33.5 15t-39.5 5.5t-50.5 1h-200v-850l100 -50v-100h-400v100l100 50v850h-200q-34 0 -50.5 -1t-40 -5.5t-33.5 -15t-18.5 -30t-8.5 -48.5h-49v300h150h700zM100 1000v-800h75l-125 -167l-125 167h75v800h-75l125 167 l125 -167h-75z" />
80
+ <glyph unicode="&#xe051;" d="M950 1201h150v-300h-50q0 29 -8 48.5t-18 30t-33.5 15t-40 5.5t-50.5 1h-200v-650l100 -50v-100h-400v100l100 50v650h-200q-34 0 -50.5 -1t-39.5 -5.5t-33.5 -15t-18.5 -30t-8 -48.5h-50v300h150h700zM200 101h800v75l167 -125l-167 -125v75h-800v-75l-167 125l167 125 v-75z" />
81
+ <glyph unicode="&#xe052;" d="M700 950v100q0 21 -14.5 35.5t-35.5 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h600q21 0 35.5 15t14.5 35zM1100 650v100q0 21 -14.5 35.5t-35.5 14.5h-1000q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h1000 q21 0 35.5 15t14.5 35zM900 350v100q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35zM1200 50v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35 t35.5 -15h1100q21 0 35.5 15t14.5 35z" />
82
+ <glyph unicode="&#xe053;" d="M1000 950v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35zM1200 650v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h1100 q21 0 35.5 15t14.5 35zM1000 350v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35zM1200 50v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35 t35.5 -15h1100q21 0 35.5 15t14.5 35z" />
83
+ <glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-600q-21 0 -35.5 15t-14.5 35zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1000q-21 0 -35.5 15 t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100 q-21 0 -35.5 15t-14.5 35z" />
84
+ <glyph unicode="&#xe055;" d="M0 950v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15 t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100 q-21 0 -35.5 15t-14.5 35z" />
85
+ <glyph unicode="&#xe056;" d="M0 950v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM300 950v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM300 650v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800 q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15 h-800q-21 0 -35.5 15t-14.5 35zM0 50v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM300 50v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15 h-800q-21 0 -35.5 15t-14.5 35z" />
86
+ <glyph unicode="&#xe057;" d="M400 1100h-100v-1100h100v1100zM700 950v100q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35zM1100 650v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15 h500q20 0 35 15t15 35zM100 425v75h-201v100h201v75l166 -125zM900 350v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35zM1200 50v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5 v-100q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35z" />
87
+ <glyph unicode="&#xe058;" d="M201 950v100q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35zM801 1100h100v-1100h-100v1100zM601 650v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15 h500q20 0 35 15t15 35zM1101 425v75h200v100h-200v75l-167 -125zM401 350v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35zM701 50v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5 v-100q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35z" />
88
+ <glyph unicode="&#xe059;" d="M900 925v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22h750q31 0 53 -22t22 -53zM1200 300l-300 300l300 300v-600z" />
89
+ <glyph unicode="&#xe060;" d="M1200 1056v-1012q0 -18 -12.5 -31t-31.5 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13h1112q19 0 31.5 -13t12.5 -31zM1100 1000h-1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500zM476 750q0 -56 -39 -95t-95 -39t-95 39t-39 95t39 95t95 39t95 -39 t39 -95z" />
90
+ <glyph unicode="&#xe062;" d="M600 1213q123 0 227 -63t164.5 -169.5t60.5 -229.5t-73 -272q-73 -114 -166.5 -237t-150.5 -189l-57 -66q-10 9 -27 26t-66.5 70.5t-96 109t-104 135.5t-100.5 155q-63 139 -63 262q0 124 60.5 231.5t165 172t226.5 64.5zM599 514q107 0 182.5 75.5t75.5 182.5t-75.5 182 t-182.5 75t-182 -75.5t-75 -181.5q0 -107 75.5 -182.5t181.5 -75.5z" />
91
+ <glyph unicode="&#xe063;" d="M600 1199q122 0 233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233t47.5 233t127.5 191t191 127.5t233 47.5zM600 173v854q-176 0 -301.5 -125t-125.5 -302t125.5 -302t301.5 -125z " />
92
+ <glyph unicode="&#xe064;" d="M554 1295q21 -71 57.5 -142.5t76 -130.5t83 -118.5t82 -117t70 -116t50 -125.5t18.5 -136q0 -89 -39 -165.5t-102 -126.5t-140 -79.5t-156 -33.5q-114 6 -211.5 53t-161.5 138.5t-64 210.5q0 94 34 186t88.5 172.5t112 159t115 177t87.5 194.5zM455 296q-7 6 -18 17 t-34 48t-33 77q-15 73 -14 143.5t10 122.5l9 51q-92 -110 -119.5 -185t-12.5 -156q14 -82 59.5 -136t136.5 -80z" />
93
+ <glyph unicode="&#xe065;" d="M1108 902l113 113l-21 85l-92 28l-113 -113zM1100 625v-225q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5v300q0 165 117.5 282.5t282.5 117.5q366 -6 397 -14l-186 -186h-311q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5 t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v125zM436 341l161 50l412 412l-114 113l-405 -405z" />
94
+ <glyph unicode="&#xe066;" d="M1100 453v-53q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5v300q0 165 117.5 282.5t282.5 117.5h261l2 -80q-133 -32 -218 -120h-145q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5z M813 431l360 324l-359 318v-216q-7 0 -19 -1t-48 -8t-69.5 -18.5t-76.5 -37t-76.5 -59t-62 -88t-39.5 -121.5q30 38 81.5 64t103 35.5t99 14t77.5 3.5l29 -1v-209z" />
95
+ <glyph unicode="&#xe067;" d="M1100 569v-169q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5v300q0 165 117.5 282.5t282.5 117.5h300q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69z M625 348l566 567l-136 137l-430 -431l-147 147l-136 -136z" />
96
+ <glyph unicode="&#xe068;" d="M900 303v198h-200v-200h195l-295 -300l-300 300h200v200h-200v-198l-300 300l300 296v-198h200v200h-200l300 300l295 -300h-195v-200h200v198l300 -296z" />
97
+ <glyph unicode="&#xe069;" d="M900 0l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-1100z" />
98
+ <glyph unicode="&#xe070;" d="M1200 0l-500 488v-488l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-487l500 487v-1100z" />
99
+ <glyph unicode="&#xe071;" d="M1200 0l-500 488v-488l-564 550l564 550v-487l500 487v-1100z" />
100
+ <glyph unicode="&#xe072;" d="M1100 550l-900 550v-1100z" />
101
+ <glyph unicode="&#xe073;" d="M500 150v800q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-800q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5zM900 150v800q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-800q0 -21 14.5 -35.5t35.5 -14.5h200 q21 0 35.5 14.5t14.5 35.5z" />
102
+ <glyph unicode="&#xe074;" d="M1100 150v800q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5v-800q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35z" />
103
+ <glyph unicode="&#xe075;" d="M500 0v488l-500 -488v1100l500 -487v487l564 -550z" />
104
+ <glyph unicode="&#xe076;" d="M1050 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-500 -488v488l-500 -488v1100l500 -487v487l500 -487v437q0 21 14.5 35.5t35.5 14.5z" />
105
+ <glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-500 -488v1100l500 -487v437q0 21 14.5 35.5t35.5 14.5z" />
106
+ <glyph unicode="&#xe078;" d="M650 1064l-550 -564h1100zM1200 350v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
107
+ <glyph unicode="&#xe079;" d="M777 7l240 240l-353 353l353 353l-240 240l-592 -594z" />
108
+ <glyph unicode="&#xe080;" d="M513 -46l-241 240l353 353l-353 353l241 240l572 -571l21 -22l-1 -1v-1z" />
109
+ <glyph unicode="&#xe081;" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM500 900v-200h-200v-200h200v-200h200v200h200v200h-200v200h-200z" />
110
+ <glyph unicode="&#xe082;" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM300 700v-200h600v200h-600z" />
111
+ <glyph unicode="&#xe083;" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM247 741l141 -141l-142 -141l213 -213l141 142l141 -142l213 213l-142 141l142 141l-213 212l-141 -141 l-141 142z" />
112
+ <glyph unicode="&#xe084;" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM546 623l-102 102l-174 -174l276 -277l411 411l-175 174z" />
113
+ <glyph unicode="&#xe085;" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM500 500h200q5 3 14 8t31.5 25.5t39.5 45.5t31 69t14 94q0 51 -17.5 89t-42 58t-58.5 32t-58.5 15t-51.5 3 q-105 0 -172 -56t-67 -183h144q4 0 11.5 -1t11 -1t6.5 3t3 9t1 11t3.5 8.5t3.5 6t5.5 4t6.5 2.5t9 1.5t9 0.5h11.5h12.5q19 0 30 -10t11 -26q0 -22 -4 -28t-27 -22q-5 -1 -12.5 -3t-27 -13.5t-34 -27t-26.5 -46t-11 -68.5zM500 400v-100h200v100h-200z" />
114
+ <glyph unicode="&#xe086;" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM500 900v-100h200v100h-200zM400 700v-100h100v-200h-100v-100h400v100h-100v300h-300z" />
115
+ <glyph unicode="&#xe087;" d="M1200 700v-200h-203q-25 -102 -116.5 -186t-180.5 -117v-197h-200v197q-140 27 -208 102.5t-98 200.5h-194v200h194q15 60 36 104.5t55.5 86t88 69t126.5 40.5v200h200v-200q54 -20 113 -60t112.5 -105.5t71.5 -134.5h203zM700 500v-206q149 48 201 206h-201v200h200 q-25 74 -76 127.5t-124 76.5v-204h-200v203q-75 -24 -130 -77.5t-79 -125.5h209v-200h-210q24 -73 79.5 -127.5t130.5 -78.5v206h200z" />
116
+ <glyph unicode="&#xe088;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM844 735 l-135 -135l135 -135l-109 -109l-135 135l-135 -135l-109 109l135 135l-135 135l109 109l135 -135l135 135z" />
117
+ <glyph unicode="&#xe089;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM896 654 l-346 -345l-228 228l141 141l87 -87l204 205z" />
118
+ <glyph unicode="&#xe090;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM248 385l568 567q-100 62 -216 62q-171 0 -292.5 -121.5t-121.5 -292.5q0 -115 62 -215zM955 809l-564 -564q97 -59 209 -59q171 0 292.5 121.5 t121.5 292.5q0 112 -59 209z" />
119
+ <glyph unicode="&#xe091;" d="M1200 400h-600v-301l-600 448l600 453v-300h600v-300z" />
120
+ <glyph unicode="&#xe092;" d="M600 400h-600v300h600v300l600 -453l-600 -448v301z" />
121
+ <glyph unicode="&#xe093;" d="M1098 600h-298v-600h-300v600h-296l450 600z" />
122
+ <glyph unicode="&#xe094;" d="M998 600l-449 -600l-445 600h296v600h300v-600h298z" />
123
+ <glyph unicode="&#xe095;" d="M600 199v301q-95 -2 -183 -20t-170 -52t-147 -92.5t-100 -135.5q6 132 41 238.5t103.5 193t184 138t271.5 59.5v271l600 -453z" />
124
+ <glyph unicode="&#xe096;" d="M1200 1200h-400l129 -129l-294 -294l142 -142l294 294l129 -129v400zM565 423l-294 -294l129 -129h-400v400l129 -129l294 294z" />
125
+ <glyph unicode="&#xe097;" d="M871 730l129 -130h-400v400l129 -129l295 295l142 -141zM200 600h400v-400l-129 130l-295 -295l-142 141l295 295z" />
126
+ <glyph unicode="&#xe101;" d="M600 1177q118 0 224.5 -45.5t184 -123t123 -184t45.5 -224.5t-45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5t45.5 224.5t123 184t184 123t224.5 45.5zM686 549l58 302q4 20 -8 34.5t-33 14.5h-207q-20 0 -32 -14.5t-8 -34.5 l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5zM700 400h-200v-100h200v100z" />
127
+ <glyph unicode="&#xe102;" d="M1200 900h-111v6t-1 15t-3 18l-34 172q-11 39 -41.5 63t-69.5 24q-32 0 -61 -17l-239 -144q-22 -13 -40 -35q-19 24 -40 36l-238 144q-33 18 -62 18q-39 0 -69.5 -23t-40.5 -61l-35 -177q-2 -8 -3 -18t-1 -15v-6h-111v-100h100v-200h400v300h200v-300h400v200h100v100z M731 900l202 197q5 -12 12 -32.5t23 -64t25 -72t7 -28.5h-269zM481 900h-281q-3 0 14 48t35 96l18 47zM100 0h400v400h-400v-400zM700 400h400v-400h-400v400z" />
128
+ <glyph unicode="&#xe103;" d="M0 121l216 193q-9 53 -13 83t-5.5 94t9 113t38.5 114t74 124q47 60 99.5 102.5t103 68t127.5 48t145.5 37.5t184.5 43.5t220 58.5q0 -189 -22 -343t-59 -258t-89 -181.5t-108.5 -120t-122 -68t-125.5 -30t-121.5 -1.5t-107.5 12.5t-87.5 17t-56.5 7.5l-99 -55l-201 -202 v143zM692 611q70 38 118.5 69.5t102 79t99 111.5t86.5 148q22 50 24 60t-6 19q-7 5 -17 5t-26.5 -14.5t-33.5 -39.5q-35 -51 -113.5 -108.5t-139.5 -89.5l-61 -32q-369 -197 -458 -401q-48 -111 -28.5 -117.5t86.5 76.5q55 66 367 234z" />
129
+ <glyph unicode="&#xe105;" d="M1261 600l-26 -40q-6 -10 -20 -30t-49 -63.5t-74.5 -85.5t-97 -90t-116.5 -83.5t-132.5 -59t-145.5 -23.5t-145.5 23.5t-132.5 59t-116.5 83.5t-97 90t-74.5 85.5t-49 63.5t-20 30l-26 40l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5 t145.5 -23.5t132.5 -59t116.5 -83.5t97 -90t74.5 -85.5t49 -63.5t20 -30zM600 240q64 0 123.5 20t100.5 45.5t85.5 71.5t66.5 75.5t58 81.5t47 66q-1 1 -28.5 37.5t-42 55t-43.5 53t-57.5 63.5t-58.5 54q49 -74 49 -163q0 -124 -88 -212t-212 -88t-212 88t-88 212 q0 85 46 158q-102 -87 -226 -258q7 -10 40.5 -58t56 -78.5t68 -77.5t87.5 -75t103 -49.5t125 -21.5zM484 762l-107 -106q49 -124 154 -191l105 105q-37 24 -75 72t-57 84z" />
130
+ <glyph unicode="&#xe106;" d="M906 1200l-314 -1200h-148l37 143q-82 21 -165 71.5t-140 102t-109.5 112t-72 88.5t-29.5 43l-26 40l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5q61 0 121 -17l37 142h148zM1261 600l-26 -40q-7 -12 -25.5 -38t-63.5 -79.5t-95.5 -102.5 t-124 -100t-146.5 -79l38 145q22 15 44.5 34t46 44t40.5 44t41 50.5t33.5 43.5t33 44t24.5 34q-97 127 -140 175l39 146q67 -54 131.5 -125.5t87.5 -103.5t36 -52zM513 264l37 141q-107 18 -178.5 101.5t-71.5 193.5q0 85 46 158q-102 -87 -226 -258q210 -282 393 -336z M484 762l-107 -106q49 -124 154 -191l47 47l23 87q-30 28 -59 69t-44 68z" />
131
+ <glyph unicode="&#xe107;" d="M-47 0h1294q37 0 50.5 35.5t-7.5 67.5l-642 1056q-20 33 -48 36t-48 -29l-642 -1066q-21 -32 -7.5 -66t50.5 -34zM700 200v100h-200v-100h-345l445 723l445 -723h-345zM700 700h-200v-100l100 -300l100 300v100z" />
132
+ <glyph unicode="&#xe108;" d="M800 711l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -91 100 -113v-64q0 -21 -13 -29t-32 1l-94 78h-222l-94 -78q-19 -9 -32 -1t-13 29v64q0 22 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41q0 20 11 44.5t26 38.5 l363 325v339q0 62 44 106t106 44t106 -44t44 -106v-339z" />
133
+ <glyph unicode="&#xe110;" d="M941 800l-600 -600h-341v200h259l600 600h241v198l300 -295l-300 -300v197h-159zM381 678l141 142l-181 180h-341v-200h259zM1100 598l300 -295l-300 -300v197h-241l-181 181l141 142l122 -123h159v198z" />
134
+ <glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
135
+ <glyph unicode="&#xe112;" d="M400 900h-300v300h300v-300zM1100 900h-300v300h300v-300zM1100 800v-200q0 -42 -3 -83t-15 -104t-31.5 -116t-58 -109.5t-89 -96.5t-129 -65.5t-174.5 -25.5t-174.5 25.5t-129 65.5t-89 96.5t-58 109.5t-31.5 116t-15 104t-3 83v200h300v-250q0 -113 6 -145 q17 -92 102 -117q39 -11 92 -11q37 0 66.5 5.5t50 15.5t36 24t24 31.5t14 37.5t7 42t2.5 45t0 47v25v250h300z" />
136
+ <glyph unicode="&#xe113;" d="M902 184l226 227l-578 579l-580 -579l227 -227l352 353z" />
137
+ <glyph unicode="&#xe114;" d="M650 218l578 579l-226 227l-353 -353l-352 353l-227 -227z" />
138
+ <glyph unicode="&#xe115;" d="M1198 400v600h-796l215 -200h381v-400h-198l299 -283l299 283h-200zM-198 700l299 283l300 -283h-203v-400h385l215 -200h-800v600h-196z" />
139
+ <glyph unicode="&#xe116;" d="M1050 1200h94q20 0 35 -14.5t15 -35.5t-15 -35.5t-35 -14.5h-54l-201 -961q-2 -4 -6 -10.5t-19 -17.5t-33 -11h-31v-50q0 -20 -14.5 -35t-35.5 -15t-35.5 15t-14.5 35v50h-300v-50q0 -20 -14.5 -35t-35.5 -15t-35.5 15t-14.5 35v50h-50q-21 0 -35.5 15t-14.5 35 q0 21 14.5 35.5t35.5 14.5h535l48 200h-633q-32 0 -54.5 21t-27.5 43l-100 475q-5 24 10 42q14 19 39 19h896l38 162q5 17 18.5 27.5t30.5 10.5z" />
140
+ <glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
141
+ <glyph unicode="&#xe118;" d="M201 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-200h-1000zM1501 700l-300 -700h-1200l300 700h1200z" />
142
+ <glyph unicode="&#xe119;" d="M302 300h198v600h-198l298 300l298 -300h-198v-600h198l-298 -300z" />
143
+ <glyph unicode="&#xe120;" d="M900 303v197h-600v-197l-300 297l300 298v-198h600v198l300 -298z" />
144
+ <glyph unicode="&#xe121;" d="M31 400l172 739q5 22 23 41.5t38 19.5h672q19 0 37.5 -22.5t23.5 -45.5l172 -732h-1138zM100 300h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM900 200h-100v-100h100v100z M1100 200h-100v-100h100v100z" />
145
+ <glyph unicode="&#xe122;" d="M1100 200v850q0 21 14.5 35.5t35.5 14.5q20 0 35 -14.5t15 -35.5v-850q0 -20 -15 -35t-35 -15q-21 0 -35.5 15t-14.5 35zM325 800l675 250v-850l-675 200h-38l47 -276q2 -12 -3 -17.5t-11 -6t-21 -0.5h-8h-83q-20 0 -34.5 14t-18.5 35q-56 337 -56 351v250v5 q0 13 0.5 18.5t2.5 13t8 10.5t15 3h200zM-101 600v50q0 24 25 49t50 38l25 13v-250l-11 5.5t-24 14t-30 21.5t-24 27.5t-11 31.5z" />
146
+ <glyph unicode="&#xe124;" d="M445 1180l-45 -233l-224 78l78 -225l-233 -44l179 -156l-179 -155l233 -45l-78 -224l224 78l45 -233l155 179l155 -179l45 233l224 -78l-78 224l234 45l-180 155l180 156l-234 44l78 225l-224 -78l-45 233l-155 -180z" />
147
+ <glyph unicode="&#xe125;" d="M700 1200h-50q-27 0 -51 -20t-38 -48l-96 -198l-145 -196q-20 -26 -20 -63v-400q0 -75 100 -75h61q123 -100 139 -100h250q46 0 83 57l238 344q29 31 29 74v100q0 44 -30.5 84.5t-69.5 40.5h-328q28 118 28 125v150q0 44 -30.5 84.5t-69.5 40.5zM700 925l-50 -225h450 v-125l-250 -375h-214l-136 100h-100v375l150 212l100 213h50v-175zM0 800v-600h200v600h-200z" />
148
+ <glyph unicode="&#xe126;" d="M700 0h-50q-27 0 -51 20t-38 48l-96 198l-145 196q-20 26 -20 63v400q0 75 100 75h61q123 100 139 100h250q46 0 83 -57l238 -344q29 -31 29 -74v-100q0 -44 -30.5 -84.5t-69.5 -40.5h-328q28 -118 28 -125v-150q0 -44 -30.5 -84.5t-69.5 -40.5zM200 400h-200v600h200 v-600zM700 275l-50 225h450v125l-250 375h-214l-136 -100h-100v-375l150 -212l100 -213h50v175z" />
149
+ <glyph unicode="&#xe127;" d="M364 873l362 230q14 6 25 6q17 0 29 -12l109 -112q14 -14 14 -34q0 -18 -11 -32l-85 -121h302q85 0 138.5 -38t53.5 -110t-54.5 -111t-138.5 -39h-107l-130 -339q-7 -22 -20.5 -41.5t-28.5 -19.5h-341q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM408 792v-503 l100 -89h293l131 339q6 21 19.5 41t28.5 20h203q16 0 25 15t9 36q0 20 -9 34.5t-25 14.5h-457h-6.5h-7.5t-6.5 0.5t-6 1t-5 1.5t-5.5 2.5t-4 4t-4 5.5q-5 12 -5 20q0 14 10 27l147 183l-86 83zM208 200h-200v600h200v-600z" />
150
+ <glyph unicode="&#xe128;" d="M475 1104l365 -230q7 -4 16.5 -10.5t26 -26t16.5 -36.5v-526q0 -13 -85.5 -93.5t-93.5 -80.5h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-84 0 -139 39t-55 111t54 110t139 37h302l-85 121q-11 16 -11 32q0 21 14 34l109 113q13 12 29 12q11 0 25 -6zM370 946 l145 -184q10 -11 10 -26q0 -11 -5 -20q-1 -3 -3.5 -5.5l-4 -4t-5 -2.5t-5.5 -1.5t-6.5 -1t-6.5 -0.5h-7.5h-6.5h-476v-100h222q15 0 28.5 -20.5t19.5 -40.5l131 -339h293l106 89v502l-342 237zM1199 201h-200v600h200v-600z" />
151
+ <glyph unicode="&#xe129;" d="M1100 473v342q0 15 -20 28.5t-41 19.5l-339 131v106q0 84 -39 139t-111 55t-110 -53.5t-38 -138.5v-302l-121 84q-15 12 -33.5 11.5t-32.5 -13.5l-112 -110q-22 -22 -6 -53l230 -363q4 -6 10.5 -15.5t26 -25t36.5 -15.5h525q13 0 94 83t81 90zM911 400h-503l-236 339 l83 86l183 -146q22 -18 47 -5q3 1 5.5 3.5l4 4t2.5 5t1.5 5.5t1 6.5t0.5 6v7.5v7v456q0 22 25 31t50 -0.5t25 -30.5v-202q0 -16 20 -29.5t41 -19.5l339 -130v-294zM1000 200v-200h-600v200h600z" />
152
+ <glyph unicode="&#xe130;" d="M305 1104v200h600v-200h-600zM605 310l339 131q20 6 40.5 19.5t20.5 28.5v342q0 7 -81 90t-94 83h-525q-17 0 -35.5 -14t-28.5 -28l-10 -15l-230 -362q-15 -31 7 -53l112 -110q13 -13 32 -13.5t34 10.5l121 85l-1 -302q0 -84 38.5 -138t110.5 -54t111 55t39 139v106z M905 804v-294l-340 -130q-20 -6 -40 -20t-20 -29v-202q0 -22 -25 -31t-50 0t-25 31v456v14.5t-1.5 11.5t-5 12t-9.5 7q-24 13 -46 -5l-184 -146l-83 86l237 339h503z" />
153
+ <glyph unicode="&#xe131;" d="M603 1195q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5zM598 701h-298v-201h300l-2 -194l402 294l-402 298v-197z" />
154
+ <glyph unicode="&#xe132;" d="M597 1195q122 0 232.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-218 -217.5t-300 -80t-299.5 80t-217.5 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t231.5 47.5zM200 600l400 -294v194h302v201h-300v197z" />
155
+ <glyph unicode="&#xe133;" d="M603 1195q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5zM300 600h200v-300h200v300h200l-300 400z" />
156
+ <glyph unicode="&#xe134;" d="M603 1195q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5zM500 900v-300h-200l300 -400l300 400h-200v300h-200z" />
157
+ <glyph unicode="&#xe135;" d="M603 1195q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5zM627 1101q-15 -12 -36.5 -21t-34.5 -12t-44 -8t-39 -6 q-15 -3 -45.5 0.5t-45.5 -2.5q-21 -7 -52 -26.5t-34 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -90.5t-29.5 -79.5q-8 -33 5.5 -92.5t7.5 -87.5q0 -9 17 -44t16 -60q12 0 23 -5.5t23 -15t20 -13.5q24 -12 108 -42q22 -8 53 -31.5t59.5 -38.5t57.5 -11q8 -18 -15 -55 t-20 -57q42 -71 87 -80q0 -6 -3 -15.5t-3.5 -14.5t4.5 -17q102 -2 221 112q30 29 47 47t34.5 49t20.5 62q-14 9 -37 9.5t-36 7.5q-14 7 -49 15t-52 19q-9 0 -39.5 -0.5t-46.5 -1.5t-39 -6.5t-39 -16.5q-50 -35 -66 -12q-4 2 -3.5 25.5t0.5 25.5q-6 13 -26.5 17t-24.5 7 q2 22 -2 41t-16.5 28t-38.5 -20q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q12 -19 32 -37.5t34 -27.5l14 -8q0 3 9.5 39.5t5.5 57.5q-4 23 14.5 44.5t22.5 31.5q5 14 10 35t8.5 31t15.5 22.5t34 21.5q-6 18 10 37q8 0 23.5 -1.5t24.5 -1.5 t20.5 4.5t20.5 15.5q-10 23 -30.5 42.5t-38 30t-49 26.5t-43.5 23q11 41 1 44q31 -13 58.5 -14.5t39.5 3.5l11 4q6 36 -17 53.5t-64 28.5t-56 23q-19 -3 -37 0zM613 994q0 -18 8 -42.5t16.5 -44t9.5 -23.5q-9 2 -31 5t-36 5t-32 8t-30 14q3 12 16 30t16 25q10 -10 18.5 -10 t14 6t14.5 14.5t16 12.5z" />
158
+ <glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
159
+ <glyph unicode="&#xe138;" d="M1100 1200v-100h-1000v100h1000zM150 1000h900l-350 -500v-300l-200 -200v500z" />
160
+ <glyph unicode="&#xe140;" d="M329 729l142 142l-200 200l129 129h-400v-400l129 129zM1200 1200v-400l-129 129l-200 -200l-142 142l200 200l-129 129h400zM271 129l129 -129h-400v400l129 -129l200 200l142 -142zM1071 271l129 129v-400h-400l129 129l-200 200l142 142z" />
161
+ <glyph unicode="&#xe141;" d="M596 1192q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM596 1010q-171 0 -292.5 -121.5t-121.5 -292.5q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5zM455 905 q22 0 38 -16t16 -39t-16 -39t-38 -16q-23 0 -39 16.5t-16 38.5t16 38.5t39 16.5zM708 821l1 1q-9 14 -9 28q0 22 16 38.5t39 16.5q22 0 38 -16t16 -39t-16 -39t-38 -16q-14 0 -29 10l-55 -145q17 -22 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5 q0 32 20.5 56.5t51.5 29.5zM855 709q23 0 38.5 -15.5t15.5 -38.5t-16 -39t-38 -16q-23 0 -39 16t-16 39q0 22 16 38t39 16zM345 709q23 0 39 -16t16 -38q0 -23 -16 -39t-39 -16q-22 0 -38 16t-16 39t15.5 38.5t38.5 15.5z" />
162
+ <glyph unicode="&#xe143;" d="M649 54l-16 22q-90 125 -293 323q-71 70 -104.5 105.5t-77 89.5t-61 99t-17.5 91q0 131 98.5 229.5t230.5 98.5q143 0 241 -129q103 129 246 129q129 0 226 -98.5t97 -229.5q0 -46 -17.5 -91t-61 -99t-77 -89.5t-104.5 -105.5q-203 -198 -293 -323zM844 524l12 12 q64 62 97.5 97t64.5 79t31 72q0 71 -48 119t-105 48q-74 0 -132 -82l-118 -171l-114 174q-51 79 -123 79q-60 0 -109.5 -49t-49.5 -118q0 -27 30.5 -70t61.5 -75.5t95 -94.5l22 -22q93 -90 190 -201q82 92 195 203z" />
163
+ <glyph unicode="&#xe144;" d="M476 406l19 -17l105 105l-212 212l389 389l247 -247l-95 -96l18 -18q46 -46 77 -99l29 29q35 35 62.5 88t27.5 96q0 93 -66 159l-141 141q-66 66 -159 66q-95 0 -159 -66l-283 -283q-66 -64 -66 -159q0 -93 66 -159zM123 193l141 -141q66 -66 159 -66q95 0 159 66 l283 283q66 66 66 159t-66 159l-141 141q-12 12 -19 17l-105 -105l212 -212l-389 -389l-247 248l95 95l-18 18q-46 45 -75 101l-55 -55q-66 -66 -66 -159q0 -94 66 -160z" />
164
+ <glyph unicode="&#xe145;" d="M200 100v953q0 21 30 46t81 48t129 38t163 15t162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5zM900 1000h-600v-700h600v700zM600 46q43 0 73.5 30.5t30.5 73.5t-30.5 73.5t-73.5 30.5t-73.5 -30.5t-30.5 -73.5 t30.5 -73.5t73.5 -30.5z" />
165
+ <glyph unicode="&#xe148;" d="M700 1029v-307l64 -14q34 -7 64 -16.5t70 -31.5t67.5 -52t47.5 -80.5t20 -112.5q0 -139 -89 -224t-244 -96v-77h-100v78q-152 17 -237 104q-40 40 -52.5 93.5t-15.5 139.5h139q5 -77 48.5 -126.5t117.5 -64.5v335l-27 7q-46 14 -79 26.5t-72 36t-62.5 52t-40 72.5 t-16.5 99q0 92 44 159.5t109 101t144 40.5v78h100v-79q38 -4 72.5 -13.5t75.5 -31.5t71 -53.5t51.5 -84t24.5 -118.5h-159q-8 72 -35 109.5t-101 50.5zM600 755v274q-61 -8 -97.5 -37.5t-36.5 -102.5q0 -29 8 -51t16.5 -34t29.5 -22.5t31 -13.5t38 -10q7 -2 11 -3zM700 548 v-311q170 18 170 151q0 64 -44 99.5t-126 60.5z" />
166
+ <glyph unicode="&#xe149;" d="M866 300l50 -147q-41 -25 -80.5 -36.5t-59 -13t-61.5 -1.5q-23 0 -128 33t-155 29q-39 -4 -82 -17t-66 -25l-24 -11l-55 145l16.5 11t15.5 10t13.5 9.5t14.5 12t14.5 14t17.5 18.5q48 55 54 126.5t-30 142.5h-221v100h166q-24 49 -44 104q-10 26 -14.5 55.5t-3 72.5 t25 90t68.5 87q97 88 263 88q129 0 230 -89t101 -208h-153q0 52 -34 89.5t-74 51.5t-76 14q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -11 2.5 -24.5t5.5 -24t9.5 -26.5t10.5 -25t14 -27.5t14 -25.5t15.5 -27t13.5 -24h242v-100h-197q8 -50 -2.5 -115t-31.5 -94 q-41 -59 -99 -113q35 11 84 18t70 7q32 1 102 -16t104 -17q76 0 136 30z" />
167
+ <glyph unicode="&#xe150;" d="M300 0l298 300h-198v900h-200v-900h-198zM900 1200l298 -300h-198v-900h-200v900h-198z" />
168
+ <glyph unicode="&#xe151;" d="M400 300h198l-298 -300l-298 300h198v900h200v-900zM1000 1200v-500h-100v100h-100v-100h-100v500h300zM901 1100h-100v-200h100v200zM700 500h300v-200h-99v-100h-100v100h99v100h-200v100zM800 100h200v-100h-300v200h100v-100z" />
169
+ <glyph unicode="&#xe152;" d="M400 300h198l-298 -300l-298 300h198v900h200v-900zM1000 1200v-200h-99v-100h-100v100h99v100h-200v100h300zM800 800h200v-100h-300v200h100v-100zM700 500h300v-500h-100v100h-100v-100h-100v500zM801 200h100v200h-100v-200z" />
170
+ <glyph unicode="&#xe153;" d="M300 0l298 300h-198v900h-200v-900h-198zM900 1100h-100v100h200v-500h-100v400zM1100 500v-500h-100v100h-200v400h300zM1001 400h-100v-200h100v200z" />
171
+ <glyph unicode="&#xe154;" d="M300 0l298 300h-198v900h-200v-900h-198zM1100 1200v-500h-100v100h-200v400h300zM1001 1100h-100v-200h100v200zM900 400h-100v100h200v-500h-100v400z" />
172
+ <glyph unicode="&#xe155;" d="M300 0l298 300h-198v900h-200v-900h-198zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
173
+ <glyph unicode="&#xe156;" d="M300 0l298 300h-198v900h-200v-900h-198zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
174
+ <glyph unicode="&#xe157;" d="M400 1100h300q162 0 281 -118.5t119 -281.5v-300q0 -165 -118.5 -282.5t-281.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5v300q0 165 117.5 282.5t282.5 117.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5 t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5z" />
175
+ <glyph unicode="&#xe158;" d="M700 0h-300q-163 0 -281.5 117.5t-118.5 282.5v300q0 163 119 281.5t281 118.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5 t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5zM400 800v-500l333 250z" />
176
+ <glyph unicode="&#xe159;" d="M0 400v300q0 163 117.5 281.5t282.5 118.5h300q163 0 281.5 -119t118.5 -281v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM900 300v500q0 41 -29.5 70.5t-70.5 29.5h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5 t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5zM800 700h-500l250 -333z" />
177
+ <glyph unicode="&#xe160;" d="M1100 700v-300q0 -162 -118.5 -281t-281.5 -119h-300q-165 0 -282.5 118.5t-117.5 281.5v300q0 165 117.5 282.5t282.5 117.5h300q165 0 282.5 -117.5t117.5 -282.5zM900 300v500q0 41 -29.5 70.5t-70.5 29.5h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5 t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5zM550 733l-250 -333h500z" />
178
+ <glyph unicode="&#xe161;" d="M500 1100h400q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-400v200h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-500v200zM700 550l-400 -350v200h-300v300h300v200z" />
179
+ <glyph unicode="&#xe162;" d="M403 2l9 -1q13 0 26 16l538 630q15 19 6 36q-8 18 -32 16h-300q1 4 78 219.5t79 227.5q2 17 -6 27l-8 8h-9q-16 0 -25 -15q-4 -5 -98.5 -111.5t-228 -257t-209.5 -238.5q-17 -19 -7 -40q10 -19 32 -19h302q-155 -438 -160 -458q-5 -21 4 -32z" />
180
+ <glyph unicode="&#xe163;" d="M800 200h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h500v185q-14 4 -114 7.5t-193 5.5l-93 2q-165 0 -282.5 -117.5t-117.5 -282.5v-300q0 -165 117.5 -282.5t282.5 -117.5h300q47 0 100 15v185zM900 200v200h-300v300h300v200l400 -350z" />
181
+ <glyph unicode="&#xe164;" d="M1200 700l-149 149l-342 -353l-213 213l353 342l-149 149h500v-500zM1022 571l-122 -123v-148q0 -41 -29.5 -70.5t-70.5 -29.5h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h156l118 122l-74 78h-100q-165 0 -282.5 -117.5t-117.5 -282.5v-300 q0 -165 117.5 -282.5t282.5 -117.5h300q163 0 281.5 117.5t118.5 282.5v98z" />
182
+ <glyph unicode="&#xe165;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM600 794 q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
183
+ <glyph unicode="&#xe166;" d="M700 800v400h-300v-400h-300l445 -500l450 500h-295zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
184
+ <glyph unicode="&#xe167;" d="M400 700v-300h300v300h295l-445 500l-450 -500h300zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
185
+ <glyph unicode="&#xe168;" d="M405 400l596 596l-154 155l-442 -442l-150 151l-155 -155zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
186
+ <glyph unicode="&#xe169;" d="M409 1103l-97 97l-212 -212l97 -98zM650 861l-149 149l-212 -212l149 -149l-238 -248h700v699zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
187
+ <glyph unicode="&#xe170;" d="M539 950l-149 -149l212 -212l149 148l248 -237v700h-699zM297 709l-97 -97l212 -212l98 97zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
188
+ <glyph unicode="&#xe171;" d="M1200 1199v-1079l-475 272l-310 -393v416h-392zM1166 1148l-672 -712v-226z" />
189
+ <glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -15 -35.5t-35 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1200h-100v-200h100v200z" />
190
+ <glyph unicode="&#xe173;" d="M578 500h-378v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-218l-276 -275l-120 120zM700 1200h-100v-200h100v200zM1300 538l-475 -476l-244 244l123 123l120 -120l353 352z" />
191
+ <glyph unicode="&#xe174;" d="M529 500h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-269l-103 -103l-170 170zM700 1200h-100v-200h100v200zM1167 6l-170 170l-170 -170l-127 127l170 170l-170 170l127 127l170 -170l170 170l127 -128 l-170 -169l170 -170z" />
192
+ <glyph unicode="&#xe175;" d="M700 500h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-300h-400v-200zM700 1000h-100v200h100v-200zM1000 600h-200v-300h-200l300 -300l300 300h-200v300z" />
193
+ <glyph unicode="&#xe176;" d="M602 500h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-402l-200 200zM700 1000h-100v200h100v-200zM1000 300h200l-300 300l-300 -300h200v-300h200v300z" />
194
+ <glyph unicode="&#xe177;" d="M1200 900v150q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h1200zM0 800v-550q0 -21 14.5 -35.5t35.5 -14.5h1100q21 0 35.5 14.5t14.5 35.5v550h-1200zM100 500h400v-200h-400v200z" />
195
+ <glyph unicode="&#xe178;" d="M500 1000h400v198l300 -298l-300 -298v198h-400v200zM100 800v200h100v-200h-100zM400 800h-100v200h100v-200zM700 300h-400v-198l-300 298l300 298v-198h400v-200zM800 500h100v-200h-100v200zM1000 500v-200h100v200h-100z" />
196
+ <glyph unicode="&#xe179;" d="M1200 50v1106q0 31 -18 40.5t-44 -7.5l-276 -117q-25 -16 -43.5 -50.5t-18.5 -65.5v-359q0 -29 10.5 -55.5t25 -43t29 -28.5t25.5 -18l10 -5v-397q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5zM550 1200l50 -100v-400l-100 -203v-447q0 -21 -14.5 -35.5 t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447l-100 203v400l50 100l50 -100v-300h100v300l50 100l50 -100v-300h100v300z" />
197
+ <glyph unicode="&#xe180;" d="M1100 106v888q0 22 25 34.5t50 13.5l25 2v56h-400v-56q75 0 87.5 -6t12.5 -44v-394h-500v394q0 38 12.5 44t87.5 6v56h-400v-56q4 0 11 -0.5t24 -3t30 -7t24 -15t11 -24.5v-888q0 -22 -25 -34.5t-50 -13.5l-25 -2v-56h400v56q-75 0 -87.5 6t-12.5 44v394h500v-394 q0 -38 -12.5 -44t-87.5 -6v-56h400v56q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5z" />
198
+ <glyph unicode="&#xe181;" d="M675 1000l-100 100h-375l-100 -100h400l200 -200v-98l295 98h105v200h-425zM500 300v500q0 41 -29.5 70.5t-70.5 29.5h-300q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h300q41 0 70.5 29.5t29.5 70.5zM100 800h300v-200h-300v200zM700 565l400 133 v-163l-400 -133v163zM100 500h300v-200h-300v200zM805 300l295 98v-298h-425l-100 -100h-375l-100 100h400l200 200h105z" />
199
+ <glyph unicode="&#xe182;" d="M179 1169l-162 -162q-1 -11 -0.5 -32.5t16 -90t46.5 -140t104 -177.5t175 -208q103 -103 207.5 -176t180 -103.5t137 -47t92.5 -16.5l31 1l163 162q16 17 13 40.5t-22 37.5l-192 136q-19 14 -45 12t-42 -19l-119 -118q-143 103 -267 227q-126 126 -227 268l118 118 q17 17 20 41.5t-11 44.5l-139 194q-14 19 -36.5 22t-40.5 -14z" />
200
+ <glyph unicode="&#xe183;" d="M1200 712v200q-6 8 -19 20.5t-63 45t-112 57t-171 45t-235 20.5q-92 0 -175 -10.5t-141.5 -27t-108.5 -36.5t-81.5 -40t-53.5 -36.5t-31 -27.5l-9 -10v-200q0 -21 14.5 -33.5t34.5 -8.5l202 33q20 4 34.5 21t14.5 38v146q141 24 300 24t300 -24v-146q0 -21 14.5 -38 t34.5 -21l202 -33q20 -4 34.5 8.5t14.5 33.5zM800 650l365 -303q14 -14 24.5 -39.5t10.5 -45.5v-212q0 -21 -15 -35.5t-35 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45.5t24.5 39.5l365 303v50q0 4 1 10.5t12 22.5t30 28.5t60 23t97 10.5t97 -10t60 -23.5 t30 -27.5t12 -24l1 -10v-50z" />
201
+ <glyph unicode="&#xe184;" d="M175 200h950l-125 150v250l100 100v400h-100v-200h-100v200h-200v-200h-100v200h-200v-200h-100v200h-100v-400l100 -100v-250zM1200 100v-100h-1100v100h1100z" />
202
+ <glyph unicode="&#xe185;" d="M600 1100h100q41 0 70.5 -29.5t29.5 -70.5v-1000h-300v1000q0 41 29.5 70.5t70.5 29.5zM1000 800h100q41 0 70.5 -29.5t29.5 -70.5v-700h-300v700q0 41 29.5 70.5t70.5 29.5zM400 0v400q0 41 -29.5 70.5t-70.5 29.5h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-400h300z" />
203
+ <glyph unicode="&#xe186;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM200 800v-300h200v-100h-200v-100h300v300h-200v100h200v100h-300zM800 800h-200v-500h200v100h100v300h-100 v100zM800 700v-300h-100v300h100z" />
204
+ <glyph unicode="&#xe187;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM400 600h-100v200h-100v-500h100v200h100v-200h100v500h-100v-200zM800 800h-200v-500h200v100h100v300h-100 v100zM800 700v-300h-100v300h100z" />
205
+ <glyph unicode="&#xe188;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM200 800v-500h300v100h-200v300h200v100h-300zM600 800v-500h300v100h-200v300h200v100h-300z" />
206
+ <glyph unicode="&#xe189;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM500 700l-300 -150l300 -150v300zM600 400l300 150l-300 150v-300z" />
207
+ <glyph unicode="&#xe190;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM900 800v-500h-700v500h700zM300 400h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130v-300zM800 700h-130 q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300z" />
208
+ <glyph unicode="&#xe191;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM200 800v-300h200v-100h-200v-100h300v300h-200v100h200v100h-300zM800 300h100v500h-200v-100h100v-400z M601 300h100v100h-100v-100z" />
209
+ <glyph unicode="&#xe192;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM300 700v100h-100v-500h300v400h-200zM800 300h100v500h-200v-100h100v-400zM401 400h-100v200h100v-200z M601 300h100v100h-100v-100z" />
210
+ <glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM1000 900h-900v-700h900v700zM400 700h-200v100h300v-300h-99v-100h-100v100h99v200zM800 700h-100v100h200v-500h-100v400zM201 400h100v-100 h-100v100zM701 300h-100v100h100v-100z" />
211
+ <glyph unicode="&#xe194;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM800 700h-300 v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
212
+ <glyph unicode="&#xe195;" d="M596 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM596 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM800 700v-100 h-100v100h-200v-100h200v-100h-200v-100h-100v400h300zM800 400h-100v100h100v-100z" />
213
+ <glyph unicode="&#xe197;" d="M800 300h128q120 0 205 86t85 208q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5q0 -80 56.5 -137t135.5 -57h222v300h400v-300zM700 200h200l-300 -300 l-300 300h200v300h200v-300z" />
214
+ <glyph unicode="&#xe198;" d="M600 714l403 -403q94 26 154.5 104t60.5 178q0 121 -85 207.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5q0 -80 56.5 -137t135.5 -57h8zM700 -100h-200v300h-200l300 300 l300 -300h-200v-300z" />
215
+ <glyph unicode="&#xe199;" d="M700 200h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-155l-75 -45h350l-75 45v155z" />
216
+ <glyph unicode="&#xe200;" d="M700 45v306q46 -30 100 -30q74 0 126.5 52.5t52.5 126.5q0 24 -9 55q50 32 79.5 83t29.5 112q0 90 -61.5 155.5t-150.5 71.5q-26 89 -99.5 145.5t-167.5 56.5q-116 0 -197.5 -81.5t-81.5 -197.5q0 -4 1 -12t1 -11q-14 2 -23 2q-74 0 -126.5 -52.5t-52.5 -126.5 q0 -53 28.5 -97t75.5 -65q-4 -16 -4 -38q0 -74 52.5 -126.5t126.5 -52.5q56 0 100 30v-306l-75 -45h350z" />
217
+ <glyph unicode="&#x1f4bc;" d="M800 1000h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5h200q41 0 70.5 -29.5t29.5 -70.5v-100zM500 1000h200v100h-200v-100zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
218
+ <glyph unicode="&#x1f4c5;" d="M1100 900v150q0 21 -14.5 35.5t-35.5 14.5h-150v100h-100v-100h-500v100h-100v-100h-150q-21 0 -35.5 -14.5t-14.5 -35.5v-150h1100zM0 800v-750q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v750h-1100zM100 600h100v-100h-100v100zM300 600h100v-100h-100v100z M500 600h100v-100h-100v100zM700 600h100v-100h-100v100zM900 600h100v-100h-100v100zM100 400h100v-100h-100v100zM300 400h100v-100h-100v100zM500 400h100v-100h-100v100zM700 400h100v-100h-100v100zM900 400h100v-100h-100v100zM100 200h100v-100h-100v100zM300 200 h100v-100h-100v100zM500 200h100v-100h-100v100zM700 200h100v-100h-100v100zM900 200h100v-100h-100v100z" />
219
+ <glyph unicode="&#x1f4cc;" d="M902 1185l283 -282q15 -15 15 -36t-15 -35q-14 -15 -35 -15t-35 15l-36 35l-279 -267v-300l-212 210l-208 -207l-380 -303l303 380l207 208l-210 212h300l267 279l-35 36q-15 14 -15 35t15 35q14 15 35 15t35 -15z" />
220
+ <glyph unicode="&#x1f4ce;" d="M518 119l69 -60l517 511q67 67 95 157t11 183q-16 87 -67 154t-130 103q-69 33 -152 33q-107 0 -197 -55q-40 -24 -111 -95l-512 -512q-68 -68 -81 -163t35 -173q35 -57 94 -89t129 -32q63 0 119 28q33 16 65 40.5t52.5 45.5t59.5 64q40 44 57 61l394 394q35 35 47 84 t-3 96q-27 87 -117 104q-20 2 -29 2q-46 0 -79.5 -17t-67.5 -51l-388 -396l-7 -7l69 -67l377 373q20 22 39 38q23 23 50 23q38 0 53 -36q16 -39 -20 -75l-547 -547q-52 -52 -125 -52q-55 0 -100 33t-54 96q-5 35 2.5 66t31.5 63t42 50t56 54q24 21 44 41l348 348 q52 52 82.5 79.5t84 54t107.5 26.5q25 0 48 -4q95 -17 154 -94.5t51 -175.5q-7 -101 -98 -192l-252 -249l-253 -256z" />
221
+ <glyph unicode="&#x1f4f7;" d="M1200 200v600q0 41 -29.5 70.5t-70.5 29.5h-150q-4 8 -11.5 21.5t-33 48t-53 61t-69 48t-83.5 21.5h-200q-41 0 -82 -20.5t-70 -50t-52 -59t-34 -50.5l-12 -20h-150q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5z M1000 700h-100v100h100v-100zM844 500q0 -100 -72 -172t-172 -72t-172 72t-72 172t72 172t172 72t172 -72t72 -172zM706 500q0 44 -31 75t-75 31t-75 -31t-31 -75t31 -75t75 -31t75 31t31 75z" />
222
+ <glyph unicode="&#x1f512;" d="M900 800h100q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-900q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h100v200q0 82 59 141t141 59h300q82 0 141 -59t59 -141v-200zM400 800h300v150q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-150z" />
223
+ <glyph unicode="&#x1f514;" d="M1062 400h17q20 0 33.5 -14.5t13.5 -35.5q0 -20 -13 -40t-31 -27q-22 -9 -63 -23t-167.5 -37t-251.5 -23t-245.5 20.5t-178.5 41.5l-58 20q-18 7 -31 27.5t-13 40.5q0 21 13.5 35.5t33.5 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3 32t29 13h94 q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327zM600 104q-54 0 -103 6q12 -49 40 -79.5t63 -30.5t63 30.5t39 79.5q-48 -6 -102 -6z" />
224
+ <glyph unicode="&#x1f516;" d="M200 0l450 444l450 -443v1150q0 20 -14.5 35t-35.5 15h-800q-21 0 -35.5 -15t-14.5 -35v-1151z" />
225
+ <glyph unicode="&#x1f525;" d="M400 755q2 -12 8 -41.5t8 -43t6 -39.5t3.5 -39.5t-1 -33.5t-6 -31.5t-13.5 -24t-21 -20.5t-31 -12q-38 -10 -67 13t-40.5 61.5t-15 81.5t10.5 75q-52 -46 -83.5 -101t-39 -107t-7.5 -85t5 -63q9 -56 44 -119.5t105 -108.5q31 -21 64 -16t62 23.5t57 49.5t48 61.5t35 60.5 q32 66 39 184.5t-13 157.5q79 -80 122 -164t26 -184q-5 -33 -20.5 -69.5t-37.5 -80.5q-10 -19 -14.5 -29t-12 -26t-9 -23.5t-3 -19t2.5 -15.5t11 -9.5t19.5 -5t30.5 2.5t42 8q57 20 91 34t87.5 44.5t87 64t65.5 88.5t47 122q38 172 -44.5 341.5t-246.5 278.5q22 -44 43 -129 q39 -159 -32 -154q-15 2 -33 9q-79 33 -120.5 100t-44 175.5t48.5 257.5q-13 -8 -34 -23.5t-72.5 -66.5t-88.5 -105.5t-60 -138t-8 -166.5z" />
226
+ <glyph unicode="&#x1f527;" d="M948 778l251 126q13 -175 -151 -267q-123 -70 -253 -23l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-33 101 6 201.5t135 154.5q164 92 306 -9l-259 -138z" />
227
+ </font>
228
+ </defs></svg>
inc/libraries/bootstrap/fonts/glyphicons-halflings-regular.ttf ADDED
Binary file
inc/libraries/bootstrap/fonts/glyphicons-halflings-regular.woff ADDED
Binary file
inc/libraries/bootstrap/js/bootstrap.min.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ /**
2
+ * bootstrap.js v3.0.0 by @fat and @mdo
3
+ * Copyright 2013 Twitter Inc.
4
+ * http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ if(!jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(window.jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]');if(a.length){var b=this.$element.find("input").prop("checked",!this.$element.hasClass("active")).trigger("change");"radio"===b.prop("type")&&a.find(".active").removeClass("active")}this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(window.jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}};var g=a.fn.dropdown;a.fn.dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("dropdown");d||c.data("dropdown",d=new f(this)),"string"==typeof b&&d[b].call(c)})},a.fn.dropdown.Constructor=f,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=g,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu]",f.prototype.keydown)}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focus",i="hover"==g?"mouseleave":"blur";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show),void 0):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide),void 0):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this.tip();this.setContent(),this.options.animation&&c.addClass("fade");var d="function"==typeof this.options.placement?this.options.placement.call(this,c[0],this.$element[0]):this.options.placement,e=/\s?auto?\s?/i,f=e.test(d);f&&(d=d.replace(e,"")||"top"),c.detach().css({top:0,left:0,display:"block"}).addClass(d),this.options.container?c.appendTo(this.options.container):c.insertAfter(this.$element);var g=this.getPosition(),h=c[0].offsetWidth,i=c[0].offsetHeight;if(f){var j=this.$element.parent(),k=d,l=document.documentElement.scrollTop||document.body.scrollTop,m="body"==this.options.container?window.innerWidth:j.outerWidth(),n="body"==this.options.container?window.innerHeight:j.outerHeight(),o="body"==this.options.container?0:j.offset().left;d="bottom"==d&&g.top+g.height+i-l>n?"top":"top"==d&&g.top-l-i<0?"bottom":"right"==d&&g.right+h>m?"left":"left"==d&&g.left-h<o?"right":d,c.removeClass(k).addClass(d)}var p=this.getCalculatedOffset(d,g,h,i);this.applyPlacement(p,d),this.$element.trigger("shown.bs."+this.type)}},b.prototype.applyPlacement=function(a,b){var c,d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),a.top=a.top+g,a.left=a.left+h,d.offset(a).addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;if("top"==b&&j!=f&&(c=!0,a.top=a.top+f-j),/bottom|top/.test(b)){var k=0;a.left<0&&(k=-2*a.left,a.left=0,d.offset(a),i=d[0].offsetWidth,j=d[0].offsetHeight),this.replaceArrow(k-e+i,i,"left")}else this.replaceArrow(j-f,j,"top");c&&d.offset(a)},b.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},b.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach()}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,b).emulateTransitionEnd(150):b(),this.$element.trigger("hidden.bs."+this.type),this)},b.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},b.prototype.hasContent=function(){return this.getTitle()},b.prototype.getPosition=function(){var b=this.$element[0];return a.extend({},"function"==typeof b.getBoundingClientRect?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},b.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},b.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},b.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},b.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},b.prototype.enable=function(){this.enabled=!0},b.prototype.disable=function(){this.enabled=!1},b.prototype.toggleEnabled=function(){this.enabled=!this.enabled},b.prototype.toggle=function(b){var c=b?a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type):this;c.tip().hasClass("in")?c.leave(c):c.enter(c)},b.prototype.destroy=function(){this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof c&&c;e||d.data("bs.tooltip",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");b.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(window.jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(window.jQuery);
inc/libraries/countdown/css/jquery.countdown.css ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* jQuery Countdown styles 2.0.0. */
2
+ .is-countdown {
3
+ border: 1px solid #ccc;
4
+ background-color: #eee;
5
+ }
6
+ .countdown-rtl {
7
+ direction: rtl;
8
+ }
9
+ .countdown-holding span {
10
+ color: #888;
11
+ }
12
+ .countdown-row {
13
+ clear: both;
14
+ width: 100%;
15
+ padding: 0px 2px;
16
+ text-align: center;
17
+ }
18
+ .countdown-show1 .countdown-section {
19
+ width: 98%;
20
+ }
21
+ .countdown-show2 .countdown-section {
22
+ width: 48%;
23
+ }
24
+ .countdown-show3 .countdown-section {
25
+ width: 32.5%;
26
+ }
27
+ .countdown-show4 .countdown-section {
28
+ width: 24.5%;
29
+ }
30
+ .countdown-show5 .countdown-section {
31
+ width: 19.5%;
32
+ }
33
+ .countdown-show6 .countdown-section {
34
+ width: 16.25%;
35
+ }
36
+ .countdown-show7 .countdown-section {
37
+ width: 14%;
38
+ }
39
+ .countdown-section {
40
+ display: block;
41
+ float: left;
42
+ font-size: 75%;
43
+ text-align: center;
44
+ }
45
+ .countdown-amount {
46
+ font-size: 200%;
47
+ }
48
+ .countdown-period {
49
+ display: block;
50
+ }
51
+ .countdown-descr {
52
+ display: block;
53
+ width: 100%;
54
+ }
inc/libraries/countdown/js/jquery.countdown.min.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ /* http://keith-wood.name/countdown.html
2
+ Countdown for jQuery v2.0.2.
3
+ Written by Keith Wood (kbwood{at}iinet.com.au) January 2008.
4
+ Available under the MIT (http://keith-wood.name/licence.html) license.
5
+ Please attribute the author if you use it. */
6
+ (function($){var w='countdown';var Y=0;var O=1;var W=2;var D=3;var H=4;var M=5;var S=6;$.JQPlugin.createPlugin({name:w,defaultOptions:{until:null,since:null,timezone:null,serverSync:null,format:'dHMS',layout:'',compact:false,padZeroes:false,significant:0,description:'',expiryUrl:'',expiryText:'',alwaysExpire:false,onExpiry:null,onTick:null,tickInterval:1},regionalOptions:{'':{labels:['Years','Months','Weeks','Days','Hours','Minutes','Seconds'],labels1:['Year','Month','Week','Day','Hour','Minute','Second'],compactLabels:['y','m','w','d'],whichLabels:null,digits:['0','1','2','3','4','5','6','7','8','9'],timeSeparator:':',isRTL:false}},_getters:['getTimes'],_rtlClass:w+'-rtl',_sectionClass:w+'-section',_amountClass:w+'-amount',_periodClass:w+'-period',_rowClass:w+'-row',_holdingClass:w+'-holding',_showClass:w+'-show',_descrClass:w+'-descr',_timerElems:[],_init:function(){var c=this;this._super();this._serverSyncs=[];var d=(typeof Date.now=='function'?Date.now:function(){return new Date().getTime()});var e=(window.performance&&typeof window.performance.now=='function');function timerCallBack(a){var b=(a<1e12?(e?(performance.now()+performance.timing.navigationStart):d()):a||d());if(b-g>=1000){c._updateElems();g=b}f(timerCallBack)}var f=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||null;var g=0;if(!f||$.noRequestAnimationFrame){$.noRequestAnimationFrame=null;setInterval(function(){c._updateElems()},980)}else{g=window.animationStartTime||window.webkitAnimationStartTime||window.mozAnimationStartTime||window.oAnimationStartTime||window.msAnimationStartTime||d();f(timerCallBack)}},UTCDate:function(a,b,c,e,f,g,h,i){if(typeof b=='object'&&b.constructor==Date){i=b.getMilliseconds();h=b.getSeconds();g=b.getMinutes();f=b.getHours();e=b.getDate();c=b.getMonth();b=b.getFullYear()}var d=new Date();d.setUTCFullYear(b);d.setUTCDate(1);d.setUTCMonth(c||0);d.setUTCDate(e||1);d.setUTCHours(f||0);d.setUTCMinutes((g||0)-(Math.abs(a)<30?a*60:a));d.setUTCSeconds(h||0);d.setUTCMilliseconds(i||0);return d},periodsToSeconds:function(a){return a[0]*31557600+a[1]*2629800+a[2]*604800+a[3]*86400+a[4]*3600+a[5]*60+a[6]},resync:function(){var d=this;$('.'+this._getMarker()).each(function(){var a=$.data(this,d.name);if(a.options.serverSync){var b=null;for(var i=0;i<d._serverSyncs.length;i++){if(d._serverSyncs[i][0]==a.options.serverSync){b=d._serverSyncs[i];break}}if(b[2]==null){var c=($.isFunction(a.options.serverSync)?a.options.serverSync.apply(this,[]):null);b[2]=(c?new Date().getTime()-c.getTime():0)-b[1]}if(a._since){a._since.setMilliseconds(a._since.getMilliseconds()+b[2])}a._until.setMilliseconds(a._until.getMilliseconds()+b[2])}});for(var i=0;i<d._serverSyncs.length;i++){if(d._serverSyncs[i][2]!=null){d._serverSyncs[i][1]+=d._serverSyncs[i][2];delete d._serverSyncs[i][2]}}},_instSettings:function(a,b){return{_periods:[0,0,0,0,0,0,0]}},_addElem:function(a){if(!this._hasElem(a)){this._timerElems.push(a)}},_hasElem:function(a){return($.inArray(a,this._timerElems)>-1)},_removeElem:function(b){this._timerElems=$.map(this._timerElems,function(a){return(a==b?null:a)})},_updateElems:function(){for(var i=this._timerElems.length-1;i>=0;i--){this._updateCountdown(this._timerElems[i])}},_optionsChanged:function(a,b,c){if(c.layout){c.layout=c.layout.replace(/&lt;/g,'<').replace(/&gt;/g,'>')}this._resetExtraLabels(b.options,c);var d=(b.options.timezone!=c.timezone);$.extend(b.options,c);this._adjustSettings(a,b,c.until!=null||c.since!=null||d);var e=new Date();if((b._since&&b._since<e)||(b._until&&b._until>e)){this._addElem(a[0])}this._updateCountdown(a,b)},_updateCountdown:function(a,b){a=a.jquery?a:$(a);b=b||this._getInst(a);if(!b){return}a.html(this._generateHTML(b)).toggleClass(this._rtlClass,b.options.isRTL);if($.isFunction(b.options.onTick)){var c=b._hold!='lap'?b._periods:this._calculatePeriods(b,b._show,b.options.significant,new Date());if(b.options.tickInterval==1||this.periodsToSeconds(c)%b.options.tickInterval==0){b.options.onTick.apply(a[0],[c])}}var d=b._hold!='pause'&&(b._since?b._now.getTime()<b._since.getTime():b._now.getTime()>=b._until.getTime());if(d&&!b._expiring){b._expiring=true;if(this._hasElem(a[0])||b.options.alwaysExpire){this._removeElem(a[0]);if($.isFunction(b.options.onExpiry)){b.options.onExpiry.apply(a[0],[])}if(b.options.expiryText){var e=b.options.layout;b.options.layout=b.options.expiryText;this._updateCountdown(a[0],b);b.options.layout=e}if(b.options.expiryUrl){window.location=b.options.expiryUrl}}b._expiring=false}else if(b._hold=='pause'){this._removeElem(a[0])}},_resetExtraLabels:function(a,b){for(var n in b){if(n.match(/[Ll]abels[02-9]|compactLabels1/)){a[n]=b[n]}}for(var n in a){if(n.match(/[Ll]abels[02-9]|compactLabels1/)&&typeof b[n]==='undefined'){a[n]=null}}},_adjustSettings:function(a,b,c){var d=null;for(var i=0;i<this._serverSyncs.length;i++){if(this._serverSyncs[i][0]==b.options.serverSync){d=this._serverSyncs[i][1];break}}if(d!=null){var e=(b.options.serverSync?d:0);var f=new Date()}else{var g=($.isFunction(b.options.serverSync)?b.options.serverSync.apply(a[0],[]):null);var f=new Date();var e=(g?f.getTime()-g.getTime():0);this._serverSyncs.push([b.options.serverSync,e])}var h=b.options.timezone;h=(h==null?-f.getTimezoneOffset():h);if(c||(!c&&b._until==null&&b._since==null)){b._since=b.options.since;if(b._since!=null){b._since=this.UTCDate(h,this._determineTime(b._since,null));if(b._since&&e){b._since.setMilliseconds(b._since.getMilliseconds()+e)}}b._until=this.UTCDate(h,this._determineTime(b.options.until,f));if(e){b._until.setMilliseconds(b._until.getMilliseconds()+e)}}b._show=this._determineShow(b)},_preDestroy:function(a,b){this._removeElem(a[0]);a.empty()},pause:function(a){this._hold(a,'pause')},lap:function(a){this._hold(a,'lap')},resume:function(a){this._hold(a,null)},toggle:function(a){var b=$.data(a,this.name)||{};this[!b._hold?'pause':'resume'](a)},toggleLap:function(a){var b=$.data(a,this.name)||{};this[!b._hold?'lap':'resume'](a)},_hold:function(a,b){var c=$.data(a,this.name);if(c){if(c._hold=='pause'&&!b){c._periods=c._savePeriods;var d=(c._since?'-':'+');c[c._since?'_since':'_until']=this._determineTime(d+c._periods[0]+'y'+d+c._periods[1]+'o'+d+c._periods[2]+'w'+d+c._periods[3]+'d'+d+c._periods[4]+'h'+d+c._periods[5]+'m'+d+c._periods[6]+'s');this._addElem(a)}c._hold=b;c._savePeriods=(b=='pause'?c._periods:null);$.data(a,this.name,c);this._updateCountdown(a,c)}},getTimes:function(a){var b=$.data(a,this.name);return(!b?null:(b._hold=='pause'?b._savePeriods:(!b._hold?b._periods:this._calculatePeriods(b,b._show,b.options.significant,new Date()))))},_determineTime:function(k,l){var m=this;var n=function(a){var b=new Date();b.setTime(b.getTime()+a*1000);return b};var o=function(a){a=a.toLowerCase();var b=new Date();var c=b.getFullYear();var d=b.getMonth();var e=b.getDate();var f=b.getHours();var g=b.getMinutes();var h=b.getSeconds();var i=/([+-]?[0-9]+)\s*(s|m|h|d|w|o|y)?/g;var j=i.exec(a);while(j){switch(j[2]||'s'){case's':h+=parseInt(j[1],10);break;case'm':g+=parseInt(j[1],10);break;case'h':f+=parseInt(j[1],10);break;case'd':e+=parseInt(j[1],10);break;case'w':e+=parseInt(j[1],10)*7;break;case'o':d+=parseInt(j[1],10);e=Math.min(e,m._getDaysInMonth(c,d));break;case'y':c+=parseInt(j[1],10);e=Math.min(e,m._getDaysInMonth(c,d));break}j=i.exec(a)}return new Date(c,d,e,f,g,h,0)};var p=(k==null?l:(typeof k=='string'?o(k):(typeof k=='number'?n(k):k)));if(p)p.setMilliseconds(0);return p},_getDaysInMonth:function(a,b){return 32-new Date(a,b,32).getDate()},_normalLabels:function(a){return a},_generateHTML:function(c){var d=this;c._periods=(c._hold?c._periods:this._calculatePeriods(c,c._show,c.options.significant,new Date()));var e=false;var f=0;var g=c.options.significant;var h=$.extend({},c._show);for(var i=Y;i<=S;i++){e|=(c._show[i]=='?'&&c._periods[i]>0);h[i]=(c._show[i]=='?'&&!e?null:c._show[i]);f+=(h[i]?1:0);g-=(c._periods[i]>0?1:0)}var j=[false,false,false,false,false,false,false];for(var i=S;i>=Y;i--){if(c._show[i]){if(c._periods[i]){j[i]=true}else{j[i]=g>0;g--}}}var k=(c.options.compact?c.options.compactLabels:c.options.labels);var l=c.options.whichLabels||this._normalLabels;var m=function(a){var b=c.options['compactLabels'+l(c._periods[a])];return(h[a]?d._translateDigits(c,c._periods[a])+(b?b[a]:k[a])+' ':'')};var n=(c.options.padZeroes?2:1);var o=function(a){var b=c.options['labels'+l(c._periods[a])];return((!c.options.significant&&h[a])||(c.options.significant&&j[a])?'<span class="'+d._sectionClass+'">'+'<span class="'+d._amountClass+'">'+d._minDigits(c,c._periods[a],n)+'</span>'+'<span class="'+d._periodClass+'">'+(b?b[a]:k[a])+'</span></span>':'')};return(c.options.layout?this._buildLayout(c,h,c.options.layout,c.options.compact,c.options.significant,j):((c.options.compact?'<span class="'+this._rowClass+' '+this._amountClass+(c._hold?' '+this._holdingClass:'')+'">'+m(Y)+m(O)+m(W)+m(D)+(h[H]?this._minDigits(c,c._periods[H],2):'')+(h[M]?(h[H]?c.options.timeSeparator:'')+this._minDigits(c,c._periods[M],2):'')+(h[S]?(h[H]||h[M]?c.options.timeSeparator:'')+this._minDigits(c,c._periods[S],2):''):'<span class="'+this._rowClass+' '+this._showClass+(c.options.significant||f)+(c._hold?' '+this._holdingClass:'')+'">'+o(Y)+o(O)+o(W)+o(D)+o(H)+o(M)+o(S))+'</span>'+(c.options.description?'<span class="'+this._rowClass+' '+this._descrClass+'">'+c.options.description+'</span>':'')))},_buildLayout:function(c,d,e,f,g,h){var j=c.options[f?'compactLabels':'labels'];var k=c.options.whichLabels||this._normalLabels;var l=function(a){return(c.options[(f?'compactLabels':'labels')+k(c._periods[a])]||j)[a]};var m=function(a,b){return c.options.digits[Math.floor(a/b)%10]};var o={desc:c.options.description,sep:c.options.timeSeparator,yl:l(Y),yn:this._minDigits(c,c._periods[Y],1),ynn:this._minDigits(c,c._periods[Y],2),ynnn:this._minDigits(c,c._periods[Y],3),y1:m(c._periods[Y],1),y10:m(c._periods[Y],10),y100:m(c._periods[Y],100),y1000:m(c._periods[Y],1000),ol:l(O),on:this._minDigits(c,c._periods[O],1),onn:this._minDigits(c,c._periods[O],2),onnn:this._minDigits(c,c._periods[O],3),o1:m(c._periods[O],1),o10:m(c._periods[O],10),o100:m(c._periods[O],100),o1000:m(c._periods[O],1000),wl:l(W),wn:this._minDigits(c,c._periods[W],1),wnn:this._minDigits(c,c._periods[W],2),wnnn:this._minDigits(c,c._periods[W],3),w1:m(c._periods[W],1),w10:m(c._periods[W],10),w100:m(c._periods[W],100),w1000:m(c._periods[W],1000),dl:l(D),dn:this._minDigits(c,c._periods[D],1),dnn:this._minDigits(c,c._periods[D],2),dnnn:this._minDigits(c,c._periods[D],3),d1:m(c._periods[D],1),d10:m(c._periods[D],10),d100:m(c._periods[D],100),d1000:m(c._periods[D],1000),hl:l(H),hn:this._minDigits(c,c._periods[H],1),hnn:this._minDigits(c,c._periods[H],2),hnnn:this._minDigits(c,c._periods[H],3),h1:m(c._periods[H],1),h10:m(c._periods[H],10),h100:m(c._periods[H],100),h1000:m(c._periods[H],1000),ml:l(M),mn:this._minDigits(c,c._periods[M],1),mnn:this._minDigits(c,c._periods[M],2),mnnn:this._minDigits(c,c._periods[M],3),m1:m(c._periods[M],1),m10:m(c._periods[M],10),m100:m(c._periods[M],100),m1000:m(c._periods[M],1000),sl:l(S),sn:this._minDigits(c,c._periods[S],1),snn:this._minDigits(c,c._periods[S],2),snnn:this._minDigits(c,c._periods[S],3),s1:m(c._periods[S],1),s10:m(c._periods[S],10),s100:m(c._periods[S],100),s1000:m(c._periods[S],1000)};var p=e;for(var i=Y;i<=S;i++){var q='yowdhms'.charAt(i);var r=new RegExp('\\{'+q+'<\\}([\\s\\S]*)\\{'+q+'>\\}','g');p=p.replace(r,((!g&&d[i])||(g&&h[i])?'$1':''))}$.each(o,function(n,v){var a=new RegExp('\\{'+n+'\\}','g');p=p.replace(a,v)});return p},_minDigits:function(a,b,c){b=''+b;if(b.length>=c){return this._translateDigits(a,b)}b='0000000000'+b;return this._translateDigits(a,b.substr(b.length-c))},_translateDigits:function(b,c){return(''+c).replace(/[0-9]/g,function(a){return b.options.digits[a]})},_determineShow:function(a){var b=a.options.format;var c=[];c[Y]=(b.match('y')?'?':(b.match('Y')?'!':null));c[O]=(b.match('o')?'?':(b.match('O')?'!':null));c[W]=(b.match('w')?'?':(b.match('W')?'!':null));c[D]=(b.match('d')?'?':(b.match('D')?'!':null));c[H]=(b.match('h')?'?':(b.match('H')?'!':null));c[M]=(b.match('m')?'?':(b.match('M')?'!':null));c[S]=(b.match('s')?'?':(b.match('S')?'!':null));return c},_calculatePeriods:function(c,d,e,f){c._now=f;c._now.setMilliseconds(0);var g=new Date(c._now.getTime());if(c._since){if(f.getTime()<c._since.getTime()){c._now=f=g}else{f=c._since}}else{g.setTime(c._until.getTime());if(f.getTime()>c._until.getTime()){c._now=f=g}}var h=[0,0,0,0,0,0,0];if(d[Y]||d[O]){var i=this._getDaysInMonth(f.getFullYear(),f.getMonth());var j=this._getDaysInMonth(g.getFullYear(),g.getMonth());var k=(g.getDate()==f.getDate()||(g.getDate()>=Math.min(i,j)&&f.getDate()>=Math.min(i,j)));var l=function(a){return(a.getHours()*60+a.getMinutes())*60+a.getSeconds()};var m=Math.max(0,(g.getFullYear()-f.getFullYear())*12+g.getMonth()-f.getMonth()+((g.getDate()<f.getDate()&&!k)||(k&&l(g)<l(f))?-1:0));h[Y]=(d[Y]?Math.floor(m/12):0);h[O]=(d[O]?m-h[Y]*12:0);f=new Date(f.getTime());var n=(f.getDate()==i);var o=this._getDaysInMonth(f.getFullYear()+h[Y],f.getMonth()+h[O]);if(f.getDate()>o){f.setDate(o)}f.setFullYear(f.getFullYear()+h[Y]);f.setMonth(f.getMonth()+h[O]);if(n){f.setDate(o)}}var p=Math.floor((g.getTime()-f.getTime())/1000);var q=function(a,b){h[a]=(d[a]?Math.floor(p/b):0);p-=h[a]*b};q(W,604800);q(D,86400);q(H,3600);q(M,60);q(S,1);if(p>0&&!c._since){var r=[1,12,4.3482,7,24,60,60];var s=S;var t=1;for(var u=S;u>=Y;u--){if(d[u]){if(h[s]>=t){h[s]=0;p=1}if(p>0){h[u]++;p=0;s=u;t=1}}t*=r[u]}}if(e){for(var u=Y;u<=S;u++){if(e&&h[u]){e--}else if(!e){h[u]=0}}}return h}})})(jQuery);
inc/libraries/countdown/js/jquery.plugin.min.js ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ /** Abstract base class for collection plugins v1.0.1.
2
+ Written by Keith Wood (kbwood{at}iinet.com.au) December 2013.
3
+ Licensed under the MIT (http://keith-wood.name/licence.html) license. */
4
+ (function(){var j=false;window.JQClass=function(){};JQClass.classes={};JQClass.extend=function extender(f){var g=this.prototype;j=true;var h=new this();j=false;for(var i in f){h[i]=typeof f[i]=='function'&&typeof g[i]=='function'?(function(d,e){return function(){var b=this._super;this._super=function(a){return g[d].apply(this,a||[])};var c=e.apply(this,arguments);this._super=b;return c}})(i,f[i]):f[i]}function JQClass(){if(!j&&this._init){this._init.apply(this,arguments)}}JQClass.prototype=h;JQClass.prototype.constructor=JQClass;JQClass.extend=extender;return JQClass}})();(function($){JQClass.classes.JQPlugin=JQClass.extend({name:'plugin',defaultOptions:{},regionalOptions:{},_getters:[],_getMarker:function(){return'is-'+this.name},_init:function(){$.extend(this.defaultOptions,(this.regionalOptions&&this.regionalOptions[''])||{});var c=camelCase(this.name);$[c]=this;$.fn[c]=function(a){var b=Array.prototype.slice.call(arguments,1);if($[c]._isNotChained(a,b)){return $[c][a].apply($[c],[this[0]].concat(b))}return this.each(function(){if(typeof a==='string'){if(a[0]==='_'||!$[c][a]){throw'Unknown method: '+a;}$[c][a].apply($[c],[this].concat(b))}else{$[c]._attach(this,a)}})}},setDefaults:function(a){$.extend(this.defaultOptions,a||{})},_isNotChained:function(a,b){if(a==='option'&&(b.length===0||(b.length===1&&typeof b[0]==='string'))){return true}return $.inArray(a,this._getters)>-1},_attach:function(a,b){a=$(a);if(a.hasClass(this._getMarker())){return}a.addClass(this._getMarker());b=$.extend({},this.defaultOptions,this._getMetadata(a),b||{});var c=$.extend({name:this.name,elem:a,options:b},this._instSettings(a,b));a.data(this.name,c);this._postAttach(a,c);this.option(a,b)},_instSettings:function(a,b){return{}},_postAttach:function(a,b){},_getMetadata:function(d){try{var f=d.data(this.name.toLowerCase())||'';f=f.replace(/'/g,'"');f=f.replace(/([a-zA-Z0-9]+):/g,function(a,b,i){var c=f.substring(0,i).match(/"/g);return(!c||c.length%2===0?'"'+b+'":':b+':')});f=$.parseJSON('{'+f+'}');for(var g in f){var h=f[g];if(typeof h==='string'&&h.match(/^new Date\((.*)\)$/)){f[g]=eval(h)}}return f}catch(e){return{}}},_getInst:function(a){return $(a).data(this.name)||{}},option:function(a,b,c){a=$(a);var d=a.data(this.name);if(!b||(typeof b==='string'&&c==null)){var e=(d||{}).options;return(e&&b?e[b]:e)}if(!a.hasClass(this._getMarker())){return}var e=b||{};if(typeof b==='string'){e={};e[b]=c}this._optionsChanged(a,d,e);$.extend(d.options,e)},_optionsChanged:function(a,b,c){},destroy:function(a){a=$(a);if(!a.hasClass(this._getMarker())){return}this._preDestroy(a,this._getInst(a));a.removeData(this.name).removeClass(this._getMarker())},_preDestroy:function(a,b){}});function camelCase(c){return c.replace(/-([a-z])/g,function(a,b){return b.toUpperCase()})}$.JQPlugin={createPlugin:function(a,b){if(typeof a==='object'){b=a;a='JQPlugin'}a=camelCase(a);var c=camelCase(b.name);JQClass.classes[c]=JQClass.classes[a].extend(b);new JQClass.classes[c]()}}})(jQuery);
inc/libraries/magnific-popup/css/magnific-popup.css ADDED
@@ -0,0 +1,429 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Magnific Popup CSS */
2
+ .mfp-bg {
3
+ top: 0;
4
+ left: 0;
5
+ width: 100%;
6
+ height: 100%;
7
+ z-index: 1042;
8
+ overflow: hidden;
9
+ position: fixed;
10
+ background: #0b0b0b;
11
+ opacity: 0.8;
12
+ filter: alpha(opacity=80); }
13
+
14
+ .mfp-wrap {
15
+ top: 0;
16
+ left: 0;
17
+ width: 100%;
18
+ height: 100%;
19
+ z-index: 1043;
20
+ position: fixed;
21
+ outline: none !important;
22
+ -webkit-backface-visibility: hidden; }
23
+
24
+ .mfp-container {
25
+ text-align: center;
26
+ position: absolute;
27
+ width: 100%;
28
+ height: 100%;
29
+ left: 0;
30
+ top: 0;
31
+ padding: 0 8px;
32
+ -webkit-box-sizing: border-box;
33
+ -moz-box-sizing: border-box;
34
+ box-sizing: border-box; }
35
+
36
+ .mfp-container:before {
37
+ content: '';
38
+ display: inline-block;
39
+ height: 100%;
40
+ vertical-align: middle; }
41
+
42
+ .mfp-align-top .mfp-container:before {
43
+ display: none; }
44
+
45
+ .mfp-content {
46
+ position: relative;
47
+ display: inline-block;
48
+ vertical-align: middle;
49
+ margin: 0 auto;
50
+ text-align: left;
51
+ z-index: 1045; }
52
+
53
+ .mfp-inline-holder .mfp-content,
54
+ .mfp-ajax-holder .mfp-content {
55
+ width: 100%;
56
+ cursor: auto; }
57
+
58
+ .mfp-ajax-cur {
59
+ cursor: progress; }
60
+
61
+ .mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close {
62
+ cursor: -moz-zoom-out;
63
+ cursor: -webkit-zoom-out;
64
+ cursor: zoom-out; }
65
+
66
+ .mfp-zoom {
67
+ cursor: pointer;
68
+ cursor: -webkit-zoom-in;
69
+ cursor: -moz-zoom-in;
70
+ cursor: zoom-in; }
71
+
72
+ .mfp-auto-cursor .mfp-content {
73
+ cursor: auto; }
74
+
75
+ .mfp-close,
76
+ .mfp-arrow,
77
+ .mfp-preloader,
78
+ .mfp-counter {
79
+ -webkit-user-select: none;
80
+ -moz-user-select: none;
81
+ user-select: none; }
82
+
83
+ .mfp-loading.mfp-figure {
84
+ display: none; }
85
+
86
+ .mfp-hide {
87
+ display: none !important; }
88
+
89
+ .mfp-preloader {
90
+ color: #CCC;
91
+ position: absolute;
92
+ top: 50%;
93
+ width: auto;
94
+ text-align: center;
95
+ margin-top: -0.8em;
96
+ left: 8px;
97
+ right: 8px;
98
+ z-index: 1044; }
99
+ .mfp-preloader a {
100
+ color: #CCC; }
101
+ .mfp-preloader a:hover {
102
+ color: #FFF; }
103
+
104
+ .mfp-s-ready .mfp-preloader {
105
+ display: none; }
106
+
107
+ .mfp-s-error .mfp-content {
108
+ display: none; }
109
+
110
+ button.mfp-close,
111
+ button.mfp-arrow {
112
+ overflow: visible;
113
+ cursor: pointer;
114
+ background: transparent;
115
+ border: 0;
116
+ -webkit-appearance: none;
117
+ display: block;
118
+ outline: none;
119
+ padding: 0;
120
+ z-index: 1046;
121
+ -webkit-box-shadow: none;
122
+ box-shadow: none; }
123
+
124
+ button::-moz-focus-inner {
125
+ padding: 0;
126
+ border: 0; }
127
+
128
+ .mfp-close {
129
+ width: 44px;
130
+ height: 44px;
131
+ line-height: 44px;
132
+ position: absolute;
133
+ right: 0;
134
+ top: 0;
135
+ text-decoration: none;
136
+ text-align: center;
137
+ opacity: 0.65;
138
+ filter: alpha(opacity=65);
139
+ padding: 0 0 18px 10px;
140
+ color: #FFF;
141
+ font-style: normal;
142
+ font-size: 28px;
143
+ font-family: Arial, Baskerville, monospace; }
144
+ .mfp-close:hover,
145
+ .mfp-close:focus {
146
+ opacity: 1;
147
+ filter: alpha(opacity=100); }
148
+ .mfp-close:active {
149
+ top: 1px; }
150
+
151
+ .mfp-close-btn-in .mfp-close {
152
+ color: #333; }
153
+
154
+ .mfp-image-holder .mfp-close,
155
+ .mfp-iframe-holder .mfp-close {
156
+ color: #FFF;
157
+ right: -6px;
158
+ text-align: right;
159
+ padding-right: 6px;
160
+ width: 100%; }
161
+
162
+ .mfp-counter {
163
+ position: absolute;
164
+ top: 0;
165
+ right: 0;
166
+ color: #CCC;
167
+ font-size: 12px;
168
+ line-height: 18px;
169
+ white-space: nowrap; }
170
+
171
+ .mfp-arrow {
172
+ position: absolute;
173
+ opacity: 0.65;
174
+ filter: alpha(opacity=65);
175
+ margin: 0;
176
+ top: 50%;
177
+ margin-top: -55px;
178
+ padding: 0;
179
+ width: 90px;
180
+ height: 110px;
181
+ -webkit-tap-highlight-color: transparent; }
182
+ .mfp-arrow:active {
183
+ margin-top: -54px; }
184
+ .mfp-arrow:hover,
185
+ .mfp-arrow:focus {
186
+ opacity: 1;
187
+ filter: alpha(opacity=100); }
188
+ .mfp-arrow:before,
189
+ .mfp-arrow:after,
190
+ .mfp-arrow .mfp-b,
191
+ .mfp-arrow .mfp-a {
192
+ content: '';
193
+ display: block;
194
+ width: 0;
195
+ height: 0;
196
+ position: absolute;
197
+ left: 0;
198
+ top: 0;
199
+ margin-top: 35px;
200
+ margin-left: 35px;
201
+ border: medium inset transparent; }
202
+ .mfp-arrow:after,
203
+ .mfp-arrow .mfp-a {
204
+ border-top-width: 13px;
205
+ border-bottom-width: 13px;
206
+ top: 8px; }
207
+ .mfp-arrow:before,
208
+ .mfp-arrow .mfp-b {
209
+ border-top-width: 21px;
210
+ border-bottom-width: 21px;
211
+ opacity: 0.7; }
212
+
213
+ .mfp-arrow-left {
214
+ left: 0; }
215
+ .mfp-arrow-left:after,
216
+ .mfp-arrow-left .mfp-a {
217
+ border-right: 17px solid #FFF;
218
+ margin-left: 31px; }
219
+ .mfp-arrow-left:before,
220
+ .mfp-arrow-left .mfp-b {
221
+ margin-left: 25px;
222
+ border-right: 27px solid #3F3F3F; }
223
+
224
+ .mfp-arrow-right {
225
+ right: 0; }
226
+ .mfp-arrow-right:after,
227
+ .mfp-arrow-right .mfp-a {
228
+ border-left: 17px solid #FFF;
229
+ margin-left: 39px; }
230
+ .mfp-arrow-right:before,
231
+ .mfp-arrow-right .mfp-b {
232
+ border-left: 27px solid #3F3F3F; }
233
+
234
+ .mfp-iframe-holder {
235
+ padding-top: 40px;
236
+ padding-bottom: 40px; }
237
+ .mfp-iframe-holder .mfp-content {
238
+ line-height: 0;
239
+ width: 100%;
240
+ max-width: 900px; }
241
+ .mfp-iframe-holder .mfp-close {
242
+ top: -40px; }
243
+
244
+ .mfp-iframe-scaler {
245
+ width: 100%;
246
+ height: 0;
247
+ overflow: hidden;
248
+ padding-top: 56.25%; }
249
+ .mfp-iframe-scaler iframe {
250
+ position: absolute;
251
+ display: block;
252
+ top: 0;
253
+ left: 0;
254
+ width: 100%;
255
+ height: 100%;
256
+ box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
257
+ background: #000; }
258
+
259
+ /* Main image in popup */
260
+ img.mfp-img {
261
+ width: auto;
262
+ max-width: 100%;
263
+ height: auto;
264
+ display: block;
265
+ line-height: 0;
266
+ -webkit-box-sizing: border-box;
267
+ -moz-box-sizing: border-box;
268
+ box-sizing: border-box;
269
+ padding: 40px 0 40px;
270
+ margin: 0 auto; }
271
+
272
+ /* The shadow behind the image */
273
+ .mfp-figure {
274
+ line-height: 0; }
275
+ .mfp-figure:after {
276
+ content: '';
277
+ position: absolute;
278
+ left: 0;
279
+ top: 40px;
280
+ bottom: 40px;
281
+ display: block;
282
+ right: 0;
283
+ width: auto;
284
+ height: auto;
285
+ z-index: -1;
286
+ box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
287
+ background: #444; }
288
+ .mfp-figure small {
289
+ color: #BDBDBD;
290
+ display: block;
291
+ font-size: 12px;
292
+ line-height: 14px; }
293
+ .mfp-figure figure {
294
+ margin: 0; }
295
+
296
+ .mfp-bottom-bar {
297
+ margin-top: -36px;
298
+ position: absolute;
299
+ top: 100%;
300
+ left: 0;
301
+ width: 100%;
302
+ cursor: auto; }
303
+
304
+ .mfp-title {
305
+ text-align: left;
306
+ line-height: 18px;
307
+ color: #F3F3F3;
308
+ word-wrap: break-word;
309
+ padding-right: 36px; }
310
+
311
+ .mfp-image-holder .mfp-content {
312
+ max-width: 100%; }
313
+
314
+ .mfp-gallery .mfp-image-holder .mfp-figure {
315
+ cursor: pointer; }
316
+
317
+ @media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) {
318
+ /**
319
+ * Remove all paddings around the image on small screen
320
+ */
321
+ .mfp-img-mobile .mfp-image-holder {
322
+ padding-left: 0;
323
+ padding-right: 0; }
324
+ .mfp-img-mobile img.mfp-img {
325
+ padding: 0; }
326
+ .mfp-img-mobile .mfp-figure:after {
327
+ top: 0;
328
+ bottom: 0; }
329
+ .mfp-img-mobile .mfp-figure small {
330
+ display: inline;
331
+ margin-left: 5px; }
332
+ .mfp-img-mobile .mfp-bottom-bar {
333
+ background: rgba(0, 0, 0, 0.6);
334
+ bottom: 0;
335
+ margin: 0;
336
+ top: auto;
337
+ padding: 3px 5px;
338
+ position: fixed;
339
+ -webkit-box-sizing: border-box;
340
+ -moz-box-sizing: border-box;
341
+ box-sizing: border-box; }
342
+ .mfp-img-mobile .mfp-bottom-bar:empty {
343
+ padding: 0; }
344
+ .mfp-img-mobile .mfp-counter {
345
+ right: 5px;
346
+ top: 3px; }
347
+ .mfp-img-mobile .mfp-close {
348
+ top: 0;
349
+ right: 0;
350
+ width: 35px;
351
+ height: 35px;
352
+ line-height: 35px;
353
+ background: rgba(0, 0, 0, 0.6);
354
+ position: fixed;
355
+ text-align: center;
356
+ padding: 0; } }
357
+
358
+ @media all and (max-width: 900px) {
359
+ .mfp-arrow {
360
+ -webkit-transform: scale(0.75);
361
+ transform: scale(0.75); }
362
+ .mfp-arrow-left {
363
+ -webkit-transform-origin: 0;
364
+ transform-origin: 0; }
365
+ .mfp-arrow-right {
366
+ -webkit-transform-origin: 100%;
367
+ transform-origin: 100%; }
368
+ .mfp-container {
369
+ padding-left: 6px;
370
+ padding-right: 6px; } }
371
+
372
+ .mfp-ie7 .mfp-img {
373
+ padding: 0; }
374
+
375
+ .mfp-ie7 .mfp-bottom-bar {
376
+ width: 600px;
377
+ left: 50%;
378
+ margin-left: -300px;
379
+ margin-top: 5px;
380
+ padding-bottom: 5px; }
381
+
382
+ .mfp-ie7 .mfp-container {
383
+ padding: 0; }
384
+
385
+ .mfp-ie7 .mfp-content {
386
+ padding-top: 44px; }
387
+
388
+ .mfp-ie7 .mfp-close {
389
+ top: 0;
390
+ right: 0;
391
+ padding-top: 0; }
392
+
393
+
394
+ /**
395
+ * custom
396
+ */
397
+ /* overlay at start */
398
+ .mfp-fade.mfp-bg {
399
+ opacity: 0;
400
+
401
+ -webkit-transition: all 0.15s ease-out;
402
+ -moz-transition: all 0.15s ease-out;
403
+ transition: all 0.15s ease-out;
404
+ }
405
+ /* overlay animate in */
406
+ .mfp-fade.mfp-bg.mfp-ready {
407
+ opacity: 0.8;
408
+ }
409
+ /* overlay animate out */
410
+ .mfp-fade.mfp-bg.mfp-removing {
411
+ opacity: 0;
412
+ }
413
+
414
+ /* content at start */
415
+ .mfp-fade.mfp-wrap .mfp-content {
416
+ opacity: 0;
417
+
418
+ -webkit-transition: all 0.15s ease-out;
419
+ -moz-transition: all 0.15s ease-out;
420
+ transition: all 0.15s ease-out;
421
+ }
422
+ /* content animate it */
423
+ .mfp-fade.mfp-wrap.mfp-ready .mfp-content {
424
+ opacity: 1;
425
+ }
426
+ /* content animate out */
427
+ .mfp-fade.mfp-wrap.mfp-removing .mfp-content {
428
+ opacity: 0;
429
+ }
inc/libraries/magnific-popup/js/jquery.magnific-popup.js ADDED
@@ -0,0 +1,1860 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*! Magnific Popup - v1.1.0 - 2016-02-20
2
+ * http://dimsemenov.com/plugins/magnific-popup/
3
+ * Copyright (c) 2016 Dmitry Semenov; */
4
+ ;(function (factory) {
5
+ if (typeof define === 'function' && define.amd) {
6
+ // AMD. Register as an anonymous module.
7
+ define(['jquery'], factory);
8
+ } else if (typeof exports === 'object') {
9
+ // Node/CommonJS
10
+ factory(require('jquery'));
11
+ } else {
12
+ // Browser globals
13
+ factory(window.jQuery || window.Zepto);
14
+ }
15
+ }(function($) {
16
+
17
+ /*>>core*/
18
+ /**
19
+ *
20
+ * Magnific Popup Core JS file
21
+ *
22
+ */
23
+
24
+
25
+ /**
26
+ * Private static constants
27
+ */
28
+ var CLOSE_EVENT = 'Close',
29
+ BEFORE_CLOSE_EVENT = 'BeforeClose',
30
+ AFTER_CLOSE_EVENT = 'AfterClose',
31
+ BEFORE_APPEND_EVENT = 'BeforeAppend',
32
+ MARKUP_PARSE_EVENT = 'MarkupParse',
33
+ OPEN_EVENT = 'Open',
34
+ CHANGE_EVENT = 'Change',
35
+ NS = 'mfp',
36
+ EVENT_NS = '.' + NS,
37
+ READY_CLASS = 'mfp-ready',
38
+ REMOVING_CLASS = 'mfp-removing',
39
+ PREVENT_CLOSE_CLASS = 'mfp-prevent-close';
40
+
41
+
42
+ /**
43
+ * Private vars
44
+ */
45
+ /*jshint -W079 */
46
+ var mfp, // As we have only one instance of MagnificPopup object, we define it locally to not to use 'this'
47
+ MagnificPopup = function(){},
48
+ _isJQ = !!(window.jQuery),
49
+ _prevStatus,
50
+ _window = $(window),
51
+ _document,
52
+ _prevContentType,
53
+ _wrapClasses,
54
+ _currPopupType;
55
+
56
+
57
+ /**
58
+ * Private functions
59
+ */
60
+ var _mfpOn = function(name, f) {
61
+ mfp.ev.on(NS + name + EVENT_NS, f);
62
+ },
63
+ _getEl = function(className, appendTo, html, raw) {
64
+ var el = document.createElement('div');
65
+ el.className = 'mfp-'+className;
66
+ if(html) {
67
+ el.innerHTML = html;
68
+ }
69
+ if(!raw) {
70
+ el = $(el);
71
+ if(appendTo) {
72
+ el.appendTo(appendTo);
73
+ }
74
+ } else if(appendTo) {
75
+ appendTo.appendChild(el);
76
+ }
77
+ return el;
78
+ },
79
+ _mfpTrigger = function(e, data) {
80
+ mfp.ev.triggerHandler(NS + e, data);
81
+
82
+ if(mfp.st.callbacks) {
83
+ // converts "mfpEventName" to "eventName" callback and triggers it if it's present
84
+ e = e.charAt(0).toLowerCase() + e.slice(1);
85
+ if(mfp.st.callbacks[e]) {
86
+ mfp.st.callbacks[e].apply(mfp, $.isArray(data) ? data : [data]);
87
+ }
88
+ }
89
+ },
90
+ _getCloseBtn = function(type) {
91
+ if(type !== _currPopupType || !mfp.currTemplate.closeBtn) {
92
+ mfp.currTemplate.closeBtn = $( mfp.st.closeMarkup.replace('%title%', mfp.st.tClose ) );
93
+ _currPopupType = type;
94
+ }
95
+ return mfp.currTemplate.closeBtn;
96
+ },
97
+ // Initialize Magnific Popup only when called at least once
98
+ _checkInstance = function() {
99
+ if(!$.magnificPopup.instance) {
100
+ /*jshint -W020 */
101
+ mfp = new MagnificPopup();
102
+ mfp.init();
103
+ $.magnificPopup.instance = mfp;
104
+ }
105
+ },
106
+ // CSS transition detection, http://stackoverflow.com/questions/7264899/detect-css-transitions-using-javascript-and-without-modernizr
107
+ supportsTransitions = function() {
108
+ var s = document.createElement('p').style, // 's' for style. better to create an element if body yet to exist
109
+ v = ['ms','O','Moz','Webkit']; // 'v' for vendor
110
+
111
+ if( s['transition'] !== undefined ) {
112
+ return true;
113
+ }
114
+
115
+ while( v.length ) {
116
+ if( v.pop() + 'Transition' in s ) {
117
+ return true;
118
+ }
119
+ }
120
+
121
+ return false;
122
+ };
123
+
124
+
125
+
126
+ /**
127
+ * Public functions
128
+ */
129
+ MagnificPopup.prototype = {
130
+
131
+ constructor: MagnificPopup,
132
+
133
+ /**
134
+ * Initializes Magnific Popup plugin.
135
+ * This function is triggered only once when $.fn.magnificPopup or $.magnificPopup is executed
136
+ */
137
+ init: function() {
138
+ var appVersion = navigator.appVersion;
139
+ mfp.isLowIE = mfp.isIE8 = document.all && !document.addEventListener;
140
+ mfp.isAndroid = (/android/gi).test(appVersion);
141
+ mfp.isIOS = (/iphone|ipad|ipod/gi).test(appVersion);
142
+ mfp.supportsTransition = supportsTransitions();
143
+
144
+ // We disable fixed positioned lightbox on devices that don't handle it nicely.
145
+ // If you know a better way of detecting this - let me know.
146
+ mfp.probablyMobile = (mfp.isAndroid || mfp.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent) );
147
+ _document = $(document);
148
+
149
+ mfp.popupsCache = {};
150
+ },
151
+
152
+ /**
153
+ * Opens popup
154
+ * @param data [description]
155
+ */
156
+ open: function(data) {
157
+
158
+ var i;
159
+
160
+ if(data.isObj === false) {
161
+ // convert jQuery collection to array to avoid conflicts later
162
+ mfp.items = data.items.toArray();
163
+
164
+ mfp.index = 0;
165
+ var items = data.items,
166
+ item;
167
+ for(i = 0; i < items.length; i++) {
168
+ item = items[i];
169
+ if(item.parsed) {
170
+ item = item.el[0];
171
+ }
172
+ if(item === data.el[0]) {
173
+ mfp.index = i;
174
+ break;
175
+ }
176
+ }
177
+ } else {
178
+ mfp.items = $.isArray(data.items) ? data.items : [data.items];
179
+ mfp.index = data.index || 0;
180
+ }
181
+
182
+ // if popup is already opened - we just update the content
183
+ if(mfp.isOpen) {
184
+ mfp.updateItemHTML();
185
+ return;
186
+ }
187
+
188
+ mfp.types = [];
189
+ _wrapClasses = '';
190
+ if(data.mainEl && data.mainEl.length) {
191
+ mfp.ev = data.mainEl.eq(0);
192
+ } else {
193
+ mfp.ev = _document;
194
+ }
195
+
196
+ if(data.key) {
197
+ if(!mfp.popupsCache[data.key]) {
198
+ mfp.popupsCache[data.key] = {};
199
+ }
200
+ mfp.currTemplate = mfp.popupsCache[data.key];
201
+ } else {
202
+ mfp.currTemplate = {};
203
+ }
204
+
205
+
206
+
207
+ mfp.st = $.extend(true, {}, $.magnificPopup.defaults, data );
208
+ mfp.fixedContentPos = mfp.st.fixedContentPos === 'auto' ? !mfp.probablyMobile : mfp.st.fixedContentPos;
209
+
210
+ if(mfp.st.modal) {
211
+ mfp.st.closeOnContentClick = false;
212
+ mfp.st.closeOnBgClick = false;
213
+ mfp.st.showCloseBtn = false;
214
+ mfp.st.enableEscapeKey = false;
215
+ }
216
+
217
+
218
+ // Building markup
219
+ // main containers are created only once
220
+ if(!mfp.bgOverlay) {
221
+
222
+ // Dark overlay
223
+ mfp.bgOverlay = _getEl('bg').on('click'+EVENT_NS, function() {
224
+ mfp.close();
225
+ });
226
+
227
+ mfp.wrap = _getEl('wrap').attr('tabindex', -1).on('click'+EVENT_NS, function(e) {
228
+ if(mfp._checkIfClose(e.target)) {
229
+ mfp.close();
230
+ }
231
+ });
232
+
233
+ mfp.container = _getEl('container', mfp.wrap);
234
+ }
235
+
236
+ mfp.contentContainer = _getEl('content');
237
+ if(mfp.st.preloader) {
238
+ mfp.preloader = _getEl('preloader', mfp.container, mfp.st.tLoading);
239
+ }
240
+
241
+
242
+ // Initializing modules
243
+ var modules = $.magnificPopup.modules;
244
+ for(i = 0; i < modules.length; i++) {
245
+ var n = modules[i];
246
+ n = n.charAt(0).toUpperCase() + n.slice(1);
247
+ mfp['init'+n].call(mfp);
248
+ }
249
+ _mfpTrigger('BeforeOpen');
250
+
251
+
252
+ if(mfp.st.showCloseBtn) {
253
+ // Close button
254
+ if(!mfp.st.closeBtnInside) {
255
+ mfp.wrap.append( _getCloseBtn() );
256
+ } else {
257
+ _mfpOn(MARKUP_PARSE_EVENT, function(e, template, values, item) {
258
+ values.close_replaceWith = _getCloseBtn(item.type);
259
+ });
260
+ _wrapClasses += ' mfp-close-btn-in';
261
+ }
262
+ }
263
+
264
+ if(mfp.st.alignTop) {
265
+ _wrapClasses += ' mfp-align-top';
266
+ }
267
+
268
+
269
+
270
+ if(mfp.fixedContentPos) {
271
+ mfp.wrap.css({
272
+ overflow: mfp.st.overflowY,
273
+ overflowX: 'hidden',
274
+ overflowY: mfp.st.overflowY
275
+ });
276
+ } else {
277
+ mfp.wrap.css({
278
+ top: _window.scrollTop(),
279
+ position: 'absolute'
280
+ });
281
+ }
282
+ if( mfp.st.fixedBgPos === false || (mfp.st.fixedBgPos === 'auto' && !mfp.fixedContentPos) ) {
283
+ mfp.bgOverlay.css({
284
+ height: _document.height(),
285
+ position: 'absolute'
286
+ });
287
+ }
288
+
289
+
290
+
291
+ if(mfp.st.enableEscapeKey) {
292
+ // Close on ESC key
293
+ _document.on('keyup' + EVENT_NS, function(e) {
294
+ if(e.keyCode === 27) {
295
+ mfp.close();
296
+ }
297
+ });
298
+ }
299
+
300
+ _window.on('resize' + EVENT_NS, function() {
301
+ mfp.updateSize();
302
+ });
303
+
304
+
305
+ if(!mfp.st.closeOnContentClick) {
306
+ _wrapClasses += ' mfp-auto-cursor';
307
+ }
308
+
309
+ if(_wrapClasses)
310
+ mfp.wrap.addClass(_wrapClasses);
311
+
312
+
313
+ // this triggers recalculation of layout, so we get it once to not to trigger twice
314
+ var windowHeight = mfp.wH = _window.height();
315
+
316
+
317
+ var windowStyles = {};
318
+
319
+ if( mfp.fixedContentPos ) {
320
+ if(mfp._hasScrollBar(windowHeight)){
321
+ var s = mfp._getScrollbarSize();
322
+ if(s) {
323
+ windowStyles.marginRight = s;
324
+ }
325
+ }
326
+ }
327
+
328
+ if(mfp.fixedContentPos) {
329
+ if(!mfp.isIE7) {
330
+ windowStyles.overflow = 'hidden';
331
+ } else {
332
+ // ie7 double-scroll bug
333
+ $('body, html').css('overflow', 'hidden');
334
+ }
335
+ }
336
+
337
+
338
+
339
+ var classesToadd = mfp.st.mainClass;
340
+ if(mfp.isIE7) {
341
+ classesToadd += ' mfp-ie7';
342
+ }
343
+ if(classesToadd) {
344
+ mfp._addClassToMFP( classesToadd );
345
+ }
346
+
347
+ // add content
348
+ mfp.updateItemHTML();
349
+
350
+ _mfpTrigger('BuildControls');
351
+
352
+ // remove scrollbar, add margin e.t.c
353
+ $('html').css(windowStyles);
354
+
355
+ // add everything to DOM
356
+ mfp.bgOverlay.add(mfp.wrap).prependTo( mfp.st.prependTo || $(document.body) );
357
+
358
+ // Save last focused element
359
+ mfp._lastFocusedEl = document.activeElement;
360
+
361
+ // Wait for next cycle to allow CSS transition
362
+ setTimeout(function() {
363
+
364
+ if(mfp.content) {
365
+ mfp._addClassToMFP(READY_CLASS);
366
+ mfp._setFocus();
367
+ } else {
368
+ // if content is not defined (not loaded e.t.c) we add class only for BG
369
+ mfp.bgOverlay.addClass(READY_CLASS);
370
+ }
371
+
372
+ // Trap the focus in popup
373
+ _document.on('focusin' + EVENT_NS, mfp._onFocusIn);
374
+
375
+ }, 16);
376
+
377
+ mfp.isOpen = true;
378
+ mfp.updateSize(windowHeight);
379
+ _mfpTrigger(OPEN_EVENT);
380
+
381
+ return data;
382
+ },
383
+
384
+ /**
385
+ * Closes the popup
386
+ */
387
+ close: function() {
388
+ if(!mfp.isOpen) return;
389
+ _mfpTrigger(BEFORE_CLOSE_EVENT);
390
+
391
+ mfp.isOpen = false;
392
+ // for CSS3 animation
393
+ if(mfp.st.removalDelay && !mfp.isLowIE && mfp.supportsTransition ) {
394
+ mfp._addClassToMFP(REMOVING_CLASS);
395
+ setTimeout(function() {
396
+ mfp._close();
397
+ }, mfp.st.removalDelay);
398
+ } else {
399
+ mfp._close();
400
+ }
401
+ },
402
+
403
+ /**
404
+ * Helper for close() function
405
+ */
406
+ _close: function() {
407
+ _mfpTrigger(CLOSE_EVENT);
408
+
409
+ var classesToRemove = REMOVING_CLASS + ' ' + READY_CLASS + ' ';
410
+
411
+ mfp.bgOverlay.detach();
412
+ mfp.wrap.detach();
413
+ mfp.container.empty();
414
+
415
+ if(mfp.st.mainClass) {
416
+ classesToRemove += mfp.st.mainClass + ' ';
417
+ }
418
+
419
+ mfp._removeClassFromMFP(classesToRemove);
420
+
421
+ if(mfp.fixedContentPos) {
422
+ var windowStyles = {marginRight: ''};
423
+ if(mfp.isIE7) {
424
+ $('body, html').css('overflow', '');
425
+ } else {
426
+ windowStyles.overflow = '';
427
+ }
428
+ $('html').css(windowStyles);
429
+ }
430
+
431
+ _document.off('keyup' + EVENT_NS + ' focusin' + EVENT_NS);
432
+ mfp.ev.off(EVENT_NS);
433
+
434
+ // clean up DOM elements that aren't removed
435
+ mfp.wrap.attr('class', 'mfp-wrap').removeAttr('style');
436
+ mfp.bgOverlay.attr('class', 'mfp-bg');
437
+ mfp.container.attr('class', 'mfp-container');
438
+
439
+ // remove close button from target element
440
+ if(mfp.st.showCloseBtn &&
441
+ (!mfp.st.closeBtnInside || mfp.currTemplate[mfp.currItem.type] === true)) {
442
+ if(mfp.currTemplate.closeBtn)
443
+ mfp.currTemplate.closeBtn.detach();
444
+ }
445
+
446
+
447
+ if(mfp.st.autoFocusLast && mfp._lastFocusedEl) {
448
+ $(mfp._lastFocusedEl).focus(); // put tab focus back
449
+ }
450
+ mfp.currItem = null;
451
+ mfp.content = null;
452
+ mfp.currTemplate = null;
453
+ mfp.prevHeight = 0;
454
+
455
+ _mfpTrigger(AFTER_CLOSE_EVENT);
456
+ },
457
+
458
+ updateSize: function(winHeight) {
459
+
460
+ if(mfp.isIOS) {
461
+ // fixes iOS nav bars https://github.com/dimsemenov/Magnific-Popup/issues/2
462
+ var zoomLevel = document.documentElement.clientWidth / window.innerWidth;
463
+ var height = window.innerHeight * zoomLevel;
464
+ mfp.wrap.css('height', height);
465
+ mfp.wH = height;
466
+ } else {
467
+ mfp.wH = winHeight || _window.height();
468
+ }
469
+ // Fixes #84: popup incorrectly positioned with position:relative on body
470
+ if(!mfp.fixedContentPos) {
471
+ mfp.wrap.css('height', mfp.wH);
472
+ }
473
+
474
+ _mfpTrigger('Resize');
475
+
476
+ },
477
+
478
+ /**
479
+ * Set content of popup based on current index
480
+ */
481
+ updateItemHTML: function() {
482
+ var item = mfp.items[mfp.index];
483
+
484
+ // Detach and perform modifications
485
+ mfp.contentContainer.detach();
486
+
487
+ if(mfp.content)
488
+ mfp.content.detach();
489
+
490
+ if(!item.parsed) {
491
+ item = mfp.parseEl( mfp.index );
492
+ }
493
+
494
+ var type = item.type;
495
+
496
+ _mfpTrigger('BeforeChange', [mfp.currItem ? mfp.currItem.type : '', type]);
497
+ // BeforeChange event works like so:
498
+ // _mfpOn('BeforeChange', function(e, prevType, newType) { });
499
+
500
+ mfp.currItem = item;
501
+
502
+ if(!mfp.currTemplate[type]) {
503
+ var markup = mfp.st[type] ? mfp.st[type].markup : false;
504
+
505
+ // allows to modify markup
506
+ _mfpTrigger('FirstMarkupParse', markup);
507
+
508
+ if(markup) {
509
+ mfp.currTemplate[type] = $(markup);
510
+ } else {
511
+ // if there is no markup found we just define that template is parsed
512
+ mfp.currTemplate[type] = true;
513
+ }
514
+ }
515
+
516
+ if(_prevContentType && _prevContentType !== item.type) {
517
+ mfp.container.removeClass('mfp-'+_prevContentType+'-holder');
518
+ }
519
+
520
+ var newContent = mfp['get' + type.charAt(0).toUpperCase() + type.slice(1)](item, mfp.currTemplate[type]);
521
+ mfp.appendContent(newContent, type);
522
+
523
+ item.preloaded = true;
524
+
525
+ _mfpTrigger(CHANGE_EVENT, item);
526
+ _prevContentType = item.type;
527
+
528
+ // Append container back after its content changed
529
+ mfp.container.prepend(mfp.contentContainer);
530
+
531
+ _mfpTrigger('AfterChange');
532
+ },
533
+
534
+
535
+ /**
536
+ * Set HTML content of popup
537
+ */
538
+ appendContent: function(newContent, type) {
539
+ mfp.content = newContent;
540
+
541
+ if(newContent) {
542
+ if(mfp.st.showCloseBtn && mfp.st.closeBtnInside &&
543
+ mfp.currTemplate[type] === true) {
544
+ // if there is no markup, we just append close button element inside
545
+ if(!mfp.content.find('.mfp-close').length) {
546
+ mfp.content.append(_getCloseBtn());
547
+ }
548
+ } else {
549
+ mfp.content = newContent;
550
+ }
551
+ } else {
552
+ mfp.content = '';
553
+ }
554
+
555
+ _mfpTrigger(BEFORE_APPEND_EVENT);
556
+ mfp.container.addClass('mfp-'+type+'-holder');
557
+
558
+ mfp.contentContainer.append(mfp.content);
559
+ },
560
+
561
+
562
+ /**
563
+ * Creates Magnific Popup data object based on given data
564
+ * @param {int} index Index of item to parse
565
+ */
566
+ parseEl: function(index) {
567
+ var item = mfp.items[index],
568
+ type;
569
+
570
+ if(item.tagName) {
571
+ item = { el: $(item) };
572
+ } else {
573
+ type = item.type;
574
+ item = { data: item, src: item.src };
575
+ }
576
+
577
+ if(item.el) {
578
+ var types = mfp.types;
579
+
580
+ // check for 'mfp-TYPE' class
581
+ for(var i = 0; i < types.length; i++) {
582
+ if( item.el.hasClass('mfp-'+types[i]) ) {
583
+ type = types[i];
584
+ break;
585
+ }
586
+ }
587
+
588
+ item.src = item.el.attr('data-mfp-src');
589
+ if(!item.src) {
590
+ item.src = item.el.attr('href');
591
+ }
592
+ }
593
+
594
+ item.type = type || mfp.st.type || 'inline';
595
+ item.index = index;
596
+ item.parsed = true;
597
+ mfp.items[index] = item;
598
+ _mfpTrigger('ElementParse', item);
599
+
600
+ return mfp.items[index];
601
+ },
602
+
603
+
604
+ /**
605
+ * Initializes single popup or a group of popups
606
+ */
607
+ addGroup: function(el, options) {
608
+ var eHandler = function(e) {
609
+ e.mfpEl = this;
610
+ mfp._openClick(e, el, options);
611
+ };
612
+
613
+ if(!options) {
614
+ options = {};
615
+ }
616
+
617
+ var eName = 'click.magnificPopup';
618
+ options.mainEl = el;
619
+
620
+ if(options.items) {
621
+ options.isObj = true;
622
+ el.off(eName).on(eName, eHandler);
623
+ } else {
624
+ options.isObj = false;
625
+ if(options.delegate) {
626
+ el.off(eName).on(eName, options.delegate , eHandler);
627
+ } else {
628
+ options.items = el;
629
+ el.off(eName).on(eName, eHandler);
630
+ }
631
+ }
632
+ },
633
+ _openClick: function(e, el, options) {
634
+ var midClick = options.midClick !== undefined ? options.midClick : $.magnificPopup.defaults.midClick;
635
+
636
+
637
+ if(!midClick && ( e.which === 2 || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey ) ) {
638
+ return;
639
+ }
640
+
641
+ var disableOn = options.disableOn !== undefined ? options.disableOn : $.magnificPopup.defaults.disableOn;
642
+
643
+ if(disableOn) {
644
+ if($.isFunction(disableOn)) {
645
+ if( !disableOn.call(mfp) ) {
646
+ return true;
647
+ }
648
+ } else { // else it's number
649
+ if( _window.width() < disableOn ) {
650
+ return true;
651
+ }
652
+ }
653
+ }
654
+
655
+ if(e.type) {
656
+ e.preventDefault();
657
+
658
+ // This will prevent popup from closing if element is inside and popup is already opened
659
+ if(mfp.isOpen) {
660
+ e.stopPropagation();
661
+ }
662
+ }
663
+
664
+ options.el = $(e.mfpEl);
665
+ if(options.delegate) {
666
+ options.items = el.find(options.delegate);
667
+ }
668
+ mfp.open(options);
669
+ },
670
+
671
+
672
+ /**
673
+ * Updates text on preloader
674
+ */
675
+ updateStatus: function(status, text) {
676
+
677
+ if(mfp.preloader) {
678
+ if(_prevStatus !== status) {
679
+ mfp.container.removeClass('mfp-s-'+_prevStatus);
680
+ }
681
+
682
+ if(!text && status === 'loading') {
683
+ text = mfp.st.tLoading;
684
+ }
685
+
686
+ var data = {
687
+ status: status,
688
+ text: text
689
+ };
690
+ // allows to modify status
691
+ _mfpTrigger('UpdateStatus', data);
692
+
693
+ status = data.status;
694
+ text = data.text;
695
+
696
+ mfp.preloader.html(text);
697
+
698
+ mfp.preloader.find('a').on('click', function(e) {
699
+ e.stopImmediatePropagation();
700
+ });
701
+
702
+ mfp.container.addClass('mfp-s-'+status);
703
+ _prevStatus = status;
704
+ }
705
+ },
706
+
707
+
708
+ /*
709
+ "Private" helpers that aren't private at all
710
+ */
711
+ // Check to close popup or not
712
+ // "target" is an element that was clicked
713
+ _checkIfClose: function(target) {
714
+
715
+ if($(target).hasClass(PREVENT_CLOSE_CLASS)) {
716
+ return;
717
+ }
718
+
719
+ var closeOnContent = mfp.st.closeOnContentClick;
720
+ var closeOnBg = mfp.st.closeOnBgClick;
721
+
722
+ if(closeOnContent && closeOnBg) {
723
+ return true;
724
+ } else {
725
+
726
+ // We close the popup if click is on close button or on preloader. Or if there is no content.
727
+ if(!mfp.content || $(target).hasClass('mfp-close') || (mfp.preloader && target === mfp.preloader[0]) ) {
728
+ return true;
729
+ }
730
+
731
+ // if click is outside the content
732
+ if( (target !== mfp.content[0] && !$.contains(mfp.content[0], target)) ) {
733
+ if(closeOnBg) {
734
+ // last check, if the clicked element is in DOM, (in case it's removed onclick)
735
+ if( $.contains(document, target) ) {
736
+ return true;
737
+ }
738
+ }
739
+ } else if(closeOnContent) {
740
+ return true;
741
+ }
742
+
743
+ }
744
+ return false;
745
+ },
746
+ _addClassToMFP: function(cName) {
747
+ mfp.bgOverlay.addClass(cName);
748
+ mfp.wrap.addClass(cName);
749
+ },
750
+ _removeClassFromMFP: function(cName) {
751
+ this.bgOverlay.removeClass(cName);
752
+ mfp.wrap.removeClass(cName);
753
+ },
754
+ _hasScrollBar: function(winHeight) {
755
+ return ( (mfp.isIE7 ? _document.height() : document.body.scrollHeight) > (winHeight || _window.height()) );
756
+ },
757
+ _setFocus: function() {
758
+ (mfp.st.focus ? mfp.content.find(mfp.st.focus).eq(0) : mfp.wrap).focus();
759
+ },
760
+ _onFocusIn: function(e) {
761
+ if( e.target !== mfp.wrap[0] && !$.contains(mfp.wrap[0], e.target) ) {
762
+ mfp._setFocus();
763
+ return false;
764
+ }
765
+ },
766
+ _parseMarkup: function(template, values, item) {
767
+ var arr;
768
+ if(item.data) {
769
+ values = $.extend(item.data, values);
770
+ }
771
+ _mfpTrigger(MARKUP_PARSE_EVENT, [template, values, item] );
772
+
773
+ $.each(values, function(key, value) {
774
+ if(value === undefined || value === false) {
775
+ return true;
776
+ }
777
+ arr = key.split('_');
778
+ if(arr.length > 1) {
779
+ var el = template.find(EVENT_NS + '-'+arr[0]);
780
+
781
+ if(el.length > 0) {
782
+ var attr = arr[1];
783
+ if(attr === 'replaceWith') {
784
+ if(el[0] !== value[0]) {
785
+ el.replaceWith(value);
786
+ }
787
+ } else if(attr === 'img') {
788
+ if(el.is('img')) {
789
+ el.attr('src', value);
790
+ } else {
791
+ el.replaceWith( $('<img>').attr('src', value).attr('class', el.attr('class')) );
792
+ }
793
+ } else {
794
+ el.attr(arr[1], value);
795
+ }
796
+ }
797
+
798
+ } else {
799
+ template.find(EVENT_NS + '-'+key).html(value);
800
+ }
801
+ });
802
+ },
803
+
804
+ _getScrollbarSize: function() {
805
+ // thx David
806
+ if(mfp.scrollbarSize === undefined) {
807
+ var scrollDiv = document.createElement("div");
808
+ scrollDiv.style.cssText = 'width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;';
809
+ document.body.appendChild(scrollDiv);
810
+ mfp.scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth;
811
+ document.body.removeChild(scrollDiv);
812
+ }
813
+ return mfp.scrollbarSize;
814
+ }
815
+
816
+ }; /* MagnificPopup core prototype end */
817
+
818
+
819
+
820
+
821
+ /**
822
+ * Public static functions
823
+ */
824
+ $.magnificPopup = {
825
+ instance: null,
826
+ proto: MagnificPopup.prototype,
827
+ modules: [],
828
+
829
+ open: function(options, index) {
830
+ _checkInstance();
831
+
832
+ if(!options) {
833
+ options = {};
834
+ } else {
835
+ options = $.extend(true, {}, options);
836
+ }
837
+
838
+ options.isObj = true;
839
+ options.index = index || 0;
840
+ return this.instance.open(options);
841
+ },
842
+
843
+ close: function() {
844
+ return $.magnificPopup.instance && $.magnificPopup.instance.close();
845
+ },
846
+
847
+ registerModule: function(name, module) {
848
+ if(module.options) {
849
+ $.magnificPopup.defaults[name] = module.options;
850
+ }
851
+ $.extend(this.proto, module.proto);
852
+ this.modules.push(name);
853
+ },
854
+
855
+ defaults: {
856
+
857
+ // Info about options is in docs:
858
+ // http://dimsemenov.com/plugins/magnific-popup/documentation.html#options
859
+
860
+ disableOn: 0,
861
+
862
+ key: null,
863
+
864
+ midClick: false,
865
+
866
+ mainClass: '',
867
+
868
+ preloader: true,
869
+
870
+ focus: '', // CSS selector of input to focus after popup is opened
871
+
872
+ closeOnContentClick: false,
873
+
874
+ closeOnBgClick: true,
875
+
876
+ closeBtnInside: true,
877
+
878
+ showCloseBtn: true,
879
+
880
+ enableEscapeKey: true,
881
+
882
+ modal: false,
883
+
884
+ alignTop: false,
885
+
886
+ removalDelay: 0,
887
+
888
+ prependTo: null,
889
+
890
+ fixedContentPos: 'auto',
891
+
892
+ fixedBgPos: 'auto',
893
+
894
+ overflowY: 'auto',
895
+
896
+ closeMarkup: '<button title="%title%" type="button" class="mfp-close">&#215;</button>',
897
+
898
+ tClose: 'Close (Esc)',
899
+
900
+ tLoading: 'Loading...',
901
+
902
+ autoFocusLast: true
903
+
904
+ }
905
+ };
906
+
907
+
908
+
909
+ $.fn.magnificPopup = function(options) {
910
+ _checkInstance();
911
+
912
+ var jqEl = $(this);
913
+
914
+ // We call some API method of first param is a string
915
+ if (typeof options === "string" ) {
916
+
917
+ if(options === 'open') {
918
+ var items,
919
+ itemOpts = _isJQ ? jqEl.data('magnificPopup') : jqEl[0].magnificPopup,
920
+ index = parseInt(arguments[1], 10) || 0;
921
+
922
+ if(itemOpts.items) {
923
+ items = itemOpts.items[index];
924
+ } else {
925
+ items = jqEl;
926
+ if(itemOpts.delegate) {
927
+ items = items.find(itemOpts.delegate);
928
+ }
929
+ items = items.eq( index );
930
+ }
931
+ mfp._openClick({mfpEl:items}, jqEl, itemOpts);
932
+ } else {
933
+ if(mfp.isOpen)
934
+ mfp[options].apply(mfp, Array.prototype.slice.call(arguments, 1));
935
+ }
936
+
937
+ } else {
938
+ // clone options obj
939
+ options = $.extend(true, {}, options);
940
+
941
+ /*
942
+ * As Zepto doesn't support .data() method for objects
943
+ * and it works only in normal browsers
944
+ * we assign "options" object directly to the DOM element. FTW!
945
+ */
946
+ if(_isJQ) {
947
+ jqEl.data('magnificPopup', options);
948
+ } else {
949
+ jqEl[0].magnificPopup = options;
950
+ }
951
+
952
+ mfp.addGroup(jqEl, options);
953
+
954
+ }
955
+ return jqEl;
956
+ };
957
+
958
+ /*>>core*/
959
+
960
+ /*>>inline*/
961
+
962
+ var INLINE_NS = 'inline',
963
+ _hiddenClass,
964
+ _inlinePlaceholder,
965
+ _lastInlineElement,
966
+ _putInlineElementsBack = function() {
967
+ if(_lastInlineElement) {
968
+ _inlinePlaceholder.after( _lastInlineElement.addClass(_hiddenClass) ).detach();
969
+ _lastInlineElement = null;
970
+ }
971
+ };
972
+
973
+ $.magnificPopup.registerModule(INLINE_NS, {
974
+ options: {
975
+ hiddenClass: 'hide', // will be appended with `mfp-` prefix
976
+ markup: '',
977
+ tNotFound: 'Content not found'
978
+ },
979
+ proto: {
980
+
981
+ initInline: function() {
982
+ mfp.types.push(INLINE_NS);
983
+
984
+ _mfpOn(CLOSE_EVENT+'.'+INLINE_NS, function() {
985
+ _putInlineElementsBack();
986
+ });
987
+ },
988
+
989
+ getInline: function(item, template) {
990
+
991
+ _putInlineElementsBack();
992
+
993
+ if(item.src) {
994
+ var inlineSt = mfp.st.inline,
995
+ el = $(item.src);
996
+
997
+ if(el.length) {
998
+
999
+ // If target element has parent - we replace it with placeholder and put it back after popup is closed
1000
+ var parent = el[0].parentNode;
1001
+ if(parent && parent.tagName) {
1002
+ if(!_inlinePlaceholder) {
1003
+ _hiddenClass = inlineSt.hiddenClass;
1004
+ _inlinePlaceholder = _getEl(_hiddenClass);
1005
+ _hiddenClass = 'mfp-'+_hiddenClass;
1006
+ }
1007
+ // replace target inline element with placeholder
1008
+ _lastInlineElement = el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass);
1009
+ }
1010
+
1011
+ mfp.updateStatus('ready');
1012
+ } else {
1013
+ mfp.updateStatus('error', inlineSt.tNotFound);
1014
+ el = $('<div>');
1015
+ }
1016
+
1017
+ item.inlineElement = el;
1018
+ return el;
1019
+ }
1020
+
1021
+ mfp.updateStatus('ready');
1022
+ mfp._parseMarkup(template, {}, item);
1023
+ return template;
1024
+ }
1025
+ }
1026
+ });
1027
+
1028
+ /*>>inline*/
1029
+
1030
+ /*>>ajax*/
1031
+ var AJAX_NS = 'ajax',
1032
+ _ajaxCur,
1033
+ _removeAjaxCursor = function() {
1034
+ if(_ajaxCur) {
1035
+ $(document.body).removeClass(_ajaxCur);
1036
+ }
1037
+ },
1038
+ _destroyAjaxRequest = function() {
1039
+ _removeAjaxCursor();
1040
+ if(mfp.req) {
1041
+ mfp.req.abort();
1042
+ }
1043
+ };
1044
+
1045
+ $.magnificPopup.registerModule(AJAX_NS, {
1046
+
1047
+ options: {
1048
+ settings: null,
1049
+ cursor: 'mfp-ajax-cur',
1050
+ tError: '<a href="%url%">The content</a> could not be loaded.'
1051
+ },
1052
+
1053
+ proto: {
1054
+ initAjax: function() {
1055
+ mfp.types.push(AJAX_NS);
1056
+ _ajaxCur = mfp.st.ajax.cursor;
1057
+
1058
+ _mfpOn(CLOSE_EVENT+'.'+AJAX_NS, _destroyAjaxRequest);
1059
+ _mfpOn('BeforeChange.' + AJAX_NS, _destroyAjaxRequest);
1060
+ },
1061
+ getAjax: function(item) {
1062
+
1063
+ if(_ajaxCur) {
1064
+ $(document.body).addClass(_ajaxCur);
1065
+ }
1066
+
1067
+ mfp.updateStatus('loading');
1068
+
1069
+ var opts = $.extend({
1070
+ url: item.src,
1071
+ success: function(data, textStatus, jqXHR) {
1072
+ var temp = {
1073
+ data:data,
1074
+ xhr:jqXHR
1075
+ };
1076
+
1077
+ _mfpTrigger('ParseAjax', temp);
1078
+
1079
+ mfp.appendContent( $(temp.data), AJAX_NS );
1080
+
1081
+ item.finished = true;
1082
+
1083
+ _removeAjaxCursor();
1084
+
1085
+ mfp._setFocus();
1086
+
1087
+ setTimeout(function() {
1088
+ mfp.wrap.addClass(READY_CLASS);
1089
+ }, 16);
1090
+
1091
+ mfp.updateStatus('ready');
1092
+
1093
+ _mfpTrigger('AjaxContentAdded');
1094
+ },
1095
+ error: function() {
1096
+ _removeAjaxCursor();
1097
+ item.finished = item.loadError = true;
1098
+ mfp.updateStatus('error', mfp.st.ajax.tError.replace('%url%', item.src));
1099
+ }
1100
+ }, mfp.st.ajax.settings);
1101
+
1102
+ mfp.req = $.ajax(opts);
1103
+
1104
+ return '';
1105
+ }
1106
+ }
1107
+ });
1108
+
1109
+ /*>>ajax*/
1110
+
1111
+ /*>>image*/
1112
+ var _imgInterval,
1113
+ _getTitle = function(item) {
1114
+ if(item.data && item.data.title !== undefined)
1115
+ return item.data.title;
1116
+
1117
+ var src = mfp.st.image.titleSrc;
1118
+
1119
+ if(src) {
1120
+ if($.isFunction(src)) {
1121
+ return src.call(mfp, item);
1122
+ } else if(item.el) {
1123
+ return item.el.attr(src) || '';
1124
+ }
1125
+ }
1126
+ return '';
1127
+ };
1128
+
1129
+ $.magnificPopup.registerModule('image', {
1130
+
1131
+ options: {
1132
+ markup: '<div class="mfp-figure">'+
1133
+ '<div class="mfp-close"></div>'+
1134
+ '<figure>'+
1135
+ '<div class="mfp-img"></div>'+
1136
+ '<figcaption>'+
1137
+ '<div class="mfp-bottom-bar">'+
1138
+ '<div class="mfp-title"></div>'+
1139
+ '<div class="mfp-counter"></div>'+
1140
+ '</div>'+
1141
+ '</figcaption>'+
1142
+ '</figure>'+
1143
+ '</div>',
1144
+ cursor: 'mfp-zoom-out-cur',
1145
+ titleSrc: 'title',
1146
+ verticalFit: true,
1147
+ tError: '<a href="%url%">The image</a> could not be loaded.'
1148
+ },
1149
+
1150
+ proto: {
1151
+ initImage: function() {
1152
+ var imgSt = mfp.st.image,
1153
+ ns = '.image';
1154
+
1155
+ mfp.types.push('image');
1156
+
1157
+ _mfpOn(OPEN_EVENT+ns, function() {
1158
+ if(mfp.currItem.type === 'image' && imgSt.cursor) {
1159
+ $(document.body).addClass(imgSt.cursor);
1160
+ }
1161
+ });
1162
+
1163
+ _mfpOn(CLOSE_EVENT+ns, function() {
1164
+ if(imgSt.cursor) {
1165
+ $(document.body).removeClass(imgSt.cursor);
1166
+ }
1167
+ _window.off('resize' + EVENT_NS);
1168
+ });
1169
+
1170
+ _mfpOn('Resize'+ns, mfp.resizeImage);
1171
+ if(mfp.isLowIE) {
1172
+ _mfpOn('AfterChange', mfp.resizeImage);
1173
+ }
1174
+ },
1175
+ resizeImage: function() {
1176
+ var item = mfp.currItem;
1177
+ if(!item || !item.img) return;
1178
+
1179
+ if(mfp.st.image.verticalFit) {
1180
+ var decr = 0;
1181
+ // fix box-sizing in ie7/8
1182
+ if(mfp.isLowIE) {
1183
+ decr = parseInt(item.img.css('padding-top'), 10) + parseInt(item.img.css('padding-bottom'),10);
1184
+ }
1185
+ item.img.css('max-height', mfp.wH-decr);
1186
+ }
1187
+ },
1188
+ _onImageHasSize: function(item) {
1189
+ if(item.img) {
1190
+
1191
+ item.hasSize = true;
1192
+
1193
+ if(_imgInterval) {
1194
+ clearInterval(_imgInterval);
1195
+ }
1196
+
1197
+ item.isCheckingImgSize = false;
1198
+
1199
+ _mfpTrigger('ImageHasSize', item);
1200
+
1201
+ if(item.imgHidden) {
1202
+ if(mfp.content)
1203
+ mfp.content.removeClass('mfp-loading');
1204
+
1205
+ item.imgHidden = false;
1206
+ }
1207
+
1208
+ }
1209
+ },
1210
+
1211
+ /**
1212
+ * Function that loops until the image has size to display elements that rely on it asap
1213
+ */
1214
+ findImageSize: function(item) {
1215
+
1216
+ var counter = 0,
1217
+ img = item.img[0],
1218
+ mfpSetInterval = function(delay) {
1219
+
1220
+ if(_imgInterval) {
1221
+ clearInterval(_imgInterval);
1222
+ }
1223
+ // decelerating interval that checks for size of an image
1224
+ _imgInterval = setInterval(function() {
1225
+ if(img.naturalWidth > 0) {
1226
+ mfp._onImageHasSize(item);
1227
+ return;
1228
+ }
1229
+
1230
+ if(counter > 200) {
1231
+ clearInterval(_imgInterval);
1232
+ }
1233
+
1234
+ counter++;
1235
+ if(counter === 3) {
1236
+ mfpSetInterval(10);
1237
+ } else if(counter === 40) {
1238
+ mfpSetInterval(50);
1239
+ } else if(counter === 100) {
1240
+ mfpSetInterval(500);
1241
+ }
1242
+ }, delay);
1243
+ };
1244
+
1245
+ mfpSetInterval(1);
1246
+ },
1247
+
1248
+ getImage: function(item, template) {
1249
+
1250
+ var guard = 0,
1251
+
1252
+ // image load complete handler
1253
+ onLoadComplete = function() {
1254
+ if(item) {
1255
+ if (item.img[0].complete) {
1256
+ item.img.off('.mfploader');
1257
+
1258
+ if(item === mfp.currItem){
1259
+ mfp._onImageHasSize(item);
1260
+
1261
+ mfp.updateStatus('ready');
1262
+ }
1263
+
1264
+ item.hasSize = true;
1265
+ item.loaded = true;
1266
+
1267
+ _mfpTrigger('ImageLoadComplete');
1268
+
1269
+ }
1270
+ else {
1271
+ // if image complete check fails 200 times (20 sec), we assume that there was an error.
1272
+ guard++;
1273
+ if(guard < 200) {
1274
+ setTimeout(onLoadComplete,100);
1275
+ } else {
1276
+ onLoadError();
1277
+ }
1278
+ }
1279
+ }
1280
+ },
1281
+
1282
+ // image error handler
1283
+ onLoadError = function() {
1284
+ if(item) {
1285
+ item.img.off('.mfploader');
1286
+ if(item === mfp.currItem){
1287
+ mfp._onImageHasSize(item);
1288
+ mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) );
1289
+ }
1290
+
1291
+ item.hasSize = true;
1292
+ item.loaded = true;
1293
+ item.loadError = true;
1294
+ }
1295
+ },
1296
+ imgSt = mfp.st.image;
1297
+
1298
+
1299
+ var el = template.find('.mfp-img');
1300
+ if(el.length) {
1301
+ var img = document.createElement('img');
1302
+ img.className = 'mfp-img';
1303
+ if(item.el && item.el.find('img').length) {
1304
+ img.alt = item.el.find('img').attr('alt');
1305
+ }
1306
+ item.img = $(img).on('load.mfploader', onLoadComplete).on('error.mfploader', onLoadError);
1307
+ img.src = item.src;
1308
+
1309
+ // without clone() "error" event is not firing when IMG is replaced by new IMG
1310
+ // TODO: find a way to avoid such cloning
1311
+ if(el.is('img')) {
1312
+ item.img = item.img.clone();
1313
+ }
1314
+
1315
+ img = item.img[0];
1316
+ if(img.naturalWidth > 0) {
1317
+ item.hasSize = true;
1318
+ } else if(!img.width) {
1319
+ item.hasSize = false;
1320
+ }
1321
+ }
1322
+
1323
+ mfp._parseMarkup(template, {
1324
+ title: _getTitle(item),
1325
+ img_replaceWith: item.img
1326
+ }, item);
1327
+
1328
+ mfp.resizeImage();
1329
+
1330
+ if(item.hasSize) {
1331
+ if(_imgInterval) clearInterval(_imgInterval);
1332
+
1333
+ if(item.loadError) {
1334
+ template.addClass('mfp-loading');
1335
+ mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) );
1336
+ } else {
1337
+ template.removeClass('mfp-loading');
1338
+ mfp.updateStatus('ready');
1339
+ }
1340
+ return template;
1341
+ }
1342
+
1343
+ mfp.updateStatus('loading');
1344
+ item.loading = true;
1345
+
1346
+ if(!item.hasSize) {
1347
+ item.imgHidden = true;
1348
+ template.addClass('mfp-loading');
1349
+ mfp.findImageSize(item);
1350
+ }
1351
+
1352
+ return template;
1353
+ }
1354
+ }
1355
+ });
1356
+
1357
+ /*>>image*/
1358
+
1359
+ /*>>zoom*/
1360
+ var hasMozTransform,
1361
+ getHasMozTransform = function() {
1362
+ if(hasMozTransform === undefined) {
1363
+ hasMozTransform = document.createElement('p').style.MozTransform !== undefined;
1364
+ }
1365
+ return hasMozTransform;
1366
+ };
1367
+
1368
+ $.magnificPopup.registerModule('zoom', {
1369
+
1370
+ options: {
1371
+ enabled: false,
1372
+ easing: 'ease-in-out',
1373
+ duration: 300,
1374
+ opener: function(element) {
1375
+ return element.is('img') ? element : element.find('img');
1376
+ }
1377
+ },
1378
+
1379
+ proto: {
1380
+
1381
+ initZoom: function() {
1382
+ var zoomSt = mfp.st.zoom,
1383
+ ns = '.zoom',
1384
+ image;
1385
+
1386
+ if(!zoomSt.enabled || !mfp.supportsTransition) {
1387
+ return;
1388
+ }
1389
+
1390
+ var duration = zoomSt.duration,
1391
+ getElToAnimate = function(image) {
1392
+ var newImg = image.clone().removeAttr('style').removeAttr('class').addClass('mfp-animated-image'),
1393
+ transition = 'all '+(zoomSt.duration/1000)+'s ' + zoomSt.easing,
1394
+ cssObj = {
1395
+ position: 'fixed',
1396
+ zIndex: 9999,
1397
+ left: 0,
1398
+ top: 0,
1399
+ '-webkit-backface-visibility': 'hidden'
1400
+ },
1401
+ t = 'transition';
1402
+
1403
+ cssObj['-webkit-'+t] = cssObj['-moz-'+t] = cssObj['-o-'+t] = cssObj[t] = transition;
1404
+
1405
+ newImg.css(cssObj);
1406
+ return newImg;
1407
+ },
1408
+ showMainContent = function() {
1409
+ mfp.content.css('visibility', 'visible');
1410
+ },
1411
+ openTimeout,
1412
+ animatedImg;
1413
+
1414
+ _mfpOn('BuildControls'+ns, function() {
1415
+ if(mfp._allowZoom()) {
1416
+
1417
+ clearTimeout(openTimeout);
1418
+ mfp.content.css('visibility', 'hidden');
1419
+
1420
+ // Basically, all code below does is clones existing image, puts in on top of the current one and animated it
1421
+
1422
+ image = mfp._getItemToZoom();
1423
+
1424
+ if(!image) {
1425
+ showMainContent();
1426
+ return;
1427
+ }
1428
+
1429
+ animatedImg = getElToAnimate(image);
1430
+
1431
+ animatedImg.css( mfp._getOffset() );
1432
+
1433
+ mfp.wrap.append(animatedImg);
1434
+
1435
+ openTimeout = setTimeout(function() {
1436
+ animatedImg.css( mfp._getOffset( true ) );
1437
+ openTimeout = setTimeout(function() {
1438
+
1439
+ showMainContent();
1440
+
1441
+ setTimeout(function() {
1442
+ animatedImg.remove();
1443
+ image = animatedImg = null;
1444
+ _mfpTrigger('ZoomAnimationEnded');
1445
+ }, 16); // avoid blink when switching images
1446
+
1447
+ }, duration); // this timeout equals animation duration
1448
+
1449
+ }, 16); // by adding this timeout we avoid short glitch at the beginning of animation
1450
+
1451
+
1452
+ // Lots of timeouts...
1453
+ }
1454
+ });
1455
+ _mfpOn(BEFORE_CLOSE_EVENT+ns, function() {
1456
+ if(mfp._allowZoom()) {
1457
+
1458
+ clearTimeout(openTimeout);
1459
+
1460
+ mfp.st.removalDelay = duration;
1461
+
1462
+ if(!image) {
1463
+ image = mfp._getItemToZoom();
1464
+ if(!image) {
1465
+ return;
1466
+ }
1467
+ animatedImg = getElToAnimate(image);
1468
+ }
1469
+
1470
+ animatedImg.css( mfp._getOffset(true) );
1471
+ mfp.wrap.append(animatedImg);
1472
+ mfp.content.css('visibility', 'hidden');
1473
+
1474
+ setTimeout(function() {
1475
+ animatedImg.css( mfp._getOffset() );
1476
+ }, 16);
1477
+ }
1478
+
1479
+ });
1480
+
1481
+ _mfpOn(CLOSE_EVENT+ns, function() {
1482
+ if(mfp._allowZoom()) {
1483
+ showMainContent();
1484
+ if(animatedImg) {
1485
+ animatedImg.remove();
1486
+ }
1487
+ image = null;
1488
+ }
1489
+ });
1490
+ },
1491
+
1492
+ _allowZoom: function() {
1493
+ return mfp.currItem.type === 'image';
1494
+ },
1495
+
1496
+ _getItemToZoom: function() {
1497
+ if(mfp.currItem.hasSize) {
1498
+ return mfp.currItem.img;
1499
+ } else {
1500
+ return false;
1501
+ }
1502
+ },
1503
+
1504
+ // Get element postion relative to viewport
1505
+ _getOffset: function(isLarge) {
1506
+ var el;
1507
+ if(isLarge) {
1508
+ el = mfp.currItem.img;
1509
+ } else {
1510
+ el = mfp.st.zoom.opener(mfp.currItem.el || mfp.currItem);
1511
+ }
1512
+
1513
+ var offset = el.offset();
1514
+ var paddingTop = parseInt(el.css('padding-top'),10);
1515
+ var paddingBottom = parseInt(el.css('padding-bottom'),10);
1516
+ offset.top -= ( $(window).scrollTop() - paddingTop );
1517
+
1518
+
1519
+ /*
1520
+
1521
+ Animating left + top + width/height looks glitchy in Firefox, but perfect in Chrome. And vice-versa.
1522
+
1523
+ */
1524
+ var obj = {
1525
+ width: el.width(),
1526
+ // fix Zepto height+padding issue
1527
+ height: (_isJQ ? el.innerHeight() : el[0].offsetHeight) - paddingBottom - paddingTop
1528
+ };
1529
+
1530
+ // I hate to do this, but there is no another option
1531
+ if( getHasMozTransform() ) {
1532
+ obj['-moz-transform'] = obj['transform'] = 'translate(' + offset.left + 'px,' + offset.top + 'px)';
1533
+ } else {
1534
+ obj.left = offset.left;
1535
+ obj.top = offset.top;
1536
+ }
1537
+ return obj;
1538
+ }
1539
+
1540
+ }
1541
+ });
1542
+
1543
+
1544
+
1545
+ /*>>zoom*/
1546
+
1547
+ /*>>iframe*/
1548
+
1549
+ var IFRAME_NS = 'iframe',
1550
+ _emptyPage = '//about:blank',
1551
+
1552
+ _fixIframeBugs = function(isShowing) {
1553
+ if(mfp.currTemplate[IFRAME_NS]) {
1554
+ var el = mfp.currTemplate[IFRAME_NS].find('iframe');
1555
+ if(el.length) {
1556
+ // reset src after the popup is closed to avoid "video keeps playing after popup is closed" bug
1557
+ if(!isShowing) {
1558
+ el[0].src = _emptyPage;
1559
+ }
1560
+
1561
+ // IE8 black screen bug fix
1562
+ if(mfp.isIE8) {
1563
+ el.css('display', isShowing ? 'block' : 'none');
1564
+ }
1565
+ }
1566
+ }
1567
+ };
1568
+
1569
+ $.magnificPopup.registerModule(IFRAME_NS, {
1570
+
1571
+ options: {
1572
+ markup: '<div class="mfp-iframe-scaler">'+
1573
+ '<div class="mfp-close"></div>'+
1574
+ '<iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe>'+
1575
+ '</div>',
1576
+
1577
+ srcAction: 'iframe_src',
1578
+
1579
+ // we don't care and support only one default type of URL by default
1580
+ patterns: {
1581
+ youtube: {
1582
+ index: 'youtube.com',
1583
+ id: 'v=',
1584
+ src: '//www.youtube.com/embed/%id%?autoplay=1'
1585
+ },
1586
+ vimeo: {
1587
+ index: 'vimeo.com/',
1588
+ id: '/',
1589
+ src: '//player.vimeo.com/video/%id%?autoplay=1'
1590
+ },
1591
+ gmaps: {
1592
+ index: '//maps.google.',
1593
+ src: '%id%&output=embed'
1594
+ }
1595
+ }
1596
+ },
1597
+
1598
+ proto: {
1599
+ initIframe: function() {
1600
+ mfp.types.push(IFRAME_NS);
1601
+
1602
+ _mfpOn('BeforeChange', function(e, prevType, newType) {
1603
+ if(prevType !== newType) {
1604
+ if(prevType === IFRAME_NS) {
1605
+ _fixIframeBugs(); // iframe if removed
1606
+ } else if(newType === IFRAME_NS) {
1607
+ _fixIframeBugs(true); // iframe is showing
1608
+ }
1609
+ }// else {
1610
+ // iframe source is switched, don't do anything
1611
+ //}
1612
+ });
1613
+
1614
+ _mfpOn(CLOSE_EVENT + '.' + IFRAME_NS, function() {
1615
+ _fixIframeBugs();
1616
+ });
1617
+ },
1618
+
1619
+ getIframe: function(item, template) {
1620
+ var embedSrc = item.src;
1621
+ var iframeSt = mfp.st.iframe;
1622
+
1623
+ $.each(iframeSt.patterns, function() {
1624
+ if(embedSrc.indexOf( this.index ) > -1) {
1625
+ if(this.id) {
1626
+ if(typeof this.id === 'string') {
1627
+ embedSrc = embedSrc.substr(embedSrc.lastIndexOf(this.id)+this.id.length, embedSrc.length);
1628
+ } else {
1629
+ embedSrc = this.id.call( this, embedSrc );
1630
+ }
1631
+ }
1632
+ embedSrc = this.src.replace('%id%', embedSrc );
1633
+ return false; // break;
1634
+ }
1635
+ });
1636
+
1637
+ var dataObj = {};
1638
+ if(iframeSt.srcAction) {
1639
+ dataObj[iframeSt.srcAction] = embedSrc;
1640
+ }
1641
+ mfp._parseMarkup(template, dataObj, item);
1642
+
1643
+ mfp.updateStatus('ready');
1644
+
1645
+ return template;
1646
+ }
1647
+ }
1648
+ });
1649
+
1650
+
1651
+
1652
+ /*>>iframe*/
1653
+
1654
+ /*>>gallery*/
1655
+ /**
1656
+ * Get looped index depending on number of slides
1657
+ */
1658
+ var _getLoopedId = function(index) {
1659
+ var numSlides = mfp.items.length;
1660
+ if(index > numSlides - 1) {
1661
+ return index - numSlides;
1662
+ } else if(index < 0) {
1663
+ return numSlides + index;
1664
+ }
1665
+ return index;
1666
+ },
1667
+ _replaceCurrTotal = function(text, curr, total) {
1668
+ return text.replace(/%curr%/gi, curr + 1).replace(/%total%/gi, total);
1669
+ };
1670
+
1671
+ $.magnificPopup.registerModule('gallery', {
1672
+
1673
+ options: {
1674
+ enabled: false,
1675
+ arrowMarkup: '<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',
1676
+ preload: [0,2],
1677
+ navigateByImgClick: true,
1678
+ arrows: true,
1679
+
1680
+ tPrev: 'Previous (Left arrow key)',
1681
+ tNext: 'Next (Right arrow key)',
1682
+ tCounter: '%curr% of %total%'
1683
+ },
1684
+
1685
+ proto: {
1686
+ initGallery: function() {
1687
+
1688
+ var gSt = mfp.st.gallery,
1689
+ ns = '.mfp-gallery';
1690
+
1691
+ mfp.direction = true; // true - next, false - prev
1692
+
1693
+ if(!gSt || !gSt.enabled ) return false;
1694
+
1695
+ _wrapClasses += ' mfp-gallery';
1696
+
1697
+ _mfpOn(OPEN_EVENT+ns, function() {
1698
+
1699
+ if(gSt.navigateByImgClick) {
1700
+ mfp.wrap.on('click'+ns, '.mfp-img', function() {
1701
+ if(mfp.items.length > 1) {
1702
+ mfp.next();
1703
+ return false;
1704
+ }
1705
+ });
1706
+ }
1707
+
1708
+ _document.on('keydown'+ns, function(e) {
1709
+ if (e.keyCode === 37) {
1710
+ mfp.prev();
1711
+ } else if (e.keyCode === 39) {
1712
+ mfp.next();
1713
+ }
1714
+ });
1715
+ });
1716
+
1717
+ _mfpOn('UpdateStatus'+ns, function(e, data) {
1718
+ if(data.text) {
1719
+ data.text = _replaceCurrTotal(data.text, mfp.currItem.index, mfp.items.length);
1720
+ }
1721
+ });
1722
+
1723
+ _mfpOn(MARKUP_PARSE_EVENT+ns, function(e, element, values, item) {
1724
+ var l = mfp.items.length;
1725
+ values.counter = l > 1 ? _replaceCurrTotal(gSt.tCounter, item.index, l) : '';
1726
+ });
1727
+
1728
+ _mfpOn('BuildControls' + ns, function() {
1729
+ if(mfp.items.length > 1 && gSt.arrows && !mfp.arrowLeft) {
1730
+ var markup = gSt.arrowMarkup,
1731
+ arrowLeft = mfp.arrowLeft = $( markup.replace(/%title%/gi, gSt.tPrev).replace(/%dir%/gi, 'left') ).addClass(PREVENT_CLOSE_CLASS),
1732
+ arrowRight = mfp.arrowRight = $( markup.replace(/%title%/gi, gSt.tNext).replace(/%dir%/gi, 'right') ).addClass(PREVENT_CLOSE_CLASS);
1733
+
1734
+ arrowLeft.click(function() {
1735
+ mfp.prev();
1736
+ });
1737
+ arrowRight.click(function() {
1738
+ mfp.next();
1739
+ });
1740
+
1741
+ mfp.container.append(arrowLeft.add(arrowRight));
1742
+ }
1743
+ });
1744
+
1745
+ _mfpOn(CHANGE_EVENT+ns, function() {
1746
+ if(mfp._preloadTimeout) clearTimeout(mfp._preloadTimeout);
1747
+
1748
+ mfp._preloadTimeout = setTimeout(function() {
1749
+ mfp.preloadNearbyImages();
1750
+ mfp._preloadTimeout = null;
1751
+ }, 16);
1752
+ });
1753
+
1754
+
1755
+ _mfpOn(CLOSE_EVENT+ns, function() {
1756
+ _document.off(ns);
1757
+ mfp.wrap.off('click'+ns);
1758
+ mfp.arrowRight = mfp.arrowLeft = null;
1759
+ });
1760
+
1761
+ },
1762
+ next: function() {
1763
+ mfp.direction = true;
1764
+ mfp.index = _getLoopedId(mfp.index + 1);
1765
+ mfp.updateItemHTML();
1766
+ },
1767
+ prev: function() {
1768
+ mfp.direction = false;
1769
+ mfp.index = _getLoopedId(mfp.index - 1);
1770
+ mfp.updateItemHTML();
1771
+ },
1772
+ goTo: function(newIndex) {
1773
+ mfp.direction = (newIndex >= mfp.index);
1774
+ mfp.index = newIndex;
1775
+ mfp.updateItemHTML();
1776
+ },
1777
+ preloadNearbyImages: function() {
1778
+ var p = mfp.st.gallery.preload,
1779
+ preloadBefore = Math.min(p[0], mfp.items.length),
1780
+ preloadAfter = Math.min(p[1], mfp.items.length),
1781
+ i;
1782
+
1783
+ for(i = 1; i <= (mfp.direction ? preloadAfter : preloadBefore); i++) {
1784
+ mfp._preloadItem(mfp.index+i);
1785
+ }
1786
+ for(i = 1; i <= (mfp.direction ? preloadBefore : preloadAfter); i++) {
1787
+ mfp._preloadItem(mfp.index-i);
1788
+ }
1789
+ },
1790
+ _preloadItem: function(index) {
1791
+ index = _getLoopedId(index);
1792
+
1793
+ if(mfp.items[index].preloaded) {
1794
+ return;
1795
+ }
1796
+
1797
+ var item = mfp.items[index];
1798
+ if(!item.parsed) {
1799
+ item = mfp.parseEl( index );
1800
+ }
1801
+
1802
+ _mfpTrigger('LazyLoad', item);
1803
+
1804
+ if(item.type === 'image') {
1805
+ item.img = $('<img class="mfp-img" />').on('load.mfploader', function() {
1806
+ item.hasSize = true;
1807
+ }).on('error.mfploader', function() {
1808
+ item.hasSize = true;
1809
+ item.loadError = true;
1810
+ _mfpTrigger('LazyLoadError', item);
1811
+ }).attr('src', item.src);
1812
+ }
1813
+
1814
+
1815
+ item.preloaded = true;
1816
+ }
1817
+ }
1818
+ });
1819
+
1820
+ /*>>gallery*/
1821
+
1822
+ /*>>retina*/
1823
+
1824
+ var RETINA_NS = 'retina';
1825
+
1826
+ $.magnificPopup.registerModule(RETINA_NS, {
1827
+ options: {
1828
+ replaceSrc: function(item) {
1829
+ return item.src.replace(/\.\w+$/, function(m) { return '@2x' + m; });
1830
+ },
1831
+ ratio: 1 // Function or number. Set to 1 to disable.
1832
+ },
1833
+ proto: {
1834
+ initRetina: function() {
1835
+ if(window.devicePixelRatio > 1) {
1836
+
1837
+ var st = mfp.st.retina,
1838
+ ratio = st.ratio;
1839
+
1840
+ ratio = !isNaN(ratio) ? ratio : ratio();
1841
+
1842
+ if(ratio > 1) {
1843
+ _mfpOn('ImageHasSize' + '.' + RETINA_NS, function(e, item) {
1844
+ item.img.css({
1845
+ 'max-width': item.img[0].naturalWidth / ratio,
1846
+ 'width': '100%'
1847
+ });
1848
+ });
1849
+ _mfpOn('ElementParse' + '.' + RETINA_NS, function(e, item) {
1850
+ item.src = st.replaceSrc(item, ratio);
1851
+ });
1852
+ }
1853
+ }
1854
+
1855
+ }
1856
+ }
1857
+ });
1858
+
1859
+ /*>>retina*/
1860
+ _checkInstance(); }));
inc/libraries/magnific-popup/js/jquery.magnific-popup.min.js ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ /*! Magnific Popup - v1.0.0 - 2015-12-16
2
+ * http://dimsemenov.com/plugins/magnific-popup/
3
+ * Copyright (c) 2015 Dmitry Semenov; */
4
+ !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):window.jQuery||window.Zepto)}(function(a){var b,c,d,e,f,g,h="Close",i="BeforeClose",j="AfterClose",k="BeforeAppend",l="MarkupParse",m="Open",n="Change",o="mfp",p="."+o,q="mfp-ready",r="mfp-removing",s="mfp-prevent-close",t=function(){},u=!!window.jQuery,v=a(window),w=function(a,c){b.ev.on(o+a+p,c)},x=function(b,c,d,e){var f=document.createElement("div");return f.className="mfp-"+b,d&&(f.innerHTML=d),e?c&&c.appendChild(f):(f=a(f),c&&f.appendTo(c)),f},y=function(c,d){b.ev.triggerHandler(o+c,d),b.st.callbacks&&(c=c.charAt(0).toLowerCase()+c.slice(1),b.st.callbacks[c]&&b.st.callbacks[c].apply(b,a.isArray(d)?d:[d]))},z=function(c){return c===g&&b.currTemplate.closeBtn||(b.currTemplate.closeBtn=a(b.st.closeMarkup.replace("%title%",b.st.tClose)),g=c),b.currTemplate.closeBtn},A=function(){a.magnificPopup.instance||(b=new t,b.init(),a.magnificPopup.instance=b)},B=function(){var a=document.createElement("p").style,b=["ms","O","Moz","Webkit"];if(void 0!==a.transition)return!0;for(;b.length;)if(b.pop()+"Transition"in a)return!0;return!1};t.prototype={constructor:t,init:function(){var c=navigator.appVersion;b.isIE7=-1!==c.indexOf("MSIE 7."),b.isIE8=-1!==c.indexOf("MSIE 8."),b.isLowIE=b.isIE7||b.isIE8,b.isAndroid=/android/gi.test(c),b.isIOS=/iphone|ipad|ipod/gi.test(c),b.supportsTransition=B(),b.probablyMobile=b.isAndroid||b.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),d=a(document),b.popupsCache={}},open:function(c){var e;if(c.isObj===!1){b.items=c.items.toArray(),b.index=0;var g,h=c.items;for(e=0;e<h.length;e++)if(g=h[e],g.parsed&&(g=g.el[0]),g===c.el[0]){b.index=e;break}}else b.items=a.isArray(c.items)?c.items:[c.items],b.index=c.index||0;if(b.isOpen)return void b.updateItemHTML();b.types=[],f="",c.mainEl&&c.mainEl.length?b.ev=c.mainEl.eq(0):b.ev=d,c.key?(b.popupsCache[c.key]||(b.popupsCache[c.key]={}),b.currTemplate=b.popupsCache[c.key]):b.currTemplate={},b.st=a.extend(!0,{},a.magnificPopup.defaults,c),b.fixedContentPos="auto"===b.st.fixedContentPos?!b.probablyMobile:b.st.fixedContentPos,b.st.modal&&(b.st.closeOnContentClick=!1,b.st.closeOnBgClick=!1,b.st.showCloseBtn=!1,b.st.enableEscapeKey=!1),b.bgOverlay||(b.bgOverlay=x("bg").on("click"+p,function(){b.close()}),b.wrap=x("wrap").attr("tabindex",-1).on("click"+p,function(a){b._checkIfClose(a.target)&&b.close()}),b.container=x("container",b.wrap)),b.contentContainer=x("content"),b.st.preloader&&(b.preloader=x("preloader",b.container,b.st.tLoading));var i=a.magnificPopup.modules;for(e=0;e<i.length;e++){var j=i[e];j=j.charAt(0).toUpperCase()+j.slice(1),b["init"+j].call(b)}y("BeforeOpen"),b.st.showCloseBtn&&(b.st.closeBtnInside?(w(l,function(a,b,c,d){c.close_replaceWith=z(d.type)}),f+=" mfp-close-btn-in"):b.wrap.append(z())),b.st.alignTop&&(f+=" mfp-align-top"),b.fixedContentPos?b.wrap.css({overflow:b.st.overflowY,overflowX:"hidden",overflowY:b.st.overflowY}):b.wrap.css({top:v.scrollTop(),position:"absolute"}),(b.st.fixedBgPos===!1||"auto"===b.st.fixedBgPos&&!b.fixedContentPos)&&b.bgOverlay.css({height:d.height(),position:"absolute"}),b.st.enableEscapeKey&&d.on("keyup"+p,function(a){27===a.keyCode&&b.close()}),v.on("resize"+p,function(){b.updateSize()}),b.st.closeOnContentClick||(f+=" mfp-auto-cursor"),f&&b.wrap.addClass(f);var k=b.wH=v.height(),n={};if(b.fixedContentPos&&b._hasScrollBar(k)){var o=b._getScrollbarSize();o&&(n.marginRight=o)}b.fixedContentPos&&(b.isIE7?a("body, html").css("overflow","hidden"):n.overflow="hidden");var r=b.st.mainClass;return b.isIE7&&(r+=" mfp-ie7"),r&&b._addClassToMFP(r),b.updateItemHTML(),y("BuildControls"),a("html").css(n),b.bgOverlay.add(b.wrap).prependTo(b.st.prependTo||a(document.body)),b._lastFocusedEl=document.activeElement,setTimeout(function(){b.content?(b._addClassToMFP(q),b._setFocus()):b.bgOverlay.addClass(q),d.on("focusin"+p,b._onFocusIn)},16),b.isOpen=!0,b.updateSize(k),y(m),c},close:function(){b.isOpen&&(y(i),b.isOpen=!1,b.st.removalDelay&&!b.isLowIE&&b.supportsTransition?(b._addClassToMFP(r),setTimeout(function(){b._close()},b.st.removalDelay)):b._close())},_close:function(){y(h);var c=r+" "+q+" ";if(b.bgOverlay.detach(),b.wrap.detach(),b.container.empty(),b.st.mainClass&&(c+=b.st.mainClass+" "),b._removeClassFromMFP(c),b.fixedContentPos){var e={marginRight:""};b.isIE7?a("body, html").css("overflow",""):e.overflow="",a("html").css(e)}d.off("keyup"+p+" focusin"+p),b.ev.off(p),b.wrap.attr("class","mfp-wrap").removeAttr("style"),b.bgOverlay.attr("class","mfp-bg"),b.container.attr("class","mfp-container"),!b.st.showCloseBtn||b.st.closeBtnInside&&b.currTemplate[b.currItem.type]!==!0||b.currTemplate.closeBtn&&b.currTemplate.closeBtn.detach(),b.st.autoFocusLast&&b._lastFocusedEl&&a(b._lastFocusedEl).focus(),b.currItem=null,b.content=null,b.currTemplate=null,b.prevHeight=0,y(j)},updateSize:function(a){if(b.isIOS){var c=document.documentElement.clientWidth/window.innerWidth,d=window.innerHeight*c;b.wrap.css("height",d),b.wH=d}else b.wH=a||v.height();b.fixedContentPos||b.wrap.css("height",b.wH),y("Resize")},updateItemHTML:function(){var c=b.items[b.index];b.contentContainer.detach(),b.content&&b.content.detach(),c.parsed||(c=b.parseEl(b.index));var d=c.type;if(y("BeforeChange",[b.currItem?b.currItem.type:"",d]),b.currItem=c,!b.currTemplate[d]){var f=b.st[d]?b.st[d].markup:!1;y("FirstMarkupParse",f),f?b.currTemplate[d]=a(f):b.currTemplate[d]=!0}e&&e!==c.type&&b.container.removeClass("mfp-"+e+"-holder");var g=b["get"+d.charAt(0).toUpperCase()+d.slice(1)](c,b.currTemplate[d]);b.appendContent(g,d),c.preloaded=!0,y(n,c),e=c.type,b.container.prepend(b.contentContainer),y("AfterChange")},appendContent:function(a,c){b.content=a,a?b.st.showCloseBtn&&b.st.closeBtnInside&&b.currTemplate[c]===!0?b.content.find(".mfp-close").length||b.content.append(z()):b.content=a:b.content="",y(k),b.container.addClass("mfp-"+c+"-holder"),b.contentContainer.append(b.content)},parseEl:function(c){var d,e=b.items[c];if(e.tagName?e={el:a(e)}:(d=e.type,e={data:e,src:e.src}),e.el){for(var f=b.types,g=0;g<f.length;g++)if(e.el.hasClass("mfp-"+f[g])){d=f[g];break}e.src=e.el.attr("data-mfp-src"),e.src||(e.src=e.el.attr("href"))}return e.type=d||b.st.type||"inline",e.index=c,e.parsed=!0,b.items[c]=e,y("ElementParse",e),b.items[c]},addGroup:function(a,c){var d=function(d){d.mfpEl=this,b._openClick(d,a,c)};c||(c={});var e="click.magnificPopup";c.mainEl=a,c.items?(c.isObj=!0,a.off(e).on(e,d)):(c.isObj=!1,c.delegate?a.off(e).on(e,c.delegate,d):(c.items=a,a.off(e).on(e,d)))},_openClick:function(c,d,e){var f=void 0!==e.midClick?e.midClick:a.magnificPopup.defaults.midClick;if(f||!(2===c.which||c.ctrlKey||c.metaKey||c.altKey||c.shiftKey)){var g=void 0!==e.disableOn?e.disableOn:a.magnificPopup.defaults.disableOn;if(g)if(a.isFunction(g)){if(!g.call(b))return!0}else if(v.width()<g)return!0;c.type&&(c.preventDefault(),b.isOpen&&c.stopPropagation()),e.el=a(c.mfpEl),e.delegate&&(e.items=d.find(e.delegate)),b.open(e)}},updateStatus:function(a,d){if(b.preloader){c!==a&&b.container.removeClass("mfp-s-"+c),d||"loading"!==a||(d=b.st.tLoading);var e={status:a,text:d};y("UpdateStatus",e),a=e.status,d=e.text,b.preloader.html(d),b.preloader.find("a").on("click",function(a){a.stopImmediatePropagation()}),b.container.addClass("mfp-s-"+a),c=a}},_checkIfClose:function(c){if(!a(c).hasClass(s)){var d=b.st.closeOnContentClick,e=b.st.closeOnBgClick;if(d&&e)return!0;if(!b.content||a(c).hasClass("mfp-close")||b.preloader&&c===b.preloader[0])return!0;if(c===b.content[0]||a.contains(b.content[0],c)){if(d)return!0}else if(e&&a.contains(document,c))return!0;return!1}},_addClassToMFP:function(a){b.bgOverlay.addClass(a),b.wrap.addClass(a)},_removeClassFromMFP:function(a){this.bgOverlay.removeClass(a),b.wrap.removeClass(a)},_hasScrollBar:function(a){return(b.isIE7?d.height():document.body.scrollHeight)>(a||v.height())},_setFocus:function(){(b.st.focus?b.content.find(b.st.focus).eq(0):b.wrap).focus()},_onFocusIn:function(c){return c.target===b.wrap[0]||a.contains(b.wrap[0],c.target)?void 0:(b._setFocus(),!1)},_parseMarkup:function(b,c,d){var e;d.data&&(c=a.extend(d.data,c)),y(l,[b,c,d]),a.each(c,function(a,c){if(void 0===c||c===!1)return!0;if(e=a.split("_"),e.length>1){var d=b.find(p+"-"+e[0]);if(d.length>0){var f=e[1];"replaceWith"===f?d[0]!==c[0]&&d.replaceWith(c):"img"===f?d.is("img")?d.attr("src",c):d.replaceWith('<img src="'+c+'" class="'+d.attr("class")+'" />'):d.attr(e[1],c)}}else b.find(p+"-"+a).html(c)})},_getScrollbarSize:function(){if(void 0===b.scrollbarSize){var a=document.createElement("div");a.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(a),b.scrollbarSize=a.offsetWidth-a.clientWidth,document.body.removeChild(a)}return b.scrollbarSize}},a.magnificPopup={instance:null,proto:t.prototype,modules:[],open:function(b,c){return A(),b=b?a.extend(!0,{},b):{},b.isObj=!0,b.index=c||0,this.instance.open(b)},close:function(){return a.magnificPopup.instance&&a.magnificPopup.instance.close()},registerModule:function(b,c){c.options&&(a.magnificPopup.defaults[b]=c.options),a.extend(this.proto,c.proto),this.modules.push(b)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">&#215;</button>',tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}},a.fn.magnificPopup=function(c){A();var d=a(this);if("string"==typeof c)if("open"===c){var e,f=u?d.data("magnificPopup"):d[0].magnificPopup,g=parseInt(arguments[1],10)||0;f.items?e=f.items[g]:(e=d,f.delegate&&(e=e.find(f.delegate)),e=e.eq(g)),b._openClick({mfpEl:e},d,f)}else b.isOpen&&b[c].apply(b,Array.prototype.slice.call(arguments,1));else c=a.extend(!0,{},c),u?d.data("magnificPopup",c):d[0].magnificPopup=c,b.addGroup(d,c);return d};var C,D,E,F="inline",G=function(){E&&(D.after(E.addClass(C)).detach(),E=null)};a.magnificPopup.registerModule(F,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){b.types.push(F),w(h+"."+F,function(){G()})},getInline:function(c,d){if(G(),c.src){var e=b.st.inline,f=a(c.src);if(f.length){var g=f[0].parentNode;g&&g.tagName&&(D||(C=e.hiddenClass,D=x(C),C="mfp-"+C),E=f.after(D).detach().removeClass(C)),b.updateStatus("ready")}else b.updateStatus("error",e.tNotFound),f=a("<div>");return c.inlineElement=f,f}return b.updateStatus("ready"),b._parseMarkup(d,{},c),d}}});var H,I="ajax",J=function(){H&&a(document.body).removeClass(H)},K=function(){J(),b.req&&b.req.abort()};a.magnificPopup.registerModule(I,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'<a href="%url%">The content</a> could not be loaded.'},proto:{initAjax:function(){b.types.push(I),H=b.st.ajax.cursor,w(h+"."+I,K),w("BeforeChange."+I,K)},getAjax:function(c){H&&a(document.body).addClass(H),b.updateStatus("loading");var d=a.extend({url:c.src,success:function(d,e,f){var g={data:d,xhr:f};y("ParseAjax",g),b.appendContent(a(g.data),I),c.finished=!0,J(),b._setFocus(),setTimeout(function(){b.wrap.addClass(q)},16),b.updateStatus("ready"),y("AjaxContentAdded")},error:function(){J(),c.finished=c.loadError=!0,b.updateStatus("error",b.st.ajax.tError.replace("%url%",c.src))}},b.st.ajax.settings);return b.req=a.ajax(d),""}}});var L,M=function(c){if(c.data&&void 0!==c.data.title)return c.data.title;var d=b.st.image.titleSrc;if(d){if(a.isFunction(d))return d.call(b,c);if(c.el)return c.el.attr(d)||""}return""};a.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function(){var c=b.st.image,d=".image";b.types.push("image"),w(m+d,function(){"image"===b.currItem.type&&c.cursor&&a(document.body).addClass(c.cursor)}),w(h+d,function(){c.cursor&&a(document.body).removeClass(c.cursor),v.off("resize"+p)}),w("Resize"+d,b.resizeImage),b.isLowIE&&w("AfterChange",b.resizeImage)},resizeImage:function(){var a=b.currItem;if(a&&a.img&&b.st.image.verticalFit){var c=0;b.isLowIE&&(c=parseInt(a.img.css("padding-top"),10)+parseInt(a.img.css("padding-bottom"),10)),a.img.css("max-height",b.wH-c)}},_onImageHasSize:function(a){a.img&&(a.hasSize=!0,L&&clearInterval(L),a.isCheckingImgSize=!1,y("ImageHasSize",a),a.imgHidden&&(b.content&&b.content.removeClass("mfp-loading"),a.imgHidden=!1))},findImageSize:function(a){var c=0,d=a.img[0],e=function(f){L&&clearInterval(L),L=setInterval(function(){return d.naturalWidth>0?void b._onImageHasSize(a):(c>200&&clearInterval(L),c++,void(3===c?e(10):40===c?e(50):100===c&&e(500)))},f)};e(1)},getImage:function(c,d){var e=0,f=function(){c&&(c.img[0].complete?(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("ready")),c.hasSize=!0,c.loaded=!0,y("ImageLoadComplete")):(e++,200>e?setTimeout(f,100):g()))},g=function(){c&&(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("error",h.tError.replace("%url%",c.src))),c.hasSize=!0,c.loaded=!0,c.loadError=!0)},h=b.st.image,i=d.find(".mfp-img");if(i.length){var j=document.createElement("img");j.className="mfp-img",c.el&&c.el.find("img").length&&(j.alt=c.el.find("img").attr("alt")),c.img=a(j).on("load.mfploader",f).on("error.mfploader",g),j.src=c.src,i.is("img")&&(c.img=c.img.clone()),j=c.img[0],j.naturalWidth>0?c.hasSize=!0:j.width||(c.hasSize=!1)}return b._parseMarkup(d,{title:M(c),img_replaceWith:c.img},c),b.resizeImage(),c.hasSize?(L&&clearInterval(L),c.loadError?(d.addClass("mfp-loading"),b.updateStatus("error",h.tError.replace("%url%",c.src))):(d.removeClass("mfp-loading"),b.updateStatus("ready")),d):(b.updateStatus("loading"),c.loading=!0,c.hasSize||(c.imgHidden=!0,d.addClass("mfp-loading"),b.findImageSize(c)),d)}}});var N,O=function(){return void 0===N&&(N=void 0!==document.createElement("p").style.MozTransform),N};a.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(a){return a.is("img")?a:a.find("img")}},proto:{initZoom:function(){var a,c=b.st.zoom,d=".zoom";if(c.enabled&&b.supportsTransition){var e,f,g=c.duration,j=function(a){var b=a.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),d="all "+c.duration/1e3+"s "+c.easing,e={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},f="transition";return e["-webkit-"+f]=e["-moz-"+f]=e["-o-"+f]=e[f]=d,b.css(e),b},k=function(){b.content.css("visibility","visible")};w("BuildControls"+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.content.css("visibility","hidden"),a=b._getItemToZoom(),!a)return void k();f=j(a),f.css(b._getOffset()),b.wrap.append(f),e=setTimeout(function(){f.css(b._getOffset(!0)),e=setTimeout(function(){k(),setTimeout(function(){f.remove(),a=f=null,y("ZoomAnimationEnded")},16)},g)},16)}}),w(i+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.st.removalDelay=g,!a){if(a=b._getItemToZoom(),!a)return;f=j(a)}f.css(b._getOffset(!0)),b.wrap.append(f),b.content.css("visibility","hidden"),setTimeout(function(){f.css(b._getOffset())},16)}}),w(h+d,function(){b._allowZoom()&&(k(),f&&f.remove(),a=null)})}},_allowZoom:function(){return"image"===b.currItem.type},_getItemToZoom:function(){return b.currItem.hasSize?b.currItem.img:!1},_getOffset:function(c){var d;d=c?b.currItem.img:b.st.zoom.opener(b.currItem.el||b.currItem);var e=d.offset(),f=parseInt(d.css("padding-top"),10),g=parseInt(d.css("padding-bottom"),10);e.top-=a(window).scrollTop()-f;var h={width:d.width(),height:(u?d.innerHeight():d[0].offsetHeight)-g-f};return O()?h["-moz-transform"]=h.transform="translate("+e.left+"px,"+e.top+"px)":(h.left=e.left,h.top=e.top),h}}});var P="iframe",Q="//about:blank",R=function(a){if(b.currTemplate[P]){var c=b.currTemplate[P].find("iframe");c.length&&(a||(c[0].src=Q),b.isIE8&&c.css("display",a?"block":"none"))}};a.magnificPopup.registerModule(P,{options:{markup:'<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){b.types.push(P),w("BeforeChange",function(a,b,c){b!==c&&(b===P?R():c===P&&R(!0))}),w(h+"."+P,function(){R()})},getIframe:function(c,d){var e=c.src,f=b.st.iframe;a.each(f.patterns,function(){return e.indexOf(this.index)>-1?(this.id&&(e="string"==typeof this.id?e.substr(e.lastIndexOf(this.id)+this.id.length,e.length):this.id.call(this,e)),e=this.src.replace("%id%",e),!1):void 0});var g={};return f.srcAction&&(g[f.srcAction]=e),b._parseMarkup(d,g,c),b.updateStatus("ready"),d}}});var S=function(a){var c=b.items.length;return a>c-1?a-c:0>a?c+a:a},T=function(a,b,c){return a.replace(/%curr%/gi,b+1).replace(/%total%/gi,c)};a.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var c=b.st.gallery,e=".mfp-gallery",g=Boolean(a.fn.mfpFastClick);return b.direction=!0,c&&c.enabled?(f+=" mfp-gallery",w(m+e,function(){c.navigateByImgClick&&b.wrap.on("click"+e,".mfp-img",function(){return b.items.length>1?(b.next(),!1):void 0}),d.on("keydown"+e,function(a){37===a.keyCode?b.prev():39===a.keyCode&&b.next()})}),w("UpdateStatus"+e,function(a,c){c.text&&(c.text=T(c.text,b.currItem.index,b.items.length))}),w(l+e,function(a,d,e,f){var g=b.items.length;e.counter=g>1?T(c.tCounter,f.index,g):""}),w("BuildControls"+e,function(){if(b.items.length>1&&c.arrows&&!b.arrowLeft){var d=c.arrowMarkup,e=b.arrowLeft=a(d.replace(/%title%/gi,c.tPrev).replace(/%dir%/gi,"left")).addClass(s),f=b.arrowRight=a(d.replace(/%title%/gi,c.tNext).replace(/%dir%/gi,"right")).addClass(s),h=g?"mfpFastClick":"click";e[h](function(){b.prev()}),f[h](function(){b.next()}),b.isIE7&&(x("b",e[0],!1,!0),x("a",e[0],!1,!0),x("b",f[0],!1,!0),x("a",f[0],!1,!0)),b.container.append(e.add(f))}}),w(n+e,function(){b._preloadTimeout&&clearTimeout(b._preloadTimeout),b._preloadTimeout=setTimeout(function(){b.preloadNearbyImages(),b._preloadTimeout=null},16)}),void w(h+e,function(){d.off(e),b.wrap.off("click"+e),b.arrowLeft&&g&&b.arrowLeft.add(b.arrowRight).destroyMfpFastClick(),b.arrowRight=b.arrowLeft=null})):!1},next:function(){b.direction=!0,b.index=S(b.index+1),b.updateItemHTML()},prev:function(){b.direction=!1,b.index=S(b.index-1),b.updateItemHTML()},goTo:function(a){b.direction=a>=b.index,b.index=a,b.updateItemHTML()},preloadNearbyImages:function(){var a,c=b.st.gallery.preload,d=Math.min(c[0],b.items.length),e=Math.min(c[1],b.items.length);for(a=1;a<=(b.direction?e:d);a++)b._preloadItem(b.index+a);for(a=1;a<=(b.direction?d:e);a++)b._preloadItem(b.index-a)},_preloadItem:function(c){if(c=S(c),!b.items[c].preloaded){var d=b.items[c];d.parsed||(d=b.parseEl(c)),y("LazyLoad",d),"image"===d.type&&(d.img=a('<img class="mfp-img" />').on("load.mfploader",function(){d.hasSize=!0}).on("error.mfploader",function(){d.hasSize=!0,d.loadError=!0,y("LazyLoadError",d)}).attr("src",d.src)),d.preloaded=!0}}}});var U="retina";a.magnificPopup.registerModule(U,{options:{replaceSrc:function(a){return a.src.replace(/\.\w+$/,function(a){return"@2x"+a})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var a=b.st.retina,c=a.ratio;c=isNaN(c)?c():c,c>1&&(w("ImageHasSize."+U,function(a,b){b.img.css({"max-width":b.img[0].naturalWidth/c,width:"100%"})}),w("ElementParse."+U,function(b,d){d.src=a.replaceSrc(d,c)}))}}}}),function(){var b=1e3,c="ontouchstart"in window,d=function(){v.off("touchmove"+f+" touchend"+f)},e="mfpFastClick",f="."+e;a.fn.mfpFastClick=function(e){return a(this).each(function(){var g,h=a(this);if(c){var i,j,k,l,m,n;h.on("touchstart"+f,function(a){l=!1,n=1,m=a.originalEvent?a.originalEvent.touches[0]:a.touches[0],j=m.clientX,k=m.clientY,v.on("touchmove"+f,function(a){m=a.originalEvent?a.originalEvent.touches:a.touches,n=m.length,m=m[0],(Math.abs(m.clientX-j)>10||Math.abs(m.clientY-k)>10)&&(l=!0,d())}).on("touchend"+f,function(a){d(),l||n>1||(g=!0,a.preventDefault(),clearTimeout(i),i=setTimeout(function(){g=!1},b),e())})})}h.on("click"+f,function(){g||e()})})},a.fn.destroyMfpFastClick=function(){a(this).off("touchstart"+f+" click"+f),c&&v.off("touchmove"+f+" touchend"+f)}}(),A()});
inc/libraries/owl-carousel/css/grabbing.png ADDED
Binary file
inc/libraries/owl-carousel/css/owl.carousel.css ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * Core Owl Carousel CSS File
3
+ * v1.3.3
4
+ */
5
+
6
+ /* clearfix */
7
+ .owl-carousel .owl-wrapper:after {
8
+ content: ".";
9
+ display: block;
10
+ clear: both;
11
+ visibility: hidden;
12
+ line-height: 0;
13
+ height: 0;
14
+ }
15
+ /* display none until init */
16
+ .owl-carousel{
17
+ display: none;
18
+ position: relative;
19
+ width: 100%;
20
+ -ms-touch-action: pan-y;
21
+ }
22
+ .owl-carousel .owl-wrapper{
23
+ display: none;
24
+ position: relative;
25
+ -webkit-transform: translate3d(0px, 0px, 0px);
26
+ }
27
+ .owl-carousel .owl-wrapper-outer{
28
+ overflow: hidden;
29
+ position: relative;
30
+ width: 100%;
31
+ }
32
+ .owl-carousel .owl-wrapper-outer.autoHeight{
33
+ -webkit-transition: height 500ms ease-in-out;
34
+ -moz-transition: height 500ms ease-in-out;
35
+ -ms-transition: height 500ms ease-in-out;
36
+ -o-transition: height 500ms ease-in-out;
37
+ transition: height 500ms ease-in-out;
38
+ }
39
+
40
+ .owl-carousel .owl-item{
41
+ float: left;
42
+ }
43
+ .owl-controls .owl-page,
44
+ .owl-controls .owl-buttons div{
45
+ cursor: pointer;
46
+ }
47
+ .owl-controls {
48
+ -webkit-user-select: none;
49
+ -khtml-user-select: none;
50
+ -moz-user-select: none;
51
+ -ms-user-select: none;
52
+ user-select: none;
53
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
54
+ }
55
+
56
+ /* mouse grab icon */
57
+ .grabbing {
58
+ cursor:url(grabbing.png) 8 8, move;
59
+ }
60
+
61
+ /* fix */
62
+ .owl-carousel .owl-wrapper,
63
+ .owl-carousel .owl-item{
64
+ -webkit-backface-visibility: hidden;
65
+ -moz-backface-visibility: hidden;
66
+ -ms-backface-visibility: hidden;
67
+ -webkit-transform: translate3d(0,0,0);
68
+ -moz-transform: translate3d(0,0,0);
69
+ -ms-transform: translate3d(0,0,0);
70
+ }
71
+
inc/libraries/owl-carousel/js/owl.carousel.min.js ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "function"!==typeof Object.create&&(Object.create=function(f){function g(){}g.prototype=f;return new g});
2
+ (function(f,g,k){var l={init:function(a,b){this.$elem=f(b);this.options=f.extend({},f.fn.owlCarousel.options,this.$elem.data(),a);this.userOptions=a;this.loadContent()},loadContent:function(){function a(a){var d,e="";if("function"===typeof b.options.jsonSuccess)b.options.jsonSuccess.apply(this,[a]);else{for(d in a.owl)a.owl.hasOwnProperty(d)&&(e+=a.owl[d].item);b.$elem.html(e)}b.logIn()}var b=this,e;"function"===typeof b.options.beforeInit&&b.options.beforeInit.apply(this,[b.$elem]);"string"===typeof b.options.jsonPath?
3
+ (e=b.options.jsonPath,f.getJSON(e,a)):b.logIn()},logIn:function(){this.$elem.data("owl-originalStyles",this.$elem.attr("style"));this.$elem.data("owl-originalClasses",this.$elem.attr("class"));this.$elem.css({opacity:0});this.orignalItems=this.options.items;this.checkBrowser();this.wrapperWidth=0;this.checkVisible=null;this.setVars()},setVars:function(){if(0===this.$elem.children().length)return!1;this.baseClass();this.eventTypes();this.$userItems=this.$elem.children();this.itemsAmount=this.$userItems.length;
4
+ this.wrapItems();this.$owlItems=this.$elem.find(".owl-item");this.$owlWrapper=this.$elem.find(".owl-wrapper");this.playDirection="next";this.prevItem=0;this.prevArr=[0];this.currentItem=0;this.customEvents();this.onStartup()},onStartup:function(){this.updateItems();this.calculateAll();this.buildControls();this.updateControls();this.response();this.moveEvents();this.stopOnHover();this.owlStatus();!1!==this.options.transitionStyle&&this.transitionTypes(this.options.transitionStyle);!0===this.options.autoPlay&&
5
+ (this.options.autoPlay=5E3);this.play();this.$elem.find(".owl-wrapper").css("display","block");this.$elem.is(":visible")?this.$elem.css("opacity",1):this.watchVisibility();this.onstartup=!1;this.eachMoveUpdate();"function"===typeof this.options.afterInit&&this.options.afterInit.apply(this,[this.$elem])},eachMoveUpdate:function(){!0===this.options.lazyLoad&&this.lazyLoad();!0===this.options.autoHeight&&this.autoHeight();this.onVisibleItems();"function"===typeof this.options.afterAction&&this.options.afterAction.apply(this,
6
+ [this.$elem])},updateVars:function(){"function"===typeof this.options.beforeUpdate&&this.options.beforeUpdate.apply(this,[this.$elem]);this.watchVisibility();this.updateItems();this.calculateAll();this.updatePosition();this.updateControls();this.eachMoveUpdate();"function"===typeof this.options.afterUpdate&&this.options.afterUpdate.apply(this,[this.$elem])},reload:function(){var a=this;g.setTimeout(function(){a.updateVars()},0)},watchVisibility:function(){var a=this;if(!1===a.$elem.is(":visible"))a.$elem.css({opacity:0}),
7
+ g.clearInterval(a.autoPlayInterval),g.clearInterval(a.checkVisible);else return!1;a.checkVisible=g.setInterval(function(){a.$elem.is(":visible")&&(a.reload(),a.$elem.animate({opacity:1},200),g.clearInterval(a.checkVisible))},500)},wrapItems:function(){this.$userItems.wrapAll('<div class="owl-wrapper">').wrap('<div class="owl-item"></div>');this.$elem.find(".owl-wrapper").wrap('<div class="owl-wrapper-outer">');this.wrapperOuter=this.$elem.find(".owl-wrapper-outer");this.$elem.css("display","block")},
8
+ baseClass:function(){var a=this.$elem.hasClass(this.options.baseClass),b=this.$elem.hasClass(this.options.theme);a||this.$elem.addClass(this.options.baseClass);b||this.$elem.addClass(this.options.theme)},updateItems:function(){var a,b;if(!1===this.options.responsive)return!1;if(!0===this.options.singleItem)return this.options.items=this.orignalItems=1,this.options.itemsCustom=!1,this.options.itemsDesktop=!1,this.options.itemsDesktopSmall=!1,this.options.itemsTablet=!1,this.options.itemsTabletSmall=
9
+ !1,this.options.itemsMobile=!1;a=f(this.options.responsiveBaseWidth).width();a>(this.options.itemsDesktop[0]||this.orignalItems)&&(this.options.items=this.orignalItems);if(!1!==this.options.itemsCustom)for(this.options.itemsCustom.sort(function(a,b){return a[0]-b[0]}),b=0;b<this.options.itemsCustom.length;b+=1)this.options.itemsCustom[b][0]<=a&&(this.options.items=this.options.itemsCustom[b][1]);else a<=this.options.itemsDesktop[0]&&!1!==this.options.itemsDesktop&&(this.options.items=this.options.itemsDesktop[1]),
10
+ a<=this.options.itemsDesktopSmall[0]&&!1!==this.options.itemsDesktopSmall&&(this.options.items=this.options.itemsDesktopSmall[1]),a<=this.options.itemsTablet[0]&&!1!==this.options.itemsTablet&&(this.options.items=this.options.itemsTablet[1]),a<=this.options.itemsTabletSmall[0]&&!1!==this.options.itemsTabletSmall&&(this.options.items=this.options.itemsTabletSmall[1]),a<=this.options.itemsMobile[0]&&!1!==this.options.itemsMobile&&(this.options.items=this.options.itemsMobile[1]);this.options.items>this.itemsAmount&&
11
+ !0===this.options.itemsScaleUp&&(this.options.items=this.itemsAmount)},response:function(){var a=this,b,e;if(!0!==a.options.responsive)return!1;e=f(g).width();a.resizer=function(){f(g).width()!==e&&(!1!==a.options.autoPlay&&g.clearInterval(a.autoPlayInterval),g.clearTimeout(b),b=g.setTimeout(function(){e=f(g).width();a.updateVars()},a.options.responsiveRefreshRate))};f(g).resize(a.resizer)},updatePosition:function(){this.jumpTo(this.currentItem);!1!==this.options.autoPlay&&this.checkAp()},appendItemsSizes:function(){var a=
12
+ this,b=0,e=a.itemsAmount-a.options.items;a.$owlItems.each(function(c){var d=f(this);d.css({width:a.itemWidth}).data("owl-item",Number(c));if(0===c%a.options.items||c===e)c>e||(b+=1);d.data("owl-roundPages",b)})},appendWrapperSizes:function(){this.$owlWrapper.css({width:this.$owlItems.length*this.itemWidth*2,left:0});this.appendItemsSizes()},calculateAll:function(){this.calculateWidth();this.appendWrapperSizes();this.loops();this.max()},calculateWidth:function(){this.itemWidth=Math.round(this.$elem.width()/
13
+ this.options.items)},max:function(){var a=-1*(this.itemsAmount*this.itemWidth-this.options.items*this.itemWidth);this.options.items>this.itemsAmount?this.maximumPixels=a=this.maximumItem=0:(this.maximumItem=this.itemsAmount-this.options.items,this.maximumPixels=a);return a},min:function(){return 0},loops:function(){var a=0,b=0,e,c;this.positionsInArray=[0];this.pagesInArray=[];for(e=0;e<this.itemsAmount;e+=1)b+=this.itemWidth,this.positionsInArray.push(-b),!0===this.options.scrollPerPage&&(c=f(this.$owlItems[e]),
14
+ c=c.data("owl-roundPages"),c!==a&&(this.pagesInArray[a]=this.positionsInArray[e],a=c))},buildControls:function(){if(!0===this.options.navigation||!0===this.options.pagination)this.owlControls=f('<div class="owl-controls"/>').toggleClass("clickable",!this.browser.isTouch).appendTo(this.$elem);!0===this.options.pagination&&this.buildPagination();!0===this.options.navigation&&this.buildButtons()},buildButtons:function(){var a=this,b=f('<div class="owl-buttons"/>');a.owlControls.append(b);a.buttonPrev=
15
+ f("<div/>",{"class":"owl-prev",html:a.options.navigationText[0]||""});a.buttonNext=f("<div/>",{"class":"owl-next",html:a.options.navigationText[1]||""});b.append(a.buttonPrev).append(a.buttonNext);b.on("touchstart.owlControls mousedown.owlControls",'div[class^="owl"]',function(a){a.preventDefault()});b.on("touchend.owlControls mouseup.owlControls",'div[class^="owl"]',function(b){b.preventDefault();f(this).hasClass("owl-next")?a.next():a.prev()})},buildPagination:function(){var a=this;a.paginationWrapper=
16
+ f('<div class="owl-pagination"/>');a.owlControls.append(a.paginationWrapper);a.paginationWrapper.on("touchend.owlControls mouseup.owlControls",".owl-page",function(b){b.preventDefault();Number(f(this).data("owl-page"))!==a.currentItem&&a.goTo(Number(f(this).data("owl-page")),!0)})},updatePagination:function(){var a,b,e,c,d,g;if(!1===this.options.pagination)return!1;this.paginationWrapper.html("");a=0;b=this.itemsAmount-this.itemsAmount%this.options.items;for(c=0;c<this.itemsAmount;c+=1)0===c%this.options.items&&
17
+ (a+=1,b===c&&(e=this.itemsAmount-this.options.items),d=f("<div/>",{"class":"owl-page"}),g=f("<span></span>",{text:!0===this.options.paginationNumbers?a:"","class":!0===this.options.paginationNumbers?"owl-numbers":""}),d.append(g),d.data("owl-page",b===c?e:c),d.data("owl-roundPages",a),this.paginationWrapper.append(d));this.checkPagination()},checkPagination:function(){var a=this;if(!1===a.options.pagination)return!1;a.paginationWrapper.find(".owl-page").each(function(){f(this).data("owl-roundPages")===
18
+ f(a.$owlItems[a.currentItem]).data("owl-roundPages")&&(a.paginationWrapper.find(".owl-page").removeClass("active"),f(this).addClass("active"))})},checkNavigation:function(){if(!1===this.options.navigation)return!1;!1===this.options.rewindNav&&(0===this.currentItem&&0===this.maximumItem?(this.buttonPrev.addClass("disabled"),this.buttonNext.addClass("disabled")):0===this.currentItem&&0!==this.maximumItem?(this.buttonPrev.addClass("disabled"),this.buttonNext.removeClass("disabled")):this.currentItem===
19
+ this.maximumItem?(this.buttonPrev.removeClass("disabled"),this.buttonNext.addClass("disabled")):0!==this.currentItem&&this.currentItem!==this.maximumItem&&(this.buttonPrev.removeClass("disabled"),this.buttonNext.removeClass("disabled")))},updateControls:function(){this.updatePagination();this.checkNavigation();this.owlControls&&(this.options.items>=this.itemsAmount?this.owlControls.hide():this.owlControls.show())},destroyControls:function(){this.owlControls&&this.owlControls.remove()},next:function(a){if(this.isTransition)return!1;
20
+ this.currentItem+=!0===this.options.scrollPerPage?this.options.items:1;if(this.currentItem>this.maximumItem+(!0===this.options.scrollPerPage?this.options.items-1:0))if(!0===this.options.rewindNav)this.currentItem=0,a="rewind";else return this.currentItem=this.maximumItem,!1;this.goTo(this.currentItem,a)},prev:function(a){if(this.isTransition)return!1;this.currentItem=!0===this.options.scrollPerPage&&0<this.currentItem&&this.currentItem<this.options.items?0:this.currentItem-(!0===this.options.scrollPerPage?
21
+ this.options.items:1);if(0>this.currentItem)if(!0===this.options.rewindNav)this.currentItem=this.maximumItem,a="rewind";else return this.currentItem=0,!1;this.goTo(this.currentItem,a)},goTo:function(a,b,e){var c=this;if(c.isTransition)return!1;"function"===typeof c.options.beforeMove&&c.options.beforeMove.apply(this,[c.$elem]);a>=c.maximumItem?a=c.maximumItem:0>=a&&(a=0);c.currentItem=c.owl.currentItem=a;if(!1!==c.options.transitionStyle&&"drag"!==e&&1===c.options.items&&!0===c.browser.support3d)return c.swapSpeed(0),
22
+ !0===c.browser.support3d?c.transition3d(c.positionsInArray[a]):c.css2slide(c.positionsInArray[a],1),c.afterGo(),c.singleItemTransition(),!1;a=c.positionsInArray[a];!0===c.browser.support3d?(c.isCss3Finish=!1,!0===b?(c.swapSpeed("paginationSpeed"),g.setTimeout(function(){c.isCss3Finish=!0},c.options.paginationSpeed)):"rewind"===b?(c.swapSpeed(c.options.rewindSpeed),g.setTimeout(function(){c.isCss3Finish=!0},c.options.rewindSpeed)):(c.swapSpeed("slideSpeed"),g.setTimeout(function(){c.isCss3Finish=!0},
23
+ c.options.slideSpeed)),c.transition3d(a)):!0===b?c.css2slide(a,c.options.paginationSpeed):"rewind"===b?c.css2slide(a,c.options.rewindSpeed):c.css2slide(a,c.options.slideSpeed);c.afterGo()},jumpTo:function(a){"function"===typeof this.options.beforeMove&&this.options.beforeMove.apply(this,[this.$elem]);a>=this.maximumItem||-1===a?a=this.maximumItem:0>=a&&(a=0);this.swapSpeed(0);!0===this.browser.support3d?this.transition3d(this.positionsInArray[a]):this.css2slide(this.positionsInArray[a],1);this.currentItem=
24
+ this.owl.currentItem=a;this.afterGo()},afterGo:function(){this.prevArr.push(this.currentItem);this.prevItem=this.owl.prevItem=this.prevArr[this.prevArr.length-2];this.prevArr.shift(0);this.prevItem!==this.currentItem&&(this.checkPagination(),this.checkNavigation(),this.eachMoveUpdate(),!1!==this.options.autoPlay&&this.checkAp());"function"===typeof this.options.afterMove&&this.prevItem!==this.currentItem&&this.options.afterMove.apply(this,[this.$elem])},stop:function(){this.apStatus="stop";g.clearInterval(this.autoPlayInterval)},
25
+ checkAp:function(){"stop"!==this.apStatus&&this.play()},play:function(){var a=this;a.apStatus="play";if(!1===a.options.autoPlay)return!1;g.clearInterval(a.autoPlayInterval);a.autoPlayInterval=g.setInterval(function(){a.next(!0)},a.options.autoPlay)},swapSpeed:function(a){"slideSpeed"===a?this.$owlWrapper.css(this.addCssSpeed(this.options.slideSpeed)):"paginationSpeed"===a?this.$owlWrapper.css(this.addCssSpeed(this.options.paginationSpeed)):"string"!==typeof a&&this.$owlWrapper.css(this.addCssSpeed(a))},
26
+ addCssSpeed:function(a){return{"-webkit-transition":"all "+a+"ms ease","-moz-transition":"all "+a+"ms ease","-o-transition":"all "+a+"ms ease",transition:"all "+a+"ms ease"}},removeTransition:function(){return{"-webkit-transition":"","-moz-transition":"","-o-transition":"",transition:""}},doTranslate:function(a){return{"-webkit-transform":"translate3d("+a+"px, 0px, 0px)","-moz-transform":"translate3d("+a+"px, 0px, 0px)","-o-transform":"translate3d("+a+"px, 0px, 0px)","-ms-transform":"translate3d("+
27
+ a+"px, 0px, 0px)",transform:"translate3d("+a+"px, 0px,0px)"}},transition3d:function(a){this.$owlWrapper.css(this.doTranslate(a))},css2move:function(a){this.$owlWrapper.css({left:a})},css2slide:function(a,b){var e=this;e.isCssFinish=!1;e.$owlWrapper.stop(!0,!0).animate({left:a},{duration:b||e.options.slideSpeed,complete:function(){e.isCssFinish=!0}})},checkBrowser:function(){var a=k.createElement("div");a.style.cssText=" -moz-transform:translate3d(0px, 0px, 0px); -ms-transform:translate3d(0px, 0px, 0px); -o-transform:translate3d(0px, 0px, 0px); -webkit-transform:translate3d(0px, 0px, 0px); transform:translate3d(0px, 0px, 0px)";
28
+ a=a.style.cssText.match(/translate3d\(0px, 0px, 0px\)/g);this.browser={support3d:null!==a&&1===a.length,isTouch:"ontouchstart"in g||g.navigator.msMaxTouchPoints}},moveEvents:function(){if(!1!==this.options.mouseDrag||!1!==this.options.touchDrag)this.gestures(),this.disabledEvents()},eventTypes:function(){var a=["s","e","x"];this.ev_types={};!0===this.options.mouseDrag&&!0===this.options.touchDrag?a=["touchstart.owl mousedown.owl","touchmove.owl mousemove.owl","touchend.owl touchcancel.owl mouseup.owl"]:
29
+ !1===this.options.mouseDrag&&!0===this.options.touchDrag?a=["touchstart.owl","touchmove.owl","touchend.owl touchcancel.owl"]:!0===this.options.mouseDrag&&!1===this.options.touchDrag&&(a=["mousedown.owl","mousemove.owl","mouseup.owl"]);this.ev_types.start=a[0];this.ev_types.move=a[1];this.ev_types.end=a[2]},disabledEvents:function(){this.$elem.on("dragstart.owl",function(a){a.preventDefault()});this.$elem.on("mousedown.disableTextSelect",function(a){return f(a.target).is("input, textarea, select, option")})},
30
+ gestures:function(){function a(a){if(void 0!==a.touches)return{x:a.touches[0].pageX,y:a.touches[0].pageY};if(void 0===a.touches){if(void 0!==a.pageX)return{x:a.pageX,y:a.pageY};if(void 0===a.pageX)return{x:a.clientX,y:a.clientY}}}function b(a){"on"===a?(f(k).on(d.ev_types.move,e),f(k).on(d.ev_types.end,c)):"off"===a&&(f(k).off(d.ev_types.move),f(k).off(d.ev_types.end))}function e(b){b=b.originalEvent||b||g.event;d.newPosX=a(b).x-h.offsetX;d.newPosY=a(b).y-h.offsetY;d.newRelativeX=d.newPosX-h.relativePos;
31
+ "function"===typeof d.options.startDragging&&!0!==h.dragging&&0!==d.newRelativeX&&(h.dragging=!0,d.options.startDragging.apply(d,[d.$elem]));(8<d.newRelativeX||-8>d.newRelativeX)&&!0===d.browser.isTouch&&(void 0!==b.preventDefault?b.preventDefault():b.returnValue=!1,h.sliding=!0);(10<d.newPosY||-10>d.newPosY)&&!1===h.sliding&&f(k).off("touchmove.owl");d.newPosX=Math.max(Math.min(d.newPosX,d.newRelativeX/5),d.maximumPixels+d.newRelativeX/5);!0===d.browser.support3d?d.transition3d(d.newPosX):d.css2move(d.newPosX)}
32
+ function c(a){a=a.originalEvent||a||g.event;var c;a.target=a.target||a.srcElement;h.dragging=!1;!0!==d.browser.isTouch&&d.$owlWrapper.removeClass("grabbing");d.dragDirection=0>d.newRelativeX?d.owl.dragDirection="left":d.owl.dragDirection="right";0!==d.newRelativeX&&(c=d.getNewPosition(),d.goTo(c,!1,"drag"),h.targetElement===a.target&&!0!==d.browser.isTouch&&(f(a.target).on("click.disable",function(a){a.stopImmediatePropagation();a.stopPropagation();a.preventDefault();f(a.target).off("click.disable")}),
33
+ a=f._data(a.target,"events").click,c=a.pop(),a.splice(0,0,c)));b("off")}var d=this,h={offsetX:0,offsetY:0,baseElWidth:0,relativePos:0,position:null,minSwipe:null,maxSwipe:null,sliding:null,dargging:null,targetElement:null};d.isCssFinish=!0;d.$elem.on(d.ev_types.start,".owl-wrapper",function(c){c=c.originalEvent||c||g.event;var e;if(3===c.which)return!1;if(!(d.itemsAmount<=d.options.items)){if(!1===d.isCssFinish&&!d.options.dragBeforeAnimFinish||!1===d.isCss3Finish&&!d.options.dragBeforeAnimFinish)return!1;
34
+ !1!==d.options.autoPlay&&g.clearInterval(d.autoPlayInterval);!0===d.browser.isTouch||d.$owlWrapper.hasClass("grabbing")||d.$owlWrapper.addClass("grabbing");d.newPosX=0;d.newRelativeX=0;f(this).css(d.removeTransition());e=f(this).position();h.relativePos=e.left;h.offsetX=a(c).x-e.left;h.offsetY=a(c).y-e.top;b("on");h.sliding=!1;h.targetElement=c.target||c.srcElement}})},getNewPosition:function(){var a=this.closestItem();a>this.maximumItem?a=this.currentItem=this.maximumItem:0<=this.newPosX&&(this.currentItem=
35
+ a=0);return a},closestItem:function(){var a=this,b=!0===a.options.scrollPerPage?a.pagesInArray:a.positionsInArray,e=a.newPosX,c=null;f.each(b,function(d,g){e-a.itemWidth/20>b[d+1]&&e-a.itemWidth/20<g&&"left"===a.moveDirection()?(c=g,a.currentItem=!0===a.options.scrollPerPage?f.inArray(c,a.positionsInArray):d):e+a.itemWidth/20<g&&e+a.itemWidth/20>(b[d+1]||b[d]-a.itemWidth)&&"right"===a.moveDirection()&&(!0===a.options.scrollPerPage?(c=b[d+1]||b[b.length-1],a.currentItem=f.inArray(c,a.positionsInArray)):
36
+ (c=b[d+1],a.currentItem=d+1))});return a.currentItem},moveDirection:function(){var a;0>this.newRelativeX?(a="right",this.playDirection="next"):(a="left",this.playDirection="prev");return a},customEvents:function(){var a=this;a.$elem.on("owl.next",function(){a.next()});a.$elem.on("owl.prev",function(){a.prev()});a.$elem.on("owl.play",function(b,e){a.options.autoPlay=e;a.play();a.hoverStatus="play"});a.$elem.on("owl.stop",function(){a.stop();a.hoverStatus="stop"});a.$elem.on("owl.goTo",function(b,e){a.goTo(e)});
37
+ a.$elem.on("owl.jumpTo",function(b,e){a.jumpTo(e)})},stopOnHover:function(){var a=this;!0===a.options.stopOnHover&&!0!==a.browser.isTouch&&!1!==a.options.autoPlay&&(a.$elem.on("mouseover",function(){a.stop()}),a.$elem.on("mouseout",function(){"stop"!==a.hoverStatus&&a.play()}))},lazyLoad:function(){var a,b,e,c,d;if(!1===this.options.lazyLoad)return!1;for(a=0;a<this.itemsAmount;a+=1)b=f(this.$owlItems[a]),"loaded"!==b.data("owl-loaded")&&(e=b.data("owl-item"),c=b.find(".lazyOwl"),"string"!==typeof c.data("src")?
38
+ b.data("owl-loaded","loaded"):(void 0===b.data("owl-loaded")&&(c.hide(),b.addClass("loading").data("owl-loaded","checked")),(d=!0===this.options.lazyFollow?e>=this.currentItem:!0)&&e<this.currentItem+this.options.items&&c.length&&this.lazyPreload(b,c)))},lazyPreload:function(a,b){function e(){a.data("owl-loaded","loaded").removeClass("loading");b.removeAttr("data-src");"fade"===d.options.lazyEffect?b.fadeIn(400):b.show();"function"===typeof d.options.afterLazyLoad&&d.options.afterLazyLoad.apply(this,
39
+ [d.$elem])}function c(){f+=1;d.completeImg(b.get(0))||!0===k?e():100>=f?g.setTimeout(c,100):e()}var d=this,f=0,k;"DIV"===b.prop("tagName")?(b.css("background-image","url("+b.data("src")+")"),k=!0):b[0].src=b.data("src");c()},autoHeight:function(){function a(){var a=f(e.$owlItems[e.currentItem]).height();e.wrapperOuter.css("height",a+"px");e.wrapperOuter.hasClass("autoHeight")||g.setTimeout(function(){e.wrapperOuter.addClass("autoHeight")},0)}function b(){d+=1;e.completeImg(c.get(0))?a():100>=d?g.setTimeout(b,
40
+ 100):e.wrapperOuter.css("height","")}var e=this,c=f(e.$owlItems[e.currentItem]).find("img"),d;void 0!==c.get(0)?(d=0,b()):a()},completeImg:function(a){return!a.complete||"undefined"!==typeof a.naturalWidth&&0===a.naturalWidth?!1:!0},onVisibleItems:function(){var a;!0===this.options.addClassActive&&this.$owlItems.removeClass("active");this.visibleItems=[];for(a=this.currentItem;a<this.currentItem+this.options.items;a+=1)this.visibleItems.push(a),!0===this.options.addClassActive&&f(this.$owlItems[a]).addClass("active");
41
+ this.owl.visibleItems=this.visibleItems},transitionTypes:function(a){this.outClass="owl-"+a+"-out";this.inClass="owl-"+a+"-in"},singleItemTransition:function(){var a=this,b=a.outClass,e=a.inClass,c=a.$owlItems.eq(a.currentItem),d=a.$owlItems.eq(a.prevItem),f=Math.abs(a.positionsInArray[a.currentItem])+a.positionsInArray[a.prevItem],g=Math.abs(a.positionsInArray[a.currentItem])+a.itemWidth/2;a.isTransition=!0;a.$owlWrapper.addClass("owl-origin").css({"-webkit-transform-origin":g+"px","-moz-perspective-origin":g+
42
+ "px","perspective-origin":g+"px"});d.css({position:"relative",left:f+"px"}).addClass(b).on("webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend",function(){a.endPrev=!0;d.off("webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend");a.clearTransStyle(d,b)});c.addClass(e).on("webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend",function(){a.endCurrent=!0;c.off("webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend");a.clearTransStyle(c,e)})},clearTransStyle:function(a,
43
+ b){a.css({position:"",left:""}).removeClass(b);this.endPrev&&this.endCurrent&&(this.$owlWrapper.removeClass("owl-origin"),this.isTransition=this.endCurrent=this.endPrev=!1)},owlStatus:function(){this.owl={userOptions:this.userOptions,baseElement:this.$elem,userItems:this.$userItems,owlItems:this.$owlItems,currentItem:this.currentItem,prevItem:this.prevItem,visibleItems:this.visibleItems,isTouch:this.browser.isTouch,browser:this.browser,dragDirection:this.dragDirection}},clearEvents:function(){this.$elem.off(".owl owl mousedown.disableTextSelect");
44
+ f(k).off(".owl owl");f(g).off("resize",this.resizer)},unWrap:function(){0!==this.$elem.children().length&&(this.$owlWrapper.unwrap(),this.$userItems.unwrap().unwrap(),this.owlControls&&this.owlControls.remove());this.clearEvents();this.$elem.attr("style",this.$elem.data("owl-originalStyles")||"").attr("class",this.$elem.data("owl-originalClasses"))},destroy:function(){this.stop();g.clearInterval(this.checkVisible);this.unWrap();this.$elem.removeData()},reinit:function(a){a=f.extend({},this.userOptions,
45
+ a);this.unWrap();this.init(a,this.$elem)},addItem:function(a,b){var e;if(!a)return!1;if(0===this.$elem.children().length)return this.$elem.append(a),this.setVars(),!1;this.unWrap();e=void 0===b||-1===b?-1:b;e>=this.$userItems.length||-1===e?this.$userItems.eq(-1).after(a):this.$userItems.eq(e).before(a);this.setVars()},removeItem:function(a){if(0===this.$elem.children().length)return!1;a=void 0===a||-1===a?-1:a;this.unWrap();this.$userItems.eq(a).remove();this.setVars()}};f.fn.owlCarousel=function(a){return this.each(function(){if(!0===
46
+ f(this).data("owl-init"))return!1;f(this).data("owl-init",!0);var b=Object.create(l);b.init(a,this);f.data(this,"owlCarousel",b)})};f.fn.owlCarousel.options={items:5,itemsCustom:!1,itemsDesktop:[1199,4],itemsDesktopSmall:[979,3],itemsTablet:[768,2],itemsTabletSmall:!1,itemsMobile:[479,1],singleItem:!1,itemsScaleUp:!1,slideSpeed:200,paginationSpeed:800,rewindSpeed:1E3,autoPlay:!1,stopOnHover:!1,navigation:!1,navigationText:["prev","next"],rewindNav:!0,scrollPerPage:!1,pagination:!0,paginationNumbers:!1,
47
+ responsive:!0,responsiveRefreshRate:200,responsiveBaseWidth:g,baseClass:"owl-carousel",theme:"owl-theme",lazyLoad:!1,lazyFollow:!0,lazyEffect:"fade",autoHeight:!1,jsonPath:!1,jsonSuccess:!1,dragBeforeAnimFinish:!0,mouseDrag:!0,touchDrag:!0,addClassActive:!1,transitionStyle:!1,beforeUpdate:!1,afterUpdate:!1,beforeInit:!1,afterInit:!1,beforeMove:!1,afterMove:!1,afterAction:!1,startDragging:!1,afterLazyLoad:!1}})(jQuery,window,document);
inc/plugins/wp-events-manager-woo-payment.zip ADDED
Binary file
inc/widgets/class-wpems-widget-countdown.php ADDED
@@ -0,0 +1,174 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Adds Foo_Widget widget.
5
+ */
6
+ class WPEMS_Widget_Countdown extends WP_Widget {
7
+
8
+ /**
9
+ * Register widget with WordPress.
10
+ */
11
+ function __construct() {
12
+ parent::__construct(
13
+ 'wpems_widget_countdown', // Base ID
14
+ __( 'WP Event Countdown', 'wp-events-manager' ), // Name
15
+ array( 'description' => __( 'Countdown timer for event', 'wp-events-manager' ), ) // Args
16
+ );
17
+ }
18
+
19
+ /**
20
+ * Front-end display of widget.
21
+ *
22
+ * @see WP_Widget::widget()
23
+ *
24
+ * @param array $args Widget arguments.
25
+ * @param array $instance Saved values from database.
26
+ */
27
+ public function widget( $args, $instance ) {
28
+ echo $args['before_widget'];
29
+ if ( !empty( $instance['title'] ) ) {
30
+ echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ) . $args['after_title'];
31
+ }
32
+
33
+ unset( $instance['title'] );
34
+
35
+ $html = array();
36
+ $html[] = '[wp_event_countdown';
37
+
38
+ foreach ( $instance as $key => $value ) {
39
+ if ( strpos( $key, 'wp_' ) !== 0 )
40
+ continue;
41
+
42
+ $key = substr( $key, 3 );
43
+
44
+ if ( $key == 'events' ) {
45
+ $value = array_values( $value );
46
+ $html[] = ' event_id="' . implode( ',', $value ) . '"';
47
+ } else {
48
+ $html[] = $key . '="' . $value . '"';
49
+ }
50
+ }
51
+ $html[] = ']';
52
+ echo do_shortcode( implode( ' ', $html ) );
53
+ echo $args['after_widget'];
54
+ }
55
+
56
+ /**
57
+ * Back-end widget form.
58
+ *
59
+ * @see WP_Widget::form()
60
+ *
61
+ * @param array $instance Previously saved values from database.
62
+ */
63
+ public function form( $instance ) {
64
+ $title = !empty( $instance['title'] ) ? $instance['title'] : '';
65
+ $selected = !empty( $instance['wp_events'] ) ? $instance['wp_events'] : array();
66
+ $nav = isset( $instance['wp_navigation'] ) ? $instance['wp_navigation'] : false;
67
+ $pagination = isset( $instance['wp_pagination'] ) ? $instance['wp_pagination'] : false;
68
+ $slide = isset( $instance['wp_slide'] ) ? $instance['wp_slide'] : false;
69
+ ?>
70
+ <p>
71
+ <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label>
72
+ <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>">
73
+ </p>
74
+ <p>
75
+ <label for="<?php echo $this->get_field_id( 'wp_slide' ); ?>"><?php _e( 'Carousel Slide:' ); ?></label>
76
+ <input class="widefat" id="<?php echo $this->get_field_id( 'wp_slide' ); ?>" name="<?php echo $this->get_field_name( 'wp_slide' ); ?>" type="checkbox" value="true"<?php echo $slide == 'true' ? ' checked' : '' ?>>
77
+ </p>
78
+ <p>
79
+ <label for="<?php echo $this->get_field_id( 'wp_navigation' ); ?>"><?php _e( 'Navigation:' ); ?></label>
80
+ <input class="widefat" id="<?php echo $this->get_field_id( 'wp_navigation' ); ?>" name="<?php echo $this->get_field_name( 'wp_navigation' ); ?>" type="checkbox" value="true"<?php echo $nav == 'true' ? ' checked' : '' ?>>
81
+ </p>
82
+ <p>
83
+ <label for="<?php echo $this->get_field_id( 'wp_pagination' ); ?>"><?php _e( 'Pagiantion:' ); ?></label>
84
+ <input class="widefat" id="<?php echo $this->get_field_id( 'wp_pagination' ); ?>" name="<?php echo $this->get_field_name( 'wp_pagination' ); ?>" type="checkbox" value="true"<?php echo $pagination == 'true' ? ' checked' : '' ?>>
85
+ </p>
86
+ <p>
87
+ <label for="<?php echo $this->get_field_id( 'wp_events' ); ?>"><?php _e( 'Events:' ); ?></label>
88
+ <?php echo $this->events( $selected ) ?>
89
+ </p>
90
+ <?php
91
+ }
92
+
93
+ /**
94
+ * Sanitize widget form values as they are saved.
95
+ *
96
+ * @see WP_Widget::update()
97
+ *
98
+ * @param array $new_instance Values just sent to be saved.
99
+ * @param array $old_instance Previously saved values from database.
100
+ *
101
+ * @return array Updated safe values to be saved.
102
+ */
103
+ public function update( $new_instance, $old_instance ) {
104
+ $instance = array();
105
+ $instance['title'] = ( !empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : '';
106
+
107
+ $instance['wp_events'] = isset( $new_instance['wp_events'] ) ? $new_instance['wp_events'] : array();
108
+
109
+ $instance['wp_slide'] = isset( $new_instance['wp_slide'] ) ? $new_instance['wp_slide'] : false;
110
+
111
+ $instance['wp_navigation'] = isset( $new_instance['wp_navigation'] ) ? $new_instance['wp_navigation'] : false;
112
+
113
+ $instance['wp_pagination'] = isset( $new_instance['wp_pagination'] ) ? $new_instance['wp_pagination'] : false;
114
+ return $instance;
115
+ }
116
+
117
+ public function events( $selected ) {
118
+ $status = array(
119
+ 'tp-event-upcoming' => 'Upcoming',
120
+ 'tp-event-happenning' => 'Happening',
121
+ 'tp-event-expired' => 'Exprired'
122
+ );
123
+ $selected = array_map( 'intval', $selected );
124
+
125
+ $status = apply_filters( 'tp_event_widget_countdown', $status );
126
+ $i = 0;
127
+ ?>
128
+ <ul class="tp_event_widget_tab">
129
+ <?php foreach ( $status as $key => $label ): ?>
130
+
131
+ <li>
132
+ <a href="#" data-tab="<?php echo esc_attr( $key ) ?>" class="button<?php echo ( $i === 0 ) ? esc_attr( ' button-primary' ) : ''; ?>">
133
+ <?php printf( '%s', $label ) ?>
134
+ </a>
135
+ </li>
136
+ <?php $i ++ ?>
137
+ <?php endforeach; ?>
138
+ </ul>
139
+ <?php $i = 0; ?>
140
+ <?php
141
+ foreach ( $status as $stt => $label ) {
142
+ $args = array(
143
+ 'post_type' => 'tp_event',
144
+ 'post_status' => $stt,
145
+ 'posts_per_page' => - 1
146
+ );
147
+
148
+ $results = new WP_Query( $args );
149
+ if ( $results->have_posts() ):
150
+ ?>
151
+
152
+ <div class="tp_event_admin_widget<?php echo ( $i === 0 ) ? esc_attr( ' active' ) : ''; ?>" data-status="<?php echo esc_attr( $stt ) ?>">
153
+ <ul>
154
+ <?php while ( $results->have_posts() ): $results->the_post(); ?>
155
+
156
+ <li>
157
+ <p>
158
+ <input id="<?php echo esc_attr( $this->id . '-' . get_the_ID() ); ?>" type="checkbox" name="<?php echo $this->get_field_name( 'wp_events' ) ?>[]" value="<?php echo esc_attr( get_the_ID() ); ?>" <?php echo ( in_array( get_the_ID(), $selected ) ) ? 'checked="checked"' : ''; ?>/>
159
+ <label for="<?php echo esc_attr( $this->id . '-' . get_the_ID() ); ?>"><?php the_title(); ?></label>
160
+ </p>
161
+ </li>
162
+
163
+ <?php endwhile;
164
+ wp_reset_postdata(); ?>
165
+ </ul>
166
+ </div>
167
+
168
+ <?php
169
+ $i ++;
170
+ endif;
171
+ }
172
+ }
173
+
174
+ }
inc/wpems-core-functions.php ADDED
@@ -0,0 +1,1525 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ add_action( 'widgets_init', 'wpems_register_countdown_widget' );
4
+ if ( ! function_exists( 'wpems_register_countdown_widget' ) ) {
5
+
6
+ function wpems_register_countdown_widget() {
7
+ register_widget( 'WPEMS_Widget_Countdown' );
8
+ }
9
+
10
+ }
11
+
12
+ if ( ! function_exists( 'wpems_get_template' ) ) {
13
+
14
+ function wpems_get_template( $template_name, $args = array(), $template_path = '', $default_path = '' ) {
15
+ if ( $args && is_array( $args ) ) {
16
+ extract( $args );
17
+ }
18
+
19
+ $located = wpems_locate_template( $template_name, $template_path, $default_path );
20
+
21
+ if ( ! file_exists( $located ) ) {
22
+ _doing_it_wrong( __FUNCTION__, sprintf( '<code>%s</code> does not exist.', $located ), '2.1' );
23
+
24
+ return;
25
+ }
26
+ // Allow 3rd party plugin filter template file from their plugin
27
+ $located = apply_filters( 'wpems_get_template', $located, $template_name, $args, $template_path, $default_path );
28
+
29
+ do_action( 'tp_event_before_template_part', $template_name, $template_path, $located, $args );
30
+
31
+ include( $located );
32
+
33
+ do_action( 'tp_event_after_template_part', $template_name, $template_path, $located, $args );
34
+ }
35
+
36
+ }
37
+
38
+ if ( ! function_exists( 'wpems_template_path' ) ) {
39
+
40
+ function wpems_template_path() {
41
+ return apply_filters( 'wpems_template_path', 'wp-events-manager' );
42
+ }
43
+
44
+ }
45
+
46
+ if ( ! function_exists( 'wpems_get_template_part' ) ) {
47
+
48
+ function wpems_get_template_part( $slug, $name = '' ) {
49
+ $template = '';
50
+
51
+ // Look in yourtheme/slug-name.php and yourtheme/courses-manage/slug-name.php
52
+ if ( $name ) {
53
+ $template = locate_template( array(
54
+ "{$slug}-{$name}.php",
55
+ wpems_template_path() . "/{$slug}-{$name}.php"
56
+ ) );
57
+ }
58
+
59
+ // Get default slug-name.php
60
+ if ( ! $template && $name && file_exists( WPEMS_PATH . "/templates/{$slug}-{$name}.php" ) ) {
61
+ $template = WPEMS_PATH . "/templates/{$slug}-{$name}.php";
62
+ }
63
+
64
+ // If template file doesn't exist, look in yourtheme/slug.php and yourtheme/courses-manage/slug.php
65
+ if ( ! $template ) {
66
+ $template = locate_template( array( "{$slug}.php", wpems_template_path() . "{$slug}.php" ) );
67
+ }
68
+
69
+ // Allow 3rd party plugin filter template file from their plugin
70
+ if ( $template ) {
71
+ $template = apply_filters( 'wpems_get_template_part', $template, $slug, $name );
72
+ }
73
+ if ( $template && file_exists( $template ) ) {
74
+ load_template( $template, false );
75
+ }
76
+
77
+ return $template;
78
+ }
79
+
80
+ }
81
+
82
+ if ( ! function_exists( 'wpems_get_template_content' ) ) {
83
+ function wpems_get_template_content( $template_name, $args = array(), $template_path = '', $default_path = '' ) {
84
+ ob_start();
85
+ wpems_get_template( $template_name, $args, $template_path, $default_path );
86
+
87
+ return ob_get_clean();
88
+ }
89
+ }
90
+
91
+ if ( ! function_exists( 'wpems_locate_template' ) ) {
92
+
93
+ function wpems_locate_template( $template_name, $template_path = '', $default_path = '' ) {
94
+
95
+ if ( ! $template_path ) {
96
+ $template_path = wpems_template_path();
97
+ }
98
+
99
+ if ( ! $default_path ) {
100
+ $default_path = WPEMS_PATH . '/templates/';
101
+ }
102
+
103
+ $template = null;
104
+ // Look within passed path within the theme - this is priority
105
+ $template = locate_template(
106
+ array(
107
+ trailingslashit( $template_path ) . $template_name,
108
+ $template_name
109
+ )
110
+ );
111
+ // Get default template
112
+ if ( ! $template ) {
113
+ $template = $default_path . $template_name;
114
+ }
115
+
116
+ // Return what we found
117
+ return apply_filters( 'wpems_locate_template', $template, $template_name, $template_path );
118
+ }
119
+
120
+ }
121
+ if ( ! function_exists( 'is_event_taxonomy' ) ) {
122
+
123
+ /**
124
+ * Returns true when viewing a room taxonomy archive.
125
+ * @return bool
126
+ */
127
+ function is_event_taxonomy() {
128
+ return is_tax( get_object_taxonomies( 'tp_event' ) );
129
+ }
130
+
131
+ }
132
+
133
+ /**
134
+ * template hook function
135
+ */
136
+ add_filter( 'the_content', 'wpems_the_content' );
137
+ if ( ! function_exists( 'wpems_the_content' ) ) {
138
+
139
+ function wpems_the_content( $content ) {
140
+ return do_shortcode( $content );
141
+ }
142
+
143
+ }
144
+ add_filter( 'the_post', 'wpems_add_property_countdown' );
145
+ if ( ! function_exists( 'wpems_add_property_countdown' ) ) {
146
+
147
+ /**
148
+ * add property inside the loop
149
+ *
150
+ * @param [type] $post [description]
151
+ *
152
+ * @return [type] [description]
153
+ */
154
+ function wpems_add_property_countdown( $post ) {
155
+ if ( $post->post_type !== 'tp_event' ) {
156
+ return $post;
157
+ }
158
+ $post_id = $post->ID;
159
+ $start = get_post_meta( $post_id, 'tp_event_date_start', true );
160
+ $end = get_post_meta( $post_id, 'tp_event_date_end', true );
161
+
162
+ $post->event_start = null;
163
+ if ( $start ) {
164
+ $post->event_start = date( 'Y-m-d H:i', strtotime( $post->tp_event_date_start . ' ' . $post->tp_event_time_start ) );
165
+ }
166
+
167
+ $post->event_end = null;
168
+ if ( $end ) {
169
+ $post->event_end = date( 'Y-m-d H:i', strtotime( $post->tp_event_date_end . ' ' . $post->tp_event_time_end ) );
170
+ }
171
+
172
+ $location = get_post_meta( $post->ID, 'wpems_event_location', true );
173
+ $post->location = $location;
174
+
175
+ return $post;
176
+ }
177
+
178
+ /**
179
+ * get event start datetime
180
+ *
181
+ * @param string $format [description]
182
+ *
183
+ * @return [type] [description]
184
+ */
185
+ function wpems_event_start( $format = 'Y-m-d H:i', $post = null, $l10 = true ) {
186
+ if ( ! $post ) {
187
+ $post = get_post();
188
+ }
189
+
190
+ if ( $l10 ) {
191
+ return date_i18n( $format, strtotime( $post->tp_event_date_start . ' ' . $post->tp_event_time_start ) );
192
+ } else {
193
+ return date( $format, strtotime( $post->tp_event_date_start . ' ' . $post->tp_event_time_start ) );
194
+ }
195
+ }
196
+
197
+ /**
198
+ * get event end datetime same as function
199
+ *
200
+ * @param string $format
201
+ *
202
+ * @return
203
+ */
204
+ function wpems_event_end( $format = 'Y-m-d H:i', $post = null, $l10 = true ) {
205
+ if ( ! $post ) {
206
+ $post = get_post();
207
+ }
208
+
209
+ if ( $l10 ) {
210
+ return date_i18n( $format, strtotime( $post->tp_event_date_end . ' ' . $post->tp_event_time_end ) );
211
+ } else {
212
+ return date( $format, strtotime( $post->tp_event_date_end . ' ' . $post->tp_event_time_end ) );
213
+ }
214
+ }
215
+
216
+ /**
217
+ * get time event countdown
218
+ *
219
+ * @param string $format
220
+ *
221
+ * @return string
222
+ */
223
+ function wpems_get_time( $format = 'Y-m-d H:i', $post = null, $l10 = true ) {
224
+ $current_time = current_time( 'timestamp' );
225
+ $start = wpems_event_start( 'Y-m-d H:i', $post );
226
+ $end = wpems_event_end( 'Y-m-d H:i', $post );
227
+ if ( $current_time < strtotime( $start ) ) {
228
+ return wpems_event_start( $format, $post, $l10 );
229
+ } else {
230
+ return wpems_event_end( $format, $post, $l10 );
231
+ }
232
+ }
233
+
234
+ /**
235
+ * get event location
236
+ *
237
+ * @param string $format
238
+ *
239
+ * @return string
240
+ */
241
+ function wpems_event_location( $post = null ) {
242
+ if ( ! $post ) {
243
+ $post = get_post();
244
+ }
245
+
246
+ return get_post_meta( $post->ID, 'tp_event_location', true );
247
+ }
248
+
249
+ /**
250
+ * get event booking note
251
+ *
252
+ * @param string $format
253
+ *
254
+ * @return string
255
+ */
256
+ function wpems_get_booking_note( $post = null ) {
257
+ if ( ! $post ) {
258
+ $post = get_post();
259
+ }
260
+
261
+ return get_post_meta( $post->ID, 'ea_booking_note', true );
262
+ }
263
+
264
+ /**
265
+ * get event location map
266
+ */
267
+ function wpems_get_location_map() {
268
+ if ( ! wpems_get_option( 'google_map_api_key' ) || ! wpems_event_location() ) {
269
+ return;
270
+ }
271
+
272
+ $map_args = apply_filters( 'tp_event_filter_event_location_map', array(
273
+ 'height' => '300px',
274
+ 'width' => '100%',
275
+ 'map_id' => md5( wpems_event_location() ),
276
+ 'map_data' => array(
277
+ 'address' => wpems_event_location(),
278
+ 'zoom' => 14,
279
+ 'scroll-zoom' => true,
280
+ 'draggable' => false,
281
+ 'api-key' => wpems_get_option( 'google_map_api_key' ),
282
+ 'marker-icon' => apply_filters( 'tp-event-map-marker', WPEMS_ASSETS_URI . 'images/map-marker.png' ),
283
+ 'marker-at-center' => true,
284
+ )
285
+ ) );
286
+
287
+ ?>
288
+ <div class="event-google-map-canvas" style="height: <?php echo $map_args['height']; ?>; width: <?php echo $map_args['width']; ?>" id="map-canvas-<?php echo $map_args['map_id']; ?>"
289
+ <?php foreach ( $map_args['map_data'] as $key => $val ) : ?>
290
+ <?php if ( ! empty( $val ) ) : ?>
291
+ data-<?php echo esc_attr( $key ) . '="' . esc_attr( $val ) . '"' ?>
292
+ <?php endif ?>
293
+ <?php endforeach; ?>
294
+ ></div>
295
+ <?php
296
+ }
297
+
298
+ }
299
+ add_action( 'tp_event_before_main_content', 'wpems_before_main_content' );
300
+ if ( ! function_exists( 'wpems_before_main_content' ) ) {
301
+
302
+ function wpems_before_main_content() {
303
+
304
+ }
305
+
306
+ }
307
+
308
+ add_action( 'tp_event_after_main_content', 'wpems_after_main_content' );
309
+ if ( ! function_exists( 'wpems_after_main_content' ) ) {
310
+
311
+ function wpems_after_main_content() {
312
+
313
+ }
314
+
315
+ }
316
+
317
+ add_action( 'tp_event_before_single_event', 'wpems_before_single_event' );
318
+ if ( ! function_exists( 'wpems_before_single_event' ) ) {
319
+
320
+ function wpems_before_single_event() {
321
+
322
+ }
323
+
324
+ }
325
+
326
+ add_action( 'tp_event_after_single_event', 'wpems_after_single_event' );
327
+ if ( ! function_exists( 'wpems_after_single_event' ) ) {
328
+
329
+ function wpems_after_single_event() {
330
+
331
+ }
332
+
333
+ }
334
+
335
+ /* template hook */
336
+ add_action( 'tp_event_single_event_title', 'wpems_single_event_title' );
337
+ if ( ! function_exists( 'wpems_single_event_title' ) ) {
338
+
339
+ function wpems_single_event_title() {
340
+ wpems_get_template( 'loop/title.php' );
341
+ }
342
+
343
+ }
344
+
345
+ add_action( 'tp_event_single_event_thumbnail', 'wpems_single_event_thumbnail' );
346
+ if ( ! function_exists( 'wpems_single_event_thumbnail' ) ) {
347
+
348
+ function wpems_single_event_thumbnail() {
349
+ wpems_get_template( 'loop/thumbnail.php' );
350
+ }
351
+
352
+ }
353
+
354
+ add_action( 'tp_event_loop_event_countdown', 'wpems_loop_event_countdown' );
355
+ if ( ! function_exists( 'wpems_loop_event_countdown' ) ) {
356
+
357
+ function wpems_loop_event_countdown() {
358
+ wpems_get_template( 'loop/countdown.php' );
359
+ }
360
+
361
+ }
362
+
363
+ add_action( 'tp_event_single_event_content', 'wpems_single_event_content' );
364
+ if ( ! function_exists( 'wpems_single_event_content' ) ) {
365
+
366
+ function wpems_single_event_content() {
367
+ if ( ! is_singular( 'tp_event' ) || ! in_the_loop() ) {
368
+ wpems_get_template( 'loop/excerpt.php' );
369
+ } else {
370
+ wpems_get_template( 'loop/content.php' );
371
+ }
372
+ }
373
+
374
+ }
375
+
376
+ add_action( 'tp_event_after_single_event', 'wpems_single_event_register' );
377
+ if ( ! function_exists( 'wpems_single_event_register' ) ) {
378
+
379
+ function wpems_single_event_register() {
380
+ wpems_get_template( 'loop/register.php' );
381
+ }
382
+
383
+ }
384
+
385
+ add_action( 'tp_event_loop_event_location', 'wpems_loop_event_location' );
386
+ if ( ! function_exists( 'wpems_loop_event_location' ) ) {
387
+
388
+ function wpems_loop_event_location() {
389
+ wpems_get_template( 'loop/location.php' );
390
+ }
391
+
392
+ }
393
+
394
+ // l18n
395
+ if ( ! function_exists( 'wpems_l18n' ) ) {
396
+ function wpems_l18n() {
397
+ return apply_filters( 'thimpress_event_l18n', array(
398
+ 'gmt_offset' => esc_js( get_option( 'gmt_offset' ) ),
399
+ 'current_time' => esc_js( date( 'M j, Y H:i:s O', strtotime( current_time( 'Y-m-d H:i' ) ) ) ),
400
+ 'l18n' => array(
401
+ 'labels' => array(
402
+ __( 'Years', 'wp-events-manager' ),
403
+ __( 'Months', 'wp-events-manager' ),
404
+ __( 'Weeks', 'wp-events-manager' ),
405
+ __( 'Days', 'wp-events-manager' ),
406
+ __( 'Hours', 'wp-events-manager' ),
407
+ __( 'Minutes', 'wp-events-manager' ),
408
+ __( 'Seconds', 'wp-events-manager' ),
409
+ ),
410
+ 'labels1' => array(
411
+ __( 'Year', 'wp-events-manager' ),
412
+ __( 'Month', 'wp-events-manager' ),
413
+ __( 'Week', 'wp-events-manager' ),
414
+ __( 'Day', 'wp-events-manager' ),
415
+ __( 'Hour', 'wp-events-manager' ),
416
+ __( 'Minute', 'wp-events-manager' ),
417
+ __( 'Second', 'wp-events-manager' ),
418
+ )
419
+ ),
420
+ 'ajaxurl' => admin_url( 'admin-ajax.php' ),
421
+ 'something_wrong' => __( 'Something went wrong', 'wp-events-manager' ),
422
+ 'register_button' => wp_create_nonce( 'event-auth-register-nonce' )
423
+ ) );
424
+ }
425
+ }
426
+
427
+ if ( ! function_exists( 'wpems_get_option' ) ) {
428
+
429
+ /**
430
+ * wpems_get_option
431
+ *
432
+ * @param type $name
433
+ * @param type $default
434
+ *
435
+ * @return type
436
+ */
437
+ function wpems_get_option( $name, $default = null ) {
438
+ if ( strpos( $name, 'thimpress_events_' ) !== 0 ) {
439
+ $name = 'thimpress_events_' . $name;
440
+ }
441
+
442
+ return get_option( $name, $default );
443
+ }
444
+
445
+ }
446
+
447
+ if ( ! function_exists( 'wpems_update_option' ) ) {
448
+
449
+ /**
450
+ * wpems_get_option
451
+ *
452
+ * @param type $name
453
+ * @param type $default
454
+ *
455
+ * @return type
456
+ */
457
+ function wpems_update_option( $name, $default = null ) {
458
+ return update_option( 'thimpress_events_' . $name, $default );
459
+ }
460
+
461
+ }
462
+
463
+ /**
464
+ * Create Wordpress Page
465
+ */
466
+ if ( ! function_exists( 'wpems_create_page' ) ) {
467
+ function wpems_create_page( $slug, $option = '', $page_title = '', $page_content = '', $post_parent = 0 ) {
468
+ global $wpdb;
469
+
470
+ $option_value = wpems_get_option( $option );
471
+
472
+ if ( $option_value > 0 ) {
473
+ $page_object = get_post( $option_value );
474
+
475
+ if ( $page_object && 'page' === $page_object->post_type && ! in_array( $page_object->post_status, array(
476
+ 'pending',
477
+ 'trash',
478
+ 'future',
479
+ 'auto-draft'
480
+ ) )
481
+ ) {
482
+ // Valid page is already in place
483
+ return $page_object->ID;
484
+ }
485
+ }
486
+
487
+ if ( strlen( $page_content ) > 0 ) {
488
+ // Search for an existing page with the specified page content (typically a shortcode)
489
+ $valid_page_found = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_type='page' AND post_status NOT IN ( 'pending', 'trash', 'future', 'auto-draft' ) AND post_content LIKE %s LIMIT 1;", "%{$page_content}%" ) );
490
+ } else {
491
+ // Search for an existing page with the specified page slug
492
+ $valid_page_found = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_type='page' AND post_status NOT IN ( 'pending', 'trash', 'future', 'auto-draft' ) AND post_name = %s LIMIT 1;", $slug ) );
493
+ }
494
+
495
+ $valid_page_found = apply_filters( 'event_auth_create_page_id', $valid_page_found, $slug, $page_content );
496
+
497
+ if ( $valid_page_found ) {
498
+ if ( $option ) {
499
+ wpems_update_option( $option, $valid_page_found );
500
+ }
501
+
502
+ return $valid_page_found;
503
+ }
504
+
505
+ // Search for a matching valid trashed page
506
+ if ( strlen( $page_content ) > 0 ) {
507
+ // Search for an existing page with the specified page content (typically a shortcode)
508
+ $trashed_page_found = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_type='page' AND post_status = 'trash' AND post_content LIKE %s LIMIT 1;", "%{$page_content}%" ) );
509
+ } else {
510
+ // Search for an existing page with the specified page slug
511
+ $trashed_page_found = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_type='page' AND post_status = 'trash' AND post_name = %s LIMIT 1;", $slug ) );
512
+ }
513
+
514
+ if ( $trashed_page_found ) {
515
+ $page_id = $trashed_page_found;
516
+ $page_data = array(
517
+ 'ID' => $page_id,
518
+ 'post_status' => 'publish',
519
+ );
520
+ wp_update_post( $page_data );
521
+ } else {
522
+ $page_data = array(
523
+ 'post_status' => 'publish',
524
+ 'post_type' => 'page',
525
+ 'post_author' => 1,
526
+ 'post_name' => $slug,
527
+ 'post_title' => $page_title,
528
+ 'post_content' => $page_content,
529
+ 'post_parent' => $post_parent,
530
+ 'comment_status' => 'closed'
531
+ );
532
+ $page_id = wp_insert_post( $page_data );
533
+ }
534
+
535
+ if ( $option ) {
536
+ wpems_update_option( $option, $page_id );
537
+ }
538
+
539
+ return $page_id;
540
+ }
541
+ }
542
+
543
+ if ( ! function_exists( 'wpems_get_page_id' ) ) {
544
+
545
+ function wpems_get_page_id( $name = null ) {
546
+ $prefix = 'thimpress_events_';
547
+
548
+ return apply_filters( 'tp_event_get_page_id', wpems_get_option( $prefix . $name . '_page_id' ) );
549
+ }
550
+
551
+ }
552
+
553
+ add_action( 'tp_event_schedule_status', 'wpems_schedule_update_status', 10, 2 );
554
+ if ( ! function_exists( 'wpems_schedule_update_status' ) ) {
555
+
556
+ function wpems_schedule_update_status( $post_id, $status ) {
557
+ if ( $fo = fopen( ABSPATH . '/text.txt', 'a' ) ) {
558
+ fwrite( $fo, $post_id );
559
+ fclose( $fo );
560
+ }
561
+ wp_clear_scheduled_hook( 'tp_event_schedule_status', array( $post_id, $status ) );
562
+ $old_status = get_post_status( $post_id );
563
+
564
+ if ( $old_status !== $status && in_array( $status, array(
565
+ 'tp-event-upcoming',
566
+ 'tp-event-happenning',
567
+ 'tp-event-expired'
568
+ ) )
569
+ ) {
570
+ $post = wpems_add_property_countdown( get_post( $post_id ) );
571
+
572
+ $current_time = strtotime( current_time( 'Y-m-d H:i' ) );
573
+ $event_start = strtotime( $post->event_start );
574
+ $event_end = strtotime( $post->event_end );
575
+
576
+ if ( $status === 'tp-event-expired' && $current_time < $event_end ) {
577
+ return;
578
+ }
579
+
580
+ if ( $status === 'tp-event-happenning' && $current_time < $event_start ) {
581
+ return;
582
+ }
583
+
584
+ wp_update_post( array( 'ID' => $post_id, 'post_status' => $status ) );
585
+ }
586
+ }
587
+ }
588
+
589
+ if ( ! function_exists( 'wpems_login_url' ) ) {
590
+
591
+ function wpems_login_url() {
592
+ $url = get_permalink( wpems_get_page_id( 'login' ) );
593
+ if ( ! $url ) {
594
+ $url = wp_login_url();
595
+ }
596
+
597
+ return apply_filters( 'tp_event_login_url', $url );
598
+ }
599
+
600
+ }
601
+
602
+ if ( ! function_exists( 'wpems_register_url' ) ) {
603
+
604
+ function wpems_register_url() {
605
+ $url = get_permalink( wpems_get_page_id( 'register' ) );
606
+ if ( ! $url ) {
607
+ $url = wp_registration_url();
608
+ }
609
+
610
+ return apply_filters( 'tp_event_register_url', $url );
611
+ }
612
+
613
+ }
614
+
615
+ if ( ! function_exists( 'wpems_forgot_password_url' ) ) {
616
+
617
+ function wpems_forgot_password_url() {
618
+ $url = get_permalink( wpems_get_page_id( 'forgot_password' ) );
619
+ if ( ! $url ) {
620
+ $url = wp_lostpassword_url();
621
+ }
622
+
623
+ return apply_filters( 'tp_event_forgot_password_url', $url );
624
+ }
625
+
626
+ }
627
+
628
+
629
+ if ( ! function_exists( 'wpems_reset_password_url' ) ) {
630
+
631
+ function wpems_reset_password_url() {
632
+ $url = get_permalink( wpems_get_page_id( 'reset_password' ) );
633
+ if ( ! $url ) {
634
+ $url = add_query_arg( 'action', 'rp', wp_login_url() );
635
+ }
636
+
637
+ return apply_filters( 'tp_event_reset_password_url', $url );
638
+ }
639
+
640
+ }
641
+
642
+ if ( ! function_exists( 'wpems_account_url' ) ) {
643
+
644
+ function wpems_account_url() {
645
+ $url = get_permalink( wpems_get_page_id( 'account' ) );
646
+ if ( ! $url ) {
647
+ $url = home_url();
648
+ }
649
+
650
+ return apply_filters( 'wpems_account_url', $url );
651
+ }
652
+
653
+ }
654
+
655
+ if ( ! function_exists( 'wpems_get_current_url' ) ) {
656
+
657
+ function wpems_get_current_url() {
658
+ return ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
659
+ }
660
+
661
+ }
662
+
663
+ if ( ! function_exists( 'wpems_add_notice' ) ) {
664
+ function wpems_add_notice( $type = 'error', $msg = '' ) {
665
+ if ( ! $msg ) {
666
+ return;
667
+ }
668
+ $notices = WPEMS()->_session->get( 'notices', array() );
669
+ if ( ! isset( $notices[ $type ] ) ) {
670
+ $notices[ $type ] = array();
671
+ }
672
+ $notices[ $type ][] = $msg;
673
+ WPEMS()->_session->set( 'notices', $notices );
674
+ }
675
+
676
+ }
677
+
678
+ if ( ! function_exists( 'wpems_get_notice' ) ) {
679
+
680
+ function wpems_get_notice( $type = null ) {
681
+ if ( $type ) {
682
+ $notices = WPEMS()->_session->get( 'notices', array() );
683
+
684
+ return isset( $notices[ $type ] ) ? $notices[ $type ] : array();
685
+ }
686
+ }
687
+
688
+ }
689
+
690
+ if ( ! function_exists( 'wpems_has_notice' ) ) {
691
+
692
+ function wpems_has_notice( $type = null ) {
693
+ if ( $type ) {
694
+ $notices = WPEMS()->_session->get( 'notices', array() );
695
+
696
+ return isset( $notices[ $type ] );
697
+ }
698
+ }
699
+
700
+ }
701
+
702
+ if ( ! function_exists( 'wpems_print_notices' ) ) {
703
+
704
+ function wpems_print_notices() {
705
+ if ( $notices = WPEMS()->_session->get( 'notices', array() ) ) {
706
+ ob_start();
707
+ wpems_get_template( 'notices/messages.php', array( 'messages' => $notices ) );
708
+ $html = ob_get_clean();
709
+ echo $html;
710
+ WPEMS()->_session->set( 'notices', array() );
711
+ }
712
+
713
+ }
714
+
715
+ }
716
+
717
+ if ( ! function_exists( 'wpems_print_notice' ) ) {
718
+
719
+ function wpems_print_notice( $type = 'success', $message ) {
720
+ if ( 'success' === $type ) {
721
+ $message = apply_filters( 'tp_event_add_message', $message );
722
+ }
723
+
724
+ wpems_get_template( "notices/{$type}.php", array(
725
+ 'messages' => array( apply_filters( 'tp_event_add_message_' . $type, $message ) )
726
+ ) );
727
+ }
728
+
729
+ }
730
+
731
+ if ( ! function_exists( 'wpems_get_currency' ) ) {
732
+
733
+ function wpems_get_currency() {
734
+ return apply_filters( 'tp_event_get_currency', wpems_get_option( 'currency', 'USD' ) );
735
+ }
736
+
737
+ }
738
+
739
+ /**
740
+ * Get the list of common currencies
741
+ *
742
+ * @return mixed
743
+ */
744
+ if ( ! function_exists( 'wpems_currencies' ) ) {
745
+
746
+ function wpems_currencies() {
747
+ $currencies = array(
748
+ 'AED' => 'United Arab Emirates dirham (د.إ)',
749
+ 'AUD' => 'Australian dollars ($)',
750
+ 'BDT' => 'Bangladeshi taka (৳&nbsp;)',
751
+ 'BRL' => 'Brazilian real (R$)',
752
+ 'BGN' => 'Bulgarian lev (лв.)',
753
+ 'CAD' => 'Canadian dollar ($)',
754
+ 'CLP' => 'Chilean peso ($)',
755
+ 'CNY' => 'Chinese yuan (¥)',
756
+ 'COP' => 'Colombian peso ($)',
757
+ 'CZK' => 'Czech koruna (Kč)',
758
+ 'DKK' => 'Danish krone (kr.)',
759
+ 'DOP' => 'Dominican peso (RD$)',
760
+ 'EUR' => 'Euro (€)',
761
+ 'HKD' => 'Hong Kong dollar ($)',
762
+ 'HRK' => 'Croatia kuna (Kn)',
763
+ 'HUF' => 'Hungarian forint (Ft)',
764
+ 'ISK' => 'Icelandic krona (Kr.)',
765
+ 'IDR' => 'Indonesia rupiah (Rp)',
766
+ 'INR' => 'Indian rupee (Rs.)',
767
+ 'NPR' => 'Nepali rupee (Rs.)',
768
+ 'ILS' => 'Israeli shekel (₪)',
769
+ 'JPY' => 'Japanese yen (¥)',
770
+ 'KIP' => 'Lao kip (₭)',
771
+ 'KRW' => 'South Korean won (₩)',
772
+ 'MYR' => 'Malaysian ringgit (RM)',
773
+ 'MXN' => 'Mexican peso ($)',
774
+ 'NGN' => 'Nigerian naira (₦)',
775
+ 'NOK' => 'Norwegian krone (kr)',
776
+ 'NZD' => 'New Zealand dollar ($)',
777
+ 'PYG' => 'Paraguayan guaraní (₲)',
778
+ 'PHP' => 'Philippine peso (₱)',
779
+ 'PLN' => 'Polish zloty (zł)',
780
+ 'GBP' => 'Pound sterling (£)',
781
+ 'RON' => 'Romanian leu (lei)',
782
+ 'RUB' => 'Russian ruble (руб.)',
783
+ 'SGD' => 'Singapore dollar ($)',
784
+ 'ZAR' => 'South African rand (R)',
785
+ 'SEK' => 'Swedish krona (kr)',
786
+ 'CHF' => 'Swiss franc (CHF)',
787
+ 'TWD' => 'Taiwan New dollar (NT$)',
788
+ 'THB' => 'Thai baht (฿)',
789
+ 'TRY' => 'Turkish lira (₺)',
790
+ 'USD' => 'United States dollar ($)',
791
+ 'VND' => 'Vietnamese đồng (₫)',
792
+ 'EGP' => 'Egyptian pound (EGP)'
793
+ );
794
+
795
+ return apply_filters( 'wpems_currencies', $currencies );
796
+ }
797
+
798
+ }
799
+
800
+ if ( ! function_exists( 'wpems_get_currency_symbol' ) ) {
801
+
802
+ function wpems_get_currency_symbol( $currency = '' ) {
803
+ if ( ! $currency ) {
804
+ $currency = wpems_get_currency();
805
+ }
806
+
807
+ switch ( $currency ) {
808
+ case 'AED' :
809
+ $currency_symbol = 'د.إ';
810
+ break;
811
+ case 'AUD' :
812
+ case 'CAD' :
813
+ case 'CLP' :
814
+ case 'COP' :
815
+ case 'HKD' :
816
+ case 'MXN' :
817
+ case 'NZD' :
818
+ case 'SGD' :
819
+ case 'USD' :
820
+ $currency_symbol = '&#36;';
821
+ break;
822
+ case 'BDT':
823
+ $currency_symbol = '&#2547;&nbsp;';
824
+ break;
825
+ case 'BGN' :
826
+ $currency_symbol = '&#1083;&#1074;.';
827
+ break;
828
+ case 'BRL' :
829
+ $currency_symbol = '&#82;&#36;';
830
+ break;
831
+ case 'CHF' :
832
+ $currency_symbol = '&#67;&#72;&#70;';
833
+ break;
834
+ case 'CNY' :
835
+ case 'JPY' :
836
+ case 'RMB' :
837
+ $currency_symbol = '&yen;';
838
+ break;
839
+ case 'CZK' :
840
+ $currency_symbol = '&#75;&#269;';
841
+ break;
842
+ case 'DKK' :
843
+ $currency_symbol = 'kr.';
844
+ break;
845
+ case 'DOP' :
846
+ $currency_symbol = 'RD&#36;';
847
+ break;
848
+ case 'EGP' :
849
+ $currency_symbol = 'EGP';
850
+ break;
851
+ case 'EUR' :
852
+ $currency_symbol = '&euro;';
853
+ break;
854
+ case 'GBP' :
855
+ $currency_symbol = '&pound;';
856
+ break;
857
+ case 'HRK' :
858
+ $currency_symbol = 'Kn';
859
+ break;
860
+ case 'HUF' :
861
+ $currency_symbol = '&#70;&#116;';
862
+ break;
863
+ case 'IDR' :
864
+ $currency_symbol = 'Rp';
865
+ break;
866
+ case 'ILS' :
867
+ $currency_symbol = '&#8362;';
868
+ break;
869
+ case 'INR' :
870
+ $currency_symbol = 'Rs.';
871
+ break;
872
+ case 'ISK' :
873
+ $currency_symbol = 'Kr.';
874
+ break;
875
+ case 'KIP' :
876
+ $currency_symbol = '&#8365;';
877
+ break;
878
+ case 'KRW' :
879
+ $currency_symbol = '&#8361;';
880
+ break;
881
+ case 'MYR' :
882
+ $currency_symbol = '&#82;&#77;';
883
+ break;
884
+ case 'NGN' :
885
+ $currency_symbol = '&#8358;';
886
+ break;
887
+ case 'NOK' :
888
+ $currency_symbol = '&#107;&#114;';
889
+ break;
890
+ case 'NPR' :
891
+ $currency_symbol = 'Rs.';
892
+ break;
893
+ case 'PHP' :
894
+ $currency_symbol = '&#8369;';
895
+ break;
896
+ case 'PLN' :
897
+ $currency_symbol = '&#122;&#322;';
898
+ break;
899
+ case 'PYG' :
900
+ $currency_symbol = '&#8370;';
901
+ break;
902
+ case 'RON' :
903
+ $currency_symbol = 'lei';
904
+ break;
905
+ case 'RUB' :
906
+ $currency_symbol = '&#1088;&#1091;&#1073;.';
907
+ break;
908
+ case 'SEK' :
909
+ $currency_symbol = '&#107;&#114;';
910
+ break;
911
+ case 'THB' :
912
+ $currency_symbol = '&#3647;';
913
+ break;
914
+ case 'TRY' :
915
+ $currency_symbol = '&#8378;';
916
+ break;
917
+ case 'TWD' :
918
+ $currency_symbol = '&#78;&#84;&#36;';
919
+ break;
920
+ case 'UAH' :
921
+ $currency_symbol = '&#8372;';
922
+ break;
923
+ case 'VND' :
924
+ $currency_symbol = '&#8363;';
925
+ break;
926
+ case 'ZAR' :
927
+ $currency_symbol = '&#82;';
928
+ break;
929
+ default :
930
+ $currency_symbol = $currency;
931
+ break;
932
+ }
933
+
934
+ return apply_filters( 'tp_event_currency_symbol', $currency_symbol, $currency );
935
+ }
936
+
937
+ }
938
+
939
+ if ( ! function_exists( 'wpems_format_price' ) ) {
940
+ function wpems_format_price( $price, $with_currency = true ) {
941
+ $position = wpems_get_option( 'currency_position', 'left_space' );
942
+ $price_thousands_separator = wpems_get_option( 'currency_thousand', '.' );
943
+ $price_decimals_separator = wpems_get_option( 'currency_separator', ',' );
944
+ $price_number_of_decimal = wpems_get_option( 'currency_num_decimal', 2 );
945
+ if ( ! is_numeric( $price ) ) {
946
+ $price = 0;
947
+ }
948
+
949
+ $price = apply_filters( 'tp_event_price_switcher', $price );
950
+ $before = $after = '';
951
+ if ( $with_currency ) {
952
+ if ( gettype( $with_currency ) != 'string' ) {
953
+ $currency = wpems_get_currency_symbol();
954
+ } else {
955
+ $currency = wpems_get_currency_symbol( $with_currency );
956
+ }
957
+
958
+ switch ( $position ) {
959
+ default:
960
+ $before = $currency;
961
+ break;
962
+ case 'left_space':
963
+ $before = $currency . ' ';
964
+ break;
965
+ case 'right':
966
+ $after = $currency;
967
+ break;
968
+ case 'right_space':
969
+ $after = ' ' . $currency;
970
+ }
971
+ }
972
+
973
+ $price_format = $before
974
+ . number_format(
975
+ $price, $price_number_of_decimal, $price_decimals_separator, $price_thousands_separator
976
+ ) . $after;
977
+
978
+ return apply_filters( 'tp_event_price_format', $price_format, $price, $with_currency );
979
+ }
980
+ }
981
+
982
+ if ( ! function_exists( 'wpems_payment_gateways' ) ) {
983
+
984
+ // List payment gateways
985
+ function wpems_payment_gateways() {
986
+ return WPEMS_Payment_Gateways::instance()->get_payment_gateways();
987
+
988
+ }
989
+ }
990
+
991
+ if ( ! function_exists( 'wpems_gateways_enable' ) ) {
992
+
993
+ // List payment gateways
994
+ function wpems_gateways_enable() {
995
+ return WPEMS_Payment_Gateways::instance()->get_payment_gateways_enable();
996
+
997
+ }
998
+ }
999
+
1000
+ if ( ! function_exists( 'wpems_get_payment_title' ) ) {
1001
+
1002
+ // List payments gateway title
1003
+ function wpems_get_payment_title( $payment_id = null ) {
1004
+ $payments = wpems_payment_gateways();
1005
+
1006
+ return isset( $payments[ $payment_id ] ) ? $payments[ $payment_id ]->title : '';
1007
+ }
1008
+
1009
+ }
1010
+
1011
+ if ( ! function_exists( 'wpems_format_ID' ) ) {
1012
+
1013
+ // format ID
1014
+ function wpems_format_ID( $id = null ) {
1015
+ return '#' . $id;
1016
+ }
1017
+
1018
+ }
1019
+
1020
+ if ( ! function_exists( 'wpems_booking_status' ) ) {
1021
+
1022
+ // booking status title
1023
+ function wpems_booking_status( $id = null ) {
1024
+ if ( $id ) {
1025
+ $status = get_post_status( $id );
1026
+ if ( strpos( $status, 'ea-' ) === 0 ) {
1027
+ $status = str_replace( 'ea-', '', $status );
1028
+ }
1029
+
1030
+ $return = '';
1031
+ switch ( $status ) {
1032
+ case 'cancelled':
1033
+ # code...
1034
+ $return = sprintf( __( '<span class="event_booking_status cancelled">%s</span>', 'wp-events-manager' ), ucfirst( $status ) );
1035
+ break;
1036
+ case 'pending':
1037
+ # code...
1038
+ $return = sprintf( __( '<span class="event_booking_status pending">%s</span>', 'wp-events-manager' ), ucfirst( $status ) );
1039
+ break;
1040
+ case 'processing':
1041
+ # code...
1042
+ $return = sprintf( __( '<span class="event_booking_status processing">%s</span>', 'wp-events-manager' ), ucfirst( $status ) );
1043
+ break;
1044
+ case 'completed':
1045
+ # code...
1046
+ $return = sprintf( __( '<span class="event_booking_status completed">%s</span>', 'wp-events-manager' ), ucfirst( $status ) );
1047
+ break;
1048
+ default:
1049
+ # code...
1050
+ break;
1051
+ }
1052
+
1053
+ return $return;
1054
+ }
1055
+ }
1056
+
1057
+ }
1058
+
1059
+ if ( ! function_exists( 'wpems_get_payment_status' ) ) {
1060
+
1061
+ function wpems_get_payment_status() {
1062
+ return apply_filters( 'wpems_get_payment_status', array(
1063
+ 'ea-cancelled' => sprintf( __( '<span class="event_booking_status cancelled">%s</span>', 'wp-events-manager' ), __( 'Cancelled', 'wp-events-manager' ) ),
1064
+ 'ea-pending' => sprintf( __( '<span class="event_booking_status pending">%s</span>', 'wp-events-manager' ), __( 'Pending', 'wp-events-manager' ) ),
1065
+ 'ea-processing' => sprintf( __( '<span class="event_booking_status processing">%s</span>', 'wp-events-manager' ), __( 'Processing', 'wp-events-manager' ) ),
1066
+ 'ea-completed' => sprintf( __( '<span class="event_booking_status completed">%s</span>', 'wp-events-manager' ), __( 'Completed', 'wp-events-manager' ) ),
1067
+ ) );
1068
+ }
1069
+
1070
+ }
1071
+
1072
+ if ( ! function_exists( 'wpems_is_ajax' ) ) {
1073
+ /**
1074
+ * is processing ajax request
1075
+ */
1076
+ function wpems_is_ajax() {
1077
+ return defined( 'DOING_AJAX' ) && DOING_AJAX;
1078
+ }
1079
+ }
1080
+
1081
+ if ( ! function_exists( 'tp_event_create_new_user' ) ) {
1082
+
1083
+ /**
1084
+ * create new user
1085
+ *
1086
+ * @param type $username
1087
+ * @param type $email
1088
+ * @param type $password
1089
+ *
1090
+ * @return WP_Error or $user_id created
1091
+ */
1092
+ function wpems_create_new_user( $cred = array() ) {
1093
+ $cred = wp_parse_args( $cred, array(
1094
+ 'username' => '',
1095
+ 'email' => '',
1096
+ 'password' => ''
1097
+ ) );
1098
+ $username = $cred['username'];
1099
+ $email = $cred['email'];
1100
+ $password = $cred['password'];
1101
+
1102
+ $errors = new WP_Error();
1103
+ if ( ! empty( $cred['confirm_password'] ) ) {
1104
+ $confirm_password = $cred['confirm_password'];
1105
+ if ( $password && $confirm_password && $confirm_password !== $confirm_password ) {
1106
+ $errors->add( 'confirm_password', __( 'Confirm Password is not match.', 'wp-events-manager' ) );
1107
+ }
1108
+ }
1109
+ /**
1110
+ * Validate username
1111
+ */
1112
+ if ( ! $username ) {
1113
+ $errors->add( 'user_login', sprintf( '<strong>%s</strong>%s', __( 'ERROR: ', 'wp-events-manager' ), __( 'Username is required field.', 'wp-events-manager' ) ) );
1114
+ } else if ( username_exists( $username ) ) {
1115
+ $errors->add( 'user_login', __( 'Username is already exists.', 'wp-events-manager' ) );
1116
+ }
1117
+
1118
+ /**
1119
+ * Validate email
1120
+ */
1121
+ if ( ! $email || ! is_email( $email ) ) {
1122
+ $errors->add( 'user_email', sprintf( '<strong>%s</strong>%s', __( 'ERROR: ', 'wp-events-manager' ), __( 'Please provide a valid email address.', 'wp-events-manager' ) ) );
1123
+ } else if ( email_exists( $email ) ) {
1124
+ $errors->add( 'user_email', sprintf( '<strong>%s</strong>%s', __( 'ERROR: ', 'wp-events-manager' ), __( 'An account is already registered with your email address. Please login.', 'wp-events-manager' ) ) );
1125
+ }
1126
+
1127
+ if ( empty( $password ) ) {
1128
+ $errors->add( 'password', sprintf( '<strong>%s</strong>%s', __( 'ERROR: ', 'wp-events-manager' ), __( 'Password is required field.', 'wp-events-manager' ) ) );
1129
+ }
1130
+
1131
+ $errors = apply_filters( 'tp_event_register_errors', $errors, $username, $email, $password );
1132
+ if ( $errors->get_error_code() ) {
1133
+ return $errors;
1134
+ }
1135
+
1136
+ $userdata = apply_filters( 'tp_event_create_new_user_data', array(
1137
+ 'user_login' => $username,
1138
+ 'user_email' => $email,
1139
+ 'user_pass' => $password
1140
+ ) );
1141
+
1142
+ $user_id = wp_insert_user( $userdata );
1143
+ /*
1144
+ * Insert new user return WP_Error
1145
+ */
1146
+ if ( is_wp_error( $user_id ) ) {
1147
+ $errors->add( 'insert_user_error', sprintf( '<strong>%s</strong>%s', __( 'ERROR: ', 'wp-events-manager' ), __( 'Couldn\'t register.', 'wp-events-manager' ) ) );
1148
+
1149
+ return $errors;
1150
+ }
1151
+
1152
+ do_action( 'tp_event_create_new_user', $user_id, $userdata );
1153
+
1154
+ return $user_id;
1155
+ }
1156
+
1157
+ }
1158
+
1159
+ if ( ! function_exists( 'tp_event_get_booking' ) ) {
1160
+
1161
+ /**
1162
+ * Get Booking
1163
+ *
1164
+ * @param type $booking_id
1165
+ *
1166
+ * @return WPEMS_Booking
1167
+ */
1168
+ function wpems_get_booking( $booking_id ) {
1169
+ return WPEMS_Booking::instance( $booking_id );
1170
+ }
1171
+
1172
+ }
1173
+
1174
+ // filter shortcode
1175
+ add_filter( 'the_content', 'wpems_content_filter', 1 );
1176
+ if ( ! function_exists( 'wpems_content_filter' ) ) {
1177
+ function wpems_content_filter( $content ) {
1178
+
1179
+ $filter = false;
1180
+
1181
+ if ( ( $login_page_id = wpems_get_page_id( 'login' ) ) && is_page( $login_page_id ) ) {
1182
+ if ( ! preg_match( '/\[wp_event_login\s?(.*)\]/', $content ) ) {
1183
+ $filter = true;
1184
+ $content = $content . '[wp_event_login]';
1185
+ }
1186
+ } else if ( ( $register_page_id = wpems_get_page_id( 'register' ) ) && is_page( $register_page_id ) ) {
1187
+ if ( ! preg_match( '/\[wp_event_register\s?(.*)\]/', $content ) ) {
1188
+ $filter = true;
1189
+ $content = $content . '[wp_event_register]';
1190
+ }
1191
+ } else if ( ( $forgot_page_id = wpems_get_page_id( 'forgot_password' ) ) && is_page( $forgot_page_id ) ) {
1192
+ if ( ! preg_match( '/\[wp_event_forgot_password\s?(.*)\]/', $content ) ) {
1193
+ $filter = true;
1194
+ $content = $content . '[wp_event_forgot_password]';
1195
+ }
1196
+
1197
+ } else if ( ( $reset_page_id = wpems_get_page_id( 'reset_password' ) ) && is_page( $reset_page_id ) ) {
1198
+ if ( ! preg_match( '/\[wp_event_reset_password\s?(.*)\]/', $content ) ) {
1199
+ $filter = true;
1200
+ $content = $content . '[wp_event_reset_password]';
1201
+ }
1202
+ } else if ( ( $account_page_id = wpems_get_page_id( 'account' ) ) && is_page( $account_page_id ) ) {
1203
+ if ( ! preg_match( '/\[wp_event_account\s?(.*)\]/', $content ) ) {
1204
+ $filter = true;
1205
+ $content = $content . '[wp_event_account]';
1206
+ }
1207
+ }
1208
+
1209
+ if ( $filter ) {
1210
+ $has_filter = false;
1211
+ if ( has_filter( 'the_content', 'wpautop' ) ) {
1212
+ $has_filter = true;
1213
+ remove_filter( 'the_content', 'wpautop' );
1214
+ }
1215
+
1216
+ $content = do_shortcode( $content );
1217
+
1218
+ if ( $has_filter ) {
1219
+ add_filter( 'the_content', 'wpautop' );
1220
+ }
1221
+ }
1222
+
1223
+ return $content;
1224
+ }
1225
+
1226
+ }
1227
+
1228
+ add_action( 'tp_event_create_new_booking', 'wpems_cancel_booking', 10, 1 );
1229
+ add_action( 'tp_event_updated_status', 'wpems_cancel_booking', 10, 1 );
1230
+ if ( ! function_exists( 'wpems_cancel_booking' ) ) {
1231
+
1232
+ function wpems_cancel_booking( $booking_id ) {
1233
+ $post_status = get_post_status( $booking_id );
1234
+ if ( $post_status === 'ea-pending' ) {
1235
+ wp_clear_scheduled_hook( 'tp_event_cancel_payment_booking', array( $booking_id ) );
1236
+ $time = wpems_get_option( 'cancel_payment', 12 ) * HOUR_IN_SECONDS;
1237
+ wp_schedule_single_event( time() + $time, 'wpems_cancel_payment_booking', array( $booking_id ) );
1238
+ }
1239
+ }
1240
+
1241
+ }
1242
+
1243
+ // cancel payment order
1244
+ add_action( 'tp_event_cancel_payment_booking', 'wpems_cancel_payment_booking' );
1245
+ if ( ! function_exists( 'wpems_cancel_payment_booking' ) ) {
1246
+
1247
+ function wpems_cancel_payment_booking( $booking_id ) {
1248
+ $post_status = get_post_status( $booking_id );
1249
+
1250
+ if ( $post_status === 'ea-pending' ) {
1251
+ wp_update_post( array(
1252
+ 'ID' => $booking_id,
1253
+ 'post_status' => 'ea-cancelled'
1254
+ ) );
1255
+ }
1256
+ }
1257
+
1258
+ }
1259
+
1260
+ // Update functions from version 1.4
1261
+ if ( ! function_exists( 'event_get_option' ) ) {
1262
+
1263
+ /**
1264
+ * event_get_option
1265
+ *
1266
+ * @param type $name
1267
+ * @param type $default
1268
+ *
1269
+ * @return type
1270
+ */
1271
+ function event_get_option( $name, $default = null ) {
1272
+ if ( strpos( $name, 'thimpress_events_' ) !== 0 ) {
1273
+ $name = 'thimpress_events_' . $name;
1274
+ }
1275
+
1276
+ return get_option( $name, $default );
1277
+ }
1278
+
1279
+ }
1280
+
1281
+ // Add event category tab in admin table page
1282
+ add_action( 'all_admin_notices', 'wpems_admin_table_tabs' );
1283
+ function wpems_admin_table_tabs() {
1284
+ if ( ! is_admin() ) {
1285
+ return;
1286
+ }
1287
+ $admin_tabs = apply_filters(
1288
+ 'tp_event_admin_event_tab_info',
1289
+ array(
1290
+ 10 => array(
1291
+ 'link' => 'edit.php?post_type=tp_event',
1292
+ 'name' => __( 'Events', 'wp-events-manager' ),
1293
+ 'id' => 'edit-tp_event'
1294
+ ),
1295
+ 20 => array(
1296
+ 'link' => 'edit-tags.php?taxonomy=tp_event_category&post_type=tp_event',
1297
+ 'name' => __( 'Categories', 'wp-events-manager' ),
1298
+ 'id' => 'edit-tp_event_category'
1299
+ )
1300
+ )
1301
+ );
1302
+ ksort( $admin_tabs );
1303
+ $tabs = array();
1304
+ foreach ( $admin_tabs as $key => $value ) {
1305
+ array_push( $tabs, $key );
1306
+ }
1307
+
1308
+ $pages = apply_filters( 'tp-event_admin_tabs_on_pages', array(
1309
+ 'edit-tp_event',
1310
+ 'edit-tp_event_category',
1311
+ 'tp_event'
1312
+ ) );
1313
+
1314
+ $admin_tabs_on_page = array();
1315
+ foreach ( $pages as $page ) {
1316
+ $admin_tabs_on_page[ $page ] = $tabs;
1317
+ }
1318
+
1319
+ $current_page_id = get_current_screen()->id;
1320
+ $current_user = wp_get_current_user();
1321
+ if ( ! in_array( 'administrator', $current_user->roles ) ) {
1322
+ return;
1323
+ }
1324
+ if ( ! empty( $admin_tabs_on_page[ $current_page_id ] ) && count( $admin_tabs_on_page[ $current_page_id ] ) ) { ?>
1325
+ <h2 class="nav-tab-wrapper event-nav-tab-wrapper">
1326
+ <?php foreach ( $admin_tabs_on_page[ $current_page_id ] as $admin_tab_id ) {
1327
+ $class = ( $admin_tabs[ $admin_tab_id ]['id'] == $current_page_id ? 'nav-tab nav-tab-active' : 'nav-tab' );
1328
+ echo '<a href="' . admin_url( $admin_tabs[ $admin_tab_id ]["link"] ) . '" class="' . $class . ' nav-tab-' . $admin_tabs[ $admin_tab_id ]["id"] . '">' . $admin_tabs[ $admin_tab_id ]["name"] . '</a>';
1329
+ } ?>
1330
+ </h2>
1331
+ <?php
1332
+ }
1333
+ }
1334
+
1335
+ if ( is_multisite() ) {
1336
+ if ( ( file_exists( ABSPATH . 'wp-content/plugins/tp-event-auth/tp-event-auth.php' ) || file_exists( ABSPATH . 'wp-content/plugins/tp-event/tp-event.php' ) ) && ! get_site_option( 'thimpress_events_show_remove_event_auth_notice' ) ) {
1337
+ add_action( 'network_admin_notices', 'wpems_show_remove_tp_event_notice' );
1338
+ add_action( 'admin_notices', 'wpems_show_remove_tp_event_notice' );
1339
+ }
1340
+ } else {
1341
+ if ( ( file_exists( ABSPATH . 'wp-content/plugins/tp-event-auth/tp-event-auth.php' ) || file_exists( ABSPATH . 'wp-content/plugins/tp-event/tp-event.php' ) ) && ! get_option( 'thimpress_events_show_remove_event_auth_notice' ) ) {
1342
+ add_action( 'admin_notices', 'wpems_show_remove_tp_event_notice' );
1343
+ }
1344
+ }
1345
+
1346
+ /**
1347
+ * Show notice required remove event auth add-on
1348
+ */
1349
+
1350
+ function wpems_show_remove_tp_event_notice() { ?>
1351
+ <div class="notice notice-error tp-event-dismiss-notice is-dismissible">
1352
+ <p><?php echo __( wp_kses( '<strong>WP Events Manager</strong> plugin version ' . WPEMS_VER . ' is an upgrade of <strong>Thim Events</strong> plugin and already included <strong>Thim Event Authentication</strong> add-on. Please deactivate and delete <strong>Thim Events/Thim Event Authentication</strong>.', array( 'strong' => array() ) ), 'wp-events-manager' ); ?></p>
1353
+ </div>
1354
+ <?php }
1355
+
1356
+ /*
1357
+ * Post type admin order
1358
+ */
1359
+ if ( ! function_exists( 'wpems_post_type_admin_order' ) ) {
1360
+ function wpems_post_type_admin_order( $wp_query ) {
1361
+ if ( is_admin() && ! isset( $_GET['orderby'] ) ) {
1362
+ // Get the post type from the query
1363
+ $post_type = $wp_query->query['post_type'];
1364
+ if ( in_array( $post_type, array( 'tp_event', 'event_auth_book' ) ) ) {
1365
+ $wp_query->set( 'orderby', 'date' );
1366
+ $wp_query->set( 'order', 'DESC' );
1367
+ }
1368
+ }
1369
+ }
1370
+ }
1371
+ add_filter( 'pre_get_posts', 'wpems_post_type_admin_order' );
1372
+
1373
+
1374
+ //=============================================================================================================================================
1375
+
1376
+ /**
1377
+ * Support old functions
1378
+ */
1379
+
1380
+
1381
+ /**
1382
+ * get event start datetime
1383
+ *
1384
+ * @param string $format [description]
1385
+ *
1386
+ * @return [type] [description]
1387
+ */
1388
+
1389
+ if ( ! function_exists( 'tp_event_start' ) ) {
1390
+ function tp_event_start( $format = 'Y-m-d H:i', $post = null, $l10 = true ) {
1391
+ if ( ! $post ) {
1392
+ $post = get_post();
1393
+ }
1394
+
1395
+ if ( $l10 ) {
1396
+ return date_i18n( $format, strtotime( $post->tp_event_date_start . ' ' . $post->tp_event_time_start ) );
1397
+ } else {
1398
+ return date( $format, strtotime( $post->tp_event_date_start . ' ' . $post->tp_event_time_start ) );
1399
+ }
1400
+ }
1401
+ }
1402
+
1403
+ /**
1404
+ * get event end datetime same as function
1405
+ *
1406
+ * @param string $format
1407
+ *
1408
+ * @return
1409
+ */
1410
+ if ( ! function_exists( 'tp_event_end' ) ) {
1411
+ function tp_event_end( $format = 'Y-m-d H:i', $post = null, $l10 = true ) {
1412
+ if ( ! $post ) {
1413
+ $post = get_post();
1414
+ }
1415
+
1416
+ if ( $l10 ) {
1417
+ return date_i18n( $format, strtotime( $post->tp_event_date_end . ' ' . $post->tp_event_time_end ) );
1418
+ } else {
1419
+ return date( $format, strtotime( $post->tp_event_date_end . ' ' . $post->tp_event_time_end ) );
1420
+ }
1421
+ }
1422
+ }
1423
+
1424
+ /**
1425
+ * get time event countdown
1426
+ *
1427
+ * @param string $format
1428
+ *
1429
+ * @return string
1430
+ */
1431
+ if ( ! function_exists( 'tp_event_get_time' ) ) {
1432
+ function tp_event_get_time( $format = 'Y-m-d H:i', $post = null, $l10 = true ) {
1433
+ $current_time = current_time( 'timestamp' );
1434
+ $start = wpems_event_start( 'Y-m-d H:i', $post );
1435
+ $end = wpems_event_end( 'Y-m-d H:i', $post );
1436
+ if ( $current_time < strtotime( $start ) ) {
1437
+ return wpems_event_start( $format, $post, $l10 );
1438
+ } else {
1439
+ return wpems_event_end( $format, $post, $l10 );
1440
+ }
1441
+ }
1442
+ }
1443
+
1444
+ /**
1445
+ * get event location
1446
+ *
1447
+ * @param string $format
1448
+ *
1449
+ * @return string
1450
+ */
1451
+ if ( ! function_exists( 'tp_event_location' ) ) {
1452
+ function tp_event_location( $post = null ) {
1453
+ if ( ! $post ) {
1454
+ $post = get_post();
1455
+ }
1456
+
1457
+ return get_post_meta( $post->ID, 'tp_event_location', true );
1458
+ }
1459
+ }
1460
+
1461
+
1462
+ if ( ! function_exists( 'tp_event_get_template' ) ) {
1463
+
1464
+ function tp_event_get_template( $template_name, $args = array(), $template_path = '', $default_path = '' ) {
1465
+ if ( $args && is_array( $args ) ) {
1466
+ extract( $args );
1467
+ }
1468
+
1469
+ $located = tp_event_locate_template( $template_name, $template_path, $default_path );
1470
+
1471
+ if ( ! file_exists( $located ) ) {
1472
+ _doing_it_wrong( __FUNCTION__, sprintf( '<code>%s</code> does not exist.', $located ), '2.1' );
1473
+
1474
+ return;
1475
+ }
1476
+ // Allow 3rd party plugin filter template file from their plugin
1477
+ $located = apply_filters( 'tp_event_get_template', $located, $template_name, $args, $template_path, $default_path );
1478
+
1479
+ do_action( 'tp_event_before_template_part', $template_name, $template_path, $located, $args );
1480
+
1481
+ include( $located );
1482
+
1483
+ do_action( 'tp_event_after_template_part', $template_name, $template_path, $located, $args );
1484
+ }
1485
+
1486
+ }
1487
+
1488
+ if ( ! function_exists( 'tp_event_template_path' ) ) {
1489
+
1490
+ function tp_event_template_path() {
1491
+ return apply_filters( 'tp_event_template_path', 'wp-events-manager' );
1492
+ }
1493
+
1494
+ }
1495
+
1496
+ if ( !function_exists( 'tp_event_locate_template' ) ) {
1497
+
1498
+ function tp_event_locate_template( $template_name, $template_path = '', $default_path = '' ) {
1499
+
1500
+ if ( !$template_path ) {
1501
+ $template_path = tp_event_template_path();
1502
+ }
1503
+
1504
+ if ( !$default_path ) {
1505
+ $default_path = WPEMS_PATH . '/templates/';
1506
+ }
1507
+
1508
+ $template = null;
1509
+ // Look within passed path within the theme - this is priority
1510
+ $template = locate_template(
1511
+ array(
1512
+ trailingslashit( $template_path ) . $template_name,
1513
+ $template_name
1514
+ )
1515
+ );
1516
+ // Get default template
1517
+ if ( !$template ) {
1518
+ $template = $default_path . $template_name;
1519
+ }
1520
+
1521
+ // Return what we found
1522
+ return apply_filters( 'tp_event_locate_template', $template, $template_name, $template_path );
1523
+ }
1524
+
1525
+ }
index.php ADDED
File without changes
languages/wp-events-manager.pot ADDED
@@ -0,0 +1,1333 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SOME DESCRIPTIVE TITLE.
2
+ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
+ # This file is distributed under the same license as the PACKAGE package.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
+ #
6
+ #, fuzzy
7
+ msgid ""
8
+ msgstr ""
9
+ "Project-Id-Version: PACKAGE VERSION\n"
10
+ "Report-Msgid-Bugs-To: \n"
11
+ "POT-Creation-Date: 2017-04-14 14:39+0700\n"
12
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
+ "Language-Team: LANGUAGE <LL@li.org>\n"
15
+ "Language: \n"
16
+ "MIME-Version: 1.0\n"
17
+ "Content-Type: text/plain; charset=UTF-8\n"
18
+ "Content-Transfer-Encoding: 8bit\n"
19
+ "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
20
+
21
+ #: trunk/inc/class-wpems-ajax.php:41
22
+ msgid "Remove admin notice successful"
23
+ msgstr ""
24
+
25
+ #: trunk/inc/class-wpems-ajax.php:58
26
+ msgid "Event not found."
27
+ msgstr ""
28
+
29
+ #: trunk/inc/class-wpems-ajax.php:62
30
+ msgid "You must login before register "
31
+ msgstr ""
32
+
33
+ #: trunk/inc/class-wpems-ajax.php:69
34
+ msgid "has been expired"
35
+ msgstr ""
36
+
37
+ #: trunk/inc/class-wpems-ajax.php:71
38
+ msgid "You have registered this event before"
39
+ msgstr ""
40
+
41
+ #: trunk/inc/class-wpems-ajax.php:73
42
+ msgid "The event is full, the registration is closed"
43
+ msgstr ""
44
+
45
+ #: trunk/inc/class-wpems-ajax.php:95 trunk/inc/class-wpems-ajax.php:99
46
+ msgid "Invalid request"
47
+ msgstr ""
48
+
49
+ #: trunk/inc/class-wpems-ajax.php:104
50
+ msgid "Invalid event request"
51
+ msgstr ""
52
+
53
+ #: trunk/inc/class-wpems-ajax.php:111
54
+ msgid "Quantity must integer"
55
+ msgstr ""
56
+
57
+ #: trunk/inc/class-wpems-ajax.php:125
58
+ msgid "You are registered this event."
59
+ msgstr ""
60
+
61
+ #: trunk/inc/class-wpems-ajax.php:146
62
+ msgid "is not ready. Please contact administrator to setup payment gateways"
63
+ msgstr ""
64
+
65
+ #: trunk/inc/class-wpems-ajax.php:169
66
+ #, php-format
67
+ msgid ""
68
+ "Book ID <strong>%s</strong> completed! We'll send mail to <strong>%s</"
69
+ "strong> when it is approve."
70
+ msgstr ""
71
+
72
+ #: trunk/inc/class-wpems-ajax.php:184
73
+ msgid "Payment method is not available"
74
+ msgstr ""
75
+
76
+ #: trunk/inc/class-wpems-ajax.php:207
77
+ #, php-format
78
+ msgid "You Must <a href=\"%s\">Login</a>"
79
+ msgstr ""
80
+
81
+ #: trunk/inc/class-wpems-booking.php:63
82
+ #, php-format
83
+ msgid "%s booking event %s"
84
+ msgstr ""
85
+
86
+ #: trunk/inc/class-wpems-booking.php:64 trunk/inc/class-wpems-booking.php:65
87
+ #, php-format
88
+ msgid "%s booking event %s with %s slot"
89
+ msgstr ""
90
+
91
+ #: trunk/inc/class-wpems-booking.php:88
92
+ #, php-format
93
+ msgid "Booking ID #%s is not exists."
94
+ msgstr ""
95
+
96
+ #: trunk/inc/class-wpems-install.php:114
97
+ msgctxt "Page slug"
98
+ msgid "user-register"
99
+ msgstr ""
100
+
101
+ #: trunk/inc/class-wpems-install.php:115
102
+ msgctxt "Page title"
103
+ msgid "User Register"
104
+ msgstr ""
105
+
106
+ #: trunk/inc/class-wpems-install.php:119
107
+ msgctxt "Page slug"
108
+ msgid "user-login"
109
+ msgstr ""
110
+
111
+ #: trunk/inc/class-wpems-install.php:120
112
+ msgctxt "Page title"
113
+ msgid "User Login"
114
+ msgstr ""
115
+
116
+ #: trunk/inc/class-wpems-install.php:124
117
+ msgctxt "Page slug"
118
+ msgid "forgot-password"
119
+ msgstr ""
120
+
121
+ #: trunk/inc/class-wpems-install.php:125
122
+ msgctxt "Page title"
123
+ msgid "Forgot Password"
124
+ msgstr ""
125
+
126
+ #: trunk/inc/class-wpems-install.php:129
127
+ msgctxt "Page slug"
128
+ msgid "reset-password"
129
+ msgstr ""
130
+
131
+ #: trunk/inc/class-wpems-install.php:130
132
+ msgctxt "Page title"
133
+ msgid "Reset Password"
134
+ msgstr ""
135
+
136
+ #: trunk/inc/class-wpems-install.php:134
137
+ msgctxt "Page slug"
138
+ msgid "user-account"
139
+ msgstr ""
140
+
141
+ #: trunk/inc/class-wpems-install.php:135
142
+ msgctxt "Page title"
143
+ msgid "User Account"
144
+ msgstr ""
145
+
146
+ #: trunk/inc/class-wpems-post-types.php:48
147
+ msgctxt "post type general name"
148
+ msgid "Events"
149
+ msgstr ""
150
+
151
+ #: trunk/inc/class-wpems-post-types.php:49
152
+ msgctxt "post type singular name"
153
+ msgid "Event"
154
+ msgstr ""
155
+
156
+ #: trunk/inc/class-wpems-post-types.php:50
157
+ msgctxt "admin menu"
158
+ msgid "Events"
159
+ msgstr ""
160
+
161
+ #: trunk/inc/class-wpems-post-types.php:51
162
+ msgctxt "add new on admin bar"
163
+ msgid "Event"
164
+ msgstr ""
165
+
166
+ #: trunk/inc/class-wpems-post-types.php:52
167
+ msgctxt "event"
168
+ msgid "Add New"
169
+ msgstr ""
170
+
171
+ #: trunk/inc/class-wpems-post-types.php:53
172
+ msgid "Add New Event"
173
+ msgstr ""
174
+
175
+ #: trunk/inc/class-wpems-post-types.php:54
176
+ msgid "New Event"
177
+ msgstr ""
178
+
179
+ #: trunk/inc/class-wpems-post-types.php:55
180
+ msgid "Edit Event"
181
+ msgstr ""
182
+
183
+ #: trunk/inc/class-wpems-post-types.php:56
184
+ msgid "View Event"
185
+ msgstr ""
186
+
187
+ #: trunk/inc/class-wpems-post-types.php:57
188
+ #: trunk/inc/wpems-core-functions.php:1228
189
+ #: trunk/templates/shortcodes/user-account.php:21
190
+ msgid "Events"
191
+ msgstr ""
192
+
193
+ #: trunk/inc/class-wpems-post-types.php:58
194
+ msgid "Search Events"
195
+ msgstr ""
196
+
197
+ #: trunk/inc/class-wpems-post-types.php:59
198
+ msgid "Parent Events:"
199
+ msgstr ""
200
+
201
+ #: trunk/inc/class-wpems-post-types.php:60
202
+ msgid "No events found."
203
+ msgstr ""
204
+
205
+ #: trunk/inc/class-wpems-post-types.php:61
206
+ msgid "No events found in Trash."
207
+ msgstr ""
208
+
209
+ #: trunk/inc/class-wpems-post-types.php:66
210
+ msgid "Event post type."
211
+ msgstr ""
212
+
213
+ #: trunk/inc/class-wpems-post-types.php:72
214
+ msgctxt "URL slug"
215
+ msgid "events"
216
+ msgstr ""
217
+
218
+ #: trunk/inc/class-wpems-post-types.php:93
219
+ msgctxt "post type general name"
220
+ msgid "Bookings"
221
+ msgstr ""
222
+
223
+ #: trunk/inc/class-wpems-post-types.php:94
224
+ msgctxt "post type singular name"
225
+ msgid "Booking"
226
+ msgstr ""
227
+
228
+ #: trunk/inc/class-wpems-post-types.php:95
229
+ msgctxt "admin menu"
230
+ msgid "Bookings"
231
+ msgstr ""
232
+
233
+ #: trunk/inc/class-wpems-post-types.php:96
234
+ msgctxt "add new on admin bar"
235
+ msgid "Booking"
236
+ msgstr ""
237
+
238
+ #: trunk/inc/class-wpems-post-types.php:97
239
+ msgctxt "book"
240
+ msgid "Add New"
241
+ msgstr ""
242
+
243
+ #: trunk/inc/class-wpems-post-types.php:98
244
+ msgid "Add New Booking"
245
+ msgstr ""
246
+
247
+ #: trunk/inc/class-wpems-post-types.php:99
248
+ msgid "New Booking"
249
+ msgstr ""
250
+
251
+ #: trunk/inc/class-wpems-post-types.php:100
252
+ #: trunk/inc/admin/views/metaboxes/booking-details.php:40
253
+ msgid "Booking Details"
254
+ msgstr ""
255
+
256
+ #: trunk/inc/class-wpems-post-types.php:101
257
+ msgid "View Booking"
258
+ msgstr ""
259
+
260
+ #: trunk/inc/class-wpems-post-types.php:102
261
+ msgid "Bookings"
262
+ msgstr ""
263
+
264
+ #: trunk/inc/class-wpems-post-types.php:103
265
+ msgid "Search Books"
266
+ msgstr ""
267
+
268
+ #: trunk/inc/class-wpems-post-types.php:104
269
+ msgid "Parent Books:"
270
+ msgstr ""
271
+
272
+ #: trunk/inc/class-wpems-post-types.php:105
273
+ msgid "No books found."
274
+ msgstr ""
275
+
276
+ #: trunk/inc/class-wpems-post-types.php:106
277
+ msgid "No books found in Trash."
278
+ msgstr ""
279
+
280
+ #: trunk/inc/class-wpems-post-types.php:111
281
+ msgid "Description."
282
+ msgstr ""
283
+
284
+ #: trunk/inc/class-wpems-post-types.php:118
285
+ msgctxt "URL slug"
286
+ msgid "event-book"
287
+ msgstr ""
288
+
289
+ #: trunk/inc/class-wpems-post-types.php:140
290
+ msgctxt "taxonomy general name"
291
+ msgid "Event Categories"
292
+ msgstr ""
293
+
294
+ #: trunk/inc/class-wpems-post-types.php:141
295
+ msgctxt "taxonomy singular name"
296
+ msgid "Event Category"
297
+ msgstr ""
298
+
299
+ #: trunk/inc/class-wpems-post-types.php:142
300
+ msgid "Search Categories"
301
+ msgstr ""
302
+
303
+ #: trunk/inc/class-wpems-post-types.php:143
304
+ msgid "All Categories"
305
+ msgstr ""
306
+
307
+ #: trunk/inc/class-wpems-post-types.php:144
308
+ msgid "Parent Category"
309
+ msgstr ""
310
+
311
+ #: trunk/inc/class-wpems-post-types.php:145
312
+ msgid "Parent Category:"
313
+ msgstr ""
314
+
315
+ #: trunk/inc/class-wpems-post-types.php:146
316
+ msgid "Edit Category"
317
+ msgstr ""
318
+
319
+ #: trunk/inc/class-wpems-post-types.php:147
320
+ msgid "Update Category"
321
+ msgstr ""
322
+
323
+ #: trunk/inc/class-wpems-post-types.php:148
324
+ msgid "Add New Category"
325
+ msgstr ""
326
+
327
+ #: trunk/inc/class-wpems-post-types.php:149
328
+ msgid "New Category Name"
329
+ msgstr ""
330
+
331
+ #: trunk/inc/class-wpems-post-types.php:150
332
+ msgid "Category"
333
+ msgstr ""
334
+
335
+ #: trunk/inc/class-wpems-post-types.php:173
336
+ msgctxt "wp-events-manager"
337
+ msgid "Upcoming"
338
+ msgstr ""
339
+
340
+ #: trunk/inc/class-wpems-post-types.php:178
341
+ #, php-format
342
+ msgid "Upcoming <span class=\"count\">(%s)</span>"
343
+ msgid_plural "Upcoming <span class=\"count\">(%s)</span>"
344
+ msgstr[0] ""
345
+ msgstr[1] ""
346
+
347
+ #: trunk/inc/class-wpems-post-types.php:182
348
+ msgctxt "wp-events-manager"
349
+ msgid "Happening"
350
+ msgstr ""
351
+
352
+ #: trunk/inc/class-wpems-post-types.php:187
353
+ #, php-format
354
+ msgid "Happening <span class=\"count\">(%s)</span>"
355
+ msgid_plural "Happening <span class=\"count\">(%s)</span>"
356
+ msgstr[0] ""
357
+ msgstr[1] ""
358
+
359
+ #: trunk/inc/class-wpems-post-types.php:191
360
+ msgctxt "wp-events-manager"
361
+ msgid "Expired"
362
+ msgstr ""
363
+
364
+ #: trunk/inc/class-wpems-post-types.php:196
365
+ #, php-format
366
+ msgid "Expired <span class=\"count\">(%s)</span>"
367
+ msgid_plural "Expired <span class=\"count\">(%s)</span>"
368
+ msgstr[0] ""
369
+ msgstr[1] ""
370
+
371
+ #: trunk/inc/class-wpems-post-types.php:206
372
+ msgctxt "Booking status"
373
+ msgid "Cancelled"
374
+ msgstr ""
375
+
376
+ #: trunk/inc/class-wpems-post-types.php:211
377
+ #, php-format
378
+ msgid "Cancelled <span class=\"count\">(%s)</span>"
379
+ msgid_plural "Cancelled <span class=\"count\">(%s)</span>"
380
+ msgstr[0] ""
381
+ msgstr[1] ""
382
+
383
+ #: trunk/inc/class-wpems-post-types.php:215
384
+ msgctxt "Booking status"
385
+ msgid "Pending"
386
+ msgstr ""
387
+
388
+ #: trunk/inc/class-wpems-post-types.php:220
389
+ #, php-format
390
+ msgid "Pending <span class=\"count\">(%s)</span>"
391
+ msgid_plural "Pending <span class=\"count\">(%s)</span>"
392
+ msgstr[0] ""
393
+ msgstr[1] ""
394
+
395
+ #: trunk/inc/class-wpems-post-types.php:224
396
+ msgctxt "Booking status"
397
+ msgid "Processing"
398
+ msgstr ""
399
+
400
+ #: trunk/inc/class-wpems-post-types.php:229
401
+ #, php-format
402
+ msgid "Processing <span class=\"count\">(%s)</span>"
403
+ msgid_plural "Processing <span class=\"count\">(%s)</span>"
404
+ msgstr[0] ""
405
+ msgstr[1] ""
406
+
407
+ #: trunk/inc/class-wpems-post-types.php:233
408
+ msgctxt "Booking status"
409
+ msgid "Completed"
410
+ msgstr ""
411
+
412
+ #: trunk/inc/class-wpems-post-types.php:238
413
+ #, php-format
414
+ msgid "Completed <span class=\"count\">(%s)</span>"
415
+ msgid_plural "Completed <span class=\"count\">(%s)</span>"
416
+ msgstr[0] ""
417
+ msgstr[1] ""
418
+
419
+ #: trunk/inc/class-wpems-post-types.php:252
420
+ msgid "Start"
421
+ msgstr ""
422
+
423
+ #: trunk/inc/class-wpems-post-types.php:253
424
+ msgid "End"
425
+ msgstr ""
426
+
427
+ #: trunk/inc/class-wpems-post-types.php:254
428
+ #: trunk/inc/class-wpems-post-types.php:325
429
+ #: trunk/templates/emails/register-event.php:27
430
+ #: trunk/templates/shortcodes/user-account.php:26
431
+ msgid "Status"
432
+ msgstr ""
433
+
434
+ #: trunk/inc/class-wpems-post-types.php:255
435
+ #: trunk/inc/admin/views/metaboxes/event-settings.php:37
436
+ msgid "Price"
437
+ msgstr ""
438
+
439
+ #: trunk/inc/class-wpems-post-types.php:256
440
+ msgid "Booked / Total"
441
+ msgstr ""
442
+
443
+ #: trunk/inc/class-wpems-post-types.php:295
444
+ #: trunk/inc/class-wpems-post-types.php:355
445
+ #: trunk/templates/emails/register-event.php:34
446
+ #: trunk/templates/loop/register.php:31
447
+ #: trunk/templates/shortcodes/user-account.php:35
448
+ msgid "Free"
449
+ msgstr ""
450
+
451
+ #: trunk/inc/class-wpems-post-types.php:297
452
+ #, php-format
453
+ msgid "<span class=\"event_auth_event_type\">%s/%s</span>"
454
+ msgstr ""
455
+
456
+ #: trunk/inc/class-wpems-post-types.php:297
457
+ msgid "slot"
458
+ msgstr ""
459
+
460
+ #: trunk/inc/class-wpems-post-types.php:301
461
+ msgid "Unlimited"
462
+ msgstr ""
463
+
464
+ #: trunk/inc/class-wpems-post-types.php:318
465
+ msgid ""
466
+ "<label class=\"screen-reader-text __web-inspector-hide-shortcut__\" for=\"cb-"
467
+ "select-all-1\">Select All</label><input id=\"cb-select-all-1\" type="
468
+ "\"checkbox\">"
469
+ msgstr ""
470
+
471
+ #: trunk/inc/class-wpems-post-types.php:319
472
+ #: trunk/templates/emails/register-event.php:21
473
+ msgid "ID"
474
+ msgstr ""
475
+
476
+ #: trunk/inc/class-wpems-post-types.php:320
477
+ #: trunk/templates/emails/register-event.php:22
478
+ msgid "Event"
479
+ msgstr ""
480
+
481
+ #: trunk/inc/class-wpems-post-types.php:321
482
+ msgid "User"
483
+ msgstr ""
484
+
485
+ #: trunk/inc/class-wpems-post-types.php:322
486
+ msgid "Date"
487
+ msgstr ""
488
+
489
+ #: trunk/inc/class-wpems-post-types.php:323
490
+ #: trunk/inc/admin/views/metaboxes/booking-details.php:46
491
+ #: trunk/templates/emails/register-event.php:25
492
+ #: trunk/templates/emails/register-event.php:34
493
+ #: trunk/templates/shortcodes/user-account.php:23
494
+ #: trunk/templates/shortcodes/user-account.php:35
495
+ msgid "Cost"
496
+ msgstr ""
497
+
498
+ #: trunk/inc/class-wpems-post-types.php:324
499
+ #: trunk/inc/admin/views/metaboxes/booking-details.php:47
500
+ #: trunk/inc/admin/views/metaboxes/event-settings.php:31
501
+ #: trunk/templates/emails/register-event.php:24
502
+ #: trunk/templates/loop/booking-form.php:21
503
+ #: trunk/templates/shortcodes/user-account.php:24
504
+ msgid "Quantity"
505
+ msgstr ""
506
+
507
+ #: trunk/inc/class-wpems-post-types.php:347
508
+ #, php-format
509
+ msgid "<a href=\"%s\">%s</a>"
510
+ msgstr ""
511
+
512
+ #: trunk/inc/class-wpems-post-types.php:439
513
+ #: trunk/inc/class-wpems-post-types.php:442
514
+ #: trunk/inc/class-wpems-post-types.php:445
515
+ msgid "Event updated."
516
+ msgstr ""
517
+
518
+ #: trunk/inc/class-wpems-post-types.php:440
519
+ msgid "Custom field updated."
520
+ msgstr ""
521
+
522
+ #: trunk/inc/class-wpems-post-types.php:441
523
+ msgid "Custom field deleted."
524
+ msgstr ""
525
+
526
+ #: trunk/inc/class-wpems-post-types.php:444
527
+ #, php-format
528
+ msgid "Book restored to revision from %s"
529
+ msgstr ""
530
+
531
+ #: trunk/inc/class-wpems-post-types.php:446
532
+ msgid "Event saved."
533
+ msgstr ""
534
+
535
+ #: trunk/inc/class-wpems-post-types.php:447
536
+ msgid "Event submitted."
537
+ msgstr ""
538
+
539
+ #: trunk/inc/class-wpems-post-types.php:449
540
+ #, php-format
541
+ msgid "Event scheduled for: <strong>%1$s</strong>."
542
+ msgstr ""
543
+
544
+ #: trunk/inc/class-wpems-post-types.php:451
545
+ msgid "M j, Y @ G:i"
546
+ msgstr ""
547
+
548
+ #: trunk/inc/class-wpems-post-types.php:453
549
+ msgid "Event draft updated."
550
+ msgstr ""
551
+
552
+ #: trunk/inc/class-wpems-post-types.php:459
553
+ msgid "View event"
554
+ msgstr ""
555
+
556
+ #: trunk/inc/class-wpems-post-types.php:465
557
+ msgid "Preview event"
558
+ msgstr ""
559
+
560
+ #: trunk/inc/class-wpems-shortcodes.php:162
561
+ #: trunk/inc/class-wpems-shortcodes.php:193
562
+ msgid "Check your email for a link to reset your password."
563
+ msgstr ""
564
+
565
+ #: trunk/inc/class-wpems-user-process.php:48
566
+ msgid "You have been sign out!"
567
+ msgstr ""
568
+
569
+ #: trunk/inc/class-wpems-user-process.php:138
570
+ #: trunk/inc/class-wpems-user-process.php:142
571
+ #: trunk/inc/class-wpems-user-process.php:146
572
+ #: trunk/inc/class-wpems-user-process.php:155
573
+ msgid "ERROR"
574
+ msgstr ""
575
+
576
+ #: trunk/inc/class-wpems-user-process.php:142
577
+ msgid "Username is required."
578
+ msgstr ""
579
+
580
+ #: trunk/inc/class-wpems-user-process.php:146
581
+ msgid "Password is required."
582
+ msgstr ""
583
+
584
+ #: trunk/inc/class-wpems-user-process.php:155
585
+ msgid "A user could not be found with this email address."
586
+ msgstr ""
587
+
588
+ #: trunk/inc/class-wpems-user-process.php:177
589
+ msgid "You have logged in"
590
+ msgstr ""
591
+
592
+ #: trunk/inc/wpems-core-functions.php:394
593
+ msgid "Years"
594
+ msgstr ""
595
+
596
+ #: trunk/inc/wpems-core-functions.php:395
597
+ msgid "Months"
598
+ msgstr ""
599
+
600
+ #: trunk/inc/wpems-core-functions.php:396
601
+ msgid "Weeks"
602
+ msgstr ""
603
+
604
+ #: trunk/inc/wpems-core-functions.php:397
605
+ msgid "Days"
606
+ msgstr ""
607
+
608
+ #: trunk/inc/wpems-core-functions.php:398
609
+ msgid "Hours"
610
+ msgstr ""
611
+
612
+ #: trunk/inc/wpems-core-functions.php:399
613
+ msgid "Minutes"
614
+ msgstr ""
615
+
616
+ #: trunk/inc/wpems-core-functions.php:400
617
+ msgid "Seconds"
618
+ msgstr ""
619
+
620
+ #: trunk/inc/wpems-core-functions.php:403
621
+ msgid "Year"
622
+ msgstr ""
623
+
624
+ #: trunk/inc/wpems-core-functions.php:404
625
+ msgid "Month"
626
+ msgstr ""
627
+
628
+ #: trunk/inc/wpems-core-functions.php:405
629
+ msgid "Week"
630
+ msgstr ""
631
+
632
+ #: trunk/inc/wpems-core-functions.php:406
633
+ msgid "Day"
634
+ msgstr ""
635
+
636
+ #: trunk/inc/wpems-core-functions.php:407
637
+ msgid "Hour"
638
+ msgstr ""
639
+
640
+ #: trunk/inc/wpems-core-functions.php:408
641
+ msgid "Minute"
642
+ msgstr ""
643
+
644
+ #: trunk/inc/wpems-core-functions.php:409
645
+ msgid "Second"
646
+ msgstr ""
647
+
648
+ #: trunk/inc/wpems-core-functions.php:413
649
+ msgid "Something went wrong"
650
+ msgstr ""
651
+
652
+ #: trunk/inc/wpems-core-functions.php:1007
653
+ #: trunk/inc/wpems-core-functions.php:1036
654
+ #, php-format
655
+ msgid "<span class=\"event_booking_status cancelled\">%s</span>"
656
+ msgstr ""
657
+
658
+ #: trunk/inc/wpems-core-functions.php:1011
659
+ #: trunk/inc/wpems-core-functions.php:1037
660
+ #, php-format
661
+ msgid "<span class=\"event_booking_status pending\">%s</span>"
662
+ msgstr ""
663
+
664
+ #: trunk/inc/wpems-core-functions.php:1015
665
+ #: trunk/inc/wpems-core-functions.php:1038
666
+ #, php-format
667
+ msgid "<span class=\"event_booking_status processing\">%s</span>"
668
+ msgstr ""
669
+
670
+ #: trunk/inc/wpems-core-functions.php:1019
671
+ #: trunk/inc/wpems-core-functions.php:1039
672
+ #, php-format
673
+ msgid "<span class=\"event_booking_status completed\">%s</span>"
674
+ msgstr ""
675
+
676
+ #: trunk/inc/wpems-core-functions.php:1036
677
+ msgid "Cancelled"
678
+ msgstr ""
679
+
680
+ #: trunk/inc/wpems-core-functions.php:1037
681
+ msgid "Pending"
682
+ msgstr ""
683
+
684
+ #: trunk/inc/wpems-core-functions.php:1038
685
+ msgid "Processing"
686
+ msgstr ""
687
+
688
+ #: trunk/inc/wpems-core-functions.php:1039
689
+ msgid "Completed"
690
+ msgstr ""
691
+
692
+ #: trunk/inc/wpems-core-functions.php:1079
693
+ msgid "Confirm Password is not match."
694
+ msgstr ""
695
+
696
+ #: trunk/inc/wpems-core-functions.php:1086
697
+ #: trunk/inc/wpems-core-functions.php:1095
698
+ #: trunk/inc/wpems-core-functions.php:1097
699
+ #: trunk/inc/wpems-core-functions.php:1101
700
+ #: trunk/inc/wpems-core-functions.php:1120
701
+ msgid "ERROR: "
702
+ msgstr ""
703
+
704
+ #: trunk/inc/wpems-core-functions.php:1086
705
+ msgid "Username is required field."
706
+ msgstr ""
707
+
708
+ #: trunk/inc/wpems-core-functions.php:1088
709
+ msgid "Username is already exists."
710
+ msgstr ""
711
+
712
+ #: trunk/inc/wpems-core-functions.php:1095
713
+ msgid "Please provide a valid email address."
714
+ msgstr ""
715
+
716
+ #: trunk/inc/wpems-core-functions.php:1097
717
+ msgid "An account is already registered with your email address. Please login."
718
+ msgstr ""
719
+
720
+ #: trunk/inc/wpems-core-functions.php:1101
721
+ msgid "Password is required field."
722
+ msgstr ""
723
+
724
+ #: trunk/inc/wpems-core-functions.php:1120
725
+ msgid "Couldn't register."
726
+ msgstr ""
727
+
728
+ #: trunk/inc/wpems-core-functions.php:1233
729
+ msgid "Categories"
730
+ msgstr ""
731
+
732
+ #: trunk/inc/abstracts/class-wpems-abstract-payment-gateway.php:105
733
+ msgid "Payment completed. We will send you email when payment method verify."
734
+ msgstr ""
735
+
736
+ #: trunk/inc/admin/class-wpems-admin-menu.php:33
737
+ msgid "Events Manager"
738
+ msgstr ""
739
+
740
+ #: trunk/inc/admin/class-wpems-admin-menu.php:39
741
+ msgid "TP Event Users"
742
+ msgstr ""
743
+
744
+ #: trunk/inc/admin/class-wpems-admin-menu.php:39
745
+ msgid "Users"
746
+ msgstr ""
747
+
748
+ #: trunk/inc/admin/class-wpems-admin-menu.php:40
749
+ msgid "TP Event Settings"
750
+ msgstr ""
751
+
752
+ #: trunk/inc/admin/class-wpems-admin-menu.php:40
753
+ msgid "Settings"
754
+ msgstr ""
755
+
756
+ #: trunk/inc/admin/class-wpems-admin-metaboxes.php:24
757
+ msgid "Event Settings"
758
+ msgstr ""
759
+
760
+ #: trunk/inc/admin/class-wpems-admin-metaboxes.php:27
761
+ msgid "Booking Information"
762
+ msgstr ""
763
+
764
+ #: trunk/inc/admin/class-wpems-admin-metaboxes.php:30
765
+ msgid "Booking Actions"
766
+ msgstr ""
767
+
768
+ #: trunk/inc/admin/class-wpems-admin-settings.php:58
769
+ msgid "Your settings have been saved."
770
+ msgstr ""
771
+
772
+ #: trunk/inc/admin/class-wpems-admin-settings.php:93
773
+ msgid "Save changes"
774
+ msgstr ""
775
+
776
+ #: trunk/inc/admin/class-wpems-admin-users.php:22
777
+ msgid "user"
778
+ msgstr ""
779
+
780
+ #: trunk/inc/admin/class-wpems-admin-users.php:23
781
+ msgid "users"
782
+ msgstr ""
783
+
784
+ #: trunk/inc/admin/class-wpems-admin-users.php:69
785
+ msgid "View"
786
+ msgstr ""
787
+
788
+ #: trunk/inc/admin/class-wpems-admin-users.php:80
789
+ msgid "No users found."
790
+ msgstr ""
791
+
792
+ #: trunk/inc/admin/class-wpems-admin-users.php:112
793
+ #: trunk/templates/shortcodes/form-login.php:13
794
+ #: trunk/templates/shortcodes/form-register.php:12
795
+ msgid "Username"
796
+ msgstr ""
797
+
798
+ #: trunk/inc/admin/class-wpems-admin-users.php:113
799
+ msgid "Name"
800
+ msgstr ""
801
+
802
+ #: trunk/inc/admin/class-wpems-admin-users.php:114
803
+ #: trunk/templates/shortcodes/form-register.php:17
804
+ msgid "Email"
805
+ msgstr ""
806
+
807
+ #: trunk/inc/admin/class-wpems-admin-users.php:115
808
+ msgid "Event Booking"
809
+ msgstr ""
810
+
811
+ #: trunk/inc/admin/class-wpems-admin-users.php:242
812
+ msgid "Event Users"
813
+ msgstr ""
814
+
815
+ #: trunk/inc/admin/metaboxes/class-wpems-admin-metabox-event.php:27
816
+ msgid "Please make sure event time is validate"
817
+ msgstr ""
818
+
819
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-checkout.php:23
820
+ msgid "Checkout"
821
+ msgstr ""
822
+
823
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-checkout.php:40
824
+ msgid "Checkout Process"
825
+ msgstr ""
826
+
827
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-checkout.php:41
828
+ msgid "General options for system"
829
+ msgstr ""
830
+
831
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-checkout.php:45
832
+ msgid "Booking times free event/email"
833
+ msgstr ""
834
+
835
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-checkout.php:46
836
+ msgid "This controls how many time booking free event of an email"
837
+ msgstr ""
838
+
839
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-checkout.php:49
840
+ msgid "Once"
841
+ msgstr ""
842
+
843
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-checkout.php:50
844
+ msgid "Many"
845
+ msgstr ""
846
+
847
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-checkout.php:56
848
+ msgid "Cancel payment status"
849
+ msgstr ""
850
+
851
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-checkout.php:57
852
+ msgid "How long cancel a payment (hour)"
853
+ msgstr ""
854
+
855
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-checkout.php:77
856
+ msgid "Checkout General"
857
+ msgstr ""
858
+
859
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-emails.php:23
860
+ msgid "Emails"
861
+ msgstr ""
862
+
863
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-emails.php:40
864
+ msgid "Email Notifications"
865
+ msgstr ""
866
+
867
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-emails.php:44
868
+ msgid "Event register"
869
+ msgstr ""
870
+
871
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-emails.php:45
872
+ msgid "Send notify when user register event"
873
+ msgstr ""
874
+
875
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-emails.php:51
876
+ msgid "From name"
877
+ msgstr ""
878
+
879
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-emails.php:59
880
+ msgid "Email from"
881
+ msgstr ""
882
+
883
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-emails.php:67
884
+ msgid "Subject"
885
+ msgstr ""
886
+
887
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-emails.php:68
888
+ msgid "Register event"
889
+ msgstr ""
890
+
891
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-emails.php:75
892
+ msgid "Account register"
893
+ msgstr ""
894
+
895
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-emails.php:76
896
+ msgid "Send notify when user register account"
897
+ msgstr ""
898
+
899
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-general.php:23
900
+ msgid "General"
901
+ msgstr ""
902
+
903
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-general.php:41
904
+ msgid "General Options"
905
+ msgstr ""
906
+
907
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-general.php:45
908
+ msgid "Event registration"
909
+ msgstr ""
910
+
911
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-general.php:46
912
+ msgid "Allows user register events"
913
+ msgstr ""
914
+
915
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-general.php:52
916
+ msgid "Currency"
917
+ msgstr ""
918
+
919
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-general.php:53
920
+ msgid "This controls what the currency prices"
921
+ msgstr ""
922
+
923
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-general.php:61
924
+ msgid "Currency Position"
925
+ msgstr ""
926
+
927
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-general.php:62
928
+ msgid "This controls the position of the currency symbol"
929
+ msgstr ""
930
+
931
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-general.php:65
932
+ msgid "Left"
933
+ msgstr ""
934
+
935
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-general.php:66
936
+ msgid "Right"
937
+ msgstr ""
938
+
939
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-general.php:67
940
+ msgid "Left with space"
941
+ msgstr ""
942
+
943
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-general.php:68
944
+ msgid "Right with space"
945
+ msgstr ""
946
+
947
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-general.php:75
948
+ msgid "Thousand Separator"
949
+ msgstr ""
950
+
951
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-general.php:82
952
+ msgid "Decimal Separator"
953
+ msgstr ""
954
+
955
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-general.php:89
956
+ msgid "Number of Decimals"
957
+ msgstr ""
958
+
959
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-general.php:97
960
+ msgid "Google Map API Key"
961
+ msgstr ""
962
+
963
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-general.php:99
964
+ msgid ""
965
+ "Refer on https://developers.google.com/maps/documentation/javascript/get-api-"
966
+ "key#get-an-api-key"
967
+ msgstr ""
968
+
969
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-pages.php:27
970
+ msgid "Pages"
971
+ msgstr ""
972
+
973
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-pages.php:47
974
+ msgid "Pages Settings"
975
+ msgstr ""
976
+
977
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-pages.php:51
978
+ msgid "Register Page"
979
+ msgstr ""
980
+
981
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-pages.php:52
982
+ msgid "This controls which the register page"
983
+ msgstr ""
984
+
985
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-pages.php:57
986
+ msgid "Login Page"
987
+ msgstr ""
988
+
989
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-pages.php:58
990
+ msgid "This controls which the login page"
991
+ msgstr ""
992
+
993
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-pages.php:63
994
+ #: trunk/templates/shortcodes/form-login.php:43
995
+ msgid "Forgot Password"
996
+ msgstr ""
997
+
998
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-pages.php:64
999
+ msgid "This controls which the forgot password page"
1000
+ msgstr ""
1001
+
1002
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-pages.php:69
1003
+ #: trunk/templates/shortcodes/reset-password.php:55
1004
+ msgid "Reset Password"
1005
+ msgstr ""
1006
+
1007
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-pages.php:70
1008
+ msgid "This controls which the reset password page"
1009
+ msgstr ""
1010
+
1011
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-pages.php:75
1012
+ msgid "My Account"
1013
+ msgstr ""
1014
+
1015
+ #: trunk/inc/admin/settings/class-wpems-admin-setting-pages.php:76
1016
+ msgid "This controls which the user account page"
1017
+ msgstr ""
1018
+
1019
+ #: trunk/inc/admin/views/metaboxes/booking-actions.php:17
1020
+ msgid "Booking Status"
1021
+ msgstr ""
1022
+
1023
+ #: trunk/inc/admin/views/metaboxes/booking-actions.php:23
1024
+ msgid "Update booking event status"
1025
+ msgstr ""
1026
+
1027
+ #: trunk/inc/admin/views/metaboxes/booking-actions.php:26
1028
+ msgid "Booking Notes"
1029
+ msgstr ""
1030
+
1031
+ #: trunk/inc/admin/views/metaboxes/booking-details.php:34
1032
+ #, php-format
1033
+ msgid "Order %s"
1034
+ msgstr ""
1035
+
1036
+ #: trunk/inc/admin/views/metaboxes/booking-details.php:36
1037
+ #, php-format
1038
+ msgid "Date %s"
1039
+ msgstr ""
1040
+
1041
+ #: trunk/inc/admin/views/metaboxes/booking-details.php:45
1042
+ msgid "Item"
1043
+ msgstr ""
1044
+
1045
+ #: trunk/inc/admin/views/metaboxes/booking-details.php:48
1046
+ #: trunk/templates/emails/register-event.php:26
1047
+ msgid "Payment Method"
1048
+ msgstr ""
1049
+
1050
+ #: trunk/inc/admin/views/metaboxes/booking-details.php:49
1051
+ msgid "Amount"
1052
+ msgstr ""
1053
+
1054
+ #: trunk/inc/admin/views/metaboxes/booking-details.php:58
1055
+ #: trunk/templates/emails/register-event.php:37
1056
+ #: trunk/templates/shortcodes/user-account.php:38
1057
+ msgid "No payment"
1058
+ msgstr ""
1059
+
1060
+ #: trunk/inc/admin/views/metaboxes/booking-details.php:64
1061
+ msgid "Sub Total"
1062
+ msgstr ""
1063
+
1064
+ #: trunk/inc/admin/views/metaboxes/booking-details.php:68
1065
+ msgid "Total"
1066
+ msgstr ""
1067
+
1068
+ #: trunk/inc/admin/views/metaboxes/event-settings.php:41
1069
+ msgid "Set 0 to make it becomes free event"
1070
+ msgstr ""
1071
+
1072
+ #: trunk/inc/admin/views/metaboxes/event-settings.php:47
1073
+ msgid "Start/End"
1074
+ msgstr ""
1075
+
1076
+ #: trunk/inc/admin/views/metaboxes/event-settings.php:54
1077
+ msgid "to"
1078
+ msgstr ""
1079
+
1080
+ #: trunk/inc/admin/views/metaboxes/event-settings.php:65
1081
+ msgid "Location"
1082
+ msgstr ""
1083
+
1084
+ #: trunk/inc/admin/views/metaboxes/event-settings.php:70
1085
+ msgid "You need set up Google Map API Key to show map."
1086
+ msgstr ""
1087
+
1088
+ #: trunk/inc/admin/views/metaboxes/event-settings.php:71
1089
+ msgid "Set up here"
1090
+ msgstr ""
1091
+
1092
+ #: trunk/inc/admin/views/metaboxes/event-settings.php:77
1093
+ msgid "Shortcode"
1094
+ msgstr ""
1095
+
1096
+ #: trunk/inc/admin/views/settings/select-page.php:25
1097
+ msgid "Select Page"
1098
+ msgstr ""
1099
+
1100
+ #: trunk/inc/emails/class-wpems-register-event.php:25
1101
+ #, php-format
1102
+ msgid "Error %s booking ID"
1103
+ msgstr ""
1104
+
1105
+ #: trunk/inc/emails/class-wpems-register-event.php:37
1106
+ msgid "User is not exists!"
1107
+ msgstr ""
1108
+
1109
+ #: trunk/inc/gateways/paypal/class-wpems-payment-gateway-paypal.php:25
1110
+ msgid "PayPal"
1111
+ msgstr ""
1112
+
1113
+ #: trunk/inc/gateways/paypal/class-wpems-payment-gateway-paypal.php:68
1114
+ msgid ""
1115
+ "Payment is completed. We will send you email when payment status is completed"
1116
+ msgstr ""
1117
+
1118
+ #: trunk/inc/gateways/paypal/class-wpems-payment-gateway-paypal.php:70
1119
+ msgid "Booking is cancel."
1120
+ msgstr ""
1121
+
1122
+ #: trunk/inc/gateways/paypal/class-wpems-payment-gateway-paypal.php:139
1123
+ msgid "Paypal Settings"
1124
+ msgstr ""
1125
+
1126
+ #: trunk/inc/gateways/paypal/class-wpems-payment-gateway-paypal.php:140
1127
+ msgid "Make payment via Paypal"
1128
+ msgstr ""
1129
+
1130
+ #: trunk/inc/gateways/paypal/class-wpems-payment-gateway-paypal.php:144
1131
+ msgid "Enable"
1132
+ msgstr ""
1133
+
1134
+ #: trunk/inc/gateways/paypal/class-wpems-payment-gateway-paypal.php:151
1135
+ msgid "Paypal email"
1136
+ msgstr ""
1137
+
1138
+ #: trunk/inc/gateways/paypal/class-wpems-payment-gateway-paypal.php:158
1139
+ msgid "Sandbox mode"
1140
+ msgstr ""
1141
+
1142
+ #: trunk/inc/gateways/paypal/class-wpems-payment-gateway-paypal.php:165
1143
+ msgid "Paypal Sandbox email"
1144
+ msgstr ""
1145
+
1146
+ #: trunk/inc/gateways/paypal/class-wpems-payment-gateway-paypal.php:200
1147
+ msgid "Booking ID is not exists!"
1148
+ msgstr ""
1149
+
1150
+ #: trunk/inc/gateways/paypal/class-wpems-payment-gateway-paypal.php:242
1151
+ msgid ""
1152
+ "Email Business PayPal is invalid. Please contact administrator to setup "
1153
+ "PayPal email."
1154
+ msgstr ""
1155
+
1156
+ #: trunk/inc/widgets/class-wpems-widget-countdown.php:14
1157
+ msgid "WP Event Countdown"
1158
+ msgstr ""
1159
+
1160
+ #: trunk/inc/widgets/class-wpems-widget-countdown.php:15
1161
+ msgid "Countdown timer for event"
1162
+ msgstr ""
1163
+
1164
+ #: trunk/inc/widgets/class-wpems-widget-countdown.php:71
1165
+ msgid "Title:"
1166
+ msgstr ""
1167
+
1168
+ #: trunk/inc/widgets/class-wpems-widget-countdown.php:75
1169
+ msgid "Carousel Slide:"
1170
+ msgstr ""
1171
+
1172
+ #: trunk/inc/widgets/class-wpems-widget-countdown.php:79
1173
+ msgid "Navigation:"
1174
+ msgstr ""
1175
+
1176
+ #: trunk/inc/widgets/class-wpems-widget-countdown.php:83
1177
+ msgid "Pagiantion:"
1178
+ msgstr ""
1179
+
1180
+ #: trunk/inc/widgets/class-wpems-widget-countdown.php:87
1181
+ msgid "Events:"
1182
+ msgstr ""
1183
+
1184
+ #: trunk/templates/emails/register-event.php:11
1185
+ #, php-format
1186
+ msgid "Hello %s!"
1187
+ msgstr ""
1188
+
1189
+ #: trunk/templates/emails/register-event.php:14
1190
+ #, php-format
1191
+ msgid ""
1192
+ "You have been registered successful our <a href=\"%s\">event</a>. Please go "
1193
+ "to the following link for more details.<a href=\"%s\">Your account.</a>"
1194
+ msgstr ""
1195
+
1196
+ #: trunk/templates/emails/register-event.php:23
1197
+ #: trunk/templates/shortcodes/user-account.php:22
1198
+ msgid "Type"
1199
+ msgstr ""
1200
+
1201
+ #: trunk/templates/loop/booking-form.php:41
1202
+ msgid ""
1203
+ "There are no payment gateway available. Please contact administrator to "
1204
+ "setup it."
1205
+ msgstr ""
1206
+
1207
+ #: trunk/templates/loop/booking-form.php:50
1208
+ #: trunk/templates/loop/register.php:35
1209
+ msgid "Register Now"
1210
+ msgstr ""
1211
+
1212
+ #: trunk/templates/loop/countdown.php:16
1213
+ msgid "This event has expired"
1214
+ msgstr ""
1215
+
1216
+ #: trunk/templates/loop/excerpt.php:12
1217
+ msgid "View Detail"
1218
+ msgstr ""
1219
+
1220
+ #: trunk/templates/loop/register.php:22
1221
+ msgid "Total Slot:"
1222
+ msgstr ""
1223
+
1224
+ #: trunk/templates/loop/register.php:26
1225
+ msgid "Booked Slot:"
1226
+ msgstr ""
1227
+
1228
+ #: trunk/templates/loop/register.php:30
1229
+ msgid "Cost:"
1230
+ msgstr ""
1231
+
1232
+ #: trunk/templates/shortcodes/event-countdown.php:26
1233
+ msgid "Invalid Event ID"
1234
+ msgstr ""
1235
+
1236
+ #: trunk/templates/shortcodes/forgot-password.php:20
1237
+ msgid ""
1238
+ "Please enter your username or email address. You will receive a link to "
1239
+ "create a new password via email."
1240
+ msgstr ""
1241
+
1242
+ #: trunk/templates/shortcodes/forgot-password.php:23
1243
+ msgid "Username or Email:"
1244
+ msgstr ""
1245
+
1246
+ #: trunk/templates/shortcodes/forgot-password.php:36
1247
+ msgid "Get New Password"
1248
+ msgstr ""
1249
+
1250
+ #: trunk/templates/shortcodes/forgot-password.php:43
1251
+ #: trunk/templates/shortcodes/form-login.php:34
1252
+ msgid "Login"
1253
+ msgstr ""
1254
+
1255
+ #: trunk/templates/shortcodes/forgot-password.php:48
1256
+ msgid "Create new user"
1257
+ msgstr ""
1258
+
1259
+ #: trunk/templates/shortcodes/form-login.php:18
1260
+ #: trunk/templates/shortcodes/form-register.php:22
1261
+ #: trunk/templates/shortcodes/reset-password.php:19
1262
+ msgid "Password"
1263
+ msgstr ""
1264
+
1265
+ #: trunk/templates/shortcodes/form-login.php:26
1266
+ msgid "Remember me"
1267
+ msgstr ""
1268
+
1269
+ #: trunk/templates/shortcodes/form-login.php:41
1270
+ #: trunk/templates/shortcodes/form-register.php:43
1271
+ #: trunk/templates/shortcodes/reset-password.php:65
1272
+ msgid "Register"
1273
+ msgstr ""
1274
+
1275
+ #: trunk/templates/shortcodes/form-register.php:27
1276
+ #: trunk/templates/shortcodes/reset-password.php:31
1277
+ msgid "Confirm Password"
1278
+ msgstr ""
1279
+
1280
+ #: trunk/templates/shortcodes/form-register.php:36
1281
+ msgid "Registration confirmation will be emailed to you."
1282
+ msgstr ""
1283
+
1284
+ #: trunk/templates/shortcodes/form-register.php:49
1285
+ #: trunk/templates/shortcodes/reset-password.php:61
1286
+ msgid "Log in"
1287
+ msgstr ""
1288
+
1289
+ #: trunk/templates/shortcodes/form-register.php:50
1290
+ msgid "Password Lost and Found"
1291
+ msgstr ""
1292
+
1293
+ #: trunk/templates/shortcodes/form-register.php:50
1294
+ msgid "Forgot password?"
1295
+ msgstr ""
1296
+
1297
+ #: trunk/templates/shortcodes/register-completed.php:9
1298
+ #, php-format
1299
+ msgid ""
1300
+ "You have successfully registered to <strong>%s</strong>. We have emailed "
1301
+ "your password to <i>%s</i> the email address you entered."
1302
+ msgstr ""
1303
+
1304
+ #: trunk/templates/shortcodes/register-error.php:7
1305
+ msgid "Oops! Something went wrong."
1306
+ msgstr ""
1307
+
1308
+ #: trunk/templates/shortcodes/user-account.php:11
1309
+ #, php-format
1310
+ msgid "You are not <a href=\"%s\">login</a>"
1311
+ msgstr ""
1312
+
1313
+ #: trunk/templates/shortcodes/user-account.php:20
1314
+ msgid "Booking ID"
1315
+ msgstr ""
1316
+
1317
+ #: trunk/templates/shortcodes/user-account.php:25
1318
+ msgid "Method"
1319
+ msgstr ""
1320
+
1321
+ #: trunk/templates/shortcodes/user-account.php:56
1322
+ #: trunk/templates/shortcodes/user-account.php:68
1323
+ msgid "« Previous"
1324
+ msgstr ""
1325
+
1326
+ #: trunk/templates/shortcodes/user-account.php:57
1327
+ #: trunk/templates/shortcodes/user-account.php:69
1328
+ msgid "Next »"
1329
+ msgstr ""
1330
+
1331
+ #: trunk/templates/shortcodes/user-cannot-register.php:7
1332
+ msgid "User registration is currently not allowed."
1333
+ msgstr ""
license.txt ADDED
@@ -0,0 +1,339 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ GNU GENERAL PUBLIC LICENSE
2
+ Version 2, June 1991
3
+
4
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
5
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
6
+ Everyone is permitted to copy and distribute verbatim copies
7
+ of this license document, but changing it is not allowed.
8
+
9
+ Preamble
10
+
11
+ The licenses for most software are designed to take away your
12
+ freedom to share and change it. By contrast, the GNU General Public
13
+ License is intended to guarantee your freedom to share and change free
14
+ software--to make sure the software is free for all its users. This
15
+ General Public License applies to most of the Free Software
16
+ Foundation's software and to any other program whose authors commit to
17
+ using it. (Some other Free Software Foundation software is covered by
18
+ the GNU Lesser General Public License instead.) You can apply it to
19
+ your programs, too.
20
+
21
+ When we speak of free software, we are referring to freedom, not
22
+ price. Our General Public Licenses are designed to make sure that you
23
+ have the freedom to distribute copies of free software (and charge for
24
+ this service if you wish), that you receive source code or can get it
25
+ if you want it, that you can change the software or use pieces of it
26
+ in new free programs; and that you know you can do these things.
27
+
28
+ To protect your rights, we need to make restrictions that forbid
29
+ anyone to deny you these rights or to ask you to surrender the rights.
30
+ These restrictions translate to certain responsibilities for you if you
31
+ distribute copies of the software, or if you modify it.
32
+
33
+ For example, if you distribute copies of such a program, whether
34
+ gratis or for a fee, you must give the recipients all the rights that
35
+ you have. You must make sure that they, too, receive or can get the
36
+ source code. And you must show them these terms so they know their
37
+ rights.
38
+
39
+ We protect your rights with two steps: (1) copyright the software, and
40
+ (2) offer you this license which gives you legal permission to copy,
41
+ distribute and/or modify the software.
42
+
43
+ Also, for each author's protection and ours, we want to make certain
44
+ that everyone understands that there is no warranty for this free
45
+ software. If the software is modified by someone else and passed on, we
46
+ want its recipients to know that what they have is not the original, so
47
+ that any problems introduced by others will not reflect on the original
48
+ authors' reputations.
49
+
50
+ Finally, any free program is threatened constantly by software
51
+ patents. We wish to avoid the danger that redistributors of a free
52
+ program will individually obtain patent licenses, in effect making the
53
+ program proprietary. To prevent this, we have made it clear that any
54
+ patent must be licensed for everyone's free use or not licensed at all.
55
+
56
+ The precise terms and conditions for copying, distribution and
57
+ modification follow.
58
+
59
+ GNU GENERAL PUBLIC LICENSE
60
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61
+
62
+ 0. This License applies to any program or other work which contains
63
+ a notice placed by the copyright holder saying it may be distributed
64
+ under the terms of this General Public License. The "Program", below,
65
+ refers to any such program or work, and a "work based on the Program"
66
+ means either the Program or any derivative work under copyright law:
67
+ that is to say, a work containing the Program or a portion of it,
68
+ either verbatim or with modifications and/or translated into another
69
+ language. (Hereinafter, translation is included without limitation in
70
+ the term "modification".) Each licensee is addressed as "you".
71
+
72
+ Activities other than copying, distribution and modification are not
73
+ covered by this License; they are outside its scope. The act of
74
+ running the Program is not restricted, and the output from the Program
75
+ is covered only if its contents constitute a work based on the
76
+ Program (independent of having been made by running the Program).
77
+ Whether that is true depends on what the Program does.
78
+
79
+ 1. You may copy and distribute verbatim copies of the Program's
80
+ source code as you receive it, in any medium, provided that you
81
+ conspicuously and appropriately publish on each copy an appropriate
82
+ copyright notice and disclaimer of warranty; keep intact all the
83
+ notices that refer to this License and to the absence of any warranty;
84
+ and give any other recipients of the Program a copy of this License
85
+ along with the Program.
86
+
87
+ You may charge a fee for the physical act of transferring a copy, and
88
+ you may at your option offer warranty protection in exchange for a fee.
89
+
90
+ 2. You may modify your copy or copies of the Program or any portion
91
+ of it, thus forming a work based on the Program, and copy and
92
+ distribute such modifications or work under the terms of Section 1
93
+ above, provided that you also meet all of these conditions:
94
+
95
+ a) You must cause the modified files to carry prominent notices
96
+ stating that you changed the files and the date of any change.
97
+
98
+ b) You must cause any work that you distribute or publish, that in
99
+ whole or in part contains or is derived from the Program or any
100
+ part thereof, to be licensed as a whole at no charge to all third
101
+ parties under the terms of this License.
102
+
103
+ c) If the modified program normally reads commands interactively
104
+ when run, you must cause it, when started running for such
105
+ interactive use in the most ordinary way, to print or display an
106
+ announcement including an appropriate copyright notice and a
107
+ notice that there is no warranty (or else, saying that you provide
108
+ a warranty) and that users may redistribute the program under
109
+ these conditions, and telling the user how to view a copy of this
110
+ License. (Exception: if the Program itself is interactive but
111
+ does not normally print such an announcement, your work based on
112
+ the Program is not required to print an announcement.)
113
+
114
+ These requirements apply to the modified work as a whole. If
115
+ identifiable sections of that work are not derived from the Program,
116
+ and can be reasonably considered independent and separate works in
117
+ themselves, then this License, and its terms, do not apply to those
118
+ sections when you distribute them as separate works. But when you
119
+ distribute the same sections as part of a whole which is a work based
120
+ on the Program, the distribution of the whole must be on the terms of
121
+ this License, whose permissions for other licensees extend to the
122
+ entire whole, and thus to each and every part regardless of who wrote it.
123
+
124
+ Thus, it is not the intent of this section to claim rights or contest
125
+ your rights to work written entirely by you; rather, the intent is to
126
+ exercise the right to control the distribution of derivative or
127
+ collective works based on the Program.
128
+
129
+ In addition, mere aggregation of another work not based on the Program
130
+ with the Program (or with a work based on the Program) on a volume of
131
+ a storage or distribution medium does not bring the other work under
132
+ the scope of this License.
133
+
134
+ 3. You may copy and distribute the Program (or a work based on it,
135
+ under Section 2) in object code or executable form under the terms of
136
+ Sections 1 and 2 above provided that you also do one of the following:
137
+
138
+ a) Accompany it with the complete corresponding machine-readable
139
+ source code, which must be distributed under the terms of Sections
140
+ 1 and 2 above on a medium customarily used for software interchange; or,
141
+
142
+ b) Accompany it with a written offer, valid for at least three
143
+ years, to give any third party, for a charge no more than your
144
+ cost of physically performing source distribution, a complete
145
+ machine-readable copy of the corresponding source code, to be
146
+ distributed under the terms of Sections 1 and 2 above on a medium
147
+ customarily used for software interchange; or,
148
+
149
+ c) Accompany it with the information you received as to the offer
150
+ to distribute corresponding source code. (This alternative is
151
+ allowed only for noncommercial distribution and only if you
152
+ received the program in object code or executable form with such
153
+ an offer, in accord with Subsection b above.)
154
+
155
+ The source code for a work means the preferred form of the work for
156
+ making modifications to it. For an executable work, complete source
157
+ code means all the source code for all modules it contains, plus any
158
+ associated interface definition files, plus the scripts used to
159
+ control compilation and installation of the executable. However, as a
160
+ special exception, the source code distributed need not include
161
+ anything that is normally distributed (in either source or binary
162
+ form) with the major components (compiler, kernel, and so on) of the
163
+ operating system on which the executable runs, unless that component
164
+ itself accompanies the executable.
165
+
166
+ If distribution of executable or object code is made by offering
167
+ access to copy from a designated place, then offering equivalent
168
+ access to copy the source code from the same place counts as
169
+ distribution of the source code, even though third parties are not
170
+ compelled to copy the source along with the object code.
171
+
172
+ 4. You may not copy, modify, sublicense, or distribute the Program
173
+ except as expressly provided under this License. Any attempt
174
+ otherwise to copy, modify, sublicense or distribute the Program is
175
+ void, and will automatically terminate your rights under this License.
176
+ However, parties who have received copies, or rights, from you under
177
+ this License will not have their licenses terminated so long as such
178
+ parties remain in full compliance.
179
+
180
+ 5. You are not required to accept this License, since you have not
181
+ signed it. However, nothing else grants you permission to modify or
182
+ distribute the Program or its derivative works. These actions are
183
+ prohibited by law if you do not accept this License. Therefore, by
184
+ modifying or distributing the Program (or any work based on the
185
+ Program), you indicate your acceptance of this License to do so, and
186
+ all its terms and conditions for copying, distributing or modifying
187
+ the Program or works based on it.
188
+
189
+ 6. Each time you redistribute the Program (or any work based on the
190
+ Program), the recipient automatically receives a license from the
191
+ original licensor to copy, distribute or modify the Program subject to
192
+ these terms and conditions. You may not impose any further
193
+ restrictions on the recipients' exercise of the rights granted herein.
194
+ You are not responsible for enforcing compliance by third parties to
195
+ this License.
196
+
197
+ 7. If, as a consequence of a court judgment or allegation of patent
198
+ infringement or for any other reason (not limited to patent issues),
199
+ conditions are imposed on you (whether by court order, agreement or
200
+ otherwise) that contradict the conditions of this License, they do not
201
+ excuse you from the conditions of this License. If you cannot
202
+ distribute so as to satisfy simultaneously your obligations under this
203
+ License and any other pertinent obligations, then as a consequence you
204
+ may not distribute the Program at all. For example, if a patent
205
+ license would not permit royalty-free redistribution of the Program by
206
+ all those who receive copies directly or indirectly through you, then
207
+ the only way you could satisfy both it and this License would be to
208
+ refrain entirely from distribution of the Program.
209
+
210
+ If any portion of this section is held invalid or unenforceable under
211
+ any particular circumstance, the balance of the section is intended to
212
+ apply and the section as a whole is intended to apply in other
213
+ circumstances.
214
+
215
+ It is not the purpose of this section to induce you to infringe any
216
+ patents or other property right claims or to contest validity of any
217
+ such claims; this section has the sole purpose of protecting the
218
+ integrity of the free software distribution system, which is
219
+ implemented by public license practices. Many people have made
220
+ generous contributions to the wide range of software distributed
221
+ through that system in reliance on consistent application of that
222
+ system; it is up to the author/donor to decide if he or she is willing
223
+ to distribute software through any other system and a licensee cannot
224
+ impose that choice.
225
+
226
+ This section is intended to make thoroughly clear what is believed to
227
+ be a consequence of the rest of this License.
228
+
229
+ 8. If the distribution and/or use of the Program is restricted in
230
+ certain countries either by patents or by copyrighted interfaces, the
231
+ original copyright holder who places the Program under this License
232
+ may add an explicit geographical distribution limitation excluding
233
+ those countries, so that distribution is permitted only in or among
234
+ countries not thus excluded. In such case, this License incorporates
235
+ the limitation as if written in the body of this License.
236
+
237
+ 9. The Free Software Foundation may publish revised and/or new versions
238
+ of the General Public License from time to time. Such new versions will
239
+ be similar in spirit to the present version, but may differ in detail to
240
+ address new problems or concerns.
241
+
242
+ Each version is given a distinguishing version number. If the Program
243
+ specifies a version number of this License which applies to it and "any
244
+ later version", you have the option of following the terms and conditions
245
+ either of that version or of any later version published by the Free
246
+ Software Foundation. If the Program does not specify a version number of
247
+ this License, you may choose any version ever published by the Free Software
248
+ Foundation.
249
+
250
+ 10. If you wish to incorporate parts of the Program into other free
251
+ programs whose distribution conditions are different, write to the author
252
+ to ask for permission. For software which is copyrighted by the Free
253
+ Software Foundation, write to the Free Software Foundation; we sometimes
254
+ make exceptions for this. Our decision will be guided by the two goals
255
+ of preserving the free status of all derivatives of our free software and
256
+ of promoting the sharing and reuse of software generally.
257
+
258
+ NO WARRANTY
259
+
260
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261
+ FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262
+ OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263
+ PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264
+ OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
266
+ TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
267
+ PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268
+ REPAIR OR CORRECTION.
269
+
270
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272
+ REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273
+ INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274
+ OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275
+ TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276
+ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277
+ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278
+ POSSIBILITY OF SUCH DAMAGES.
279
+
280
+ END OF TERMS AND CONDITIONS
281
+
282
+ How to Apply These Terms to Your New Programs
283
+
284
+ If you develop a new program, and you want it to be of the greatest
285
+ possible use to the public, the best way to achieve this is to make it
286
+ free software which everyone can redistribute and change under these terms.
287
+
288
+ To do so, attach the following notices to the program. It is safest
289
+ to attach them to the start of each source file to most effectively
290
+ convey the exclusion of warranty; and each file should have at least
291
+ the "copyright" line and a pointer to where the full notice is found.
292
+
293
+ <one line to give the program's name and a brief idea of what it does.>
294
+ Copyright (C) <year> <name of author>
295
+
296
+ This program is free software; you can redistribute it and/or modify
297
+ it under the terms of the GNU General Public License as published by
298
+ the Free Software Foundation; either version 2 of the License, or
299
+ (at your option) any later version.
300
+
301
+ This program is distributed in the hope that it will be useful,
302
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
303
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
304
+ GNU General Public License for more details.
305
+
306
+ You should have received a copy of the GNU General Public License along
307
+ with this program; if not, write to the Free Software Foundation, Inc.,
308
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
309
+
310
+ Also add information on how to contact you by electronic and paper mail.
311
+
312
+ If the program is interactive, make it output a short notice like this
313
+ when it starts in an interactive mode:
314
+
315
+ Gnomovision version 69, Copyright (C) year name of author
316
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
317
+ This is free software, and you are welcome to redistribute it
318
+ under certain conditions; type `show c' for details.
319
+
320
+ The hypothetical commands `show w' and `show c' should show the appropriate
321
+ parts of the General Public License. Of course, the commands you use may
322
+ be called something other than `show w' and `show c'; they could even be
323
+ mouse-clicks or menu items--whatever suits your program.
324
+
325
+ You should also get your employer (if you work as a programmer) or your
326
+ school, if any, to sign a "copyright disclaimer" for the program, if
327
+ necessary. Here is a sample; alter the names:
328
+
329
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
330
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
331
+
332
+ <signature of Ty Coon>, 1 April 1989
333
+ Ty Coon, President of Vice
334
+
335
+ This General Public License does not permit incorporating your program into
336
+ proprietary programs. If your program is a subroutine library, you may
337
+ consider it more useful to permit linking proprietary applications with the
338
+ library. If this is what you want to do, use the GNU Lesser General
339
+ Public License instead of this License.
readme.txt ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === WP Events Manager ===
2
+ Contributors: thimpress, leehld
3
+ Donate link: https://thimpress.com/
4
+ Tags: event, event management, events, registration, bookings, tickets, locations, google maps
5
+ Requires at least: 4.6
6
+ Tested up to: 4.9.4
7
+ Stable tag: trunk
8
+ License: GPLv2 or later
9
+ License URI: https://www.gnu.org/licenses/gpl-2.0.html
10
+
11
+ The all in one Events Manager for WordPress: create and manage events, sell event tickets online easily. No Coding Required.
12
+
13
+ == Description ==
14
+
15
+ ###What is WP Events Manager?###
16
+
17
+ WP Events Manager is a powerful Events Manager plugin with all of the most important features of an Event Website.
18
+
19
+ It helps you easier manage all of your events and even help you sell your tickets online.
20
+
21
+ ###What can WP Events Manager do?###
22
+
23
+ * Set up events with:
24
+ * Quantity (number of tickets)
25
+ * Ticket Price
26
+ * Start date / End date
27
+ * Location (Google Map Integration)
28
+ * ShortCode - to embed into other posts, other places on your site.
29
+ * Featured Event Image, Event Category - Easily group and manage events
30
+ * Manage Users : Who join what event
31
+ * Currency manage: You can choose the currency of your own with Thousand separator, decimal separators and more.
32
+ * Send notify when user register events, send notification when user register accounts, ...
33
+ * Payment/Checkout option:
34
+ * Checkout with Paypal
35
+ * Set up Cancel Payment status
36
+ * Limit number of times people register
37
+
38
+ ###WordPress Themes for Events###
39
+
40
+ To best use this theme, we suggest you use premium high quality themes made by ThimPress:
41
+
42
+ **[Best Education WordPress Theme](https://themeforest.net/item/education-wordpress-theme-education-wp/14058034?utm_source=wporg&utm_medium=wphotelbooking&ref=thimpress&utm_campaign=wphotelbooking)**
43
+
44
+ **[Best Theme for Coach, Mentor, Selling courses](https://themeforest.net/item/speaker-and-life-coach-wordpress-theme-coaching-wp/17097658?utm_source=wporg&utm_medium=wphotelbooking&ref=thimpress&utm_campaign=wphotelbooking)**
45
+
46
+ **[Best Hotel WordPress Theme](http://themeforest.net/item/hotel-wordpress-theme-sailing/13321455?utm_source=wporg&utm_medium=wphotelbooking&ref=thimpress&utm_campaign=wphotelbooking)**
47
+
48
+
49
+ ###Connect with us###
50
+ To stay in touch and update about FundPress's future releases and features, you can connect with us via:
51
+ - [Facebook](https://www.facebook.com/ThimPress/)
52
+ - [Twitter](http://twitter.com/thimpress)
53
+ - [Website](http://thimpress.com/). On this website, we even have an exclusive support section for premium products. But we always want to help, so feel free to ask.
54
+
55
+ == Installation ==
56
+
57
+ **From your WordPress dashboard**
58
+ 1. Visit 'Plugin > Add new'.
59
+ 2. Search for 'WP Events Manager'.
60
+ 3. Activate WP Events Manager from your Plugins page.
61
+
62
+ **From WordPress.org**
63
+ 1. Search, select and download WP Events Manager.
64
+ 2. Activate the plugin through the 'Plugins' menu in WordPress Dashboard.
65
+
66
+
67
+ == Frequently Asked Questions ==
68
+
69
+ == Screenshots ==
70
+
71
+ 1. Single Event Page
72
+ 2. Create A New Event
73
+ 3. Archive Event Page
74
+ 4. General Settings
75
+ 5. Page Settings
76
+ 6. Email Settings
77
+ 7. Checkout Settings
78
+
79
+ == Changelog ==
80
+
81
+ = 1.0.0 =
82
+ - An amazing Events Manager plugin for WordPress was born
83
+
84
+ = 2.0.0 =
85
+ - Fix timezone countdown
86
+ - Rebuild Core
87
+ - Update booking detail page
88
+ - Update event countdown widget
89
+ - Update event category template
90
+ - Add event note
91
+ - Add booking note
92
+ - Add map location for event
93
+ - Add setting for set up Google map API key
94
+ - Add event category taxonomy
95
+ - Add woocommerce payment add-on
96
+
97
+ = 2.0.1 =
98
+ - Remove unnecessary caps and roles
99
+
100
+ = 2.0.2 =
101
+ - Fix register user process
102
+ - Remove event note
103
+
104
+ = 2.0.3 =
105
+ - Fix deactive previous version process for multisite
106
+ - Update Woocomerce payment add-on for Woocommerce version 3.x
107
+
108
+ = 2.0.4 =
109
+ - Update do shortcodes in default pages
110
+
111
+ = 2.0.5 =
112
+ - Fix revolution slider with content filter
113
+
114
+ = 2.0.6 =
115
+ - Fix content filter
116
+
117
+ = 2.0.7 =
118
+ - Support some functions of old versions
119
+ - Add custom event category columns
120
+
121
+ = 2.0.8 =
122
+ - Sync event date in database
123
+
124
+ = 2.1.3 =
125
+ - Fix event status and admin archive event page
126
+
127
+ = 2.1.4 =
128
+ - Fix update booking status with PHP 7
129
+ - Update auto shortcode redirect
130
+
131
+ == Upgrade Notice ==
132
+
templates/archive-event.php ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The Template for displaying all archive products.
4
+ *
5
+ * Override this template by copying it to yourtheme/tp-event/templates/archive-event.php
6
+ *
7
+ * @author ThimPress
8
+ * @package tp-event/template
9
+ * @version 1.0
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit; // Exit if accessed directly
14
+ }
15
+
16
+ get_header(); ?>
17
+
18
+ <?php
19
+ /**
20
+ * tp_event_before_main_content hook
21
+ *
22
+ * @hooked tp_event_output_content_wrapper - 10 (outputs opening divs for the content)
23
+ * @hooked tp_event_breadcrumb - 20
24
+ */
25
+ do_action( 'tp_event_before_main_content' );
26
+ ?>
27
+
28
+ <?php
29
+ /**
30
+ * tp_event_archive_description hook
31
+ *
32
+ * @hooked tp_event_taxonomy_archive_description - 10
33
+ * @hooked tp_event_room_archive_description - 10
34
+ */
35
+ do_action( 'tp_event_archive_description' );
36
+ ?>
37
+
38
+ <?php if ( have_posts() ) : ?>
39
+
40
+ <?php
41
+ /**
42
+ * tp_event_before_event_loop hook
43
+ *
44
+ * @hooked tp_event_result_count - 20
45
+ * @hooked tp_event_catalog_ordering - 30
46
+ */
47
+ do_action( 'tp_event_before_event_loop' );
48
+ ?>
49
+
50
+ <ul>
51
+
52
+ <?php while ( have_posts() ) : the_post(); ?>
53
+
54
+ <?php wpems_get_template_part( 'content', 'event' ); ?>
55
+
56
+ <?php endwhile; // end of the loop. ?>
57
+
58
+ </ul>
59
+
60
+ <?php
61
+ /**
62
+ * tp_event_after_event_loop hook
63
+ *
64
+ * @hooked tp_event_pagination - 10
65
+ */
66
+ do_action( 'tp_event_after_event_loop' );
67
+ ?>
68
+
69
+ <?php endif; ?>
70
+
71
+ <?php
72
+ /**
73
+ * tp_event_after_main_content hook
74
+ *
75
+ * @hooked tp_event_output_content_wrapper_end - 10 (outputs closing divs for the content)
76
+ */
77
+ do_action( 'tp_event_after_main_content' );
78
+ ?>
79
+
80
+ <?php
81
+ /**
82
+ * tp_event_sidebar hook
83
+ *
84
+ * @hooked tp_event_get_sidebar - 10
85
+ */
86
+ do_action( 'tp_event_sidebar' );
87
+ ?>
88
+
89
+ <?php get_footer(); ?>
templates/content-event.php ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The template for displaying event content in the single-event.php template
4
+ *
5
+ * Override this template by copying it to yourtheme/tp-event/templates/content-event.php
6
+ *
7
+ * @author ThimPress
8
+ * @package tp-event
9
+ * @version 1.0
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit; // Exit if accessed directly
14
+ }
15
+
16
+ ?>
17
+
18
+ <?php
19
+ /**
20
+ * tp_event_before_loop_event hook
21
+ *
22
+ */
23
+ do_action( 'tp_event_before_loop_event' );
24
+
25
+ if ( post_password_required() ) {
26
+ echo get_the_password_form();
27
+ return;
28
+ }
29
+ ?>
30
+
31
+ <li id="event-<?php the_ID(); ?>" <?php post_class(); ?>>
32
+
33
+ <?php
34
+ /**
35
+ * tp_event_before_loop_event_summary hook
36
+ *
37
+ * @hooked tp_event_show_event_sale_flash - 10
38
+ * @hooked tp_event_show_event_images - 20
39
+ */
40
+ do_action( 'tp_event_before_loop_event_item' );
41
+ ?>
42
+
43
+ <div class="summary entry-summary">
44
+
45
+ <?php
46
+
47
+ /**
48
+ * tp_event_single_event_thumbnail hook
49
+ */
50
+ do_action( 'tp_event_single_event_thumbnail' );
51
+
52
+ /**
53
+ * tp_event_loop_event_count hook
54
+ */
55
+ do_action( 'tp_event_loop_event_countdown' );
56
+
57
+ /**
58
+ * tp_event_single_event_title hook
59
+ */
60
+ do_action( 'tp_event_single_event_title' );
61
+
62
+ /**
63
+ * tp_event_single_event_content hook
64
+ */
65
+ do_action( 'tp_event_single_event_content' );
66
+ ?>
67
+
68
+ </div><!-- .summary -->
69
+
70
+ <?php
71
+ /**
72
+ * tp_event_after_loop_event_item hook
73
+ *
74
+ * @hooked tp_event_show_event_sale_flash - 10
75
+ * @hooked tp_event_show_event_images - 20
76
+ */
77
+ do_action( 'tp_event_after_loop_event_item' );
78
+ ?>
79
+
80
+ </li>
81
+
82
+ <?php do_action( 'tp_event_after_loop_event' ); ?>
templates/content-single-event.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <article id="tp_event-<?php the_ID(); ?>" <?php post_class( 'tp_single_event' ); ?>>
2
+
3
+ <?php
4
+ /**
5
+ * tp_event_before_single_event hook
6
+ *
7
+ */
8
+ do_action( 'tp_event_before_single_event' );
9
+ ?>
10
+
11
+ <div class="summary entry-summary">
12
+
13
+ <?php
14
+ /**
15
+ * tp_event_single_event_title hook
16
+ */
17
+ do_action( 'tp_event_single_event_title' );
18
+
19
+ /**
20
+ * tp_event_single_event_thumbnail hook
21
+ */
22
+ do_action( 'tp_event_single_event_thumbnail' );
23
+
24
+ /**
25
+ * tp_event_loop_event_countdown hook
26
+ */
27
+ do_action( 'tp_event_loop_event_countdown' );
28
+
29
+ /**
30
+ * tp_event_single_event_content hook
31
+ */
32
+ do_action( 'tp_event_single_event_content' );
33
+
34
+ /**
35
+ * tp_event_loop_event_location hook
36
+ */
37
+ do_action( 'tp_event_loop_event_location' );
38
+ ?>
39
+
40
+ </div><!-- .summary -->
41
+
42
+ <?php
43
+ /**
44
+ * tp_event_after_single_event hook
45
+ *
46
+ * @hooked tp_event_after_single_event - 10
47
+ */
48
+ do_action( 'tp_event_after_single_event' );
49
+ ?>
50
+
51
+ </article><!-- #product-<?php the_ID(); ?> -->
templates/emails/register-event.php ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+
6
+ if ( !$booking || !$user ) {
7
+ return;
8
+ }
9
+ ?>
10
+
11
+ <h2><?php printf( __( 'Hello %s!', 'wp-events-manager' ), $user->data->display_name ); ?></h2>
12
+ <?php
13
+ printf(
14
+ __( 'You have been registered successful our <a href="%s">event</a>. Please go to the following link for more details.<a href="%s">Your account.</a>', 'wp-events-manager' ), get_permalink( $booking->event_id ), wpems_account_url()
15
+ );
16
+ ?>
17
+
18
+ <table class="event_auth_admin_table_booking">
19
+ <thead>
20
+ <tr>
21
+ <th style="border: 1px solid #eee"><?php _e( 'ID', 'wp-events-manager' ) ?></th>
22
+ <th style="border: 1px solid #eee"><?php _e( 'Event', 'wp-events-manager' ) ?></th>
23
+ <th style="border: 1px solid #eee"><?php _e( 'Type', 'wp-events-manager' ) ?></th>
24
+ <th style="border: 1px solid #eee"><?php _e( 'Quantity', 'wp-events-manager' ) ?></th>
25
+ <th style="border: 1px solid #eee"><?php _e( 'Cost', 'wp-events-manager' ) ?></th>
26
+ <th style="border: 1px solid #eee"><?php _e( 'Payment Method', 'wp-events-manager' ) ?></th>
27
+ <th style="border: 1px solid #eee"><?php _e( 'Status', 'wp-events-manager' ) ?></th>
28
+ </tr>
29
+ </thead>
30
+ <tbody>
31
+ <tr>
32
+ <td style="border: 1px solid #eee"><?php printf( '%s', wpems_format_ID( $booking->ID ) ) ?></td>
33
+ <td style="border: 1px solid #eee"><?php printf( '<a href="%s">%s</a>', get_permalink( $booking->event_id ), get_the_title( $booking->event_id ) ) ?></td>
34
+ <td style="border: 1px solid #eee"><?php printf( '%s', floatval( $booking->price ) == 0 ? __( 'Free', 'wp-events-manager' ) : __( 'Cost', 'wp-events-manager' ) ) ?></td>
35
+ <td style="border: 1px solid #eee"><?php printf( '%s', $booking->qty ) ?></td>
36
+ <td style="border: 1px solid #eee"><?php printf( '%s', wpems_format_price( floatval( $booking->price ), $booking->currency ) ) ?></td>
37
+ <td style="border: 1px solid #eee"><?php printf( '%s', $booking->payment_id ? wpems_get_payment_title( $booking->payment_id ) : __( 'No payment', 'wp-events-manager' ) ) ?></td>
38
+ <td style="border: 1px solid #eee">
39
+ <?php
40
+ $return = array();
41
+ $return[] = sprintf( '%s', wpems_booking_status( $booking->ID ) );
42
+ $return[] = $booking->payment_id ? sprintf( '(%s)', wpems_get_payment_title( $booking->payment_id ) ) : '';
43
+ $return = implode( '', $return );
44
+ printf( '%s', $return );
45
+ ?>
46
+ </td>
47
+ </tr>
48
+ </tbody>
49
+ </table>
50
+ <style type="text/css">
51
+ table td,
52
+ table th{
53
+ padding: 10px;
54
+ font-size: 13px;
55
+ border: 1px solid;
56
+ }
57
+ </style>
templates/loop/booking-form.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+
6
+ $event = new WPEMS_Event( $event_id );
7
+ $user_reg = $event->booked_quantity( get_current_user_id() );
8
+ ?>
9
+
10
+
11
+ <div class="event_register_area">
12
+
13
+ <h2><?php echo esc_html( $event->get_title() ) ?></h2>
14
+
15
+ <form name="event_register" class="event_register" method="POST">
16
+
17
+ <?php if ( $user_reg == 0 && $event->is_free() && wpems_get_option( 'email_register_times' ) === 'once' ) { ?>
18
+ <input type="hidden" name="qty" value="1" min="1" />
19
+ <?php } else { ?>
20
+ <div class="event_auth_form_field">
21
+ <label for="event_register_qty"><?php _e( 'Quantity', 'wp-events-manager' ) ?></label>
22
+ <input type="number" name="qty" value="1" min="1" max="<?php echo $event->get_slot_available() ?>" id="event_register_qty" />
23
+ </div>
24
+ <?php } ?>
25
+
26
+ <?php $payments = wpems_gateways_enable(); ?>
27
+ <!--Hide payment option when cost is 0-->
28
+ <?php if ( !$event->is_free() ) {
29
+ if ( $payments ) { ?>
30
+ <ul class="event_auth_payment_methods">
31
+ <?php $i = 0; ?>
32
+ <?php foreach ( $payments as $id => $payment ) : ?>
33
+ <li>
34
+ <input id="payment_method_<?php echo esc_attr( $id ) ?>" type="radio" name="payment_method" value="<?php echo esc_attr( $id ) ?>"<?php echo $i === 0 ? ' checked' : '' ?>/>
35
+ <label for="payment_method_<?php echo esc_attr( $id ) ?>"><?php echo esc_html( $payment->get_title() ) ?></label>
36
+ </li>
37
+ <?php $i ++; ?>
38
+ <?php endforeach; ?>
39
+ </ul>
40
+ <?php } else {
41
+ wpems_print_notice( 'error', esc_html__( 'There are no payment gateway available. Please contact administrator to setup it.', 'wp-events-manager' ) );
42
+ }
43
+ } ?>
44
+ <!--End hide payment option when cost is 0-->
45
+
46
+ <div class="event_register_foot">
47
+ <input type="hidden" name="event_id" value="<?php echo esc_attr( $event_id ) ?>" />
48
+ <input type="hidden" name="action" value="event_auth_register" />
49
+ <?php wp_nonce_field( 'event_auth_register_nonce', 'event_auth_register_nonce' ); ?>
50
+ <button class="event_register_submit event_auth_button" <?php echo $payments ? '' : 'disabled="disabled"' ?>><?php _e( 'Register Now', 'wp-events-manager' ); ?></button>
51
+ </div>
52
+
53
+ </form>
54
+
55
+ </div>
templates/loop/content.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) {
4
+ exit; // Exit if accessed directly
5
+ }
6
+
7
+ ?>
8
+
9
+ <div class="entry-content">
10
+ <?php the_content(); ?>
11
+ </div>
templates/loop/countdown.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) {
3
+ exit; // Exit if accessed directly
4
+ }
5
+
6
+ $current_time = current_time( 'Y-m-d H:i' );
7
+ $time = wpems_get_time( 'Y-m-d H:i', null, false );
8
+
9
+ ?>
10
+ <div class="entry-countdown">
11
+
12
+ <?php if ( $time > $current_time ) { ?>
13
+ <?php $date = new DateTime( date( 'Y-m-d H:i', strtotime( $time ) ) ); ?>
14
+ <div class="tp_event_counter" data-time="<?php echo esc_attr( $date->format( 'M j, Y H:i:s O' ) ) ?>"></div>
15
+ <?php } else { ?>
16
+ <p class="tp-event-notice error"><?php echo esc_html__( 'This event has expired', 'wp-events-manager' ); ?></p>
17
+ <?php } ?>
18
+
19
+ </div>
20
+
templates/loop/excerpt.php ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) {
4
+ exit; // Exit if accessed directly
5
+ }
6
+
7
+ ?>
8
+
9
+ <div class="entry-content">
10
+ <?php the_excerpt(); ?>
11
+ <a class="tp_event_view-detail view-detail" href="<?php echo esc_attr( get_the_permalink() ); ?>">
12
+ <?php printf( '%s', __( 'View Detail', 'wp-events-manager' ) ) ?>
13
+ </a>
14
+ </div>
templates/loop/location.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( !defined( 'ABSPATH' ) ) {
4
+ exit; // Exit if accessed directly
5
+ }
6
+
7
+ ?>
8
+
9
+ <?php if ( wpems_event_location() ): ?>
10
+ <div class="entry-location">
11
+ <?php wpems_get_location_map(); ?>
12
+ </div>
13
+ <?php endif; ?>
templates/loop/register.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+
6
+ if ( wpems_get_option( 'allow_register_event' ) == 'no' ) {
7
+ return;
8
+ }
9
+
10
+ $event = new WPEMS_Event( get_the_ID() );
11
+ $user_reg = $event->booked_quantity( get_current_user_id() );
12
+
13
+ if ( absint( $event->qty ) == 0 || $event->post->post_status === 'tp-event-expired' ) {
14
+ return;
15
+ }
16
+ ?>
17
+
18
+ <div class="entry-register">
19
+
20
+ <ul class="event-info">
21
+ <li class="total">
22
+ <span class="label"><?php _e( 'Total Slot:', 'wp-events-manager' ) ?></span>
23
+ <span class="detail"><?php echo esc_html( absint( $event->qty ) ) ?></span>
24
+ </li>
25
+ <li class="booking_slot">
26
+ <span class="label"><?php _e( 'Booked Slot:', 'wp-events-manager' ) ?></span>
27
+ <span class="detail"><?php echo esc_html( absint( $event->booked_quantity() ) ) ?></span>
28
+ </li>
29
+ <li class="price">
30
+ <span class="label"><?php _e( 'Cost:', 'wp-events-manager' ) ?></span>
31
+ <span class="detail"><?php printf( '%s', $event->is_free() ? __( 'Free', 'wp-events-manager' ) : wpems_format_price( $event->get_price() ) ) ?></span>
32
+ </li>
33
+ </ul>
34
+
35
+ <?php if ( is_user_logged_in() ) { ?>
36
+ <a class="event_register_submit event_auth_button event-load-booking-form"
37
+ data-event="<?php echo esc_attr( get_the_ID() ) ?>"><?php _e( 'Register Now', 'wp-events-manager' ); ?></a>
38
+ <?php } else { ?>
39
+ <p><?php echo sprintf( __( 'You must <a href="%s">login</a> before register event', 'wp-events-manager' ), wpems_login_url() ); ?></p>
40
+ <?php } ?>
41
+
42
+ </div>
templates/loop/thumbnail.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) {
4
+ exit; // Exit if accessed directly
5
+ }
6
+
7
+ ?>
8
+
9
+ <?php if( has_post_thumbnail() ): ?>
10
+
11
+ <div class="entry-thumbnail">
12
+ <?php if( ! is_singular( 'tp_event' ) || ! in_the_loop() ): ?>
13
+ <a href="<?php the_permalink() ?>">
14
+ <?php endif; ?>
15
+ <?php the_post_thumbnail( ); ?>
16
+ <?php if( ! is_singular( 'tp_event' ) || ! in_the_loop() ): ?>
17
+ </a>
18
+ <?php endif; ?>
19
+ </div>
20
+
21
+ <?php endif; ?>
templates/loop/title.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) {
4
+ exit; // Exit if accessed directly
5
+ }
6
+
7
+ ?>
8
+ <div class="entry-title">
9
+ <?php if( ! is_singular( 'tp_event' ) || ! in_the_loop() ): ?>
10
+ <h4><a href="<?php the_permalink() ?>">
11
+ <?php else: ?>
12
+ <h1>
13
+ <?php endif; ?>
14
+ <?php the_title(); ?>
15
+ <?php if( ! is_singular( 'tp_event' ) || ! in_the_loop() ): ?>
16
+ </a></h4>
17
+ <?php else: ?>
18
+ </h1>
19
+ <?php endif; ?>
20
+ </div>
templates/notices/error.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( !defined( 'ABSPATH' ) ) {
4
+ exit;
5
+ }
6
+ ?>
7
+
8
+ <ul class="tp-event-notice error">
9
+
10
+ <?php foreach ( $messages as $message ) : ?>
11
+
12
+ <li><?php echo sprintf( '%s', $message ) ?></li>
13
+
14
+ <?php endforeach; ?>
15
+
16
+ </ul>
templates/notices/messages.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( !defined( 'ABSPATH' ) ) {
4
+ exit;
5
+ }
6
+
7
+ // errors messages
8
+ if ( !empty( $messages ) ) :
9
+ ?>
10
+
11
+ <?php foreach ( $messages as $code => $msgs ) : ?>
12
+ <?php wpems_get_template( 'notices/' . $code . '.php', array( 'messages' => $msgs ) ); ?>
13
+ <?php endforeach; ?>
14
+
15
+ <?php endif; ?>
templates/notices/success.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( !defined( 'ABSPATH' ) ) {
4
+ exit;
5
+ }
6
+
7
+ foreach ( $messages as $message ) : ?>
8
+
9
+ <div class="tp-event-notice success"><?php echo sprintf( '%s', $message ) ?></div>
10
+
11
+ <?php endforeach; ?>
templates/shortcodes/event-countdown.php ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * @author leehld
4
+ */
5
+
6
+ /**
7
+ * Prevent loading this file directly
8
+ */
9
+ defined( 'ABSPATH' ) || exit;
10
+
11
+ if ( $args['event_id'] ) {
12
+ $ids = explode( ',', $args['event_id'] );
13
+ foreach ( $ids as $id ) {
14
+ $event = get_post( $id );
15
+ echo '<h2><a href="' . get_permalink( $id ) . '"> ' . get_the_title( $id ) . '</a></h2>';
16
+
17
+ $current_time = current_time( 'Y-m-d H:i' );
18
+ $time = wpems_get_time( 'Y-m-d H:i', $event, false ); ?>
19
+ <div class="event-countdown">
20
+ <?php $date = new DateTime( date( 'Y-m-d H:i', strtotime( $time ) ) ); ?>
21
+ <div class="tp_event_counter" data-time="<?php echo esc_attr( $date->format( 'M j, Y H:i:s O' ) ) ?>"></div>
22
+ </div>
23
+ <?php
24
+ }
25
+ } else { ?>
26
+ <p class="tp-event-notice error"><?php echo esc_html__( 'Invalid Event ID', 'wp-events-manager' ); ?></p>
27
+ <?php
28
+ }
templates/shortcodes/event-list.php ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The Template for displaying all event.
4
+ *
5
+ * Override this template by copying it to yourtheme/tp-event/templates/shortcode/event-list.php
6
+ *
7
+ * @author ThimPress
8
+ * @package tp-event
9
+ * @version 2.0
10
+ */
11
+
12
+ if ( !defined( 'ABSPATH' ) ) {
13
+ exit; // Exit if accessed directly
14
+ }
15
+
16
+ $list_event = new WP_Query( $args );
17
+ ?>
18
+
19
+ <?php
20
+ /**
21
+ * tp_event_before_main_content hook
22
+ *
23
+ * @hooked tp_event_output_content_wrapper - 10 (outputs opening divs for the content)
24
+ * @hooked tp_event_breadcrumb - 20
25
+ */
26
+ do_action( 'tp_event_before_main_content' );
27
+ ?>
28
+
29
+ <?php
30
+ /**
31
+ * tp_event_archive_description hook
32
+ *
33
+ * @hooked tp_event_taxonomy_archive_description - 10
34
+ * @hooked tp_event_room_archive_description - 10
35
+ */
36
+ do_action( 'tp_event_archive_description' );
37
+ ?>
38
+
39
+ <?php if ( $list_event->have_posts() ) : ?>
40
+
41
+ <?php
42
+ /**
43
+ * tp_event_before_event_loop hook
44
+ *
45
+ * @hooked tp_event_result_count - 20
46
+ * @hooked tp_event_catalog_ordering - 30
47
+ */
48
+ do_action( 'tp_event_before_event_loop' );
49
+ ?>
50
+
51
+ <ul>
52
+
53
+ <?php while ( $list_event->have_posts() ) : $list_event->the_post(); ?>
54
+
55
+ <?php wpems_get_template_part( 'content', 'event' ); ?>
56
+
57
+ <?php endwhile; // end of the loop. ?>
58
+
59
+ </ul>
60
+
61
+ <?php
62
+ /**
63
+ * tp_event_after_event_loop hook
64
+ *
65
+ * @hooked tp_event_pagination - 10
66
+ */
67
+ do_action( 'tp_event_after_event_loop' );
68
+ ?>
69
+
70
+ <?php endif; ?>
71
+
72
+ <?php
73
+ /**
74
+ * tp_event_after_main_content hook
75
+ *
76
+ * @hooked tp_event_output_content_wrapper_end - 10 (outputs closing divs for the content)
77
+ */
78
+ do_action( 'tp_event_after_main_content' );
79
+ ?>
templates/shortcodes/forgot-password.php ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @Author: ducnvtt
4
+ * @Date: 2016-02-22 17:03:48
5
+ * @Last Modified by: ducnvtt
6
+ * @Last Modified time: 2 2016-03-02 14:10:16
7
+ */
8
+ if ( !defined( 'ABSPATH' ) ) {
9
+ exit;
10
+ }
11
+
12
+ wpems_print_notices();
13
+ ?>
14
+
15
+ <?php if ( empty ( $_REQUEST['checkemail'] ) ) : ?>
16
+
17
+ <form name="forgot-password" class="forgot-password event-auth-form" action="" method="post">
18
+
19
+ <p class="form-row event_auth_forgot_password_message message">
20
+ <?php _e( 'Please enter your username or email address. You will receive a link to create a new password via email.', 'wp-events-manager' ) ?>
21
+ </p>
22
+ <p class="form-row required">
23
+ <label for="user_login" ><?php _e( 'Username or Email:', 'wp-events-manager' ) ?>
24
+ <input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr( !empty( $_POST['user_login'] ) ? sanitize_text_field($_POST['user_login']) : '' ); ?>" size="20" /></label>
25
+ </p>
26
+ <?php
27
+ /**
28
+ * Fires inside the lostpassword form tags, before the hidden fields.
29
+ *
30
+ * @since 2.1.0
31
+ */
32
+ do_action( 'tp_event_forgot_password_form' );
33
+ ?>
34
+ <input type="hidden" name="redirect_to" value="<?php echo esc_attr( ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ); ?>" />
35
+ <p class="form-row submit">
36
+ <input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e( 'Get New Password', 'wp-events-manager' ); ?>" />
37
+ </p>
38
+
39
+ </form>
40
+
41
+ <div class="event_auth_lost_pass_footer">
42
+ <a href="<?php echo esc_attr( wpems_login_url() ) ?>">
43
+ <?php _e( 'Login', 'wp-events-manager' ); ?>
44
+ </a> |
45
+ <?php if ( !is_user_logged_in() ) : ?>
46
+
47
+ <a href="<?php echo esc_attr( wpems_register_url() ) ?>">
48
+ <?php _e( 'Create new user', 'wp-events-manager' ); ?>
49
+ </a>
50
+
51
+ <?php endif; ?>
52
+ </div>
53
+
54
+ <?php do_action( 'tp_event_forgot_password_form_footer' ); ?>
55
+
56
+ <?php endif; ?>
templates/shortcodes/form-login.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+
6
+ wpems_print_notices();
7
+
8
+ ?>
9
+
10
+ <form name="event_auth_login_form" action="" method="post" class="event-auth-form">
11
+
12
+ <p class="form-row form-required">
13
+ <label for="user_login"><?php _e( 'Username', 'wp-events-manager' ) ?><span class="required">*</span></label>
14
+ <input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr( ! empty( $_POST['user_login'] ) ? sanitize_text_field( $_POST['user_login'] ) : '' ) ?>" size="20" /></label>
15
+ </p>
16
+
17
+ <p class="form-row form-required">
18
+ <label for="user_pass"><?php _e( 'Password', 'wp-events-manager' ) ?><span class="required">*</span></label>
19
+ <input type="password" name="user_pass" id="user_pass" class="input" value="" size="25" />
20
+ </p>
21
+
22
+ <?php do_action( 'event_auth_register_form' ); ?>
23
+
24
+ <p class="form-row form-required">
25
+ <label for="rememberme" class="inline">
26
+ <input class="input-checkbox" name="rememberme" type="checkbox" id="rememberme" value="forever" /> <?php _e( 'Remember me', 'wp-events-manager' ); ?>
27
+ </label>
28
+ </p>
29
+
30
+ <p class="submit form-row">
31
+ <?php wp_nonce_field( 'auth-login-nonce', 'auth-nonce' ); ?>
32
+ <input type="hidden" name="action" value="event_login_action" />
33
+ <input type="hidden" name="redirect_to" value="<?php echo esc_attr( ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ); ?>" />
34
+ <input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e( 'Login', 'wp-events-manager' ); ?>" />
35
+ </p>
36
+
37
+ </form>
38
+
39
+ <p>
40
+ <?php if ( get_option( 'users_can_register' ) ) : ?>
41
+ <a href="<?php echo esc_attr( wpems_register_url() ); ?>"><?php _e( 'Register', 'wp-events-manager' ) ?></a> |
42
+ <?php endif; ?>
43
+ <a href="<?php echo esc_attr( wp_lostpassword_url() ); ?>"><?php _e( 'Forgot Password', 'wp-events-manager' ) ?></a>
44
+ </p>
templates/shortcodes/form-register.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+
6
+ wpems_print_notices();
7
+ ?>
8
+
9
+ <form name="event_auth_register_form" action="" method="post" class="event-auth-form">
10
+
11
+ <p class="form-row form-required">
12
+ <label for="user_login"><?php _e( 'Username', 'wp-events-manager' ) ?><span class="required">*</span></label>
13
+ <input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr( ! empty( $_POST['user_login'] ) ? sanitize_text_field( $_POST['user_login'] ) : '' ); ?>" size="20" />
14
+ </p>
15
+
16
+ <p class="form-row form-required">
17
+ <label for="user_email"><?php _e( 'Email', 'wp-events-manager' ) ?><span class="required">*</span></label>
18
+ <input type="email" name="user_email" id="user_email" class="input" value="<?php echo esc_attr( ! empty( $_POST['user_email'] ) ? sanitize_text_field( $_POST['user_email'] ) : '' ); ?>" size="25" />
19
+ </p>
20
+
21
+ <p class="form-row form-required">
22
+ <label for="user_pass"><?php _e( 'Password', 'wp-events-manager' ) ?><span class="required">*</span></label>
23
+ <input type="password" name="user_pass" id="user_pass" class="input" value="" size="25" />
24
+ </p>
25
+
26
+ <p class="form-row form-required">
27
+ <label for="confirm_password"><?php _e( 'Confirm Password', 'wp-events-manager' ) ?><span class="required">*</span></label>
28
+ <input type="password" name="confirm_password" id="confirm_password" class="input" value="" size="25" /></label>
29
+ </p>
30
+
31
+ <?php do_action( 'event_auth_register_form' ); ?>
32
+
33
+ <?php $send_notify = wpems_get_option( 'register_notify', true ); ?>
34
+ <?php if ( $send_notify ) : ?>
35
+ <p id="reg_passmail" class="form-row">
36
+ <?php _e( 'Registration confirmation will be emailed to you.', 'wp-events-manager' ); ?>
37
+ </p>
38
+ <?php endif; ?>
39
+
40
+ <p class="submit form-row">
41
+ <input type="hidden" name="redirect_to" value="<?php echo esc_attr( ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ); ?>" />
42
+ <?php wp_nonce_field( 'auth-reigter-nonce', 'auth-nonce' ); ?>
43
+ <input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e( 'Register', 'wp-events-manager' ); ?>" />
44
+ </p>
45
+
46
+ </form>
47
+
48
+ <p id="nav">
49
+ <a href="<?php echo esc_url( wpems_login_url() ); ?>"><?php _e( 'Log in', 'wp-events-manager' ); ?></a> |
50
+ <a href="<?php echo esc_url( wp_lostpassword_url() ); ?>" title="<?php esc_attr_e( 'Password Lost and Found', 'wp-events-manager' ) ?>"><?php _e( 'Forgot password?', 'wp-events-manager' ); ?></a>
51
+ </p>
templates/shortcodes/register-completed.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( !defined( 'ABSPATH' ) ) {
4
+ exit;
5
+ }
6
+
7
+ wpems_print_notices();
8
+ printf(
9
+ __( 'You have successfully registered to <strong>%s</strong>. We have emailed your password to <i>%s</i> the email address you entered.', 'wp-events-manager' ), get_bloginfo( 'name' ), sanitize_text_field($_REQUEST['registered'])
10
+ );
templates/shortcodes/register-error.php ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit();
4
+ }
5
+ ?>
6
+ <ul class="tp-event-notice error">
7
+ <li><?php _e( 'Oops! Something went wrong.' ) ?></li>
8
+ </ul>
templates/shortcodes/reset-password.php ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @Author: ducnvtt
4
+ * @Date: 2016-03-02 14:46:31
5
+ * @Last Modified by: ducnvtt
6
+ * @Last Modified time: 2016-03-30 11:09:14
7
+ */
8
+ if ( !defined( 'ABSPATH' ) ) {
9
+ exit;
10
+ }
11
+
12
+ wpems_print_notices();
13
+ ?>
14
+ <form name="resetpassform" action="<?php echo esc_url( network_site_url( 'wp-login.php?action=resetpass', 'login_post' ) ); ?>" method="POST" class="event-auth-form">
15
+ <input type="hidden" name="user_login" value="<?php echo esc_attr( $atts['login'] ); ?>" />
16
+
17
+ <div class="user-pass1-wrap">
18
+ <p class="form-row required">
19
+ <label for="pass1"><?php _e( 'Password', 'wp-events-manager' ) ?></label>
20
+ </p>
21
+
22
+ <div class="wp-pwd">
23
+ <span class="password-input-wrapper">
24
+ <input type="password" class="event_auth_input" name="pass1" />
25
+ </span>
26
+ </div>
27
+ </div>
28
+
29
+ <div class="user-pass2-wrap">
30
+ <p class="form-row required">
31
+ <label for="pass2"><?php _e( 'Confirm Password', 'wp-events-manager' ) ?></label>
32
+ </p>
33
+
34
+ <div class="wp-pwd">
35
+ <span class="password-input-wrapper">
36
+ <input type="password" name="pass2" class="event_auth_input" />
37
+ </span>
38
+ </div>
39
+ </div>
40
+
41
+ <p class="description indicator-hint"><?php echo wp_get_password_hint(); ?></p>
42
+
43
+ <?php
44
+ /**
45
+ * Fires following the 'Strength indicator' meter in the user password reset form.
46
+ *
47
+ * @since 3.9.0
48
+ *
49
+ * @param WP_User $user User object of the user whose password is being reset.
50
+ */
51
+ do_action( 'event_auth_resetpass_form', $atts['login'] );
52
+ ?>
53
+ <input type="hidden" name="key" value="<?php echo esc_attr( $atts['key'] ); ?>" />
54
+ <p class="submit form-row required">
55
+ <input type="submit" name="submit" class="button button-primary button-large" value="<?php esc_attr_e( 'Reset Password', 'wp-events-manager' ); ?>" />
56
+ </p>
57
+ </form>
58
+
59
+ <p id="nav">
60
+ <?php if ( !is_user_logged_in() ) : ?>
61
+ <a href="<?php echo esc_url( wp_login_url() ); ?>"><?php _e( 'Log in', 'wp-events-manager' ); ?></a>
62
+ <?php endif; ?>
63
+ <?php
64
+ if ( get_option( 'users_can_register' ) ) :
65
+ $registration_url = sprintf( '<a href="%s">%s</a>', esc_url( wp_registration_url() ), __( 'Register', 'wp-events-manager' ) );
66
+
67
+ /** This filter is documented in wp-includes/general-template.php */
68
+ echo ' | ' . $registration_url;
69
+ endif;
70
+ ?>
71
+ </p>
templates/shortcodes/user-account.php ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+
6
+ $query = new WP_Query( $args );
7
+
8
+ wpems_print_notices();
9
+
10
+ if ( !is_user_logged_in() ) {
11
+ printf( __( 'You are not <a href="%s">login</a>', 'wp-events-manager' ), wpems_login_url() );
12
+ return;
13
+ }
14
+
15
+ if ( $query->have_posts() ) :
16
+ ?>
17
+
18
+ <table>
19
+ <thead>
20
+ <th><?php _e( 'Booking ID', 'wp-events-manager' ); ?></th>
21
+ <th><?php _e( 'Events', 'wp-events-manager' ); ?></th>
22
+ <th><?php _e( 'Type', 'wp-events-manager' ); ?></th>
23
+ <th><?php _e( 'Cost', 'wp-events-manager' ); ?></th>
24
+ <th><?php _e( 'Quantity', 'wp-events-manager' ); ?></th>
25
+ <th><?php _e( 'Method', 'wp-events-manager' ); ?></th>
26
+ <th><?php _e( 'Status', 'wp-events-manager' ); ?></th>
27
+ </thead>
28
+ <tbody>
29
+ <?php foreach ( $query->posts as $post ): ?>
30
+
31
+ <?php $booking = WPEMS_Booking::instance( $post->ID ) ?>
32
+ <tr>
33
+ <td><?php printf( '%s', wpems_format_ID( $post->ID ) ) ?></td>
34
+ <td><?php printf( '<a href="%s">%s</a>', get_the_permalink( $booking->event_id ), get_the_title( $booking->event_id ) ) ?></td>
35
+ <td><?php printf( '%s', floatval( $booking->price ) == 0 ? __( 'Free', 'wp-events-manager' ) : __( 'Cost', 'wp-events-manager' ) ) ?></td>
36
+ <td><?php printf( '%s', wpems_format_price( floatval( $booking->price ), $booking->currency ) ) ?></td>
37
+ <td><?php printf( '%s', $booking->qty ) ?></td>
38
+ <td><?php printf( '%s', $booking->payment_id ? wpems_get_payment_title( $booking->payment_id ) : __( 'No payment', 'wp-events-manager' ) ) ?></td>
39
+ <th><?php printf( '%s', wpems_booking_status( $booking->ID ) ); ?></th>
40
+ </tr>
41
+
42
+ <?php endforeach; ?>
43
+ </tbody>
44
+ </table>
45
+
46
+ <?php
47
+ $args = array(
48
+ 'base' => '%_%',
49
+ 'format' => '?paged=%#%',
50
+ 'total' => 1,
51
+ 'current' => 0,
52
+ 'show_all' => false,
53
+ 'end_size' => 1,
54
+ 'mid_size' => 2,
55
+ 'prev_next' => true,
56
+ 'prev_text' => __( '« Previous', 'wp-events-manager' ),
57
+ 'next_text' => __( 'Next »', 'wp-events-manager' ),
58
+ 'type' => 'plain',
59
+ 'add_args' => false,
60
+ 'add_fragment' => '',
61
+ 'before_page_number' => '',
62
+ 'after_page_number' => ''
63
+ );
64
+
65
+ echo paginate_links( array(
66
+ 'base' => str_replace( 9999999, '%#%', esc_url( get_pagenum_link( 9999999 ) ) ),
67
+ 'format' => '?paged=%#%',
68
+ 'prev_text' => __( '« Previous', 'wp-events-manager' ),
69
+ 'next_text' => __( 'Next »', 'wp-events-manager' ),
70
+ 'current' => max( 1, get_query_var( 'paged' ) ),
71
+ 'total' => $query->max_num_pages
72
+ ) );
73
+ ?>
74
+
75
+ <?php endif; ?>
76
+
77
+ <?php wp_reset_postdata(); ?>
templates/shortcodes/user-cannot-register.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+ ?>
6
+
7
+ <p><?php _e( 'User registration is currently not allowed.', 'wp-events-manager' ) ?></p>
templates/single-event.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Template Single Event post type
4
+ */
5
+
6
+ get_header( ); ?>
7
+
8
+ <?php
9
+ /**
10
+ * tp_event_before_main_content hook
11
+ */
12
+ do_action( 'tp_event_before_main_content' );
13
+ ?>
14
+
15
+ <?php while ( have_posts() ) : the_post(); ?>
16
+
17
+ <?php wpems_get_template_part( 'content', 'single-event' ); ?>
18
+
19
+ <?php endwhile; // end of the loop. ?>
20
+
21
+ <?php
22
+ /**
23
+ * tp_event_after_main_content hook
24
+ *
25
+ * @hooked tp_event_after_main_content - 10 (outputs closing divs for the content)
26
+ */
27
+ do_action( 'tp_event_after_main_content' );
28
+ ?>
29
+
30
+ <?php get_footer( );
wp-events-manager.php ADDED
@@ -0,0 +1,175 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ Plugin Name: WP Events Manager
5
+ Plugin URI: http://thimpress.com/
6
+ Description: A complete plugin for Events management and online booking system
7
+ Author: ThimPress
8
+ Version: 2.1.4
9
+ Author URI: http://thimpress.com
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit();
14
+ }
15
+
16
+ /**
17
+ * WPEMS class
18
+ */
19
+ if ( ! class_exists( 'WPEMS' ) ) {
20
+
21
+ final class WPEMS {
22
+
23
+ private static $_instance = null;
24
+
25
+ public $_session = null;
26
+
27
+ /**
28
+ * WPEMS constructor.
29
+ */
30
+ public function __construct() {
31
+ $this->define_constants();
32
+ $this->includes();
33
+ $this->init_hooks();
34
+ }
35
+
36
+ /**
37
+ * Define Plugins Constants
38
+ */
39
+ public function define_constants() {
40
+ $this->set_define( 'WPEMS_PATH', plugin_dir_path( __FILE__ ) );
41
+ $this->set_define( 'WPEMS_URI', plugin_dir_url( __FILE__ ) );
42
+ $this->set_define( 'WPEMS_INC', WPEMS_PATH . 'inc/' );
43
+ $this->set_define( 'WPEMS_INC_URI', WPEMS_URI . 'inc/' );
44
+ $this->set_define( 'WPEMS_ASSETS_URI', WPEMS_URI . 'assets/' );
45
+ $this->set_define( 'WPEMS_LIB_URI', WPEMS_INC_URI . 'libraries/' );
46
+ $this->set_define( 'WPEMS_VER', '2.1.4' );
47
+ $this->set_define( 'WPEMS_MAIN_FILE', __FILE__ );
48
+ }
49
+
50
+ public function set_define( $name = '', $value = '' ) {
51
+ if ( $name && ! defined( $name ) ) {
52
+ define( $name, $value );
53
+ }
54
+ }
55
+
56
+ /**
57
+ * Init hooks plugins
58
+ * @since 2.0
59
+ */
60
+ public function init_hooks() {
61
+ // plugin loaded
62
+ add_action( 'plugins_loaded', array( $this, 'loaded' ) );
63
+ }
64
+
65
+ /**
66
+ * Load components when plugin loaded
67
+ */
68
+ public function loaded() {
69
+ // load text domain
70
+ $this->text_domain();
71
+ $this->_session = new WPEMS_Session();
72
+
73
+ do_action( 'wpems_init', $this );
74
+ }
75
+
76
+ /**
77
+ * include file
78
+ *
79
+ * @param array || string
80
+ *
81
+ * @return null
82
+ */
83
+ public function includes() {
84
+
85
+ $this->_include( 'inc/wpems-core-functions.php' );
86
+ $this->_include( 'inc/class-wpems-autoloader.php' );
87
+ $this->_include( 'inc/class-wpems-assets.php' );
88
+ $this->_include( 'inc/class-wpems-ajax.php' );
89
+ $this->_include( 'inc/class-wpems-post-types.php' );
90
+ $this->_include( 'inc/emails/class-wpems-register-event.php' );
91
+ $this->_include( 'inc/class-wpems-payment-gateways.php' );
92
+ $this->_include( 'inc/class-wpems-install.php' );
93
+ $this->_include( 'inc/class-wpems-settings.php' );
94
+ $this->_include( 'inc/class-wpems-session.php' );
95
+ $this->_include( 'inc/class-wpems-booking.php' );
96
+ $this->_include( 'inc/class-wpems-event.php' );
97
+ $this->settings = WPEMS_Settings::instance();
98
+
99
+ if ( is_admin() ) {
100
+ $this->_include( 'inc/admin/class-wpems-admin.php' );
101
+ } else {
102
+ $this->_include( 'inc/class-wpems-template.php' );
103
+ $this->_include( 'inc/class-wpems-frontend-assets.php' );
104
+ $this->_include( 'inc/class-wpems-user-process.php' );
105
+ $this->_include( 'inc/class-wpems-shortcodes.php' );
106
+ }
107
+
108
+ }
109
+
110
+ /**
111
+ * Include single file
112
+ *
113
+ * @param $file
114
+ */
115
+ public function _include( $file = null ) {
116
+ if ( is_array( $file ) ) {
117
+ foreach ( $file as $key => $f ) {
118
+ if ( file_exists( WPEMS_PATH . $f ) ) {
119
+ require_once WPEMS_PATH . $f;
120
+ }
121
+ }
122
+ } else {
123
+ if ( file_exists( WPEMS_PATH . $file ) ) {
124
+ require_once WPEMS_PATH . $file;
125
+ } elseif ( file_exists( $file ) ) {
126
+ require_once $file;
127
+ }
128
+ }
129
+ }
130
+
131
+ /**
132
+ * load text domain
133
+ * @return null
134
+ */
135
+ public function text_domain() {
136
+ // Get mo file
137
+ $text_domain = 'wp-events-manager';
138
+ $locale = apply_filters( 'plugin_locale', get_locale(), $text_domain );
139
+ $mo_file = $text_domain . '-' . $locale . '.mo';
140
+ // Check mo file global
141
+ $mo_global = WP_LANG_DIR . '/plugins/' . $mo_file;
142
+ // Load translate file
143
+ if ( file_exists( $mo_global ) ) {
144
+ load_textdomain( $text_domain, $mo_global );
145
+ } else {
146
+ load_textdomain( $text_domain, WPEMS_PATH . '/languages/' . $mo_file );
147
+ }
148
+ }
149
+
150
+ /**
151
+ * get instance class
152
+ * @return WPEMS
153
+ */
154
+ public static function instance() {
155
+ if ( ! empty( self::$_instance ) ) {
156
+ return self::$_instance;
157
+ }
158
+
159
+ return self::$_instance = new self();
160
+ }
161
+
162
+ }
163
+
164
+ if ( ! function_exists( 'WPEMS' ) ) {
165
+
166
+ function WPEMS() {
167
+ return WPEMS::instance();
168
+ }
169
+
170
+ }
171
+ WPEMS();
172
+ }
173
+
174
+
175
+ $GLOBALS['WPEMS'] = WPEMS();