Ultimate Member – User Profile & Membership Plugin - Version 2.0.41

Version Description

Download this release

Release Info

Developer nsinelnikov
Plugin Icon 128x128 Ultimate Member – User Profile & Membership Plugin
Version 2.0.41
Comparing to
See all releases

Code changes from version 2.0.40 to 2.0.41

Files changed (43) hide show
  1. assets/css/um-old-default.css +4 -0
  2. assets/css/um-scrollbar.css +1057 -857
  3. assets/js/um-account.js +26 -18
  4. assets/js/um-account.min.js +1 -1
  5. assets/js/um-modal.js +1 -1
  6. assets/js/um-profile.js +60 -40
  7. assets/js/um-profile.min.js +1 -1
  8. assets/js/um-responsive.js +4 -7
  9. assets/js/um-responsive.min.js +1 -1
  10. assets/js/um-scripts.js +0 -1
  11. assets/js/um-scrollbar.js +2683 -5
  12. assets/js/um-scrollbar.min.js +1 -1
  13. includes/admin/assets/js/um-admin-blocks-shortcode.js +610 -0
  14. includes/admin/core/class-admin-enqueue.php +89 -1
  15. includes/admin/core/class-admin-forms.php +4 -0
  16. includes/admin/core/class-admin-notices.php +1 -1
  17. includes/admin/core/class-admin-settings.php +7 -2
  18. includes/admin/core/packages/2.0-beta1/styles.php +3 -1
  19. includes/class-config.php +1 -0
  20. includes/core/class-access.php +52 -23
  21. includes/core/class-account.php +14 -6
  22. includes/core/class-ajax-common.php +1 -0
  23. includes/core/class-common.php +2 -1
  24. includes/core/class-fields.php +60 -31
  25. includes/core/class-files.php +59 -18
  26. includes/core/class-members.php +7 -3
  27. includes/core/class-password.php +63 -32
  28. includes/core/class-query.php +7 -2
  29. includes/core/class-roles-capabilities.php +1 -1
  30. includes/core/class-uploader.php +21 -10
  31. includes/core/class-user-posts.php +1 -2
  32. includes/core/class-user.php +5 -6
  33. includes/core/um-actions-account.php +20 -5
  34. includes/core/um-actions-form.php +1 -1
  35. includes/core/um-actions-profile.php +3 -2
  36. includes/core/um-filters-members.php +17 -6
  37. includes/um-short-functions.php +2 -2
  38. languages/ultimate-member-en_US.mo +0 -0
  39. languages/ultimate-member-en_US.po +336 -318
  40. readme.txt +25 -1
  41. templates/account.php +57 -58
  42. templates/members-grid.php +4 -2
  43. ultimate-member.php +1 -1
assets/css/um-old-default.css CHANGED
@@ -112,6 +112,10 @@ div.uimob800 .um-account-side li a.current:hover
112
  color: #555555;
113
  }
114
 
 
 
 
 
115
  .um .um-form input[type=text],
116
  .um .um-form input[type=tel],
117
  .um .um-form input[type=number],
112
  color: #555555;
113
  }
114
 
115
+ .um .um-row.um-customized-row .um-field-label {
116
+ color: inherit;
117
+ }
118
+
119
  .um .um-form input[type=text],
120
  .um .um-form input[type=tel],
121
  .um .um-form input[type=number],
assets/css/um-scrollbar.css CHANGED
@@ -24,23 +24,23 @@ CONTENTS:
24
  ------------------------------------------------------------------------------------------------------------------------
25
  */
26
 
27
- .mCustomScrollbar{ -ms-touch-action: none; touch-action: none; /* MSPointer events - direct all pointer events to js */ }
28
- .mCustomScrollbar.mCS_no_scrollbar{ -ms-touch-action: auto; touch-action: auto; }
29
 
30
- .mCustomScrollBox{ /* contains plugin's markup */
31
- position: relative;
32
- overflow: hidden;
33
- height: 100%;
34
- max-width: 100%;
35
- outline: none;
36
- direction: ltr;
37
- }
38
 
39
- .mCSB_container{ /* contains the original content */
40
- overflow: hidden;
41
- width: auto;
42
- height: auto;
43
- }
44
 
45
 
46
 
@@ -51,89 +51,89 @@ y-axis
51
  ------------------------------------------------------------------------------------------------------------------------
52
  */
53
 
54
- .mCSB_inside > .mCSB_container{ margin-right: 0; }
55
-
56
- .mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{ margin-right: 0; } /* non-visible scrollbar */
57
-
58
- .mCS-dir-rtl > .mCSB_inside > .mCSB_container{ /* RTL direction/left-side scrollbar */
59
- margin-right: 0;
60
- margin-left: 0;
61
- }
62
-
63
- .mCS-dir-rtl > .mCSB_inside > .mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{ margin-left: 0; } /* RTL direction/left-side scrollbar */
64
-
65
- .mCSB_scrollTools{ /* contains scrollbar markup (draggable element, dragger rail, buttons etc.) */
66
- position: absolute;
67
- width: 16px;
68
- height: auto;
69
- left: auto;
70
- top: 0;
71
- right: 0;
72
- bottom: 0;
73
- }
74
-
75
- .mCSB_outside + .mCSB_scrollTools{ right: -26px; } /* scrollbar position: outside */
76
-
77
- .mCS-dir-rtl > .mCSB_inside > .mCSB_scrollTools,
78
- .mCS-dir-rtl > .mCSB_outside + .mCSB_scrollTools{ /* RTL direction/left-side scrollbar */
79
- right: auto;
80
- left: 0;
81
- }
82
-
83
- .mCS-dir-rtl > .mCSB_outside + .mCSB_scrollTools{ left: -26px; } /* RTL direction/left-side scrollbar (scrollbar position: outside) */
84
-
85
- .mCSB_scrollTools .mCSB_draggerContainer{ /* contains the draggable element and dragger rail markup */
86
- position: absolute;
87
- top: 0;
88
- left: 0;
89
- bottom: 0;
90
- right: 0;
91
- height: auto;
92
- }
93
-
94
- .mCSB_scrollTools a + .mCSB_draggerContainer{ margin: 20px 0; }
95
-
96
- .mCSB_scrollTools .mCSB_draggerRail{
97
- width: 2px;
98
- height: 100%;
99
- margin: 0 auto;
100
- -webkit-border-radius: 16px; -moz-border-radius: 16px; border-radius: 16px;
101
- }
102
-
103
- .mCSB_scrollTools .mCSB_dragger{ /* the draggable element */
104
- cursor: pointer;
105
- width: 100%;
106
- height: 30px; /* minimum dragger height */
107
- z-index: 1;
108
- }
109
-
110
- .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ /* the dragger element */
111
- position: relative;
112
- width: 4px;
113
- height: 100%;
114
- margin: 0 auto;
115
- -webkit-border-radius: 16px; -moz-border-radius: 16px; border-radius: 16px;
116
- text-align: center;
117
- }
118
-
119
- .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,
120
- .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{ width: 12px; /* auto-expanded scrollbar */ }
121
-
122
- .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
123
- .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ width: 8px; /* auto-expanded scrollbar */ }
124
-
125
- .mCSB_scrollTools .mCSB_buttonUp,
126
- .mCSB_scrollTools .mCSB_buttonDown{
127
- display: block;
128
- position: absolute;
129
- height: 20px;
130
- width: 100%;
131
- overflow: hidden;
132
- margin: 0 auto;
133
- cursor: pointer;
134
- }
135
-
136
- .mCSB_scrollTools .mCSB_buttonDown{ bottom: 0; }
137
 
138
 
139
 
@@ -144,73 +144,73 @@ x-axis
144
  ------------------------------------------------------------------------------------------------------------------------
145
  */
146
 
147
- .mCSB_horizontal.mCSB_inside > .mCSB_container{
148
- margin-right: 0;
149
- margin-bottom: 30px;
150
- }
151
 
152
- .mCSB_horizontal.mCSB_outside > .mCSB_container{ min-height: 100%; }
153
 
154
- .mCSB_horizontal > .mCSB_container.mCS_no_scrollbar_x.mCS_x_hidden{ margin-bottom: 0; } /* non-visible scrollbar */
155
 
156
- .mCSB_scrollTools.mCSB_scrollTools_horizontal{
157
- width: auto;
158
- height: 16px;
159
- top: auto;
160
- right: 0;
161
- bottom: 0;
162
- left: 0;
163
- }
164
 
165
- .mCustomScrollBox + .mCSB_scrollTools.mCSB_scrollTools_horizontal,
166
- .mCustomScrollBox + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal{ bottom: -26px; } /* scrollbar position: outside */
167
 
168
- .mCSB_scrollTools.mCSB_scrollTools_horizontal a + .mCSB_draggerContainer{ margin: 0 20px; }
169
 
170
- .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_draggerRail{
171
- width: 100%;
172
- height: 2px;
173
- margin: 7px 0;
174
- }
175
 
176
- .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger{
177
- width: 30px; /* minimum dragger width */
178
- height: 100%;
179
- left: 0;
180
- }
181
 
182
- .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
183
- width: 100%;
184
- height: 4px;
185
- margin: 6px auto;
186
- }
187
 
188
- .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,
189
- .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{
190
- height: 12px; /* auto-expanded scrollbar */
191
- margin: 2px auto;
192
- }
193
 
194
- .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
195
- .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{
196
- height: 8px; /* auto-expanded scrollbar */
197
- margin: 4px 0;
198
- }
199
 
200
- .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft,
201
- .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{
202
- display: block;
203
- position: absolute;
204
- width: 20px;
205
- height: 100%;
206
- overflow: hidden;
207
- margin: 0 auto;
208
- cursor: pointer;
209
- }
210
 
211
- .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft{ left: 0; }
212
 
213
- .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{ right: 0; }
214
 
215
 
216
 
@@ -221,63 +221,58 @@ yx-axis
221
  ------------------------------------------------------------------------------------------------------------------------
222
  */
223
 
224
- .mCSB_container_wrapper{
225
- position: absolute;
226
- height: auto;
227
- width: auto;
228
- overflow: hidden;
229
- top: 0;
230
- left: 0;
231
- right: 0;
232
- bottom: 0;
233
- margin-right: 30px;
234
- margin-bottom: 30px;
235
- }
236
 
237
- .mCSB_container_wrapper > .mCSB_container{
238
- padding-right: 30px;
239
- padding-bottom: 30px;
240
- }
 
241
 
242
- .mCSB_vertical_horizontal > .mCSB_scrollTools.mCSB_scrollTools_vertical{ bottom: 20px; }
243
 
244
- .mCSB_vertical_horizontal > .mCSB_scrollTools.mCSB_scrollTools_horizontal{ right: 20px; }
245
 
246
- /* non-visible horizontal scrollbar */
247
- .mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden + .mCSB_scrollTools.mCSB_scrollTools_vertical{ bottom: 0; }
248
 
249
- /* non-visible vertical scrollbar/RTL direction/left-side scrollbar */
250
- .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden + .mCSB_scrollTools ~ .mCSB_scrollTools.mCSB_scrollTools_horizontal,
251
- .mCS-dir-rtl > .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_scrollTools.mCSB_scrollTools_horizontal{ right: 0; }
252
 
253
- /* RTL direction/left-side scrollbar */
254
- .mCS-dir-rtl > .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_scrollTools.mCSB_scrollTools_horizontal{ left: 20px; }
255
 
256
- /* non-visible scrollbar/RTL direction/left-side scrollbar */
257
- .mCS-dir-rtl > .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden + .mCSB_scrollTools ~ .mCSB_scrollTools.mCSB_scrollTools_horizontal{ left: 0; }
258
 
259
- .mCS-dir-rtl > .mCSB_inside > .mCSB_container_wrapper{ /* RTL direction/left-side scrollbar */
260
- margin-right: 0;
261
- margin-left: 30px;
262
- }
263
 
264
- .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden > .mCSB_container{
265
- padding-right: 0;
266
- -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;
267
- }
268
 
269
- .mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden > .mCSB_container{
270
- padding-bottom: 0;
271
- -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;
272
- }
273
 
274
- .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden{
275
- margin-right: 0; /* non-visible scrollbar */
276
- margin-left: 0;
277
- }
278
 
279
- /* non-visible horizontal scrollbar */
280
- .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden{ margin-bottom: 0; }
281
 
282
 
283
 
@@ -287,39 +282,39 @@ yx-axis
287
  ------------------------------------------------------------------------------------------------------------------------
288
  */
289
 
290
- .mCSB_scrollTools,
291
- .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
292
- .mCSB_scrollTools .mCSB_buttonUp,
293
- .mCSB_scrollTools .mCSB_buttonDown,
294
- .mCSB_scrollTools .mCSB_buttonLeft,
295
- .mCSB_scrollTools .mCSB_buttonRight{
296
- -webkit-transition: opacity .2s ease-in-out, background-color .2s ease-in-out;
297
- -moz-transition: opacity .2s ease-in-out, background-color .2s ease-in-out;
298
- -o-transition: opacity .2s ease-in-out, background-color .2s ease-in-out;
299
- transition: opacity .2s ease-in-out, background-color .2s ease-in-out;
300
- }
301
-
302
- .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar, /* auto-expanded scrollbar */
303
- .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail,
304
- .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar,
305
- .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail{
306
- -webkit-transition: width .2s ease-out .2s, height .2s ease-out .2s,
307
- margin-left .2s ease-out .2s, margin-right .2s ease-out .2s,
308
- margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s,
309
- opacity .2s ease-in-out, background-color .2s ease-in-out;
310
- -moz-transition: width .2s ease-out .2s, height .2s ease-out .2s,
311
- margin-left .2s ease-out .2s, margin-right .2s ease-out .2s,
312
- margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s,
313
- opacity .2s ease-in-out, background-color .2s ease-in-out;
314
- -o-transition: width .2s ease-out .2s, height .2s ease-out .2s,
315
- margin-left .2s ease-out .2s, margin-right .2s ease-out .2s,
316
- margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s,
317
- opacity .2s ease-in-out, background-color .2s ease-in-out;
318
- transition: width .2s ease-out .2s, height .2s ease-out .2s,
319
- margin-left .2s ease-out .2s, margin-right .2s ease-out .2s,
320
- margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s,
321
- opacity .2s ease-in-out, background-color .2s ease-in-out;
322
- }
323
 
324
 
325
 
@@ -329,739 +324,944 @@ yx-axis
329
  ------------------------------------------------------------------------------------------------------------------------
330
  */
331
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
332
  /*
333
- ----------------------------------------
334
- 6.1 THEMES
335
- ----------------------------------------
336
  */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
337
 
338
- /* default theme ("light") */
339
 
340
- .mCSB_scrollTools{ opacity: 0.75; filter: "alpha(opacity=75)"; -ms-filter: "alpha(opacity=75)"; }
 
 
 
341
 
342
- .mCS-autoHide > .mCustomScrollBox > .mCSB_scrollTools,
343
- .mCS-autoHide > .mCustomScrollBox ~ .mCSB_scrollTools{ opacity: 0; filter: "alpha(opacity=0)"; -ms-filter: "alpha(opacity=0)"; }
344
 
345
- .mCustomScrollbar > .mCustomScrollBox > .mCSB_scrollTools.mCSB_scrollTools_onDrag,
346
- .mCustomScrollbar > .mCustomScrollBox ~ .mCSB_scrollTools.mCSB_scrollTools_onDrag,
347
- .mCustomScrollBox:hover > .mCSB_scrollTools,
348
- .mCustomScrollBox:hover ~ .mCSB_scrollTools,
349
- .mCS-autoHide:hover > .mCustomScrollBox > .mCSB_scrollTools,
350
- .mCS-autoHide:hover > .mCustomScrollBox ~ .mCSB_scrollTools{ opacity: 1; filter: "alpha(opacity=100)"; -ms-filter: "alpha(opacity=100)"; }
351
 
352
- .mCSB_scrollTools .mCSB_draggerRail{
353
- background-color: #000; background-color: rgba(0,0,0,0.4);
354
- filter: "alpha(opacity=40)"; -ms-filter: "alpha(opacity=40)";
355
- }
356
 
357
- .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
358
- background-color: #fff; background-color: rgba(255,255,255,0.75);
359
- filter: "alpha(opacity=75)"; -ms-filter: "alpha(opacity=75)";
360
- }
361
 
362
- .mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{
363
- background-color: #fff; background-color: rgba(255,255,255,0.85);
364
- filter: "alpha(opacity=85)"; -ms-filter: "alpha(opacity=85)";
365
- }
366
- .mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
367
- .mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{
368
- background-color: #fff; background-color: rgba(255,255,255,0.9);
369
- filter: "alpha(opacity=90)"; -ms-filter: "alpha(opacity=90)";
370
- }
371
 
372
- .mCSB_scrollTools .mCSB_buttonUp,
373
- .mCSB_scrollTools .mCSB_buttonDown,
374
- .mCSB_scrollTools .mCSB_buttonLeft,
375
- .mCSB_scrollTools .mCSB_buttonRight{
376
- background-image: url(../img/mCSB_buttons.png); /* css sprites */
377
- background-repeat: no-repeat;
378
- opacity: 0.4; filter: "alpha(opacity=40)"; -ms-filter: "alpha(opacity=40)";
379
- }
380
 
381
 
382
- .mCSB_scrollTools .mCSB_buttonUp:hover,
383
- .mCSB_scrollTools .mCSB_buttonDown:hover,
384
- .mCSB_scrollTools .mCSB_buttonLeft:hover,
385
- .mCSB_scrollTools .mCSB_buttonRight:hover{ opacity: 0.75; filter: "alpha(opacity=75)"; -ms-filter: "alpha(opacity=75)"; }
386
 
387
- .mCSB_scrollTools .mCSB_buttonUp:active,
388
- .mCSB_scrollTools .mCSB_buttonDown:active,
389
- .mCSB_scrollTools .mCSB_buttonLeft:active,
390
- .mCSB_scrollTools .mCSB_buttonRight:active{ opacity: 0.9; filter: "alpha(opacity=90)"; -ms-filter: "alpha(opacity=90)"; }
391
 
 
 
 
 
 
392
 
393
- /* theme: "dark" */
 
 
 
394
 
395
- .mCS-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.15); }
 
396
 
397
- .mCS-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); }
 
398
 
399
- .mCS-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: rgba(0,0,0,0.85); }
 
400
 
401
- .mCS-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
402
- .mCS-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: rgba(0,0,0,0.9); }
 
 
 
403
 
404
- /* ---------------------------------------- */
 
 
 
 
 
 
 
 
 
 
 
405
 
 
 
406
 
 
 
 
 
407
 
408
- /* theme: "light-2", "dark-2" */
 
 
 
 
409
 
410
- .mCS-light-2.mCSB_scrollTools .mCSB_draggerRail,
411
- .mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail{
412
- width: 4px;
413
- background-color: #fff; background-color: rgba(255,255,255,0.1);
414
- -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px;
415
- }
416
 
417
- .mCS-light-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
418
- .mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
419
- width: 4px;
420
- background-color: #fff; background-color: rgba(255,255,255,0.75);
421
- -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px;
422
- }
423
 
424
- .mCS-light-2.mCSB_scrollTools_horizontal .mCSB_draggerRail,
425
- .mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_draggerRail,
426
- .mCS-light-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
427
- .mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
428
- width: 100%;
429
- height: 4px;
430
- margin: 6px auto;
431
- }
432
 
433
- .mCS-light-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.85); }
434
 
435
- .mCS-light-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
436
- .mCS-light-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.9); }
437
 
438
- /* theme: "dark-2" */
439
 
440
- .mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail{
441
- background-color: #000; background-color: rgba(0,0,0,0.1);
442
- -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px;
443
- }
444
 
445
- .mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
446
- background-color: #000; background-color: rgba(0,0,0,0.75);
447
- -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px;
448
- }
449
 
450
- .mCS-dark-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
451
 
452
- .mCS-dark-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
453
- .mCS-dark-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
454
 
455
- /* ---------------------------------------- */
456
 
 
457
 
 
 
 
 
458
 
459
- /* theme: "light-thick", "dark-thick" */
 
 
 
460
 
461
- .mCS-light-thick.mCSB_scrollTools .mCSB_draggerRail,
462
- .mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail{
463
- width: 4px;
464
- background-color: #fff; background-color: rgba(255,255,255,0.1);
465
- -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px;
466
- }
467
 
468
- .mCS-light-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
469
- .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
470
- width: 6px;
471
- background-color: #fff; background-color: rgba(255,255,255,0.75);
472
- -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px;
473
- }
474
 
475
- .mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail,
476
- .mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail{
477
- width: 100%;
478
- height: 4px;
479
- margin: 6px 0;
480
- }
481
 
482
- .mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
483
- .mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
484
- width: 100%;
485
- height: 6px;
486
- margin: 5px auto;
487
- }
488
 
489
- .mCS-light-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.85); }
490
 
491
- .mCS-light-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
492
- .mCS-light-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.9); }
493
 
494
- /* theme: "dark-thick" */
495
 
496
- .mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail{
497
- background-color: #000; background-color: rgba(0,0,0,0.1);
498
- -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px;
499
- }
500
 
501
- .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
502
- background-color: #000; background-color: rgba(0,0,0,0.75);
503
- -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px;
504
- }
505
 
506
- .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
 
 
 
 
507
 
508
- .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
509
- .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
 
 
 
 
 
510
 
511
- /* ---------------------------------------- */
 
 
 
 
 
512
 
 
 
513
 
 
 
514
 
515
- /* theme: "light-thin", "dark-thin" */
 
516
 
517
- .mCS-light-thin.mCSB_scrollTools .mCSB_draggerRail{ background-color: #fff; background-color: rgba(255,255,255,0.1); }
 
 
 
518
 
519
- .mCS-light-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
520
- .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ width: 2px; }
 
 
 
521
 
522
- .mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail,
523
- .mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail{ width: 100%; }
524
 
525
- .mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
526
- .mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
527
- width: 100%;
528
- height: 2px;
529
- margin: 7px auto;
530
- }
531
 
 
 
 
 
532
 
533
- /* theme "dark-thin" */
 
 
 
 
534
 
535
- .mCS-dark-thin.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.15); }
536
 
537
- .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); }
538
 
539
- .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
540
 
541
- .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
542
- .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
543
 
544
- /* ---------------------------------------- */
 
 
 
 
545
 
 
 
546
 
 
 
 
 
 
 
 
 
547
 
548
- /* theme "rounded", "rounded-dark", "rounded-dots", "rounded-dots-dark" */
 
 
 
 
 
549
 
550
- .mCS-rounded.mCSB_scrollTools .mCSB_draggerRail{ background-color: #fff; background-color: rgba(255,255,255,0.15); }
 
 
 
 
 
 
551
 
552
- .mCS-rounded.mCSB_scrollTools .mCSB_dragger,
553
- .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger,
554
- .mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger,
555
- .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger{ height: 14px; }
556
 
557
- .mCS-rounded.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
558
- .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
559
- .mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
560
- .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
561
- width: 14px;
562
- margin: 0 1px;
563
- }
564
 
565
- .mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger,
566
- .mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger,
567
- .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger,
568
- .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger{ width: 14px; }
569
 
570
- .mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
571
- .mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
572
- .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
573
- .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
574
- height: 14px;
575
- margin: 1px 0;
576
- }
577
 
578
- .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,
579
- .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar,
580
- .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,
581
- .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{
582
- width: 16px; /* auto-expanded scrollbar */
583
- height: 16px;
584
- margin: -1px 0;
585
- }
586
 
587
- .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
588
- .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,
589
- .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
590
- .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ width: 4px; /* auto-expanded scrollbar */ }
591
 
592
- .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,
593
- .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar,
594
- .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,
595
- .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{
596
- height: 16px; /* auto-expanded scrollbar */
597
- width: 16px;
598
- margin: 0 -1px;
599
- }
600
 
601
- .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
602
- .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,
603
- .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
604
- .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{
605
- height: 4px; /* auto-expanded scrollbar */
606
- margin: 6px 0;
607
- }
608
 
609
- /* theme "rounded-dark", "rounded-dots-dark" */
610
 
611
- .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
612
- .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); }
613
 
614
- .mCS-rounded-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.15); }
615
-
616
- .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
617
- .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
618
-
619
- .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
620
- .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,
621
- .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
622
- .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
623
-
624
- /* theme "rounded-dots", "rounded-dots-dark" */
625
-
626
- .mCS-rounded-dots.mCSB_scrollTools_vertical .mCSB_draggerRail,
627
- .mCS-rounded-dots-dark.mCSB_scrollTools_vertical .mCSB_draggerRail{ width: 4px; }
628
-
629
- .mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail,
630
- .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail,
631
- .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail,
632
- .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{
633
- background-color: transparent;
634
- background-position: center;
635
- }
636
-
637
- .mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail,
638
- .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail{
639
- background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAANElEQVQYV2NkIAAYiVbw//9/Y6DiM1ANJoyMjGdBbLgJQAX/kU0DKgDLkaQAvxW4HEvQFwCRcxIJK1XznAAAAABJRU5ErkJggg==");
640
- background-repeat: repeat-y;
641
- opacity: 0.3;
642
- filter: "alpha(opacity=30)"; -ms-filter: "alpha(opacity=30)";
643
- }
644
-
645
- .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail,
646
- .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{
647
- height: 4px;
648
- margin: 6px 0;
649
- background-repeat: repeat-x;
650
- }
651
-
652
- /* theme "rounded-dots-dark" */
653
-
654
- .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail{
655
- background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYV2NkIAAYSVFgDFR8BqrBBEifBbGRTfiPZhpYjiQFBK3A6l6CvgAAE9kGCd1mvgEAAAAASUVORK5CYII=");
656
- }
657
-
658
- /* ---------------------------------------- */
659
-
660
-
661
-
662
- /* theme "3d", "3d-dark", "3d-thick", "3d-thick-dark" */
663
-
664
- .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
665
- .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
666
- .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
667
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
668
- background-repeat: repeat-y;
669
- background-image: -moz-linear-gradient(left, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0) 100%);
670
- background-image: -webkit-gradient(linear, left top, right top, color-stop(0%,rgba(255,255,255,0.5)), color-stop(100%,rgba(255,255,255,0)));
671
- background-image: -webkit-linear-gradient(left, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
672
- background-image: -o-linear-gradient(left, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
673
- background-image: -ms-linear-gradient(left, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
674
- background-image: linear-gradient(to right, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
675
- }
676
-
677
- .mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
678
- .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
679
- .mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
680
- .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
681
- background-repeat: repeat-x;
682
- background-image: -moz-linear-gradient(top, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0) 100%);
683
- background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,0.5)), color-stop(100%,rgba(255,255,255,0)));
684
- background-image: -webkit-linear-gradient(top, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
685
- background-image: -o-linear-gradient(top, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
686
- background-image: -ms-linear-gradient(top, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
687
- background-image: linear-gradient(to bottom, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
688
- }
689
-
690
-
691
- /* theme "3d", "3d-dark" */
692
-
693
- .mCS-3d.mCSB_scrollTools_vertical .mCSB_dragger,
694
- .mCS-3d-dark.mCSB_scrollTools_vertical .mCSB_dragger{ height: 70px; }
695
-
696
- .mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger,
697
- .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger{ width: 70px; }
698
-
699
- .mCS-3d.mCSB_scrollTools,
700
- .mCS-3d-dark.mCSB_scrollTools{
701
- opacity: 1;
702
- filter: "alpha(opacity=30)"; -ms-filter: "alpha(opacity=30)";
703
- }
704
-
705
- .mCS-3d.mCSB_scrollTools .mCSB_draggerRail,
706
- .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
707
- .mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail,
708
- .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ -webkit-border-radius: 16px; -moz-border-radius: 16px; border-radius: 16px; }
709
-
710
- .mCS-3d.mCSB_scrollTools .mCSB_draggerRail,
711
- .mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail{
712
- width: 8px;
713
- background-color: #000; background-color: rgba(0,0,0,0.2);
714
- box-shadow: inset 1px 0 1px rgba(0,0,0,0.5), inset -1px 0 1px rgba(255,255,255,0.2);
715
- }
716
-
717
- .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
718
- .mCS-3d.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
719
- .mCS-3d.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
720
- .mCS-3d.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,
721
- .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
722
- .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
723
- .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
724
- .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #555; }
725
-
726
- .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
727
- .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ width: 8px; }
728
-
729
- .mCS-3d.mCSB_scrollTools_horizontal .mCSB_draggerRail,
730
- .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{
731
- width: 100%;
732
- height: 8px;
733
- margin: 4px 0;
734
- box-shadow: inset 0 1px 1px rgba(0,0,0,0.5), inset 0 -1px 1px rgba(255,255,255,0.2);
735
- }
736
-
737
- .mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
738
- .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
739
- width: 100%;
740
- height: 8px;
741
- margin: 4px auto;
742
- }
743
-
744
- /* theme "3d-dark" */
745
-
746
- .mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail{
747
- background-color: #000; background-color: rgba(0,0,0,0.1);
748
- box-shadow: inset 1px 0 1px rgba(0,0,0,0.1);
749
- }
750
 
751
- .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{ box-shadow: inset 0 1px 1px rgba(0,0,0,0.1); }
752
-
753
- /* ---------------------------------------- */
754
-
755
-
756
-
757
- /* theme: "3d-thick", "3d-thick-dark" */
758
-
759
- .mCS-3d-thick.mCSB_scrollTools,
760
- .mCS-3d-thick-dark.mCSB_scrollTools{
761
- opacity: 1;
762
- filter: "alpha(opacity=30)"; -ms-filter: "alpha(opacity=30)";
763
- }
764
-
765
- .mCS-3d-thick.mCSB_scrollTools,
766
- .mCS-3d-thick-dark.mCSB_scrollTools,
767
- .mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer,
768
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer{ -webkit-border-radius: 7px; -moz-border-radius: 7px; border-radius: 7px; }
769
-
770
- .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
771
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; }
772
-
773
- .mCSB_inside + .mCS-3d-thick.mCSB_scrollTools_vertical,
774
- .mCSB_inside + .mCS-3d-thick-dark.mCSB_scrollTools_vertical{ right: 1px; }
775
-
776
- .mCS-3d-thick.mCSB_scrollTools_vertical,
777
- .mCS-3d-thick-dark.mCSB_scrollTools_vertical{ box-shadow: inset 1px 0 1px rgba(0,0,0,0.1), inset 0 0 14px rgba(0,0,0,0.5); }
778
-
779
- .mCS-3d-thick.mCSB_scrollTools_horizontal,
780
- .mCS-3d-thick-dark.mCSB_scrollTools_horizontal{
781
- bottom: 1px;
782
- box-shadow: inset 0 1px 1px rgba(0,0,0,0.1), inset 0 0 14px rgba(0,0,0,0.5);
783
- }
784
-
785
- .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
786
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
787
- box-shadow: inset 1px 0 0 rgba(255,255,255,0.4);
788
- width: 12px;
789
- margin: 2px;
790
- position: absolute;
791
- height: auto;
792
- top: 0;
793
- bottom: 0;
794
- left: 0;
795
- right: 0;
796
- }
797
-
798
- .mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
799
- .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ box-shadow: inset 0 1px 0 rgba(255,255,255,0.4); }
800
-
801
- .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
802
- .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
803
- .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
804
- .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #555; }
805
 
806
- .mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
807
- .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
808
- height: 12px;
809
- width: auto;
810
- }
811
 
812
- .mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer{
813
- background-color: #000; background-color: rgba(0,0,0,0.05);
814
- box-shadow: inset 1px 1px 16px rgba(0,0,0,0.1);
815
- }
816
 
817
- .mCS-3d-thick.mCSB_scrollTools .mCSB_draggerRail{ background-color: transparent; }
818
 
819
- /* theme: "3d-thick-dark" */
 
 
 
 
 
 
 
 
820
 
821
- .mCS-3d-thick-dark.mCSB_scrollTools{ box-shadow: inset 0 0 14px rgba(0,0,0,0.2); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
822
 
823
- .mCS-3d-thick-dark.mCSB_scrollTools_horizontal{ box-shadow: inset 0 1px 1px rgba(0,0,0,0.1), inset 0 0 14px rgba(0,0,0,0.2); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
824
 
825
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ box-shadow: inset 1px 0 0 rgba(255,255,255,0.4), inset -1px 0 0 rgba(0,0,0,0.2); }
 
 
 
 
 
 
 
 
 
826
 
827
- .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ box-shadow: inset 0 1px 0 rgba(255,255,255,0.4), inset 0 -1px 0 rgba(0,0,0,0.2); }
 
 
828
 
829
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
830
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
831
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
832
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #777; }
833
 
834
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer{
835
- background-color: #fff; background-color: rgba(0,0,0,0.05);
836
- box-shadow: inset 1px 1px 16px rgba(0,0,0,0.1);
837
- }
838
 
839
- .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: transparent; }
 
 
840
 
841
- /* ---------------------------------------- */
842
 
843
- /* theme: "minimal", "minimal-dark" */
844
 
845
- .mCSB_outside + .mCS-minimal.mCSB_scrollTools_vertical,
846
- .mCSB_outside + .mCS-minimal-dark.mCSB_scrollTools_vertical{
847
- right: 0;
848
- margin: 12px 0;
849
- }
850
 
851
- .mCustomScrollBox.mCS-minimal + .mCSB_scrollTools.mCSB_scrollTools_horizontal,
852
- .mCustomScrollBox.mCS-minimal + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal,
853
- .mCustomScrollBox.mCS-minimal-dark + .mCSB_scrollTools.mCSB_scrollTools_horizontal,
854
- .mCustomScrollBox.mCS-minimal-dark + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal{
855
- bottom: 0;
856
- margin: 0 12px;
857
- }
858
 
859
- /* RTL direction/left-side scrollbar */
860
- .mCS-dir-rtl > .mCSB_outside + .mCS-minimal.mCSB_scrollTools_vertical,
861
- .mCS-dir-rtl > .mCSB_outside + .mCS-minimal-dark.mCSB_scrollTools_vertical{
862
- left: 0;
863
- right: auto;
864
- }
865
 
866
- .mCS-minimal.mCSB_scrollTools .mCSB_draggerRail,
867
- .mCS-minimal-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: transparent; }
 
868
 
869
- .mCS-minimal.mCSB_scrollTools_vertical .mCSB_dragger,
870
- .mCS-minimal-dark.mCSB_scrollTools_vertical .mCSB_dragger{ height: 50px; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
871
 
872
- .mCS-minimal.mCSB_scrollTools_horizontal .mCSB_dragger,
873
- .mCS-minimal-dark.mCSB_scrollTools_horizontal .mCSB_dragger{ width: 50px; }
874
 
875
- .mCS-minimal.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
876
- background-color: #fff; background-color: rgba(255,255,255,0.2);
877
- filter: "alpha(opacity=20)"; -ms-filter: "alpha(opacity=20)";
878
- }
879
-
880
- .mCS-minimal.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
881
- .mCS-minimal.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{
882
- background-color: #fff; background-color: rgba(255,255,255,0.5);
883
- filter: "alpha(opacity=50)"; -ms-filter: "alpha(opacity=50)";
884
- }
885
-
886
-
887
- /* theme: "minimal-dark" */
888
-
889
- .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
890
- background-color: #000; background-color: rgba(0,0,0,0.2);
891
- filter: "alpha(opacity=20)"; -ms-filter: "alpha(opacity=20)";
892
- }
893
-
894
- .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
895
- .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{
896
- background-color: #000; background-color: rgba(0,0,0,0.5);
897
- filter: "alpha(opacity=50)"; -ms-filter: "alpha(opacity=50)";
898
- }
899
-
900
- /* ---------------------------------------- */
901
-
902
-
903
-
904
- /* theme "light-3", "dark-3" */
905
-
906
- .mCS-light-3.mCSB_scrollTools .mCSB_draggerRail,
907
- .mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail{
908
- width: 6px;
909
- background-color: #000; background-color: rgba(0,0,0,0.2);
910
- }
911
-
912
- .mCS-light-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
913
- .mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ width: 6px; }
914
-
915
- .mCS-light-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
916
- .mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
917
- .mCS-light-3.mCSB_scrollTools_horizontal .mCSB_draggerRail,
918
- .mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_draggerRail{
919
- width: 100%;
920
- height: 6px;
921
- margin: 5px 0;
922
- }
923
-
924
- .mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
925
- .mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,
926
- .mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
927
- .mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{
928
- width: 12px;
929
- }
930
-
931
- .mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
932
- .mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,
933
- .mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
934
- .mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{
935
- height: 12px;
936
- margin: 2px 0;
937
- }
938
-
939
- /* theme "dark-3" */
940
-
941
- .mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: rgba(0,0,0,0.1); }
942
-
943
- .mCS-dark-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: rgba(0,0,0,0.15); }
944
-
945
- .mCS-dark-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
946
- .mCS-dark-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: rgba(0,0,0,0.15); }
947
-
948
- .mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail{ background-color: rgba(0,0,0,0.1); }
949
-
950
- /* ---------------------------------------- */
951
-
952
-
953
-
954
- /* theme "inset", "inset-dark", "inset-2", "inset-2-dark", "inset-3", "inset-3-dark" */
955
-
956
- .mCS-inset.mCSB_scrollTools .mCSB_draggerRail,
957
- .mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail,
958
- .mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail,
959
- .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,
960
- .mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail,
961
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{
962
- width: 12px;
963
- background-color: #000; background-color: rgba(0,0,0,0.2);
964
- }
965
 
966
- .mCS-inset.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
967
- .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
968
- .mCS-inset-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
969
- .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
970
- .mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
971
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
972
- width: 6px;
973
- margin: 3px 5px;
974
- position: absolute;
975
- height: auto;
976
- top: 0;
977
- bottom: 0;
978
- left: 0;
979
- right: 0;
980
- }
981
 
982
- .mCS-inset.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
983
- .mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
984
- .mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
985
- .mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
986
- .mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
987
- .mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
988
- height: 6px;
989
- margin: 5px 3px;
990
- position: absolute;
991
- width: auto;
992
- top: 0;
993
- bottom: 0;
994
- left: 0;
995
- right: 0;
996
- }
997
 
998
- .mCS-inset.mCSB_scrollTools_horizontal .mCSB_draggerRail,
999
- .mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,
1000
- .mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_draggerRail,
1001
- .mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,
1002
- .mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_draggerRail,
1003
- .mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{
1004
- width: 100%;
1005
- height: 12px;
1006
- margin: 2px 0;
1007
- }
1008
-
1009
-
1010
- /* theme "inset-dark", "inset-2-dark", "inset-3-dark" */
1011
-
1012
- .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
1013
- .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
1014
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); }
1015
-
1016
- .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
1017
- .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
1018
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
1019
-
1020
- .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
1021
- .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,
1022
- .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
1023
- .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,
1024
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
1025
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
1026
 
1027
- .mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail,
1028
- .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,
1029
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.1); }
1030
 
 
1031
 
1032
- /* theme "inset-2", "inset-2-dark" */
 
1033
 
1034
- .mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail,
1035
- .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail{
1036
- background-color: transparent;
1037
- border-width: 1px;
1038
- border-style: solid;
1039
- border-color: #fff;
1040
- border-color: rgba(255,255,255,0.2);
1041
- -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;
1042
- }
1043
 
1044
- .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail{ border-color: #000; border-color: rgba(0,0,0,0.2); }
1045
 
 
 
1046
 
1047
- /* theme "inset-3", "inset-3-dark" */
1048
-
1049
- .mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail{ background-color: #fff; background-color: rgba(255,255,255,0.6); }
1050
-
1051
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.6); }
1052
-
1053
- .mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); }
1054
-
1055
- .mCS-inset-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
1056
-
1057
- .mCS-inset-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
1058
- .mCS-inset-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
1059
-
1060
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.75); }
1061
-
1062
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.85); }
1063
-
1064
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
1065
- .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.9); }
1066
-
1067
- /* ---------------------------------------- */
24
  ------------------------------------------------------------------------------------------------------------------------
25
  */
26
 
27
+ .mCustomScrollbar{ -ms-touch-action: pinch-zoom; touch-action: pinch-zoom; /* direct pointer events to js */ }
28
+ .mCustomScrollbar.mCS_no_scrollbar, .mCustomScrollbar.mCS_touch_action{ -ms-touch-action: auto; touch-action: auto; }
29
 
30
+ .mCustomScrollBox{ /* contains plugin's markup */
31
+ position: relative;
32
+ overflow: hidden;
33
+ height: 100%;
34
+ max-width: 100%;
35
+ outline: none;
36
+ direction: ltr;
37
+ }
38
 
39
+ .mCSB_container{ /* contains the original content */
40
+ overflow: hidden;
41
+ width: auto;
42
+ height: auto;
43
+ }
44
 
45
 
46
 
51
  ------------------------------------------------------------------------------------------------------------------------
52
  */
53
 
54
+ .mCSB_inside > .mCSB_container{ margin-right: 30px; }
55
+
56
+ .mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{ margin-right: 0; } /* non-visible scrollbar */
57
+
58
+ .mCS-dir-rtl > .mCSB_inside > .mCSB_container{ /* RTL direction/left-side scrollbar */
59
+ margin-right: 0;
60
+ margin-left: 30px;
61
+ }
62
+
63
+ .mCS-dir-rtl > .mCSB_inside > .mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{ margin-left: 0; } /* RTL direction/left-side scrollbar */
64
+
65
+ .mCSB_scrollTools{ /* contains scrollbar markup (draggable element, dragger rail, buttons etc.) */
66
+ position: absolute;
67
+ width: 16px;
68
+ height: auto;
69
+ left: auto;
70
+ top: 0;
71
+ right: 0;
72
+ bottom: 0;
73
+ }
74
+
75
+ .mCSB_outside + .mCSB_scrollTools{ right: -26px; } /* scrollbar position: outside */
76
+
77
+ .mCS-dir-rtl > .mCSB_inside > .mCSB_scrollTools,
78
+ .mCS-dir-rtl > .mCSB_outside + .mCSB_scrollTools{ /* RTL direction/left-side scrollbar */
79
+ right: auto;
80
+ left: 0;
81
+ }
82
+
83
+ .mCS-dir-rtl > .mCSB_outside + .mCSB_scrollTools{ left: -26px; } /* RTL direction/left-side scrollbar (scrollbar position: outside) */
84
+
85
+ .mCSB_scrollTools .mCSB_draggerContainer{ /* contains the draggable element and dragger rail markup */
86
+ position: absolute;
87
+ top: 0;
88
+ left: 0;
89
+ bottom: 0;
90
+ right: 0;
91
+ height: auto;
92
+ }
93
+
94
+ .mCSB_scrollTools a + .mCSB_draggerContainer{ margin: 20px 0; }
95
+
96
+ .mCSB_scrollTools .mCSB_draggerRail{
97
+ width: 2px;
98
+ height: 100%;
99
+ margin: 0 auto;
100
+ -webkit-border-radius: 16px; -moz-border-radius: 16px; border-radius: 16px;
101
+ }
102
+
103
+ .mCSB_scrollTools .mCSB_dragger{ /* the draggable element */
104
+ cursor: pointer;
105
+ width: 100%;
106
+ height: 30px; /* minimum dragger height */
107
+ z-index: 1;
108
+ }
109
+
110
+ .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ /* the dragger element */
111
+ position: relative;
112
+ width: 4px;
113
+ height: 100%;
114
+ margin: 0 auto;
115
+ -webkit-border-radius: 16px; -moz-border-radius: 16px; border-radius: 16px;
116
+ text-align: center;
117
+ }
118
+
119
+ .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,
120
+ .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{ width: 12px; /* auto-expanded scrollbar */ }
121
+
122
+ .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
123
+ .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ width: 8px; /* auto-expanded scrollbar */ }
124
+
125
+ .mCSB_scrollTools .mCSB_buttonUp,
126
+ .mCSB_scrollTools .mCSB_buttonDown{
127
+ display: block;
128
+ position: absolute;
129
+ height: 20px;
130
+ width: 100%;
131
+ overflow: hidden;
132
+ margin: 0 auto;
133
+ cursor: pointer;
134
+ }
135
+
136
+ .mCSB_scrollTools .mCSB_buttonDown{ bottom: 0; }
137
 
138
 
139
 
144
  ------------------------------------------------------------------------------------------------------------------------
145
  */
146
 
147
+ .mCSB_horizontal.mCSB_inside > .mCSB_container{
148
+ margin-right: 0;
149
+ margin-bottom: 30px;
150
+ }
151
 
152
+ .mCSB_horizontal.mCSB_outside > .mCSB_container{ min-height: 100%; }
153
 
154
+ .mCSB_horizontal > .mCSB_container.mCS_no_scrollbar_x.mCS_x_hidden{ margin-bottom: 0; } /* non-visible scrollbar */
155
 
156
+ .mCSB_scrollTools.mCSB_scrollTools_horizontal{
157
+ width: auto;
158
+ height: 16px;
159
+ top: auto;
160
+ right: 0;
161
+ bottom: 0;
162
+ left: 0;
163
+ }
164
 
165
+ .mCustomScrollBox + .mCSB_scrollTools.mCSB_scrollTools_horizontal,
166
+ .mCustomScrollBox + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal{ bottom: -26px; } /* scrollbar position: outside */
167
 
168
+ .mCSB_scrollTools.mCSB_scrollTools_horizontal a + .mCSB_draggerContainer{ margin: 0 20px; }
169
 
170
+ .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_draggerRail{
171
+ width: 100%;
172
+ height: 2px;
173
+ margin: 7px 0;
174
+ }
175
 
176
+ .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger{
177
+ width: 30px; /* minimum dragger width */
178
+ height: 100%;
179
+ left: 0;
180
+ }
181
 
182
+ .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
183
+ width: 100%;
184
+ height: 4px;
185
+ margin: 6px auto;
186
+ }
187
 
188
+ .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,
189
+ .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{
190
+ height: 12px; /* auto-expanded scrollbar */
191
+ margin: 2px auto;
192
+ }
193
 
194
+ .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
195
+ .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{
196
+ height: 8px; /* auto-expanded scrollbar */
197
+ margin: 4px 0;
198
+ }
199
 
200
+ .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft,
201
+ .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{
202
+ display: block;
203
+ position: absolute;
204
+ width: 20px;
205
+ height: 100%;
206
+ overflow: hidden;
207
+ margin: 0 auto;
208
+ cursor: pointer;
209
+ }
210
 
211
+ .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft{ left: 0; }
212
 
213
+ .mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{ right: 0; }
214
 
215
 
216
 
221
  ------------------------------------------------------------------------------------------------------------------------
222
  */
223
 
224
+ .mCSB_container_wrapper{
225
+ position: absolute;
226
+ height: auto;
227
+ width: auto;
228
+ overflow: hidden;
229
+ top: 0;
230
+ left: 0;
231
+ right: 0;
232
+ bottom: 0;
233
+ margin-right: 30px;
234
+ margin-bottom: 30px;
235
+ }
236
 
237
+ .mCSB_container_wrapper > .mCSB_container{
238
+ padding-right: 30px;
239
+ padding-bottom: 30px;
240
+ -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;
241
+ }
242
 
243
+ .mCSB_vertical_horizontal > .mCSB_scrollTools.mCSB_scrollTools_vertical{ bottom: 20px; }
244
 
245
+ .mCSB_vertical_horizontal > .mCSB_scrollTools.mCSB_scrollTools_horizontal{ right: 20px; }
246
 
247
+ /* non-visible horizontal scrollbar */
248
+ .mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden + .mCSB_scrollTools.mCSB_scrollTools_vertical{ bottom: 0; }
249
 
250
+ /* non-visible vertical scrollbar/RTL direction/left-side scrollbar */
251
+ .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden + .mCSB_scrollTools ~ .mCSB_scrollTools.mCSB_scrollTools_horizontal,
252
+ .mCS-dir-rtl > .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_scrollTools.mCSB_scrollTools_horizontal{ right: 0; }
253
 
254
+ /* RTL direction/left-side scrollbar */
255
+ .mCS-dir-rtl > .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_scrollTools.mCSB_scrollTools_horizontal{ left: 20px; }
256
 
257
+ /* non-visible scrollbar/RTL direction/left-side scrollbar */
258
+ .mCS-dir-rtl > .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden + .mCSB_scrollTools ~ .mCSB_scrollTools.mCSB_scrollTools_horizontal{ left: 0; }
259
 
260
+ .mCS-dir-rtl > .mCSB_inside > .mCSB_container_wrapper{ /* RTL direction/left-side scrollbar */
261
+ margin-right: 0;
262
+ margin-left: 30px;
263
+ }
264
 
265
+ .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden > .mCSB_container{ padding-right: 0; }
 
 
 
266
 
267
+ .mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden > .mCSB_container{ padding-bottom: 0; }
 
 
 
268
 
269
+ .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden{
270
+ margin-right: 0; /* non-visible scrollbar */
271
+ margin-left: 0;
272
+ }
273
 
274
+ /* non-visible horizontal scrollbar */
275
+ .mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside > .mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden{ margin-bottom: 0; }
276
 
277
 
278
 
282
  ------------------------------------------------------------------------------------------------------------------------
283
  */
284
 
285
+ .mCSB_scrollTools,
286
+ .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
287
+ .mCSB_scrollTools .mCSB_buttonUp,
288
+ .mCSB_scrollTools .mCSB_buttonDown,
289
+ .mCSB_scrollTools .mCSB_buttonLeft,
290
+ .mCSB_scrollTools .mCSB_buttonRight{
291
+ -webkit-transition: opacity .2s ease-in-out, background-color .2s ease-in-out;
292
+ -moz-transition: opacity .2s ease-in-out, background-color .2s ease-in-out;
293
+ -o-transition: opacity .2s ease-in-out, background-color .2s ease-in-out;
294
+ transition: opacity .2s ease-in-out, background-color .2s ease-in-out;
295
+ }
296
+
297
+ .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar, /* auto-expanded scrollbar */
298
+ .mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail,
299
+ .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar,
300
+ .mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail{
301
+ -webkit-transition: width .2s ease-out .2s, height .2s ease-out .2s,
302
+ margin-left .2s ease-out .2s, margin-right .2s ease-out .2s,
303
+ margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s,
304
+ opacity .2s ease-in-out, background-color .2s ease-in-out;
305
+ -moz-transition: width .2s ease-out .2s, height .2s ease-out .2s,
306
+ margin-left .2s ease-out .2s, margin-right .2s ease-out .2s,
307
+ margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s,
308
+ opacity .2s ease-in-out, background-color .2s ease-in-out;
309
+ -o-transition: width .2s ease-out .2s, height .2s ease-out .2s,
310
+ margin-left .2s ease-out .2s, margin-right .2s ease-out .2s,
311
+ margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s,
312
+ opacity .2s ease-in-out, background-color .2s ease-in-out;
313
+ transition: width .2s ease-out .2s, height .2s ease-out .2s,
314
+ margin-left .2s ease-out .2s, margin-right .2s ease-out .2s,
315
+ margin-top .2s ease-out .2s, margin-bottom .2s ease-out .2s,
316
+ opacity .2s ease-in-out, background-color .2s ease-in-out;
317
+ }
318
 
319
 
320
 
324
  ------------------------------------------------------------------------------------------------------------------------
325
  */
326
 
327
+ /*
328
+ ----------------------------------------
329
+ 6.1 THEMES
330
+ ----------------------------------------
331
+ */
332
+
333
+ /* default theme ("light") */
334
+
335
+ .mCSB_scrollTools{ opacity: 0.75; filter: "alpha(opacity=75)"; -ms-filter: "alpha(opacity=75)"; }
336
+
337
+ .mCS-autoHide > .mCustomScrollBox > .mCSB_scrollTools,
338
+ .mCS-autoHide > .mCustomScrollBox ~ .mCSB_scrollTools{ opacity: 0; filter: "alpha(opacity=0)"; -ms-filter: "alpha(opacity=0)"; }
339
+
340
+ .mCustomScrollbar > .mCustomScrollBox > .mCSB_scrollTools.mCSB_scrollTools_onDrag,
341
+ .mCustomScrollbar > .mCustomScrollBox ~ .mCSB_scrollTools.mCSB_scrollTools_onDrag,
342
+ .mCustomScrollBox:hover > .mCSB_scrollTools,
343
+ .mCustomScrollBox:hover ~ .mCSB_scrollTools,
344
+ .mCS-autoHide:hover > .mCustomScrollBox > .mCSB_scrollTools,
345
+ .mCS-autoHide:hover > .mCustomScrollBox ~ .mCSB_scrollTools{ opacity: 1; filter: "alpha(opacity=100)"; -ms-filter: "alpha(opacity=100)"; }
346
+
347
+ .mCSB_scrollTools .mCSB_draggerRail{
348
+ background-color: #000; background-color: rgba(0,0,0,0.4);
349
+ filter: "alpha(opacity=40)"; -ms-filter: "alpha(opacity=40)";
350
+ }
351
+
352
+ .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
353
+ background-color: #fff; background-color: rgba(255,255,255,0.75);
354
+ filter: "alpha(opacity=75)"; -ms-filter: "alpha(opacity=75)";
355
+ }
356
+
357
+ .mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{
358
+ background-color: #fff; background-color: rgba(255,255,255,0.85);
359
+ filter: "alpha(opacity=85)"; -ms-filter: "alpha(opacity=85)";
360
+ }
361
+ .mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
362
+ .mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{
363
+ background-color: #fff; background-color: rgba(255,255,255,0.9);
364
+ filter: "alpha(opacity=90)"; -ms-filter: "alpha(opacity=90)";
365
+ }
366
+
367
+ .mCSB_scrollTools .mCSB_buttonUp,
368
+ .mCSB_scrollTools .mCSB_buttonDown,
369
+ .mCSB_scrollTools .mCSB_buttonLeft,
370
+ .mCSB_scrollTools .mCSB_buttonRight{
371
+ background-image: url(mCSB_buttons.png); /* css sprites */
372
+ background-repeat: no-repeat;
373
+ opacity: 0.4; filter: "alpha(opacity=40)"; -ms-filter: "alpha(opacity=40)";
374
+ }
375
+
376
+ .mCSB_scrollTools .mCSB_buttonUp{
377
+ background-position: 0 0;
378
+ /*
379
+ sprites locations
380
+ light: 0 0, -16px 0, -32px 0, -48px 0, 0 -72px, -16px -72px, -32px -72px
381
+ dark: -80px 0, -96px 0, -112px 0, -128px 0, -80px -72px, -96px -72px, -112px -72px
382
+ */
383
+ }
384
+
385
+ .mCSB_scrollTools .mCSB_buttonDown{
386
+ background-position: 0 -20px;
387
+ /*
388
+ sprites locations
389
+ light: 0 -20px, -16px -20px, -32px -20px, -48px -20px, 0 -92px, -16px -92px, -32px -92px
390
+ dark: -80px -20px, -96px -20px, -112px -20px, -128px -20px, -80px -92px, -96px -92px, -112 -92px
391
+ */
392
+ }
393
+
394
+ .mCSB_scrollTools .mCSB_buttonLeft{
395
+ background-position: 0 -40px;
396
+ /*
397
+ sprites locations
398
+ light: 0 -40px, -20px -40px, -40px -40px, -60px -40px, 0 -112px, -20px -112px, -40px -112px
399
+ dark: -80px -40px, -100px -40px, -120px -40px, -140px -40px, -80px -112px, -100px -112px, -120px -112px
400
+ */
401
+ }
402
+
403
+ .mCSB_scrollTools .mCSB_buttonRight{
404
+ background-position: 0 -56px;
405
  /*
406
+ sprites locations
407
+ light: 0 -56px, -20px -56px, -40px -56px, -60px -56px, 0 -128px, -20px -128px, -40px -128px
408
+ dark: -80px -56px, -100px -56px, -120px -56px, -140px -56px, -80px -128px, -100px -128px, -120px -128px
409
  */
410
+ }
411
+
412
+ .mCSB_scrollTools .mCSB_buttonUp:hover,
413
+ .mCSB_scrollTools .mCSB_buttonDown:hover,
414
+ .mCSB_scrollTools .mCSB_buttonLeft:hover,
415
+ .mCSB_scrollTools .mCSB_buttonRight:hover{ opacity: 0.75; filter: "alpha(opacity=75)"; -ms-filter: "alpha(opacity=75)"; }
416
+
417
+ .mCSB_scrollTools .mCSB_buttonUp:active,
418
+ .mCSB_scrollTools .mCSB_buttonDown:active,
419
+ .mCSB_scrollTools .mCSB_buttonLeft:active,
420
+ .mCSB_scrollTools .mCSB_buttonRight:active{ opacity: 0.9; filter: "alpha(opacity=90)"; -ms-filter: "alpha(opacity=90)"; }
421
+
422
+
423
+ /* theme: "dark" */
424
+
425
+ .mCS-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.15); }
426
+
427
+ .mCS-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); }
428
+
429
+ .mCS-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: rgba(0,0,0,0.85); }
430
+
431
+ .mCS-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
432
+ .mCS-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: rgba(0,0,0,0.9); }
433
+
434
+ .mCS-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -80px 0; }
435
+
436
+ .mCS-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -80px -20px; }
437
+
438
+ .mCS-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -80px -40px; }
439
+
440
+ .mCS-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -80px -56px; }
441
+
442
+ /* ---------------------------------------- */
443
+
444
+
445
+
446
+ /* theme: "light-2", "dark-2" */
447
+
448
+ .mCS-light-2.mCSB_scrollTools .mCSB_draggerRail,
449
+ .mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail{
450
+ width: 4px;
451
+ background-color: #fff; background-color: rgba(255,255,255,0.1);
452
+ -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px;
453
+ }
454
+
455
+ .mCS-light-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
456
+ .mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
457
+ width: 4px;
458
+ background-color: #fff; background-color: rgba(255,255,255,0.75);
459
+ -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px;
460
+ }
461
+
462
+ .mCS-light-2.mCSB_scrollTools_horizontal .mCSB_draggerRail,
463
+ .mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_draggerRail,
464
+ .mCS-light-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
465
+ .mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
466
+ width: 100%;
467
+ height: 4px;
468
+ margin: 6px auto;
469
+ }
470
+
471
+ .mCS-light-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.85); }
472
+
473
+ .mCS-light-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
474
+ .mCS-light-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.9); }
475
+
476
+ .mCS-light-2.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px 0; }
477
+
478
+ .mCS-light-2.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -20px; }
479
+
480
+ .mCS-light-2.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -40px; }
481
+
482
+ .mCS-light-2.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -56px; }
483
+
484
+
485
+ /* theme: "dark-2" */
486
+
487
+ .mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail{
488
+ background-color: #000; background-color: rgba(0,0,0,0.1);
489
+ -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px;
490
+ }
491
+
492
+ .mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
493
+ background-color: #000; background-color: rgba(0,0,0,0.75);
494
+ -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px;
495
+ }
496
+
497
+ .mCS-dark-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
498
+
499
+ .mCS-dark-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
500
+ .mCS-dark-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
501
+
502
+ .mCS-dark-2.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px 0; }
503
+
504
+ .mCS-dark-2.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -20px; }
505
+
506
+ .mCS-dark-2.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -40px; }
507
+
508
+ .mCS-dark-2.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -56px; }
509
+
510
+ /* ---------------------------------------- */
511
+
512
+
513
+
514
+ /* theme: "light-thick", "dark-thick" */
515
+
516
+ .mCS-light-thick.mCSB_scrollTools .mCSB_draggerRail,
517
+ .mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail{
518
+ width: 4px;
519
+ background-color: #fff; background-color: rgba(255,255,255,0.1);
520
+ -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px;
521
+ }
522
+
523
+ .mCS-light-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
524
+ .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
525
+ width: 6px;
526
+ background-color: #fff; background-color: rgba(255,255,255,0.75);
527
+ -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px;
528
+ }
529
+
530
+ .mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail,
531
+ .mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail{
532
+ width: 100%;
533
+ height: 4px;
534
+ margin: 6px 0;
535
+ }
536
+
537
+ .mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
538
+ .mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
539
+ width: 100%;
540
+ height: 6px;
541
+ margin: 5px auto;
542
+ }
543
+
544
+ .mCS-light-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.85); }
545
+
546
+ .mCS-light-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
547
+ .mCS-light-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.9); }
548
+
549
+ .mCS-light-thick.mCSB_scrollTools .mCSB_buttonUp{ background-position: -16px 0; }
550
+
551
+ .mCS-light-thick.mCSB_scrollTools .mCSB_buttonDown{ background-position: -16px -20px; }
552
+
553
+ .mCS-light-thick.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -20px -40px; }
554
+
555
+ .mCS-light-thick.mCSB_scrollTools .mCSB_buttonRight{ background-position: -20px -56px; }
556
+
557
+
558
+ /* theme: "dark-thick" */
559
+
560
+ .mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail{
561
+ background-color: #000; background-color: rgba(0,0,0,0.1);
562
+ -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px;
563
+ }
564
+
565
+ .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
566
+ background-color: #000; background-color: rgba(0,0,0,0.75);
567
+ -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px;
568
+ }
569
+
570
+ .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
571
+
572
+ .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
573
+ .mCS-dark-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
574
+
575
+ .mCS-dark-thick.mCSB_scrollTools .mCSB_buttonUp{ background-position: -96px 0; }
576
+
577
+ .mCS-dark-thick.mCSB_scrollTools .mCSB_buttonDown{ background-position: -96px -20px; }
578
+
579
+ .mCS-dark-thick.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -100px -40px; }
580
+
581
+ .mCS-dark-thick.mCSB_scrollTools .mCSB_buttonRight{ background-position: -100px -56px; }
582
+
583
+ /* ---------------------------------------- */
584
+
585
+
586
+
587
+ /* theme: "light-thin", "dark-thin" */
588
+
589
+ .mCS-light-thin.mCSB_scrollTools .mCSB_draggerRail{ background-color: #fff; background-color: rgba(255,255,255,0.1); }
590
+
591
+ .mCS-light-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
592
+ .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ width: 2px; }
593
+
594
+ .mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail,
595
+ .mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail{ width: 100%; }
596
+
597
+ .mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
598
+ .mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
599
+ width: 100%;
600
+ height: 2px;
601
+ margin: 7px auto;
602
+ }
603
+
604
+
605
+ /* theme "dark-thin" */
606
+
607
+ .mCS-dark-thin.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.15); }
608
+
609
+ .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); }
610
+
611
+ .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
612
+
613
+ .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
614
+ .mCS-dark-thin.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
615
+
616
+ .mCS-dark-thin.mCSB_scrollTools .mCSB_buttonUp{ background-position: -80px 0; }
617
+
618
+ .mCS-dark-thin.mCSB_scrollTools .mCSB_buttonDown{ background-position: -80px -20px; }
619
+
620
+ .mCS-dark-thin.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -80px -40px; }
621
+
622
+ .mCS-dark-thin.mCSB_scrollTools .mCSB_buttonRight{ background-position: -80px -56px; }
623
+
624
+ /* ---------------------------------------- */
625
+
626
+
627
+
628
+ /* theme "rounded", "rounded-dark", "rounded-dots", "rounded-dots-dark" */
629
+
630
+ .mCS-rounded.mCSB_scrollTools .mCSB_draggerRail{ background-color: #fff; background-color: rgba(255,255,255,0.15); }
631
+
632
+ .mCS-rounded.mCSB_scrollTools .mCSB_dragger,
633
+ .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger,
634
+ .mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger,
635
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger{ height: 14px; }
636
+
637
+ .mCS-rounded.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
638
+ .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
639
+ .mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
640
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
641
+ width: 14px;
642
+ margin: 0 1px;
643
+ }
644
+
645
+ .mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger,
646
+ .mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger,
647
+ .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger,
648
+ .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger{ width: 14px; }
649
+
650
+ .mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
651
+ .mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
652
+ .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
653
+ .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
654
+ height: 14px;
655
+ margin: 1px 0;
656
+ }
657
+
658
+ .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,
659
+ .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar,
660
+ .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,
661
+ .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{
662
+ width: 16px; /* auto-expanded scrollbar */
663
+ height: 16px;
664
+ margin: -1px 0;
665
+ }
666
+
667
+ .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
668
+ .mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,
669
+ .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
670
+ .mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{ width: 4px; /* auto-expanded scrollbar */ }
671
+
672
+ .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,
673
+ .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar,
674
+ .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,
675
+ .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{
676
+ height: 16px; /* auto-expanded scrollbar */
677
+ width: 16px;
678
+ margin: 0 -1px;
679
+ }
680
+
681
+ .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
682
+ .mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,
683
+ .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
684
+ .mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{
685
+ height: 4px; /* auto-expanded scrollbar */
686
+ margin: 6px 0;
687
+ }
688
+
689
+ .mCS-rounded.mCSB_scrollTools .mCSB_buttonUp{ background-position: 0 -72px; }
690
+
691
+ .mCS-rounded.mCSB_scrollTools .mCSB_buttonDown{ background-position: 0 -92px; }
692
+
693
+ .mCS-rounded.mCSB_scrollTools .mCSB_buttonLeft{ background-position: 0 -112px; }
694
+
695
+ .mCS-rounded.mCSB_scrollTools .mCSB_buttonRight{ background-position: 0 -128px; }
696
+
697
+
698
+ /* theme "rounded-dark", "rounded-dots-dark" */
699
+
700
+ .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
701
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); }
702
+
703
+ .mCS-rounded-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.15); }
704
+
705
+ .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
706
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
707
+
708
+ .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
709
+ .mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,
710
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
711
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
712
+
713
+ .mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -80px -72px; }
714
+
715
+ .mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -80px -92px; }
716
+
717
+ .mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -80px -112px; }
718
+
719
+ .mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -80px -128px; }
720
+
721
+
722
+ /* theme "rounded-dots", "rounded-dots-dark" */
723
+
724
+ .mCS-rounded-dots.mCSB_scrollTools_vertical .mCSB_draggerRail,
725
+ .mCS-rounded-dots-dark.mCSB_scrollTools_vertical .mCSB_draggerRail{ width: 4px; }
726
+
727
+ .mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail,
728
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail,
729
+ .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail,
730
+ .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{
731
+ background-color: transparent;
732
+ background-position: center;
733
+ }
734
+
735
+ .mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail,
736
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail{
737
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAANElEQVQYV2NkIAAYiVbw//9/Y6DiM1ANJoyMjGdBbLgJQAX/kU0DKgDLkaQAvxW4HEvQFwCRcxIJK1XznAAAAABJRU5ErkJggg==");
738
+ background-repeat: repeat-y;
739
+ opacity: 0.3;
740
+ filter: "alpha(opacity=30)"; -ms-filter: "alpha(opacity=30)";
741
+ }
742
+
743
+ .mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail,
744
+ .mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{
745
+ height: 4px;
746
+ margin: 6px 0;
747
+ background-repeat: repeat-x;
748
+ }
749
+
750
+ .mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonUp{ background-position: -16px -72px; }
751
+
752
+ .mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonDown{ background-position: -16px -92px; }
753
+
754
+ .mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -20px -112px; }
755
+
756
+ .mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonRight{ background-position: -20px -128px; }
757
+
758
+
759
+ /* theme "rounded-dots-dark" */
760
+
761
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail{
762
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYV2NkIAAYSVFgDFR8BqrBBEifBbGRTfiPZhpYjiQFBK3A6l6CvgAAE9kGCd1mvgEAAAAASUVORK5CYII=");
763
+ }
764
+
765
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -96px -72px; }
766
+
767
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -96px -92px; }
768
+
769
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -100px -112px; }
770
+
771
+ .mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -100px -128px; }
772
+
773
+ /* ---------------------------------------- */
774
+
775
+
776
+
777
+ /* theme "3d", "3d-dark", "3d-thick", "3d-thick-dark" */
778
+
779
+ .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
780
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
781
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
782
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
783
+ background-repeat: repeat-y;
784
+ background-image: -moz-linear-gradient(left, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0) 100%);
785
+ background-image: -webkit-gradient(linear, left top, right top, color-stop(0%,rgba(255,255,255,0.5)), color-stop(100%,rgba(255,255,255,0)));
786
+ background-image: -webkit-linear-gradient(left, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
787
+ background-image: -o-linear-gradient(left, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
788
+ background-image: -ms-linear-gradient(left, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
789
+ background-image: linear-gradient(to right, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
790
+ }
791
+
792
+ .mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
793
+ .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
794
+ .mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
795
+ .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
796
+ background-repeat: repeat-x;
797
+ background-image: -moz-linear-gradient(top, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0) 100%);
798
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,0.5)), color-stop(100%,rgba(255,255,255,0)));
799
+ background-image: -webkit-linear-gradient(top, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
800
+ background-image: -o-linear-gradient(top, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
801
+ background-image: -ms-linear-gradient(top, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
802
+ background-image: linear-gradient(to bottom, rgba(255,255,255,0.5) 0%,rgba(255,255,255,0) 100%);
803
+ }
804
+
805
+
806
+ /* theme "3d", "3d-dark" */
807
+
808
+ .mCS-3d.mCSB_scrollTools_vertical .mCSB_dragger,
809
+ .mCS-3d-dark.mCSB_scrollTools_vertical .mCSB_dragger{ height: 70px; }
810
+
811
+ .mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger,
812
+ .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger{ width: 70px; }
813
+
814
+ .mCS-3d.mCSB_scrollTools,
815
+ .mCS-3d-dark.mCSB_scrollTools{
816
+ opacity: 1;
817
+ filter: "alpha(opacity=30)"; -ms-filter: "alpha(opacity=30)";
818
+ }
819
+
820
+ .mCS-3d.mCSB_scrollTools .mCSB_draggerRail,
821
+ .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
822
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail,
823
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ -webkit-border-radius: 16px; -moz-border-radius: 16px; border-radius: 16px; }
824
+
825
+ .mCS-3d.mCSB_scrollTools .mCSB_draggerRail,
826
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail{
827
+ width: 8px;
828
+ background-color: #000; background-color: rgba(0,0,0,0.2);
829
+ box-shadow: inset 1px 0 1px rgba(0,0,0,0.5), inset -1px 0 1px rgba(255,255,255,0.2);
830
+ }
831
+
832
+ .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
833
+ .mCS-3d.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
834
+ .mCS-3d.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
835
+ .mCS-3d.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,
836
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
837
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
838
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
839
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #555; }
840
+
841
+ .mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
842
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ width: 8px; }
843
+
844
+ .mCS-3d.mCSB_scrollTools_horizontal .mCSB_draggerRail,
845
+ .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{
846
+ width: 100%;
847
+ height: 8px;
848
+ margin: 4px 0;
849
+ box-shadow: inset 0 1px 1px rgba(0,0,0,0.5), inset 0 -1px 1px rgba(255,255,255,0.2);
850
+ }
851
+
852
+ .mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
853
+ .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
854
+ width: 100%;
855
+ height: 8px;
856
+ margin: 4px auto;
857
+ }
858
+
859
+ .mCS-3d.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px -72px; }
860
+
861
+ .mCS-3d.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -92px; }
862
+
863
+ .mCS-3d.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -112px; }
864
+
865
+ .mCS-3d.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -128px; }
866
+
867
 
868
+ /* theme "3d-dark" */
869
 
870
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail{
871
+ background-color: #000; background-color: rgba(0,0,0,0.1);
872
+ box-shadow: inset 1px 0 1px rgba(0,0,0,0.1);
873
+ }
874
 
875
+ .mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{ box-shadow: inset 0 1px 1px rgba(0,0,0,0.1); }
 
876
 
877
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px -72px; }
 
 
 
 
 
878
 
879
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -92px; }
 
 
 
880
 
881
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -112px; }
 
 
 
882
 
883
+ .mCS-3d-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -128px; }
 
 
 
 
 
 
 
 
884
 
885
+ /* ---------------------------------------- */
 
 
 
 
 
 
 
886
 
887
 
 
 
 
 
888
 
889
+ /* theme: "3d-thick", "3d-thick-dark" */
 
 
 
890
 
891
+ .mCS-3d-thick.mCSB_scrollTools,
892
+ .mCS-3d-thick-dark.mCSB_scrollTools{
893
+ opacity: 1;
894
+ filter: "alpha(opacity=30)"; -ms-filter: "alpha(opacity=30)";
895
+ }
896
 
897
+ .mCS-3d-thick.mCSB_scrollTools,
898
+ .mCS-3d-thick-dark.mCSB_scrollTools,
899
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer,
900
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer{ -webkit-border-radius: 7px; -moz-border-radius: 7px; border-radius: 7px; }
901
 
902
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
903
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; }
904
 
905
+ .mCSB_inside + .mCS-3d-thick.mCSB_scrollTools_vertical,
906
+ .mCSB_inside + .mCS-3d-thick-dark.mCSB_scrollTools_vertical{ right: 1px; }
907
 
908
+ .mCS-3d-thick.mCSB_scrollTools_vertical,
909
+ .mCS-3d-thick-dark.mCSB_scrollTools_vertical{ box-shadow: inset 1px 0 1px rgba(0,0,0,0.1), inset 0 0 14px rgba(0,0,0,0.5); }
910
 
911
+ .mCS-3d-thick.mCSB_scrollTools_horizontal,
912
+ .mCS-3d-thick-dark.mCSB_scrollTools_horizontal{
913
+ bottom: 1px;
914
+ box-shadow: inset 0 1px 1px rgba(0,0,0,0.1), inset 0 0 14px rgba(0,0,0,0.5);
915
+ }
916
 
917
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
918
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
919
+ box-shadow: inset 1px 0 0 rgba(255,255,255,0.4);
920
+ width: 12px;
921
+ margin: 2px;
922
+ position: absolute;
923
+ height: auto;
924
+ top: 0;
925
+ bottom: 0;
926
+ left: 0;
927
+ right: 0;
928
+ }
929
 
930
+ .mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
931
+ .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ box-shadow: inset 0 1px 0 rgba(255,255,255,0.4); }
932
 
933
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
934
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
935
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
936
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #555; }
937
 
938
+ .mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
939
+ .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
940
+ height: 12px;
941
+ width: auto;
942
+ }
943
 
944
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer{
945
+ background-color: #000; background-color: rgba(0,0,0,0.05);
946
+ box-shadow: inset 1px 1px 16px rgba(0,0,0,0.1);
947
+ }
 
 
948
 
949
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_draggerRail{ background-color: transparent; }
 
 
 
 
 
950
 
951
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px -72px; }
 
 
 
 
 
 
 
952
 
953
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -92px; }
954
 
955
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -112px; }
 
956
 
957
+ .mCS-3d-thick.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -128px; }
958
 
 
 
 
 
959
 
960
+ /* theme: "3d-thick-dark" */
 
 
 
961
 
962
+ .mCS-3d-thick-dark.mCSB_scrollTools{ box-shadow: inset 0 0 14px rgba(0,0,0,0.2); }
963
 
964
+ .mCS-3d-thick-dark.mCSB_scrollTools_horizontal{ box-shadow: inset 0 1px 1px rgba(0,0,0,0.1), inset 0 0 14px rgba(0,0,0,0.2); }
 
965
 
966
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ box-shadow: inset 1px 0 0 rgba(255,255,255,0.4), inset -1px 0 0 rgba(0,0,0,0.2); }
967
 
968
+ .mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{ box-shadow: inset 0 1px 0 rgba(255,255,255,0.4), inset 0 -1px 0 rgba(0,0,0,0.2); }
969
 
970
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
971
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
972
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
973
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #777; }
974
 
975
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer{
976
+ background-color: #fff; background-color: rgba(0,0,0,0.05);
977
+ box-shadow: inset 1px 1px 16px rgba(0,0,0,0.1);
978
+ }
979
 
980
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: transparent; }
 
 
 
 
 
981
 
982
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px -72px; }
 
 
 
 
 
983
 
984
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -92px; }
 
 
 
 
 
985
 
986
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -112px; }
 
 
 
 
 
987
 
988
+ .mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -128px; }
989
 
990
+ /* ---------------------------------------- */
 
991
 
 
992
 
 
 
 
 
993
 
994
+ /* theme: "minimal", "minimal-dark" */
 
 
 
995
 
996
+ .mCSB_outside + .mCS-minimal.mCSB_scrollTools_vertical,
997
+ .mCSB_outside + .mCS-minimal-dark.mCSB_scrollTools_vertical{
998
+ right: 0;
999
+ margin: 12px 0;
1000
+ }
1001
 
1002
+ .mCustomScrollBox.mCS-minimal + .mCSB_scrollTools.mCSB_scrollTools_horizontal,
1003
+ .mCustomScrollBox.mCS-minimal + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal,
1004
+ .mCustomScrollBox.mCS-minimal-dark + .mCSB_scrollTools.mCSB_scrollTools_horizontal,
1005
+ .mCustomScrollBox.mCS-minimal-dark + .mCSB_scrollTools + .mCSB_scrollTools.mCSB_scrollTools_horizontal{
1006
+ bottom: 0;
1007
+ margin: 0 12px;
1008
+ }
1009
 
1010
+ /* RTL direction/left-side scrollbar */
1011
+ .mCS-dir-rtl > .mCSB_outside + .mCS-minimal.mCSB_scrollTools_vertical,
1012
+ .mCS-dir-rtl > .mCSB_outside + .mCS-minimal-dark.mCSB_scrollTools_vertical{
1013
+ left: 0;
1014
+ right: auto;
1015
+ }
1016
 
1017
+ .mCS-minimal.mCSB_scrollTools .mCSB_draggerRail,
1018
+ .mCS-minimal-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: transparent; }
1019
 
1020
+ .mCS-minimal.mCSB_scrollTools_vertical .mCSB_dragger,
1021
+ .mCS-minimal-dark.mCSB_scrollTools_vertical .mCSB_dragger{ height: 50px; }
1022
 
1023
+ .mCS-minimal.mCSB_scrollTools_horizontal .mCSB_dragger,
1024
+ .mCS-minimal-dark.mCSB_scrollTools_horizontal .mCSB_dragger{ width: 50px; }
1025
 
1026
+ .mCS-minimal.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
1027
+ background-color: #fff; background-color: rgba(255,255,255,0.2);
1028
+ filter: "alpha(opacity=20)"; -ms-filter: "alpha(opacity=20)";
1029
+ }
1030
 
1031
+ .mCS-minimal.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
1032
+ .mCS-minimal.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{
1033
+ background-color: #fff; background-color: rgba(255,255,255,0.5);
1034
+ filter: "alpha(opacity=50)"; -ms-filter: "alpha(opacity=50)";
1035
+ }
1036
 
 
 
1037
 
1038
+ /* theme: "minimal-dark" */
 
 
 
 
 
1039
 
1040
+ .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
1041
+ background-color: #000; background-color: rgba(0,0,0,0.2);
1042
+ filter: "alpha(opacity=20)"; -ms-filter: "alpha(opacity=20)";
1043
+ }
1044
 
1045
+ .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
1046
+ .mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{
1047
+ background-color: #000; background-color: rgba(0,0,0,0.5);
1048
+ filter: "alpha(opacity=50)"; -ms-filter: "alpha(opacity=50)";
1049
+ }
1050
 
1051
+ /* ---------------------------------------- */
1052
 
 
1053
 
 
1054
 
1055
+ /* theme "light-3", "dark-3" */
 
1056
 
1057
+ .mCS-light-3.mCSB_scrollTools .mCSB_draggerRail,
1058
+ .mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail{
1059
+ width: 6px;
1060
+ background-color: #000; background-color: rgba(0,0,0,0.2);
1061
+ }
1062
 
1063
+ .mCS-light-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
1064
+ .mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ width: 6px; }
1065
 
1066
+ .mCS-light-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
1067
+ .mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
1068
+ .mCS-light-3.mCSB_scrollTools_horizontal .mCSB_draggerRail,
1069
+ .mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_draggerRail{
1070
+ width: 100%;
1071
+ height: 6px;
1072
+ margin: 5px 0;
1073
+ }
1074
 
1075
+ .mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
1076
+ .mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,
1077
+ .mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
1078
+ .mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{
1079
+ width: 12px;
1080
+ }
1081
 
1082
+ .mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
1083
+ .mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,
1084
+ .mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded + .mCSB_draggerRail,
1085
+ .mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{
1086
+ height: 12px;
1087
+ margin: 2px 0;
1088
+ }
1089
 
1090
+ .mCS-light-3.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px -72px; }
 
 
 
1091
 
1092
+ .mCS-light-3.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -92px; }
 
 
 
 
 
 
1093
 
1094
+ .mCS-light-3.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -112px; }
 
 
 
1095
 
1096
+ .mCS-light-3.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -128px; }
1097
+
1098
+
1099
+ /* theme "dark-3" */
 
 
 
1100
 
1101
+ .mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); }
1102
+
1103
+ .mCS-dark-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
 
 
 
 
 
1104
 
1105
+ .mCS-dark-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
1106
+ .mCS-dark-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
 
 
1107
 
1108
+ .mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.1); }
 
 
 
 
 
 
 
1109
 
1110
+ .mCS-dark-3.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px -72px; }
 
 
 
 
 
 
1111
 
1112
+ .mCS-dark-3.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -92px; }
1113
 
1114
+ .mCS-dark-3.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -112px; }
 
1115
 
1116
+ .mCS-dark-3.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -128px; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1117
 
1118
+ /* ---------------------------------------- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1119
 
 
 
 
 
 
1120
 
 
 
 
 
1121
 
1122
+ /* theme "inset", "inset-dark", "inset-2", "inset-2-dark", "inset-3", "inset-3-dark" */
1123
 
1124
+ .mCS-inset.mCSB_scrollTools .mCSB_draggerRail,
1125
+ .mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail,
1126
+ .mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail,
1127
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,
1128
+ .mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail,
1129
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{
1130
+ width: 12px;
1131
+ background-color: #000; background-color: rgba(0,0,0,0.2);
1132
+ }
1133
 
1134
+ .mCS-inset.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
1135
+ .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
1136
+ .mCS-inset-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
1137
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
1138
+ .mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
1139
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{
1140
+ width: 6px;
1141
+ margin: 3px 5px;
1142
+ position: absolute;
1143
+ height: auto;
1144
+ top: 0;
1145
+ bottom: 0;
1146
+ left: 0;
1147
+ right: 0;
1148
+ }
1149
 
1150
+ .mCS-inset.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
1151
+ .mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
1152
+ .mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
1153
+ .mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
1154
+ .mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,
1155
+ .mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{
1156
+ height: 6px;
1157
+ margin: 5px 3px;
1158
+ position: absolute;
1159
+ width: auto;
1160
+ top: 0;
1161
+ bottom: 0;
1162
+ left: 0;
1163
+ right: 0;
1164
+ }
1165
 
1166
+ .mCS-inset.mCSB_scrollTools_horizontal .mCSB_draggerRail,
1167
+ .mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,
1168
+ .mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_draggerRail,
1169
+ .mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,
1170
+ .mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_draggerRail,
1171
+ .mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{
1172
+ width: 100%;
1173
+ height: 12px;
1174
+ margin: 2px 0;
1175
+ }
1176
 
1177
+ .mCS-inset.mCSB_scrollTools .mCSB_buttonUp,
1178
+ .mCS-inset-2.mCSB_scrollTools .mCSB_buttonUp,
1179
+ .mCS-inset-3.mCSB_scrollTools .mCSB_buttonUp{ background-position: -32px -72px; }
1180
 
1181
+ .mCS-inset.mCSB_scrollTools .mCSB_buttonDown,
1182
+ .mCS-inset-2.mCSB_scrollTools .mCSB_buttonDown,
1183
+ .mCS-inset-3.mCSB_scrollTools .mCSB_buttonDown{ background-position: -32px -92px; }
 
1184
 
1185
+ .mCS-inset.mCSB_scrollTools .mCSB_buttonLeft,
1186
+ .mCS-inset-2.mCSB_scrollTools .mCSB_buttonLeft,
1187
+ .mCS-inset-3.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -40px -112px; }
 
1188
 
1189
+ .mCS-inset.mCSB_scrollTools .mCSB_buttonRight,
1190
+ .mCS-inset-2.mCSB_scrollTools .mCSB_buttonRight,
1191
+ .mCS-inset-3.mCSB_scrollTools .mCSB_buttonRight{ background-position: -40px -128px; }
1192
 
 
1193
 
1194
+ /* theme "inset-dark", "inset-2-dark", "inset-3-dark" */
1195
 
1196
+ .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
1197
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,
1198
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); }
 
 
1199
 
1200
+ .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
1201
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,
1202
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
 
 
 
 
1203
 
1204
+ .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
1205
+ .mCS-inset-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,
1206
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
1207
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,
1208
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
1209
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
1210
 
1211
+ .mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail,
1212
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,
1213
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.1); }
1214
 
1215
+ .mCS-inset-dark.mCSB_scrollTools .mCSB_buttonUp,
1216
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonUp,
1217
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonUp{ background-position: -112px -72px; }
1218
+
1219
+ .mCS-inset-dark.mCSB_scrollTools .mCSB_buttonDown,
1220
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonDown,
1221
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonDown{ background-position: -112px -92px; }
1222
+
1223
+ .mCS-inset-dark.mCSB_scrollTools .mCSB_buttonLeft,
1224
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonLeft,
1225
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonLeft{ background-position: -120px -112px; }
1226
+
1227
+ .mCS-inset-dark.mCSB_scrollTools .mCSB_buttonRight,
1228
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonRight,
1229
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonRight{ background-position: -120px -128px; }
1230
+
1231
+
1232
+ /* theme "inset-2", "inset-2-dark" */
1233
+
1234
+ .mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail,
1235
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail{
1236
+ background-color: transparent;
1237
+ border-width: 1px;
1238
+ border-style: solid;
1239
+ border-color: #fff;
1240
+ border-color: rgba(255,255,255,0.2);
1241
+ -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;
1242
+ }
1243
 
1244
+ .mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail{ border-color: #000; border-color: rgba(0,0,0,0.2); }
 
1245
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1246
 
1247
+ /* theme "inset-3", "inset-3-dark" */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1248
 
1249
+ .mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail{ background-color: #fff; background-color: rgba(255,255,255,0.6); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1250
 
1251
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{ background-color: #000; background-color: rgba(0,0,0,0.6); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1252
 
1253
+ .mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.75); }
 
 
1254
 
1255
+ .mCS-inset-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.85); }
1256
 
1257
+ .mCS-inset-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
1258
+ .mCS-inset-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #000; background-color: rgba(0,0,0,0.9); }
1259
 
1260
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.75); }
 
 
 
 
 
 
 
 
1261
 
1262
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.85); }
1263
 
1264
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,
1265
+ .mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar{ background-color: #fff; background-color: rgba(255,255,255,0.9); }
1266
 
1267
+ /* ---------------------------------------- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/js/um-account.js CHANGED
@@ -1,12 +1,14 @@
1
  jQuery(document).ready(function() {
2
 
3
  var current_tab = jQuery('.um-account-main').attr('data-current_tab');
4
-
5
- if ( current_tab ) {
6
- jQuery('.um-account-tab[data-tab='+current_tab+']').show();
 
 
7
  }
8
 
9
- jQuery(document).on('click','.um-account-side li a',function(e){
10
  e.preventDefault();
11
  var link = jQuery(this);
12
 
@@ -16,32 +18,35 @@ jQuery(document).ready(function() {
16
  var url_ = jQuery(this).attr('href');
17
  var tab_ = jQuery(this).attr('data-tab');
18
 
19
- jQuery("input[id=_um_account_tab]:hidden").val( tab_ );
20
 
21
  window.history.pushState("", "", url_);
22
-
23
  jQuery('.um-account-tab').hide();
24
- jQuery('.um-account-tab[data-tab='+tab_+']').fadeIn();
25
-
 
 
 
26
  jQuery('.um-account-nav a').removeClass('current');
27
- jQuery('.um-account-nav a[data-tab='+tab_+']').addClass('current');
28
 
29
  return false;
30
  });
31
- });
32
 
33
- jQuery(document).on('click','.um-account-nav a',function(e){
 
34
  e.preventDefault();
35
-
36
  var tab_ = jQuery(this).attr('data-tab');
37
  var div = jQuery(this).parents('div');
38
  var link = jQuery(this);
39
 
40
-
41
- jQuery("input[id=_um_account_tab]:hidden").val( tab_ );
42
-
43
  jQuery('.um-account-tab').hide();
44
-
45
  if ( link.hasClass('current') ) {
46
  div.next('.um-account-tab').slideUp();
47
  link.removeClass('current');
@@ -51,9 +56,12 @@ jQuery(document).ready(function() {
51
  link.addClass('current');
52
  }
53
 
 
 
 
54
  jQuery('.um-account-side li a').removeClass('current');
55
- jQuery('.um-account-side li a[data-tab='+tab_+']').addClass('current');
56
 
57
  return false;
58
  });
59
-
1
  jQuery(document).ready(function() {
2
 
3
  var current_tab = jQuery('.um-account-main').attr('data-current_tab');
4
+
5
+ if ( current_tab ) {
6
+ jQuery('.um-account-tab[data-tab="'+current_tab+'"]').show();
7
+
8
+ jQuery('.um-account-tab:not(:visible)').find( 'input:not(:disabled)' ).addClass('um_account_inactive').prop( 'disabled', true ).attr( 'disabled', true );
9
  }
10
 
11
+ jQuery( document.body ).on( 'click', '.um-account-side li a', function(e) {
12
  e.preventDefault();
13
  var link = jQuery(this);
14
 
18
  var url_ = jQuery(this).attr('href');
19
  var tab_ = jQuery(this).attr('data-tab');
20
 
21
+ jQuery('input[id="_um_account_tab"]:hidden').val( tab_ );
22
 
23
  window.history.pushState("", "", url_);
24
+
25
  jQuery('.um-account-tab').hide();
26
+ jQuery('.um-account-tab[data-tab="'+tab_+'"]').fadeIn();
27
+
28
+ jQuery('.um-account-tab:visible').find( 'input.um_account_inactive:disabled' ).removeClass('um_account_inactive').prop( 'disabled', false ).attr( 'disabled', false );
29
+ jQuery('.um-account-tab:not(:visible)').find( 'input:not(:disabled)' ).addClass('um_account_inactive').prop( 'disabled', true ).attr( 'disabled', true );
30
+
31
  jQuery('.um-account-nav a').removeClass('current');
32
+ jQuery('.um-account-nav a[data-tab="'+tab_+'"]').addClass('current');
33
 
34
  return false;
35
  });
 
36
 
37
+
38
+ jQuery(document.body).on( 'click', '.um-account-nav a', function(e) {
39
  e.preventDefault();
40
+
41
  var tab_ = jQuery(this).attr('data-tab');
42
  var div = jQuery(this).parents('div');
43
  var link = jQuery(this);
44
 
45
+
46
+ jQuery('input[id="_um_account_tab"]:hidden').val( tab_ );
47
+
48
  jQuery('.um-account-tab').hide();
49
+
50
  if ( link.hasClass('current') ) {
51
  div.next('.um-account-tab').slideUp();
52
  link.removeClass('current');
56
  link.addClass('current');
57
  }
58
 
59
+ jQuery('.um-account-tab:visible').find( 'input.um_account_inactive:disabled' ).removeClass('um_account_inactive').prop( 'disabled', false ).attr( 'disabled', false );
60
+ jQuery('.um-account-tab:not(:visible)').find( 'input:not(:disabled)' ).addClass('um_account_inactive').prop( 'disabled', true ).attr( 'disabled', true );
61
+
62
  jQuery('.um-account-side li a').removeClass('current');
63
+ jQuery('.um-account-side li a[data-tab="'+tab_+'"]').addClass('current');
64
 
65
  return false;
66
  });
67
+ });
assets/js/um-account.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(document).ready(function(){var a=jQuery(".um-account-main").attr("data-current_tab");a&&jQuery(".um-account-tab[data-tab="+a+"]").show(),jQuery(document).on("click",".um-account-side li a",function(a){a.preventDefault();var t=jQuery(this);t.parents("ul").find("li a").removeClass("current"),t.addClass("current");var u=jQuery(this).attr("href"),e=jQuery(this).attr("data-tab");return jQuery("input[id=_um_account_tab]:hidden").val(e),window.history.pushState("","",u),jQuery(".um-account-tab").hide(),jQuery(".um-account-tab[data-tab="+e+"]").fadeIn(),jQuery(".um-account-nav a").removeClass("current"),jQuery(".um-account-nav a[data-tab="+e+"]").addClass("current"),!1})}),jQuery(document).on("click",".um-account-nav a",function(a){a.preventDefault();var t=jQuery(this).attr("data-tab"),u=jQuery(this).parents("div"),e=jQuery(this);return jQuery("input[id=_um_account_tab]:hidden").val(t),jQuery(".um-account-tab").hide(),e.hasClass("current")?(u.next(".um-account-tab").slideUp(),e.removeClass("current")):(u.next(".um-account-tab").slideDown(),e.parents("div").find("a").removeClass("current"),e.addClass("current")),jQuery(".um-account-side li a").removeClass("current"),jQuery(".um-account-side li a[data-tab="+t+"]").addClass("current"),!1});
1
+ jQuery(document).ready(function(){var a=jQuery(".um-account-main").attr("data-current_tab");a&&(jQuery('.um-account-tab[data-tab="'+a+'"]').show(),jQuery(".um-account-tab:not(:visible)").find("input:not(:disabled)").addClass("um_account_inactive").prop("disabled",!0).attr("disabled",!0)),jQuery(document.body).on("click",".um-account-side li a",function(a){a.preventDefault();var t=jQuery(this);t.parents("ul").find("li a").removeClass("current"),t.addClass("current");var u=jQuery(this).attr("href"),e=jQuery(this).attr("data-tab");return jQuery('input[id="_um_account_tab"]:hidden').val(e),window.history.pushState("","",u),jQuery(".um-account-tab").hide(),jQuery('.um-account-tab[data-tab="'+e+'"]').fadeIn(),jQuery(".um-account-tab:visible").find("input.um_account_inactive:disabled").removeClass("um_account_inactive").prop("disabled",!1).attr("disabled",!1),jQuery(".um-account-tab:not(:visible)").find("input:not(:disabled)").addClass("um_account_inactive").prop("disabled",!0).attr("disabled",!0),jQuery(".um-account-nav a").removeClass("current"),jQuery('.um-account-nav a[data-tab="'+e+'"]').addClass("current"),!1}),jQuery(document.body).on("click",".um-account-nav a",function(a){a.preventDefault();var t=jQuery(this).attr("data-tab"),u=jQuery(this).parents("div"),e=jQuery(this);return jQuery('input[id="_um_account_tab"]:hidden').val(t),jQuery(".um-account-tab").hide(),e.hasClass("current")?(u.next(".um-account-tab").slideUp(),e.removeClass("current")):(u.next(".um-account-tab").slideDown(),e.parents("div").find("a").removeClass("current"),e.addClass("current")),jQuery(".um-account-tab:visible").find("input.um_account_inactive:disabled").removeClass("um_account_inactive").prop("disabled",!1).attr("disabled",!1),jQuery(".um-account-tab:not(:visible)").find("input:not(:disabled)").addClass("um_account_inactive").prop("disabled",!0).attr("disabled",!0),jQuery(".um-account-side li a").removeClass("current"),jQuery('.um-account-side li a[data-tab="'+t+'"]').addClass("current"),!1})});
assets/js/um-modal.js CHANGED
@@ -169,7 +169,7 @@ jQuery(document).ready(function() {
169
  jQuery(document).on('click', 'a[data-modal^="um_"], span[data-modal^="um_"]', function(e){
170
 
171
  var modal_id = jQuery(this).attr('data-modal');
172
-
173
  var size = 'normal';
174
 
175
  if ( jQuery(this).data('modal-size') ) {
169
  jQuery(document).on('click', 'a[data-modal^="um_"], span[data-modal^="um_"]', function(e){
170
 
171
  var modal_id = jQuery(this).attr('data-modal');
172
+
173
  var size = 'normal';
174
 
175
  if ( jQuery(this).data('modal-size') ) {
assets/js/um-profile.js CHANGED
@@ -7,41 +7,40 @@ jQuery(document).ready(function() {
7
  this_row.remove();
8
  }
9
  });
10
-
11
  if ( jQuery('.um-profile.um-viewing .um-profile-body').length && jQuery('.um-profile.um-viewing .um-profile-body').find('.um-field').length == 0 ) {
12
  jQuery('.um-row-heading,.um-row').remove();
13
  jQuery('.um-profile-note').show();
14
  }
15
-
16
- jQuery(document).on('click', '.um-profile-save', function(e){
17
  e.preventDefault();
18
  jQuery(this).parents('.um').find('form').submit();
19
  return false;
20
  });
21
-
22
- jQuery(document).on('click', '.um-profile-edit-a', function(e){
23
  jQuery(this).addClass('active');
24
  });
25
 
26
- jQuery(document).on('click', '.um-cover a.um-cover-add, .um-photo a', function(e){
27
  e.preventDefault();
28
- return false;
29
  });
30
 
31
- jQuery(document).on('click', '.um-photo-modal', function(e){
32
  e.preventDefault();
33
  var photo_src = jQuery(this).attr('data-src');
34
  um_new_modal('um_view_photo', 'fit', true, photo_src );
35
  return false;
36
  });
37
 
38
- jQuery(document).on('click', '.um-reset-profile-photo', function(e){
39
-
40
  jQuery('.um-profile-photo-img img').attr('src', jQuery(this).attr('data-default_src') );
41
-
42
  user_id = jQuery(this).attr('data-user_id');
43
  metakey = 'profile_photo';
44
-
45
  jQuery.ajax({
46
  url: wp.ajax.settings.url,
47
  type: 'post',
@@ -52,20 +51,20 @@ jQuery(document).ready(function() {
52
  nonce: um_scripts.nonce
53
  }
54
  });
55
-
56
  });
57
 
58
- jQuery(document).on('click', '.um-reset-cover-photo', function(e){
59
  var obj = jQuery(this);
60
  jQuery('.um-cover-overlay').hide();
61
  jQuery('.um-cover-e').html('<a href="#" class="um-cover-add um-manual-trigger" data-parent=".um-cover" data-child=".um-btn-auto-width"><span class="um-cover-add-i"><i class="um-icon-plus um-tip-n" title="Upload a cover photo"></i></span></a>');
62
  jQuery('.um-dropdown').hide();
63
 
64
  um_responsive();
65
-
66
  user_id = jQuery(this).attr('data-user_id');
67
  metakey = 'cover_photo';
68
-
69
  jQuery.ajax({
70
  url: wp.ajax.settings.url,
71
  type: 'post',
@@ -79,35 +78,56 @@ jQuery(document).ready(function() {
79
  obj.hide();
80
  }
81
  });
82
-
83
  });
84
 
85
- // Bio characters limit
86
- function um_update_bio_countdown() {
87
- if( typeof jQuery('textarea[id=um-meta-bio]').val() !== 'undefined' ){
88
- var um_bio_limit = jQuery('textarea[id=um-meta-bio]').attr( "data-character-limit" );
89
- var remaining = um_bio_limit - jQuery('textarea[id=um-meta-bio]').val().length;
90
- jQuery('span.um-meta-bio-character span.um-bio-limit').text( remaining );
91
- if( remaining < 5 ){
92
- jQuery('span.um-meta-bio-character').css('color','red');
93
- }else{
94
- jQuery('span.um-meta-bio-character').css('color','');
95
- }
 
96
  }
97
- }
98
 
99
- um_update_bio_countdown();
100
- jQuery('textarea[id=um-meta-bio]').change(um_update_bio_countdown);
101
- jQuery('textarea[id=um-meta-bio]').keyup(um_update_bio_countdown);
102
 
103
- jQuery('.um-profile-edit a.um_delete-item').click(function(e){
104
- e.preventDefault();
105
- var a = confirm('Are you sure that you want to delete this user?');
106
- if( ! a ){
107
- return false;
108
- }
109
-
110
- });
 
 
 
 
 
 
111
 
112
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  });
7
  this_row.remove();
8
  }
9
  });
10
+
11
  if ( jQuery('.um-profile.um-viewing .um-profile-body').length && jQuery('.um-profile.um-viewing .um-profile-body').find('.um-field').length == 0 ) {
12
  jQuery('.um-row-heading,.um-row').remove();
13
  jQuery('.um-profile-note').show();
14
  }
15
+
16
+ jQuery( document.body ).on( 'click', '.um-profile-save', function(e){
17
  e.preventDefault();
18
  jQuery(this).parents('.um').find('form').submit();
19
  return false;
20
  });
21
+
22
+ jQuery( document.body ).on( 'click', '.um-profile-edit-a', function(e){
23
  jQuery(this).addClass('active');
24
  });
25
 
26
+ jQuery( document.body ).on( 'click', '.um-cover a.um-cover-add, .um-photo a', function(e){
27
  e.preventDefault();
 
28
  });
29
 
30
+ jQuery( document.body ).on('click', '.um-photo-modal', function(e){
31
  e.preventDefault();
32
  var photo_src = jQuery(this).attr('data-src');
33
  um_new_modal('um_view_photo', 'fit', true, photo_src );
34
  return false;
35
  });
36
 
37
+ jQuery(document.body).on('click', '.um-reset-profile-photo', function(e){
38
+
39
  jQuery('.um-profile-photo-img img').attr('src', jQuery(this).attr('data-default_src') );
40
+
41
  user_id = jQuery(this).attr('data-user_id');
42
  metakey = 'profile_photo';
43
+
44
  jQuery.ajax({
45
  url: wp.ajax.settings.url,
46
  type: 'post',
51
  nonce: um_scripts.nonce
52
  }
53
  });
54
+
55
  });
56
 
57
+ jQuery(document.body).on('click', '.um-reset-cover-photo', function(e){
58
  var obj = jQuery(this);
59
  jQuery('.um-cover-overlay').hide();
60
  jQuery('.um-cover-e').html('<a href="#" class="um-cover-add um-manual-trigger" data-parent=".um-cover" data-child=".um-btn-auto-width"><span class="um-cover-add-i"><i class="um-icon-plus um-tip-n" title="Upload a cover photo"></i></span></a>');
61
  jQuery('.um-dropdown').hide();
62
 
63
  um_responsive();
64
+
65
  user_id = jQuery(this).attr('data-user_id');
66
  metakey = 'cover_photo';
67
+
68
  jQuery.ajax({
69
  url: wp.ajax.settings.url,
70
  type: 'post',
78
  obj.hide();
79
  }
80
  });
81
+
82
  });
83
 
84
+ /*function um_update_bio_countdown() {
85
+ //
86
+ jQuery(this)
87
+ if ( typeof jQuery('textarea[id="um-meta-bio"]').val() !== 'undefined' ){
88
+ var um_bio_limit = jQuery('textarea[id="um-meta-bio"]').attr( "data-character-limit" );
89
+ var remaining = um_bio_limit - jQuery('textarea[id="um-meta-bio"]').val().length;
90
+ jQuery('span.um-meta-bio-character span.um-bio-limit').text( remaining );
91
+ if ( remaining < 5 ) {
92
+ jQuery('span.um-meta-bio-character').css('color','red');
93
+ } else {
94
+ jQuery('span.um-meta-bio-character').css('color','');
95
+ }
96
  }
97
+ }*/
98
 
99
+ //um_update_bio_countdown();
100
+ //jQuery( 'textarea[id="um-meta-bio"]' ).change( um_update_bio_countdown ).keyup( um_update_bio_countdown ).trigger('change');
 
101
 
102
+ // Bio characters limit
103
+ jQuery( document.body ).on( 'change, keyup', 'textarea[id="um-meta-bio"]', function() {
104
+ if ( typeof jQuery(this).val() !== 'undefined' ) {
105
+ var um_bio_limit = jQuery(this).attr( "data-character-limit" );
106
+ var remaining = um_bio_limit - jQuery(this).val().length;
107
+ jQuery( 'span.um-meta-bio-character span.um-bio-limit' ).text( remaining );
108
+ if ( remaining < 5 ) {
109
+ jQuery('span.um-meta-bio-character').css('color','red');
110
+ } else {
111
+ jQuery('span.um-meta-bio-character').css('color','');
112
+ }
113
+ }
114
+ });
115
+ jQuery( 'textarea[id="um-meta-bio"]' ).trigger('change');
116
 
117
 
118
+ jQuery( '.um-profile-edit a.um_delete-item' ).click( function(e) {
119
+ e.preventDefault();
120
+ if ( ! confirm( 'Are you sure that you want to delete this user?' ) ) {
121
+ return false;
122
+ }
123
+ });
124
+
125
+ /**
126
+ * Fix profile nav links for iPhone
127
+ * @see https://www.html5rocks.com/en/mobile/touchandmouse/
128
+ */
129
+ jQuery( '.um-profile-nav a' ).on( 'touchend', function(e) {
130
+ e.currentTarget.click();
131
+ });
132
+
133
  });
assets/js/um-profile.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(document).ready(function(){function e(){if(void 0!==jQuery("textarea[id=um-meta-bio]").val()){var e=jQuery("textarea[id=um-meta-bio]").attr("data-character-limit")-jQuery("textarea[id=um-meta-bio]").val().length;jQuery("span.um-meta-bio-character span.um-bio-limit").text(e),e<5?jQuery("span.um-meta-bio-character").css("color","red"):jQuery("span.um-meta-bio-character").css("color","")}}jQuery(".um-profile.um-viewing .um-profile-body .um-row").each(function(){var e=jQuery(this);0==e.find(".um-field").length&&(e.prev(".um-row-heading").remove(),e.remove())}),jQuery(".um-profile.um-viewing .um-profile-body").length&&0==jQuery(".um-profile.um-viewing .um-profile-body").find(".um-field").length&&(jQuery(".um-row-heading,.um-row").remove(),jQuery(".um-profile-note").show()),jQuery(document).on("click",".um-profile-save",function(e){return e.preventDefault(),jQuery(this).parents(".um").find("form").submit(),!1}),jQuery(document).on("click",".um-profile-edit-a",function(e){jQuery(this).addClass("active")}),jQuery(document).on("click",".um-cover a.um-cover-add, .um-photo a",function(e){return e.preventDefault(),!1}),jQuery(document).on("click",".um-photo-modal",function(e){e.preventDefault();var t=jQuery(this).attr("data-src");return um_new_modal("um_view_photo","fit",!0,t),!1}),jQuery(document).on("click",".um-reset-profile-photo",function(e){jQuery(".um-profile-photo-img img").attr("src",jQuery(this).attr("data-default_src")),user_id=jQuery(this).attr("data-user_id"),metakey="profile_photo",jQuery.ajax({url:wp.ajax.settings.url,type:"post",data:{action:"um_delete_profile_photo",metakey:metakey,user_id:user_id,nonce:um_scripts.nonce}})}),jQuery(document).on("click",".um-reset-cover-photo",function(e){var t=jQuery(this);jQuery(".um-cover-overlay").hide(),jQuery(".um-cover-e").html('<a href="#" class="um-cover-add um-manual-trigger" data-parent=".um-cover" data-child=".um-btn-auto-width"><span class="um-cover-add-i"><i class="um-icon-plus um-tip-n" title="Upload a cover photo"></i></span></a>'),jQuery(".um-dropdown").hide(),um_responsive(),user_id=jQuery(this).attr("data-user_id"),metakey="cover_photo",jQuery.ajax({url:wp.ajax.settings.url,type:"post",data:{action:"um_delete_cover_photo",metakey:metakey,user_id:user_id,nonce:um_scripts.nonce},success:function(e){t.hide()}})}),e(),jQuery("textarea[id=um-meta-bio]").change(e),jQuery("textarea[id=um-meta-bio]").keyup(e),jQuery(".um-profile-edit a.um_delete-item").click(function(e){if(e.preventDefault(),!confirm("Are you sure that you want to delete this user?"))return!1})});
1
+ jQuery(document).ready(function(){jQuery(".um-profile.um-viewing .um-profile-body .um-row").each(function(){var e=jQuery(this);0==e.find(".um-field").length&&(e.prev(".um-row-heading").remove(),e.remove())}),jQuery(".um-profile.um-viewing .um-profile-body").length&&0==jQuery(".um-profile.um-viewing .um-profile-body").find(".um-field").length&&(jQuery(".um-row-heading,.um-row").remove(),jQuery(".um-profile-note").show()),jQuery(document.body).on("click",".um-profile-save",function(e){return e.preventDefault(),jQuery(this).parents(".um").find("form").submit(),!1}),jQuery(document.body).on("click",".um-profile-edit-a",function(e){jQuery(this).addClass("active")}),jQuery(document.body).on("click",".um-cover a.um-cover-add, .um-photo a",function(e){e.preventDefault()}),jQuery(document.body).on("click",".um-photo-modal",function(e){e.preventDefault();var t=jQuery(this).attr("data-src");return um_new_modal("um_view_photo","fit",!0,t),!1}),jQuery(document.body).on("click",".um-reset-profile-photo",function(e){jQuery(".um-profile-photo-img img").attr("src",jQuery(this).attr("data-default_src")),user_id=jQuery(this).attr("data-user_id"),metakey="profile_photo",jQuery.ajax({url:wp.ajax.settings.url,type:"post",data:{action:"um_delete_profile_photo",metakey:metakey,user_id:user_id,nonce:um_scripts.nonce}})}),jQuery(document.body).on("click",".um-reset-cover-photo",function(e){var t=jQuery(this);jQuery(".um-cover-overlay").hide(),jQuery(".um-cover-e").html('<a href="#" class="um-cover-add um-manual-trigger" data-parent=".um-cover" data-child=".um-btn-auto-width"><span class="um-cover-add-i"><i class="um-icon-plus um-tip-n" title="Upload a cover photo"></i></span></a>'),jQuery(".um-dropdown").hide(),um_responsive(),user_id=jQuery(this).attr("data-user_id"),metakey="cover_photo",jQuery.ajax({url:wp.ajax.settings.url,type:"post",data:{action:"um_delete_cover_photo",metakey:metakey,user_id:user_id,nonce:um_scripts.nonce},success:function(e){t.hide()}})}),jQuery(document.body).on("change, keyup",'textarea[id="um-meta-bio"]',function(){if(void 0!==jQuery(this).val()){var e=jQuery(this).attr("data-character-limit")-jQuery(this).val().length;jQuery("span.um-meta-bio-character span.um-bio-limit").text(e),e<5?jQuery("span.um-meta-bio-character").css("color","red"):jQuery("span.um-meta-bio-character").css("color","")}}),jQuery('textarea[id="um-meta-bio"]').trigger("change"),jQuery(".um-profile-edit a.um_delete-item").click(function(e){if(e.preventDefault(),!confirm("Are you sure that you want to delete this user?"))return!1}),jQuery(".um-profile-nav a").on("touchend",function(e){e.currentTarget.click()})});
assets/js/um-responsive.js CHANGED
@@ -1,16 +1,13 @@
1
- jQuery(window).load(function() {
2
-
3
  um_responsive();
4
  um_modal_responsive();
5
-
6
  });
7
 
8
- jQuery(window).resize(function() {
9
  responsive_Modal();
10
-
11
  jQuery('img.cropper-hidden').cropper('destroy');
12
-
13
  um_responsive();
14
  um_modal_responsive();
15
-
16
  });
1
+ jQuery( window ).on( 'load',function() {
 
2
  um_responsive();
3
  um_modal_responsive();
 
4
  });
5
 
6
+ jQuery(window).on( 'resize', function() {
7
  responsive_Modal();
8
+
9
  jQuery('img.cropper-hidden').cropper('destroy');
10
+
11
  um_responsive();
12
  um_modal_responsive();
 
13
  });
assets/js/um-responsive.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(window).load(function(){um_responsive(),um_modal_responsive()}),jQuery(window).resize(function(){responsive_Modal(),jQuery("img.cropper-hidden").cropper("destroy"),um_responsive(),um_modal_responsive()});
1
+ jQuery(window).on("load",function(){um_responsive(),um_modal_responsive()}),jQuery(window).on("resize",function(){responsive_Modal(),jQuery("img.cropper-hidden").cropper("destroy"),um_responsive(),um_modal_responsive()});
assets/js/um-scripts.js CHANGED
@@ -22,7 +22,6 @@ jQuery(document).ready(function() {
22
  });
23
 
24
  jQuery(document).on('click', '.um-dropdown-hide', function(e){
25
-
26
  UM_hide_menus();
27
  });
28
 
22
  });
23
 
24
  jQuery(document).on('click', '.um-dropdown-hide', function(e){
 
25
  UM_hide_menus();
26
  });
27
 
assets/js/um-scrollbar.js CHANGED
@@ -1,5 +1,2683 @@
1
- /* == jquery mousewheel plugin == Version: 3.1.12, License: MIT License (MIT) */
2
- !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})});
3
- /* == malihu jquery custom scrollbar plugin == Version: 3.0.8, License: MIT License (MIT) */
4
- !function(e){"undefined"!=typeof module&&module.exports?module.exports=e:e(jQuery,window,document)}(function(e){!function(t){var o="function"==typeof define&&define.amd,a="undefined"!=typeof module&&module.exports,n="https:"==document.location.protocol?"https:":"http:",i="cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.12/jquery.mousewheel.min.js";o||(a?require("jquery-mousewheel")(e):e.event.special.mousewheel||e("head").append(decodeURI("%3Cscript src="+n+"//"+i+"%3E%3C/script%3E"))),t()}(function(){var t,o="mCustomScrollbar",a="mCS",n=".mCustomScrollbar",i={setTop:0,setLeft:0,axis:"y",scrollbarPosition:"inside",scrollInertia:950,autoDraggerLength:!0,alwaysShowScrollbar:0,snapOffset:0,mouseWheel:{enable:!0,scrollAmount:"auto",axis:"y",deltaFactor:"auto",disableOver:["select","option","keygen","datalist","textarea"]},scrollButtons:{scrollType:"stepless",scrollAmount:"auto"},keyboard:{enable:!0,scrollType:"stepless",scrollAmount:"auto"},contentTouchScroll:25,advanced:{autoScrollOnFocus:"input,textarea,select,button,datalist,keygen,a[tabindex],area,object,[contenteditable='true']",updateOnContentResize:!0,updateOnImageLoad:!0},theme:"light",callbacks:{onTotalScrollOffset:0,onTotalScrollBackOffset:0,alwaysTriggerOffsets:!0}},r=0,l={},s=window.attachEvent&&!window.addEventListener?1:0,c=!1,d=["mCSB_dragger_onDrag","mCSB_scrollTools_onDrag","mCS_img_loaded","mCS_disabled","mCS_destroyed","mCS_no_scrollbar","mCS-autoHide","mCS-dir-rtl","mCS_no_scrollbar_y","mCS_no_scrollbar_x","mCS_y_hidden","mCS_x_hidden","mCSB_draggerContainer","mCSB_buttonUp","mCSB_buttonDown","mCSB_buttonLeft","mCSB_buttonRight"],u={init:function(t){var t=e.extend(!0,{},i,t),o=f.call(this);if(t.live){var s=t.liveSelector||this.selector||n,c=e(s);if("off"===t.live)return void m(s);l[s]=setTimeout(function(){c.mCustomScrollbar(t),"once"===t.live&&c.length&&m(s)},500)}else m(s);return t.setWidth=t.set_width?t.set_width:t.setWidth,t.setHeight=t.set_height?t.set_height:t.setHeight,t.axis=t.horizontalScroll?"x":p(t.axis),t.scrollInertia=t.scrollInertia>0&&t.scrollInertia<17?17:t.scrollInertia,"object"!=typeof t.mouseWheel&&1==t.mouseWheel&&(t.mouseWheel={enable:!0,scrollAmount:"auto",axis:"y",preventDefault:!1,deltaFactor:"auto",normalizeDelta:!1,invert:!1}),t.mouseWheel.scrollAmount=t.mouseWheelPixels?t.mouseWheelPixels:t.mouseWheel.scrollAmount,t.mouseWheel.normalizeDelta=t.advanced.normalizeMouseWheelDelta?t.advanced.normalizeMouseWheelDelta:t.mouseWheel.normalizeDelta,t.scrollButtons.scrollType=g(t.scrollButtons.scrollType),h(t),e(o).each(function(){var o=e(this);if(!o.data(a)){o.data(a,{idx:++r,opt:t,scrollRatio:{y:null,x:null},overflowed:null,contentReset:{y:null,x:null},bindEvents:!1,tweenRunning:!1,sequential:{},langDir:o.css("direction"),cbOffsets:null,trigger:null});var n=o.data(a),i=n.opt,l=o.data("mcs-axis"),s=o.data("mcs-scrollbar-position"),c=o.data("mcs-theme");l&&(i.axis=l),s&&(i.scrollbarPosition=s),c&&(i.theme=c,h(i)),v.call(this),e("#mCSB_"+n.idx+"_container img:not(."+d[2]+")").addClass(d[2]),u.update.call(null,o)}})},update:function(t,o){var n=t||f.call(this);return e(n).each(function(){var t=e(this);if(t.data(a)){var n=t.data(a),i=n.opt,r=e("#mCSB_"+n.idx+"_container"),l=[e("#mCSB_"+n.idx+"_dragger_vertical"),e("#mCSB_"+n.idx+"_dragger_horizontal")];if(!r.length)return;n.tweenRunning&&V(t),t.hasClass(d[3])&&t.removeClass(d[3]),t.hasClass(d[4])&&t.removeClass(d[4]),S.call(this),_.call(this),"y"===i.axis||i.advanced.autoExpandHorizontalScroll||r.css("width",x(r.children())),n.overflowed=B.call(this),O.call(this),i.autoDraggerLength&&b.call(this),C.call(this),k.call(this);var s=[Math.abs(r[0].offsetTop),Math.abs(r[0].offsetLeft)];"x"!==i.axis&&(n.overflowed[0]?l[0].height()>l[0].parent().height()?T.call(this):(Q(t,s[0].toString(),{dir:"y",dur:0,overwrite:"none"}),n.contentReset.y=null):(T.call(this),"y"===i.axis?M.call(this):"yx"===i.axis&&n.overflowed[1]&&Q(t,s[1].toString(),{dir:"x",dur:0,overwrite:"none"}))),"y"!==i.axis&&(n.overflowed[1]?l[1].width()>l[1].parent().width()?T.call(this):(Q(t,s[1].toString(),{dir:"x",dur:0,overwrite:"none"}),n.contentReset.x=null):(T.call(this),"x"===i.axis?M.call(this):"yx"===i.axis&&n.overflowed[0]&&Q(t,s[0].toString(),{dir:"y",dur:0,overwrite:"none"}))),o&&n&&(2===o&&i.callbacks.onImageLoad&&"function"==typeof i.callbacks.onImageLoad?i.callbacks.onImageLoad.call(this):3===o&&i.callbacks.onSelectorChange&&"function"==typeof i.callbacks.onSelectorChange?i.callbacks.onSelectorChange.call(this):i.callbacks.onUpdate&&"function"==typeof i.callbacks.onUpdate&&i.callbacks.onUpdate.call(this)),X.call(this)}})},scrollTo:function(t,o){if("undefined"!=typeof t&&null!=t){var n=f.call(this);return e(n).each(function(){var n=e(this);if(n.data(a)){var i=n.data(a),r=i.opt,l={trigger:"external",scrollInertia:r.scrollInertia,scrollEasing:"mcsEaseInOut",moveDragger:!1,timeout:60,callbacks:!0,onStart:!0,onUpdate:!0,onComplete:!0},s=e.extend(!0,{},l,o),c=Y.call(this,t),d=s.scrollInertia>0&&s.scrollInertia<17?17:s.scrollInertia;c[0]=j.call(this,c[0],"y"),c[1]=j.call(this,c[1],"x"),s.moveDragger&&(c[0]*=i.scrollRatio.y,c[1]*=i.scrollRatio.x),s.dur=d,setTimeout(function(){null!==c[0]&&"undefined"!=typeof c[0]&&"x"!==r.axis&&i.overflowed[0]&&(s.dir="y",s.overwrite="all",Q(n,c[0].toString(),s)),null!==c[1]&&"undefined"!=typeof c[1]&&"y"!==r.axis&&i.overflowed[1]&&(s.dir="x",s.overwrite="none",Q(n,c[1].toString(),s))},s.timeout)}})}},stop:function(){var t=f.call(this);return e(t).each(function(){var t=e(this);t.data(a)&&V(t)})},disable:function(t){var o=f.call(this);return e(o).each(function(){var o=e(this);if(o.data(a)){{o.data(a)}X.call(this,"remove"),M.call(this),t&&T.call(this),O.call(this,!0),o.addClass(d[3])}})},destroy:function(){var t=f.call(this);return e(t).each(function(){var n=e(this);if(n.data(a)){var i=n.data(a),r=i.opt,l=e("#mCSB_"+i.idx),s=e("#mCSB_"+i.idx+"_container"),c=e(".mCSB_"+i.idx+"_scrollbar");r.live&&m(r.liveSelector||e(t).selector),X.call(this,"remove"),M.call(this),T.call(this),n.removeData(a),Z(this,"mcs"),c.remove(),s.find("img."+d[2]).removeClass(d[2]),l.replaceWith(s.contents()),n.removeClass(o+" _"+a+"_"+i.idx+" "+d[6]+" "+d[7]+" "+d[5]+" "+d[3]).addClass(d[4])}})}},f=function(){return"object"!=typeof e(this)||e(this).length<1?n:this},h=function(t){var o=["rounded","rounded-dark","rounded-dots","rounded-dots-dark"],a=["rounded-dots","rounded-dots-dark","3d","3d-dark","3d-thick","3d-thick-dark","inset","inset-dark","inset-2","inset-2-dark","inset-3","inset-3-dark"],n=["minimal","minimal-dark"],i=["minimal","minimal-dark"],r=["minimal","minimal-dark"];t.autoDraggerLength=e.inArray(t.theme,o)>-1?!1:t.autoDraggerLength,t.autoExpandScrollbar=e.inArray(t.theme,a)>-1?!1:t.autoExpandScrollbar,t.scrollButtons.enable=e.inArray(t.theme,n)>-1?!1:t.scrollButtons.enable,t.autoHideScrollbar=e.inArray(t.theme,i)>-1?!0:t.autoHideScrollbar,t.scrollbarPosition=e.inArray(t.theme,r)>-1?"outside":t.scrollbarPosition},m=function(e){l[e]&&(clearTimeout(l[e]),Z(l,e))},p=function(e){return"yx"===e||"xy"===e||"auto"===e?"yx":"x"===e||"horizontal"===e?"x":"y"},g=function(e){return"stepped"===e||"pixels"===e||"step"===e||"click"===e?"stepped":"stepless"},v=function(){var t=e(this),n=t.data(a),i=n.opt,r=i.autoExpandScrollbar?" "+d[1]+"_expand":"",l=["<div id='mCSB_"+n.idx+"_scrollbar_vertical' class='mCSB_scrollTools mCSB_"+n.idx+"_scrollbar mCS-"+i.theme+" mCSB_scrollTools_vertical"+r+"'><div class='"+d[12]+"'><div id='mCSB_"+n.idx+"_dragger_vertical' class='mCSB_dragger' style='position:absolute;' oncontextmenu='return false;'><div class='mCSB_dragger_bar' /></div><div class='mCSB_draggerRail' /></div></div>","<div id='mCSB_"+n.idx+"_scrollbar_horizontal' class='mCSB_scrollTools mCSB_"+n.idx+"_scrollbar mCS-"+i.theme+" mCSB_scrollTools_horizontal"+r+"'><div class='"+d[12]+"'><div id='mCSB_"+n.idx+"_dragger_horizontal' class='mCSB_dragger' style='position:absolute;' oncontextmenu='return false;'><div class='mCSB_dragger_bar' /></div><div class='mCSB_draggerRail' /></div></div>"],s="yx"===i.axis?"mCSB_vertical_horizontal":"x"===i.axis?"mCSB_horizontal":"mCSB_vertical",c="yx"===i.axis?l[0]+l[1]:"x"===i.axis?l[1]:l[0],u="yx"===i.axis?"<div id='mCSB_"+n.idx+"_container_wrapper' class='mCSB_container_wrapper' />":"",f=i.autoHideScrollbar?" "+d[6]:"",h="x"!==i.axis&&"rtl"===n.langDir?" "+d[7]:"";i.setWidth&&t.css("width",i.setWidth),i.setHeight&&t.css("height",i.setHeight),i.setLeft="y"!==i.axis&&"rtl"===n.langDir?"989999px":i.setLeft,t.addClass(o+" _"+a+"_"+n.idx+f+h).wrapInner("<div id='mCSB_"+n.idx+"' class='mCustomScrollBox mCS-"+i.theme+" "+s+"'><div id='mCSB_"+n.idx+"_container' class='mCSB_container' style='position:relative; top:"+i.setTop+"; left:"+i.setLeft+";' dir="+n.langDir+" /></div>");var m=e("#mCSB_"+n.idx),p=e("#mCSB_"+n.idx+"_container");"y"===i.axis||i.advanced.autoExpandHorizontalScroll||p.css("width",x(p.children())),"outside"===i.scrollbarPosition?("static"===t.css("position")&&t.css("position","relative"),t.css("overflow","visible"),m.addClass("mCSB_outside").after(c)):(m.addClass("mCSB_inside").append(c),p.wrap(u)),w.call(this);var g=[e("#mCSB_"+n.idx+"_dragger_vertical"),e("#mCSB_"+n.idx+"_dragger_horizontal")];g[0].css("min-height",g[0].height()),g[1].css("min-width",g[1].width())},x=function(t){return Math.max.apply(Math,t.map(function(){return e(this).outerWidth(!0)}).get())},_=function(){var t=e(this),o=t.data(a),n=o.opt,i=e("#mCSB_"+o.idx+"_container");n.advanced.autoExpandHorizontalScroll&&"y"!==n.axis&&i.css({position:"absolute",width:"auto"}).wrap("<div class='mCSB_h_wrapper' style='position:relative; left:0; width:999999px;' />").css({width:Math.ceil(i[0].getBoundingClientRect().right+.4)-Math.floor(i[0].getBoundingClientRect().left),position:"relative"}).unwrap()},w=function(){var t=e(this),o=t.data(a),n=o.opt,i=e(".mCSB_"+o.idx+"_scrollbar:first"),r=tt(n.scrollButtons.tabindex)?"tabindex='"+n.scrollButtons.tabindex+"'":"",l=["<a href='#' class='"+d[13]+"' oncontextmenu='return false;' "+r+" />","<a href='#' class='"+d[14]+"' oncontextmenu='return false;' "+r+" />","<a href='#' class='"+d[15]+"' oncontextmenu='return false;' "+r+" />","<a href='#' class='"+d[16]+"' oncontextmenu='return false;' "+r+" />"],s=["x"===n.axis?l[2]:l[0],"x"===n.axis?l[3]:l[1],l[2],l[3]];n.scrollButtons.enable&&i.prepend(s[0]).append(s[1]).next(".mCSB_scrollTools").prepend(s[2]).append(s[3])},S=function(){var t=e(this),o=t.data(a),n=e("#mCSB_"+o.idx),i=t.css("max-height")||"none",r=-1!==i.indexOf("%"),l=t.css("box-sizing");if("none"!==i){var s=r?t.parent().height()*parseInt(i)/100:parseInt(i);"border-box"===l&&(s-=t.innerHeight()-t.height()+(t.outerHeight()-t.innerHeight())),n.css("max-height",Math.round(s))}},b=function(){var t=e(this),o=t.data(a),n=e("#mCSB_"+o.idx),i=e("#mCSB_"+o.idx+"_container"),r=[e("#mCSB_"+o.idx+"_dragger_vertical"),e("#mCSB_"+o.idx+"_dragger_horizontal")],l=[n.height()/i.outerHeight(!1),n.width()/i.outerWidth(!1)],c=[parseInt(r[0].css("min-height")),Math.round(l[0]*r[0].parent().height()),parseInt(r[1].css("min-width")),Math.round(l[1]*r[1].parent().width())],d=s&&c[1]<c[0]?c[0]:c[1],u=s&&c[3]<c[2]?c[2]:c[3];r[0].css({height:d,"max-height":r[0].parent().height()-10}).find(".mCSB_dragger_bar").css({"line-height":c[0]+"px"}),r[1].css({width:u,"max-width":r[1].parent().width()-10})},C=function(){var t=e(this),o=t.data(a),n=e("#mCSB_"+o.idx),i=e("#mCSB_"+o.idx+"_container"),r=[e("#mCSB_"+o.idx+"_dragger_vertical"),e("#mCSB_"+o.idx+"_dragger_horizontal")],l=[i.outerHeight(!1)-n.height(),i.outerWidth(!1)-n.width()],s=[l[0]/(r[0].parent().height()-r[0].height()),l[1]/(r[1].parent().width()-r[1].width())];o.scrollRatio={y:s[0],x:s[1]}},y=function(e,t,o){var a=o?d[0]+"_expanded":"",n=e.closest(".mCSB_scrollTools");"active"===t?(e.toggleClass(d[0]+" "+a),n.toggleClass(d[1]),e[0]._draggable=e[0]._draggable?0:1):e[0]._draggable||("hide"===t?(e.removeClass(d[0]),n.removeClass(d[1])):(e.addClass(d[0]),n.addClass(d[1])))},B=function(){var t=e(this),o=t.data(a),n=e("#mCSB_"+o.idx),i=e("#mCSB_"+o.idx+"_container"),r=null==o.overflowed?i.height():i.outerHeight(!1),l=null==o.overflowed?i.width():i.outerWidth(!1);return[r>n.height(),l>n.width()]},T=function(){var t=e(this),o=t.data(a),n=o.opt,i=e("#mCSB_"+o.idx),r=e("#mCSB_"+o.idx+"_container"),l=[e("#mCSB_"+o.idx+"_dragger_vertical"),e("#mCSB_"+o.idx+"_dragger_horizontal")];if(V(t),("x"!==n.axis&&!o.overflowed[0]||"y"===n.axis&&o.overflowed[0])&&(l[0].add(r).css("top",0),Q(t,"_resetY")),"y"!==n.axis&&!o.overflowed[1]||"x"===n.axis&&o.overflowed[1]){var s=dx=0;"rtl"===o.langDir&&(s=i.width()-r.outerWidth(!1),dx=Math.abs(s/o.scrollRatio.x)),r.css("left",s),l[1].css("left",dx),Q(t,"_resetX")}},k=function(){function t(){r=setTimeout(function(){e.event.special.mousewheel?(clearTimeout(r),W.call(o[0])):t()},100)}var o=e(this),n=o.data(a),i=n.opt;if(!n.bindEvents){if(R.call(this),i.contentTouchScroll&&E.call(this),D.call(this),i.mouseWheel.enable){var r;t()}P.call(this),H.call(this),i.advanced.autoScrollOnFocus&&z.call(this),i.scrollButtons.enable&&U.call(this),i.keyboard.enable&&q.call(this),n.bindEvents=!0}},M=function(){var t=e(this),o=t.data(a),n=o.opt,i=a+"_"+o.idx,r=".mCSB_"+o.idx+"_scrollbar",l=e("#mCSB_"+o.idx+",#mCSB_"+o.idx+"_container,#mCSB_"+o.idx+"_container_wrapper,"+r+" ."+d[12]+",#mCSB_"+o.idx+"_dragger_vertical,#mCSB_"+o.idx+"_dragger_horizontal,"+r+">a"),s=e("#mCSB_"+o.idx+"_container");n.advanced.releaseDraggableSelectors&&l.add(e(n.advanced.releaseDraggableSelectors)),o.bindEvents&&(e(document).unbind("."+i),l.each(function(){e(this).unbind("."+i)}),clearTimeout(t[0]._focusTimeout),Z(t[0],"_focusTimeout"),clearTimeout(o.sequential.step),Z(o.sequential,"step"),clearTimeout(s[0].onCompleteTimeout),Z(s[0],"onCompleteTimeout"),o.bindEvents=!1)},O=function(t){var o=e(this),n=o.data(a),i=n.opt,r=e("#mCSB_"+n.idx+"_container_wrapper"),l=r.length?r:e("#mCSB_"+n.idx+"_container"),s=[e("#mCSB_"+n.idx+"_scrollbar_vertical"),e("#mCSB_"+n.idx+"_scrollbar_horizontal")],c=[s[0].find(".mCSB_dragger"),s[1].find(".mCSB_dragger")];"x"!==i.axis&&(n.overflowed[0]&&!t?(s[0].add(c[0]).add(s[0].children("a")).css("display","block"),l.removeClass(d[8]+" "+d[10])):(i.alwaysShowScrollbar?(2!==i.alwaysShowScrollbar&&c[0].css("display","none"),l.removeClass(d[10])):(s[0].css("display","none"),l.addClass(d[10])),l.addClass(d[8]))),"y"!==i.axis&&(n.overflowed[1]&&!t?(s[1].add(c[1]).add(s[1].children("a")).css("display","block"),l.removeClass(d[9]+" "+d[11])):(i.alwaysShowScrollbar?(2!==i.alwaysShowScrollbar&&c[1].css("display","none"),l.removeClass(d[11])):(s[1].css("display","none"),l.addClass(d[11])),l.addClass(d[9]))),n.overflowed[0]||n.overflowed[1]?o.removeClass(d[5]):o.addClass(d[5])},I=function(e){var t=e.type;switch(t){case"pointerdown":case"MSPointerDown":case"pointermove":case"MSPointerMove":case"pointerup":case"MSPointerUp":return e.target.ownerDocument!==document?[e.originalEvent.screenY,e.originalEvent.screenX,!1]:[e.originalEvent.pageY,e.originalEvent.pageX,!1];case"touchstart":case"touchmove":case"touchend":var o=e.originalEvent.touches[0]||e.originalEvent.changedTouches[0],a=e.originalEvent.touches.length||e.originalEvent.changedTouches.length;return e.target.ownerDocument!==document?[o.screenY,o.screenX,a>1]:[o.pageY,o.pageX,a>1];default:return[e.pageY,e.pageX,!1]}},R=function(){function t(e){var t=m.find("iframe");if(t.length){var o=e?"auto":"none";t.css("pointer-events",o)}}function o(e,t,o,a){if(m[0].idleTimer=u.scrollInertia<233?250:0,n.attr("id")===h[1])var i="x",r=(n[0].offsetLeft-t+a)*d.scrollRatio.x;else var i="y",r=(n[0].offsetTop-e+o)*d.scrollRatio.y;Q(l,r.toString(),{dir:i,drag:!0})}var n,i,r,l=e(this),d=l.data(a),u=d.opt,f=a+"_"+d.idx,h=["mCSB_"+d.idx+"_dragger_vertical","mCSB_"+d.idx+"_dragger_horizontal"],m=e("#mCSB_"+d.idx+"_container"),p=e("#"+h[0]+",#"+h[1]),g=u.advanced.releaseDraggableSelectors?p.add(e(u.advanced.releaseDraggableSelectors)):p;p.bind("mousedown."+f+" touchstart."+f+" pointerdown."+f+" MSPointerDown."+f,function(o){if(o.stopImmediatePropagation(),o.preventDefault(),$(o)){c=!0,s&&(document.onselectstart=function(){return!1}),t(!1),V(l),n=e(this);var a=n.offset(),d=I(o)[0]-a.top,f=I(o)[1]-a.left,h=n.height()+a.top,m=n.width()+a.left;h>d&&d>0&&m>f&&f>0&&(i=d,r=f),y(n,"active",u.autoExpandScrollbar)}}).bind("touchmove."+f,function(e){e.stopImmediatePropagation(),e.preventDefault();var t=n.offset(),a=I(e)[0]-t.top,l=I(e)[1]-t.left;o(i,r,a,l)}),e(document).bind("mousemove."+f+" pointermove."+f+" MSPointerMove."+f,function(e){if(n){var t=n.offset(),a=I(e)[0]-t.top,l=I(e)[1]-t.left;if(i===a)return;o(i,r,a,l)}}).add(g).bind("mouseup."+f+" touchend."+f+" pointerup."+f+" MSPointerUp."+f,function(){n&&(y(n,"active",u.autoExpandScrollbar),n=null),c=!1,s&&(document.onselectstart=null),t(!0)})},E=function(){function o(e){if(!et(e)||c||I(e)[2])return void(t=0);t=1,S=0,b=0;var o=M.offset();d=I(e)[0]-o.top,u=I(e)[1]-o.left,A=[I(e)[0],I(e)[1]]}function n(e){if(et(e)&&!c&&!I(e)[2]&&(e.stopImmediatePropagation(),!b||S)){p=J();var t=k.offset(),o=I(e)[0]-t.top,a=I(e)[1]-t.left,n="mcsLinearOut";if(R.push(o),E.push(a),A[2]=Math.abs(I(e)[0]-A[0]),A[3]=Math.abs(I(e)[1]-A[1]),y.overflowed[0])var i=O[0].parent().height()-O[0].height(),r=d-o>0&&o-d>-(i*y.scrollRatio.y)&&(2*A[3]<A[2]||"yx"===B.axis);if(y.overflowed[1])var l=O[1].parent().width()-O[1].width(),f=u-a>0&&a-u>-(l*y.scrollRatio.x)&&(2*A[2]<A[3]||"yx"===B.axis);r||f?(e.preventDefault(),S=1):b=1,_="yx"===B.axis?[d-o,u-a]:"x"===B.axis?[null,u-a]:[d-o,null],M[0].idleTimer=250,y.overflowed[0]&&s(_[0],D,n,"y","all",!0),y.overflowed[1]&&s(_[1],D,n,"x",W,!0)}}function i(e){if(!et(e)||c||I(e)[2])return void(t=0);t=1,e.stopImmediatePropagation(),V(C),m=J();var o=k.offset();f=I(e)[0]-o.top,h=I(e)[1]-o.left,R=[],E=[]}function r(e){if(et(e)&&!c&&!I(e)[2]){e.stopImmediatePropagation(),S=0,b=0,g=J();var t=k.offset(),o=I(e)[0]-t.top,a=I(e)[1]-t.left;if(!(g-p>30)){x=1e3/(g-m);var n="mcsEaseOut",i=2.5>x,r=i?[R[R.length-2],E[E.length-2]]:[0,0];v=i?[o-r[0],a-r[1]]:[o-f,a-h];var d=[Math.abs(v[0]),Math.abs(v[1])];x=i?[Math.abs(v[0]/4),Math.abs(v[1]/4)]:[x,x];var u=[Math.abs(M[0].offsetTop)-v[0]*l(d[0]/x[0],x[0]),Math.abs(M[0].offsetLeft)-v[1]*l(d[1]/x[1],x[1])];_="yx"===B.axis?[u[0],u[1]]:"x"===B.axis?[null,u[1]]:[u[0],null],w=[4*d[0]+B.scrollInertia,4*d[1]+B.scrollInertia];var C=parseInt(B.contentTouchScroll)||0;_[0]=d[0]>C?_[0]:0,_[1]=d[1]>C?_[1]:0,y.overflowed[0]&&s(_[0],w[0],n,"y",W,!1),y.overflowed[1]&&s(_[1],w[1],n,"x",W,!1)}}}function l(e,t){var o=[1.5*t,2*t,t/1.5,t/2];return e>90?t>4?o[0]:o[3]:e>60?t>3?o[3]:o[2]:e>30?t>8?o[1]:t>6?o[0]:t>4?t:o[2]:t>8?t:o[3]}function s(e,t,o,a,n,i){e&&Q(C,e.toString(),{dur:t,scrollEasing:o,dir:a,overwrite:n,drag:i})}var d,u,f,h,m,p,g,v,x,_,w,S,b,C=e(this),y=C.data(a),B=y.opt,T=a+"_"+y.idx,k=e("#mCSB_"+y.idx),M=e("#mCSB_"+y.idx+"_container"),O=[e("#mCSB_"+y.idx+"_dragger_vertical"),e("#mCSB_"+y.idx+"_dragger_horizontal")],R=[],E=[],D=0,W="yx"===B.axis?"none":"all",A=[],P=M.find("iframe"),z=["touchstart."+T+" pointerdown."+T+" MSPointerDown."+T,"touchmove."+T+" pointermove."+T+" MSPointerMove."+T,"touchend."+T+" pointerup."+T+" MSPointerUp."+T];M.bind(z[0],function(e){o(e)}).bind(z[1],function(e){n(e)}),k.bind(z[0],function(e){i(e)}).bind(z[2],function(e){r(e)}),P.length&&P.each(function(){e(this).load(function(){L(this)&&e(this.contentDocument||this.contentWindow.document).bind(z[0],function(e){o(e),i(e)}).bind(z[1],function(e){n(e)}).bind(z[2],function(e){r(e)})})})},D=function(){function o(){return window.getSelection?window.getSelection().toString():document.selection&&"Control"!=document.selection.type?document.selection.createRange().text:0}function n(e,t,o){d.type=o&&i?"stepped":"stepless",d.scrollAmount=10,F(r,e,t,"mcsLinearOut",o?60:null)}var i,r=e(this),l=r.data(a),s=l.opt,d=l.sequential,u=a+"_"+l.idx,f=e("#mCSB_"+l.idx+"_container"),h=f.parent();f.bind("mousedown."+u,function(){t||i||(i=1,c=!0)}).add(document).bind("mousemove."+u,function(e){if(!t&&i&&o()){var a=f.offset(),r=I(e)[0]-a.top+f[0].offsetTop,c=I(e)[1]-a.left+f[0].offsetLeft;r>0&&r<h.height()&&c>0&&c<h.width()?d.step&&n("off",null,"stepped"):("x"!==s.axis&&l.overflowed[0]&&(0>r?n("on",38):r>h.height()&&n("on",40)),"y"!==s.axis&&l.overflowed[1]&&(0>c?n("on",37):c>h.width()&&n("on",39)))}}).bind("mouseup."+u,function(){t||(i&&(i=0,n("off",null)),c=!1)})},W=function(){function t(t,a){if(V(o),!A(o,t.target)){var r="auto"!==i.mouseWheel.deltaFactor?parseInt(i.mouseWheel.deltaFactor):s&&t.deltaFactor<100?100:t.deltaFactor||100;if("x"===i.axis||"x"===i.mouseWheel.axis)var d="x",u=[Math.round(r*n.scrollRatio.x),parseInt(i.mouseWheel.scrollAmount)],f="auto"!==i.mouseWheel.scrollAmount?u[1]:u[0]>=l.width()?.9*l.width():u[0],h=Math.abs(e("#mCSB_"+n.idx+"_container")[0].offsetLeft),m=c[1][0].offsetLeft,p=c[1].parent().width()-c[1].width(),g=t.deltaX||t.deltaY||a;else var d="y",u=[Math.round(r*n.scrollRatio.y),parseInt(i.mouseWheel.scrollAmount)],f="auto"!==i.mouseWheel.scrollAmount?u[1]:u[0]>=l.height()?.9*l.height():u[0],h=Math.abs(e("#mCSB_"+n.idx+"_container")[0].offsetTop),m=c[0][0].offsetTop,p=c[0].parent().height()-c[0].height(),g=t.deltaY||a;"y"===d&&!n.overflowed[0]||"x"===d&&!n.overflowed[1]||(i.mouseWheel.invert&&(g=-g),i.mouseWheel.normalizeDelta&&(g=0>g?-1:1),(g>0&&0!==m||0>g&&m!==p||i.mouseWheel.preventDefault)&&(t.stopImmediatePropagation(),t.preventDefault()),Q(o,(h-g*f).toString(),{dir:d}))}}var o=e(this),n=o.data(a),i=n.opt,r=a+"_"+n.idx,l=e("#mCSB_"+n.idx),c=[e("#mCSB_"+n.idx+"_dragger_vertical"),e("#mCSB_"+n.idx+"_dragger_horizontal")],d=e("#mCSB_"+n.idx+"_container").find("iframe");n&&(d.length&&d.each(function(){e(this).load(function(){L(this)&&e(this.contentDocument||this.contentWindow.document).bind("mousewheel."+r,function(e,o){t(e,o)})})}),l.bind("mousewheel."+r,function(e,o){t(e,o)}))},L=function(e){var t=null;try{var o=e.contentDocument||e.contentWindow.document;t=o.body.innerHTML}catch(a){}return null!==t},A=function(t,o){var n=o.nodeName.toLowerCase(),i=t.data(a).opt.mouseWheel.disableOver,r=["select","textarea"];return e.inArray(n,i)>-1&&!(e.inArray(n,r)>-1&&!e(o).is(":focus"))},P=function(){var t=e(this),o=t.data(a),n=a+"_"+o.idx,i=e("#mCSB_"+o.idx+"_container"),r=i.parent(),l=e(".mCSB_"+o.idx+"_scrollbar ."+d[12]);l.bind("touchstart."+n+" pointerdown."+n+" MSPointerDown."+n,function(){c=!0}).bind("touchend."+n+" pointerup."+n+" MSPointerUp."+n,function(){c=!1}).bind("click."+n,function(a){if(e(a.target).hasClass(d[12])||e(a.target).hasClass("mCSB_draggerRail")){V(t);var n=e(this),l=n.find(".mCSB_dragger");if(n.parent(".mCSB_scrollTools_horizontal").length>0){if(!o.overflowed[1])return;var s="x",c=a.pageX>l.offset().left?-1:1,u=Math.abs(i[0].offsetLeft)-.9*c*r.width()}else{if(!o.overflowed[0])return;var s="y",c=a.pageY>l.offset().top?-1:1,u=Math.abs(i[0].offsetTop)-.9*c*r.height()}Q(t,u.toString(),{dir:s,scrollEasing:"mcsEaseInOut"})}})},z=function(){var t=e(this),o=t.data(a),n=o.opt,i=a+"_"+o.idx,r=e("#mCSB_"+o.idx+"_container"),l=r.parent();r.bind("focusin."+i,function(){var o=e(document.activeElement),a=r.find(".mCustomScrollBox").length,i=0;o.is(n.advanced.autoScrollOnFocus)&&(V(t),clearTimeout(t[0]._focusTimeout),t[0]._focusTimer=a?(i+17)*a:0,t[0]._focusTimeout=setTimeout(function(){var e=[ot(o)[0],ot(o)[1]],a=[r[0].offsetTop,r[0].offsetLeft],s=[a[0]+e[0]>=0&&a[0]+e[0]<l.height()-o.outerHeight(!1),a[1]+e[1]>=0&&a[0]+e[1]<l.width()-o.outerWidth(!1)],c="yx"!==n.axis||s[0]||s[1]?"all":"none";"x"===n.axis||s[0]||Q(t,e[0].toString(),{dir:"y",scrollEasing:"mcsEaseInOut",overwrite:c,dur:i}),"y"===n.axis||s[1]||Q(t,e[1].toString(),{dir:"x",scrollEasing:"mcsEaseInOut",overwrite:c,dur:i})},t[0]._focusTimer))})},H=function(){var t=e(this),o=t.data(a),n=a+"_"+o.idx,i=e("#mCSB_"+o.idx+"_container").parent();i.bind("scroll."+n,function(){(0!==i.scrollTop()||0!==i.scrollLeft())&&e(".mCSB_"+o.idx+"_scrollbar").css("visibility","hidden")})},U=function(){var t=e(this),o=t.data(a),n=o.opt,i=o.sequential,r=a+"_"+o.idx,l=".mCSB_"+o.idx+"_scrollbar",s=e(l+">a");s.bind("mousedown."+r+" touchstart."+r+" pointerdown."+r+" MSPointerDown."+r+" mouseup."+r+" touchend."+r+" pointerup."+r+" MSPointerUp."+r+" mouseout."+r+" pointerout."+r+" MSPointerOut."+r+" click."+r,function(a){function r(e,o){i.scrollAmount=n.snapAmount||n.scrollButtons.scrollAmount,F(t,e,o)}if(a.preventDefault(),$(a)){var l=e(this).attr("class");switch(i.type=n.scrollButtons.scrollType,a.type){case"mousedown":case"touchstart":case"pointerdown":case"MSPointerDown":if("stepped"===i.type)return;c=!0,o.tweenRunning=!1,r("on",l);break;case"mouseup":case"touchend":case"pointerup":case"MSPointerUp":case"mouseout":case"pointerout":case"MSPointerOut":if("stepped"===i.type)return;c=!1,i.dir&&r("off",l);break;case"click":if("stepped"!==i.type||o.tweenRunning)return;r("on",l)}}})},q=function(){function t(t){function a(e,t){r.type=i.keyboard.scrollType,r.scrollAmount=i.snapAmount||i.keyboard.scrollAmount,"stepped"===r.type&&n.tweenRunning||F(o,e,t)}switch(t.type){case"blur":n.tweenRunning&&r.dir&&a("off",null);break;case"keydown":case"keyup":var l=t.keyCode?t.keyCode:t.which,s="on";if("x"!==i.axis&&(38===l||40===l)||"y"!==i.axis&&(37===l||39===l)){if((38===l||40===l)&&!n.overflowed[0]||(37===l||39===l)&&!n.overflowed[1])return;"keyup"===t.type&&(s="off"),e(document.activeElement).is(u)||(t.preventDefault(),t.stopImmediatePropagation(),a(s,l))}else if(33===l||34===l){if((n.overflowed[0]||n.overflowed[1])&&(t.preventDefault(),t.stopImmediatePropagation()),"keyup"===t.type){V(o);var f=34===l?-1:1;if("x"===i.axis||"yx"===i.axis&&n.overflowed[1]&&!n.overflowed[0])var h="x",m=Math.abs(c[0].offsetLeft)-.9*f*d.width();else var h="y",m=Math.abs(c[0].offsetTop)-.9*f*d.height();Q(o,m.toString(),{dir:h,scrollEasing:"mcsEaseInOut"})}}else if((35===l||36===l)&&!e(document.activeElement).is(u)&&((n.overflowed[0]||n.overflowed[1])&&(t.preventDefault(),t.stopImmediatePropagation()),"keyup"===t.type)){if("x"===i.axis||"yx"===i.axis&&n.overflowed[1]&&!n.overflowed[0])var h="x",m=35===l?Math.abs(d.width()-c.outerWidth(!1)):0;else var h="y",m=35===l?Math.abs(d.height()-c.outerHeight(!1)):0;Q(o,m.toString(),{dir:h,scrollEasing:"mcsEaseInOut"})}}}var o=e(this),n=o.data(a),i=n.opt,r=n.sequential,l=a+"_"+n.idx,s=e("#mCSB_"+n.idx),c=e("#mCSB_"+n.idx+"_container"),d=c.parent(),u="input,textarea,select,datalist,keygen,[contenteditable='true']",f=c.find("iframe"),h=["blur."+l+" keydown."+l+" keyup."+l];f.length&&f.each(function(){e(this).load(function(){L(this)&&e(this.contentDocument||this.contentWindow.document).bind(h[0],function(e){t(e)})})}),s.attr("tabindex","0").bind(h[0],function(e){t(e)})},F=function(t,o,n,i,r){function l(e){var o="stepped"!==f.type,a=r?r:e?o?p/1.5:g:1e3/60,n=e?o?7.5:40:2.5,s=[Math.abs(h[0].offsetTop),Math.abs(h[0].offsetLeft)],d=[c.scrollRatio.y>10?10:c.scrollRatio.y,c.scrollRatio.x>10?10:c.scrollRatio.x],u="x"===f.dir[0]?s[1]+f.dir[1]*d[1]*n:s[0]+f.dir[1]*d[0]*n,m="x"===f.dir[0]?s[1]+f.dir[1]*parseInt(f.scrollAmount):s[0]+f.dir[1]*parseInt(f.scrollAmount),v="auto"!==f.scrollAmount?m:u,x=i?i:e?o?"mcsLinearOut":"mcsEaseInOut":"mcsLinear",_=e?!0:!1;return e&&17>a&&(v="x"===f.dir[0]?s[1]:s[0]),Q(t,v.toString(),{dir:f.dir[0],scrollEasing:x,dur:a,onComplete:_}),e?void(f.dir=!1):(clearTimeout(f.step),void(f.step=setTimeout(function(){l()},a)))}function s(){clearTimeout(f.step),Z(f,"step"),V(t)}var c=t.data(a),u=c.opt,f=c.sequential,h=e("#mCSB_"+c.idx+"_container"),m="stepped"===f.type?!0:!1,p=u.scrollInertia<26?26:u.scrollInertia,g=u.scrollInertia<1?17:u.scrollInertia;switch(o){case"on":if(f.dir=[n===d[16]||n===d[15]||39===n||37===n?"x":"y",n===d[13]||n===d[15]||38===n||37===n?-1:1],V(t),tt(n)&&"stepped"===f.type)return;l(m);break;case"off":s(),(m||c.tweenRunning&&f.dir)&&l(!0)}},Y=function(t){var o=e(this).data(a).opt,n=[];return"function"==typeof t&&(t=t()),t instanceof Array?n=t.length>1?[t[0],t[1]]:"x"===o.axis?[null,t[0]]:[t[0],null]:(n[0]=t.y?t.y:t.x||"x"===o.axis?null:t,n[1]=t.x?t.x:t.y||"y"===o.axis?null:t),"function"==typeof n[0]&&(n[0]=n[0]()),"function"==typeof n[1]&&(n[1]=n[1]()),n},j=function(t,o){if(null!=t&&"undefined"!=typeof t){var n=e(this),i=n.data(a),r=i.opt,l=e("#mCSB_"+i.idx+"_container"),s=l.parent(),c=typeof t;o||(o="x"===r.axis?"x":"y");var d="x"===o?l.outerWidth(!1):l.outerHeight(!1),f="x"===o?l[0].offsetLeft:l[0].offsetTop,h="x"===o?"left":"top";switch(c){case"function":return t();case"object":var m=t.jquery?t:e(t);if(!m.length)return;return"x"===o?ot(m)[1]:ot(m)[0];case"string":case"number":if(tt(t))return Math.abs(t);if(-1!==t.indexOf("%"))return Math.abs(d*parseInt(t)/100);if(-1!==t.indexOf("-="))return Math.abs(f-parseInt(t.split("-=")[1]));if(-1!==t.indexOf("+=")){var p=f+parseInt(t.split("+=")[1]);return p>=0?0:Math.abs(p)}if(-1!==t.indexOf("px")&&tt(t.split("px")[0]))return Math.abs(t.split("px")[0]);if("top"===t||"left"===t)return 0;if("bottom"===t)return Math.abs(s.height()-l.outerHeight(!1));if("right"===t)return Math.abs(s.width()-l.outerWidth(!1));if("first"===t||"last"===t){var m=l.find(":"+t);return"x"===o?ot(m)[1]:ot(m)[0]}return e(t).length?"x"===o?ot(e(t))[1]:ot(e(t))[0]:(l.css(h,t),void u.update.call(null,n[0]))}}},X=function(t){function o(){clearTimeout(h[0].autoUpdate),h[0].autoUpdate=setTimeout(function(){return f.advanced.updateOnSelectorChange&&(m=r(),m!==w)?(l(3),void(w=m)):(f.advanced.updateOnContentResize&&(p=[h.outerHeight(!1),h.outerWidth(!1),v.height(),v.width(),_()[0],_()[1]],(p[0]!==S[0]||p[1]!==S[1]||p[2]!==S[2]||p[3]!==S[3]||p[4]!==S[4]||p[5]!==S[5])&&(l(p[0]!==S[0]||p[1]!==S[1]),S=p)),f.advanced.updateOnImageLoad&&(g=n(),g!==b&&(h.find("img").each(function(){i(this)}),b=g)),void((f.advanced.updateOnSelectorChange||f.advanced.updateOnContentResize||f.advanced.updateOnImageLoad)&&o()))},60)}function n(){var e=0;return f.advanced.updateOnImageLoad&&(e=h.find("img").length),e}function i(t){function o(e,t){return function(){return t.apply(e,arguments)}}function a(){this.onload=null,e(t).addClass(d[2]),l(2)}if(e(t).hasClass(d[2]))return void l();var n=new Image;n.onload=o(n,a),n.src=t.src}function r(){f.advanced.updateOnSelectorChange===!0&&(f.advanced.updateOnSelectorChange="*");var t=0,o=h.find(f.advanced.updateOnSelectorChange);return f.advanced.updateOnSelectorChange&&o.length>0&&o.each(function(){t+=e(this).height()+e(this).width()}),t}function l(e){clearTimeout(h[0].autoUpdate),u.update.call(null,s[0],e)}var s=e(this),c=s.data(a),f=c.opt,h=e("#mCSB_"+c.idx+"_container");if(t)return clearTimeout(h[0].autoUpdate),void Z(h[0],"autoUpdate");var m,p,g,v=h.parent(),x=[e("#mCSB_"+c.idx+"_scrollbar_vertical"),e("#mCSB_"+c.idx+"_scrollbar_horizontal")],_=function(){return[x[0].is(":visible")?x[0].outerHeight(!0):0,x[1].is(":visible")?x[1].outerWidth(!0):0]},w=r(),S=[h.outerHeight(!1),h.outerWidth(!1),v.height(),v.width(),_()[0],_()[1]],b=n();o()},N=function(e,t,o){return Math.round(e/t)*t-o},V=function(t){var o=t.data(a),n=e("#mCSB_"+o.idx+"_container,#mCSB_"+o.idx+"_container_wrapper,#mCSB_"+o.idx+"_dragger_vertical,#mCSB_"+o.idx+"_dragger_horizontal");n.each(function(){K.call(this)})},Q=function(t,o,n){function i(e){return s&&c.callbacks[e]&&"function"==typeof c.callbacks[e]}function r(){return[c.callbacks.alwaysTriggerOffsets||_>=w[0]+b,c.callbacks.alwaysTriggerOffsets||-C>=_]}function l(){var e=[h[0].offsetTop,h[0].offsetLeft],o=[v[0].offsetTop,v[0].offsetLeft],a=[h.outerHeight(!1),h.outerWidth(!1)],i=[f.height(),f.width()];t[0].mcs={content:h,top:e[0],left:e[1],draggerTop:o[0],draggerLeft:o[1],topPct:Math.round(100*Math.abs(e[0])/(Math.abs(a[0])-i[0])),leftPct:Math.round(100*Math.abs(e[1])/(Math.abs(a[1])-i[1])),direction:n.dir}}var s=t.data(a),c=s.opt,d={trigger:"internal",dir:"y",scrollEasing:"mcsEaseOut",drag:!1,dur:c.scrollInertia,overwrite:"all",callbacks:!0,onStart:!0,onUpdate:!0,onComplete:!0},n=e.extend(d,n),u=[n.dur,n.drag?0:n.dur],f=e("#mCSB_"+s.idx),h=e("#mCSB_"+s.idx+"_container"),m=h.parent(),p=c.callbacks.onTotalScrollOffset?Y.call(t,c.callbacks.onTotalScrollOffset):[0,0],g=c.callbacks.onTotalScrollBackOffset?Y.call(t,c.callbacks.onTotalScrollBackOffset):[0,0];
5
- if(s.trigger=n.trigger,(0!==m.scrollTop()||0!==m.scrollLeft())&&(e(".mCSB_"+s.idx+"_scrollbar").css("visibility","visible"),m.scrollTop(0).scrollLeft(0)),"_resetY"!==o||s.contentReset.y||(i("onOverflowYNone")&&c.callbacks.onOverflowYNone.call(t[0]),s.contentReset.y=1),"_resetX"!==o||s.contentReset.x||(i("onOverflowXNone")&&c.callbacks.onOverflowXNone.call(t[0]),s.contentReset.x=1),"_resetY"!==o&&"_resetX"!==o){switch(!s.contentReset.y&&t[0].mcs||!s.overflowed[0]||(i("onOverflowY")&&c.callbacks.onOverflowY.call(t[0]),s.contentReset.x=null),!s.contentReset.x&&t[0].mcs||!s.overflowed[1]||(i("onOverflowX")&&c.callbacks.onOverflowX.call(t[0]),s.contentReset.x=null),c.snapAmount&&(o=N(o,c.snapAmount,c.snapOffset)),n.dir){case"x":var v=e("#mCSB_"+s.idx+"_dragger_horizontal"),x="left",_=h[0].offsetLeft,w=[f.width()-h.outerWidth(!1),v.parent().width()-v.width()],S=[o,0===o?0:o/s.scrollRatio.x],b=p[1],C=g[1],B=b>0?b/s.scrollRatio.x:0,T=C>0?C/s.scrollRatio.x:0;break;case"y":var v=e("#mCSB_"+s.idx+"_dragger_vertical"),x="top",_=h[0].offsetTop,w=[f.height()-h.outerHeight(!1),v.parent().height()-v.height()],S=[o,0===o?0:o/s.scrollRatio.y],b=p[0],C=g[0],B=b>0?b/s.scrollRatio.y:0,T=C>0?C/s.scrollRatio.y:0}S[1]<0||0===S[0]&&0===S[1]?S=[0,0]:S[1]>=w[1]?S=[w[0],w[1]]:S[0]=-S[0],t[0].mcs||(l(),i("onInit")&&c.callbacks.onInit.call(t[0])),clearTimeout(h[0].onCompleteTimeout),(s.tweenRunning||!(0===_&&S[0]>=0||_===w[0]&&S[0]<=w[0]))&&(G(v[0],x,Math.round(S[1]),u[1],n.scrollEasing),G(h[0],x,Math.round(S[0]),u[0],n.scrollEasing,n.overwrite,{onStart:function(){n.callbacks&&n.onStart&&!s.tweenRunning&&(i("onScrollStart")&&(l(),c.callbacks.onScrollStart.call(t[0])),s.tweenRunning=!0,y(v),s.cbOffsets=r())},onUpdate:function(){n.callbacks&&n.onUpdate&&i("whileScrolling")&&(l(),c.callbacks.whileScrolling.call(t[0]))},onComplete:function(){if(n.callbacks&&n.onComplete){"yx"===c.axis&&clearTimeout(h[0].onCompleteTimeout);var e=h[0].idleTimer||0;h[0].onCompleteTimeout=setTimeout(function(){i("onScroll")&&(l(),c.callbacks.onScroll.call(t[0])),i("onTotalScroll")&&S[1]>=w[1]-B&&s.cbOffsets[0]&&(l(),c.callbacks.onTotalScroll.call(t[0])),i("onTotalScrollBack")&&S[1]<=T&&s.cbOffsets[1]&&(l(),c.callbacks.onTotalScrollBack.call(t[0])),s.tweenRunning=!1,h[0].idleTimer=0,y(v,"hide")},e)}}}))}},G=function(e,t,o,a,n,i,r){function l(){S.stop||(x||m.call(),x=J()-v,s(),x>=S.time&&(S.time=x>S.time?x+f-(x-S.time):x+f-1,S.time<x+1&&(S.time=x+1)),S.time<a?S.id=h(l):g.call())}function s(){a>0?(S.currVal=u(S.time,_,b,a,n),w[t]=Math.round(S.currVal)+"px"):w[t]=o+"px",p.call()}function c(){f=1e3/60,S.time=x+f,h=window.requestAnimationFrame?window.requestAnimationFrame:function(e){return s(),setTimeout(e,.01)},S.id=h(l)}function d(){null!=S.id&&(window.requestAnimationFrame?window.cancelAnimationFrame(S.id):clearTimeout(S.id),S.id=null)}function u(e,t,o,a,n){switch(n){case"linear":case"mcsLinear":return o*e/a+t;case"mcsLinearOut":return e/=a,e--,o*Math.sqrt(1-e*e)+t;case"easeInOutSmooth":return e/=a/2,1>e?o/2*e*e+t:(e--,-o/2*(e*(e-2)-1)+t);case"easeInOutStrong":return e/=a/2,1>e?o/2*Math.pow(2,10*(e-1))+t:(e--,o/2*(-Math.pow(2,-10*e)+2)+t);case"easeInOut":case"mcsEaseInOut":return e/=a/2,1>e?o/2*e*e*e+t:(e-=2,o/2*(e*e*e+2)+t);case"easeOutSmooth":return e/=a,e--,-o*(e*e*e*e-1)+t;case"easeOutStrong":return o*(-Math.pow(2,-10*e/a)+1)+t;case"easeOut":case"mcsEaseOut":default:var i=(e/=a)*e,r=i*e;return t+o*(.499999999999997*r*i+-2.5*i*i+5.5*r+-6.5*i+4*e)}}e._mTween||(e._mTween={top:{},left:{}});var f,h,r=r||{},m=r.onStart||function(){},p=r.onUpdate||function(){},g=r.onComplete||function(){},v=J(),x=0,_=e.offsetTop,w=e.style,S=e._mTween[t];"left"===t&&(_=e.offsetLeft);var b=o-_;S.stop=0,"none"!==i&&d(),c()},J=function(){return window.performance&&window.performance.now?window.performance.now():window.performance&&window.performance.webkitNow?window.performance.webkitNow():Date.now?Date.now():(new Date).getTime()},K=function(){var e=this;e._mTween||(e._mTween={top:{},left:{}});for(var t=["top","left"],o=0;o<t.length;o++){var a=t[o];e._mTween[a].id&&(window.requestAnimationFrame?window.cancelAnimationFrame(e._mTween[a].id):clearTimeout(e._mTween[a].id),e._mTween[a].id=null,e._mTween[a].stop=1)}},Z=function(e,t){try{delete e[t]}catch(o){e[t]=null}},$=function(e){return!(e.which&&1!==e.which)},et=function(e){var t=e.originalEvent.pointerType;return!(t&&"touch"!==t&&2!==t)},tt=function(e){return!isNaN(parseFloat(e))&&isFinite(e)},ot=function(e){var t=e.parents(".mCSB_container");return[e.offset().top-t.offset().top,e.offset().left-t.offset().left]};e.fn[o]=function(t){return u[t]?u[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void e.error("Method "+t+" does not exist"):u.init.apply(this,arguments)},e[o]=function(t){return u[t]?u[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void e.error("Method "+t+" does not exist"):u.init.apply(this,arguments)},e[o].defaults=i,window[o]=!0,e(window).load(function(){e(n)[o](),e.extend(e.expr[":"],{mcsInView:e.expr[":"].mcsInView||function(t){var o,a,n=e(t),i=n.parents(".mCSB_container");if(i.length)return o=i.parent(),a=[i[0].offsetTop,i[0].offsetLeft],a[0]+ot(n)[0]>=0&&a[0]+ot(n)[0]<o.height()-n.outerHeight(!1)&&a[1]+ot(n)[1]>=0&&a[1]+ot(n)[1]<o.width()-n.outerWidth(!1)},mcsOverflow:e.expr[":"].mcsOverflow||function(t){var o=e(t).data(a);if(o)return o.overflowed[0]||o.overflowed[1]}})})})});
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * jQuery Mousewheel 3.1.13
3
+ *
4
+ * Copyright jQuery Foundation and other contributors
5
+ * Released under the MIT license
6
+ * http://jquery.org/license
7
+ *
8
+ * https://github.com/jquery/jquery-mousewheel/blob/master/jquery.mousewheel.js
9
+ */
10
+
11
+ (function (factory) {
12
+ if ( typeof define === 'function' && define.amd ) {
13
+ // AMD. Register as an anonymous module.
14
+ define(['jquery'], factory);
15
+ } else if (typeof exports === 'object') {
16
+ // Node/CommonJS style for Browserify
17
+ module.exports = factory;
18
+ } else {
19
+ // Browser globals
20
+ factory(jQuery);
21
+ }
22
+ }(function ($) {
23
+
24
+ var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],
25
+ toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?
26
+ ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],
27
+ slice = Array.prototype.slice,
28
+ nullLowestDeltaTimeout, lowestDelta;
29
+
30
+ if ( $.event.fixHooks ) {
31
+ for ( var i = toFix.length; i; ) {
32
+ $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;
33
+ }
34
+ }
35
+
36
+ var special = $.event.special.mousewheel = {
37
+ version: '3.1.12',
38
+
39
+ setup: function() {
40
+ if ( this.addEventListener ) {
41
+ for ( var i = toBind.length; i; ) {
42
+ this.addEventListener( toBind[--i], handler, false );
43
+ }
44
+ } else {
45
+ this.onmousewheel = handler;
46
+ }
47
+ // Store the line height and page height for this particular element
48
+ $.data(this, 'mousewheel-line-height', special.getLineHeight(this));
49
+ $.data(this, 'mousewheel-page-height', special.getPageHeight(this));
50
+ },
51
+
52
+ teardown: function() {
53
+ if ( this.removeEventListener ) {
54
+ for ( var i = toBind.length; i; ) {
55
+ this.removeEventListener( toBind[--i], handler, false );
56
+ }
57
+ } else {
58
+ this.onmousewheel = null;
59
+ }
60
+ // Clean up the data we added to the element
61
+ $.removeData(this, 'mousewheel-line-height');
62
+ $.removeData(this, 'mousewheel-page-height');
63
+ },
64
+
65
+ getLineHeight: function(elem) {
66
+ var $elem = $(elem),
67
+ $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();
68
+ if (!$parent.length) {
69
+ $parent = $('body');
70
+ }
71
+ return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;
72
+ },
73
+
74
+ getPageHeight: function(elem) {
75
+ return $(elem).height();
76
+ },
77
+
78
+ settings: {
79
+ adjustOldDeltas: true, // see shouldAdjustOldDeltas() below
80
+ normalizeOffset: true // calls getBoundingClientRect for each event
81
+ }
82
+ };
83
+
84
+ $.fn.extend({
85
+ mousewheel: function(fn) {
86
+ return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');
87
+ },
88
+
89
+ unmousewheel: function(fn) {
90
+ return this.unbind('mousewheel', fn);
91
+ }
92
+ });
93
+
94
+
95
+ function handler(event) {
96
+ var orgEvent = event || window.event,
97
+ args = slice.call(arguments, 1),
98
+ delta = 0,
99
+ deltaX = 0,
100
+ deltaY = 0,
101
+ absDelta = 0,
102
+ offsetX = 0,
103
+ offsetY = 0;
104
+ event = $.event.fix(orgEvent);
105
+ event.type = 'mousewheel';
106
+
107
+ // Old school scrollwheel delta
108
+ if ( 'detail' in orgEvent ) { deltaY = orgEvent.detail * -1; }
109
+ if ( 'wheelDelta' in orgEvent ) { deltaY = orgEvent.wheelDelta; }
110
+ if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY; }
111
+ if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }
112
+
113
+ // Firefox < 17 horizontal scrolling related to DOMMouseScroll event
114
+ if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
115
+ deltaX = deltaY * -1;
116
+ deltaY = 0;
117
+ }
118
+
119
+ // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy
120
+ delta = deltaY === 0 ? deltaX : deltaY;
121
+
122
+ // New school wheel delta (wheel event)
123
+ if ( 'deltaY' in orgEvent ) {
124
+ deltaY = orgEvent.deltaY * -1;
125
+ delta = deltaY;
126
+ }
127
+ if ( 'deltaX' in orgEvent ) {
128
+ deltaX = orgEvent.deltaX;
129
+ if ( deltaY === 0 ) { delta = deltaX * -1; }
130
+ }
131
+
132
+ // No change actually happened, no reason to go any further
133
+ if ( deltaY === 0 && deltaX === 0 ) { return; }
134
+
135
+ // Need to convert lines and pages to pixels if we aren't already in pixels
136
+ // There are three delta modes:
137
+ // * deltaMode 0 is by pixels, nothing to do
138
+ // * deltaMode 1 is by lines
139
+ // * deltaMode 2 is by pages
140
+ if ( orgEvent.deltaMode === 1 ) {
141
+ var lineHeight = $.data(this, 'mousewheel-line-height');
142
+ delta *= lineHeight;
143
+ deltaY *= lineHeight;
144
+ deltaX *= lineHeight;
145
+ } else if ( orgEvent.deltaMode === 2 ) {
146
+ var pageHeight = $.data(this, 'mousewheel-page-height');
147
+ delta *= pageHeight;
148
+ deltaY *= pageHeight;
149
+ deltaX *= pageHeight;
150
+ }
151
+
152
+ // Store lowest absolute delta to normalize the delta values
153
+ absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );
154
+
155
+ if ( !lowestDelta || absDelta < lowestDelta ) {
156
+ lowestDelta = absDelta;
157
+
158
+ // Adjust older deltas if necessary
159
+ if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
160
+ lowestDelta /= 40;
161
+ }
162
+ }
163
+
164
+ // Adjust older deltas if necessary
165
+ if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
166
+ // Divide all the things by 40!
167
+ delta /= 40;
168
+ deltaX /= 40;
169
+ deltaY /= 40;
170
+ }
171
+
172
+ // Get a whole, normalized value for the deltas
173
+ delta = Math[ delta >= 1 ? 'floor' : 'ceil' ](delta / lowestDelta);
174
+ deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);
175
+ deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);
176
+
177
+ // Normalise offsetX and offsetY properties
178
+ if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {
179
+ var boundingRect = this.getBoundingClientRect();
180
+ offsetX = event.clientX - boundingRect.left;
181
+ offsetY = event.clientY - boundingRect.top;
182
+ }
183
+
184
+ // Add information to the event object
185
+ event.deltaX = deltaX;
186
+ event.deltaY = deltaY;
187
+ event.deltaFactor = lowestDelta;
188
+ event.offsetX = offsetX;
189
+ event.offsetY = offsetY;
190
+ // Go ahead and set deltaMode to 0 since we converted to pixels
191
+ // Although this is a little odd since we overwrite the deltaX/Y
192
+ // properties with normalized deltas.
193
+ event.deltaMode = 0;
194
+
195
+ // Add event and delta to the front of the arguments
196
+ args.unshift(event, delta, deltaX, deltaY);
197
+
198
+ // Clearout lowestDelta after sometime to better
199
+ // handle multiple device types that give different
200
+ // a different lowestDelta
201
+ // Ex: trackpad = 3 and mouse wheel = 120
202
+ if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }
203
+ nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);
204
+
205
+ return ($.event.dispatch || $.event.handle).apply(this, args);
206
+ }
207
+
208
+ function nullLowestDelta() {
209
+ lowestDelta = null;
210
+ }
211
+
212
+ function shouldAdjustOldDeltas(orgEvent, absDelta) {
213
+ // If this is an older event and the delta is divisable by 120,
214
+ // then we are assuming that the browser is treating this as an
215
+ // older mouse wheel event and that we should divide the deltas
216
+ // by 40 to try and get a more usable deltaFactor.
217
+ // Side note, this actually impacts the reported scroll distance
218
+ // in older browsers and can cause scrolling to be slower than native.
219
+ // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.
220
+ return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;
221
+ }
222
+
223
+ }));
224
+
225
+ /*
226
+ == malihu jquery custom scrollbar plugin ==
227
+ Version: 3.1.5
228
+ Plugin URI: http://manos.malihu.gr/jquery-custom-content-scroller
229
+ Author: malihu
230
+ Author URI: http://manos.malihu.gr
231
+ License: MIT License (MIT)
232
+ */
233
+
234
+ /*
235
+ Copyright Manos Malihutsakis (email: manos@malihu.gr)
236
+
237
+ Permission is hereby granted, free of charge, to any person obtaining a copy
238
+ of this software and associated documentation files (the "Software"), to deal
239
+ in the Software without restriction, including without limitation the rights
240
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
241
+ copies of the Software, and to permit persons to whom the Software is
242
+ furnished to do so, subject to the following conditions:
243
+
244
+ The above copyright notice and this permission notice shall be included in
245
+ all copies or substantial portions of the Software.
246
+
247
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
248
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
249
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
250
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
251
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
252
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
253
+ THE SOFTWARE.
254
+ */
255
+
256
+ /*
257
+ The code below is fairly long, fully commented and should be normally used in development.
258
+ For production, use either the minified jquery.mCustomScrollbar.min.js script or
259
+ the production-ready jquery.mCustomScrollbar.concat.min.js which contains the plugin
260
+ and dependencies (minified).
261
+ */
262
+
263
+ (function(factory){
264
+ if(typeof define==="function" && define.amd){
265
+ define(["jquery"],factory);
266
+ }else if(typeof module!=="undefined" && module.exports){
267
+ module.exports=factory;
268
+ }else{
269
+ factory(jQuery,window,document);
270
+ }
271
+ }(function($){
272
+ (function(init){
273
+ var _rjs=typeof define==="function" && define.amd, /* RequireJS */
274
+ _njs=typeof module !== "undefined" && module.exports, /* NodeJS */
275
+ _dlp=("https:"==document.location.protocol) ? "https:" : "http:", /* location protocol */
276
+ _url="cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js";
277
+ if(!_rjs){
278
+ if(_njs){
279
+ require("jquery-mousewheel")($);
280
+ }else{
281
+ /* load jquery-mousewheel plugin (via CDN) if it's not present or not loaded via RequireJS
282
+ (works when mCustomScrollbar fn is called on window load) */
283
+ $.event.special.mousewheel || $("head").append(decodeURI("%3Cscript src="+_dlp+"//"+_url+"%3E%3C/script%3E"));
284
+ }
285
+ }
286
+ init();
287
+ }(function(){
288
+
289
+ /*
290
+ ----------------------------------------
291
+ PLUGIN NAMESPACE, PREFIX, DEFAULT SELECTOR(S)
292
+ ----------------------------------------
293
+ */
294
+
295
+ var pluginNS="mCustomScrollbar",
296
+ pluginPfx="mCS",
297
+ defaultSelector=".mCustomScrollbar",
298
+
299
+
300
+
301
+
302
+
303
+ /*
304
+ ----------------------------------------
305
+ DEFAULT OPTIONS
306
+ ----------------------------------------
307
+ */
308
+
309
+ defaults={
310
+ /*
311
+ set element/content width/height programmatically
312
+ values: boolean, pixels, percentage
313
+ option default
314
+ -------------------------------------
315
+ setWidth false
316
+ setHeight false
317
+ */
318
+ /*
319
+ set the initial css top property of content
320
+ values: string (e.g. "-100px", "10%" etc.)
321
+ */
322
+ setTop:0,
323
+ /*
324
+ set the initial css left property of content
325
+ values: string (e.g. "-100px", "10%" etc.)
326
+ */
327
+ setLeft:0,
328
+ /*
329
+ scrollbar axis (vertical and/or horizontal scrollbars)
330
+ values (string): "y", "x", "yx"
331
+ */
332
+ axis:"y",
333
+ /*
334
+ position of scrollbar relative to content
335
+ values (string): "inside", "outside" ("outside" requires elements with position:relative)
336
+ */
337
+ scrollbarPosition:"inside",
338
+ /*
339
+ scrolling inertia
340
+ values: integer (milliseconds)
341
+ */
342
+ scrollInertia:950,
343
+ /*
344
+ auto-adjust scrollbar dragger length
345
+ values: boolean
346
+ */
347
+ autoDraggerLength:true,
348
+ /*
349
+ auto-hide scrollbar when idle
350
+ values: boolean
351
+ option default
352
+ -------------------------------------
353
+ autoHideScrollbar false
354
+ */
355
+ /*
356
+ auto-expands scrollbar on mouse-over and dragging
357
+ values: boolean
358
+ option default
359
+ -------------------------------------
360
+ autoExpandScrollbar false
361
+ */
362
+ /*
363
+ always show scrollbar, even when there's nothing to scroll
364
+ values: integer (0=disable, 1=always show dragger rail and buttons, 2=always show dragger rail, dragger and buttons), boolean
365
+ */
366
+ alwaysShowScrollbar:0,
367
+ /*
368
+ scrolling always snaps to a multiple of this number in pixels
369
+ values: integer, array ([y,x])
370
+ option default
371
+ -------------------------------------
372
+ snapAmount null
373
+ */
374
+ /*
375
+ when snapping, snap with this number in pixels as an offset
376
+ values: integer
377
+ */
378
+ snapOffset:0,
379
+ /*
380
+ mouse-wheel scrolling
381
+ */
382
+ mouseWheel:{
383
+ /*
384
+ enable mouse-wheel scrolling
385
+ values: boolean
386
+ */
387
+ enable:true,
388
+ /*
389
+ scrolling amount in pixels
390
+ values: "auto", integer
391
+ */
392
+ scrollAmount:"auto",
393
+ /*
394
+ mouse-wheel scrolling axis
395
+ the default scrolling direction when both vertical and horizontal scrollbars are present
396
+ values (string): "y", "x"
397
+ */
398
+ axis:"y",
399
+ /*
400
+ prevent the default behaviour which automatically scrolls the parent element(s) when end of scrolling is reached
401
+ values: boolean
402
+ option default
403
+ -------------------------------------
404
+ preventDefault null
405
+ */
406
+ /*
407
+ the reported mouse-wheel delta value. The number of lines (translated to pixels) one wheel notch scrolls.
408
+ values: "auto", integer
409
+ "auto" uses the default OS/browser value
410
+ */
411
+ deltaFactor:"auto",
412
+ /*
413
+ normalize mouse-wheel delta to -1 or 1 (disables mouse-wheel acceleration)
414
+ values: boolean
415
+ option default
416
+ -------------------------------------
417
+ normalizeDelta null
418
+ */
419
+ /*
420
+ invert mouse-wheel scrolling direction
421
+ values: boolean
422
+ option default
423
+ -------------------------------------
424
+ invert null
425
+ */
426
+ /*
427
+ the tags that disable mouse-wheel when cursor is over them
428
+ */
429
+ disableOver:["select","option","keygen","datalist","textarea"]
430
+ },
431
+ /*
432
+ scrollbar buttons
433
+ */
434
+ scrollButtons:{
435
+ /*
436
+ enable scrollbar buttons
437
+ values: boolean
438
+ option default
439
+ -------------------------------------
440
+ enable null
441
+ */
442
+ /*
443
+ scrollbar buttons scrolling type
444
+ values (string): "stepless", "stepped"
445
+ */
446
+ scrollType:"stepless",
447
+ /*
448
+ scrolling amount in pixels
449
+ values: "auto", integer
450
+ */
451
+ scrollAmount:"auto"
452
+ /*
453
+ tabindex of the scrollbar buttons
454
+ values: false, integer
455
+ option default
456
+ -------------------------------------
457
+ tabindex null
458
+ */
459
+ },
460
+ /*
461
+ keyboard scrolling
462
+ */
463
+ keyboard:{
464
+ /*
465
+ enable scrolling via keyboard
466
+ values: boolean
467
+ */
468
+ enable:true,
469
+ /*
470
+ keyboard scrolling type
471
+ values (string): "stepless", "stepped"
472
+ */
473
+ scrollType:"stepless",
474
+ /*
475
+ scrolling amount in pixels
476
+ values: "auto", integer
477
+ */
478
+ scrollAmount:"auto"
479
+ },
480
+ /*
481
+ enable content touch-swipe scrolling
482
+ values: boolean, integer, string (number)
483
+ integer values define the axis-specific minimum amount required for scrolling momentum
484
+ */
485
+ contentTouchScroll:25,
486
+ /*
487
+ enable/disable document (default) touch-swipe scrolling
488
+ */
489
+ documentTouchScroll:true,
490
+ /*
491
+ advanced option parameters
492
+ */
493
+ advanced:{
494
+ /*
495
+ auto-expand content horizontally (for "x" or "yx" axis)
496
+ values: boolean, integer (the value 2 forces the non scrollHeight/scrollWidth method, the value 3 forces the scrollHeight/scrollWidth method)
497
+ option default
498
+ -------------------------------------
499
+ autoExpandHorizontalScroll null
500
+ */
501
+ /*
502
+ auto-scroll to elements with focus
503
+ */
504
+ autoScrollOnFocus:"input,textarea,select,button,datalist,keygen,a[tabindex],area,object,[contenteditable='true']",
505
+ /*
506
+ auto-update scrollbars on content, element or viewport resize
507
+ should be true for fluid layouts/elements, adding/removing content dynamically, hiding/showing elements, content with images etc.
508
+ values: boolean
509
+ */
510
+ updateOnContentResize:true,
511
+ /*
512
+ auto-update scrollbars each time each image inside the element is fully loaded
513
+ values: "auto", boolean
514
+ */
515
+ updateOnImageLoad:"auto",
516
+ /*
517
+ auto-update scrollbars based on the amount and size changes of specific selectors
518
+ useful when you need to update the scrollbar(s) automatically, each time a type of element is added, removed or changes its size
519
+ values: boolean, string (e.g. "ul li" will auto-update scrollbars each time list-items inside the element are changed)
520
+ a value of true (boolean) will auto-update scrollbars each time any element is changed
521
+ option default
522
+ -------------------------------------
523
+ updateOnSelectorChange null
524
+ */
525
+ /*
526
+ extra selectors that'll allow scrollbar dragging upon mousemove/up, pointermove/up, touchend etc. (e.g. "selector-1, selector-2")
527
+ option default
528
+ -------------------------------------
529
+ extraDraggableSelectors null
530
+ */
531
+ /*
532
+ extra selectors that'll release scrollbar dragging upon mouseup, pointerup, touchend etc. (e.g. "selector-1, selector-2")
533
+ option default
534
+ -------------------------------------
535
+ releaseDraggableSelectors null
536
+ */
537
+ /*
538
+ auto-update timeout
539
+ values: integer (milliseconds)
540
+ */
541
+ autoUpdateTimeout:60
542
+ },
543
+ /*
544
+ scrollbar theme
545
+ values: string (see CSS/plugin URI for a list of ready-to-use themes)
546
+ */
547
+ theme:"light",
548
+ /*
549
+ user defined callback functions
550
+ */
551
+ callbacks:{
552
+ /*
553
+ Available callbacks:
554
+ callback default
555
+ -------------------------------------
556
+ onCreate null
557
+ onInit null
558
+ onScrollStart null
559
+ onScroll null
560
+ onTotalScroll null
561
+ onTotalScrollBack null
562
+ whileScrolling null
563
+ onOverflowY null
564
+ onOverflowX null
565
+ onOverflowYNone null
566
+ onOverflowXNone null
567
+ onImageLoad null
568
+ onSelectorChange null
569
+ onBeforeUpdate null
570
+ onUpdate null
571
+ */
572
+ onTotalScrollOffset:0,
573
+ onTotalScrollBackOffset:0,
574
+ alwaysTriggerOffsets:true
575
+ }
576
+ /*
577
+ add scrollbar(s) on all elements matching the current selector, now and in the future
578
+ values: boolean, string
579
+ string values: "on" (enable), "once" (disable after first invocation), "off" (disable)
580
+ liveSelector values: string (selector)
581
+ option default
582
+ -------------------------------------
583
+ live false
584
+ liveSelector null
585
+ */
586
+ },
587
+
588
+
589
+
590
+
591
+
592
+ /*
593
+ ----------------------------------------
594
+ VARS, CONSTANTS
595
+ ----------------------------------------
596
+ */
597
+
598
+ totalInstances=0, /* plugin instances amount */
599
+ liveTimers={}, /* live option timers */
600
+ oldIE=(window.attachEvent && !window.addEventListener) ? 1 : 0, /* detect IE < 9 */
601
+ touchActive=false,touchable, /* global touch vars (for touch and pointer events) */
602
+ /* general plugin classes */
603
+ classes=[
604
+ "mCSB_dragger_onDrag","mCSB_scrollTools_onDrag","mCS_img_loaded","mCS_disabled","mCS_destroyed","mCS_no_scrollbar",
605
+ "mCS-autoHide","mCS-dir-rtl","mCS_no_scrollbar_y","mCS_no_scrollbar_x","mCS_y_hidden","mCS_x_hidden","mCSB_draggerContainer",
606
+ "mCSB_buttonUp","mCSB_buttonDown","mCSB_buttonLeft","mCSB_buttonRight"
607
+ ],
608
+
609
+
610
+
611
+
612
+
613
+ /*
614
+ ----------------------------------------
615
+ METHODS
616
+ ----------------------------------------
617
+ */
618
+
619
+ methods={
620
+
621
+ /*
622
+ plugin initialization method
623
+ creates the scrollbar(s), plugin data object and options
624
+ ----------------------------------------
625
+ */
626
+
627
+ init:function(options){
628
+
629
+ var options=$.extend(true,{},defaults,options),
630
+ selector=_selector.call(this); /* validate selector */
631
+
632
+ /*
633
+ if live option is enabled, monitor for elements matching the current selector and
634
+ apply scrollbar(s) when found (now and in the future)
635
+ */
636
+ if(options.live){
637
+ var liveSelector=options.liveSelector || this.selector || defaultSelector, /* live selector(s) */
638
+ $liveSelector=$(liveSelector); /* live selector(s) as jquery object */
639
+ if(options.live==="off"){
640
+ /*
641
+ disable live if requested
642
+ usage: $(selector).mCustomScrollbar({live:"off"});
643
+ */
644
+ removeLiveTimers(liveSelector);
645
+ return;
646
+ }
647
+ liveTimers[liveSelector]=setTimeout(function(){
648
+ /* call mCustomScrollbar fn on live selector(s) every half-second */
649
+ $liveSelector.mCustomScrollbar(options);
650
+ if(options.live==="once" && $liveSelector.length){
651
+ /* disable live after first invocation */
652
+ removeLiveTimers(liveSelector);
653
+ }
654
+ },500);
655
+ }else{
656
+ removeLiveTimers(liveSelector);
657
+ }
658
+
659
+ /* options backward compatibility (for versions < 3.0.0) and normalization */
660
+ options.setWidth=(options.set_width) ? options.set_width : options.setWidth;
661
+ options.setHeight=(options.set_height) ? options.set_height : options.setHeight;
662
+ options.axis=(options.horizontalScroll) ? "x" : _findAxis(options.axis);
663
+ options.scrollInertia=options.scrollInertia>0 && options.scrollInertia<17 ? 17 : options.scrollInertia;
664
+ if(typeof options.mouseWheel!=="object" && options.mouseWheel==true){ /* old school mouseWheel option (non-object) */
665
+ options.mouseWheel={enable:true,scrollAmount:"auto",axis:"y",preventDefault:false,deltaFactor:"auto",normalizeDelta:false,invert:false}
666
+ }
667
+ options.mouseWheel.scrollAmount=!options.mouseWheelPixels ? options.mouseWheel.scrollAmount : options.mouseWheelPixels;
668
+ options.mouseWheel.normalizeDelta=!options.advanced.normalizeMouseWheelDelta ? options.mouseWheel.normalizeDelta : options.advanced.normalizeMouseWheelDelta;
669
+ options.scrollButtons.scrollType=_findScrollButtonsType(options.scrollButtons.scrollType);
670
+
671
+ _theme(options); /* theme-specific options */
672
+
673
+ /* plugin constructor */
674
+ return $(selector).each(function(){
675
+
676
+ var $this=$(this);
677
+
678
+ if(!$this.data(pluginPfx)){ /* prevent multiple instantiations */
679
+
680
+ /* store options and create objects in jquery data */
681
+ $this.data(pluginPfx,{
682
+ idx:++totalInstances, /* instance index */
683
+ opt:options, /* options */
684
+ scrollRatio:{y:null,x:null}, /* scrollbar to content ratio */
685
+ overflowed:null, /* overflowed axis */
686
+ contentReset:{y:null,x:null}, /* object to check when content resets */
687
+ bindEvents:false, /* object to check if events are bound */
688
+ tweenRunning:false, /* object to check if tween is running */
689
+ sequential:{}, /* sequential scrolling object */
690
+ langDir:$this.css("direction"), /* detect/store direction (ltr or rtl) */
691
+ cbOffsets:null, /* object to check whether callback offsets always trigger */
692
+ /*
693
+ object to check how scrolling events where last triggered
694
+ "internal" (default - triggered by this script), "external" (triggered by other scripts, e.g. via scrollTo method)
695
+ usage: object.data("mCS").trigger
696
+ */
697
+ trigger:null,
698
+ /*
699
+ object to check for changes in elements in order to call the update method automatically
700
+ */
701
+ poll:{size:{o:0,n:0},img:{o:0,n:0},change:{o:0,n:0}}
702
+ });
703
+
704
+ var d=$this.data(pluginPfx),o=d.opt,
705
+ /* HTML data attributes */
706
+ htmlDataAxis=$this.data("mcs-axis"),htmlDataSbPos=$this.data("mcs-scrollbar-position"),htmlDataTheme=$this.data("mcs-theme");
707
+
708
+ if(htmlDataAxis){o.axis=htmlDataAxis;} /* usage example: data-mcs-axis="y" */
709
+ if(htmlDataSbPos){o.scrollbarPosition=htmlDataSbPos;} /* usage example: data-mcs-scrollbar-position="outside" */
710
+ if(htmlDataTheme){ /* usage example: data-mcs-theme="minimal" */
711
+ o.theme=htmlDataTheme;
712
+ _theme(o); /* theme-specific options */
713
+ }
714
+
715
+ _pluginMarkup.call(this); /* add plugin markup */
716
+
717
+ if(d && o.callbacks.onCreate && typeof o.callbacks.onCreate==="function"){o.callbacks.onCreate.call(this);} /* callbacks: onCreate */
718
+
719
+ $("#mCSB_"+d.idx+"_container img:not(."+classes[2]+")").addClass(classes[2]); /* flag loaded images */
720
+
721
+ methods.update.call(null,$this); /* call the update method */
722
+
723
+ }
724
+
725
+ });
726
+
727
+ },
728
+ /* ---------------------------------------- */
729
+
730
+
731
+
732
+ /*
733
+ plugin update method
734
+ updates content and scrollbar(s) values, events and status
735
+ ----------------------------------------
736
+ usage: $(selector).mCustomScrollbar("update");
737
+ */
738
+
739
+ update:function(el,cb){
740
+
741
+ var selector=el || _selector.call(this); /* validate selector */
742
+
743
+ return $(selector).each(function(){
744
+
745
+ var $this=$(this);
746
+
747
+ if($this.data(pluginPfx)){ /* check if plugin has initialized */
748
+
749
+ var d=$this.data(pluginPfx),o=d.opt,
750
+ mCSB_container=$("#mCSB_"+d.idx+"_container"),
751
+ mCustomScrollBox=$("#mCSB_"+d.idx),
752
+ mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")];
753
+
754
+ if(!mCSB_container.length){return;}
755
+
756
+ if(d.tweenRunning){_stop($this);} /* stop any running tweens while updating */
757
+
758
+ if(cb && d && o.callbacks.onBeforeUpdate && typeof o.callbacks.onBeforeUpdate==="function"){o.callbacks.onBeforeUpdate.call(this);} /* callbacks: onBeforeUpdate */
759
+
760
+ /* if element was disabled or destroyed, remove class(es) */
761
+ if($this.hasClass(classes[3])){$this.removeClass(classes[3]);}
762
+ if($this.hasClass(classes[4])){$this.removeClass(classes[4]);}
763
+
764
+ /* css flexbox fix, detect/set max-height */
765
+ mCustomScrollBox.css("max-height","none");
766
+ if(mCustomScrollBox.height()!==$this.height()){mCustomScrollBox.css("max-height",$this.height());}
767
+
768
+ _expandContentHorizontally.call(this); /* expand content horizontally */
769
+
770
+ if(o.axis!=="y" && !o.advanced.autoExpandHorizontalScroll){
771
+ mCSB_container.css("width",_contentWidth(mCSB_container));
772
+ }
773
+
774
+ d.overflowed=_overflowed.call(this); /* determine if scrolling is required */
775
+
776
+ _scrollbarVisibility.call(this); /* show/hide scrollbar(s) */
777
+
778
+ /* auto-adjust scrollbar dragger length analogous to content */
779
+ if(o.autoDraggerLength){_setDraggerLength.call(this);}
780
+
781
+ _scrollRatio.call(this); /* calculate and store scrollbar to content ratio */
782
+
783
+ _bindEvents.call(this); /* bind scrollbar events */
784
+
785
+ /* reset scrolling position and/or events */
786
+ var to=[Math.abs(mCSB_container[0].offsetTop),Math.abs(mCSB_container[0].offsetLeft)];
787
+ if(o.axis!=="x"){ /* y/yx axis */
788
+ if(!d.overflowed[0]){ /* y scrolling is not required */
789
+ _resetContentPosition.call(this); /* reset content position */
790
+ if(o.axis==="y"){
791
+ _unbindEvents.call(this);
792
+ }else if(o.axis==="yx" && d.overflowed[1]){
793
+ _scrollTo($this,to[1].toString(),{dir:"x",dur:0,overwrite:"none"});
794
+ }
795
+ }else if(mCSB_dragger[0].height()>mCSB_dragger[0].parent().height()){
796
+ _resetContentPosition.call(this); /* reset content position */
797
+ }else{ /* y scrolling is required */
798
+ _scrollTo($this,to[0].toString(),{dir:"y",dur:0,overwrite:"none"});
799
+ d.contentReset.y=null;
800
+ }
801
+ }
802
+ if(o.axis!=="y"){ /* x/yx axis */
803
+ if(!d.overflowed[1]){ /* x scrolling is not required */
804
+ _resetContentPosition.call(this); /* reset content position */
805
+ if(o.axis==="x"){
806
+ _unbindEvents.call(this);
807
+ }else if(o.axis==="yx" && d.overflowed[0]){
808
+ _scrollTo($this,to[0].toString(),{dir:"y",dur:0,overwrite:"none"});
809
+ }
810
+ }else if(mCSB_dragger[1].width()>mCSB_dragger[1].parent().width()){
811
+ _resetContentPosition.call(this); /* reset content position */
812
+ }else{ /* x scrolling is required */
813
+ _scrollTo($this,to[1].toString(),{dir:"x",dur:0,overwrite:"none"});
814
+ d.contentReset.x=null;
815
+ }
816
+ }
817
+
818
+ /* callbacks: onImageLoad, onSelectorChange, onUpdate */
819
+ if(cb && d){
820
+ if(cb===2 && o.callbacks.onImageLoad && typeof o.callbacks.onImageLoad==="function"){
821
+ o.callbacks.onImageLoad.call(this);
822
+ }else if(cb===3 && o.callbacks.onSelectorChange && typeof o.callbacks.onSelectorChange==="function"){
823
+ o.callbacks.onSelectorChange.call(this);
824
+ }else if(o.callbacks.onUpdate && typeof o.callbacks.onUpdate==="function"){
825
+ o.callbacks.onUpdate.call(this);
826
+ }
827
+ }
828
+
829
+ _autoUpdate.call(this); /* initialize automatic updating (for dynamic content, fluid layouts etc.) */
830
+
831
+ }
832
+
833
+ });
834
+
835
+ },
836
+ /* ---------------------------------------- */
837
+
838
+
839
+
840
+ /*
841
+ plugin scrollTo method
842
+ triggers a scrolling event to a specific value
843
+ ----------------------------------------
844
+ usage: $(selector).mCustomScrollbar("scrollTo",value,options);
845
+ */
846
+
847
+ scrollTo:function(val,options){
848
+
849
+ /* prevent silly things like $(selector).mCustomScrollbar("scrollTo",undefined); */
850
+ if(typeof val=="undefined" || val==null){return;}
851
+
852
+ var selector=_selector.call(this); /* validate selector */
853
+
854
+ return $(selector).each(function(){
855
+
856
+ var $this=$(this);
857
+
858
+ if($this.data(pluginPfx)){ /* check if plugin has initialized */
859
+
860
+ var d=$this.data(pluginPfx),o=d.opt,
861
+ /* method default options */
862
+ methodDefaults={
863
+ trigger:"external", /* method is by default triggered externally (e.g. from other scripts) */
864
+ scrollInertia:o.scrollInertia, /* scrolling inertia (animation duration) */
865
+ scrollEasing:"mcsEaseInOut", /* animation easing */
866
+ moveDragger:false, /* move dragger instead of content */
867
+ timeout:60, /* scroll-to delay */
868
+ callbacks:true, /* enable/disable callbacks */
869
+ onStart:true,
870
+ onUpdate:true,
871
+ onComplete:true
872
+ },
873
+ methodOptions=$.extend(true,{},methodDefaults,options),
874
+ to=_arr.call(this,val),dur=methodOptions.scrollInertia>0 && methodOptions.scrollInertia<17 ? 17 : methodOptions.scrollInertia;
875
+
876
+ /* translate yx values to actual scroll-to positions */
877
+ to[0]=_to.call(this,to[0],"y");
878
+ to[1]=_to.call(this,to[1],"x");
879
+
880
+ /*
881
+ check if scroll-to value moves the dragger instead of content.
882
+ Only pixel values apply on dragger (e.g. 100, "100px", "-=100" etc.)
883
+ */
884
+ if(methodOptions.moveDragger){
885
+ to[0]*=d.scrollRatio.y;
886
+ to[1]*=d.scrollRatio.x;
887
+ }
888
+
889
+ methodOptions.dur=_isTabHidden() ? 0 : dur; //skip animations if browser tab is hidden
890
+
891
+ setTimeout(function(){
892
+ /* do the scrolling */
893
+ if(to[0]!==null && typeof to[0]!=="undefined" && o.axis!=="x" && d.overflowed[0]){ /* scroll y */
894
+ methodOptions.dir="y";
895
+ methodOptions.overwrite="all";
896
+ _scrollTo($this,to[0].toString(),methodOptions);
897
+ }
898
+ if(to[1]!==null && typeof to[1]!=="undefined" && o.axis!=="y" && d.overflowed[1]){ /* scroll x */
899
+ methodOptions.dir="x";
900
+ methodOptions.overwrite="none";
901
+ _scrollTo($this,to[1].toString(),methodOptions);
902
+ }
903
+ },methodOptions.timeout);
904
+
905
+ }
906
+
907
+ });
908
+
909
+ },
910
+ /* ---------------------------------------- */
911
+
912
+
913
+
914
+ /*
915
+ plugin stop method
916
+ stops scrolling animation
917
+ ----------------------------------------
918
+ usage: $(selector).mCustomScrollbar("stop");
919
+ */
920
+ stop:function(){
921
+
922
+ var selector=_selector.call(this); /* validate selector */
923
+
924
+ return $(selector).each(function(){
925
+
926
+ var $this=$(this);
927
+
928
+ if($this.data(pluginPfx)){ /* check if plugin has initialized */
929
+
930
+ _stop($this);
931
+
932
+ }
933
+
934
+ });
935
+
936
+ },
937
+ /* ---------------------------------------- */
938
+
939
+
940
+
941
+ /*
942
+ plugin disable method
943
+ temporarily disables the scrollbar(s)
944
+ ----------------------------------------
945
+ usage: $(selector).mCustomScrollbar("disable",reset);
946
+ reset (boolean): resets content position to 0
947
+ */
948
+ disable:function(r){
949
+
950
+ var selector=_selector.call(this); /* validate selector */
951
+
952
+ return $(selector).each(function(){
953
+
954
+ var $this=$(this);
955
+
956
+ if($this.data(pluginPfx)){ /* check if plugin has initialized */
957
+
958
+ var d=$this.data(pluginPfx);
959
+
960
+ _autoUpdate.call(this,"remove"); /* remove automatic updating */
961
+
962
+ _unbindEvents.call(this); /* unbind events */
963
+
964
+ if(r){_resetContentPosition.call(this);} /* reset content position */
965
+
966
+ _scrollbarVisibility.call(this,true); /* show/hide scrollbar(s) */
967
+
968
+ $this.addClass(classes[3]); /* add disable class */
969
+
970
+ }
971
+
972
+ });
973
+
974
+ },
975
+ /* ---------------------------------------- */
976
+
977
+
978
+
979
+ /*
980
+ plugin destroy method
981
+ completely removes the scrollbar(s) and returns the element to its original state
982
+ ----------------------------------------
983
+ usage: $(selector).mCustomScrollbar("destroy");
984
+ */
985
+ destroy:function(){
986
+
987
+ var selector=_selector.call(this); /* validate selector */
988
+
989
+ return $(selector).each(function(){
990
+
991
+ var $this=$(this);
992
+
993
+ if($this.data(pluginPfx)){ /* check if plugin has initialized */
994
+
995
+ var d=$this.data(pluginPfx),o=d.opt,
996
+ mCustomScrollBox=$("#mCSB_"+d.idx),
997
+ mCSB_container=$("#mCSB_"+d.idx+"_container"),
998
+ scrollbar=$(".mCSB_"+d.idx+"_scrollbar");
999
+
1000
+ if(o.live){removeLiveTimers(o.liveSelector || $(selector).selector);} /* remove live timers */
1001
+
1002
+ _autoUpdate.call(this,"remove"); /* remove automatic updating */
1003
+
1004
+ _unbindEvents.call(this); /* unbind events */
1005
+
1006
+ _resetContentPosition.call(this); /* reset content position */
1007
+
1008
+ $this.removeData(pluginPfx); /* remove plugin data object */
1009
+
1010
+ _delete(this,"mcs"); /* delete callbacks object */
1011
+
1012
+ /* remove plugin markup */
1013
+ scrollbar.remove(); /* remove scrollbar(s) first (those can be either inside or outside plugin's inner wrapper) */
1014
+ mCSB_container.find("img."+classes[2]).removeClass(classes[2]); /* remove loaded images flag */
1015
+ mCustomScrollBox.replaceWith(mCSB_container.contents()); /* replace plugin's inner wrapper with the original content */
1016
+ /* remove plugin classes from the element and add destroy class */
1017
+ $this.removeClass(pluginNS+" _"+pluginPfx+"_"+d.idx+" "+classes[6]+" "+classes[7]+" "+classes[5]+" "+classes[3]).addClass(classes[4]);
1018
+
1019
+ }
1020
+
1021
+ });
1022
+
1023
+ }
1024
+ /* ---------------------------------------- */
1025
+
1026
+ },
1027
+
1028
+
1029
+
1030
+
1031
+
1032
+ /*
1033
+ ----------------------------------------
1034
+ FUNCTIONS
1035
+ ----------------------------------------
1036
+ */
1037
+
1038
+ /* validates selector (if selector is invalid or undefined uses the default one) */
1039
+ _selector=function(){
1040
+ return (typeof $(this)!=="object" || $(this).length<1) ? defaultSelector : this;
1041
+ },
1042
+ /* -------------------- */
1043
+
1044
+
1045
+ /* changes options according to theme */
1046
+ _theme=function(obj){
1047
+ var fixedSizeScrollbarThemes=["rounded","rounded-dark","rounded-dots","rounded-dots-dark"],
1048
+ nonExpandedScrollbarThemes=["rounded-dots","rounded-dots-dark","3d","3d-dark","3d-thick","3d-thick-dark","inset","inset-dark","inset-2","inset-2-dark","inset-3","inset-3-dark"],
1049
+ disabledScrollButtonsThemes=["minimal","minimal-dark"],
1050
+ enabledAutoHideScrollbarThemes=["minimal","minimal-dark"],
1051
+ scrollbarPositionOutsideThemes=["minimal","minimal-dark"];
1052
+ obj.autoDraggerLength=$.inArray(obj.theme,fixedSizeScrollbarThemes) > -1 ? false : obj.autoDraggerLength;
1053
+ obj.autoExpandScrollbar=$.inArray(obj.theme,nonExpandedScrollbarThemes) > -1 ? false : obj.autoExpandScrollbar;
1054
+ obj.scrollButtons.enable=$.inArray(obj.theme,disabledScrollButtonsThemes) > -1 ? false : obj.scrollButtons.enable;
1055
+ obj.autoHideScrollbar=$.inArray(obj.theme,enabledAutoHideScrollbarThemes) > -1 ? true : obj.autoHideScrollbar;
1056
+ obj.scrollbarPosition=$.inArray(obj.theme,scrollbarPositionOutsideThemes) > -1 ? "outside" : obj.scrollbarPosition;
1057
+ },
1058
+ /* -------------------- */
1059
+
1060
+
1061
+ /* live option timers removal */
1062
+ removeLiveTimers=function(selector){
1063
+ if(liveTimers[selector]){
1064
+ clearTimeout(liveTimers[selector]);
1065
+ _delete(liveTimers,selector);
1066
+ }
1067
+ },
1068
+ /* -------------------- */
1069
+
1070
+
1071
+ /* normalizes axis option to valid values: "y", "x", "yx" */
1072
+ _findAxis=function(val){
1073
+ return (val==="yx" || val==="xy" || val==="auto") ? "yx" : (val==="x" || val==="horizontal") ? "x" : "y";
1074
+ },
1075
+ /* -------------------- */
1076
+
1077
+
1078
+ /* normalizes scrollButtons.scrollType option to valid values: "stepless", "stepped" */
1079
+ _findScrollButtonsType=function(val){
1080
+ return (val==="stepped" || val==="pixels" || val==="step" || val==="click") ? "stepped" : "stepless";
1081
+ },
1082
+ /* -------------------- */
1083
+
1084
+
1085
+ /* generates plugin markup */
1086
+ _pluginMarkup=function(){
1087
+ var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
1088
+ expandClass=o.autoExpandScrollbar ? " "+classes[1]+"_expand" : "",
1089
+ scrollbar=["<div id='mCSB_"+d.idx+"_scrollbar_vertical' class='mCSB_scrollTools mCSB_"+d.idx+"_scrollbar mCS-"+o.theme+" mCSB_scrollTools_vertical"+expandClass+"'><div class='"+classes[12]+"'><div id='mCSB_"+d.idx+"_dragger_vertical' class='mCSB_dragger' style='position:absolute;'><div class='mCSB_dragger_bar' /></div><div class='mCSB_draggerRail' /></div></div>","<div id='mCSB_"+d.idx+"_scrollbar_horizontal' class='mCSB_scrollTools mCSB_"+d.idx+"_scrollbar mCS-"+o.theme+" mCSB_scrollTools_horizontal"+expandClass+"'><div class='"+classes[12]+"'><div id='mCSB_"+d.idx+"_dragger_horizontal' class='mCSB_dragger' style='position:absolute;'><div class='mCSB_dragger_bar' /></div><div class='mCSB_draggerRail' /></div></div>"],
1090
+ wrapperClass=o.axis==="yx" ? "mCSB_vertical_horizontal" : o.axis==="x" ? "mCSB_horizontal" : "mCSB_vertical",
1091
+ scrollbars=o.axis==="yx" ? scrollbar[0]+scrollbar[1] : o.axis==="x" ? scrollbar[1] : scrollbar[0],
1092
+ contentWrapper=o.axis==="yx" ? "<div id='mCSB_"+d.idx+"_container_wrapper' class='mCSB_container_wrapper' />" : "",
1093
+ autoHideClass=o.autoHideScrollbar ? " "+classes[6] : "",
1094
+ scrollbarDirClass=(o.axis!=="x" && d.langDir==="rtl") ? " "+classes[7] : "";
1095
+ if(o.setWidth){$this.css("width",o.setWidth);} /* set element width */
1096
+ if(o.setHeight){$this.css("height",o.setHeight);} /* set element height */
1097
+ o.setLeft=(o.axis!=="y" && d.langDir==="rtl") ? "989999px" : o.setLeft; /* adjust left position for rtl direction */
1098
+ $this.addClass(pluginNS+" _"+pluginPfx+"_"+d.idx+autoHideClass+scrollbarDirClass).wrapInner("<div id='mCSB_"+d.idx+"' class='mCustomScrollBox mCS-"+o.theme+" "+wrapperClass+"'><div id='mCSB_"+d.idx+"_container' class='mCSB_container' style='position:relative; top:"+o.setTop+"; left:"+o.setLeft+";' dir='"+d.langDir+"' /></div>");
1099
+ var mCustomScrollBox=$("#mCSB_"+d.idx),
1100
+ mCSB_container=$("#mCSB_"+d.idx+"_container");
1101
+ if(o.axis!=="y" && !o.advanced.autoExpandHorizontalScroll){
1102
+ mCSB_container.css("width",_contentWidth(mCSB_container));
1103
+ }
1104
+ if(o.scrollbarPosition==="outside"){
1105
+ if($this.css("position")==="static"){ /* requires elements with non-static position */
1106
+ $this.css("position","relative");
1107
+ }
1108
+ $this.css("overflow","visible");
1109
+ mCustomScrollBox.addClass("mCSB_outside").after(scrollbars);
1110
+ }else{
1111
+ mCustomScrollBox.addClass("mCSB_inside").append(scrollbars);
1112
+ mCSB_container.wrap(contentWrapper);
1113
+ }
1114
+ _scrollButtons.call(this); /* add scrollbar buttons */
1115
+ /* minimum dragger length */
1116
+ var mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")];
1117
+ mCSB_dragger[0].css("min-height",mCSB_dragger[0].height());
1118
+ mCSB_dragger[1].css("min-width",mCSB_dragger[1].width());
1119
+ },
1120
+ /* -------------------- */
1121
+
1122
+
1123
+ /* calculates content width */
1124
+ _contentWidth=function(el){
1125
+ var val=[el[0].scrollWidth,Math.max.apply(Math,el.children().map(function(){return $(this).outerWidth(true);}).get())],w=el.parent().width();
1126
+ return val[0]>w ? val[0] : val[1]>w ? val[1] : "100%";
1127
+ },
1128
+ /* -------------------- */
1129
+
1130
+
1131
+ /* expands content horizontally */
1132
+ _expandContentHorizontally=function(){
1133
+ var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
1134
+ mCSB_container=$("#mCSB_"+d.idx+"_container");
1135
+ if(o.advanced.autoExpandHorizontalScroll && o.axis!=="y"){
1136
+ /* calculate scrollWidth */
1137
+ mCSB_container.css({"width":"auto","min-width":0,"overflow-x":"scroll"});
1138
+ var w=Math.ceil(mCSB_container[0].scrollWidth);
1139
+ if(o.advanced.autoExpandHorizontalScroll===3 || (o.advanced.autoExpandHorizontalScroll!==2 && w>mCSB_container.parent().width())){
1140
+ mCSB_container.css({"width":w,"min-width":"100%","overflow-x":"inherit"});
1141
+ }else{
1142
+ /*
1143
+ wrap content with an infinite width div and set its position to absolute and width to auto.
1144
+ Setting width to auto before calculating the actual width is important!
1145
+ We must let the browser set the width as browser zoom values are impossible to calculate.
1146
+ */
1147
+ mCSB_container.css({"overflow-x":"inherit","position":"absolute"})
1148
+ .wrap("<div class='mCSB_h_wrapper' style='position:relative; left:0; width:999999px;' />")
1149
+ .css({ /* set actual width, original position and un-wrap */
1150
+ /*
1151
+ get the exact width (with decimals) and then round-up.
1152
+ Using jquery outerWidth() will round the width value which will mess up with inner elements that have non-integer width
1153
+ */
1154
+ "width":(Math.ceil(mCSB_container[0].getBoundingClientRect().right+0.4)-Math.floor(mCSB_container[0].getBoundingClientRect().left)),
1155
+ "min-width":"100%",
1156
+ "position":"relative"
1157
+ }).unwrap();
1158
+ }
1159
+ }
1160
+ },
1161
+ /* -------------------- */
1162
+
1163
+
1164
+ /* adds scrollbar buttons */
1165
+ _scrollButtons=function(){
1166
+ var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
1167
+ mCSB_scrollTools=$(".mCSB_"+d.idx+"_scrollbar:first"),
1168
+ tabindex=!_isNumeric(o.scrollButtons.tabindex) ? "" : "tabindex='"+o.scrollButtons.tabindex+"'",
1169
+ btnHTML=[
1170
+ "<a href='#' class='"+classes[13]+"' "+tabindex+" />",
1171
+ "<a href='#' class='"+classes[14]+"' "+tabindex+" />",
1172
+ "<a href='#' class='"+classes[15]+"' "+tabindex+" />",
1173
+ "<a href='#' class='"+classes[16]+"' "+tabindex+" />"
1174
+ ],
1175
+ btn=[(o.axis==="x" ? btnHTML[2] : btnHTML[0]),(o.axis==="x" ? btnHTML[3] : btnHTML[1]),btnHTML[2],btnHTML[3]];
1176
+ if(o.scrollButtons.enable){
1177
+ mCSB_scrollTools.prepend(btn[0]).append(btn[1]).next(".mCSB_scrollTools").prepend(btn[2]).append(btn[3]);
1178
+ }
1179
+ },
1180
+ /* -------------------- */
1181
+
1182
+
1183
+ /* auto-adjusts scrollbar dragger length */
1184
+ _setDraggerLength=function(){
1185
+ var $this=$(this),d=$this.data(pluginPfx),
1186
+ mCustomScrollBox=$("#mCSB_"+d.idx),
1187
+ mCSB_container=$("#mCSB_"+d.idx+"_container"),
1188
+ mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")],
1189
+ ratio=[mCustomScrollBox.height()/mCSB_container.outerHeight(false),mCustomScrollBox.width()/mCSB_container.outerWidth(false)],
1190
+ l=[
1191
+ parseInt(mCSB_dragger[0].css("min-height")),Math.round(ratio[0]*mCSB_dragger[0].parent().height()),
1192
+ parseInt(mCSB_dragger[1].css("min-width")),Math.round(ratio[1]*mCSB_dragger[1].parent().width())
1193
+ ],
1194
+ h=oldIE && (l[1]<l[0]) ? l[0] : l[1],w=oldIE && (l[3]<l[2]) ? l[2] : l[3];
1195
+ mCSB_dragger[0].css({
1196
+ "height":h,"max-height":(mCSB_dragger[0].parent().height()-10)
1197
+ }).find(".mCSB_dragger_bar").css({"line-height":l[0]+"px"});
1198
+ mCSB_dragger[1].css({
1199
+ "width":w,"max-width":(mCSB_dragger[1].parent().width()-10)
1200
+ });
1201
+ },
1202
+ /* -------------------- */
1203
+
1204
+
1205
+ /* calculates scrollbar to content ratio */
1206
+ _scrollRatio=function(){
1207
+ var $this=$(this),d=$this.data(pluginPfx),
1208
+ mCustomScrollBox=$("#mCSB_"+d.idx),
1209
+ mCSB_container=$("#mCSB_"+d.idx+"_container"),
1210
+ mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")],
1211
+ scrollAmount=[mCSB_container.outerHeight(false)-mCustomScrollBox.height(),mCSB_container.outerWidth(false)-mCustomScrollBox.width()],
1212
+ ratio=[
1213
+ scrollAmount[0]/(mCSB_dragger[0].parent().height()-mCSB_dragger[0].height()),
1214
+ scrollAmount[1]/(mCSB_dragger[1].parent().width()-mCSB_dragger[1].width())
1215
+ ];
1216
+ d.scrollRatio={y:ratio[0],x:ratio[1]};
1217
+ },
1218
+ /* -------------------- */
1219
+
1220
+
1221
+ /* toggles scrolling classes */
1222
+ _onDragClasses=function(el,action,xpnd){
1223
+ var expandClass=xpnd ? classes[0]+"_expanded" : "",
1224
+ scrollbar=el.closest(".mCSB_scrollTools");
1225
+ if(action==="active"){
1226
+ el.toggleClass(classes[0]+" "+expandClass); scrollbar.toggleClass(classes[1]);
1227
+ el[0]._draggable=el[0]._draggable ? 0 : 1;
1228
+ }else{
1229
+ if(!el[0]._draggable){
1230
+ if(action==="hide"){
1231
+ el.removeClass(classes[0]); scrollbar.removeClass(classes[1]);
1232
+ }else{
1233
+ el.addClass(classes[0]); scrollbar.addClass(classes[1]);
1234
+ }
1235
+ }
1236
+ }
1237
+ },
1238
+ /* -------------------- */
1239
+
1240
+
1241
+ /* checks if content overflows its container to determine if scrolling is required */
1242
+ _overflowed=function(){
1243
+ var $this=$(this),d=$this.data(pluginPfx),
1244
+ mCustomScrollBox=$("#mCSB_"+d.idx),
1245
+ mCSB_container=$("#mCSB_"+d.idx+"_container"),
1246
+ contentHeight=d.overflowed==null ? mCSB_container.height() : mCSB_container.outerHeight(false),
1247
+ contentWidth=d.overflowed==null ? mCSB_container.width() : mCSB_container.outerWidth(false),
1248
+ h=mCSB_container[0].scrollHeight,w=mCSB_container[0].scrollWidth;
1249
+ if(h>contentHeight){contentHeight=h;}
1250
+ if(w>contentWidth){contentWidth=w;}
1251
+ return [contentHeight>mCustomScrollBox.height(),contentWidth>mCustomScrollBox.width()];
1252
+ },
1253
+ /* -------------------- */
1254
+
1255
+
1256
+ /* resets content position to 0 */
1257
+ _resetContentPosition=function(){
1258
+ var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
1259
+ mCustomScrollBox=$("#mCSB_"+d.idx),
1260
+ mCSB_container=$("#mCSB_"+d.idx+"_container"),
1261
+ mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")];
1262
+ _stop($this); /* stop any current scrolling before resetting */
1263
+ if((o.axis!=="x" && !d.overflowed[0]) || (o.axis==="y" && d.overflowed[0])){ /* reset y */
1264
+ mCSB_dragger[0].add(mCSB_container).css("top",0);
1265
+ _scrollTo($this,"_resetY");
1266
+ }
1267
+ if((o.axis!=="y" && !d.overflowed[1]) || (o.axis==="x" && d.overflowed[1])){ /* reset x */
1268
+ var cx=dx=0;
1269
+ if(d.langDir==="rtl"){ /* adjust left position for rtl direction */
1270
+ cx=mCustomScrollBox.width()-mCSB_container.outerWidth(false);
1271
+ dx=Math.abs(cx/d.scrollRatio.x);
1272
+ }
1273
+ mCSB_container.css("left",cx);
1274
+ mCSB_dragger[1].css("left",dx);
1275
+ _scrollTo($this,"_resetX");
1276
+ }
1277
+ },
1278
+ /* -------------------- */
1279
+
1280
+
1281
+ /* binds scrollbar events */
1282
+ _bindEvents=function(){
1283
+ var $this=$(this),d=$this.data(pluginPfx),o=d.opt;
1284
+ if(!d.bindEvents){ /* check if events are already bound */
1285
+ _draggable.call(this);
1286
+ if(o.contentTouchScroll){_contentDraggable.call(this);}
1287
+ _selectable.call(this);
1288
+ if(o.mouseWheel.enable){ /* bind mousewheel fn when plugin is available */
1289
+ function _mwt(){
1290
+ mousewheelTimeout=setTimeout(function(){
1291
+ if(!$.event.special.mousewheel){
1292
+ _mwt();
1293
+ }else{
1294
+ clearTimeout(mousewheelTimeout);
1295
+ _mousewheel.call($this[0]);
1296
+ }
1297
+ },100);
1298
+ }
1299
+ var mousewheelTimeout;
1300
+ _mwt();
1301
+ }
1302
+ _draggerRail.call(this);
1303
+ _wrapperScroll.call(this);
1304
+ if(o.advanced.autoScrollOnFocus){_focus.call(this);}
1305
+ if(o.scrollButtons.enable){_buttons.call(this);}
1306
+ if(o.keyboard.enable){_keyboard.call(this);}
1307
+ d.bindEvents=true;
1308
+ }
1309
+ },
1310
+ /* -------------------- */
1311
+
1312
+
1313
+ /* unbinds scrollbar events */
1314
+ _unbindEvents=function(){
1315
+ var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
1316
+ namespace=pluginPfx+"_"+d.idx,
1317
+ sb=".mCSB_"+d.idx+"_scrollbar",
1318
+ sel=$("#mCSB_"+d.idx+",#mCSB_"+d.idx+"_container,#mCSB_"+d.idx+"_container_wrapper,"+sb+" ."+classes[12]+",#mCSB_"+d.idx+"_dragger_vertical,#mCSB_"+d.idx+"_dragger_horizontal,"+sb+">a"),
1319
+ mCSB_container=$("#mCSB_"+d.idx+"_container");
1320
+ if(o.advanced.releaseDraggableSelectors){sel.add($(o.advanced.releaseDraggableSelectors));}
1321
+ if(o.advanced.extraDraggableSelectors){sel.add($(o.advanced.extraDraggableSelectors));}
1322
+ if(d.bindEvents){ /* check if events are bound */
1323
+ /* unbind namespaced events from document/selectors */
1324
+ $(document).add($(!_canAccessIFrame() || top.document)).unbind("."+namespace);
1325
+ sel.each(function(){
1326
+ $(this).unbind("."+namespace);
1327
+ });
1328
+ /* clear and delete timeouts/objects */
1329
+ clearTimeout($this[0]._focusTimeout); _delete($this[0],"_focusTimeout");
1330
+ clearTimeout(d.sequential.step); _delete(d.sequential,"step");
1331
+ clearTimeout(mCSB_container[0].onCompleteTimeout); _delete(mCSB_container[0],"onCompleteTimeout");
1332
+ d.bindEvents=false;
1333
+ }
1334
+ },
1335
+ /* -------------------- */
1336
+
1337
+
1338
+ /* toggles scrollbar visibility */
1339
+ _scrollbarVisibility=function(disabled){
1340
+ var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
1341
+ contentWrapper=$("#mCSB_"+d.idx+"_container_wrapper"),
1342
+ content=contentWrapper.length ? contentWrapper : $("#mCSB_"+d.idx+"_container"),
1343
+ scrollbar=[$("#mCSB_"+d.idx+"_scrollbar_vertical"),$("#mCSB_"+d.idx+"_scrollbar_horizontal")],
1344
+ mCSB_dragger=[scrollbar[0].find(".mCSB_dragger"),scrollbar[1].find(".mCSB_dragger")];
1345
+ if(o.axis!=="x"){
1346
+ if(d.overflowed[0] && !disabled){
1347
+ scrollbar[0].add(mCSB_dragger[0]).add(scrollbar[0].children("a")).css("display","block");
1348
+ content.removeClass(classes[8]+" "+classes[10]);
1349
+ }else{
1350
+ if(o.alwaysShowScrollbar){
1351
+ if(o.alwaysShowScrollbar!==2){mCSB_dragger[0].css("display","none");}
1352
+ content.removeClass(classes[10]);
1353
+ }else{
1354
+ scrollbar[0].css("display","none");
1355
+ content.addClass(classes[10]);
1356
+ }
1357
+ content.addClass(classes[8]);
1358
+ }
1359
+ }
1360
+ if(o.axis!=="y"){
1361
+ if(d.overflowed[1] && !disabled){
1362
+ scrollbar[1].add(mCSB_dragger[1]).add(scrollbar[1].children("a")).css("display","block");
1363
+ content.removeClass(classes[9]+" "+classes[11]);
1364
+ }else{
1365
+ if(o.alwaysShowScrollbar){
1366
+ if(o.alwaysShowScrollbar!==2){mCSB_dragger[1].css("display","none");}
1367
+ content.removeClass(classes[11]);
1368
+ }else{
1369
+ scrollbar[1].css("display","none");
1370
+ content.addClass(classes[11]);
1371
+ }
1372
+ content.addClass(classes[9]);
1373
+ }
1374
+ }
1375
+ if(!d.overflowed[0] && !d.overflowed[1]){
1376
+ $this.addClass(classes[5]);
1377
+ }else{
1378
+ $this.removeClass(classes[5]);
1379
+ }
1380
+ },
1381
+ /* -------------------- */
1382
+
1383
+
1384
+ /* returns input coordinates of pointer, touch and mouse events (relative to document) */
1385
+ _coordinates=function(e){
1386
+ var t=e.type,o=e.target.ownerDocument!==document && frameElement!==null ? [$(frameElement).offset().top,$(frameElement).offset().left] : null,
1387
+ io=_canAccessIFrame() && e.target.ownerDocument!==top.document && frameElement!==null ? [$(e.view.frameElement).offset().top,$(e.view.frameElement).offset().left] : [0,0];
1388
+ switch(t){
1389
+ case "pointerdown": case "MSPointerDown": case "pointermove": case "MSPointerMove": case "pointerup": case "MSPointerUp":
1390
+ return o ? [e.originalEvent.pageY-o[0]+io[0],e.originalEvent.pageX-o[1]+io[1],false] : [e.originalEvent.pageY,e.originalEvent.pageX,false];
1391
+ break;
1392
+ case "touchstart": case "touchmove": case "touchend":
1393
+ var touch=e.originalEvent.touches[0] || e.originalEvent.changedTouches[0],
1394
+ touches=e.originalEvent.touches.length || e.originalEvent.changedTouches.length;
1395
+ return e.target.ownerDocument!==document ? [touch.screenY,touch.screenX,touches>1] : [touch.pageY,touch.pageX,touches>1];
1396
+ break;
1397
+ default:
1398
+ return o ? [e.pageY-o[0]+io[0],e.pageX-o[1]+io[1],false] : [e.pageY,e.pageX,false];
1399
+ }
1400
+ },
1401
+ /* -------------------- */
1402
+
1403
+
1404
+ /*
1405
+ SCROLLBAR DRAG EVENTS
1406
+ scrolls content via scrollbar dragging
1407
+ */
1408
+ _draggable=function(){
1409
+ var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
1410
+ namespace=pluginPfx+"_"+d.idx,
1411
+ draggerId=["mCSB_"+d.idx+"_dragger_vertical","mCSB_"+d.idx+"_dragger_horizontal"],
1412
+ mCSB_container=$("#mCSB_"+d.idx+"_container"),
1413
+ mCSB_dragger=$("#"+draggerId[0]+",#"+draggerId[1]),
1414
+ draggable,dragY,dragX,
1415
+ rds=o.advanced.releaseDraggableSelectors ? mCSB_dragger.add($(o.advanced.releaseDraggableSelectors)) : mCSB_dragger,
1416
+ eds=o.advanced.extraDraggableSelectors ? $(!_canAccessIFrame() || top.document).add($(o.advanced.extraDraggableSelectors)) : $(!_canAccessIFrame() || top.document);
1417
+ mCSB_dragger.bind("contextmenu."+namespace,function(e){
1418
+ e.preventDefault(); //prevent right click
1419
+ }).bind("mousedown."+namespace+" touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace,function(e){
1420
+ e.stopImmediatePropagation();
1421
+ e.preventDefault();
1422
+ if(!_mouseBtnLeft(e)){return;} /* left mouse button only */
1423
+ touchActive=true;
1424
+ if(oldIE){document.onselectstart=function(){return false;}} /* disable text selection for IE < 9 */
1425
+ _iframe.call(mCSB_container,false); /* enable scrollbar dragging over iframes by disabling their events */
1426
+ _stop($this);
1427
+ draggable=$(this);
1428
+ var offset=draggable.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left,
1429
+ h=draggable.height()+offset.top,w=draggable.width()+offset.left;
1430
+ if(y<h && y>0 && x<w && x>0){
1431
+ dragY=y;
1432
+ dragX=x;
1433
+ }
1434
+ _onDragClasses(draggable,"active",o.autoExpandScrollbar);
1435
+ }).bind("touchmove."+namespace,function(e){
1436
+ e.stopImmediatePropagation();
1437
+ e.preventDefault();
1438
+ var offset=draggable.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left;
1439
+ _drag(dragY,dragX,y,x);
1440
+ });
1441
+ $(document).add(eds).bind("mousemove."+namespace+" pointermove."+namespace+" MSPointerMove."+namespace,function(e){
1442
+ if(draggable){
1443
+ var offset=draggable.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left;
1444
+ if(dragY===y && dragX===x){return;} /* has it really moved? */
1445
+ _drag(dragY,dragX,y,x);
1446
+ }
1447
+ }).add(rds).bind("mouseup."+namespace+" touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace,function(e){
1448
+ if(draggable){
1449
+ _onDragClasses(draggable,"active",o.autoExpandScrollbar);
1450
+ draggable=null;
1451
+ }
1452
+ touchActive=false;
1453
+ if(oldIE){document.onselectstart=null;} /* enable text selection for IE < 9 */
1454
+ _iframe.call(mCSB_container,true); /* enable iframes events */
1455
+ });
1456
+ function _drag(dragY,dragX,y,x){
1457
+ mCSB_container[0].idleTimer=o.scrollInertia<233 ? 250 : 0;
1458
+ if(draggable.attr("id")===draggerId[1]){
1459
+ var dir="x",to=((draggable[0].offsetLeft-dragX)+x)*d.scrollRatio.x;
1460
+ }else{
1461
+ var dir="y",to=((draggable[0].offsetTop-dragY)+y)*d.scrollRatio.y;
1462
+ }
1463
+ _scrollTo($this,to.toString(),{dir:dir,drag:true});
1464
+ }
1465
+ },
1466
+ /* -------------------- */
1467
+
1468
+
1469
+ /*
1470
+ TOUCH SWIPE EVENTS
1471
+ scrolls content via touch swipe
1472
+ Emulates the native touch-swipe scrolling with momentum found in iOS, Android and WP devices
1473
+ */
1474
+ _contentDraggable=function(){
1475
+ var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
1476
+ namespace=pluginPfx+"_"+d.idx,
1477
+ mCustomScrollBox=$("#mCSB_"+d.idx),
1478
+ mCSB_container=$("#mCSB_"+d.idx+"_container"),
1479
+ mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")],
1480
+ draggable,dragY,dragX,touchStartY,touchStartX,touchMoveY=[],touchMoveX=[],startTime,runningTime,endTime,distance,speed,amount,
1481
+ durA=0,durB,overwrite=o.axis==="yx" ? "none" : "all",touchIntent=[],touchDrag,docDrag,
1482
+ iframe=mCSB_container.find("iframe"),
1483
+ events=[
1484
+ "touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace, //start
1485
+ "touchmove."+namespace+" pointermove."+namespace+" MSPointerMove."+namespace, //move
1486
+ "touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace //end
1487
+ ],
1488
+ touchAction=document.body.style.touchAction!==undefined && document.body.style.touchAction!=="";
1489
+ mCSB_container.bind(events[0],function(e){
1490
+ _onTouchstart(e);
1491
+ }).bind(events[1],function(e){
1492
+ _onTouchmove(e);
1493
+ });
1494
+ mCustomScrollBox.bind(events[0],function(e){
1495
+ _onTouchstart2(e);
1496
+ }).bind(events[2],function(e){
1497
+ _onTouchend(e);
1498
+ });
1499
+ if(iframe.length){
1500
+ iframe.each(function(){
1501
+ $(this).bind("load",function(){
1502
+ /* bind events on accessible iframes */
1503
+ if(_canAccessIFrame(this)){
1504
+ $(this.contentDocument || this.contentWindow.document).bind(events[0],function(e){
1505
+ _onTouchstart(e);
1506
+ _onTouchstart2(e);
1507
+ }).bind(events[1],function(e){
1508
+ _onTouchmove(e);
1509
+ }).bind(events[2],function(e){
1510
+ _onTouchend(e);
1511
+ });
1512
+ }
1513
+ });
1514
+ });
1515
+ }
1516
+ function _onTouchstart(e){
1517
+ if(!_pointerTouch(e) || touchActive || _coordinates(e)[2]){touchable=0; return;}
1518
+ touchable=1; touchDrag=0; docDrag=0; draggable=1;
1519
+ $this.removeClass("mCS_touch_action");
1520
+ var offset=mCSB_container.offset();
1521
+ dragY=_coordinates(e)[0]-offset.top;
1522
+ dragX=_coordinates(e)[1]-offset.left;
1523
+ touchIntent=[_coordinates(e)[0],_coordinates(e)[1]];
1524
+ }
1525
+ function _onTouchmove(e){
1526
+ if(!_pointerTouch(e) || touchActive || _coordinates(e)[2]){return;}
1527
+ if(!o.documentTouchScroll){e.preventDefault();}
1528
+ e.stopImmediatePropagation();
1529
+ if(docDrag && !touchDrag){return;}
1530
+ if(draggable){
1531
+ runningTime=_getTime();
1532
+ var offset=mCustomScrollBox.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left,
1533
+ easing="mcsLinearOut";
1534
+ touchMoveY.push(y);
1535
+ touchMoveX.push(x);
1536
+ touchIntent[2]=Math.abs(_coordinates(e)[0]-touchIntent[0]); touchIntent[3]=Math.abs(_coordinates(e)[1]-touchIntent[1]);
1537
+ if(d.overflowed[0]){
1538
+ var limit=mCSB_dragger[0].parent().height()-mCSB_dragger[0].height(),
1539
+ prevent=((dragY-y)>0 && (y-dragY)>-(limit*d.scrollRatio.y) && (touchIntent[3]*2<touchIntent[2] || o.axis==="yx"));
1540
+ }
1541
+ if(d.overflowed[1]){
1542
+ var limitX=mCSB_dragger[1].parent().width()-mCSB_dragger[1].width(),
1543
+ preventX=((dragX-x)>0 && (x-dragX)>-(limitX*d.scrollRatio.x) && (touchIntent[2]*2<touchIntent[3] || o.axis==="yx"));
1544
+ }
1545
+ if(prevent || preventX){ /* prevent native document scrolling */
1546
+ if(!touchAction){e.preventDefault();}
1547
+ touchDrag=1;
1548
+ }else{
1549
+ docDrag=1;
1550
+ $this.addClass("mCS_touch_action");
1551
+ }
1552
+ if(touchAction){e.preventDefault();}
1553
+ amount=o.axis==="yx" ? [(dragY-y),(dragX-x)] : o.axis==="x" ? [null,(dragX-x)] : [(dragY-y),null];
1554
+ mCSB_container[0].idleTimer=250;
1555
+ if(d.overflowed[0]){_drag(amount[0],durA,easing,"y","all",true);}
1556
+ if(d.overflowed[1]){_drag(amount[1],durA,easing,"x",overwrite,true);}
1557
+ }
1558
+ }
1559
+ function _onTouchstart2(e){
1560
+ if(!_pointerTouch(e) || touchActive || _coordinates(e)[2]){touchable=0; return;}
1561
+ touchable=1;
1562
+ e.stopImmediatePropagation();
1563
+ _stop($this);
1564
+ startTime=_getTime();
1565
+ var offset=mCustomScrollBox.offset();
1566
+ touchStartY=_coordinates(e)[0]-offset.top;
1567
+ touchStartX=_coordinates(e)[1]-offset.left;
1568
+ touchMoveY=[]; touchMoveX=[];
1569
+ }
1570
+ function _onTouchend(e){
1571
+ if(!_pointerTouch(e) || touchActive || _coordinates(e)[2]){return;}
1572
+ draggable=0;
1573
+ e.stopImmediatePropagation();
1574
+ touchDrag=0; docDrag=0;
1575
+ endTime=_getTime();
1576
+ var offset=mCustomScrollBox.offset(),y=_coordinates(e)[0]-offset.top,x=_coordinates(e)[1]-offset.left;
1577
+ if((endTime-runningTime)>30){return;}
1578
+ speed=1000/(endTime-startTime);
1579
+ var easing="mcsEaseOut",slow=speed<2.5,
1580
+ diff=slow ? [touchMoveY[touchMoveY.length-2],touchMoveX[touchMoveX.length-2]] : [0,0];
1581
+ distance=slow ? [(y-diff[0]),(x-diff[1])] : [y-touchStartY,x-touchStartX];
1582
+ var absDistance=[Math.abs(distance[0]),Math.abs(distance[1])];
1583
+ speed=slow ? [Math.abs(distance[0]/4),Math.abs(distance[1]/4)] : [speed,speed];
1584
+ var a=[
1585
+ Math.abs(mCSB_container[0].offsetTop)-(distance[0]*_m((absDistance[0]/speed[0]),speed[0])),
1586
+ Math.abs(mCSB_container[0].offsetLeft)-(distance[1]*_m((absDistance[1]/speed[1]),speed[1]))
1587
+ ];
1588
+ amount=o.axis==="yx" ? [a[0],a[1]] : o.axis==="x" ? [null,a[1]] : [a[0],null];
1589
+ durB=[(absDistance[0]*4)+o.scrollInertia,(absDistance[1]*4)+o.scrollInertia];
1590
+ var md=parseInt(o.contentTouchScroll) || 0; /* absolute minimum distance required */
1591
+ amount[0]=absDistance[0]>md ? amount[0] : 0;
1592
+ amount[1]=absDistance[1]>md ? amount[1] : 0;
1593
+ if(d.overflowed[0]){_drag(amount[0],durB[0],easing,"y",overwrite,false);}
1594
+ if(d.overflowed[1]){_drag(amount[1],durB[1],easing,"x",overwrite,false);}
1595
+ }
1596
+ function _m(ds,s){
1597
+ var r=[s*1.5,s*2,s/1.5,s/2];
1598
+ if(ds>90){
1599
+ return s>4 ? r[0] : r[3];
1600
+ }else if(ds>60){
1601
+ return s>3 ? r[3] : r[2];
1602
+ }else if(ds>30){
1603
+ return s>8 ? r[1] : s>6 ? r[0] : s>4 ? s : r[2];
1604
+ }else{
1605
+ return s>8 ? s : r[3];
1606
+ }
1607
+ }
1608
+ function _drag(amount,dur,easing,dir,overwrite,drag){
1609
+ if(!amount){return;}
1610
+ _scrollTo($this,amount.toString(),{dur:dur,scrollEasing:easing,dir:dir,overwrite:overwrite,drag:drag});
1611
+ }
1612
+ },
1613
+ /* -------------------- */
1614
+
1615
+
1616
+ /*
1617
+ SELECT TEXT EVENTS
1618
+ scrolls content when text is selected
1619
+ */
1620
+ _selectable=function(){
1621
+ var $this=$(this),d=$this.data(pluginPfx),o=d.opt,seq=d.sequential,
1622
+ namespace=pluginPfx+"_"+d.idx,
1623
+ mCSB_container=$("#mCSB_"+d.idx+"_container"),
1624
+ wrapper=mCSB_container.parent(),
1625
+ action;
1626
+ mCSB_container.bind("mousedown."+namespace,function(e){
1627
+ if(touchable){return;}
1628
+ if(!action){action=1; touchActive=true;}
1629
+ }).add(document).bind("mousemove."+namespace,function(e){
1630
+ if(!touchable && action && _sel()){
1631
+ var offset=mCSB_container.offset(),
1632
+ y=_coordinates(e)[0]-offset.top+mCSB_container[0].offsetTop,x=_coordinates(e)[1]-offset.left+mCSB_container[0].offsetLeft;
1633
+ if(y>0 && y<wrapper.height() && x>0 && x<wrapper.width()){
1634
+ if(seq.step){_seq("off",null,"stepped");}
1635
+ }else{
1636
+ if(o.axis!=="x" && d.overflowed[0]){
1637
+ if(y<0){
1638
+ _seq("on",38);
1639
+ }else if(y>wrapper.height()){
1640
+ _seq("on",40);
1641
+ }
1642
+ }
1643
+ if(o.axis!=="y" && d.overflowed[1]){
1644
+ if(x<0){
1645
+ _seq("on",37);
1646
+ }else if(x>wrapper.width()){
1647
+ _seq("on",39);
1648
+ }
1649
+ }
1650
+ }
1651
+ }
1652
+ }).bind("mouseup."+namespace+" dragend."+namespace,function(e){
1653
+ if(touchable){return;}
1654
+ if(action){action=0; _seq("off",null);}
1655
+ touchActive=false;
1656
+ });
1657
+ function _sel(){
1658
+ return window.getSelection ? window.getSelection().toString() :
1659
+ document.selection && document.selection.type!="Control" ? document.selection.createRange().text : 0;
1660
+ }
1661
+ function _seq(a,c,s){
1662
+ seq.type=s && action ? "stepped" : "stepless";
1663
+ seq.scrollAmount=10;
1664
+ _sequentialScroll($this,a,c,"mcsLinearOut",s ? 60 : null);
1665
+ }
1666
+ },
1667
+ /* -------------------- */
1668
+
1669
+
1670
+ /*
1671
+ MOUSE WHEEL EVENT
1672
+ scrolls content via mouse-wheel
1673
+ via mouse-wheel plugin (https://github.com/brandonaaron/jquery-mousewheel)
1674
+ */
1675
+ _mousewheel=function(){
1676
+ if(!$(this).data(pluginPfx)){return;} /* Check if the scrollbar is ready to use mousewheel events (issue: #185) */
1677
+ var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
1678
+ namespace=pluginPfx+"_"+d.idx,
1679
+ mCustomScrollBox=$("#mCSB_"+d.idx),
1680
+ mCSB_dragger=[$("#mCSB_"+d.idx+"_dragger_vertical"),$("#mCSB_"+d.idx+"_dragger_horizontal")],
1681
+ iframe=$("#mCSB_"+d.idx+"_container").find("iframe");
1682
+ if(iframe.length){
1683
+ iframe.each(function(){
1684
+ $(this).bind("load",function(){
1685
+ /* bind events on accessible iframes */
1686
+ if(_canAccessIFrame(this)){
1687
+ $(this.contentDocument || this.contentWindow.document).bind("mousewheel."+namespace,function(e,delta){
1688
+ _onMousewheel(e,delta);
1689
+ });
1690
+ }
1691
+ });
1692
+ });
1693
+ }
1694
+ mCustomScrollBox.bind("mousewheel."+namespace,function(e,delta){
1695
+ _onMousewheel(e,delta);
1696
+ });
1697
+ function _onMousewheel(e,delta){
1698
+ _stop($this);
1699
+ if(_disableMousewheel($this,e.target)){return;} /* disables mouse-wheel when hovering specific elements */
1700
+ var deltaFactor=o.mouseWheel.deltaFactor!=="auto" ? parseInt(o.mouseWheel.deltaFactor) : (oldIE && e.deltaFactor<100) ? 100 : e.deltaFactor || 100,
1701
+ dur=o.scrollInertia;
1702
+ if(o.axis==="x" || o.mouseWheel.axis==="x"){
1703
+ var dir="x",
1704
+ px=[Math.round(deltaFactor*d.scrollRatio.x),parseInt(o.mouseWheel.scrollAmount)],
1705
+ amount=o.mouseWheel.scrollAmount!=="auto" ? px[1] : px[0]>=mCustomScrollBox.width() ? mCustomScrollBox.width()*0.9 : px[0],
1706
+ contentPos=Math.abs($("#mCSB_"+d.idx+"_container")[0].offsetLeft),
1707
+ draggerPos=mCSB_dragger[1][0].offsetLeft,
1708
+ limit=mCSB_dragger[1].parent().width()-mCSB_dragger[1].width(),
1709
+ dlt=o.mouseWheel.axis==="y" ? (e.deltaY || delta) : e.deltaX;
1710
+ }else{
1711
+ var dir="y",
1712
+ px=[Math.round(deltaFactor*d.scrollRatio.y),parseInt(o.mouseWheel.scrollAmount)],
1713
+ amount=o.mouseWheel.scrollAmount!=="auto" ? px[1] : px[0]>=mCustomScrollBox.height() ? mCustomScrollBox.height()*0.9 : px[0],
1714
+ contentPos=Math.abs($("#mCSB_"+d.idx+"_container")[0].offsetTop),
1715
+ draggerPos=mCSB_dragger[0][0].offsetTop,
1716
+ limit=mCSB_dragger[0].parent().height()-mCSB_dragger[0].height(),
1717
+ dlt=e.deltaY || delta;
1718
+ }
1719
+ if((dir==="y" && !d.overflowed[0]) || (dir==="x" && !d.overflowed[1])){return;}
1720
+ if(o.mouseWheel.invert || e.webkitDirectionInvertedFromDevice){dlt=-dlt;}
1721
+ if(o.mouseWheel.normalizeDelta){dlt=dlt<0 ? -1 : 1;}
1722
+ if((dlt>0 && draggerPos!==0) || (dlt<0 && draggerPos!==limit) || o.mouseWheel.preventDefault){
1723
+ e.stopImmediatePropagation();
1724
+ e.preventDefault();
1725
+ }
1726
+ if(e.deltaFactor<5 && !o.mouseWheel.normalizeDelta){
1727
+ //very low deltaFactor values mean some kind of delta acceleration (e.g. osx trackpad), so adjusting scrolling accordingly
1728
+ amount=e.deltaFactor; dur=17;
1729
+ }
1730
+ _scrollTo($this,(contentPos-(dlt*amount)).toString(),{dir:dir,dur:dur});
1731
+ }
1732
+ },
1733
+ /* -------------------- */
1734
+
1735
+
1736
+ /* checks if iframe can be accessed */
1737
+ _canAccessIFrameCache=new Object(),
1738
+ _canAccessIFrame=function(iframe){
1739
+ var result=false,cacheKey=false,html=null;
1740
+ if(iframe===undefined){
1741
+ cacheKey="#empty";
1742
+ }else if($(iframe).attr("id")!==undefined){
1743
+ cacheKey=$(iframe).attr("id");
1744
+ }
1745
+ if(cacheKey!==false && _canAccessIFrameCache[cacheKey]!==undefined){
1746
+ return _canAccessIFrameCache[cacheKey];
1747
+ }
1748
+ if(!iframe){
1749
+ try{
1750
+ var doc=top.document;
1751
+ html=doc.body.innerHTML;
1752
+ }catch(err){/* do nothing */}
1753
+ result=(html!==null);
1754
+ }else{
1755
+ try{
1756
+ var doc=iframe.contentDocument || iframe.contentWindow.document;
1757
+ html=doc.body.innerHTML;
1758
+ }catch(err){/* do nothing */}
1759
+ result=(html!==null);
1760
+ }
1761
+ if(cacheKey!==false){_canAccessIFrameCache[cacheKey]=result;}
1762
+ return result;
1763
+ },
1764
+ /* -------------------- */
1765
+
1766
+
1767
+ /* switches iframe's pointer-events property (drag, mousewheel etc. over cross-domain iframes) */
1768
+ _iframe=function(evt){
1769
+ var el=this.find("iframe");
1770
+ if(!el.length){return;} /* check if content contains iframes */
1771
+ var val=!evt ? "none" : "auto";
1772
+ el.css("pointer-events",val); /* for IE11, iframe's display property should not be "block" */
1773
+ },
1774
+ /* -------------------- */
1775
+
1776
+
1777
+ /* disables mouse-wheel when hovering specific elements like select, datalist etc. */
1778
+ _disableMousewheel=function(el,target){
1779
+ var tag=target.nodeName.toLowerCase(),
1780
+ tags=el.data(pluginPfx).opt.mouseWheel.disableOver,
1781
+ /* elements that require focus */
1782
+ focusTags=["select","textarea"];
1783
+ return $.inArray(tag,tags) > -1 && !($.inArray(tag,focusTags) > -1 && !$(target).is(":focus"));
1784
+ },
1785
+ /* -------------------- */
1786
+
1787
+
1788
+ /*
1789
+ DRAGGER RAIL CLICK EVENT
1790
+ scrolls content via dragger rail
1791
+ */
1792
+ _draggerRail=function(){
1793
+ var $this=$(this),d=$this.data(pluginPfx),
1794
+ namespace=pluginPfx+"_"+d.idx,
1795
+ mCSB_container=$("#mCSB_"+d.idx+"_container"),
1796
+ wrapper=mCSB_container.parent(),
1797
+ mCSB_draggerContainer=$(".mCSB_"+d.idx+"_scrollbar ."+classes[12]),
1798
+ clickable;
1799
+ mCSB_draggerContainer.bind("mousedown."+namespace+" touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace,function(e){
1800
+ touchActive=true;
1801
+ if(!$(e.target).hasClass("mCSB_dragger")){clickable=1;}
1802
+ }).bind("touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace,function(e){
1803
+ touchActive=false;
1804
+ }).bind("click."+namespace,function(e){
1805
+ if(!clickable){return;}
1806
+ clickable=0;
1807
+ if($(e.target).hasClass(classes[12]) || $(e.target).hasClass("mCSB_draggerRail")){
1808
+ _stop($this);
1809
+ var el=$(this),mCSB_dragger=el.find(".mCSB_dragger");
1810
+ if(el.parent(".mCSB_scrollTools_horizontal").length>0){
1811
+ if(!d.overflowed[1]){return;}
1812
+ var dir="x",
1813
+ clickDir=e.pageX>mCSB_dragger.offset().left ? -1 : 1,
1814
+ to=Math.abs(mCSB_container[0].offsetLeft)-(clickDir*(wrapper.width()*0.9));
1815
+ }else{
1816
+ if(!d.overflowed[0]){return;}
1817
+ var dir="y",
1818
+ clickDir=e.pageY>mCSB_dragger.offset().top ? -1 : 1,
1819
+ to=Math.abs(mCSB_container[0].offsetTop)-(clickDir*(wrapper.height()*0.9));
1820
+ }
1821
+ _scrollTo($this,to.toString(),{dir:dir,scrollEasing:"mcsEaseInOut"});
1822
+ }
1823
+ });
1824
+ },
1825
+ /* -------------------- */
1826
+
1827
+
1828
+ /*
1829
+ FOCUS EVENT
1830
+ scrolls content via element focus (e.g. clicking an input, pressing TAB key etc.)
1831
+ */
1832
+ _focus=function(){
1833
+ var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
1834
+ namespace=pluginPfx+"_"+d.idx,
1835
+ mCSB_container=$("#mCSB_"+d.idx+"_container"),
1836
+ wrapper=mCSB_container.parent();
1837
+ mCSB_container.bind("focusin."+namespace,function(e){
1838
+ var el=$(document.activeElement),
1839
+ nested=mCSB_container.find(".mCustomScrollBox").length,
1840
+ dur=0;
1841
+ if(!el.is(o.advanced.autoScrollOnFocus)){return;}
1842
+ _stop($this);
1843
+ clearTimeout($this[0]._focusTimeout);
1844
+ $this[0]._focusTimer=nested ? (dur+17)*nested : 0;
1845
+ $this[0]._focusTimeout=setTimeout(function(){
1846
+ var to=[_childPos(el)[0],_childPos(el)[1]],
1847
+ contentPos=[mCSB_container[0].offsetTop,mCSB_container[0].offsetLeft],
1848
+ isVisible=[
1849
+ (contentPos[0]+to[0]>=0 && contentPos[0]+to[0]<wrapper.height()-el.outerHeight(false)),
1850
+ (contentPos[1]+to[1]>=0 && contentPos[0]+to[1]<wrapper.width()-el.outerWidth(false))
1851
+ ],
1852
+ overwrite=(o.axis==="yx" && !isVisible[0] && !isVisible[1]) ? "none" : "all";
1853
+ if(o.axis!=="x" && !isVisible[0]){
1854
+ _scrollTo($this,to[0].toString(),{dir:"y",scrollEasing:"mcsEaseInOut",overwrite:overwrite,dur:dur});
1855
+ }
1856
+ if(o.axis!=="y" && !isVisible[1]){
1857
+ _scrollTo($this,to[1].toString(),{dir:"x",scrollEasing:"mcsEaseInOut",overwrite:overwrite,dur:dur});
1858
+ }
1859
+ },$this[0]._focusTimer);
1860
+ });
1861
+ },
1862
+ /* -------------------- */
1863
+
1864
+
1865
+ /* sets content wrapper scrollTop/scrollLeft always to 0 */
1866
+ _wrapperScroll=function(){
1867
+ var $this=$(this),d=$this.data(pluginPfx),
1868
+ namespace=pluginPfx+"_"+d.idx,
1869
+ wrapper=$("#mCSB_"+d.idx+"_container").parent();
1870
+ wrapper.bind("scroll."+namespace,function(e){
1871
+ if(wrapper.scrollTop()!==0 || wrapper.scrollLeft()!==0){
1872
+ $(".mCSB_"+d.idx+"_scrollbar").css("visibility","hidden"); /* hide scrollbar(s) */
1873
+ }
1874
+ });
1875
+ },
1876
+ /* -------------------- */
1877
+
1878
+
1879
+ /*
1880
+ BUTTONS EVENTS
1881
+ scrolls content via up, down, left and right buttons
1882
+ */
1883
+ _buttons=function(){
1884
+ var $this=$(this),d=$this.data(pluginPfx),o=d.opt,seq=d.sequential,
1885
+ namespace=pluginPfx+"_"+d.idx,
1886
+ sel=".mCSB_"+d.idx+"_scrollbar",
1887
+ btn=$(sel+">a");
1888
+ btn.bind("contextmenu."+namespace,function(e){
1889
+ e.preventDefault(); //prevent right click
1890
+ }).bind("mousedown."+namespace+" touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace+" mouseup."+namespace+" touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace+" mouseout."+namespace+" pointerout."+namespace+" MSPointerOut."+namespace+" click."+namespace,function(e){
1891
+ e.preventDefault();
1892
+ if(!_mouseBtnLeft(e)){return;} /* left mouse button only */
1893
+ var btnClass=$(this).attr("class");
1894
+ seq.type=o.scrollButtons.scrollType;
1895
+ switch(e.type){
1896
+ case "mousedown": case "touchstart": case "pointerdown": case "MSPointerDown":
1897
+ if(seq.type==="stepped"){return;}
1898
+ touchActive=true;
1899
+ d.tweenRunning=false;
1900
+ _seq("on",btnClass);
1901
+ break;
1902
+ case "mouseup": case "touchend": case "pointerup": case "MSPointerUp":
1903
+ case "mouseout": case "pointerout": case "MSPointerOut":
1904
+ if(seq.type==="stepped"){return;}
1905
+ touchActive=false;
1906
+ if(seq.dir){_seq("off",btnClass);}
1907
+ break;
1908
+ case "click":
1909
+ if(seq.type!=="stepped" || d.tweenRunning){return;}
1910
+ _seq("on",btnClass);
1911
+ break;
1912
+ }
1913
+ function _seq(a,c){
1914
+ seq.scrollAmount=o.scrollButtons.scrollAmount;
1915
+ _sequentialScroll($this,a,c);
1916
+ }
1917
+ });
1918
+ },
1919
+ /* -------------------- */
1920
+
1921
+
1922
+ /*
1923
+ KEYBOARD EVENTS
1924
+ scrolls content via keyboard
1925
+ Keys: up arrow, down arrow, left arrow, right arrow, PgUp, PgDn, Home, End
1926
+ */
1927
+ _keyboard=function(){
1928
+ var $this=$(this),d=$this.data(pluginPfx),o=d.opt,seq=d.sequential,
1929
+ namespace=pluginPfx+"_"+d.idx,
1930
+ mCustomScrollBox=$("#mCSB_"+d.idx),
1931
+ mCSB_container=$("#mCSB_"+d.idx+"_container"),
1932
+ wrapper=mCSB_container.parent(),
1933
+ editables="input,textarea,select,datalist,keygen,[contenteditable='true']",
1934
+ iframe=mCSB_container.find("iframe"),
1935
+ events=["blur."+namespace+" keydown."+namespace+" keyup."+namespace];
1936
+ if(iframe.length){
1937
+ iframe.each(function(){
1938
+ $(this).bind("load",function(){
1939
+ /* bind events on accessible iframes */
1940
+ if(_canAccessIFrame(this)){
1941
+ $(this.contentDocument || this.contentWindow.document).bind(events[0],function(e){
1942
+ _onKeyboard(e);
1943
+ });
1944
+ }
1945
+ });
1946
+ });
1947
+ }
1948
+ mCustomScrollBox.attr("tabindex","0").bind(events[0],function(e){
1949
+ _onKeyboard(e);
1950
+ });
1951
+ function _onKeyboard(e){
1952
+ switch(e.type){
1953
+ case "blur":
1954
+ if(d.tweenRunning && seq.dir){_seq("off",null);}
1955
+ break;
1956
+ case "keydown": case "keyup":
1957
+ var code=e.keyCode ? e.keyCode : e.which,action="on";
1958
+ if((o.axis!=="x" && (code===38 || code===40)) || (o.axis!=="y" && (code===37 || code===39))){
1959
+ /* up (38), down (40), left (37), right (39) arrows */
1960
+ if(((code===38 || code===40) && !d.overflowed[0]) || ((code===37 || code===39) && !d.overflowed[1])){return;}
1961
+ if(e.type==="keyup"){action="off";}
1962
+ if(!$(document.activeElement).is(editables)){
1963
+ e.preventDefault();
1964
+ e.stopImmediatePropagation();
1965
+ _seq(action,code);
1966
+ }
1967
+ }else if(code===33 || code===34){
1968
+ /* PgUp (33), PgDn (34) */
1969
+ if(d.overflowed[0] || d.overflowed[1]){
1970
+ e.preventDefault();
1971
+ e.stopImmediatePropagation();
1972
+ }
1973
+ if(e.type==="keyup"){
1974
+ _stop($this);
1975
+ var keyboardDir=code===34 ? -1 : 1;
1976
+ if(o.axis==="x" || (o.axis==="yx" && d.overflowed[1] && !d.overflowed[0])){
1977
+ var dir="x",to=Math.abs(mCSB_container[0].offsetLeft)-(keyboardDir*(wrapper.width()*0.9));
1978
+ }else{
1979
+ var dir="y",to=Math.abs(mCSB_container[0].offsetTop)-(keyboardDir*(wrapper.height()*0.9));
1980
+ }
1981
+ _scrollTo($this,to.toString(),{dir:dir,scrollEasing:"mcsEaseInOut"});
1982
+ }
1983
+ }else if(code===35 || code===36){
1984
+ /* End (35), Home (36) */
1985
+ if(!$(document.activeElement).is(editables)){
1986
+ if(d.overflowed[0] || d.overflowed[1]){
1987
+ e.preventDefault();
1988
+ e.stopImmediatePropagation();
1989
+ }
1990
+ if(e.type==="keyup"){
1991
+ if(o.axis==="x" || (o.axis==="yx" && d.overflowed[1] && !d.overflowed[0])){
1992
+ var dir="x",to=code===35 ? Math.abs(wrapper.width()-mCSB_container.outerWidth(false)) : 0;
1993
+ }else{
1994
+ var dir="y",to=code===35 ? Math.abs(wrapper.height()-mCSB_container.outerHeight(false)) : 0;
1995
+ }
1996
+ _scrollTo($this,to.toString(),{dir:dir,scrollEasing:"mcsEaseInOut"});
1997
+ }
1998
+ }
1999
+ }
2000
+ break;
2001
+ }
2002
+ function _seq(a,c){
2003
+ seq.type=o.keyboard.scrollType;
2004
+ seq.scrollAmount=o.keyboard.scrollAmount;
2005
+ if(seq.type==="stepped" && d.tweenRunning){return;}
2006
+ _sequentialScroll($this,a,c);
2007
+ }
2008
+ }
2009
+ },
2010
+ /* -------------------- */
2011
+
2012
+
2013
+ /* scrolls content sequentially (used when scrolling via buttons, keyboard arrows etc.) */
2014
+ _sequentialScroll=function(el,action,trigger,e,s){
2015
+ var d=el.data(pluginPfx),o=d.opt,seq=d.sequential,
2016
+ mCSB_container=$("#mCSB_"+d.idx+"_container"),
2017
+ once=seq.type==="stepped" ? true : false,
2018
+ steplessSpeed=o.scrollInertia < 26 ? 26 : o.scrollInertia, /* 26/1.5=17 */
2019
+ steppedSpeed=o.scrollInertia < 1 ? 17 : o.scrollInertia;
2020
+ switch(action){
2021
+ case "on":
2022
+ seq.dir=[
2023
+ (trigger===classes[16] || trigger===classes[15] || trigger===39 || trigger===37 ? "x" : "y"),
2024
+ (trigger===classes[13] || trigger===classes[15] || trigger===38 || trigger===37 ? -1 : 1)
2025
+ ];
2026
+ _stop(el);
2027
+ if(_isNumeric(trigger) && seq.type==="stepped"){return;}
2028
+ _on(once);
2029
+ break;
2030
+ case "off":
2031
+ _off();
2032
+ if(once || (d.tweenRunning && seq.dir)){
2033
+ _on(true);
2034
+ }
2035
+ break;
2036
+ }
2037
+
2038
+ /* starts sequence */
2039
+ function _on(once){
2040
+ if(o.snapAmount){seq.scrollAmount=!(o.snapAmount instanceof Array) ? o.snapAmount : seq.dir[0]==="x" ? o.snapAmount[1] : o.snapAmount[0];} /* scrolling snapping */
2041
+ var c=seq.type!=="stepped", /* continuous scrolling */
2042
+ t=s ? s : !once ? 1000/60 : c ? steplessSpeed/1.5 : steppedSpeed, /* timer */
2043
+ m=!once ? 2.5 : c ? 7.5 : 40, /* multiplier */
2044
+ contentPos=[Math.abs(mCSB_container[0].offsetTop),Math.abs(mCSB_container[0].offsetLeft)],
2045
+ ratio=[d.scrollRatio.y>10 ? 10 : d.scrollRatio.y,d.scrollRatio.x>10 ? 10 : d.scrollRatio.x],
2046
+ amount=seq.dir[0]==="x" ? contentPos[1]+(seq.dir[1]*(ratio[1]*m)) : contentPos[0]+(seq.dir[1]*(ratio[0]*m)),
2047
+ px=seq.dir[0]==="x" ? contentPos[1]+(seq.dir[1]*parseInt(seq.scrollAmount)) : contentPos[0]+(seq.dir[1]*parseInt(seq.scrollAmount)),
2048
+ to=seq.scrollAmount!=="auto" ? px : amount,
2049
+ easing=e ? e : !once ? "mcsLinear" : c ? "mcsLinearOut" : "mcsEaseInOut",
2050
+ onComplete=!once ? false : true;
2051
+ if(once && t<17){
2052
+ to=seq.dir[0]==="x" ? contentPos[1] : contentPos[0];
2053
+ }
2054
+ _scrollTo(el,to.toString(),{dir:seq.dir[0],scrollEasing:easing,dur:t,onComplete:onComplete});
2055
+ if(once){
2056
+ seq.dir=false;
2057
+ return;
2058
+ }
2059
+ clearTimeout(seq.step);
2060
+ seq.step=setTimeout(function(){
2061
+ _on();
2062
+ },t);
2063
+ }
2064
+ /* stops sequence */
2065
+ function _off(){
2066
+ clearTimeout(seq.step);
2067
+ _delete(seq,"step");
2068
+ _stop(el);
2069
+ }
2070
+ },
2071
+ /* -------------------- */
2072
+
2073
+
2074
+ /* returns a yx array from value */
2075
+ _arr=function(val){
2076
+ var o=$(this).data(pluginPfx).opt,vals=[];
2077
+ if(typeof val==="function"){val=val();} /* check if the value is a single anonymous function */
2078
+ /* check if value is object or array, its length and create an array with yx values */
2079
+ if(!(val instanceof Array)){ /* object value (e.g. {y:"100",x:"100"}, 100 etc.) */
2080
+ vals[0]=val.y ? val.y : val.x || o.axis==="x" ? null : val;
2081
+ vals[1]=val.x ? val.x : val.y || o.axis==="y" ? null : val;
2082
+ }else{ /* array value (e.g. [100,100]) */
2083
+ vals=val.length>1 ? [val[0],val[1]] : o.axis==="x" ? [null,val[0]] : [val[0],null];
2084
+ }
2085
+ /* check if array values are anonymous functions */
2086
+ if(typeof vals[0]==="function"){vals[0]=vals[0]();}
2087
+ if(typeof vals[1]==="function"){vals[1]=vals[1]();}
2088
+ return vals;
2089
+ },
2090
+ /* -------------------- */
2091
+
2092
+
2093
+ /* translates values (e.g. "top", 100, "100px", "#id") to actual scroll-to positions */
2094
+ _to=function(val,dir){
2095
+ if(val==null || typeof val=="undefined"){return;}
2096
+ var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
2097
+ mCSB_container=$("#mCSB_"+d.idx+"_container"),
2098
+ wrapper=mCSB_container.parent(),
2099
+ t=typeof val;
2100
+ if(!dir){dir=o.axis==="x" ? "x" : "y";}
2101
+ var contentLength=dir==="x" ? mCSB_container.outerWidth(false)-wrapper.width() : mCSB_container.outerHeight(false)-wrapper.height(),
2102
+ contentPos=dir==="x" ? mCSB_container[0].offsetLeft : mCSB_container[0].offsetTop,
2103
+ cssProp=dir==="x" ? "left" : "top";
2104
+ switch(t){
2105
+ case "function": /* this currently is not used. Consider removing it */
2106
+ return val();
2107
+ break;
2108
+ case "object": /* js/jquery object */
2109
+ var obj=val.jquery ? val : $(val);
2110
+ if(!obj.length){return;}
2111
+ return dir==="x" ? _childPos(obj)[1] : _childPos(obj)[0];
2112
+ break;
2113
+ case "string": case "number":
2114
+ if(_isNumeric(val)){ /* numeric value */
2115
+ return Math.abs(val);
2116
+ }else if(val.indexOf("%")!==-1){ /* percentage value */
2117
+ return Math.abs(contentLength*parseInt(val)/100);
2118
+ }else if(val.indexOf("-=")!==-1){ /* decrease value */
2119
+ return Math.abs(contentPos-parseInt(val.split("-=")[1]));
2120
+ }else if(val.indexOf("+=")!==-1){ /* inrease value */
2121
+ var p=(contentPos+parseInt(val.split("+=")[1]));
2122
+ return p>=0 ? 0 : Math.abs(p);
2123
+ }else if(val.indexOf("px")!==-1 && _isNumeric(val.split("px")[0])){ /* pixels string value (e.g. "100px") */
2124
+ return Math.abs(val.split("px")[0]);
2125
+ }else{
2126
+ if(val==="top" || val==="left"){ /* special strings */
2127
+ return 0;
2128
+ }else if(val==="bottom"){
2129
+ return Math.abs(wrapper.height()-mCSB_container.outerHeight(false));
2130
+ }else if(val==="right"){
2131
+ return Math.abs(wrapper.width()-mCSB_container.outerWidth(false));
2132
+ }else if(val==="first" || val==="last"){
2133
+ var obj=mCSB_container.find(":"+val);
2134
+ return dir==="x" ? _childPos(obj)[1] : _childPos(obj)[0];
2135
+ }else{
2136
+ if($(val).length){ /* jquery selector */
2137
+ return dir==="x" ? _childPos($(val))[1] : _childPos($(val))[0];
2138
+ }else{ /* other values (e.g. "100em") */
2139
+ mCSB_container.css(cssProp,val);
2140
+ methods.update.call(null,$this[0]);
2141
+ return;
2142
+ }
2143
+ }
2144
+ }
2145
+ break;
2146
+ }
2147
+ },
2148
+ /* -------------------- */
2149
+
2150
+
2151
+ /* calls the update method automatically */
2152
+ _autoUpdate=function(rem){
2153
+ var $this=$(this),d=$this.data(pluginPfx),o=d.opt,
2154
+ mCSB_container=$("#mCSB_"+d.idx+"_container");
2155
+ if(rem){
2156
+ /*
2157
+ removes autoUpdate timer
2158
+ usage: _autoUpdate.call(this,"remove");
2159
+ */
2160
+ clearTimeout(mCSB_container[0].autoUpdate);
2161
+ _delete(mCSB_container[0],"autoUpdate");
2162
+ return;
2163
+ }
2164
+ upd();
2165
+ function upd(){
2166
+ clearTimeout(mCSB_container[0].autoUpdate);
2167
+ if($this.parents("html").length===0){
2168
+ /* check element in dom tree */
2169
+ $this=null;
2170
+ return;
2171
+ }
2172
+ mCSB_container[0].autoUpdate=setTimeout(function(){
2173
+ /* update on specific selector(s) length and size change */
2174
+ if(o.advanced.updateOnSelectorChange){
2175
+ d.poll.change.n=sizesSum();
2176
+ if(d.poll.change.n!==d.poll.change.o){
2177
+ d.poll.change.o=d.poll.change.n;
2178
+ doUpd(3);
2179
+ return;
2180
+ }
2181
+ }
2182
+ /* update on main element and scrollbar size changes */
2183
+ if(o.advanced.updateOnContentResize){
2184
+ d.poll.size.n=$this[0].scrollHeight+$this[0].scrollWidth+mCSB_container[0].offsetHeight+$this[0].offsetHeight+$this[0].offsetWidth;
2185
+ if(d.poll.size.n!==d.poll.size.o){
2186
+ d.poll.size.o=d.poll.size.n;
2187
+ doUpd(1);
2188
+ return;
2189
+ }
2190
+ }
2191
+ /* update on image load */
2192
+ if(o.advanced.updateOnImageLoad){
2193
+ if(!(o.advanced.updateOnImageLoad==="auto" && o.axis==="y")){ //by default, it doesn't run on vertical content
2194
+ d.poll.img.n=mCSB_container.find("img").length;
2195
+ if(d.poll.img.n!==d.poll.img.o){
2196
+ d.poll.img.o=d.poll.img.n;
2197
+ mCSB_container.find("img").each(function(){
2198
+ imgLoader(this);
2199
+ });
2200
+ return;
2201
+ }
2202
+ }
2203
+ }
2204
+ if(o.advanced.updateOnSelectorChange || o.advanced.updateOnContentResize || o.advanced.updateOnImageLoad){upd();}
2205
+ },o.advanced.autoUpdateTimeout);
2206
+ }
2207
+ /* a tiny image loader */
2208
+ function imgLoader(el){
2209
+ if($(el).hasClass(classes[2])){doUpd(); return;}
2210
+ var img=new Image();
2211
+ function createDelegate(contextObject,delegateMethod){
2212
+ return function(){return delegateMethod.apply(contextObject,arguments);}
2213
+ }
2214
+ function imgOnLoad(){
2215
+ this.onload=null;
2216
+ $(el).addClass(classes[2]);
2217
+ doUpd(2);
2218
+ }
2219
+ img.onload=createDelegate(img,imgOnLoad);
2220
+ img.src=el.src;
2221
+ }
2222
+ /* returns the total height and width sum of all elements matching the selector */
2223
+ function sizesSum(){
2224
+ if(o.advanced.updateOnSelectorChange===true){o.advanced.updateOnSelectorChange="*";}
2225
+ var total=0,sel=mCSB_container.find(o.advanced.updateOnSelectorChange);
2226
+ if(o.advanced.updateOnSelectorChange && sel.length>0){sel.each(function(){total+=this.offsetHeight+this.offsetWidth;});}
2227
+ return total;
2228
+ }
2229
+ /* calls the update method */
2230
+ function doUpd(cb){
2231
+ clearTimeout(mCSB_container[0].autoUpdate);
2232
+ methods.update.call(null,$this[0],cb);
2233
+ }
2234
+ },
2235
+ /* -------------------- */
2236
+
2237
+
2238
+ /* snaps scrolling to a multiple of a pixels number */
2239
+ _snapAmount=function(to,amount,offset){
2240
+ return (Math.round(to/amount)*amount-offset);
2241
+ },
2242
+ /* -------------------- */
2243
+
2244
+
2245
+ /* stops content and scrollbar animations */
2246
+ _stop=function(el){
2247
+ var d=el.data(pluginPfx),
2248
+ sel=$("#mCSB_"+d.idx+"_container,#mCSB_"+d.idx+"_container_wrapper,#mCSB_"+d.idx+"_dragger_vertical,#mCSB_"+d.idx+"_dragger_horizontal");
2249
+ sel.each(function(){
2250
+ _stopTween.call(this);
2251
+ });
2252
+ },
2253
+ /* -------------------- */
2254
+
2255
+
2256
+ /*
2257
+ ANIMATES CONTENT
2258
+ This is where the actual scrolling happens
2259
+ */
2260
+ _scrollTo=function(el,to,options){
2261
+ var d=el.data(pluginPfx),o=d.opt,
2262
+ defaults={
2263
+ trigger:"internal",
2264
+ dir:"y",
2265
+ scrollEasing:"mcsEaseOut",
2266
+ drag:false,
2267
+ dur:o.scrollInertia,
2268
+ overwrite:"all",
2269
+ callbacks:true,
2270
+ onStart:true,
2271
+ onUpdate:true,
2272
+ onComplete:true
2273
+ },
2274
+ options=$.extend(defaults,options),
2275
+ dur=[options.dur,(options.drag ? 0 : options.dur)],
2276
+ mCustomScrollBox=$("#mCSB_"+d.idx),
2277
+ mCSB_container=$("#mCSB_"+d.idx+"_container"),
2278
+ wrapper=mCSB_container.parent(),
2279
+ totalScrollOffsets=o.callbacks.onTotalScrollOffset ? _arr.call(el,o.callbacks.onTotalScrollOffset) : [0,0],
2280
+ totalScrollBackOffsets=o.callbacks.onTotalScrollBackOffset ? _arr.call(el,o.callbacks.onTotalScrollBackOffset) : [0,0];
2281
+ d.trigger=options.trigger;
2282
+ if(wrapper.scrollTop()!==0 || wrapper.scrollLeft()!==0){ /* always reset scrollTop/Left */
2283
+ $(".mCSB_"+d.idx+"_scrollbar").css("visibility","visible");
2284
+ wrapper.scrollTop(0).scrollLeft(0);
2285
+ }
2286
+ if(to==="_resetY" && !d.contentReset.y){
2287
+ /* callbacks: onOverflowYNone */
2288
+ if(_cb("onOverflowYNone")){o.callbacks.onOverflowYNone.call(el[0]);}
2289
+ d.contentReset.y=1;
2290
+ }
2291
+ if(to==="_resetX" && !d.contentReset.x){
2292
+ /* callbacks: onOverflowXNone */
2293
+ if(_cb("onOverflowXNone")){o.callbacks.onOverflowXNone.call(el[0]);}
2294
+ d.contentReset.x=1;
2295
+ }
2296
+ if(to==="_resetY" || to==="_resetX"){return;}
2297
+ if((d.contentReset.y || !el[0].mcs) && d.overflowed[0]){
2298
+ /* callbacks: onOverflowY */
2299
+ if(_cb("onOverflowY")){o.callbacks.onOverflowY.call(el[0]);}
2300
+ d.contentReset.x=null;
2301
+ }
2302
+ if((d.contentReset.x || !el[0].mcs) && d.overflowed[1]){
2303
+ /* callbacks: onOverflowX */
2304
+ if(_cb("onOverflowX")){o.callbacks.onOverflowX.call(el[0]);}
2305
+ d.contentReset.x=null;
2306
+ }
2307
+ if(o.snapAmount){ /* scrolling snapping */
2308
+ var snapAmount=!(o.snapAmount instanceof Array) ? o.snapAmount : options.dir==="x" ? o.snapAmount[1] : o.snapAmount[0];
2309
+ to=_snapAmount(to,snapAmount,o.snapOffset);
2310
+ }
2311
+ switch(options.dir){
2312
+ case "x":
2313
+ var mCSB_dragger=$("#mCSB_"+d.idx+"_dragger_horizontal"),
2314
+ property="left",
2315
+ contentPos=mCSB_container[0].offsetLeft,
2316
+ limit=[
2317
+ mCustomScrollBox.width()-mCSB_container.outerWidth(false),
2318
+ mCSB_dragger.parent().width()-mCSB_dragger.width()
2319
+ ],
2320
+ scrollTo=[to,to===0 ? 0 : (to/d.scrollRatio.x)],
2321
+ tso=totalScrollOffsets[1],
2322
+ tsbo=totalScrollBackOffsets[1],
2323
+ totalScrollOffset=tso>0 ? tso/d.scrollRatio.x : 0,
2324
+ totalScrollBackOffset=tsbo>0 ? tsbo/d.scrollRatio.x : 0;
2325
+ break;
2326
+ case "y":
2327
+ var mCSB_dragger=$("#mCSB_"+d.idx+"_dragger_vertical"),
2328
+ property="top",
2329
+ contentPos=mCSB_container[0].offsetTop,
2330
+ limit=[
2331
+ mCustomScrollBox.height()-mCSB_container.outerHeight(false),
2332
+ mCSB_dragger.parent().height()-mCSB_dragger.height()
2333
+ ],
2334
+ scrollTo=[to,to===0 ? 0 : (to/d.scrollRatio.y)],
2335
+ tso=totalScrollOffsets[0],
2336
+ tsbo=totalScrollBackOffsets[0],
2337
+ totalScrollOffset=tso>0 ? tso/d.scrollRatio.y : 0,
2338
+ totalScrollBackOffset=tsbo>0 ? tsbo/d.scrollRatio.y : 0;
2339
+ break;
2340
+ }
2341
+ if(scrollTo[1]<0 || (scrollTo[0]===0 && scrollTo[1]===0)){
2342
+ scrollTo=[0,0];
2343
+ }else if(scrollTo[1]>=limit[1]){
2344
+ scrollTo=[limit[0],limit[1]];
2345
+ }else{
2346
+ scrollTo[0]=-scrollTo[0];
2347
+ }
2348
+ if(!el[0].mcs){
2349
+ _mcs(); /* init mcs object (once) to make it available before callbacks */
2350
+ if(_cb("onInit")){o.callbacks.onInit.call(el[0]);} /* callbacks: onInit */
2351
+ }
2352
+ clearTimeout(mCSB_container[0].onCompleteTimeout);
2353
+ _tweenTo(mCSB_dragger[0],property,Math.round(scrollTo[1]),dur[1],options.scrollEasing);
2354
+ if(!d.tweenRunning && ((contentPos===0 && scrollTo[0]>=0) || (contentPos===limit[0] && scrollTo[0]<=limit[0]))){return;}
2355
+ _tweenTo(mCSB_container[0],property,Math.round(scrollTo[0]),dur[0],options.scrollEasing,options.overwrite,{
2356
+ onStart:function(){
2357
+ if(options.callbacks && options.onStart && !d.tweenRunning){
2358
+ /* callbacks: onScrollStart */
2359
+ if(_cb("onScrollStart")){_mcs(); o.callbacks.onScrollStart.call(el[0]);}
2360
+ d.tweenRunning=true;
2361
+ _onDragClasses(mCSB_dragger);
2362
+ d.cbOffsets=_cbOffsets();
2363
+ }
2364
+ },onUpdate:function(){
2365
+ if(options.callbacks && options.onUpdate){
2366
+ /* callbacks: whileScrolling */
2367
+ if(_cb("whileScrolling")){_mcs(); o.callbacks.whileScrolling.call(el[0]);}
2368
+ }
2369
+ },onComplete:function(){
2370
+ if(options.callbacks && options.onComplete){
2371
+ if(o.axis==="yx"){clearTimeout(mCSB_container[0].onCompleteTimeout);}
2372
+ var t=mCSB_container[0].idleTimer || 0;
2373
+ mCSB_container[0].onCompleteTimeout=setTimeout(function(){
2374
+ /* callbacks: onScroll, onTotalScroll, onTotalScrollBack */
2375
+ if(_cb("onScroll")){_mcs(); o.callbacks.onScroll.call(el[0]);}
2376
+ if(_cb("onTotalScroll") && scrollTo[1]>=limit[1]-totalScrollOffset && d.cbOffsets[0]){_mcs(); o.callbacks.onTotalScroll.call(el[0]);}
2377
+ if(_cb("onTotalScrollBack") && scrollTo[1]<=totalScrollBackOffset && d.cbOffsets[1]){_mcs(); o.callbacks.onTotalScrollBack.call(el[0]);}
2378
+ d.tweenRunning=false;
2379
+ mCSB_container[0].idleTimer=0;
2380
+ _onDragClasses(mCSB_dragger,"hide");
2381
+ },t);
2382
+ }
2383
+ }
2384
+ });
2385
+ /* checks if callback function exists */
2386
+ function _cb(cb){
2387
+ return d && o.callbacks[cb] && typeof o.callbacks[cb]==="function";
2388
+ }
2389
+ /* checks whether callback offsets always trigger */
2390
+ function _cbOffsets(){
2391
+ return [o.callbacks.alwaysTriggerOffsets || contentPos>=limit[0]+tso,o.callbacks.alwaysTriggerOffsets || contentPos<=-tsbo];
2392
+ }
2393
+ /*
2394
+ populates object with useful values for the user
2395
+ values:
2396
+ content: this.mcs.content
2397
+ content top position: this.mcs.top
2398
+ content left position: this.mcs.left
2399
+ dragger top position: this.mcs.draggerTop
2400
+ dragger left position: this.mcs.draggerLeft
2401
+ scrolling y percentage: this.mcs.topPct
2402
+ scrolling x percentage: this.mcs.leftPct
2403
+ scrolling direction: this.mcs.direction
2404
+ */
2405
+ function _mcs(){
2406
+ var cp=[mCSB_container[0].offsetTop,mCSB_container[0].offsetLeft], /* content position */
2407
+ dp=[mCSB_dragger[0].offsetTop,mCSB_dragger[0].offsetLeft], /* dragger position */
2408
+ cl=[mCSB_container.outerHeight(false),mCSB_container.outerWidth(false)], /* content length */
2409
+ pl=[mCustomScrollBox.height(),mCustomScrollBox.width()]; /* content parent length */
2410
+ el[0].mcs={
2411
+ content:mCSB_container, /* original content wrapper as jquery object */
2412
+ top:cp[0],left:cp[1],draggerTop:dp[0],draggerLeft:dp[1],
2413
+ topPct:Math.round((100*Math.abs(cp[0]))/(Math.abs(cl[0])-pl[0])),leftPct:Math.round((100*Math.abs(cp[1]))/(Math.abs(cl[1])-pl[1])),
2414
+ direction:options.dir
2415
+ };
2416
+ /*
2417
+ this refers to the original element containing the scrollbar(s)
2418
+ usage: this.mcs.top, this.mcs.leftPct etc.
2419
+ */
2420
+ }
2421
+ },
2422
+ /* -------------------- */
2423
+
2424
+
2425
+ /*
2426
+ CUSTOM JAVASCRIPT ANIMATION TWEEN
2427
+ Lighter and faster than jquery animate() and css transitions
2428
+ Animates top/left properties and includes easings
2429
+ */
2430
+ _tweenTo=function(el,prop,to,duration,easing,overwrite,callbacks){
2431
+ if(!el._mTween){el._mTween={top:{},left:{}};}
2432
+ var callbacks=callbacks || {},
2433
+ onStart=callbacks.onStart || function(){},onUpdate=callbacks.onUpdate || function(){},onComplete=callbacks.onComplete || function(){},
2434
+ startTime=_getTime(),_delay,progress=0,from=el.offsetTop,elStyle=el.style,_request,tobj=el._mTween[prop];
2435
+ if(prop==="left"){from=el.offsetLeft;}
2436
+ var diff=to-from;
2437
+ tobj.stop=0;
2438
+ if(overwrite!=="none"){_cancelTween();}
2439
+ _startTween();
2440
+ function _step(){
2441
+ if(tobj.stop){return;}
2442
+ if(!progress){onStart.call();}
2443
+ progress=_getTime()-startTime;
2444
+ _tween();
2445
+ if(progress>=tobj.time){
2446
+ tobj.time=(progress>tobj.time) ? progress+_delay-(progress-tobj.time) : progress+_delay-1;
2447
+ if(tobj.time<progress+1){tobj.time=progress+1;}
2448
+ }
2449
+ if(tobj.time<duration){tobj.id=_request(_step);}else{onComplete.call();}
2450
+ }
2451
+ function _tween(){
2452
+ if(duration>0){
2453
+ tobj.currVal=_ease(tobj.time,from,diff,duration,easing);
2454
+ elStyle[prop]=Math.round(tobj.currVal)+"px";
2455
+ }else{
2456
+ elStyle[prop]=to+"px";
2457
+ }
2458
+ onUpdate.call();
2459
+ }
2460
+ function _startTween(){
2461
+ _delay=1000/60;
2462
+ tobj.time=progress+_delay;
2463
+ _request=(!window.requestAnimationFrame) ? function(f){_tween(); return setTimeout(f,0.01);} : window.requestAnimationFrame;
2464
+ tobj.id=_request(_step);
2465
+ }
2466
+ function _cancelTween(){
2467
+ if(tobj.id==null){return;}
2468
+ if(!window.requestAnimationFrame){clearTimeout(tobj.id);
2469
+ }else{window.cancelAnimationFrame(tobj.id);}
2470
+ tobj.id=null;
2471
+ }
2472
+ function _ease(t,b,c,d,type){
2473
+ switch(type){
2474
+ case "linear": case "mcsLinear":
2475
+ return c*t/d + b;
2476
+ break;
2477
+ case "mcsLinearOut":
2478
+ t/=d; t--; return c * Math.sqrt(1 - t*t) + b;
2479
+ break;
2480
+ case "easeInOutSmooth":
2481
+ t/=d/2;
2482
+ if(t<1) return c/2*t*t + b;
2483
+ t--;
2484
+ return -c/2 * (t*(t-2) - 1) + b;
2485
+ break;
2486
+ case "easeInOutStrong":
2487
+ t/=d/2;
2488
+ if(t<1) return c/2 * Math.pow( 2, 10 * (t - 1) ) + b;
2489
+ t--;
2490
+ return c/2 * ( -Math.pow( 2, -10 * t) + 2 ) + b;
2491
+ break;
2492
+ case "easeInOut": case "mcsEaseInOut":
2493
+ t/=d/2;
2494
+ if(t<1) return c/2*t*t*t + b;
2495
+ t-=2;
2496
+ return c/2*(t*t*t + 2) + b;
2497
+ break;
2498
+ case "easeOutSmooth":
2499
+ t/=d; t--;
2500
+ return -c * (t*t*t*t - 1) + b;
2501
+ break;
2502
+ case "easeOutStrong":
2503
+ return c * ( -Math.pow( 2, -10 * t/d ) + 1 ) + b;
2504
+ break;
2505
+ case "easeOut": case "mcsEaseOut": default:
2506
+ var ts=(t/=d)*t,tc=ts*t;
2507
+ return b+c*(0.499999999999997*tc*ts + -2.5*ts*ts + 5.5*tc + -6.5*ts + 4*t);
2508
+ }
2509
+ }
2510
+ },
2511
+ /* -------------------- */
2512
+
2513
+
2514
+ /* returns current time */
2515
+ _getTime=function(){
2516
+ if(window.performance && window.performance.now){
2517
+ return window.performance.now();
2518
+ }else{
2519
+ if(window.performance && window.performance.webkitNow){
2520
+ return window.performance.webkitNow();
2521
+ }else{
2522
+ if(Date.now){return Date.now();}else{return new Date().getTime();}
2523
+ }
2524
+ }
2525
+ },
2526
+ /* -------------------- */
2527
+
2528
+
2529
+ /* stops a tween */
2530
+ _stopTween=function(){
2531
+ var el=this;
2532
+ if(!el._mTween){el._mTween={top:{},left:{}};}
2533
+ var props=["top","left"];
2534
+ for(var i=0; i<props.length; i++){
2535
+ var prop=props[i];
2536
+ if(el._mTween[prop].id){
2537
+ if(!window.requestAnimationFrame){clearTimeout(el._mTween[prop].id);
2538
+ }else{window.cancelAnimationFrame(el._mTween[prop].id);}
2539
+ el._mTween[prop].id=null;
2540
+ el._mTween[prop].stop=1;
2541
+ }
2542
+ }
2543
+ },
2544
+ /* -------------------- */
2545
+
2546
+
2547
+ /* deletes a property (avoiding the exception thrown by IE) */
2548
+ _delete=function(c,m){
2549
+ try{delete c[m];}catch(e){c[m]=null;}
2550
+ },
2551
+ /* -------------------- */
2552
+
2553
+
2554
+ /* detects left mouse button */
2555
+ _mouseBtnLeft=function(e){
2556
+ return !(e.which && e.which!==1);
2557
+ },
2558
+ /* -------------------- */
2559
+
2560
+
2561
+ /* detects if pointer type event is touch */
2562
+ _pointerTouch=function(e){
2563
+ var t=e.originalEvent.pointerType;
2564
+ return !(t && t!=="touch" && t!==2);
2565
+ },
2566
+ /* -------------------- */
2567
+
2568
+
2569
+ /* checks if value is numeric */
2570
+ _isNumeric=function(val){
2571
+ return !isNaN(parseFloat(val)) && isFinite(val);
2572
+ },
2573
+ /* -------------------- */
2574
+
2575
+
2576
+ /* returns element position according to content */
2577
+ _childPos=function(el){
2578
+ var p=el.parents(".mCSB_container");
2579
+ return [el.offset().top-p.offset().top,el.offset().left-p.offset().left];
2580
+ },
2581
+ /* -------------------- */
2582
+
2583
+
2584
+ /* checks if browser tab is hidden/inactive via Page Visibility API */
2585
+ _isTabHidden=function(){
2586
+ var prop=_getHiddenProp();
2587
+ if(!prop) return false;
2588
+ return document[prop];
2589
+ function _getHiddenProp(){
2590
+ var pfx=["webkit","moz","ms","o"];
2591
+ if("hidden" in document) return "hidden"; //natively supported
2592
+ for(var i=0; i<pfx.length; i++){ //prefixed
2593
+ if((pfx[i]+"Hidden") in document)
2594
+ return pfx[i]+"Hidden";
2595
+ }
2596
+ return null; //not supported
2597
+ }
2598
+ };
2599
+ /* -------------------- */
2600
+
2601
+
2602
+
2603
+
2604
+
2605
+ /*
2606
+ ----------------------------------------
2607
+ PLUGIN SETUP
2608
+ ----------------------------------------
2609
+ */
2610
+
2611
+ /* plugin constructor functions */
2612
+ $.fn[pluginNS]=function(method){ /* usage: $(selector).mCustomScrollbar(); */
2613
+ if(methods[method]){
2614
+ return methods[method].apply(this,Array.prototype.slice.call(arguments,1));
2615
+ }else if(typeof method==="object" || !method){
2616
+ return methods.init.apply(this,arguments);
2617
+ }else{
2618
+ $.error("Method "+method+" does not exist");
2619
+ }
2620
+ };
2621
+ $[pluginNS]=function(method){ /* usage: $.mCustomScrollbar(); */
2622
+ if(methods[method]){
2623
+ return methods[method].apply(this,Array.prototype.slice.call(arguments,1));
2624
+ }else if(typeof method==="object" || !method){
2625
+ return methods.init.apply(this,arguments);
2626
+ }else{
2627
+ $.error("Method "+method+" does not exist");
2628
+ }
2629
+ };
2630
+
2631
+ /*
2632
+ allow setting plugin default options.
2633
+ usage: $.mCustomScrollbar.defaults.scrollInertia=500;
2634
+ to apply any changed default options on default selectors (below), use inside document ready fn
2635
+ e.g.: $(document).ready(function(){ $.mCustomScrollbar.defaults.scrollInertia=500; });
2636
+ */
2637
+ $[pluginNS].defaults=defaults;
2638
+
2639
+ /*
2640
+ add window object (window.mCustomScrollbar)
2641
+ usage: if(window.mCustomScrollbar){console.log("custom scrollbar plugin loaded");}
2642
+ */
2643
+ window[pluginNS]=true;
2644
+
2645
+ $(window).bind("load",function(){
2646
+
2647
+ $(defaultSelector)[pluginNS](); /* add scrollbars automatically on default selector */
2648
+
2649
+ /* extend jQuery expressions */
2650
+ $.extend($.expr[":"],{
2651
+ /* checks if element is within scrollable viewport */
2652
+ mcsInView:$.expr[":"].mcsInView || function(el){
2653
+ var $el=$(el),content=$el.parents(".mCSB_container"),wrapper,cPos;
2654
+ if(!content.length){return;}
2655
+ wrapper=content.parent();
2656
+ cPos=[content[0].offsetTop,content[0].offsetLeft];
2657
+ return cPos[0]+_childPos($el)[0]>=0 && cPos[0]+_childPos($el)[0]<wrapper.height()-$el.outerHeight(false) &&
2658
+ cPos[1]+_childPos($el)[1]>=0 && cPos[1]+_childPos($el)[1]<wrapper.width()-$el.outerWidth(false);
2659
+ },
2660
+ /* checks if element or part of element is in view of scrollable viewport */
2661
+ mcsInSight:$.expr[":"].mcsInSight || function(el,i,m){
2662
+ var $el=$(el),elD,content=$el.parents(".mCSB_container"),wrapperView,pos,wrapperViewPct,
2663
+ pctVals=m[3]==="exact" ? [[1,0],[1,0]] : [[0.9,0.1],[0.6,0.4]];
2664
+ if(!content.length){return;}
2665
+ elD=[$el.outerHeight(false),$el.outerWidth(false)];
2666
+ pos=[content[0].offsetTop+_childPos($el)[0],content[0].offsetLeft+_childPos($el)[1]];
2667
+ wrapperView=[content.parent()[0].offsetHeight,content.parent()[0].offsetWidth];
2668
+ wrapperViewPct=[elD[0]<wrapperView[0] ? pctVals[0] : pctVals[1],elD[1]<wrapperView[1] ? pctVals[0] : pctVals[1]];
2669
+ return pos[0]-(wrapperView[0]*wrapperViewPct[0][0])<0 && pos[0]+elD[0]-(wrapperView[0]*wrapperViewPct[0][1])>=0 &&
2670
+ pos[1]-(wrapperView[1]*wrapperViewPct[1][0])<0 && pos[1]+elD[1]-(wrapperView[1]*wrapperViewPct[1][1])>=0;
2671
+ },
2672
+ /* checks if element is overflowed having visible scrollbar(s) */
2673
+ mcsOverflow:$.expr[":"].mcsOverflow || function(el){
2674
+ var d=$(el).data(pluginPfx);
2675
+ if(!d){return;}
2676
+ return d.overflowed[0] || d.overflowed[1];
2677
+ }
2678
+ });
2679
+
2680
+ });
2681
+
2682
+ }))
2683
+ }));
assets/js/um-scrollbar.min.js CHANGED
@@ -1 +1 @@
1
- !function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e:e(jQuery)}(function(h){function t(e){var t=e||window.event,o=v.call(arguments,1),a=0,n=0,i=0,r=0,l=0,s=0;if((e=h.event.fix(t)).type="mousewheel","detail"in t&&(i=-1*t.detail),"wheelDelta"in t&&(i=t.wheelDelta),"wheelDeltaY"in t&&(i=t.wheelDeltaY),"wheelDeltaX"in t&&(n=-1*t.wheelDeltaX),"axis"in t&&t.axis===t.HORIZONTAL_AXIS&&(n=-1*i,i=0),a=0===i?n:i,"deltaY"in t&&(a=i=-1*t.deltaY),"deltaX"in t&&(n=t.deltaX,0===i&&(a=-1*n)),0!==i||0!==n){if(1===t.deltaMode){var c=h.data(this,"mousewheel-line-height");a*=c,i*=c,n*=c}else if(2===t.deltaMode){var d=h.data(this,"mousewheel-page-height");a*=d,i*=d,n*=d}if(r=Math.max(Math.abs(i),Math.abs(n)),(!g||r<g)&&(m(t,g=r)&&(g/=40)),m(t,r)&&(a/=40,n/=40,i/=40),a=Math[1<=a?"floor":"ceil"](a/g),n=Math[1<=n?"floor":"ceil"](n/g),i=Math[1<=i?"floor":"ceil"](i/g),x.settings.normalizeOffset&&this.getBoundingClientRect){var u=this.getBoundingClientRect();l=e.clientX-u.left,s=e.clientY-u.top}return e.deltaX=n,e.deltaY=i,e.deltaFactor=g,e.offsetX=l,e.offsetY=s,e.deltaMode=0,o.unshift(e,a,n,i),p&&clearTimeout(p),p=setTimeout(f,200),(h.event.dispatch||h.event.handle).apply(this,o)}}function f(){g=null}function m(e,t){return x.settings.adjustOldDeltas&&"mousewheel"===e.type&&t%120==0}var p,g,e=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],o="onwheel"in document||9<=document.documentMode?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],v=Array.prototype.slice;if(h.event.fixHooks)for(var a=e.length;a;)h.event.fixHooks[e[--a]]=h.event.mouseHooks;var x=h.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var e=o.length;e;)this.addEventListener(o[--e],t,!1);else this.onmousewheel=t;h.data(this,"mousewheel-line-height",x.getLineHeight(this)),h.data(this,"mousewheel-page-height",x.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var e=o.length;e;)this.removeEventListener(o[--e],t,!1);else this.onmousewheel=null;h.removeData(this,"mousewheel-line-height"),h.removeData(this,"mousewheel-page-height")},getLineHeight:function(e){var t=h(e),o=t["offsetParent"in h.fn?"offsetParent":"parent"]();return o.length||(o=h("body")),parseInt(o.css("fontSize"),10)||parseInt(t.css("fontSize"),10)||16},getPageHeight:function(e){return h(e).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};h.fn.extend({mousewheel:function(e){return e?this.bind("mousewheel",e):this.trigger("mousewheel")},unmousewheel:function(e){return this.unbind("mousewheel",e)}})}),function(e){"undefined"!=typeof module&&module.exports?module.exports=e:e(jQuery,window,document)}(function(E){var L,f,W,a,n,l,i,p,A,w,v,c,s,d,u,h,m,g,x,_,S,b,C,T,y,B,M,k,O,P,r,I,D,R,z,H,X,Y,U,j,q,F,N,V,Q,Z,G,J,K,$,ee,te,oe,ae,ne,e,t,o;e="function"==typeof define&&define.amd,t="undefined"!=typeof module&&module.exports,o="https:"==document.location.protocol?"https:":"http:",e||(t?require("jquery-mousewheel")(E):E.event.special.mousewheel||E("head").append(decodeURI("%3Cscript src="+o+"//cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.12/jquery.mousewheel.min.js%3E%3C/script%3E"))),f="mCustomScrollbar",W="mCS",a=".mCustomScrollbar",n={setTop:0,setLeft:0,axis:"y",scrollbarPosition:"inside",scrollInertia:950,autoDraggerLength:!0,alwaysShowScrollbar:0,snapOffset:0,mouseWheel:{enable:!0,scrollAmount:"auto",axis:"y",deltaFactor:"auto",disableOver:["select","option","keygen","datalist","textarea"]},scrollButtons:{scrollType:"stepless",scrollAmount:"auto"},keyboard:{enable:!0,scrollType:"stepless",scrollAmount:"auto"},contentTouchScroll:25,advanced:{autoScrollOnFocus:"input,textarea,select,button,datalist,keygen,a[tabindex],area,object,[contenteditable='true']",updateOnContentResize:!0,updateOnImageLoad:!0},theme:"light",callbacks:{onTotalScrollOffset:0,onTotalScrollBackOffset:0,alwaysTriggerOffsets:!0}},l=0,i={},p=window.attachEvent&&!window.addEventListener?1:0,A=!1,w=["mCSB_dragger_onDrag","mCSB_scrollTools_onDrag","mCS_img_loaded","mCS_disabled","mCS_destroyed","mCS_no_scrollbar","mCS-autoHide","mCS-dir-rtl","mCS_no_scrollbar_y","mCS_no_scrollbar_x","mCS_y_hidden","mCS_x_hidden","mCSB_draggerContainer","mCSB_buttonUp","mCSB_buttonDown","mCSB_buttonLeft","mCSB_buttonRight"],v={init:function(r){var r=E.extend(!0,{},n,r),e=c.call(this);if(r.live){var t=r.liveSelector||this.selector||a,o=E(t);if("off"===r.live)return void d(t);i[t]=setTimeout(function(){o.mCustomScrollbar(r),"once"===r.live&&o.length&&d(t)},500)}else d(t);return r.setWidth=r.set_width?r.set_width:r.setWidth,r.setHeight=r.set_height?r.set_height:r.setHeight,r.axis=r.horizontalScroll?"x":u(r.axis),r.scrollInertia=0<r.scrollInertia&&r.scrollInertia<17?17:r.scrollInertia,"object"!=typeof r.mouseWheel&&1==r.mouseWheel&&(r.mouseWheel={enable:!0,scrollAmount:"auto",axis:"y",preventDefault:!1,deltaFactor:"auto",normalizeDelta:!1,invert:!1}),r.mouseWheel.scrollAmount=r.mouseWheelPixels?r.mouseWheelPixels:r.mouseWheel.scrollAmount,r.mouseWheel.normalizeDelta=r.advanced.normalizeMouseWheelDelta?r.advanced.normalizeMouseWheelDelta:r.mouseWheel.normalizeDelta,r.scrollButtons.scrollType=h(r.scrollButtons.scrollType),s(r),E(e).each(function(){var e=E(this);if(!e.data(W)){e.data(W,{idx:++l,opt:r,scrollRatio:{y:null,x:null},overflowed:null,contentReset:{y:null,x:null},bindEvents:!1,tweenRunning:!1,sequential:{},langDir:e.css("direction"),cbOffsets:null,trigger:null});var t=e.data(W),o=t.opt,a=e.data("mcs-axis"),n=e.data("mcs-scrollbar-position"),i=e.data("mcs-theme");a&&(o.axis=a),n&&(o.scrollbarPosition=n),i&&(o.theme=i,s(o)),m.call(this),E("#mCSB_"+t.idx+"_container img:not(."+w[2]+")").addClass(w[2]),v.update.call(null,e)}})},update:function(e,r){var t=e||c.call(this);return E(t).each(function(){var e=E(this);if(e.data(W)){var t=e.data(W),o=t.opt,a=E("#mCSB_"+t.idx+"_container"),n=[E("#mCSB_"+t.idx+"_dragger_vertical"),E("#mCSB_"+t.idx+"_dragger_horizontal")];if(!a.length)return;t.tweenRunning&&Z(e),e.hasClass(w[3])&&e.removeClass(w[3]),e.hasClass(w[4])&&e.removeClass(w[4]),S.call(this),x.call(this),"y"===o.axis||o.advanced.autoExpandHorizontalScroll||a.css("width",g(a.children())),t.overflowed=y.call(this),O.call(this),o.autoDraggerLength&&b.call(this),C.call(this),M.call(this);var i=[Math.abs(a[0].offsetTop),Math.abs(a[0].offsetLeft)];"x"!==o.axis&&(t.overflowed[0]?n[0].height()>n[0].parent().height()?B.call(this):(G(e,i[0].toString(),{dir:"y",dur:0,overwrite:"none"}),t.contentReset.y=null):(B.call(this),"y"===o.axis?k.call(this):"yx"===o.axis&&t.overflowed[1]&&G(e,i[1].toString(),{dir:"x",dur:0,overwrite:"none"}))),"y"!==o.axis&&(t.overflowed[1]?n[1].width()>n[1].parent().width()?B.call(this):(G(e,i[1].toString(),{dir:"x",dur:0,overwrite:"none"}),t.contentReset.x=null):(B.call(this),"x"===o.axis?k.call(this):"yx"===o.axis&&t.overflowed[0]&&G(e,i[0].toString(),{dir:"y",dur:0,overwrite:"none"}))),r&&t&&(2===r&&o.callbacks.onImageLoad&&"function"==typeof o.callbacks.onImageLoad?o.callbacks.onImageLoad.call(this):3===r&&o.callbacks.onSelectorChange&&"function"==typeof o.callbacks.onSelectorChange?o.callbacks.onSelectorChange.call(this):o.callbacks.onUpdate&&"function"==typeof o.callbacks.onUpdate&&o.callbacks.onUpdate.call(this)),Q.call(this)}})},scrollTo:function(l,s){if(void 0!==l&&null!=l){var e=c.call(this);return E(e).each(function(){var e=E(this);if(e.data(W)){var t=e.data(W),o=t.opt,a={trigger:"external",scrollInertia:o.scrollInertia,scrollEasing:"mcsEaseInOut",moveDragger:!1,timeout:60,callbacks:!0,onStart:!0,onUpdate:!0,onComplete:!0},n=E.extend(!0,{},a,s),i=N.call(this,l),r=0<n.scrollInertia&&n.scrollInertia<17?17:n.scrollInertia;i[0]=V.call(this,i[0],"y"),i[1]=V.call(this,i[1],"x"),n.moveDragger&&(i[0]*=t.scrollRatio.y,i[1]*=t.scrollRatio.x),n.dur=r,setTimeout(function(){null!==i[0]&&void 0!==i[0]&&"x"!==o.axis&&t.overflowed[0]&&(n.dir="y",n.overwrite="all",G(e,i[0].toString(),n)),null!==i[1]&&void 0!==i[1]&&"y"!==o.axis&&t.overflowed[1]&&(n.dir="x",n.overwrite="none",G(e,i[1].toString(),n))},n.timeout)}})}},stop:function(){var e=c.call(this);return E(e).each(function(){var e=E(this);e.data(W)&&Z(e)})},disable:function(t){var e=c.call(this);return E(e).each(function(){var e=E(this);e.data(W)&&(e.data(W),Q.call(this,"remove"),k.call(this),t&&B.call(this),O.call(this,!0),e.addClass(w[3]))})},destroy:function(){var r=c.call(this);return E(r).each(function(){var e=E(this);if(e.data(W)){var t=e.data(W),o=t.opt,a=E("#mCSB_"+t.idx),n=E("#mCSB_"+t.idx+"_container"),i=E(".mCSB_"+t.idx+"_scrollbar");o.live&&d(o.liveSelector||E(r).selector),Q.call(this,"remove"),k.call(this),B.call(this),e.removeData(W),ee(this,"mcs"),i.remove(),n.find("img."+w[2]).removeClass(w[2]),a.replaceWith(n.contents()),e.removeClass(f+" _"+W+"_"+t.idx+" "+w[6]+" "+w[7]+" "+w[5]+" "+w[3]).addClass(w[4])}})}},c=function(){return"object"!=typeof E(this)||E(this).length<1?a:this},s=function(e){e.autoDraggerLength=!(-1<E.inArray(e.theme,["rounded","rounded-dark","rounded-dots","rounded-dots-dark"]))&&e.autoDraggerLength,e.autoExpandScrollbar=!(-1<E.inArray(e.theme,["rounded-dots","rounded-dots-dark","3d","3d-dark","3d-thick","3d-thick-dark","inset","inset-dark","inset-2","inset-2-dark","inset-3","inset-3-dark"]))&&e.autoExpandScrollbar,e.scrollButtons.enable=!(-1<E.inArray(e.theme,["minimal","minimal-dark"]))&&e.scrollButtons.enable,e.autoHideScrollbar=-1<E.inArray(e.theme,["minimal","minimal-dark"])||e.autoHideScrollbar,e.scrollbarPosition=-1<E.inArray(e.theme,["minimal","minimal-dark"])?"outside":e.scrollbarPosition},d=function(e){i[e]&&(clearTimeout(i[e]),ee(i,e))},u=function(e){return"yx"===e||"xy"===e||"auto"===e?"yx":"x"===e||"horizontal"===e?"x":"y"},h=function(e){return"stepped"===e||"pixels"===e||"step"===e||"click"===e?"stepped":"stepless"},m=function(){var e=E(this),t=e.data(W),o=t.opt,a=o.autoExpandScrollbar?" "+w[1]+"_expand":"",n=["<div id='mCSB_"+t.idx+"_scrollbar_vertical' class='mCSB_scrollTools mCSB_"+t.idx+"_scrollbar mCS-"+o.theme+" mCSB_scrollTools_vertical"+a+"'><div class='"+w[12]+"'><div id='mCSB_"+t.idx+"_dragger_vertical' class='mCSB_dragger' style='position:absolute;' oncontextmenu='return false;'><div class='mCSB_dragger_bar' /></div><div class='mCSB_draggerRail' /></div></div>","<div id='mCSB_"+t.idx+"_scrollbar_horizontal' class='mCSB_scrollTools mCSB_"+t.idx+"_scrollbar mCS-"+o.theme+" mCSB_scrollTools_horizontal"+a+"'><div class='"+w[12]+"'><div id='mCSB_"+t.idx+"_dragger_horizontal' class='mCSB_dragger' style='position:absolute;' oncontextmenu='return false;'><div class='mCSB_dragger_bar' /></div><div class='mCSB_draggerRail' /></div></div>"],i="yx"===o.axis?"mCSB_vertical_horizontal":"x"===o.axis?"mCSB_horizontal":"mCSB_vertical",r="yx"===o.axis?n[0]+n[1]:"x"===o.axis?n[1]:n[0],l="yx"===o.axis?"<div id='mCSB_"+t.idx+"_container_wrapper' class='mCSB_container_wrapper' />":"",s=o.autoHideScrollbar?" "+w[6]:"",c="x"!==o.axis&&"rtl"===t.langDir?" "+w[7]:"";o.setWidth&&e.css("width",o.setWidth),o.setHeight&&e.css("height",o.setHeight),o.setLeft="y"!==o.axis&&"rtl"===t.langDir?"989999px":o.setLeft,e.addClass(f+" _"+W+"_"+t.idx+s+c).wrapInner("<div id='mCSB_"+t.idx+"' class='mCustomScrollBox mCS-"+o.theme+" "+i+"'><div id='mCSB_"+t.idx+"_container' class='mCSB_container' style='position:relative; top:"+o.setTop+"; left:"+o.setLeft+";' dir="+t.langDir+" /></div>");var d=E("#mCSB_"+t.idx),u=E("#mCSB_"+t.idx+"_container");"y"===o.axis||o.advanced.autoExpandHorizontalScroll||u.css("width",g(u.children())),"outside"===o.scrollbarPosition?("static"===e.css("position")&&e.css("position","relative"),e.css("overflow","visible"),d.addClass("mCSB_outside").after(r)):(d.addClass("mCSB_inside").append(r),u.wrap(l)),_.call(this);var h=[E("#mCSB_"+t.idx+"_dragger_vertical"),E("#mCSB_"+t.idx+"_dragger_horizontal")];h[0].css("min-height",h[0].height()),h[1].css("min-width",h[1].width())},g=function(e){return Math.max.apply(Math,e.map(function(){return E(this).outerWidth(!0)}).get())},x=function(){var e=E(this),t=e.data(W),o=t.opt,a=E("#mCSB_"+t.idx+"_container");o.advanced.autoExpandHorizontalScroll&&"y"!==o.axis&&a.css({position:"absolute",width:"auto"}).wrap("<div class='mCSB_h_wrapper' style='position:relative; left:0; width:999999px;' />").css({width:Math.ceil(a[0].getBoundingClientRect().right+.4)-Math.floor(a[0].getBoundingClientRect().left),position:"relative"}).unwrap()},_=function(){var e=E(this),t=e.data(W),o=t.opt,a=E(".mCSB_"+t.idx+"_scrollbar:first"),n=ae(o.scrollButtons.tabindex)?"tabindex='"+o.scrollButtons.tabindex+"'":"",i=["<a href='#' class='"+w[13]+"' oncontextmenu='return false;' "+n+" />","<a href='#' class='"+w[14]+"' oncontextmenu='return false;' "+n+" />","<a href='#' class='"+w[15]+"' oncontextmenu='return false;' "+n+" />","<a href='#' class='"+w[16]+"' oncontextmenu='return false;' "+n+" />"],r=["x"===o.axis?i[2]:i[0],"x"===o.axis?i[3]:i[1],i[2],i[3]];o.scrollButtons.enable&&a.prepend(r[0]).append(r[1]).next(".mCSB_scrollTools").prepend(r[2]).append(r[3])},S=function(){var e=E(this),t=e.data(W),o=E("#mCSB_"+t.idx),a=e.css("max-height")||"none",n=-1!==a.indexOf("%"),i=e.css("box-sizing");if("none"!==a){var r=n?e.parent().height()*parseInt(a)/100:parseInt(a);"border-box"===i&&(r-=e.innerHeight()-e.height()+(e.outerHeight()-e.innerHeight())),o.css("max-height",Math.round(r))}},b=function(){var e=E(this),t=e.data(W),o=E("#mCSB_"+t.idx),a=E("#mCSB_"+t.idx+"_container"),n=[E("#mCSB_"+t.idx+"_dragger_vertical"),E("#mCSB_"+t.idx+"_dragger_horizontal")],i=[o.height()/a.outerHeight(!1),o.width()/a.outerWidth(!1)],r=[parseInt(n[0].css("min-height")),Math.round(i[0]*n[0].parent().height()),parseInt(n[1].css("min-width")),Math.round(i[1]*n[1].parent().width())],l=p&&r[1]<r[0]?r[0]:r[1],s=p&&r[3]<r[2]?r[2]:r[3];n[0].css({height:l,"max-height":n[0].parent().height()-10}).find(".mCSB_dragger_bar").css({"line-height":r[0]+"px"}),n[1].css({width:s,"max-width":n[1].parent().width()-10})},C=function(){var e=E(this),t=e.data(W),o=E("#mCSB_"+t.idx),a=E("#mCSB_"+t.idx+"_container"),n=[E("#mCSB_"+t.idx+"_dragger_vertical"),E("#mCSB_"+t.idx+"_dragger_horizontal")],i=[a.outerHeight(!1)-o.height(),a.outerWidth(!1)-o.width()],r=[i[0]/(n[0].parent().height()-n[0].height()),i[1]/(n[1].parent().width()-n[1].width())];t.scrollRatio={y:r[0],x:r[1]}},T=function(e,t,o){var a=o?w[0]+"_expanded":"",n=e.closest(".mCSB_scrollTools");"active"===t?(e.toggleClass(w[0]+" "+a),n.toggleClass(w[1]),e[0]._draggable=e[0]._draggable?0:1):e[0]._draggable||("hide"===t?(e.removeClass(w[0]),n.removeClass(w[1])):(e.addClass(w[0]),n.addClass(w[1])))},y=function(){var e=E(this),t=e.data(W),o=E("#mCSB_"+t.idx),a=E("#mCSB_"+t.idx+"_container"),n=null==t.overflowed?a.height():a.outerHeight(!1),i=null==t.overflowed?a.width():a.outerWidth(!1);return[n>o.height(),i>o.width()]},B=function(){var e=E(this),t=e.data(W),o=t.opt,a=E("#mCSB_"+t.idx),n=E("#mCSB_"+t.idx+"_container"),i=[E("#mCSB_"+t.idx+"_dragger_vertical"),E("#mCSB_"+t.idx+"_dragger_horizontal")];if(Z(e),("x"!==o.axis&&!t.overflowed[0]||"y"===o.axis&&t.overflowed[0])&&(i[0].add(n).css("top",0),G(e,"_resetY")),"y"!==o.axis&&!t.overflowed[1]||"x"===o.axis&&t.overflowed[1]){var r=dx=0;"rtl"===t.langDir&&(r=a.width()-n.outerWidth(!1),dx=Math.abs(r/t.scrollRatio.x)),n.css("left",r),i[1].css("left",dx),G(e,"_resetX")}},M=function(){var t,o=E(this),e=o.data(W),a=e.opt;e.bindEvents||(r.call(this),a.contentTouchScroll&&I.call(this),D.call(this),a.mouseWheel.enable&&function e(){t=setTimeout(function(){E.event.special.mousewheel?(clearTimeout(t),R.call(o[0])):e()},100)}(),X.call(this),U.call(this),a.advanced.autoScrollOnFocus&&Y.call(this),a.scrollButtons.enable&&j.call(this),a.keyboard.enable&&q.call(this),e.bindEvents=!0)},k=function(){var e=E(this),t=e.data(W),o=t.opt,a=W+"_"+t.idx,n=".mCSB_"+t.idx+"_scrollbar",i=E("#mCSB_"+t.idx+",#mCSB_"+t.idx+"_container,#mCSB_"+t.idx+"_container_wrapper,"+n+" ."+w[12]+",#mCSB_"+t.idx+"_dragger_vertical,#mCSB_"+t.idx+"_dragger_horizontal,"+n+">a"),r=E("#mCSB_"+t.idx+"_container");o.advanced.releaseDraggableSelectors&&i.add(E(o.advanced.releaseDraggableSelectors)),t.bindEvents&&(E(document).unbind("."+a),i.each(function(){E(this).unbind("."+a)}),clearTimeout(e[0]._focusTimeout),ee(e[0],"_focusTimeout"),clearTimeout(t.sequential.step),ee(t.sequential,"step"),clearTimeout(r[0].onCompleteTimeout),ee(r[0],"onCompleteTimeout"),t.bindEvents=!1)},O=function(e){var t=E(this),o=t.data(W),a=o.opt,n=E("#mCSB_"+o.idx+"_container_wrapper"),i=n.length?n:E("#mCSB_"+o.idx+"_container"),r=[E("#mCSB_"+o.idx+"_scrollbar_vertical"),E("#mCSB_"+o.idx+"_scrollbar_horizontal")],l=[r[0].find(".mCSB_dragger"),r[1].find(".mCSB_dragger")];"x"!==a.axis&&(o.overflowed[0]&&!e?(r[0].add(l[0]).add(r[0].children("a")).css("display","block"),i.removeClass(w[8]+" "+w[10])):(a.alwaysShowScrollbar?(2!==a.alwaysShowScrollbar&&l[0].css("display","none"),i.removeClass(w[10])):(r[0].css("display","none"),i.addClass(w[10])),i.addClass(w[8]))),"y"!==a.axis&&(o.overflowed[1]&&!e?(r[1].add(l[1]).add(r[1].children("a")).css("display","block"),i.removeClass(w[9]+" "+w[11])):(a.alwaysShowScrollbar?(2!==a.alwaysShowScrollbar&&l[1].css("display","none"),i.removeClass(w[11])):(r[1].css("display","none"),i.addClass(w[11])),i.addClass(w[9]))),o.overflowed[0]||o.overflowed[1]?t.removeClass(w[5]):t.addClass(w[5])},P=function(e){var t=e.type;switch(t){case"pointerdown":case"MSPointerDown":case"pointermove":case"MSPointerMove":case"pointerup":case"MSPointerUp":return e.target.ownerDocument!==document?[e.originalEvent.screenY,e.originalEvent.screenX,!1]:[e.originalEvent.pageY,e.originalEvent.pageX,!1];case"touchstart":case"touchmove":case"touchend":var o=e.originalEvent.touches[0]||e.originalEvent.changedTouches[0],a=e.originalEvent.touches.length||e.originalEvent.changedTouches.length;return e.target.ownerDocument!==document?[o.screenY,o.screenX,1<a]:[o.pageY,o.pageX,1<a];default:return[e.pageY,e.pageX,!1]}},r=function(){function r(e){var t=m.find("iframe");if(t.length){var o=e?"auto":"none";t.css("pointer-events",o)}}function n(e,t,o,a){if(m[0].idleTimer=h.scrollInertia<233?250:0,l.attr("id")===f[1])var n="x",i=(l[0].offsetLeft-t+a)*u.scrollRatio.x;else var n="y",i=(l[0].offsetTop-e+o)*u.scrollRatio.y;G(d,i.toString(),{dir:n,drag:!0})}var l,s,c,d=E(this),u=d.data(W),h=u.opt,e=W+"_"+u.idx,f=["mCSB_"+u.idx+"_dragger_vertical","mCSB_"+u.idx+"_dragger_horizontal"],m=E("#mCSB_"+u.idx+"_container"),t=E("#"+f[0]+",#"+f[1]),o=h.advanced.releaseDraggableSelectors?t.add(E(h.advanced.releaseDraggableSelectors)):t;t.bind("mousedown."+e+" touchstart."+e+" pointerdown."+e+" MSPointerDown."+e,function(e){if(e.stopImmediatePropagation(),e.preventDefault(),te(e)){A=!0,p&&(document.onselectstart=function(){return!1}),r(!1),Z(d);var t=(l=E(this)).offset(),o=P(e)[0]-t.top,a=P(e)[1]-t.left,n=l.height()+t.top,i=l.width()+t.left;o<n&&0<o&&a<i&&0<a&&(s=o,c=a),T(l,"active",h.autoExpandScrollbar)}}).bind("touchmove."+e,function(e){e.stopImmediatePropagation(),e.preventDefault();var t=l.offset(),o=P(e)[0]-t.top,a=P(e)[1]-t.left;n(s,c,o,a)}),E(document).bind("mousemove."+e+" pointermove."+e+" MSPointerMove."+e,function(e){if(l){var t=l.offset(),o=P(e)[0]-t.top,a=P(e)[1]-t.left;if(s===o)return;n(s,c,o,a)}}).add(o).bind("mouseup."+e+" touchend."+e+" pointerup."+e+" MSPointerUp."+e,function(){l&&(T(l,"active",h.autoExpandScrollbar),l=null),A=!1,p&&(document.onselectstart=null),r(!0)})},I=function(){function t(e){if(!oe(e)||A||P(e)[2])L=0;else{L=1,C=b=0;var t=M.offset();c=P(e)[0]-t.top,h=P(e)[1]-t.left,R=[P(e)[0],P(e)[1]]}}function o(e){if(oe(e)&&!A&&!P(e)[2]&&(e.stopImmediatePropagation(),!C||b)){g=K();var t=T.offset(),o=P(e)[0]-t.top,a=P(e)[1]-t.left,n="mcsLinearOut";if(O.push(o),I.push(a),R[2]=Math.abs(P(e)[0]-R[0]),R[3]=Math.abs(P(e)[1]-R[1]),y.overflowed[0])var i=k[0].parent().height()-k[0].height(),r=0<c-o&&o-c>-i*y.scrollRatio.y&&(2*R[3]<R[2]||"yx"===B.axis);if(y.overflowed[1])var l=k[1].parent().width()-k[1].width(),s=0<h-a&&a-h>-l*y.scrollRatio.x&&(2*R[2]<R[3]||"yx"===B.axis);r||s?(e.preventDefault(),b=1):C=1,w="yx"===B.axis?[c-o,h-a]:"x"===B.axis?[null,h-a]:[c-o,null],M[0].idleTimer=250,y.overflowed[0]&&u(w[0],0,n,"y","all",!0),y.overflowed[1]&&u(w[1],0,n,"x",D,!0)}}function a(e){if(!oe(e)||A||P(e)[2])L=0;else{L=1,e.stopImmediatePropagation(),Z(r),p=K();var t=T.offset();f=P(e)[0]-t.top,m=P(e)[1]-t.left,O=[],I=[]}}function n(e){if(oe(e)&&!A&&!P(e)[2]){e.stopImmediatePropagation(),C=b=0,v=K();var t=T.offset(),o=P(e)[0]-t.top,a=P(e)[1]-t.left;if(!(30<v-g)){var n="mcsEaseOut",i=(_=1e3/(v-p))<2.5,r=i?[O[O.length-2],I[I.length-2]]:[0,0];x=i?[o-r[0],a-r[1]]:[o-f,a-m];var l=[Math.abs(x[0]),Math.abs(x[1])];_=i?[Math.abs(x[0]/4),Math.abs(x[1]/4)]:[_,_];var s=[Math.abs(M[0].offsetTop)-x[0]*d(l[0]/_[0],_[0]),Math.abs(M[0].offsetLeft)-x[1]*d(l[1]/_[1],_[1])];w="yx"===B.axis?[s[0],s[1]]:"x"===B.axis?[null,s[1]]:[s[0],null],S=[4*l[0]+B.scrollInertia,4*l[1]+B.scrollInertia];var c=parseInt(B.contentTouchScroll)||0;w[0]=c<l[0]?w[0]:0,w[1]=c<l[1]?w[1]:0,y.overflowed[0]&&u(w[0],S[0],n,"y",D,!1),y.overflowed[1]&&u(w[1],S[1],n,"x",D,!1)}}}function d(e,t){var o=[1.5*t,2*t,t/1.5,t/2];return 90<e?4<t?o[0]:o[3]:60<e?3<t?o[3]:o[2]:30<e?8<t?o[1]:6<t?o[0]:4<t?t:o[2]:8<t?t:o[3]}function u(e,t,o,a,n,i){e&&G(r,e.toString(),{dur:t,scrollEasing:o,dir:a,overwrite:n,drag:i})}var c,h,f,m,p,g,v,x,_,w,S,b,C,r=E(this),y=r.data(W),B=y.opt,e=W+"_"+y.idx,T=E("#mCSB_"+y.idx),M=E("#mCSB_"+y.idx+"_container"),k=[E("#mCSB_"+y.idx+"_dragger_vertical"),E("#mCSB_"+y.idx+"_dragger_horizontal")],O=[],I=[],D="yx"===B.axis?"none":"all",R=[],i=M.find("iframe"),l=["touchstart."+e+" pointerdown."+e+" MSPointerDown."+e,"touchmove."+e+" pointermove."+e+" MSPointerMove."+e,"touchend."+e+" pointerup."+e+" MSPointerUp."+e];M.bind(l[0],function(e){t(e)}).bind(l[1],function(e){o(e)}),T.bind(l[0],function(e){a(e)}).bind(l[2],function(e){n(e)}),i.length&&i.each(function(){E(this).load(function(){z(this)&&E(this.contentDocument||this.contentWindow.document).bind(l[0],function(e){t(e),a(e)}).bind(l[1],function(e){o(e)}).bind(l[2],function(e){n(e)})})})},D=function(){function n(e,t,o){s.type=o&&i?"stepped":"stepless",s.scrollAmount=10,F(a,e,t,"mcsLinearOut",o?60:null)}var i,a=E(this),r=a.data(W),l=r.opt,s=r.sequential,e=W+"_"+r.idx,c=E("#mCSB_"+r.idx+"_container"),d=c.parent();c.bind("mousedown."+e,function(){L||i||(i=1,A=!0)}).add(document).bind("mousemove."+e,function(e){if(!L&&i&&(window.getSelection?window.getSelection().toString():document.selection&&"Control"!=document.selection.type&&document.selection.createRange().text)){var t=c.offset(),o=P(e)[0]-t.top+c[0].offsetTop,a=P(e)[1]-t.left+c[0].offsetLeft;0<o&&o<d.height()&&0<a&&a<d.width()?s.step&&n("off",null,"stepped"):("x"!==l.axis&&r.overflowed[0]&&(o<0?n("on",38):o>d.height()&&n("on",40)),"y"!==l.axis&&r.overflowed[1]&&(a<0?n("on",37):a>d.width()&&n("on",39)))}}).bind("mouseup."+e,function(){L||(i&&(i=0,n("off",null)),A=!1)})},R=function(){function o(e,t){if(Z(d),!H(d,e.target)){var o="auto"!==h.mouseWheel.deltaFactor?parseInt(h.mouseWheel.deltaFactor):p&&e.deltaFactor<100?100:e.deltaFactor||100;if("x"===h.axis||"x"===h.mouseWheel.axis)var a="x",n=[Math.round(o*u.scrollRatio.x),parseInt(h.mouseWheel.scrollAmount)],i="auto"!==h.mouseWheel.scrollAmount?n[1]:n[0]>=f.width()?.9*f.width():n[0],r=Math.abs(E("#mCSB_"+u.idx+"_container")[0].offsetLeft),l=m[1][0].offsetLeft,s=m[1].parent().width()-m[1].width(),c=e.deltaX||e.deltaY||t;else var a="y",n=[Math.round(o*u.scrollRatio.y),parseInt(h.mouseWheel.scrollAmount)],i="auto"!==h.mouseWheel.scrollAmount?n[1]:n[0]>=f.height()?.9*f.height():n[0],r=Math.abs(E("#mCSB_"+u.idx+"_container")[0].offsetTop),l=m[0][0].offsetTop,s=m[0].parent().height()-m[0].height(),c=e.deltaY||t;"y"===a&&!u.overflowed[0]||"x"===a&&!u.overflowed[1]||(h.mouseWheel.invert&&(c=-c),h.mouseWheel.normalizeDelta&&(c=c<0?-1:1),(0<c&&0!==l||c<0&&l!==s||h.mouseWheel.preventDefault)&&(e.stopImmediatePropagation(),e.preventDefault()),G(d,(r-c*i).toString(),{dir:a}))}}var d=E(this),u=d.data(W),h=u.opt,e=W+"_"+u.idx,f=E("#mCSB_"+u.idx),m=[E("#mCSB_"+u.idx+"_dragger_vertical"),E("#mCSB_"+u.idx+"_dragger_horizontal")],t=E("#mCSB_"+u.idx+"_container").find("iframe");u&&(t.length&&t.each(function(){E(this).load(function(){z(this)&&E(this.contentDocument||this.contentWindow.document).bind("mousewheel."+e,function(e,t){o(e,t)})})}),f.bind("mousewheel."+e,function(e,t){o(e,t)}))},z=function(e){var t=null;try{var o=e.contentDocument||e.contentWindow.document;t=o.body.innerHTML}catch(e){}return null!==t},H=function(e,t){var o=t.nodeName.toLowerCase(),a=e.data(W).opt.mouseWheel.disableOver;return-1<E.inArray(o,a)&&!(-1<E.inArray(o,["select","textarea"])&&!E(t).is(":focus"))},X=function(){var r=E(this),l=r.data(W),e=W+"_"+l.idx,s=E("#mCSB_"+l.idx+"_container"),c=s.parent(),t=E(".mCSB_"+l.idx+"_scrollbar ."+w[12]);t.bind("touchstart."+e+" pointerdown."+e+" MSPointerDown."+e,function(){A=!0}).bind("touchend."+e+" pointerup."+e+" MSPointerUp."+e,function(){A=!1}).bind("click."+e,function(e){if(E(e.target).hasClass(w[12])||E(e.target).hasClass("mCSB_draggerRail")){Z(r);var t=E(this),o=t.find(".mCSB_dragger");if(0<t.parent(".mCSB_scrollTools_horizontal").length){if(!l.overflowed[1])return;var a="x",n=e.pageX>o.offset().left?-1:1,i=Math.abs(s[0].offsetLeft)-.9*n*c.width()}else{if(!l.overflowed[0])return;var a="y",n=e.pageY>o.offset().top?-1:1,i=Math.abs(s[0].offsetTop)-.9*n*c.height()}G(r,i.toString(),{dir:a,scrollEasing:"mcsEaseInOut"})}})},Y=function(){var i=E(this),e=i.data(W),r=e.opt,t=W+"_"+e.idx,l=E("#mCSB_"+e.idx+"_container"),s=l.parent();l.bind("focusin."+t,function(){var n=E(document.activeElement),e=l.find(".mCustomScrollBox").length;n.is(r.advanced.autoScrollOnFocus)&&(Z(i),clearTimeout(i[0]._focusTimeout),i[0]._focusTimer=e?17*e:0,i[0]._focusTimeout=setTimeout(function(){var e=[ne(n)[0],ne(n)[1]],t=[l[0].offsetTop,l[0].offsetLeft],o=[0<=t[0]+e[0]&&t[0]+e[0]<s.height()-n.outerHeight(!1),0<=t[1]+e[1]&&t[0]+e[1]<s.width()-n.outerWidth(!1)],a="yx"!==r.axis||o[0]||o[1]?"all":"none";"x"===r.axis||o[0]||G(i,e[0].toString(),{dir:"y",scrollEasing:"mcsEaseInOut",overwrite:a,dur:0}),"y"===r.axis||o[1]||G(i,e[1].toString(),{dir:"x",scrollEasing:"mcsEaseInOut",overwrite:a,dur:0})},i[0]._focusTimer))})},U=function(){var e=E(this),t=e.data(W),o=W+"_"+t.idx,a=E("#mCSB_"+t.idx+"_container").parent();a.bind("scroll."+o,function(){(0!==a.scrollTop()||0!==a.scrollLeft())&&E(".mCSB_"+t.idx+"_scrollbar").css("visibility","hidden")})},j=function(){var a=E(this),n=a.data(W),i=n.opt,r=n.sequential,e=W+"_"+n.idx,t=".mCSB_"+n.idx+"_scrollbar",o=E(t+">a");o.bind("mousedown."+e+" touchstart."+e+" pointerdown."+e+" MSPointerDown."+e+" mouseup."+e+" touchend."+e+" pointerup."+e+" MSPointerUp."+e+" mouseout."+e+" pointerout."+e+" MSPointerOut."+e+" click."+e,function(e){function t(e,t){r.scrollAmount=i.snapAmount||i.scrollButtons.scrollAmount,F(a,e,t)}if(e.preventDefault(),te(e)){var o=E(this).attr("class");switch(r.type=i.scrollButtons.scrollType,e.type){case"mousedown":case"touchstart":case"pointerdown":case"MSPointerDown":if("stepped"===r.type)return;A=!0,n.tweenRunning=!1,t("on",o);break;case"mouseup":case"touchend":case"pointerup":case"MSPointerUp":case"mouseout":case"pointerout":case"MSPointerOut":if("stepped"===r.type)return;A=!1,r.dir&&t("off",o);break;case"click":if("stepped"!==r.type||n.tweenRunning)return;t("on",o)}}})},q=function(){function t(e){function t(e,t){d.type=c.keyboard.scrollType,d.scrollAmount=c.snapAmount||c.keyboard.scrollAmount,"stepped"===d.type&&s.tweenRunning||F(l,e,t)}switch(e.type){case"blur":s.tweenRunning&&d.dir&&t("off",null);break;case"keydown":case"keyup":var o=e.keyCode?e.keyCode:e.which,a="on";if("x"!==c.axis&&(38===o||40===o)||"y"!==c.axis&&(37===o||39===o)){if((38===o||40===o)&&!s.overflowed[0]||(37===o||39===o)&&!s.overflowed[1])return;"keyup"===e.type&&(a="off"),E(document.activeElement).is(f)||(e.preventDefault(),e.stopImmediatePropagation(),t(a,o))}else if(33===o||34===o){if((s.overflowed[0]||s.overflowed[1])&&(e.preventDefault(),e.stopImmediatePropagation()),"keyup"===e.type){Z(l);var n=34===o?-1:1;if("x"===c.axis||"yx"===c.axis&&s.overflowed[1]&&!s.overflowed[0])var i="x",r=Math.abs(u[0].offsetLeft)-.9*n*h.width();else var i="y",r=Math.abs(u[0].offsetTop)-.9*n*h.height();G(l,r.toString(),{dir:i,scrollEasing:"mcsEaseInOut"})}}else if((35===o||36===o)&&!E(document.activeElement).is(f)&&((s.overflowed[0]||s.overflowed[1])&&(e.preventDefault(),e.stopImmediatePropagation()),"keyup"===e.type)){if("x"===c.axis||"yx"===c.axis&&s.overflowed[1]&&!s.overflowed[0])var i="x",r=35===o?Math.abs(h.width()-u.outerWidth(!1)):0;else var i="y",r=35===o?Math.abs(h.height()-u.outerHeight(!1)):0;G(l,r.toString(),{dir:i,scrollEasing:"mcsEaseInOut"})}}}var l=E(this),s=l.data(W),c=s.opt,d=s.sequential,e=W+"_"+s.idx,o=E("#mCSB_"+s.idx),u=E("#mCSB_"+s.idx+"_container"),h=u.parent(),f="input,textarea,select,datalist,keygen,[contenteditable='true']",a=u.find("iframe"),n=["blur."+e+" keydown."+e+" keyup."+e];a.length&&a.each(function(){E(this).load(function(){z(this)&&E(this.contentDocument||this.contentWindow.document).bind(n[0],function(e){t(e)})})}),o.attr("tabindex","0").bind(n[0],function(e){t(e)})},F=function(u,e,t,h,f){function m(e){var t="stepped"!==g.type,o=f||(e?t?x/1.5:_:1e3/60),a=e?t?7.5:40:2.5,n=[Math.abs(v[0].offsetTop),Math.abs(v[0].offsetLeft)],i=[10<p.scrollRatio.y?10:p.scrollRatio.y,10<p.scrollRatio.x?10:p.scrollRatio.x],r="x"===g.dir[0]?n[1]+g.dir[1]*i[1]*a:n[0]+g.dir[1]*i[0]*a,l="x"===g.dir[0]?n[1]+g.dir[1]*parseInt(g.scrollAmount):n[0]+g.dir[1]*parseInt(g.scrollAmount),s="auto"!==g.scrollAmount?l:r,c=h||(e?t?"mcsLinearOut":"mcsEaseInOut":"mcsLinear"),d=!!e;return e&&o<17&&(s="x"===g.dir[0]?n[1]:n[0]),G(u,s.toString(),{dir:g.dir[0],scrollEasing:c,dur:o,onComplete:d}),e?void(g.dir=!1):(clearTimeout(g.step),void(g.step=setTimeout(function(){m()},o)))}var p=u.data(W),o=p.opt,g=p.sequential,v=E("#mCSB_"+p.idx+"_container"),a="stepped"===g.type,x=o.scrollInertia<26?26:o.scrollInertia,_=o.scrollInertia<1?17:o.scrollInertia;switch(e){case"on":if(g.dir=[t===w[16]||t===w[15]||39===t||37===t?"x":"y",t===w[13]||t===w[15]||38===t||37===t?-1:1],Z(u),ae(t)&&"stepped"===g.type)return;m(a);break;case"off":clearTimeout(g.step),ee(g,"step"),Z(u),(a||p.tweenRunning&&g.dir)&&m(!0)}},N=function(e){var t=E(this).data(W).opt,o=[];return"function"==typeof e&&(e=e()),e instanceof Array?o=1<e.length?[e[0],e[1]]:"x"===t.axis?[null,e[0]]:[e[0],null]:(o[0]=e.y?e.y:e.x||"x"===t.axis?null:e,o[1]=e.x?e.x:e.y||"y"===t.axis?null:e),"function"==typeof o[0]&&(o[0]=o[0]()),"function"==typeof o[1]&&(o[1]=o[1]()),o},V=function(e,t){if(null!=e&&void 0!==e){var o=E(this),a=o.data(W),n=a.opt,i=E("#mCSB_"+a.idx+"_container"),r=i.parent(),l=typeof e;t||(t="x"===n.axis?"x":"y");var s="x"===t?i.outerWidth(!1):i.outerHeight(!1),c="x"===t?i[0].offsetLeft:i[0].offsetTop,d="x"===t?"left":"top";switch(l){case"function":return e();case"object":var u=e.jquery?e:E(e);if(!u.length)return;return"x"===t?ne(u)[1]:ne(u)[0];case"string":case"number":if(ae(e))return Math.abs(e);if(-1!==e.indexOf("%"))return Math.abs(s*parseInt(e)/100);if(-1!==e.indexOf("-="))return Math.abs(c-parseInt(e.split("-=")[1]));if(-1!==e.indexOf("+=")){var h=c+parseInt(e.split("+=")[1]);return 0<=h?0:Math.abs(h)}if(-1!==e.indexOf("px")&&ae(e.split("px")[0]))return Math.abs(e.split("px")[0]);if("top"===e||"left"===e)return 0;if("bottom"===e)return Math.abs(r.height()-i.outerHeight(!1));if("right"===e)return Math.abs(r.width()-i.outerWidth(!1));if("first"===e||"last"===e){var u=i.find(":"+e);return"x"===t?ne(u)[1]:ne(u)[0]}return E(e).length?"x"===t?ne(E(e))[1]:ne(E(e))[0]:(i.css(d,e),void v.update.call(null,o[0]))}}},Q=function(e){function t(){var e=0;return r.advanced.updateOnImageLoad&&(e=l.find("img").length),e}function o(){!0===r.advanced.updateOnSelectorChange&&(r.advanced.updateOnSelectorChange="*");var e=0,t=l.find(r.advanced.updateOnSelectorChange);return r.advanced.updateOnSelectorChange&&0<t.length&&t.each(function(){e+=E(this).height()+E(this).width()}),e}function n(e){clearTimeout(l[0].autoUpdate),v.update.call(null,a[0],e)}var a=E(this),i=a.data(W),r=i.opt,l=E("#mCSB_"+i.idx+"_container");if(e)return clearTimeout(l[0].autoUpdate),void ee(l[0],"autoUpdate");var s,c,d,u=l.parent(),h=[E("#mCSB_"+i.idx+"_scrollbar_vertical"),E("#mCSB_"+i.idx+"_scrollbar_horizontal")],f=function(){return[h[0].is(":visible")?h[0].outerHeight(!0):0,h[1].is(":visible")?h[1].outerWidth(!0):0]},m=o(),p=[l.outerHeight(!1),l.outerWidth(!1),u.height(),u.width(),f()[0],f()[1]],g=t();!function e(){clearTimeout(l[0].autoUpdate),l[0].autoUpdate=setTimeout(function(){return r.advanced.updateOnSelectorChange&&(s=o())!==m?(n(3),void(m=s)):(r.advanced.updateOnContentResize&&((c=[l.outerHeight(!1),l.outerWidth(!1),u.height(),u.width(),f()[0],f()[1]])[0]!==p[0]||c[1]!==p[1]||c[2]!==p[2]||c[3]!==p[3]||c[4]!==p[4]||c[5]!==p[5])&&(n(c[0]!==p[0]||c[1]!==p[1]),p=c),r.advanced.updateOnImageLoad&&(d=t())!==g&&(l.find("img").each(function(){!function(e){if(E(e).hasClass(w[2]))return n();var t,o,a=new Image;a.onload=(t=a,o=function(){this.onload=null,E(e).addClass(w[2]),n(2)},function(){return o.apply(t,arguments)}),a.src=e.src}(this)}),g=d),void((r.advanced.updateOnSelectorChange||r.advanced.updateOnContentResize||r.advanced.updateOnImageLoad)&&e()))},60)}()},Z=function(e){var t=e.data(W),o=E("#mCSB_"+t.idx+"_container,#mCSB_"+t.idx+"_container_wrapper,#mCSB_"+t.idx+"_dragger_vertical,#mCSB_"+t.idx+"_dragger_horizontal");o.each(function(){$.call(this)})},G=function(n,e,i){function t(e){return s&&c.callbacks[e]&&"function"==typeof c.callbacks[e]}function o(){var e=[f[0].offsetTop,f[0].offsetLeft],t=[v[0].offsetTop,v[0].offsetLeft],o=[f.outerHeight(!1),f.outerWidth(!1)],a=[h.height(),h.width()];n[0].mcs={content:f,top:e[0],left:e[1],draggerTop:t[0],draggerLeft:t[1],topPct:Math.round(100*Math.abs(e[0])/(Math.abs(o[0])-a[0])),leftPct:Math.round(100*Math.abs(e[1])/(Math.abs(o[1])-a[1])),direction:i.dir}}var a,r,l,s=n.data(W),c=s.opt,d={trigger:"internal",dir:"y",scrollEasing:"mcsEaseOut",drag:!1,dur:c.scrollInertia,overwrite:"all",callbacks:!0,onStart:!0,onUpdate:!0,onComplete:!0},i=E.extend(d,i),u=[i.dur,i.drag?0:i.dur],h=E("#mCSB_"+s.idx),f=E("#mCSB_"+s.idx+"_container"),m=f.parent(),p=c.callbacks.onTotalScrollOffset?N.call(n,c.callbacks.onTotalScrollOffset):[0,0],g=c.callbacks.onTotalScrollBackOffset?N.call(n,c.callbacks.onTotalScrollBackOffset):[0,0];if(s.trigger=i.trigger,(0!==m.scrollTop()||0!==m.scrollLeft())&&(E(".mCSB_"+s.idx+"_scrollbar").css("visibility","visible"),m.scrollTop(0).scrollLeft(0)),"_resetY"!==e||s.contentReset.y||(t("onOverflowYNone")&&c.callbacks.onOverflowYNone.call(n[0]),s.contentReset.y=1),"_resetX"!==e||s.contentReset.x||(t("onOverflowXNone")&&c.callbacks.onOverflowXNone.call(n[0]),s.contentReset.x=1),"_resetY"!==e&&"_resetX"!==e){switch(!s.contentReset.y&&n[0].mcs||!s.overflowed[0]||(t("onOverflowY")&&c.callbacks.onOverflowY.call(n[0]),s.contentReset.x=null),!s.contentReset.x&&n[0].mcs||!s.overflowed[1]||(t("onOverflowX")&&c.callbacks.onOverflowX.call(n[0]),s.contentReset.x=null),c.snapAmount&&(a=e,r=c.snapAmount,l=c.snapOffset,e=Math.round(a/r)*r-l),i.dir){case"x":var v=E("#mCSB_"+s.idx+"_dragger_horizontal"),x="left",_=f[0].offsetLeft,w=[h.width()-f.outerWidth(!1),v.parent().width()-v.width()],S=[e,0===e?0:e/s.scrollRatio.x],b=p[1],C=g[1],y=0<b?b/s.scrollRatio.x:0,B=0<C?C/s.scrollRatio.x:0;break;case"y":var v=E("#mCSB_"+s.idx+"_dragger_vertical"),x="top",_=f[0].offsetTop,w=[h.height()-f.outerHeight(!1),v.parent().height()-v.height()],S=[e,0===e?0:e/s.scrollRatio.y],b=p[0],C=g[0],y=0<b?b/s.scrollRatio.y:0,B=0<C?C/s.scrollRatio.y:0}S[1]<0||0===S[0]&&0===S[1]?S=[0,0]:S[1]>=w[1]?S=[w[0],w[1]]:S[0]=-S[0],n[0].mcs||(o(),t("onInit")&&c.callbacks.onInit.call(n[0])),clearTimeout(f[0].onCompleteTimeout),(s.tweenRunning||!(0===_&&0<=S[0]||_===w[0]&&S[0]<=w[0]))&&(J(v[0],x,Math.round(S[1]),u[1],i.scrollEasing),J(f[0],x,Math.round(S[0]),u[0],i.scrollEasing,i.overwrite,{onStart:function(){i.callbacks&&i.onStart&&!s.tweenRunning&&(t("onScrollStart")&&(o(),c.callbacks.onScrollStart.call(n[0])),s.tweenRunning=!0,T(v),s.cbOffsets=[c.callbacks.alwaysTriggerOffsets||_>=w[0]+b,c.callbacks.alwaysTriggerOffsets||_<=-C])},onUpdate:function(){i.callbacks&&i.onUpdate&&t("whileScrolling")&&(o(),c.callbacks.whileScrolling.call(n[0]))},onComplete:function(){if(i.callbacks&&i.onComplete){"yx"===c.axis&&clearTimeout(f[0].onCompleteTimeout);var e=f[0].idleTimer||0;f[0].onCompleteTimeout=setTimeout(function(){t("onScroll")&&(o(),c.callbacks.onScroll.call(n[0])),t("onTotalScroll")&&S[1]>=w[1]-y&&s.cbOffsets[0]&&(o(),c.callbacks.onTotalScroll.call(n[0])),t("onTotalScrollBack")&&S[1]<=B&&s.cbOffsets[1]&&(o(),c.callbacks.onTotalScrollBack.call(n[0])),s.tweenRunning=!1,f[0].idleTimer=0,T(v,"hide")},e)}}}))}},J=function(e,t,o,a,n,i,r){function l(){x.stop||(p||u.call(),p=K()-m,s(),p>=x.time&&(x.time=p>x.time?p+c-(p-x.time):p+c-1,x.time<p+1&&(x.time=p+1)),x.time<a?x.id=d(l):f.call())}function s(){0<a?(x.currVal=function(e,t,o,a,n){switch(n){case"linear":case"mcsLinear":return o*e/a+t;case"mcsLinearOut":return e/=a,e--,o*Math.sqrt(1-e*e)+t;case"easeInOutSmooth":return(e/=a/2)<1?o/2*e*e+t:-o/2*(--e*(e-2)-1)+t;case"easeInOutStrong":return(e/=a/2)<1?o/2*Math.pow(2,10*(e-1))+t:(e--,o/2*(2-Math.pow(2,-10*e))+t);case"easeInOut":case"mcsEaseInOut":return(e/=a/2)<1?o/2*e*e*e+t:o/2*((e-=2)*e*e+2)+t;case"easeOutSmooth":return e/=a,-o*(--e*e*e*e-1)+t;case"easeOutStrong":return o*(1-Math.pow(2,-10*e/a))+t;case"easeOut":case"mcsEaseOut":default:var i=(e/=a)*e,r=i*e;return t+o*(.499999999999997*r*i+-2.5*i*i+5.5*r+-6.5*i+4*e)}}(x.time,g,_,a,n),v[t]=Math.round(x.currVal)+"px"):v[t]=o+"px",h.call()}e._mTween||(e._mTween={top:{},left:{}});var c,d,r=r||{},u=r.onStart||function(){},h=r.onUpdate||function(){},f=r.onComplete||function(){},m=K(),p=0,g=e.offsetTop,v=e.style,x=e._mTween[t];"left"===t&&(g=e.offsetLeft);var _=o-g;x.stop=0,"none"!==i&&null!=x.id&&(window.requestAnimationFrame?window.cancelAnimationFrame(x.id):clearTimeout(x.id),x.id=null),c=1e3/60,x.time=p+c,d=window.requestAnimationFrame?window.requestAnimationFrame:function(e){return s(),setTimeout(e,.01)},x.id=d(l)},K=function(){return window.performance&&window.performance.now?window.performance.now():window.performance&&window.performance.webkitNow?window.performance.webkitNow():Date.now?Date.now():(new Date).getTime()},$=function(){var e=this;e._mTween||(e._mTween={top:{},left:{}});for(var t=["top","left"],o=0;o<t.length;o++){var a=t[o];e._mTween[a].id&&(window.requestAnimationFrame?window.cancelAnimationFrame(e._mTween[a].id):clearTimeout(e._mTween[a].id),e._mTween[a].id=null,e._mTween[a].stop=1)}},ee=function(t,o){try{delete t[o]}catch(e){t[o]=null}},te=function(e){return!(e.which&&1!==e.which)},oe=function(e){var t=e.originalEvent.pointerType;return!(t&&"touch"!==t&&2!==t)},ae=function(e){return!isNaN(parseFloat(e))&&isFinite(e)},ne=function(e){var t=e.parents(".mCSB_container");return[e.offset().top-t.offset().top,e.offset().left-t.offset().left]},E.fn[f]=function(e){return v[e]?v[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void E.error("Method "+e+" does not exist"):v.init.apply(this,arguments)},E[f]=function(e){return v[e]?v[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void E.error("Method "+e+" does not exist"):v.init.apply(this,arguments)},E[f].defaults=n,window[f]=!0,E(window).load(function(){E(a)[f](),E.extend(E.expr[":"],{mcsInView:E.expr[":"].mcsInView||function(e){var t,o,a=E(e),n=a.parents(".mCSB_container");if(n.length)return t=n.parent(),0<=(o=[n[0].offsetTop,n[0].offsetLeft])[0]+ne(a)[0]&&o[0]+ne(a)[0]<t.height()-a.outerHeight(!1)&&0<=o[1]+ne(a)[1]&&o[1]+ne(a)[1]<t.width()-a.outerWidth(!1)},mcsOverflow:E.expr[":"].mcsOverflow||function(e){var t=E(e).data(W);if(t)return t.overflowed[0]||t.overflowed[1]}})})});
1
+ !function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e:e(jQuery)}(function(f){var h,m,e=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],t="onwheel"in document||9<=document.documentMode?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],p=Array.prototype.slice;if(f.event.fixHooks)for(var o=e.length;o;)f.event.fixHooks[e[--o]]=f.event.mouseHooks;var g=f.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var e=t.length;e;)this.addEventListener(t[--e],a,!1);else this.onmousewheel=a;f.data(this,"mousewheel-line-height",g.getLineHeight(this)),f.data(this,"mousewheel-page-height",g.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var e=t.length;e;)this.removeEventListener(t[--e],a,!1);else this.onmousewheel=null;f.removeData(this,"mousewheel-line-height"),f.removeData(this,"mousewheel-page-height")},getLineHeight:function(e){var t=f(e),o=t["offsetParent"in f.fn?"offsetParent":"parent"]();return o.length||(o=f("body")),parseInt(o.css("fontSize"),10)||parseInt(t.css("fontSize"),10)||16},getPageHeight:function(e){return f(e).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};function a(e){var t,o=e||window.event,a=p.call(arguments,1),n=0,i=0,r=0,l=0,s=0;if((e=f.event.fix(o)).type="mousewheel","detail"in o&&(r=-1*o.detail),"wheelDelta"in o&&(r=o.wheelDelta),"wheelDeltaY"in o&&(r=o.wheelDeltaY),"wheelDeltaX"in o&&(i=-1*o.wheelDeltaX),"axis"in o&&o.axis===o.HORIZONTAL_AXIS&&(i=-1*r,r=0),n=0===r?i:r,"deltaY"in o&&(n=r=-1*o.deltaY),"deltaX"in o&&(i=o.deltaX,0===r&&(n=-1*i)),0!==r||0!==i){if(1===o.deltaMode){var c=f.data(this,"mousewheel-line-height");n*=c,r*=c,i*=c}else if(2===o.deltaMode){var d=f.data(this,"mousewheel-page-height");n*=d,r*=d,i*=d}if(t=Math.max(Math.abs(r),Math.abs(i)),(!m||t<m)&&x(o,m=t)&&(m/=40),x(o,t)&&(n/=40,i/=40,r/=40),n=Math[1<=n?"floor":"ceil"](n/m),i=Math[1<=i?"floor":"ceil"](i/m),r=Math[1<=r?"floor":"ceil"](r/m),g.settings.normalizeOffset&&this.getBoundingClientRect){var u=this.getBoundingClientRect();l=e.clientX-u.left,s=e.clientY-u.top}return e.deltaX=i,e.deltaY=r,e.deltaFactor=m,e.offsetX=l,e.offsetY=s,e.deltaMode=0,a.unshift(e,n,i,r),h&&clearTimeout(h),h=setTimeout(v,200),(f.event.dispatch||f.event.handle).apply(this,a)}}function v(){m=null}function x(e,t){return g.settings.adjustOldDeltas&&"mousewheel"===e.type&&t%120==0}f.fn.extend({mousewheel:function(e){return e?this.bind("mousewheel",e):this.trigger("mousewheel")},unmousewheel:function(e){return this.unbind("mousewheel",e)}})}),function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"undefined"!=typeof module&&module.exports?module.exports=e:e(jQuery,window,document)}(function(A){var z,h,H,a,n,l,i,g,P,S,m,c,s,d,u,f,p,v,x,w,_,b,M,C,y,B,T,k,U,r,O,D,I,E,X,R,W,L,Y,j,F,q,N,V,Q,Z,G,J,K,$,ee,te,oe,ae,ne,ie,re,e,t,o;e="function"==typeof define&&define.amd,t="undefined"!=typeof module&&module.exports,o="https:"==document.location.protocol?"https:":"http:",e||(t?require("jquery-mousewheel")(A):A.event.special.mousewheel||A("head").append(decodeURI("%3Cscript src="+o+"//cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js%3E%3C/script%3E"))),h="mCustomScrollbar",H="mCS",a=".mCustomScrollbar",n={setTop:0,setLeft:0,axis:"y",scrollbarPosition:"inside",scrollInertia:950,autoDraggerLength:!0,alwaysShowScrollbar:0,snapOffset:0,mouseWheel:{enable:!0,scrollAmount:"auto",axis:"y",deltaFactor:"auto",disableOver:["select","option","keygen","datalist","textarea"]},scrollButtons:{scrollType:"stepless",scrollAmount:"auto"},keyboard:{enable:!0,scrollType:"stepless",scrollAmount:"auto"},contentTouchScroll:25,documentTouchScroll:!0,advanced:{autoScrollOnFocus:"input,textarea,select,button,datalist,keygen,a[tabindex],area,object,[contenteditable='true']",updateOnContentResize:!0,updateOnImageLoad:"auto",autoUpdateTimeout:60},theme:"light",callbacks:{onTotalScrollOffset:0,onTotalScrollBackOffset:0,alwaysTriggerOffsets:!0}},l=0,i={},g=window.attachEvent&&!window.addEventListener?1:0,P=!1,S=["mCSB_dragger_onDrag","mCSB_scrollTools_onDrag","mCS_img_loaded","mCS_disabled","mCS_destroyed","mCS_no_scrollbar","mCS-autoHide","mCS-dir-rtl","mCS_no_scrollbar_y","mCS_no_scrollbar_x","mCS_y_hidden","mCS_x_hidden","mCSB_draggerContainer","mCSB_buttonUp","mCSB_buttonDown","mCSB_buttonLeft","mCSB_buttonRight"],m={init:function(r){var r=A.extend(!0,{},n,r),e=c.call(this);if(r.live){var t=r.liveSelector||this.selector||a,o=A(t);if("off"===r.live)return void d(t);i[t]=setTimeout(function(){o.mCustomScrollbar(r),"once"===r.live&&o.length&&d(t)},500)}else d(t);return r.setWidth=r.set_width?r.set_width:r.setWidth,r.setHeight=r.set_height?r.set_height:r.setHeight,r.axis=r.horizontalScroll?"x":u(r.axis),r.scrollInertia=0<r.scrollInertia&&r.scrollInertia<17?17:r.scrollInertia,"object"!=typeof r.mouseWheel&&1==r.mouseWheel&&(r.mouseWheel={enable:!0,scrollAmount:"auto",axis:"y",preventDefault:!1,deltaFactor:"auto",normalizeDelta:!1,invert:!1}),r.mouseWheel.scrollAmount=r.mouseWheelPixels?r.mouseWheelPixels:r.mouseWheel.scrollAmount,r.mouseWheel.normalizeDelta=r.advanced.normalizeMouseWheelDelta?r.advanced.normalizeMouseWheelDelta:r.mouseWheel.normalizeDelta,r.scrollButtons.scrollType=f(r.scrollButtons.scrollType),s(r),A(e).each(function(){var e=A(this);if(!e.data(H)){e.data(H,{idx:++l,opt:r,scrollRatio:{y:null,x:null},overflowed:null,contentReset:{y:null,x:null},bindEvents:!1,tweenRunning:!1,sequential:{},langDir:e.css("direction"),cbOffsets:null,trigger:null,poll:{size:{o:0,n:0},img:{o:0,n:0},change:{o:0,n:0}}});var t=e.data(H),o=t.opt,a=e.data("mcs-axis"),n=e.data("mcs-scrollbar-position"),i=e.data("mcs-theme");a&&(o.axis=a),n&&(o.scrollbarPosition=n),i&&(o.theme=i,s(o)),p.call(this),t&&o.callbacks.onCreate&&"function"==typeof o.callbacks.onCreate&&o.callbacks.onCreate.call(this),A("#mCSB_"+t.idx+"_container img:not(."+S[2]+")").addClass(S[2]),m.update.call(null,e)}})},update:function(e,l){var t=e||c.call(this);return A(t).each(function(){var e=A(this);if(e.data(H)){var t=e.data(H),o=t.opt,a=A("#mCSB_"+t.idx+"_container"),n=A("#mCSB_"+t.idx),i=[A("#mCSB_"+t.idx+"_dragger_vertical"),A("#mCSB_"+t.idx+"_dragger_horizontal")];if(!a.length)return;t.tweenRunning&&G(e),l&&t&&o.callbacks.onBeforeUpdate&&"function"==typeof o.callbacks.onBeforeUpdate&&o.callbacks.onBeforeUpdate.call(this),e.hasClass(S[3])&&e.removeClass(S[3]),e.hasClass(S[4])&&e.removeClass(S[4]),n.css("max-height","none"),n.height()!==e.height()&&n.css("max-height",e.height()),x.call(this),"y"===o.axis||o.advanced.autoExpandHorizontalScroll||a.css("width",v(a)),t.overflowed=C.call(this),k.call(this),o.autoDraggerLength&&_.call(this),b.call(this),B.call(this);var r=[Math.abs(a[0].offsetTop),Math.abs(a[0].offsetLeft)];"x"!==o.axis&&(t.overflowed[0]?i[0].height()>i[0].parent().height()?y.call(this):(J(e,r[0].toString(),{dir:"y",dur:0,overwrite:"none"}),t.contentReset.y=null):(y.call(this),"y"===o.axis?T.call(this):"yx"===o.axis&&t.overflowed[1]&&J(e,r[1].toString(),{dir:"x",dur:0,overwrite:"none"}))),"y"!==o.axis&&(t.overflowed[1]?i[1].width()>i[1].parent().width()?y.call(this):(J(e,r[1].toString(),{dir:"x",dur:0,overwrite:"none"}),t.contentReset.x=null):(y.call(this),"x"===o.axis?T.call(this):"yx"===o.axis&&t.overflowed[0]&&J(e,r[0].toString(),{dir:"y",dur:0,overwrite:"none"}))),l&&t&&(2===l&&o.callbacks.onImageLoad&&"function"==typeof o.callbacks.onImageLoad?o.callbacks.onImageLoad.call(this):3===l&&o.callbacks.onSelectorChange&&"function"==typeof o.callbacks.onSelectorChange?o.callbacks.onSelectorChange.call(this):o.callbacks.onUpdate&&"function"==typeof o.callbacks.onUpdate&&o.callbacks.onUpdate.call(this)),Z.call(this)}})},scrollTo:function(l,s){if(void 0!==l&&null!=l){var e=c.call(this);return A(e).each(function(){var e=A(this);if(e.data(H)){var t=e.data(H),o=t.opt,a={trigger:"external",scrollInertia:o.scrollInertia,scrollEasing:"mcsEaseInOut",moveDragger:!1,timeout:60,callbacks:!0,onStart:!0,onUpdate:!0,onComplete:!0},n=A.extend(!0,{},a,s),i=V.call(this,l),r=0<n.scrollInertia&&n.scrollInertia<17?17:n.scrollInertia;i[0]=Q.call(this,i[0],"y"),i[1]=Q.call(this,i[1],"x"),n.moveDragger&&(i[0]*=t.scrollRatio.y,i[1]*=t.scrollRatio.x),n.dur=re()?0:r,setTimeout(function(){null!==i[0]&&void 0!==i[0]&&"x"!==o.axis&&t.overflowed[0]&&(n.dir="y",n.overwrite="all",J(e,i[0].toString(),n)),null!==i[1]&&void 0!==i[1]&&"y"!==o.axis&&t.overflowed[1]&&(n.dir="x",n.overwrite="none",J(e,i[1].toString(),n))},n.timeout)}})}},stop:function(){var e=c.call(this);return A(e).each(function(){var e=A(this);e.data(H)&&G(e)})},disable:function(t){var e=c.call(this);return A(e).each(function(){var e=A(this);e.data(H)&&(e.data(H),Z.call(this,"remove"),T.call(this),t&&y.call(this),k.call(this,!0),e.addClass(S[3]))})},destroy:function(){var r=c.call(this);return A(r).each(function(){var e=A(this);if(e.data(H)){var t=e.data(H),o=t.opt,a=A("#mCSB_"+t.idx),n=A("#mCSB_"+t.idx+"_container"),i=A(".mCSB_"+t.idx+"_scrollbar");o.live&&d(o.liveSelector||A(r).selector),Z.call(this,"remove"),T.call(this),y.call(this),e.removeData(H),te(this,"mcs"),i.remove(),n.find("img."+S[2]).removeClass(S[2]),a.replaceWith(n.contents()),e.removeClass(h+" _"+H+"_"+t.idx+" "+S[6]+" "+S[7]+" "+S[5]+" "+S[3]).addClass(S[4])}})}},c=function(){return"object"!=typeof A(this)||A(this).length<1?a:this},s=function(e){e.autoDraggerLength=!(-1<A.inArray(e.theme,["rounded","rounded-dark","rounded-dots","rounded-dots-dark"]))&&e.autoDraggerLength,e.autoExpandScrollbar=!(-1<A.inArray(e.theme,["rounded-dots","rounded-dots-dark","3d","3d-dark","3d-thick","3d-thick-dark","inset","inset-dark","inset-2","inset-2-dark","inset-3","inset-3-dark"]))&&e.autoExpandScrollbar,e.scrollButtons.enable=!(-1<A.inArray(e.theme,["minimal","minimal-dark"]))&&e.scrollButtons.enable,e.autoHideScrollbar=-1<A.inArray(e.theme,["minimal","minimal-dark"])||e.autoHideScrollbar,e.scrollbarPosition=-1<A.inArray(e.theme,["minimal","minimal-dark"])?"outside":e.scrollbarPosition},d=function(e){i[e]&&(clearTimeout(i[e]),te(i,e))},u=function(e){return"yx"===e||"xy"===e||"auto"===e?"yx":"x"===e||"horizontal"===e?"x":"y"},f=function(e){return"stepped"===e||"pixels"===e||"step"===e||"click"===e?"stepped":"stepless"},p=function(){var e=A(this),t=e.data(H),o=t.opt,a=o.autoExpandScrollbar?" "+S[1]+"_expand":"",n=["<div id='mCSB_"+t.idx+"_scrollbar_vertical' class='mCSB_scrollTools mCSB_"+t.idx+"_scrollbar mCS-"+o.theme+" mCSB_scrollTools_vertical"+a+"'><div class='"+S[12]+"'><div id='mCSB_"+t.idx+"_dragger_vertical' class='mCSB_dragger' style='position:absolute;'><div class='mCSB_dragger_bar' /></div><div class='mCSB_draggerRail' /></div></div>","<div id='mCSB_"+t.idx+"_scrollbar_horizontal' class='mCSB_scrollTools mCSB_"+t.idx+"_scrollbar mCS-"+o.theme+" mCSB_scrollTools_horizontal"+a+"'><div class='"+S[12]+"'><div id='mCSB_"+t.idx+"_dragger_horizontal' class='mCSB_dragger' style='position:absolute;'><div class='mCSB_dragger_bar' /></div><div class='mCSB_draggerRail' /></div></div>"],i="yx"===o.axis?"mCSB_vertical_horizontal":"x"===o.axis?"mCSB_horizontal":"mCSB_vertical",r="yx"===o.axis?n[0]+n[1]:"x"===o.axis?n[1]:n[0],l="yx"===o.axis?"<div id='mCSB_"+t.idx+"_container_wrapper' class='mCSB_container_wrapper' />":"",s=o.autoHideScrollbar?" "+S[6]:"",c="x"!==o.axis&&"rtl"===t.langDir?" "+S[7]:"";o.setWidth&&e.css("width",o.setWidth),o.setHeight&&e.css("height",o.setHeight),o.setLeft="y"!==o.axis&&"rtl"===t.langDir?"989999px":o.setLeft,e.addClass(h+" _"+H+"_"+t.idx+s+c).wrapInner("<div id='mCSB_"+t.idx+"' class='mCustomScrollBox mCS-"+o.theme+" "+i+"'><div id='mCSB_"+t.idx+"_container' class='mCSB_container' style='position:relative; top:"+o.setTop+"; left:"+o.setLeft+";' dir='"+t.langDir+"' /></div>");var d=A("#mCSB_"+t.idx),u=A("#mCSB_"+t.idx+"_container");"y"===o.axis||o.advanced.autoExpandHorizontalScroll||u.css("width",v(u)),"outside"===o.scrollbarPosition?("static"===e.css("position")&&e.css("position","relative"),e.css("overflow","visible"),d.addClass("mCSB_outside").after(r)):(d.addClass("mCSB_inside").append(r),u.wrap(l)),w.call(this);var f=[A("#mCSB_"+t.idx+"_dragger_vertical"),A("#mCSB_"+t.idx+"_dragger_horizontal")];f[0].css("min-height",f[0].height()),f[1].css("min-width",f[1].width())},v=function(e){var t=[e[0].scrollWidth,Math.max.apply(Math,e.children().map(function(){return A(this).outerWidth(!0)}).get())],o=e.parent().width();return o<t[0]?t[0]:o<t[1]?t[1]:"100%"},x=function(){var e=A(this),t=e.data(H),o=t.opt,a=A("#mCSB_"+t.idx+"_container");if(o.advanced.autoExpandHorizontalScroll&&"y"!==o.axis){a.css({width:"auto","min-width":0,"overflow-x":"scroll"});var n=Math.ceil(a[0].scrollWidth);3===o.advanced.autoExpandHorizontalScroll||2!==o.advanced.autoExpandHorizontalScroll&&n>a.parent().width()?a.css({width:n,"min-width":"100%","overflow-x":"inherit"}):a.css({"overflow-x":"inherit",position:"absolute"}).wrap("<div class='mCSB_h_wrapper' style='position:relative; left:0; width:999999px;' />").css({width:Math.ceil(a[0].getBoundingClientRect().right+.4)-Math.floor(a[0].getBoundingClientRect().left),"min-width":"100%",position:"relative"}).unwrap()}},w=function(){var e=A(this),t=e.data(H),o=t.opt,a=A(".mCSB_"+t.idx+"_scrollbar:first"),n=ne(o.scrollButtons.tabindex)?"tabindex='"+o.scrollButtons.tabindex+"'":"",i=["<a href='#' class='"+S[13]+"' "+n+" />","<a href='#' class='"+S[14]+"' "+n+" />","<a href='#' class='"+S[15]+"' "+n+" />","<a href='#' class='"+S[16]+"' "+n+" />"],r=["x"===o.axis?i[2]:i[0],"x"===o.axis?i[3]:i[1],i[2],i[3]];o.scrollButtons.enable&&a.prepend(r[0]).append(r[1]).next(".mCSB_scrollTools").prepend(r[2]).append(r[3])},_=function(){var e=A(this),t=e.data(H),o=A("#mCSB_"+t.idx),a=A("#mCSB_"+t.idx+"_container"),n=[A("#mCSB_"+t.idx+"_dragger_vertical"),A("#mCSB_"+t.idx+"_dragger_horizontal")],i=[o.height()/a.outerHeight(!1),o.width()/a.outerWidth(!1)],r=[parseInt(n[0].css("min-height")),Math.round(i[0]*n[0].parent().height()),parseInt(n[1].css("min-width")),Math.round(i[1]*n[1].parent().width())],l=g&&r[1]<r[0]?r[0]:r[1],s=g&&r[3]<r[2]?r[2]:r[3];n[0].css({height:l,"max-height":n[0].parent().height()-10}).find(".mCSB_dragger_bar").css({"line-height":r[0]+"px"}),n[1].css({width:s,"max-width":n[1].parent().width()-10})},b=function(){var e=A(this),t=e.data(H),o=A("#mCSB_"+t.idx),a=A("#mCSB_"+t.idx+"_container"),n=[A("#mCSB_"+t.idx+"_dragger_vertical"),A("#mCSB_"+t.idx+"_dragger_horizontal")],i=[a.outerHeight(!1)-o.height(),a.outerWidth(!1)-o.width()],r=[i[0]/(n[0].parent().height()-n[0].height()),i[1]/(n[1].parent().width()-n[1].width())];t.scrollRatio={y:r[0],x:r[1]}},M=function(e,t,o){var a=o?S[0]+"_expanded":"",n=e.closest(".mCSB_scrollTools");"active"===t?(e.toggleClass(S[0]+" "+a),n.toggleClass(S[1]),e[0]._draggable=e[0]._draggable?0:1):e[0]._draggable||("hide"===t?(e.removeClass(S[0]),n.removeClass(S[1])):(e.addClass(S[0]),n.addClass(S[1])))},C=function(){var e=A(this),t=e.data(H),o=A("#mCSB_"+t.idx),a=A("#mCSB_"+t.idx+"_container"),n=null==t.overflowed?a.height():a.outerHeight(!1),i=null==t.overflowed?a.width():a.outerWidth(!1),r=a[0].scrollHeight,l=a[0].scrollWidth;return n<r&&(n=r),i<l&&(i=l),[n>o.height(),i>o.width()]},y=function(){var e=A(this),t=e.data(H),o=t.opt,a=A("#mCSB_"+t.idx),n=A("#mCSB_"+t.idx+"_container"),i=[A("#mCSB_"+t.idx+"_dragger_vertical"),A("#mCSB_"+t.idx+"_dragger_horizontal")];if(G(e),("x"!==o.axis&&!t.overflowed[0]||"y"===o.axis&&t.overflowed[0])&&(i[0].add(n).css("top",0),J(e,"_resetY")),"y"!==o.axis&&!t.overflowed[1]||"x"===o.axis&&t.overflowed[1]){var r=dx=0;"rtl"===t.langDir&&(r=a.width()-n.outerWidth(!1),dx=Math.abs(r/t.scrollRatio.x)),n.css("left",r),i[1].css("left",dx),J(e,"_resetX")}},B=function(){var t=A(this),e=t.data(H),o=e.opt;if(!e.bindEvents){var a;if(r.call(this),o.contentTouchScroll&&O.call(this),D.call(this),o.mouseWheel.enable)!function e(){a=setTimeout(function(){A.event.special.mousewheel?(clearTimeout(a),I.call(t[0])):e()},100)}();L.call(this),j.call(this),o.advanced.autoScrollOnFocus&&Y.call(this),o.scrollButtons.enable&&F.call(this),o.keyboard.enable&&q.call(this),e.bindEvents=!0}},T=function(){var e=A(this),t=e.data(H),o=t.opt,a=H+"_"+t.idx,n=".mCSB_"+t.idx+"_scrollbar",i=A("#mCSB_"+t.idx+",#mCSB_"+t.idx+"_container,#mCSB_"+t.idx+"_container_wrapper,"+n+" ."+S[12]+",#mCSB_"+t.idx+"_dragger_vertical,#mCSB_"+t.idx+"_dragger_horizontal,"+n+">a"),r=A("#mCSB_"+t.idx+"_container");o.advanced.releaseDraggableSelectors&&i.add(A(o.advanced.releaseDraggableSelectors)),o.advanced.extraDraggableSelectors&&i.add(A(o.advanced.extraDraggableSelectors)),t.bindEvents&&(A(document).add(A(!X()||top.document)).unbind("."+a),i.each(function(){A(this).unbind("."+a)}),clearTimeout(e[0]._focusTimeout),te(e[0],"_focusTimeout"),clearTimeout(t.sequential.step),te(t.sequential,"step"),clearTimeout(r[0].onCompleteTimeout),te(r[0],"onCompleteTimeout"),t.bindEvents=!1)},k=function(e){var t=A(this),o=t.data(H),a=o.opt,n=A("#mCSB_"+o.idx+"_container_wrapper"),i=n.length?n:A("#mCSB_"+o.idx+"_container"),r=[A("#mCSB_"+o.idx+"_scrollbar_vertical"),A("#mCSB_"+o.idx+"_scrollbar_horizontal")],l=[r[0].find(".mCSB_dragger"),r[1].find(".mCSB_dragger")];"x"!==a.axis&&(o.overflowed[0]&&!e?(r[0].add(l[0]).add(r[0].children("a")).css("display","block"),i.removeClass(S[8]+" "+S[10])):(a.alwaysShowScrollbar?(2!==a.alwaysShowScrollbar&&l[0].css("display","none"),i.removeClass(S[10])):(r[0].css("display","none"),i.addClass(S[10])),i.addClass(S[8]))),"y"!==a.axis&&(o.overflowed[1]&&!e?(r[1].add(l[1]).add(r[1].children("a")).css("display","block"),i.removeClass(S[9]+" "+S[11])):(a.alwaysShowScrollbar?(2!==a.alwaysShowScrollbar&&l[1].css("display","none"),i.removeClass(S[11])):(r[1].css("display","none"),i.addClass(S[11])),i.addClass(S[9]))),o.overflowed[0]||o.overflowed[1]?t.removeClass(S[5]):t.addClass(S[5])},U=function(e){var t=e.type,o=e.target.ownerDocument!==document&&null!==frameElement?[A(frameElement).offset().top,A(frameElement).offset().left]:null,a=X()&&e.target.ownerDocument!==top.document&&null!==frameElement?[A(e.view.frameElement).offset().top,A(e.view.frameElement).offset().left]:[0,0];switch(t){case"pointerdown":case"MSPointerDown":case"pointermove":case"MSPointerMove":case"pointerup":case"MSPointerUp":return o?[e.originalEvent.pageY-o[0]+a[0],e.originalEvent.pageX-o[1]+a[1],!1]:[e.originalEvent.pageY,e.originalEvent.pageX,!1];case"touchstart":case"touchmove":case"touchend":var n=e.originalEvent.touches[0]||e.originalEvent.changedTouches[0],i=e.originalEvent.touches.length||e.originalEvent.changedTouches.length;return e.target.ownerDocument!==document?[n.screenY,n.screenX,1<i]:[n.pageY,n.pageX,1<i];default:return o?[e.pageY-o[0]+a[0],e.pageX-o[1]+a[1],!1]:[e.pageY,e.pageX,!1]}},r=function(){var r,l,s,c=A(this),d=c.data(H),u=d.opt,e=H+"_"+d.idx,f=["mCSB_"+d.idx+"_dragger_vertical","mCSB_"+d.idx+"_dragger_horizontal"],h=A("#mCSB_"+d.idx+"_container"),t=A("#"+f[0]+",#"+f[1]),o=u.advanced.releaseDraggableSelectors?t.add(A(u.advanced.releaseDraggableSelectors)):t,a=u.advanced.extraDraggableSelectors?A(!X()||top.document).add(A(u.advanced.extraDraggableSelectors)):A(!X()||top.document);function n(e,t,o,a){if(h[0].idleTimer=u.scrollInertia<233?250:0,r.attr("id")===f[1])var n="x",i=(r[0].offsetLeft-t+a)*d.scrollRatio.x;else var n="y",i=(r[0].offsetTop-e+o)*d.scrollRatio.y;J(c,i.toString(),{dir:n,drag:!0})}t.bind("contextmenu."+e,function(e){e.preventDefault()}).bind("mousedown."+e+" touchstart."+e+" pointerdown."+e+" MSPointerDown."+e,function(e){if(e.stopImmediatePropagation(),e.preventDefault(),oe(e)){P=!0,g&&(document.onselectstart=function(){return!1}),R.call(h,!1),G(c);var t=(r=A(this)).offset(),o=U(e)[0]-t.top,a=U(e)[1]-t.left,n=r.height()+t.top,i=r.width()+t.left;o<n&&0<o&&a<i&&0<a&&(l=o,s=a),M(r,"active",u.autoExpandScrollbar)}}).bind("touchmove."+e,function(e){e.stopImmediatePropagation(),e.preventDefault();var t=r.offset(),o=U(e)[0]-t.top,a=U(e)[1]-t.left;n(l,s,o,a)}),A(document).add(a).bind("mousemove."+e+" pointermove."+e+" MSPointerMove."+e,function(e){if(r){var t=r.offset(),o=U(e)[0]-t.top,a=U(e)[1]-t.left;if(l===o&&s===a)return;n(l,s,o,a)}}).add(o).bind("mouseup."+e+" touchend."+e+" pointerup."+e+" MSPointerUp."+e,function(e){r&&(M(r,"active",u.autoExpandScrollbar),r=null),P=!1,g&&(document.onselectstart=null),R.call(h,!0)})},O=function(){var d,c,u,f,h,m,p,g,v,x,w,_,S,b,C=A(this),y=C.data(H),B=y.opt,e=H+"_"+y.idx,T=A("#mCSB_"+y.idx),M=A("#mCSB_"+y.idx+"_container"),k=[A("#mCSB_"+y.idx+"_dragger_vertical"),A("#mCSB_"+y.idx+"_dragger_horizontal")],O=[],D=[],I="yx"===B.axis?"none":"all",E=[],t=M.find("iframe"),o=["touchstart."+e+" pointerdown."+e+" MSPointerDown."+e,"touchmove."+e+" pointermove."+e+" MSPointerMove."+e,"touchend."+e+" pointerup."+e+" MSPointerUp."+e],R=void 0!==document.body.style.touchAction&&""!==document.body.style.touchAction;function a(e){if(!ae(e)||P||U(e)[2])z=0;else{b=S=0,d=z=1,C.removeClass("mCS_touch_action");var t=M.offset();c=U(e)[0]-t.top,u=U(e)[1]-t.left,E=[U(e)[0],U(e)[1]]}}function n(e){if(ae(e)&&!P&&!U(e)[2]&&(B.documentTouchScroll||e.preventDefault(),e.stopImmediatePropagation(),(!b||S)&&d)){p=$();var t=T.offset(),o=U(e)[0]-t.top,a=U(e)[1]-t.left,n="mcsLinearOut";if(O.push(o),D.push(a),E[2]=Math.abs(U(e)[0]-E[0]),E[3]=Math.abs(U(e)[1]-E[1]),y.overflowed[0])var i=k[0].parent().height()-k[0].height(),r=0<c-o&&o-c>-i*y.scrollRatio.y&&(2*E[3]<E[2]||"yx"===B.axis);if(y.overflowed[1])var l=k[1].parent().width()-k[1].width(),s=0<u-a&&a-u>-l*y.scrollRatio.x&&(2*E[2]<E[3]||"yx"===B.axis);r||s?(R||e.preventDefault(),S=1):(b=1,C.addClass("mCS_touch_action")),R&&e.preventDefault(),w="yx"===B.axis?[c-o,u-a]:"x"===B.axis?[null,u-a]:[c-o,null],M[0].idleTimer=250,y.overflowed[0]&&L(w[0],0,n,"y","all",!0),y.overflowed[1]&&L(w[1],0,n,"x",I,!0)}}function i(e){if(!ae(e)||P||U(e)[2])z=0;else{z=1,e.stopImmediatePropagation(),G(C),m=$();var t=T.offset();f=U(e)[0]-t.top,h=U(e)[1]-t.left,O=[],D=[]}}function r(e){if(ae(e)&&!P&&!U(e)[2]){d=0,e.stopImmediatePropagation(),b=S=0,g=$();var t=T.offset(),o=U(e)[0]-t.top,a=U(e)[1]-t.left;if(!(30<g-p)){var n="mcsEaseOut",i=(x=1e3/(g-m))<2.5,r=i?[O[O.length-2],D[D.length-2]]:[0,0];v=i?[o-r[0],a-r[1]]:[o-f,a-h];var l=[Math.abs(v[0]),Math.abs(v[1])];x=i?[Math.abs(v[0]/4),Math.abs(v[1]/4)]:[x,x];var s=[Math.abs(M[0].offsetTop)-v[0]*W(l[0]/x[0],x[0]),Math.abs(M[0].offsetLeft)-v[1]*W(l[1]/x[1],x[1])];w="yx"===B.axis?[s[0],s[1]]:"x"===B.axis?[null,s[1]]:[s[0],null],_=[4*l[0]+B.scrollInertia,4*l[1]+B.scrollInertia];var c=parseInt(B.contentTouchScroll)||0;w[0]=c<l[0]?w[0]:0,w[1]=c<l[1]?w[1]:0,y.overflowed[0]&&L(w[0],_[0],n,"y",I,!1),y.overflowed[1]&&L(w[1],_[1],n,"x",I,!1)}}}function W(e,t){var o=[1.5*t,2*t,t/1.5,t/2];return 90<e?4<t?o[0]:o[3]:60<e?3<t?o[3]:o[2]:30<e?8<t?o[1]:6<t?o[0]:4<t?t:o[2]:8<t?t:o[3]}function L(e,t,o,a,n,i){e&&J(C,e.toString(),{dur:t,scrollEasing:o,dir:a,overwrite:n,drag:i})}M.bind(o[0],function(e){a(e)}).bind(o[1],function(e){n(e)}),T.bind(o[0],function(e){i(e)}).bind(o[2],function(e){r(e)}),t.length&&t.each(function(){A(this).bind("load",function(){X(this)&&A(this.contentDocument||this.contentWindow.document).bind(o[0],function(e){a(e),i(e)}).bind(o[1],function(e){n(e)}).bind(o[2],function(e){r(e)})})})},D=function(){var n,a=A(this),i=a.data(H),r=i.opt,l=i.sequential,e=H+"_"+i.idx,s=A("#mCSB_"+i.idx+"_container"),c=s.parent();function d(e,t,o){l.type=o&&n?"stepped":"stepless",l.scrollAmount=10,N(a,e,t,"mcsLinearOut",o?60:null)}s.bind("mousedown."+e,function(e){z||n||(n=1,P=!0)}).add(document).bind("mousemove."+e,function(e){if(!z&&n&&(window.getSelection?window.getSelection().toString():document.selection&&"Control"!=document.selection.type&&document.selection.createRange().text)){var t=s.offset(),o=U(e)[0]-t.top+s[0].offsetTop,a=U(e)[1]-t.left+s[0].offsetLeft;0<o&&o<c.height()&&0<a&&a<c.width()?l.step&&d("off",null,"stepped"):("x"!==r.axis&&i.overflowed[0]&&(o<0?d("on",38):o>c.height()&&d("on",40)),"y"!==r.axis&&i.overflowed[1]&&(a<0?d("on",37):a>c.width()&&d("on",39)))}}).bind("mouseup."+e+" dragend."+e,function(e){z||(n&&(n=0,d("off",null)),P=!1)})},I=function(){if(A(this).data(H)){var u=A(this),f=u.data(H),h=f.opt,e=H+"_"+f.idx,m=A("#mCSB_"+f.idx),p=[A("#mCSB_"+f.idx+"_dragger_vertical"),A("#mCSB_"+f.idx+"_dragger_horizontal")],t=A("#mCSB_"+f.idx+"_container").find("iframe");t.length&&t.each(function(){A(this).bind("load",function(){X(this)&&A(this.contentDocument||this.contentWindow.document).bind("mousewheel."+e,function(e,t){o(e,t)})})}),m.bind("mousewheel."+e,function(e,t){o(e,t)})}function o(e,t){if(G(u),!W(u,e.target)){var o="auto"!==h.mouseWheel.deltaFactor?parseInt(h.mouseWheel.deltaFactor):g&&e.deltaFactor<100?100:e.deltaFactor||100,a=h.scrollInertia;if("x"===h.axis||"x"===h.mouseWheel.axis)var n="x",i=[Math.round(o*f.scrollRatio.x),parseInt(h.mouseWheel.scrollAmount)],r="auto"!==h.mouseWheel.scrollAmount?i[1]:i[0]>=m.width()?.9*m.width():i[0],l=Math.abs(A("#mCSB_"+f.idx+"_container")[0].offsetLeft),s=p[1][0].offsetLeft,c=p[1].parent().width()-p[1].width(),d="y"===h.mouseWheel.axis?e.deltaY||t:e.deltaX;else var n="y",i=[Math.round(o*f.scrollRatio.y),parseInt(h.mouseWheel.scrollAmount)],r="auto"!==h.mouseWheel.scrollAmount?i[1]:i[0]>=m.height()?.9*m.height():i[0],l=Math.abs(A("#mCSB_"+f.idx+"_container")[0].offsetTop),s=p[0][0].offsetTop,c=p[0].parent().height()-p[0].height(),d=e.deltaY||t;"y"===n&&!f.overflowed[0]||"x"===n&&!f.overflowed[1]||((h.mouseWheel.invert||e.webkitDirectionInvertedFromDevice)&&(d=-d),h.mouseWheel.normalizeDelta&&(d=d<0?-1:1),(0<d&&0!==s||d<0&&s!==c||h.mouseWheel.preventDefault)&&(e.stopImmediatePropagation(),e.preventDefault()),e.deltaFactor<5&&!h.mouseWheel.normalizeDelta&&(r=e.deltaFactor,a=17),J(u,(l-d*r).toString(),{dir:n,dur:a}))}}},E=new Object,X=function(e){var t=!1,o=!1,a=null;if(void 0===e?o="#empty":void 0!==A(e).attr("id")&&(o=A(e).attr("id")),!1!==o&&void 0!==E[o])return E[o];if(e){try{var n=e.contentDocument||e.contentWindow.document;a=n.body.innerHTML}catch(e){}t=null!==a}else{try{var n=top.document;a=n.body.innerHTML}catch(e){}t=null!==a}return!1!==o&&(E[o]=t),t},R=function(e){var t=this.find("iframe");if(t.length){var o=e?"auto":"none";t.css("pointer-events",o)}},W=function(e,t){var o=t.nodeName.toLowerCase(),a=e.data(H).opt.mouseWheel.disableOver;return-1<A.inArray(o,a)&&!(-1<A.inArray(o,["select","textarea"])&&!A(t).is(":focus"))},L=function(){var r,l=A(this),s=l.data(H),e=H+"_"+s.idx,c=A("#mCSB_"+s.idx+"_container"),d=c.parent(),t=A(".mCSB_"+s.idx+"_scrollbar ."+S[12]);t.bind("mousedown."+e+" touchstart."+e+" pointerdown."+e+" MSPointerDown."+e,function(e){P=!0,A(e.target).hasClass("mCSB_dragger")||(r=1)}).bind("touchend."+e+" pointerup."+e+" MSPointerUp."+e,function(e){P=!1}).bind("click."+e,function(e){if(r&&(r=0,A(e.target).hasClass(S[12])||A(e.target).hasClass("mCSB_draggerRail"))){G(l);var t=A(this),o=t.find(".mCSB_dragger");if(0<t.parent(".mCSB_scrollTools_horizontal").length){if(!s.overflowed[1])return;var a="x",n=e.pageX>o.offset().left?-1:1,i=Math.abs(c[0].offsetLeft)-n*(.9*d.width())}else{if(!s.overflowed[0])return;var a="y",n=e.pageY>o.offset().top?-1:1,i=Math.abs(c[0].offsetTop)-n*(.9*d.height())}J(l,i.toString(),{dir:a,scrollEasing:"mcsEaseInOut"})}})},Y=function(){var i=A(this),e=i.data(H),r=e.opt,t=H+"_"+e.idx,l=A("#mCSB_"+e.idx+"_container"),s=l.parent();l.bind("focusin."+t,function(e){var n=A(document.activeElement),t=l.find(".mCustomScrollBox").length;n.is(r.advanced.autoScrollOnFocus)&&(G(i),clearTimeout(i[0]._focusTimeout),i[0]._focusTimer=t?17*t:0,i[0]._focusTimeout=setTimeout(function(){var e=[ie(n)[0],ie(n)[1]],t=[l[0].offsetTop,l[0].offsetLeft],o=[0<=t[0]+e[0]&&t[0]+e[0]<s.height()-n.outerHeight(!1),0<=t[1]+e[1]&&t[0]+e[1]<s.width()-n.outerWidth(!1)],a="yx"!==r.axis||o[0]||o[1]?"all":"none";"x"===r.axis||o[0]||J(i,e[0].toString(),{dir:"y",scrollEasing:"mcsEaseInOut",overwrite:a,dur:0}),"y"===r.axis||o[1]||J(i,e[1].toString(),{dir:"x",scrollEasing:"mcsEaseInOut",overwrite:a,dur:0})},i[0]._focusTimer))})},j=function(){var e=A(this),t=e.data(H),o=H+"_"+t.idx,a=A("#mCSB_"+t.idx+"_container").parent();a.bind("scroll."+o,function(e){0===a.scrollTop()&&0===a.scrollLeft()||A(".mCSB_"+t.idx+"_scrollbar").css("visibility","hidden")})},F=function(){var a=A(this),n=a.data(H),i=n.opt,r=n.sequential,e=H+"_"+n.idx,t=".mCSB_"+n.idx+"_scrollbar",o=A(t+">a");o.bind("contextmenu."+e,function(e){e.preventDefault()}).bind("mousedown."+e+" touchstart."+e+" pointerdown."+e+" MSPointerDown."+e+" mouseup."+e+" touchend."+e+" pointerup."+e+" MSPointerUp."+e+" mouseout."+e+" pointerout."+e+" MSPointerOut."+e+" click."+e,function(e){if(e.preventDefault(),oe(e)){var t=A(this).attr("class");switch(r.type=i.scrollButtons.scrollType,e.type){case"mousedown":case"touchstart":case"pointerdown":case"MSPointerDown":if("stepped"===r.type)return;P=!0,n.tweenRunning=!1,o("on",t);break;case"mouseup":case"touchend":case"pointerup":case"MSPointerUp":case"mouseout":case"pointerout":case"MSPointerOut":if("stepped"===r.type)return;P=!1,r.dir&&o("off",t);break;case"click":if("stepped"!==r.type||n.tweenRunning)return;o("on",t)}}function o(e,t){r.scrollAmount=i.scrollButtons.scrollAmount,N(a,e,t)}})},q=function(){var l=A(this),s=l.data(H),c=s.opt,d=s.sequential,e=H+"_"+s.idx,t=A("#mCSB_"+s.idx),u=A("#mCSB_"+s.idx+"_container"),f=u.parent(),h="input,textarea,select,datalist,keygen,[contenteditable='true']",o=u.find("iframe"),a=["blur."+e+" keydown."+e+" keyup."+e];function n(e){switch(e.type){case"blur":s.tweenRunning&&d.dir&&r("off",null);break;case"keydown":case"keyup":var t=e.keyCode?e.keyCode:e.which,o="on";if("x"!==c.axis&&(38===t||40===t)||"y"!==c.axis&&(37===t||39===t)){if((38===t||40===t)&&!s.overflowed[0]||(37===t||39===t)&&!s.overflowed[1])return;"keyup"===e.type&&(o="off"),A(document.activeElement).is(h)||(e.preventDefault(),e.stopImmediatePropagation(),r(o,t))}else if(33===t||34===t){if((s.overflowed[0]||s.overflowed[1])&&(e.preventDefault(),e.stopImmediatePropagation()),"keyup"===e.type){G(l);var a=34===t?-1:1;if("x"===c.axis||"yx"===c.axis&&s.overflowed[1]&&!s.overflowed[0])var n="x",i=Math.abs(u[0].offsetLeft)-a*(.9*f.width());else var n="y",i=Math.abs(u[0].offsetTop)-a*(.9*f.height());J(l,i.toString(),{dir:n,scrollEasing:"mcsEaseInOut"})}}else if((35===t||36===t)&&!A(document.activeElement).is(h)&&((s.overflowed[0]||s.overflowed[1])&&(e.preventDefault(),e.stopImmediatePropagation()),"keyup"===e.type)){if("x"===c.axis||"yx"===c.axis&&s.overflowed[1]&&!s.overflowed[0])var n="x",i=35===t?Math.abs(f.width()-u.outerWidth(!1)):0;else var n="y",i=35===t?Math.abs(f.height()-u.outerHeight(!1)):0;J(l,i.toString(),{dir:n,scrollEasing:"mcsEaseInOut"})}}function r(e,t){d.type=c.keyboard.scrollType,d.scrollAmount=c.keyboard.scrollAmount,"stepped"===d.type&&s.tweenRunning||N(l,e,t)}}o.length&&o.each(function(){A(this).bind("load",function(){X(this)&&A(this.contentDocument||this.contentWindow.document).bind(a[0],function(e){n(e)})})}),t.attr("tabindex","0").bind(a[0],function(e){n(e)})},N=function(u,e,t,f,h){var m=u.data(H),p=m.opt,g=m.sequential,v=A("#mCSB_"+m.idx+"_container"),o="stepped"===g.type,x=p.scrollInertia<26?26:p.scrollInertia,w=p.scrollInertia<1?17:p.scrollInertia;switch(e){case"on":if(g.dir=[t===S[16]||t===S[15]||39===t||37===t?"x":"y",t===S[13]||t===S[15]||38===t||37===t?-1:1],G(u),ne(t)&&"stepped"===g.type)return;_(o);break;case"off":clearTimeout(g.step),te(g,"step"),G(u),(o||m.tweenRunning&&g.dir)&&_(!0)}function _(e){p.snapAmount&&(g.scrollAmount=p.snapAmount instanceof Array?"x"===g.dir[0]?p.snapAmount[1]:p.snapAmount[0]:p.snapAmount);var t="stepped"!==g.type,o=h||(e?t?x/1.5:w:1e3/60),a=e?t?7.5:40:2.5,n=[Math.abs(v[0].offsetTop),Math.abs(v[0].offsetLeft)],i=[10<m.scrollRatio.y?10:m.scrollRatio.y,10<m.scrollRatio.x?10:m.scrollRatio.x],r="x"===g.dir[0]?n[1]+g.dir[1]*(i[1]*a):n[0]+g.dir[1]*(i[0]*a),l="x"===g.dir[0]?n[1]+g.dir[1]*parseInt(g.scrollAmount):n[0]+g.dir[1]*parseInt(g.scrollAmount),s="auto"!==g.scrollAmount?l:r,c=f||(e?t?"mcsLinearOut":"mcsEaseInOut":"mcsLinear"),d=!!e;e&&o<17&&(s="x"===g.dir[0]?n[1]:n[0]),J(u,s.toString(),{dir:g.dir[0],scrollEasing:c,dur:o,onComplete:d}),e?g.dir=!1:(clearTimeout(g.step),g.step=setTimeout(function(){_()},o))}},V=function(e){var t=A(this).data(H).opt,o=[];return"function"==typeof e&&(e=e()),e instanceof Array?o=1<e.length?[e[0],e[1]]:"x"===t.axis?[null,e[0]]:[e[0],null]:(o[0]=e.y?e.y:e.x||"x"===t.axis?null:e,o[1]=e.x?e.x:e.y||"y"===t.axis?null:e),"function"==typeof o[0]&&(o[0]=o[0]()),"function"==typeof o[1]&&(o[1]=o[1]()),o},Q=function(e,t){if(null!=e&&void 0!==e){var o=A(this),a=o.data(H),n=a.opt,i=A("#mCSB_"+a.idx+"_container"),r=i.parent(),l=typeof e;t||(t="x"===n.axis?"x":"y");var s="x"===t?i.outerWidth(!1)-r.width():i.outerHeight(!1)-r.height(),c="x"===t?i[0].offsetLeft:i[0].offsetTop,d="x"===t?"left":"top";switch(l){case"function":return e();case"object":var u=e.jquery?e:A(e);if(!u.length)return;return"x"===t?ie(u)[1]:ie(u)[0];case"string":case"number":if(ne(e))return Math.abs(e);if(-1!==e.indexOf("%"))return Math.abs(s*parseInt(e)/100);if(-1!==e.indexOf("-="))return Math.abs(c-parseInt(e.split("-=")[1]));if(-1!==e.indexOf("+=")){var f=c+parseInt(e.split("+=")[1]);return 0<=f?0:Math.abs(f)}if(-1!==e.indexOf("px")&&ne(e.split("px")[0]))return Math.abs(e.split("px")[0]);if("top"===e||"left"===e)return 0;if("bottom"===e)return Math.abs(r.height()-i.outerHeight(!1));if("right"===e)return Math.abs(r.width()-i.outerWidth(!1));if("first"===e||"last"===e){var u=i.find(":"+e);return"x"===t?ie(u)[1]:ie(u)[0]}return A(e).length?"x"===t?ie(A(e))[1]:ie(A(e))[0]:(i.css(d,e),void m.update.call(null,o[0]))}}},Z=function(e){var t=A(this),o=t.data(H),a=o.opt,n=A("#mCSB_"+o.idx+"_container");if(e)return clearTimeout(n[0].autoUpdate),void te(n[0],"autoUpdate");function i(e){clearTimeout(n[0].autoUpdate),m.update.call(null,t[0],e)}!function e(){clearTimeout(n[0].autoUpdate),0!==t.parents("html").length?n[0].autoUpdate=setTimeout(function(){return a.advanced.updateOnSelectorChange&&(o.poll.change.n=function(){!0===a.advanced.updateOnSelectorChange&&(a.advanced.updateOnSelectorChange="*");var e=0,t=n.find(a.advanced.updateOnSelectorChange);return a.advanced.updateOnSelectorChange&&0<t.length&&t.each(function(){e+=this.offsetHeight+this.offsetWidth}),e}(),o.poll.change.n!==o.poll.change.o)?(o.poll.change.o=o.poll.change.n,void i(3)):a.advanced.updateOnContentResize&&(o.poll.size.n=t[0].scrollHeight+t[0].scrollWidth+n[0].offsetHeight+t[0].offsetHeight+t[0].offsetWidth,o.poll.size.n!==o.poll.size.o)?(o.poll.size.o=o.poll.size.n,void i(1)):!a.advanced.updateOnImageLoad||"auto"===a.advanced.updateOnImageLoad&&"y"===a.axis||(o.poll.img.n=n.find("img").length,o.poll.img.n===o.poll.img.o)?void((a.advanced.updateOnSelectorChange||a.advanced.updateOnContentResize||a.advanced.updateOnImageLoad)&&e()):(o.poll.img.o=o.poll.img.n,void n.find("img").each(function(){!function(e){if(A(e).hasClass(S[2]))return i();var t,o,a=new Image;a.onload=(t=a,o=function(){this.onload=null,A(e).addClass(S[2]),i(2)},function(){return o.apply(t,arguments)}),a.src=e.src}(this)}))},a.advanced.autoUpdateTimeout):t=null}()},G=function(e){var t=e.data(H),o=A("#mCSB_"+t.idx+"_container,#mCSB_"+t.idx+"_container_wrapper,#mCSB_"+t.idx+"_dragger_vertical,#mCSB_"+t.idx+"_dragger_horizontal");o.each(function(){ee.call(this)})},J=function(n,e,i){var t=n.data(H),o=t.opt,a={trigger:"internal",dir:"y",scrollEasing:"mcsEaseOut",drag:!1,dur:o.scrollInertia,overwrite:"all",callbacks:!0,onStart:!0,onUpdate:!0,onComplete:!0},i=A.extend(a,i),r=[i.dur,i.drag?0:i.dur],l=A("#mCSB_"+t.idx),s=A("#mCSB_"+t.idx+"_container"),c=s.parent(),d=o.callbacks.onTotalScrollOffset?V.call(n,o.callbacks.onTotalScrollOffset):[0,0],u=o.callbacks.onTotalScrollBackOffset?V.call(n,o.callbacks.onTotalScrollBackOffset):[0,0];if(t.trigger=i.trigger,0===c.scrollTop()&&0===c.scrollLeft()||(A(".mCSB_"+t.idx+"_scrollbar").css("visibility","visible"),c.scrollTop(0).scrollLeft(0)),"_resetY"!==e||t.contentReset.y||(B("onOverflowYNone")&&o.callbacks.onOverflowYNone.call(n[0]),t.contentReset.y=1),"_resetX"!==e||t.contentReset.x||(B("onOverflowXNone")&&o.callbacks.onOverflowXNone.call(n[0]),t.contentReset.x=1),"_resetY"!==e&&"_resetX"!==e){if(!t.contentReset.y&&n[0].mcs||!t.overflowed[0]||(B("onOverflowY")&&o.callbacks.onOverflowY.call(n[0]),t.contentReset.x=null),!t.contentReset.x&&n[0].mcs||!t.overflowed[1]||(B("onOverflowX")&&o.callbacks.onOverflowX.call(n[0]),t.contentReset.x=null),o.snapAmount){var f=o.snapAmount instanceof Array?"x"===i.dir?o.snapAmount[1]:o.snapAmount[0]:o.snapAmount;h=e,m=f,p=o.snapOffset,e=Math.round(h/m)*m-p}var h,m,p;switch(i.dir){case"x":var g=A("#mCSB_"+t.idx+"_dragger_horizontal"),v="left",x=s[0].offsetLeft,w=[l.width()-s.outerWidth(!1),g.parent().width()-g.width()],_=[e,0===e?0:e/t.scrollRatio.x],S=d[1],b=u[1],C=0<S?S/t.scrollRatio.x:0,y=0<b?b/t.scrollRatio.x:0;break;case"y":var g=A("#mCSB_"+t.idx+"_dragger_vertical"),v="top",x=s[0].offsetTop,w=[l.height()-s.outerHeight(!1),g.parent().height()-g.height()],_=[e,0===e?0:e/t.scrollRatio.y],S=d[0],b=u[0],C=0<S?S/t.scrollRatio.y:0,y=0<b?b/t.scrollRatio.y:0}_[1]<0||0===_[0]&&0===_[1]?_=[0,0]:_[1]>=w[1]?_=[w[0],w[1]]:_[0]=-_[0],n[0].mcs||(T(),B("onInit")&&o.callbacks.onInit.call(n[0])),clearTimeout(s[0].onCompleteTimeout),K(g[0],v,Math.round(_[1]),r[1],i.scrollEasing),!t.tweenRunning&&(0===x&&0<=_[0]||x===w[0]&&_[0]<=w[0])||K(s[0],v,Math.round(_[0]),r[0],i.scrollEasing,i.overwrite,{onStart:function(){i.callbacks&&i.onStart&&!t.tweenRunning&&(B("onScrollStart")&&(T(),o.callbacks.onScrollStart.call(n[0])),t.tweenRunning=!0,M(g),t.cbOffsets=[o.callbacks.alwaysTriggerOffsets||x>=w[0]+S,o.callbacks.alwaysTriggerOffsets||x<=-b])},onUpdate:function(){i.callbacks&&i.onUpdate&&B("whileScrolling")&&(T(),o.callbacks.whileScrolling.call(n[0]))},onComplete:function(){if(i.callbacks&&i.onComplete){"yx"===o.axis&&clearTimeout(s[0].onCompleteTimeout);var e=s[0].idleTimer||0;s[0].onCompleteTimeout=setTimeout(function(){B("onScroll")&&(T(),o.callbacks.onScroll.call(n[0])),B("onTotalScroll")&&_[1]>=w[1]-C&&t.cbOffsets[0]&&(T(),o.callbacks.onTotalScroll.call(n[0])),B("onTotalScrollBack")&&_[1]<=y&&t.cbOffsets[1]&&(T(),o.callbacks.onTotalScrollBack.call(n[0])),t.tweenRunning=!1,s[0].idleTimer=0,M(g,"hide")},e)}}})}function B(e){return t&&o.callbacks[e]&&"function"==typeof o.callbacks[e]}function T(){var e=[s[0].offsetTop,s[0].offsetLeft],t=[g[0].offsetTop,g[0].offsetLeft],o=[s.outerHeight(!1),s.outerWidth(!1)],a=[l.height(),l.width()];n[0].mcs={content:s,top:e[0],left:e[1],draggerTop:t[0],draggerLeft:t[1],topPct:Math.round(100*Math.abs(e[0])/(Math.abs(o[0])-a[0])),leftPct:Math.round(100*Math.abs(e[1])/(Math.abs(o[1])-a[1])),direction:i.dir}}},K=function(e,t,o,a,n,i,r){e._mTween||(e._mTween={top:{},left:{}});var l,s,r=r||{},c=r.onStart||function(){},d=r.onUpdate||function(){},u=r.onComplete||function(){},f=$(),h=0,m=e.offsetTop,p=e.style,g=e._mTween[t];"left"===t&&(m=e.offsetLeft);var v=o-m;function x(){g.stop||(h||c.call(),h=$()-f,w(),h>=g.time&&(g.time=h>g.time?h+l-(h-g.time):h+l-1,g.time<h+1&&(g.time=h+1)),g.time<a?g.id=s(x):u.call())}function w(){0<a?(g.currVal=function(e,t,o,a,n){switch(n){case"linear":case"mcsLinear":return o*e/a+t;case"mcsLinearOut":return e/=a,e--,o*Math.sqrt(1-e*e)+t;case"easeInOutSmooth":return(e/=a/2)<1?o/2*e*e+t:-o/2*(--e*(e-2)-1)+t;case"easeInOutStrong":return(e/=a/2)<1?o/2*Math.pow(2,10*(e-1))+t:(e--,o/2*(2-Math.pow(2,-10*e))+t);case"easeInOut":case"mcsEaseInOut":return(e/=a/2)<1?o/2*e*e*e+t:o/2*((e-=2)*e*e+2)+t;case"easeOutSmooth":return e/=a,-o*(--e*e*e*e-1)+t;case"easeOutStrong":return o*(1-Math.pow(2,-10*e/a))+t;case"easeOut":case"mcsEaseOut":default:var i=(e/=a)*e,r=i*e;return t+o*(.499999999999997*r*i+-2.5*i*i+5.5*r+-6.5*i+4*e)}}(g.time,m,v,a,n),p[t]=Math.round(g.currVal)+"px"):p[t]=o+"px",d.call()}g.stop=0,"none"!==i&&null!=g.id&&(window.requestAnimationFrame?window.cancelAnimationFrame(g.id):clearTimeout(g.id),g.id=null),l=1e3/60,g.time=h+l,s=window.requestAnimationFrame?window.requestAnimationFrame:function(e){return w(),setTimeout(e,.01)},g.id=s(x)},$=function(){return window.performance&&window.performance.now?window.performance.now():window.performance&&window.performance.webkitNow?window.performance.webkitNow():Date.now?Date.now():(new Date).getTime()},ee=function(){var e=this;e._mTween||(e._mTween={top:{},left:{}});for(var t=["top","left"],o=0;o<t.length;o++){var a=t[o];e._mTween[a].id&&(window.requestAnimationFrame?window.cancelAnimationFrame(e._mTween[a].id):clearTimeout(e._mTween[a].id),e._mTween[a].id=null,e._mTween[a].stop=1)}},te=function(t,o){try{delete t[o]}catch(e){t[o]=null}},oe=function(e){return!(e.which&&1!==e.which)},ae=function(e){var t=e.originalEvent.pointerType;return!(t&&"touch"!==t&&2!==t)},ne=function(e){return!isNaN(parseFloat(e))&&isFinite(e)},ie=function(e){var t=e.parents(".mCSB_container");return[e.offset().top-t.offset().top,e.offset().left-t.offset().left]},re=function(){var e=function(){var e=["webkit","moz","ms","o"];if("hidden"in document)return"hidden";for(var t=0;t<e.length;t++)if(e[t]+"Hidden"in document)return e[t]+"Hidden";return null}();return!!e&&document[e]},A.fn[h]=function(e){return m[e]?m[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void A.error("Method "+e+" does not exist"):m.init.apply(this,arguments)},A[h]=function(e){return m[e]?m[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void A.error("Method "+e+" does not exist"):m.init.apply(this,arguments)},A[h].defaults=n,window[h]=!0,A(window).bind("load",function(){A(a)[h](),A.extend(A.expr[":"],{mcsInView:A.expr[":"].mcsInView||function(e){var t,o,a=A(e),n=a.parents(".mCSB_container");if(n.length)return t=n.parent(),0<=(o=[n[0].offsetTop,n[0].offsetLeft])[0]+ie(a)[0]&&o[0]+ie(a)[0]<t.height()-a.outerHeight(!1)&&0<=o[1]+ie(a)[1]&&o[1]+ie(a)[1]<t.width()-a.outerWidth(!1)},mcsInSight:A.expr[":"].mcsInSight||function(e,t,o){var a,n,i,r,l=A(e),s=l.parents(".mCSB_container"),c="exact"===o[3]?[[1,0],[1,0]]:[[.9,.1],[.6,.4]];if(s.length)return a=[l.outerHeight(!1),l.outerWidth(!1)],i=[s[0].offsetTop+ie(l)[0],s[0].offsetLeft+ie(l)[1]],n=[s.parent()[0].offsetHeight,s.parent()[0].offsetWidth],i[0]-n[0]*(r=[a[0]<n[0]?c[0]:c[1],a[1]<n[1]?c[0]:c[1]])[0][0]<0&&0<=i[0]+a[0]-n[0]*r[0][1]&&i[1]-n[1]*r[1][0]<0&&0<=i[1]+a[1]-n[1]*r[1][1]},mcsOverflow:A.expr[":"].mcsOverflow||function(e){var t=A(e).data(H);if(t)return t.overflowed[0]||t.overflowed[1]}})})});
includes/admin/assets/js/um-admin-blocks-shortcode.js ADDED
@@ -0,0 +1,610 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function (blocks, editor, components, i18n, element) {
2
+ var um_el = wp.element.createElement,
3
+ UmRegisterBlockType = wp.blocks.registerBlockType,
4
+ UmRichText = wp.editor.RichText,
5
+ UmTextControl = wp.components.TextControl,
6
+ UmSelectControl = wp.components.SelectControl,
7
+ UmToggleControl = wp.components.ToggleControl,
8
+ UmPanelBody = wp.components.PanelBody,
9
+ UmRangeControl = wp.components.RangeControl,
10
+ UmSpinner = wp.components.Spinner,
11
+ UmData = wp.data,
12
+ UmWithSelect = wp.data.withSelect,
13
+ UmApiFetch = wp.apiFetch;
14
+
15
+ //-------------------------------------\\
16
+ //--------- Um Forms shortcode --------\\
17
+ //-------------------------------------\\
18
+
19
+ UmRegisterBlockType('um-block/um-forms', {
20
+ title: i18n.__( 'UM Form' , 'ultimate-member' ),
21
+ description: i18n.__( 'Chose display form', 'ultimate-member' ),
22
+ icon: 'forms',
23
+ category: 'um-blocks',
24
+ attributes: {
25
+ content: {
26
+ source: 'html',
27
+ selector: 'p'
28
+ },
29
+ form_id: {
30
+ type: 'select'
31
+ }
32
+ },
33
+
34
+ edit: UmWithSelect(function (select) {
35
+ return {
36
+ posts: select('core').getEntityRecords( 'postType', 'um_form', {
37
+ per_page: -1
38
+ })
39
+ };
40
+ })(function ( props ) {
41
+ var posts = props.posts,
42
+ className = props.className,
43
+ attributes = props.attributes,
44
+ setAttributes = props.setAttributes,
45
+ form_id = props.attributes.form_id,
46
+ content = props.attributes.content;
47
+
48
+ function get_option( posts ) {
49
+
50
+ var option = [];
51
+
52
+ posts.map( function( post ) {
53
+ option.push(
54
+ {
55
+ label: post.title.rendered,
56
+ value: post.id
57
+ }
58
+ );
59
+ });
60
+
61
+ return option;
62
+ }
63
+
64
+ function umShortcode( value ) {
65
+
66
+ var shortcode = '';
67
+
68
+ if ( value !== undefined ) {
69
+ shortcode = '[ultimatemember form_id="' + value + '"]';
70
+ }
71
+
72
+ return shortcode;
73
+ }
74
+
75
+
76
+ if ( ! posts ) {
77
+ return um_el(
78
+ 'p',
79
+ {
80
+ className: className
81
+ },
82
+ um_el(
83
+ UmSpinner,
84
+ null
85
+ ),
86
+ i18n.__( 'Loading Forms', 'ultimate-member' )
87
+ );
88
+ }
89
+
90
+ if ( 0 === posts.length ) {
91
+ return um_el(
92
+ 'p',
93
+ null,
94
+ i18n.__( 'No Posts', 'ultimate-member' )
95
+ );
96
+ }
97
+
98
+ if ( form_id === undefined ) {
99
+ props.setAttributes({ form_id: posts[0]['id'] });
100
+ var shortcode = umShortcode(posts[0]['id']);
101
+ props.setAttributes( { content: shortcode } );
102
+ }
103
+
104
+ var get_post = get_option( posts );
105
+
106
+ return um_el(
107
+ 'div',
108
+ {
109
+ className: className
110
+ },
111
+ um_el(
112
+ UmSelectControl,
113
+ {
114
+ label: i18n.__( 'Select Forms', 'ultimate-member' ),
115
+ className: "um_select_users",
116
+ type: 'number',
117
+ value: form_id,
118
+ options: get_post,
119
+ onChange: function onChange( value ) {
120
+ props.setAttributes({ form_id: value });
121
+ var shortcode = umShortcode(value);
122
+ props.setAttributes( { content: shortcode } );
123
+ }
124
+ }
125
+ )
126
+ );
127
+ } // end withSelect
128
+ ), // end edit
129
+
130
+ save: function save( props ) {
131
+
132
+ return um_el(
133
+ UmRichText.Content,
134
+ {
135
+ tagName: 'p',
136
+ className: props.className,
137
+ value: props.attributes.content
138
+ }
139
+ );
140
+ }
141
+
142
+ });
143
+
144
+ //-------------------------------------\\
145
+ //-- Um Member Directories shortcode --\\
146
+ //-------------------------------------\\
147
+
148
+ UmRegisterBlockType( 'um-block/um-member-directories', {
149
+ title: i18n.__( 'UM Member Directories', 'ultimate-member'),
150
+ description: i18n.__( 'Chose display form', 'ultimate-member' ),
151
+ icon: 'groups',
152
+ category: 'um-blocks',
153
+ attributes: {
154
+ content: {
155
+ source: 'html',
156
+ selector: 'p'
157
+ },
158
+ member_id: {
159
+ type: 'select'
160
+ }
161
+ },
162
+
163
+ edit: UmWithSelect( function( select ) {
164
+ return {
165
+ posts: select('core').getEntityRecords( 'postType', 'um_directory', {
166
+ per_page: -1
167
+ })
168
+ };
169
+ })(function ( props ) {
170
+ var posts = props.posts,
171
+ className = props.className,
172
+ attributes = props.attributes,
173
+ setAttributes = props.setAttributes,
174
+ member_id = props.attributes.member_id,
175
+ content = props.attributes.content;
176
+
177
+ function get_option( posts ) {
178
+ var option = [];
179
+
180
+ posts.map( function( post ) {
181
+ option.push(
182
+ {
183
+ label: post.title.rendered,
184
+ value: post.id
185
+ }
186
+ );
187
+ });
188
+
189
+ return option;
190
+ }
191
+
192
+ function umShortcode( value ) {
193
+
194
+ var shortcode = '';
195
+
196
+ if ( value !== undefined ) {
197
+ shortcode = '[ultimatemember form_id="' + value + '"]';
198
+ }
199
+
200
+ return shortcode;
201
+ }
202
+
203
+ if ( ! posts ) {
204
+ return um_el(
205
+ 'p',
206
+ {
207
+ className: className
208
+ },
209
+ um_el(
210
+ UmSpinner,
211
+ null
212
+ ),
213
+ i18n.__( 'Loading Forms', 'ultimate-member' )
214
+ );
215
+ }
216
+
217
+ if ( 0 === posts.length ) {
218
+ return um_el(
219
+ 'p',
220
+ null,
221
+ i18n.__( 'No Posts', 'ultimate-member' )
222
+ );
223
+ }
224
+
225
+ if ( member_id === undefined ) {
226
+ props.setAttributes({ member_id: posts[0]['id'] });
227
+ var shortcode = umShortcode(posts[0]['id']);
228
+ props.setAttributes( { content: shortcode } );
229
+ }
230
+
231
+ var get_post = get_option( posts );
232
+
233
+ return um_el(
234
+ 'div',
235
+ {
236
+ className: className
237
+ },
238
+ um_el(
239
+ UmSelectControl,
240
+ {
241
+ label: i18n.__( 'Select Directories', 'ultimate-member' ),
242
+ className: "um_select_member",
243
+ type: 'number',
244
+ value: member_id,
245
+ options: get_post,
246
+ onChange: function onChange( value ) {
247
+ props.setAttributes({ member_id: value });
248
+ var shortcode = umShortcode(value);
249
+ props.setAttributes( { content: shortcode } );
250
+ }
251
+ }
252
+ )
253
+ );
254
+ } // end withSelect
255
+ ), // end edit
256
+
257
+ save: function save( props ) {
258
+
259
+ return um_el(
260
+ UmRichText.Content,
261
+ {
262
+ tagName: 'p',
263
+ className: props.className,
264
+ value: props.attributes.content
265
+ }
266
+ );
267
+ }
268
+
269
+ });
270
+
271
+ //-------------------------------------\\
272
+ //--------- Um password reset ---------\\
273
+ //-------------------------------------\\
274
+ UmRegisterBlockType('um-block/um-password-reset', {
275
+ title: i18n.__( 'UM Password Reset', 'ultimate-member' ),
276
+ description: i18n.__( 'Password Reset', 'ultimate-member' ),
277
+ icon: 'unlock',
278
+ category: 'um-blocks',
279
+ attributes: {
280
+ content: {
281
+ source: 'html',
282
+ selector: 'p'
283
+ }
284
+ },
285
+
286
+ edit: function( props ) {
287
+ var content = props.attributes.content;
288
+ props.setAttributes({ content: '[ultimatemember_password]' });
289
+
290
+ return [
291
+ um_el(
292
+ "div",
293
+ {
294
+ className: "um-password-reset-wrapper"
295
+ },
296
+ i18n.__( 'Password Reset', 'ultimate-member' )
297
+ )
298
+ ]
299
+ },
300
+
301
+ save: function( props ) {
302
+
303
+ return um_el(
304
+ UmRichText.Content,
305
+ {
306
+ tagName: 'p',
307
+ className: props.className,
308
+ value: props.attributes.content
309
+ }
310
+ );
311
+ }
312
+ });
313
+
314
+ //-------------------------------------\\
315
+ //------------ Um Account -------------\\
316
+ //-------------------------------------\\
317
+ UmRegisterBlockType('um-block/um-account', {
318
+ title: i18n.__( 'UM Account', 'ultimate-member' ),
319
+ description: i18n.__( 'UM Account', 'ultimate-member' ),
320
+ icon: 'id',
321
+ category: 'um-blocks',
322
+ attributes: {
323
+ content: {
324
+ source: 'html',
325
+ selector: 'p'
326
+ },
327
+ tab: {
328
+ type: 'select'
329
+ }
330
+ },
331
+
332
+ edit: function( props ) {
333
+ var content = props.attributes.content,
334
+ tab = props.attributes.tab,
335
+ options = um_account_settings;
336
+
337
+ function get_options() {
338
+ var option = [];
339
+
340
+ option.push( { label: i18n.__( 'All', 'ultimate-member' ), value: 'all' } );
341
+
342
+ for ( var key in options ) {
343
+ if ( options.hasOwnProperty( key ) && options[ key ]['enabled'] ) {
344
+ option.push(
345
+ {
346
+ label: options[ key ]['label'],
347
+ value: key
348
+ }
349
+ )
350
+ }
351
+ }
352
+
353
+ return option;
354
+ }
355
+
356
+ function umShortcode( value ) {
357
+
358
+ var shortcode = '[ultimatemember_account';
359
+
360
+ if ( value != 'all' ) {
361
+ shortcode = shortcode + ' tab="' + value + '"';
362
+ }
363
+
364
+ shortcode = shortcode + ']';
365
+
366
+ props.setAttributes({ content: shortcode });
367
+ }
368
+
369
+ if ( content === undefined ) {
370
+ props.setAttributes({ content: '[ultimatemember_account]' });
371
+ }
372
+
373
+ return [
374
+ um_el(
375
+ "div",
376
+ {
377
+ className: "um-account-wrapper"
378
+ },
379
+ i18n.__( 'UM Account', 'ultimate-member' )
380
+ ),
381
+ um_el(
382
+ wp.editor.InspectorControls,
383
+ {},
384
+ um_el(
385
+ UmPanelBody,
386
+ {
387
+ title: i18n.__( 'Account Tab', 'ultimate-member' )
388
+ },
389
+ um_el(
390
+ UmSelectControl,
391
+ {
392
+ label: i18n.__( 'Select Tab', 'ultimate-member' ),
393
+ className: "um_select_account_tab",
394
+ type: 'number',
395
+ value: props.attributes.tab,
396
+ options: get_options(),
397
+ onChange: function onChange( value ) {
398
+ props.setAttributes({ tab: value });
399
+ umShortcode( value );
400
+ }
401
+ }
402
+ )
403
+ )
404
+ )
405
+ ]
406
+ },
407
+
408
+ save: function( props ) {
409
+
410
+ return um_el(
411
+ UmRichText.Content,
412
+ {
413
+ tagName: 'p',
414
+ className: props.className,
415
+ value: props.attributes.content
416
+ }
417
+ );
418
+ }
419
+ });
420
+
421
+ //-------------------------------------\\
422
+ //------ Social Activity function -----\\
423
+ //-------------------------------------\\
424
+ var um_users = getUsers();
425
+
426
+ function getUsers() {
427
+
428
+ var options = [],
429
+ user_list = '';
430
+
431
+ UmApiFetch( { path : '/wp/v2/users/' } ).then(
432
+ function ( answer ) {
433
+ user_list = answer;
434
+
435
+ user_list.map(function (user) {
436
+ options.push(
437
+ {
438
+ label: user.name,
439
+ value: user.id
440
+ }
441
+ );
442
+ });
443
+
444
+ }
445
+ );
446
+
447
+ return options;
448
+ }
449
+
450
+ //-------------------------------------\\
451
+ //----- Social Activity Shortcode -----\\
452
+ //-------------------------------------\\
453
+ UmRegisterBlockType( 'um-block/um-user-profile-wall', {
454
+ title: i18n.__( 'User Profile Wall', 'ultimate-member' ),
455
+ description: i18n.__( 'Used on the user profile page', 'ultimate-member' ),
456
+ icon: 'businessman',
457
+ category: 'um-blocks',
458
+ attributes: { // Necessary for saving block content.
459
+ content: {
460
+ source: 'html',
461
+ selector: 'p'
462
+ },
463
+ user_id: {
464
+ type: 'select'
465
+ },
466
+ hashtag: {
467
+ type: 'string'
468
+ },
469
+ wall_post: {
470
+ type: 'number'
471
+ },
472
+ user_wall: {
473
+ type: 'boolean'
474
+ }
475
+ },
476
+
477
+ edit: function( props ) {
478
+ var user_id = props.attributes.user_id,
479
+ hashtag = props.attributes.hashtag,
480
+ wall_post = props.attributes.wall_post,
481
+ user_wall = props.attributes.user_wall,
482
+ attributes = props.attributes,
483
+ content = props.attributes.content;
484
+
485
+ function onChangeContent( newContent ) {
486
+ props.setAttributes( { content: newContent } );
487
+ }
488
+
489
+ function umShortcode() {
490
+
491
+ var shortcode = '';
492
+
493
+ if ( attributes.user_id !== undefined ) {
494
+
495
+ shortcode = '[ultimatemember_wall user_id="' + attributes.user_id + '"';
496
+
497
+ if( attributes.hashtag !== undefined ) {
498
+ shortcode = shortcode + ' hashtag="' + attributes.hashtag + '"';
499
+ }
500
+
501
+ if( attributes.wall_post !== undefined ) {
502
+ shortcode = shortcode + ' wall_post="' + attributes.wall_post + '"';
503
+ }
504
+
505
+ if( attributes.user_wall !== undefined ) {
506
+ shortcode = shortcode + ' user_wall="' + attributes.user_wall + '"';
507
+ }
508
+
509
+ shortcode = shortcode + ']';
510
+
511
+ props.setAttributes( { content: shortcode } );
512
+
513
+ }
514
+ }
515
+
516
+ return [
517
+ um_el(
518
+ "div",
519
+ {
520
+ className: "um-social-activity-wrapper"
521
+ },
522
+ um_el(
523
+ UmSelectControl,
524
+ {
525
+ label: i18n.__( 'Select User', 'ultimate-member' ),
526
+ className: "um_select_users",
527
+ type: 'number',
528
+ value: props.attributes.user_id,
529
+ options: um_users,
530
+ onChange: function onChange( value ) {
531
+ props.setAttributes({ user_id: value });
532
+ attributes['user_id'] = value;
533
+ umShortcode();
534
+ }
535
+ }
536
+ ),
537
+ um_el(
538
+ UmTextControl,
539
+ {
540
+ className: "um_hashtag",
541
+ label: i18n.__( 'Hashtag', 'ultimate-member' ),
542
+ value: props.attributes.hashtag,
543
+ onChange: function onChange( value ) {
544
+ props.setAttributes({ hashtag: value });
545
+ attributes['hashtag'] = value;
546
+ umShortcode();
547
+ }
548
+ }
549
+ )
550
+
551
+ ),
552
+ um_el(
553
+ wp.editor.InspectorControls,
554
+ {},
555
+ um_el(
556
+ UmPanelBody,
557
+ {
558
+ title: i18n.__( 'Shortcode Attribute', 'ultimate-member' )
559
+ },
560
+ um_el(
561
+ UmRangeControl,
562
+ {
563
+ label: i18n.__( 'Show the form on the wall?', 'ultimate-member' ),
564
+ value: props.attributes.wall_post,
565
+ min: 2,
566
+ max: 20,
567
+ onChange: function onChange( value ) {
568
+ props.setAttributes({ wall_post: value });
569
+ attributes['wall_post'] = value;
570
+ umShortcode();
571
+ }
572
+ }
573
+ ),
574
+ um_el(
575
+ UmToggleControl,
576
+ {
577
+ label: i18n.__( 'Show the form on the wall?', 'ultimate-member' ),
578
+ checked: props.attributes.user_wall,
579
+ onChange: function onChange( value ) {
580
+ props.setAttributes({ user_wall: value });
581
+ attributes['user_wall'] = value;
582
+ umShortcode();
583
+ }
584
+ }
585
+ )
586
+ )
587
+ )
588
+ ]
589
+ },
590
+
591
+ save: function( props ) {
592
+
593
+ return um_el(
594
+ UmRichText.Content,
595
+ {
596
+ tagName: 'p',
597
+ className: props.className,
598
+ value: props.attributes.content
599
+ }
600
+ );
601
+ }
602
+ });
603
+
604
+ })(
605
+ window.wp.blocks,
606
+ window.wp.editor,
607
+ window.wp.components,
608
+ window.wp.i18n,
609
+ window.wp.element
610
+ );
includes/admin/core/class-admin-enqueue.php CHANGED
@@ -83,6 +83,8 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
83
 
84
  add_action( 'load-post-new.php', array( &$this, 'enqueue_cpt_scripts' ) );
85
  add_action( 'load-post.php', array( &$this, 'enqueue_cpt_scripts' ) );
 
 
86
  }
87
 
88
 
@@ -423,6 +425,91 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
423
  }
424
 
425
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
426
  /**
427
  * Load localize scripts
428
  */
@@ -518,9 +605,10 @@ if ( ! class_exists( 'um\admin\core\Admin_Enqueue' ) ) {
518
  global $wp_version;
519
  if ( version_compare( $wp_version, '5.0', '>=' ) && ! empty( $this->post_page ) ) {
520
  $this->load_gutenberg_js();
 
521
  }
522
 
523
  }
524
 
525
  }
526
- }
83
 
84
  add_action( 'load-post-new.php', array( &$this, 'enqueue_cpt_scripts' ) );
85
  add_action( 'load-post.php', array( &$this, 'enqueue_cpt_scripts' ) );
86
+
87
+ add_filter( 'block_categories', array( &$this, 'blocks_category' ), 10, 2 );
88
  }
89
 
90
 
425
  }
426
 
427
 
428
+ /**
429
+ * Load Gutenberg blocks js
430
+ */
431
+ function load_gutenberg_shortcode_blocks() {
432
+
433
+ if ( ! function_exists( 'register_block_type' ) ) {
434
+ // Gutenberg is not active.
435
+ return;
436
+ }
437
+
438
+ //disable Gutenberg scripts to avoid the conflicts
439
+ $disable_script = apply_filters( 'um_disable_blocks_script', false );
440
+ if ( $disable_script ) {
441
+ return;
442
+ }
443
+
444
+ wp_register_script( 'um-blocks-shortcode-js', $this->js_url . 'um-admin-blocks-shortcode.js', array( 'wp-i18n', 'wp-blocks', 'wp-components' ), ultimatemember_version, true );
445
+ wp_set_script_translations( 'um-blocks-shortcode-js', 'ultimate-member' );
446
+ wp_enqueue_script( 'um-blocks-shortcode-js' );
447
+
448
+ $account_settings = array(
449
+ 'password' => array(
450
+ 'label' => __( 'Password', 'ultimate-member' ),
451
+ 'enabled' => UM()->options()->get( 'account_tab_password' ),
452
+ ),
453
+ 'privacy' => array(
454
+ 'label' => __( 'Privacy', 'ultimate-member' ),
455
+ 'enabled' => UM()->options()->get( 'account_tab_privacy' ),
456
+ ),
457
+ 'notifications' => array(
458
+ 'label' => __( 'Notifications', 'ultimate-member' ),
459
+ 'enabled' => UM()->options()->get( 'account_tab_notifications' ),
460
+ ),
461
+ 'delete' => array(
462
+ 'label' => __( 'Delete', 'ultimate-member' ),
463
+ 'enabled' => UM()->options()->get( 'account_tab_delete' ),
464
+ ),
465
+ );
466
+ wp_localize_script( 'um-blocks-shortcode-js', 'um_account_settings', $account_settings );
467
+
468
+ /**
469
+ * create gutenberg blocks
470
+ */
471
+ register_block_type( 'um-block/um-user-profile-wall', array(
472
+ 'editor_script' => 'um-blocks-shortcode-js',
473
+ ) );
474
+
475
+ register_block_type( 'um-block/um-forms', array(
476
+ 'editor_script' => 'um-blocks-shortcode-js',
477
+ ) );
478
+
479
+ register_block_type( 'um-block/um-member-directories', array(
480
+ 'editor_script' => 'um-blocks-shortcode-js',
481
+ ) );
482
+
483
+ register_block_type( 'um-block/um-password-reset', array(
484
+ 'editor_script' => 'um-blocks-shortcode-js',
485
+ ) );
486
+
487
+ register_block_type( 'um-block/um-account', array(
488
+ 'editor_script' => 'um-blocks-shortcode-js',
489
+ ) );
490
+ }
491
+
492
+
493
+ /**
494
+ * Add Gutenberg category for UM shortcodes
495
+ *
496
+ * @param array $categories
497
+ * @param $post
498
+ *
499
+ * @return array
500
+ */
501
+ function blocks_category( $categories, $post ) {
502
+ return array_merge(
503
+ $categories,
504
+ array(
505
+ array(
506
+ 'slug' => 'um-blocks',
507
+ 'title' => __( 'Ultimate Member Blocks', 'ultimate-member' ),
508
+ ),
509
+ )
510
+ );
511
+ }
512
+
513
  /**
514
  * Load localize scripts
515
  */
605
  global $wp_version;
606
  if ( version_compare( $wp_version, '5.0', '>=' ) && ! empty( $this->post_page ) ) {
607
  $this->load_gutenberg_js();
608
+ $this->load_gutenberg_shortcode_blocks();
609
  }
610
 
611
  }
612
 
613
  }
614
+ }
includes/admin/core/class-admin-forms.php CHANGED
@@ -381,6 +381,10 @@ if ( ! class_exists( 'um\admin\core\Admin_Forms' ) ) {
381
  'field_id' => $field_data['id']
382
  );
383
 
 
 
 
 
384
  $data_attr = '';
385
  foreach ( $data as $key => $value ) {
386
  $data_attr .= " data-{$key}=\"{$value}\" ";
381
  'field_id' => $field_data['id']
382
  );
383
 
384
+ if( ! empty( $field_data['attr'] ) && is_array( $field_data['attr'] ) ){
385
+ $data = array_merge( $data, $field_data['attr'] );
386
+ }
387
+
388
  $data_attr = '';
389
  foreach ( $data as $key => $value ) {
390
  $data_attr .= " data-{$key}=\"{$value}\" ";
includes/admin/core/class-admin-notices.php CHANGED
@@ -404,7 +404,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Notices' ) ) {
404
  break;
405
 
406
  case 'got_updates':
407
- $messages[0]['content'] = __( 'You got the latest upgrades.', 'ultimate-member' );
408
  break;
409
 
410
  case 'often_updates':
404
  break;
405
 
406
  case 'got_updates':
407
+ $messages[0]['content'] = __( 'You have the latest updates.', 'ultimate-member' );
408
  break;
409
 
410
  case 'often_updates':
includes/admin/core/class-admin-settings.php CHANGED
@@ -492,7 +492,13 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
492
  'id' => 'account_email',
493
  'type' => 'checkbox',
494
  'label' => __( 'Allow users to change e-mail','ultimate-member' ),
495
- 'tooltip' => __('Whether to allow users changing their email in account page.','ultimate-member'),
 
 
 
 
 
 
496
  ),
497
  array(
498
  'id' => 'account_hide_in_directory',
@@ -2286,7 +2292,6 @@ Use Gravatars: <?php echo $this->info_value( UM()->options()->get('use_grava
2286
  <?php if( UM()->options()->get('use_gravatars') ): ?>Gravatar builtin image: <?php echo UM()->options()->get('use_um_gravatar_default_builtin_image') . "\n"; ?>
2287
  UM Avatar as blank Gravatar: <?php echo $this->info_value( UM()->options()->get('use_um_gravatar_default_image'), 'yesno', true ); ?><?php endif; ?>
2288
  Require a strong password: <?php echo $this->info_value( UM()->options()->get('reset_require_strongpass'), 'onoff', true ); ?>
2289
- Editable primary email field in profile view: <?php echo $this->info_value( UM()->options()->get('editable_primary_email_in_profile'), 'onoff', true ); ?>
2290
 
2291
 
2292
  --- UM Access Configuration ---
492
  'id' => 'account_email',
493
  'type' => 'checkbox',
494
  'label' => __( 'Allow users to change e-mail','ultimate-member' ),
495
+ 'tooltip' => __( 'Whether to allow users changing their email in account page.', 'ultimate-member' ),
496
+ ),
497
+ array(
498
+ 'id' => 'account_general_password',
499
+ 'type' => 'checkbox',
500
+ 'label' => __( 'Password is required?','ultimate-member' ),
501
+ 'tooltip' => __( 'Password is required to save account data.', 'ultimate-member' ),
502
  ),
503
  array(
504
  'id' => 'account_hide_in_directory',
2292
  <?php if( UM()->options()->get('use_gravatars') ): ?>Gravatar builtin image: <?php echo UM()->options()->get('use_um_gravatar_default_builtin_image') . "\n"; ?>
2293
  UM Avatar as blank Gravatar: <?php echo $this->info_value( UM()->options()->get('use_um_gravatar_default_image'), 'yesno', true ); ?><?php endif; ?>
2294
  Require a strong password: <?php echo $this->info_value( UM()->options()->get('reset_require_strongpass'), 'onoff', true ); ?>
 
2295
 
2296
 
2297
  --- UM Access Configuration ---
includes/admin/core/packages/2.0-beta1/styles.php CHANGED
@@ -248,7 +248,9 @@ if ( $form_field_label ) {
248
  .um .um-field-label {
249
  color: $form_field_label;
250
  }
251
- ";
 
 
252
  }
253
 
254
  $form_border = UM()->options()->get( 'form_border' );
248
  .um .um-field-label {
249
  color: $form_field_label;
250
  }
251
+ .um .um-row.um-customized-row .um-field-label {
252
+ color: inherit;
253
+ } ";
254
  }
255
 
256
  $form_border = UM()->options()->get( 'form_border' );
includes/class-config.php CHANGED
@@ -498,6 +498,7 @@ if ( ! class_exists( 'um\Config' ) ) {
498
  'account_name_disable' => 0,
499
  'account_name_require' => 1,
500
  'account_email' => 1,
 
501
  'account_hide_in_directory' => 1,
502
  'account_require_strongpass' => 0,
503
  'photo_thumb_sizes' => array( 40, 80, 190 ),
498
  'account_name_disable' => 0,
499
  'account_name_require' => 1,
500
  'account_email' => 1,
501
+ 'account_general_password' => 0,
502
  'account_hide_in_directory' => 1,
503
  'account_require_strongpass' => 0,
504
  'photo_thumb_sizes' => array( 40, 80, 190 ),
includes/core/class-access.php CHANGED
@@ -556,10 +556,11 @@ if ( ! class_exists( 'um\core\Access' ) ) {
556
  $restriction = get_post_meta( $post->ID, 'um_content_restriction', true );
557
 
558
  if ( ! empty( $restriction['_um_custom_access_settings'] ) ) {
559
- if ( ! isset( $restriction['_um_accessible'] ) )
560
  return false;
561
- else
562
  return $restriction;
 
563
  }
564
  }
565
 
@@ -573,8 +574,9 @@ if ( ! class_exists( 'um\core\Access' ) ) {
573
  $terms = array();
574
  if ( ! empty( $taxonomies ) ) {
575
  foreach ( $taxonomies as $taxonomy ) {
576
- if ( empty( $restricted_taxonomies[$taxonomy] ) )
577
  continue;
 
578
 
579
  $terms = array_merge( $terms, wp_get_post_terms( $post->ID, $taxonomy, array( 'fields' => 'ids' ) ) );
580
  }
@@ -585,10 +587,11 @@ if ( ! class_exists( 'um\core\Access' ) ) {
585
  $restriction = get_term_meta( $term_id, 'um_content_restriction', true );
586
 
587
  if ( ! empty( $restriction['_um_custom_access_settings'] ) ) {
588
- if ( ! isset( $restriction['_um_accessible'] ) || '0' == $restriction['_um_accessible'] )
589
  continue;
590
- else
591
  return $restriction;
 
592
  }
593
  }
594
 
@@ -610,11 +613,18 @@ if ( ! class_exists( 'um\core\Access' ) ) {
610
  $filtered_posts = array();
611
 
612
  //if empty
613
- if ( empty( $posts ) )
614
  return $posts;
 
615
 
616
  $restricted_global_message = UM()->options()->get( 'restricted_access_message' );
617
 
 
 
 
 
 
 
618
  //other filter
619
  foreach ( $posts as $post ) {
620
 
@@ -631,12 +641,6 @@ if ( ! class_exists( 'um\core\Access' ) ) {
631
  continue;
632
  }
633
 
634
- if ( is_object( $query ) ) {
635
- $is_singular = $query->is_singular();
636
- } else {
637
- $is_singular = ! empty( $query->is_singular ) ? true : false;
638
- }
639
-
640
  //post is private
641
  if ( '0' == $restriction['_um_accessible'] ) {
642
  $this->singular_page = true;
@@ -707,6 +711,8 @@ if ( ! class_exists( 'um\core\Access' ) ) {
707
  */
708
  do_action( 'um_access_fix_external_post_content' );
709
 
 
 
710
  $filtered_posts[] = $post;
711
  continue;
712
  } elseif ( '1' == $restriction['_um_noaccess_action'] ) {
@@ -821,6 +827,8 @@ if ( ! class_exists( 'um\core\Access' ) ) {
821
  */
822
  do_action( 'um_access_fix_external_post_content' );
823
 
 
 
824
  $filtered_posts[] = $post;
825
  continue;
826
  } elseif ( '1' == $restriction['_um_noaccess_action'] ) {
@@ -846,6 +854,7 @@ if ( ! class_exists( 'um\core\Access' ) ) {
846
  }
847
 
848
  } else {
 
849
  if ( empty( $is_singular ) ) {
850
  if ( empty( $restriction['_um_access_hide_from_queries'] ) ) {
851
 
@@ -907,6 +916,8 @@ if ( ! class_exists( 'um\core\Access' ) ) {
907
  */
908
  do_action( 'um_access_fix_external_post_content' );
909
 
 
 
910
  $filtered_posts[] = $post;
911
  continue;
912
  } elseif ( '1' == $restriction['_um_noaccess_action'] ) {
@@ -937,6 +948,24 @@ if ( ! class_exists( 'um\core\Access' ) ) {
937
  }
938
 
939
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
940
  /**
941
  * @param $content
942
  *
@@ -1008,57 +1037,57 @@ if ( ! class_exists( 'um\core\Access' ) ) {
1008
  /**
1009
  * Disable comments if user has not permission to access this post
1010
  *
1011
- * @param mixed $open
1012
  * @param int $post_id
1013
  * @return boolean
1014
  */
1015
- public function disable_comments_open_number( $open, $post_id ) {
1016
  static $cache_number = array();
1017
 
1018
  if ( isset( $cache_number[ $post_id ] ) ) {
1019
- return $cache_number[ $post_id ] ? $open : false;
1020
  }
1021
 
1022
  $post = get_post( $post_id );
1023
  $restriction = $this->get_post_privacy_settings( $post );
1024
 
1025
  if ( ! $restriction ) {
1026
- $cache_number[ $post_id ] = $open;
1027
- return $open;
1028
  }
1029
 
1030
  if ( '1' == $restriction['_um_accessible'] ) {
1031
 
1032
  if ( is_user_logged_in() ) {
1033
  if ( ! current_user_can( 'administrator' ) ) {
1034
- $open = false;
1035
  }
1036
  }
1037
 
1038
  } elseif ( '2' == $restriction['_um_accessible'] ) {
1039
  if ( ! is_user_logged_in() ) {
1040
- $open = false;
1041
  } else {
1042
  if ( ! current_user_can( 'administrator' ) ) {
1043
  $custom_restrict = $this->um_custom_restriction( $restriction );
1044
 
1045
  if ( empty( $restriction['_um_access_roles'] ) || false === array_search( '1', $restriction['_um_access_roles'] ) ) {
1046
  if ( ! $custom_restrict ) {
1047
- $open = false;
1048
  }
1049
  } else {
1050
  $user_can = $this->user_can( get_current_user_id(), $restriction['_um_access_roles'] );
1051
 
1052
  if ( ! isset( $user_can ) || ! $user_can || ! $custom_restrict ) {
1053
- $open = false;
1054
  }
1055
  }
1056
  }
1057
  }
1058
  }
1059
 
1060
- $cache_number[ $post_id ] = $open;
1061
- return $open;
1062
  }
1063
 
1064
 
556
  $restriction = get_post_meta( $post->ID, 'um_content_restriction', true );
557
 
558
  if ( ! empty( $restriction['_um_custom_access_settings'] ) ) {
559
+ if ( ! isset( $restriction['_um_accessible'] ) ) {
560
  return false;
561
+ } else {
562
  return $restriction;
563
+ }
564
  }
565
  }
566
 
574
  $terms = array();
575
  if ( ! empty( $taxonomies ) ) {
576
  foreach ( $taxonomies as $taxonomy ) {
577
+ if ( empty( $restricted_taxonomies[ $taxonomy ] ) ) {
578
  continue;
579
+ }
580
 
581
  $terms = array_merge( $terms, wp_get_post_terms( $post->ID, $taxonomy, array( 'fields' => 'ids' ) ) );
582
  }
587
  $restriction = get_term_meta( $term_id, 'um_content_restriction', true );
588
 
589
  if ( ! empty( $restriction['_um_custom_access_settings'] ) ) {
590
+ if ( ! isset( $restriction['_um_accessible'] ) || '0' == $restriction['_um_accessible'] ) {
591
  continue;
592
+ } else {
593
  return $restriction;
594
+ }
595
  }
596
  }
597
 
613
  $filtered_posts = array();
614
 
615
  //if empty
616
+ if ( empty( $posts ) ) {
617
  return $posts;
618
+ }
619
 
620
  $restricted_global_message = UM()->options()->get( 'restricted_access_message' );
621
 
622
+ if ( is_object( $query ) ) {
623
+ $is_singular = $query->is_singular();
624
+ } else {
625
+ $is_singular = ! empty( $query->is_singular ) ? true : false;
626
+ }
627
+
628
  //other filter
629
  foreach ( $posts as $post ) {
630
 
641
  continue;
642
  }
643
 
 
 
 
 
 
 
644
  //post is private
645
  if ( '0' == $restriction['_um_accessible'] ) {
646
  $this->singular_page = true;
711
  */
712
  do_action( 'um_access_fix_external_post_content' );
713
 
714
+ add_filter( 'single_template', array( &$this, 'woocommerce_template' ), 9999999, 1 );
715
+
716
  $filtered_posts[] = $post;
717
  continue;
718
  } elseif ( '1' == $restriction['_um_noaccess_action'] ) {
827
  */
828
  do_action( 'um_access_fix_external_post_content' );
829
 
830
+ add_filter( 'single_template', array( &$this, 'woocommerce_template' ), 9999999, 1 );
831
+
832
  $filtered_posts[] = $post;
833
  continue;
834
  } elseif ( '1' == $restriction['_um_noaccess_action'] ) {
854
  }
855
 
856
  } else {
857
+
858
  if ( empty( $is_singular ) ) {
859
  if ( empty( $restriction['_um_access_hide_from_queries'] ) ) {
860
 
916
  */
917
  do_action( 'um_access_fix_external_post_content' );
918
 
919
+ add_filter( 'single_template', array( &$this, 'woocommerce_template' ), 9999999, 1 );
920
+
921
  $filtered_posts[] = $post;
922
  continue;
923
  } elseif ( '1' == $restriction['_um_noaccess_action'] ) {
948
  }
949
 
950
 
951
+ /**
952
+ * @param string $single_template
953
+ *
954
+ * @return string
955
+ */
956
+ function woocommerce_template( $single_template ) {
957
+ if ( ! UM()->dependencies()->woocommerce_active_check() ) {
958
+ return $single_template;
959
+ }
960
+
961
+ if ( is_product() ) {
962
+ remove_filter( 'template_include', array( 'WC_Template_Loader', 'template_loader' ) );
963
+ }
964
+
965
+ return $single_template;
966
+ }
967
+
968
+
969
  /**
970
  * @param $content
971
  *
1037
  /**
1038
  * Disable comments if user has not permission to access this post
1039
  *
1040
+ * @param int $count
1041
  * @param int $post_id
1042
  * @return boolean
1043
  */
1044
+ public function disable_comments_open_number( $count, $post_id ) {
1045
  static $cache_number = array();
1046
 
1047
  if ( isset( $cache_number[ $post_id ] ) ) {
1048
+ return $cache_number[ $post_id ];
1049
  }
1050
 
1051
  $post = get_post( $post_id );
1052
  $restriction = $this->get_post_privacy_settings( $post );
1053
 
1054
  if ( ! $restriction ) {
1055
+ $cache_number[ $post_id ] = $count;
1056
+ return $count;
1057
  }
1058
 
1059
  if ( '1' == $restriction['_um_accessible'] ) {
1060
 
1061
  if ( is_user_logged_in() ) {
1062
  if ( ! current_user_can( 'administrator' ) ) {
1063
+ $count = 0;
1064
  }
1065
  }
1066
 
1067
  } elseif ( '2' == $restriction['_um_accessible'] ) {
1068
  if ( ! is_user_logged_in() ) {
1069
+ $count = 0;
1070
  } else {
1071
  if ( ! current_user_can( 'administrator' ) ) {
1072
  $custom_restrict = $this->um_custom_restriction( $restriction );
1073
 
1074
  if ( empty( $restriction['_um_access_roles'] ) || false === array_search( '1', $restriction['_um_access_roles'] ) ) {
1075
  if ( ! $custom_restrict ) {
1076
+ $count = 0;
1077
  }
1078
  } else {
1079
  $user_can = $this->user_can( get_current_user_id(), $restriction['_um_access_roles'] );
1080
 
1081
  if ( ! isset( $user_can ) || ! $user_can || ! $custom_restrict ) {
1082
+ $count = 0;
1083
  }
1084
  }
1085
  }
1086
  }
1087
  }
1088
 
1089
+ $cache_number[ $post_id ] = $count;
1090
+ return $count;
1091
  }
1092
 
1093
 
includes/core/class-account.php CHANGED
@@ -65,13 +65,15 @@ if ( ! class_exists( 'um\core\Account' ) ) {
65
 
66
  foreach ( $arr as $id => $info ) {
67
 
68
- if ( ! empty( $args['tab'] ) && $id != $args['tab'] )
69
  continue;
 
70
 
71
  $output = $this->get_tab_fields( $id, $args );
72
 
73
- if ( ! empty( $output ) )
74
- $tabs_structed[$id] = $info;
 
75
 
76
  }
77
 
@@ -226,6 +228,8 @@ if ( ! class_exists( 'um\core\Account' ) ) {
226
 
227
  $this->init_tabs( $args );
228
 
 
 
229
  /**
230
  * UM hook
231
  *
@@ -369,7 +373,6 @@ if ( ! class_exists( 'um\core\Account' ) ) {
369
  }
370
 
371
  if ( ! isset( UM()->form()->errors ) ) {
372
-
373
  /**
374
  * UM hook
375
  *
@@ -517,8 +520,9 @@ if ( ! class_exists( 'um\core\Account' ) ) {
517
  UM()->fields()->editing = true;
518
 
519
  if ( ! empty( $this->tab_output[$id]['content'] ) && ! empty( $this->tab_output[$id]['hash'] ) &&
520
- $this->tab_output[$id]['hash'] == md5( json_encode( $shortcode_args ) ) )
521
  return $this->tab_output[$id]['content'];
 
522
 
523
  switch ( $id ) {
524
 
@@ -547,7 +551,7 @@ if ( ! class_exists( 'um\core\Account' ) ) {
547
  * ?>
548
  */
549
  $args = apply_filters( 'um_account_tab_privacy_fields', $args, $shortcode_args );
550
-
551
  $fields = UM()->builtin()->get_specific_fields( $args );
552
  $fields = $this->account_secure_fields( $fields, $id );
553
  $fields = $this->filter_fields_by_attrs( $fields, $shortcode_args );
@@ -606,6 +610,10 @@ if ( ! class_exists( 'um\core\Account' ) ) {
606
  $args = str_replace(',user_email','', $args );
607
  }
608
 
 
 
 
 
609
  /**
610
  * UM hook
611
  *
65
 
66
  foreach ( $arr as $id => $info ) {
67
 
68
+ if ( ! empty( $args['tab'] ) && $id != $args['tab'] ) {
69
  continue;
70
+ }
71
 
72
  $output = $this->get_tab_fields( $id, $args );
73
 
74
+ if ( ! empty( $output ) ) {
75
+ $tabs_structed[ $id ] = $info;
76
+ }
77
 
78
  }
79
 
228
 
229
  $this->init_tabs( $args );
230
 
231
+ $this->current_tab = apply_filters( 'um_change_default_tab', $this->current_tab, $args );
232
+
233
  /**
234
  * UM hook
235
  *
373
  }
374
 
375
  if ( ! isset( UM()->form()->errors ) ) {
 
376
  /**
377
  * UM hook
378
  *
520
  UM()->fields()->editing = true;
521
 
522
  if ( ! empty( $this->tab_output[$id]['content'] ) && ! empty( $this->tab_output[$id]['hash'] ) &&
523
+ $this->tab_output[$id]['hash'] == md5( json_encode( $shortcode_args ) ) ) {
524
  return $this->tab_output[$id]['content'];
525
+ }
526
 
527
  switch ( $id ) {
528
 
551
  * ?>
552
  */
553
  $args = apply_filters( 'um_account_tab_privacy_fields', $args, $shortcode_args );
554
+
555
  $fields = UM()->builtin()->get_specific_fields( $args );
556
  $fields = $this->account_secure_fields( $fields, $id );
557
  $fields = $this->filter_fields_by_attrs( $fields, $shortcode_args );
610
  $args = str_replace(',user_email','', $args );
611
  }
612
 
613
+ if ( UM()->options()->get( 'account_general_password' ) ) {
614
+ $args .= ',single_user_password';
615
+ }
616
+
617
  /**
618
  * UM hook
619
  *
includes/core/class-ajax-common.php CHANGED
@@ -32,6 +32,7 @@ if ( ! class_exists( 'um\core\AJAX_Common' ) ) {
32
  }
33
 
34
  add_action( 'wp_ajax_um_select_options', array( UM()->form(), 'ajax_select_options' ) );
 
35
 
36
  add_action( 'wp_ajax_um_delete_profile_photo', array( UM()->profile(), 'ajax_delete_profile_photo' ) );
37
  add_action( 'wp_ajax_um_delete_cover_photo', array( UM()->profile(), 'ajax_delete_cover_photo' ) );
32
  }
33
 
34
  add_action( 'wp_ajax_um_select_options', array( UM()->form(), 'ajax_select_options' ) );
35
+ add_action( 'wp_ajax_nopriv_um_select_options', array( UM()->form(), 'ajax_select_options' ) );
36
 
37
  add_action( 'wp_ajax_um_delete_profile_photo', array( UM()->profile(), 'ajax_delete_profile_photo' ) );
38
  add_action( 'wp_ajax_um_delete_cover_photo', array( UM()->profile(), 'ajax_delete_cover_photo' ) );
includes/core/class-common.php CHANGED
@@ -73,6 +73,7 @@ if ( ! class_exists( 'um\core\Common' ) ) {
73
  'show_ui' => true,
74
  'show_in_menu' => false,
75
  'public' => false,
 
76
  'supports' => array('title')
77
  ) );
78
 
@@ -102,6 +103,7 @@ if ( ! class_exists( 'um\core\Common' ) ) {
102
  'show_ui' => true,
103
  'show_in_menu' => false,
104
  'public' => false,
 
105
  'supports' => array('title')
106
  ) );
107
 
@@ -109,5 +111,4 @@ if ( ! class_exists( 'um\core\Common' ) ) {
109
 
110
  }
111
  }
112
-
113
  }
73
  'show_ui' => true,
74
  'show_in_menu' => false,
75
  'public' => false,
76
+ 'show_in_rest' => true,
77
  'supports' => array('title')
78
  ) );
79
 
103
  'show_ui' => true,
104
  'show_in_menu' => false,
105
  'public' => false,
106
+ 'show_in_rest' => true,
107
  'supports' => array('title')
108
  ) );
109
 
111
 
112
  }
113
  }
 
114
  }
includes/core/class-fields.php CHANGED
@@ -188,7 +188,7 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
188
  $condition_fields = get_option( 'um_fields' );
189
 
190
  if( ! is_array( $condition_fields ) ) $condition_fields = array();
191
-
192
  foreach ( $condition_fields as $key => $value ) {
193
  $deleted_field = array_search( $id, $value );
194
 
@@ -843,6 +843,9 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
843
  if ( ! isset( UM()->form()->post_form[ $key ] ) ) {
844
 
845
  $field_value = um_user( $key );
 
 
 
846
 
847
  if ( $key == 'role' ) {
848
 
@@ -906,11 +909,15 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
906
  return true;
907
  }
908
 
 
 
 
 
909
  if ( $field_value && $this->editing == true && ! is_array( $field_value ) && $field_value == $value ) {
910
  return true;
911
  }
912
 
913
- if ( $field_value && $this->editing == true && ! is_array( $field_value ) && html_entity_decode( $field_value ) == html_entity_decode( $value )) {
914
  return true;
915
  }
916
 
@@ -1669,25 +1676,26 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
1669
  $disabled = '';
1670
  }
1671
  }
1672
-
1673
  }
1674
 
1675
  if ( ! isset( $data['autocomplete'] ) ) {
1676
  $autocomplete = 'off';
1677
  }
 
1678
  um_fetch_user( get_current_user_id() );
1679
- if (!um_can_view_field( $data )) return;
1680
- if (!um_can_edit_field( $data )) return;
 
 
 
 
1681
  um_fetch_user( $_um_profile_id );
1682
 
1683
  // fields that need to be disabled in edit mode (profile)
1684
  $arr_restricted_fields = array( 'user_email', 'username', 'user_login', 'user_password' );
 
1685
 
1686
- if ( UM()->options()->get( 'editable_primary_email_in_profile' ) == 1 ) {
1687
- unset( $arr_restricted_fields[0] ); // remove user_email
1688
- }
1689
-
1690
- if (in_array( $key, $arr_restricted_fields ) && $this->editing == true && $this->set_mode == 'profile') {
1691
  return;
1692
  }
1693
 
@@ -4012,46 +4020,67 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
4012
  $css_text_color = '';
4013
 
4014
  // row css rules
4015
- if ($padding) $css_padding = 'padding: ' . $padding . ';';
4016
- if ($margin) {
 
 
4017
  $css_margin = 'margin: ' . $margin . ';';
4018
  } else {
4019
  $css_margin = 'margin: 0 0 30px 0;';
4020
  }
4021
 
4022
- if ($background) $css_background = 'background-color: ' . $background . ';';
4023
- if ($borderradius) $css_borderradius = 'border-radius: 0px 0px ' . $borderradius . ' ' . $borderradius . ';';
4024
- if ($border) $css_border = 'border-width: ' . $border . ';';
4025
- if ($bordercolor) $css_bordercolor = 'border-color: ' . $bordercolor . ';';
4026
- if ($borderstyle) $css_borderstyle = 'border-style: ' . $borderstyle . ';';
4027
- if ($text_color) $css_text_color = 'color: ' . $text_color . ' !important;';
 
 
 
 
 
 
 
 
 
 
 
 
 
4028
 
4029
  // show the heading
4030
- if ($heading) {
4031
 
4032
- $heading_background_color = ( isset( $heading_background_color ) ) ? $heading_background_color : '';
4033
- $heading_text_color = ( isset( $heading_text_color ) ) ? $heading_text_color : '';
4034
-
4035
- if ($heading_background_color) {
4036
- $css_heading_background_color = 'background-color: ' . $heading_background_color . ';';
4037
  $css_heading_padding = 'padding: 10px 15px;';
4038
  }
4039
 
4040
- if ($heading_text_color) $css_heading_text_color = 'color: ' . $heading_text_color . ';';
4041
- if ($borderradius) $css_heading_borderradius = 'border-radius: ' . $borderradius . ' ' . $borderradius . ' 0px 0px;';
 
 
 
4042
 
4043
- $output .= '<div class="um-row-heading" style="' . $css_heading_background_color . $css_heading_padding . $css_heading_text_color . $css_heading_borderradius . '">';
4044
 
4045
- if (isset( $icon )) {
4046
- $output .= '<span class="um-row-heading-icon"><i class="' . $icon . '"></i></span>';
 
 
 
4047
  }
4048
 
4049
- $output .= ( !empty( $heading_text ) ? $heading_text : '' ) . '</div>';
 
 
 
4050
 
4051
  } else {
4052
 
4053
  // no heading
4054
- if ($borderradius) $css_borderradius = 'border-radius: ' . $borderradius . ';';
4055
 
4056
  }
4057
 
188
  $condition_fields = get_option( 'um_fields' );
189
 
190
  if( ! is_array( $condition_fields ) ) $condition_fields = array();
191
+
192
  foreach ( $condition_fields as $key => $value ) {
193
  $deleted_field = array_search( $id, $value );
194
 
843
  if ( ! isset( UM()->form()->post_form[ $key ] ) ) {
844
 
845
  $field_value = um_user( $key );
846
+ if ( ! $field_value ) {
847
+ $field_value = 0;
848
+ }
849
 
850
  if ( $key == 'role' ) {
851
 
909
  return true;
910
  }
911
 
912
+ if ( $field_value == 0 && $this->editing == true && ! is_array( $field_value ) && $field_value === $value ) {
913
+ return true;
914
+ }
915
+
916
  if ( $field_value && $this->editing == true && ! is_array( $field_value ) && $field_value == $value ) {
917
  return true;
918
  }
919
 
920
+ if ( $field_value && $this->editing == true && ! is_array( $field_value ) && html_entity_decode( $field_value ) == html_entity_decode( $value ) ) {
921
  return true;
922
  }
923
 
1676
  $disabled = '';
1677
  }
1678
  }
 
1679
  }
1680
 
1681
  if ( ! isset( $data['autocomplete'] ) ) {
1682
  $autocomplete = 'off';
1683
  }
1684
+
1685
  um_fetch_user( get_current_user_id() );
1686
+ if ( ! um_can_view_field( $data ) ) {
1687
+ return;
1688
+ }
1689
+ if ( ! um_can_edit_field( $data ) ) {
1690
+ return;
1691
+ }
1692
  um_fetch_user( $_um_profile_id );
1693
 
1694
  // fields that need to be disabled in edit mode (profile)
1695
  $arr_restricted_fields = array( 'user_email', 'username', 'user_login', 'user_password' );
1696
+ $arr_restricted_fields = apply_filters( 'um_user_profile_restricted_edit_fields', $arr_restricted_fields, $key, $data, $_um_profile_id );
1697
 
1698
+ if ( in_array( $key, $arr_restricted_fields ) && $this->editing == true && $this->set_mode == 'profile' ) {
 
 
 
 
1699
  return;
1700
  }
1701
 
4020
  $css_text_color = '';
4021
 
4022
  // row css rules
4023
+ if ( $padding ) {
4024
+ $css_padding = 'padding: ' . $padding . ';';
4025
+ }
4026
+ if ( $margin ) {
4027
  $css_margin = 'margin: ' . $margin . ';';
4028
  } else {
4029
  $css_margin = 'margin: 0 0 30px 0;';
4030
  }
4031
 
4032
+ if ( $background ) {
4033
+ $css_background = 'background-color: ' . $background . ';';
4034
+ }
4035
+ if ( $borderradius ) {
4036
+ $css_borderradius = 'border-radius: 0px 0px ' . $borderradius . ' ' . $borderradius . ';';
4037
+ }
4038
+ if ( $border ) {
4039
+ $css_border = 'border-width: ' . $border . ';';
4040
+ }
4041
+ if ( $bordercolor ) {
4042
+ $css_bordercolor = 'border-color: ' . $bordercolor . ';';
4043
+ }
4044
+ if ( $borderstyle ) {
4045
+ $css_borderstyle = 'border-style: ' . $borderstyle . ';';
4046
+ }
4047
+ if ( $text_color ) {
4048
+ $css_text_color = 'color: ' . $text_color . ' !important;';
4049
+ $css_class .= ' um-customized-row';
4050
+ }
4051
 
4052
  // show the heading
4053
+ if ( $heading ) {
4054
 
4055
+ if ( ! empty( $heading_background_color ) ) {
4056
+ $css_heading_background_color = "background-color: $heading_background_color;";
 
 
 
4057
  $css_heading_padding = 'padding: 10px 15px;';
4058
  }
4059
 
4060
+ $css_heading_borderradius = empty( $borderradius ) ? '' : "border-radius: $borderradius $borderradius 0px 0px;";
4061
+ $css_heading_border = $css_border . $css_borderstyle . $css_bordercolor . $css_heading_borderradius . 'border-bottom-width: 0px;';
4062
+ $css_heading_margin = $css_margin . 'margin-bottom: 0px;';
4063
+ $css_heading_text_color = empty( $heading_text_color ) ? '' : "color: $heading_text_color;";
4064
+ $css_icon_color = empty( $icon_color ) ? '' : "color: $icon_color;";
4065
 
4066
+ $output .= '<div class="um-row-heading" style="' . $css_heading_margin . $css_heading_padding . $css_heading_border . $css_heading_background_color . $css_heading_text_color . '">';
4067
 
4068
+ if ( ! empty( $icon ) ) {
4069
+ $output .= '<span class="um-row-heading-icon" style="' . $css_icon_color . '"><i class="' . $icon . '"></i></span>';
4070
+ }
4071
+ if ( ! empty( $heading_text ) ) {
4072
+ $output .= htmlspecialchars( $heading_text );
4073
  }
4074
 
4075
+ $output .= '</div>';
4076
+
4077
+ $css_border .= 'border-top-width: 0px;';
4078
+ $css_margin .= 'margin-top: 0px;';
4079
 
4080
  } else {
4081
 
4082
  // no heading
4083
+ $css_borderradius = empty( $borderradius ) ? '' : "border-radius: $borderradius;";
4084
 
4085
  }
4086
 
includes/core/class-files.php CHANGED
@@ -357,7 +357,7 @@ if ( ! class_exists( 'um\core\Files' ) ) {
357
  } else {
358
  $ret['error'] = __( 'A theme or plugin compatibility issue', 'ultimate-member' );
359
  }
360
- wp_send_json_success( $ret );
361
  }
362
 
363
 
@@ -408,7 +408,7 @@ if ( ! class_exists( 'um\core\Files' ) ) {
408
  if ( ! wp_verify_nonce( $nonce, 'um_upload_nonce-'.$timestamp ) && is_user_logged_in() ) {
409
  // This nonce is not valid.
410
  $ret['error'] = 'Invalid nonce';
411
- wp_send_json_error( $ret );
412
 
413
  }
414
  }
@@ -428,14 +428,14 @@ if ( ! class_exists( 'um\core\Files' ) ) {
428
  $ret['error'] = $uploaded['error'];
429
 
430
  }else{
431
-
432
  $uploaded_file = $uploaded['handle_upload'];
433
  $ret['url'] = $uploaded_file['file_info']['name'];
434
  $ret['icon'] = UM()->files()->get_fonticon_by_ext( $uploaded_file['file_info']['ext'] );
435
  $ret['icon_bg'] = UM()->files()->get_fonticon_bg_by_ext( $uploaded_file['file_info']['ext'] );
436
  $ret['filename'] = $uploaded_file['file_info']['basename'];
437
  $ret['original_name'] = $uploaded_file['file_info']['original_name'];
438
-
439
 
440
  }
441
 
@@ -445,8 +445,8 @@ if ( ! class_exists( 'um\core\Files' ) ) {
445
  $ret['error'] = __('A theme or plugin compatibility issue','ultimate-member');
446
  }
447
 
448
-
449
- wp_send_json_success( $ret );
450
  }
451
 
452
 
@@ -669,7 +669,7 @@ if ( ! class_exists( 'um\core\Files' ) ) {
669
  * @return string
670
  */
671
  function path_only( $file ) {
672
-
673
  return trailingslashit( dirname( $file ) );
674
  }
675
 
@@ -796,7 +796,7 @@ if ( ! class_exists( 'um\core\Files' ) ) {
796
  * @param $destination
797
  */
798
  function upload_temp_file( $source, $destination ) {
799
-
800
  move_uploaded_file( $source, $destination );
801
  }
802
 
@@ -893,29 +893,29 @@ if ( ! class_exists( 'um\core\Files' ) ) {
893
  *
894
  * @return mixed
895
  */
896
- function get_image_data( $file ) {
897
 
898
  $finfo = finfo_open( FILEINFO_MIME_TYPE );
899
-
900
- $mime_type = finfo_file( $finfo, $file );
901
 
902
  if( function_exists('exif_imagetype') ){
903
-
904
  $array_exif_image_mimes = array( IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG );
905
-
906
  $allowed_types = apply_filters('um_image_upload_allowed_exif_mimes', $array_exif_image_mimes );
907
 
908
  if( ! in_array( @exif_imagetype( $file ), $allowed_types ) ) {
909
-
910
  $array['invalid_image'] = true;
911
 
912
  return $array;
913
  }
914
 
915
  }else{
916
-
917
  $array_image_mimes = array('image/jpeg','image/png','image/gif');
918
-
919
  $allowed_types = apply_filters('um_image_upload_allowed_mimes', $array_image_mimes );
920
 
921
  if ( ! in_array( $mime_type, $allowed_types ) ) {
@@ -931,7 +931,7 @@ if ( ! class_exists( 'um\core\Files' ) ) {
931
 
932
  $image_data = @getimagesize( $file );
933
 
934
- $array['image'] = $image_data;
935
 
936
  $array['invalid_image'] = false;
937
 
@@ -940,7 +940,7 @@ if ( ! class_exists( 'um\core\Files' ) ) {
940
  $array['width'] = $width;
941
 
942
  $array['height'] = $height;
943
-
944
  $array['ratio'] = $width / $height;
945
 
946
  $array['extension'] = $this->get_extension_by_mime_type( $mime_type );
@@ -1369,6 +1369,47 @@ if ( ! class_exists( 'um\core\Files' ) ) {
1369
  }
1370
 
1371
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1372
  /**
1373
  * Format Bytes
1374
  *
357
  } else {
358
  $ret['error'] = __( 'A theme or plugin compatibility issue', 'ultimate-member' );
359
  }
360
+ wp_send_json_success( $ret );
361
  }
362
 
363
 
408
  if ( ! wp_verify_nonce( $nonce, 'um_upload_nonce-'.$timestamp ) && is_user_logged_in() ) {
409
  // This nonce is not valid.
410
  $ret['error'] = 'Invalid nonce';
411
+ wp_send_json_error( $ret );
412
 
413
  }
414
  }
428
  $ret['error'] = $uploaded['error'];
429
 
430
  }else{
431
+
432
  $uploaded_file = $uploaded['handle_upload'];
433
  $ret['url'] = $uploaded_file['file_info']['name'];
434
  $ret['icon'] = UM()->files()->get_fonticon_by_ext( $uploaded_file['file_info']['ext'] );
435
  $ret['icon_bg'] = UM()->files()->get_fonticon_bg_by_ext( $uploaded_file['file_info']['ext'] );
436
  $ret['filename'] = $uploaded_file['file_info']['basename'];
437
  $ret['original_name'] = $uploaded_file['file_info']['original_name'];
438
+
439
 
440
  }
441
 
445
  $ret['error'] = __('A theme or plugin compatibility issue','ultimate-member');
446
  }
447
 
448
+
449
+ wp_send_json_success( $ret );
450
  }
451
 
452
 
669
  * @return string
670
  */
671
  function path_only( $file ) {
672
+
673
  return trailingslashit( dirname( $file ) );
674
  }
675
 
796
  * @param $destination
797
  */
798
  function upload_temp_file( $source, $destination ) {
799
+
800
  move_uploaded_file( $source, $destination );
801
  }
802
 
893
  *
894
  * @return mixed
895
  */
896
+ function get_image_data( $file ) {
897
 
898
  $finfo = finfo_open( FILEINFO_MIME_TYPE );
899
+
900
+ $mime_type = finfo_file( $finfo, $file );
901
 
902
  if( function_exists('exif_imagetype') ){
903
+
904
  $array_exif_image_mimes = array( IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG );
905
+
906
  $allowed_types = apply_filters('um_image_upload_allowed_exif_mimes', $array_exif_image_mimes );
907
 
908
  if( ! in_array( @exif_imagetype( $file ), $allowed_types ) ) {
909
+
910
  $array['invalid_image'] = true;
911
 
912
  return $array;
913
  }
914
 
915
  }else{
916
+
917
  $array_image_mimes = array('image/jpeg','image/png','image/gif');
918
+
919
  $allowed_types = apply_filters('um_image_upload_allowed_mimes', $array_image_mimes );
920
 
921
  if ( ! in_array( $mime_type, $allowed_types ) ) {
931
 
932
  $image_data = @getimagesize( $file );
933
 
934
+ $array['image'] = $image_data;
935
 
936
  $array['invalid_image'] = false;
937
 
940
  $array['width'] = $width;
941
 
942
  $array['height'] = $height;
943
+
944
  $array['ratio'] = $width / $height;
945
 
946
  $array['extension'] = $this->get_extension_by_mime_type( $mime_type );
1369
  }
1370
 
1371
 
1372
+ /**
1373
+ * Remove old files
1374
+ * @param string $dir Path to directoty.
1375
+ * @param int|string $timestamp Unix timestamp or PHP relative time. All older files will be removed.
1376
+ */
1377
+ function remove_old_files( $dir, $timestamp = NULL ) {
1378
+
1379
+ $removed_files = array();
1380
+
1381
+ if ( empty( $timestamp ) ) {
1382
+ $timestamp = strtotime( '-1 day' );
1383
+ }
1384
+ elseif ( is_string( $timestamp ) && !is_numeric( $timestamp ) ) {
1385
+ $timestamp = strtotime( $timestamp );
1386
+ }
1387
+
1388
+ if ( $timestamp && is_dir( $dir ) ) {
1389
+
1390
+ $files = glob( $dir . '/*' );
1391
+
1392
+ foreach ( (array) $files as $file ) {
1393
+ if ( in_array( wp_basename( $file ), array('.', '..') ) ) {
1394
+ continue;
1395
+ }
1396
+ elseif ( is_dir( $file ) ) {
1397
+ $this->remove_old_files( $file, $timestamp );
1398
+ }
1399
+ elseif ( is_file( $file ) ) {
1400
+ $fileatime = fileatime( $file );
1401
+ if ( $fileatime && $fileatime < (int) $timestamp ) {
1402
+ unlink( $file );
1403
+ $removed_files[] = $file;
1404
+ }
1405
+ }
1406
+ }
1407
+ }
1408
+
1409
+ return $removed_files;
1410
+ }
1411
+
1412
+
1413
  /**
1414
  * Format Bytes
1415
  *
includes/core/class-members.php CHANGED
@@ -246,11 +246,15 @@ if ( ! class_exists( 'um\core\Members' ) ) {
246
  /*if( isset($attrs) && is_array( $attrs['options'] ) ){
247
  asort( $attrs['options'] );
248
  }*/
249
- ?>
 
 
 
 
250
 
251
- <select name="<?php echo $filter; ?>" id="<?php echo $filter; ?>" class="um-s1" style="width: 100%" data-placeholder="<?php echo __( stripslashes( $attrs['label'] ), 'ultimate-member' ); ?>" <?php if ( ! empty( $attrs['custom_dropdown_options_source'] ) ) { ?> data-um-parent="<?php echo $attrs['parent_dropdown_relationship']; ?>" data-mebers-directory="yes" data-um-ajax-source="<?php echo $attrs['custom_dropdown_options_source'] ?>"<?php } ?>>
252
 
253
- <option></option>
254
 
255
  <?php foreach ( $attrs['options'] as $k => $v ) {
256
 
246
  /*if( isset($attrs) && is_array( $attrs['options'] ) ){
247
  asort( $attrs['options'] );
248
  }*/
249
+ if ( isset( $attrs['label'] ) ) {
250
+ $label = $attrs['label'];
251
+ } else {
252
+ $label = isset( $attrs['title'] ) ? $attrs['title'] : '';
253
+ } ?>
254
 
255
+ <select name="<?php echo $filter; ?>" id="<?php echo $filter; ?>" class="um-s1" style="width: 100%" data-placeholder="<?php echo __( stripslashes( $label ), 'ultimate-member' ); ?>" <?php if ( ! empty( $attrs['custom_dropdown_options_source'] ) ) { ?> data-um-parent="<?php echo $attrs['parent_dropdown_relationship']; ?>" data-mebers-directory="yes" data-um-ajax-source="<?php echo $attrs['custom_dropdown_options_source'] ?>"<?php } ?>>
256
 
257
+ <option></option>
258
 
259
  <?php foreach ( $attrs['options'] as $k => $v ) {
260
 
includes/core/class-password.php CHANGED
@@ -277,8 +277,11 @@ if ( ! class_exists( 'um\core\Password' ) ) {
277
  }
278
 
279
  if ( um_is_core_page( 'password-reset' ) && isset( $_REQUEST['act'] ) && $_REQUEST['act'] == 'reset_password' ) {
 
 
280
  list( $rp_path ) = explode( '?', wp_unslash( $_SERVER['REQUEST_URI'] ) );
281
  $rp_cookie = 'wp-resetpass-' . COOKIEHASH;
 
282
  if ( isset( $_GET['hash'] ) ) {
283
  $userdata = get_userdata( wp_unslash( $_GET['user_id'] ) );
284
  if ( ! $userdata || is_wp_error( $userdata ) ) {
@@ -293,7 +296,7 @@ if ( ! class_exists( 'um\core\Password' ) ) {
293
  if ( is_wp_error( $user ) ) {
294
  setcookie( $rp_cookie, ' ', time() - YEAR_IN_SECONDS, $rp_path, COOKIE_DOMAIN, is_ssl(), true );
295
  wp_redirect( add_query_arg( array( 'updated' => 'invalidkey' ), get_permalink() ) );
296
- }else{
297
  $value = sprintf( '%s:%s', $rp_login, wp_unslash( $_GET['hash'] ) );
298
  setcookie( $rp_cookie, $value, 0, $rp_path, COOKIE_DOMAIN, is_ssl(), true );
299
  wp_safe_redirect( remove_query_arg( array( 'hash', 'user_id' ) ) );
@@ -438,23 +441,24 @@ if ( ! class_exists( 'um\core\Password' ) ) {
438
  */
439
  function um_reset_password_errors_hook( $args ) {
440
 
441
- if ( $_POST[ UM()->honeypot ] != '' )
442
- wp_die('Hello, spam bot!','ultimate-member');
 
443
 
444
  $user = "";
445
 
446
  foreach ( $_POST as $key => $val ) {
447
- if( strstr( $key, "username_b") ){
448
  $user = trim( $val );
449
  }
450
  }
451
 
452
  if ( empty( $user ) ) {
453
- UM()->form()->add_error('username_b', __('Please provide your username or email','ultimate-member') );
454
  }
455
 
456
- if ( ( !is_email( $user ) && !username_exists( $user ) ) || ( is_email( $user ) && !email_exists( $user ) ) ) {
457
- UM()->form()->add_error('username_b', __('We can\'t find an account registered with that address or username','ultimate-member') );
458
  } else {
459
 
460
  if ( is_email( $user ) ) {
@@ -463,7 +467,7 @@ if ( ! class_exists( 'um\core\Password' ) ) {
463
  $user_id = username_exists( $user );
464
  }
465
 
466
- $attempts = (int)get_user_meta( $user_id, 'password_rst_attempts', true );
467
  $is_admin = user_can( intval( $user_id ),'manage_options' );
468
 
469
  if ( UM()->options()->get( 'enable_reset_password_limit' ) ) { // if reset password limit is set
@@ -473,7 +477,7 @@ if ( ! class_exists( 'um\core\Password' ) ) {
473
  } else {
474
  $limit = UM()->options()->get( 'reset_password_limit_number' );
475
  if ( $attempts >= $limit ) {
476
- UM()->form()->add_error('username_b', __('You have reached the limit for requesting password change for this user already. Contact support if you cannot open the email','ultimate-member') );
477
  } else {
478
  update_user_meta( $user_id, 'password_rst_attempts', $attempts + 1 );
479
  }
@@ -568,28 +572,37 @@ if ( ! class_exists( 'um\core\Password' ) ) {
568
  extract( $args );
569
 
570
  if ( isset( $_POST['_um_password_change'] ) && $_POST['_um_password_change'] == 1 ) {
571
- /**
572
- * UM hook
573
- *
574
- * @type action
575
- * @title um_after_changing_user_password
576
- * @description Hook that runs after user change their password
577
- * @input_vars
578
- * [{"var":"$user_id","type":"int","desc":"User ID"}]
579
- * @change_log
580
- * ["Since: 2.0"]
581
- * @usage add_action( 'um_after_changing_user_password', 'function_name', 10, 1 );
582
- * @example
583
- * <?php
584
- * add_action( 'um_after_changing_user_password', 'my_after_changing_user_password', 10, 1 );
585
- * function my_user_login_extra( $user_id ) {
586
- * // your code here
587
- * }
588
- * ?>
589
- */
590
- do_action( 'um_after_changing_user_password', $args['user_id'] );
591
 
592
  $user = get_userdata( $args['user_id'] );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
593
  $errors = new \WP_Error();
594
  /**
595
  * Fires before the password reset procedure is validated.
@@ -601,9 +614,6 @@ if ( ! class_exists( 'um\core\Password' ) ) {
601
  */
602
  do_action( 'validate_password_reset', $errors, $user );
603
 
604
- list( $rp_path ) = explode( '?', wp_unslash( $_SERVER['REQUEST_URI'] ) );
605
- $rp_cookie = 'wp-resetpass-' . COOKIEHASH;
606
-
607
  if ( ( ! $errors->get_error_code() ) ) {
608
  reset_password( $user, $args['user_password'] );
609
  setcookie( $rp_cookie, ' ', time() - YEAR_IN_SECONDS, $rp_path, COOKIE_DOMAIN, is_ssl(), true );
@@ -613,6 +623,27 @@ if ( ! class_exists( 'um\core\Password' ) ) {
613
  wp_logout();
614
  }
615
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
616
  exit( wp_redirect( um_get_core_page('login', 'password_changed' ) ) );
617
  }
618
  }
277
  }
278
 
279
  if ( um_is_core_page( 'password-reset' ) && isset( $_REQUEST['act'] ) && $_REQUEST['act'] == 'reset_password' ) {
280
+ wp_fix_server_vars();
281
+
282
  list( $rp_path ) = explode( '?', wp_unslash( $_SERVER['REQUEST_URI'] ) );
283
  $rp_cookie = 'wp-resetpass-' . COOKIEHASH;
284
+
285
  if ( isset( $_GET['hash'] ) ) {
286
  $userdata = get_userdata( wp_unslash( $_GET['user_id'] ) );
287
  if ( ! $userdata || is_wp_error( $userdata ) ) {
296
  if ( is_wp_error( $user ) ) {
297
  setcookie( $rp_cookie, ' ', time() - YEAR_IN_SECONDS, $rp_path, COOKIE_DOMAIN, is_ssl(), true );
298
  wp_redirect( add_query_arg( array( 'updated' => 'invalidkey' ), get_permalink() ) );
299
+ } else {
300
  $value = sprintf( '%s:%s', $rp_login, wp_unslash( $_GET['hash'] ) );
301
  setcookie( $rp_cookie, $value, 0, $rp_path, COOKIE_DOMAIN, is_ssl(), true );
302
  wp_safe_redirect( remove_query_arg( array( 'hash', 'user_id' ) ) );
441
  */
442
  function um_reset_password_errors_hook( $args ) {
443
 
444
+ if ( $_POST[ UM()->honeypot ] != '' ) {
445
+ wp_die( 'Hello, spam bot!', 'ultimate-member' );
446
+ }
447
 
448
  $user = "";
449
 
450
  foreach ( $_POST as $key => $val ) {
451
+ if ( strstr( $key, "username_b") ) {
452
  $user = trim( $val );
453
  }
454
  }
455
 
456
  if ( empty( $user ) ) {
457
+ UM()->form()->add_error('username_b', __( 'Please provide your username or email', 'ultimate-member' ) );
458
  }
459
 
460
+ if ( ( ! is_email( $user ) && ! username_exists( $user ) ) || ( is_email( $user ) && ! email_exists( $user ) ) ) {
461
+ UM()->form()->add_error('username_b', __( 'We can\'t find an account registered with that address or username','ultimate-member') );
462
  } else {
463
 
464
  if ( is_email( $user ) ) {
467
  $user_id = username_exists( $user );
468
  }
469
 
470
+ $attempts = (int) get_user_meta( $user_id, 'password_rst_attempts', true );
471
  $is_admin = user_can( intval( $user_id ),'manage_options' );
472
 
473
  if ( UM()->options()->get( 'enable_reset_password_limit' ) ) { // if reset password limit is set
477
  } else {
478
  $limit = UM()->options()->get( 'reset_password_limit_number' );
479
  if ( $attempts >= $limit ) {
480
+ UM()->form()->add_error( 'username_b', __( 'You have reached the limit for requesting password change for this user already. Contact support if you cannot open the email','ultimate-member') );
481
  } else {
482
  update_user_meta( $user_id, 'password_rst_attempts', $attempts + 1 );
483
  }
572
  extract( $args );
573
 
574
  if ( isset( $_POST['_um_password_change'] ) && $_POST['_um_password_change'] == 1 ) {
575
+
576
+ list( $rp_path ) = explode( '?', wp_unslash( $_SERVER['REQUEST_URI'] ) );
577
+ $rp_cookie = 'wp-resetpass-' . COOKIEHASH;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
578
 
579
  $user = get_userdata( $args['user_id'] );
580
+ if ( isset( $_COOKIE[ $rp_cookie ] ) && 0 < strpos( $_COOKIE[ $rp_cookie ], ':' ) ) {
581
+ list( $rp_login, $rp_key ) = explode( ':', wp_unslash( $_COOKIE[ $rp_cookie ] ), 2 );
582
+
583
+ if ( $user->user_login != $rp_login ) {
584
+ $user = false;
585
+ } else {
586
+ $user = check_password_reset_key( $rp_key, $rp_login );
587
+ if ( isset( $_POST['user_password'] ) && ! hash_equals( $rp_key, $_POST['rp_key'] ) ) {
588
+ $user = false;
589
+ }
590
+ }
591
+ } else {
592
+ $user = false;
593
+ }
594
+
595
+ if ( ! $user || is_wp_error( $user ) ) {
596
+ setcookie( $rp_cookie, ' ', time() - YEAR_IN_SECONDS, $rp_path, COOKIE_DOMAIN, is_ssl(), true );
597
+ if ( $user && $user->get_error_code() === 'expired_key' ) {
598
+ wp_redirect( add_query_arg( array( 'updated' => 'expiredkey' ), get_permalink() ) );
599
+ } else {
600
+ wp_redirect( add_query_arg( array( 'updated' => 'invalidkey' ), get_permalink() ) );
601
+ }
602
+ exit;
603
+ }
604
+
605
+
606
  $errors = new \WP_Error();
607
  /**
608
  * Fires before the password reset procedure is validated.
614
  */
615
  do_action( 'validate_password_reset', $errors, $user );
616
 
 
 
 
617
  if ( ( ! $errors->get_error_code() ) ) {
618
  reset_password( $user, $args['user_password'] );
619
  setcookie( $rp_cookie, ' ', time() - YEAR_IN_SECONDS, $rp_path, COOKIE_DOMAIN, is_ssl(), true );
623
  wp_logout();
624
  }
625
 
626
+ /**
627
+ * UM hook
628
+ *
629
+ * @type action
630
+ * @title um_after_changing_user_password
631
+ * @description Hook that runs after user change their password
632
+ * @input_vars
633
+ * [{"var":"$user_id","type":"int","desc":"User ID"}]
634
+ * @change_log
635
+ * ["Since: 2.0"]
636
+ * @usage add_action( 'um_after_changing_user_password', 'function_name', 10, 1 );
637
+ * @example
638
+ * <?php
639
+ * add_action( 'um_after_changing_user_password', 'my_after_changing_user_password', 10, 1 );
640
+ * function my_user_login_extra( $user_id ) {
641
+ * // your code here
642
+ * }
643
+ * ?>
644
+ */
645
+ do_action( 'um_after_changing_user_password', $args['user_id'] );
646
+
647
  exit( wp_redirect( um_get_core_page('login', 'password_changed' ) ) );
648
  }
649
  }
includes/core/class-query.php CHANGED
@@ -94,8 +94,13 @@ if ( ! class_exists( 'um\core\Query' ) ) {
94
  return 'reached_maximum_limit';
95
  }
96
 
97
-
98
- $pages = $wpdb->get_results('SELECT * FROM '.$wpdb->posts.' WHERE post_type = "page" AND post_status = "publish" ', OBJECT);
 
 
 
 
 
99
 
100
  $array = array();
101
  if( $wpdb->num_rows > 0 ){
94
  return 'reached_maximum_limit';
95
  }
96
 
97
+ $pages = $wpdb->get_results(
98
+ "SELECT *
99
+ FROM {$wpdb->posts}
100
+ WHERE post_type = 'page' AND
101
+ post_status = 'publish'",
102
+ OBJECT
103
+ );
104
 
105
  $array = array();
106
  if( $wpdb->num_rows > 0 ){
includes/core/class-roles-capabilities.php CHANGED
@@ -592,7 +592,7 @@ if ( ! class_exists( 'um\core\Roles_Capabilities' ) ) {
592
 
593
  um_fetch_user( get_current_user_id() );
594
 
595
- $current_user_roles = UM()->roles()->get_all_user_roles( $user_id );
596
 
597
  switch( $cap ) {
598
  case 'edit':
592
 
593
  um_fetch_user( get_current_user_id() );
594
 
595
+ $current_user_roles = $this->get_all_user_roles( $user_id );
596
 
597
  switch( $cap ) {
598
  case 'edit':
includes/core/class-uploader.php CHANGED
@@ -165,7 +165,7 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
165
  public function get_upload_base_url() {
166
  $wp_baseurl = $this->wp_upload_dir['baseurl'];
167
 
168
- $this->upload_baseurl = set_url_scheme( $wp_baseurl . $this->core_upload_dir );
169
 
170
  return $this->upload_baseurl;
171
  }
@@ -470,6 +470,9 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
470
 
471
  $response['handle_upload'] = $movefile;
472
 
 
 
 
473
  return $response;
474
  }
475
 
@@ -638,6 +641,9 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
638
 
639
  $response['handle_upload'] = $movefile;
640
 
 
 
 
641
  return $response;
642
  }
643
 
@@ -868,17 +874,22 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
868
 
869
  /**
870
  * Make unique filename
 
871
  * @param string $filename
872
  * @param string $ext
873
- * @param string $dir
874
  * @return string $filename
875
  *
876
  * @since 2.0.22
877
  */
878
- public function unique_filename( $filename, $ext, $dir ) {
879
- $image_type = wp_check_filetype( $ext );
880
 
881
- $ext = $image_type['ext'];
 
 
 
 
 
 
882
 
883
  if ( 'image' == $this->upload_type ) {
884
 
@@ -1016,14 +1027,14 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
1016
 
1017
  $resize = $image->multi_resize( $sizes_array );
1018
 
1019
- // change filenames of resized images
1020
  foreach( $resize as $row ){
1021
  $new_filename = str_replace( "x{$row['height']}" , "", $row["file"] );
1022
- $old_filename = $row["file"];
1023
-
1024
  rename( dirname( $image_path ) . DIRECTORY_SEPARATOR . $old_filename, dirname( $image_path ) . DIRECTORY_SEPARATOR . $new_filename );
1025
  }
1026
-
1027
  } else {
1028
  wp_send_json_error( esc_js( __( "Unable to crop image file: {$src}", 'ultimate-member' ) ) );
1029
  }
@@ -1241,4 +1252,4 @@ if ( ! class_exists( 'um\core\Uploader' ) ) {
1241
  }
1242
  }
1243
 
1244
- }
165
  public function get_upload_base_url() {
166
  $wp_baseurl = $this->wp_upload_dir['baseurl'];
167
 
168
+ $this->upload_baseurl = set_url_scheme( $wp_baseurl . $this->core_upload_url );
169
 
170
  return $this->upload_baseurl;
171
  }
470
 
471
  $response['handle_upload'] = $movefile;
472
 
473
+ // Remove old files from 'temp' directory
474
+ UM()->files()->remove_old_files( UM()->files()->upload_temp );
475
+
476
  return $response;
477
  }
478
 
641
 
642
  $response['handle_upload'] = $movefile;
643
 
644
+ // Remove old files from 'temp' directory
645
+ UM()->files()->remove_old_files( UM()->files()->upload_temp );
646
+
647
  return $response;
648
  }
649
 
874
 
875
  /**
876
  * Make unique filename
877
+ * @param string $dir
878
  * @param string $filename
879
  * @param string $ext
 
880
  * @return string $filename
881
  *
882
  * @since 2.0.22
883
  */
884
+ public function unique_filename( $dir, $filename, $ext ) {
 
885
 
886
+ if ( empty( $ext ) ) {
887
+ $image_type = wp_check_filetype( $filename );
888
+ $ext = strtolower( trim( $image_type['ext'], ' \/.' ) );
889
+ }
890
+ else {
891
+ $ext = strtolower( trim( $ext, ' \/.' ) );
892
+ }
893
 
894
  if ( 'image' == $this->upload_type ) {
895
 
1027
 
1028
  $resize = $image->multi_resize( $sizes_array );
1029
 
1030
+ // change filenames of resized images
1031
  foreach( $resize as $row ){
1032
  $new_filename = str_replace( "x{$row['height']}" , "", $row["file"] );
1033
+ $old_filename = $row["file"];
1034
+
1035
  rename( dirname( $image_path ) . DIRECTORY_SEPARATOR . $old_filename, dirname( $image_path ) . DIRECTORY_SEPARATOR . $new_filename );
1036
  }
1037
+
1038
  } else {
1039
  wp_send_json_error( esc_js( __( "Unable to crop image file: {$src}", 'ultimate-member' ) ) );
1040
  }
1252
  }
1253
  }
1254
 
1255
+ }
includes/core/class-user-posts.php CHANGED
@@ -61,8 +61,7 @@ if ( ! class_exists( 'um\core\User_posts' ) ) {
61
  $args = apply_filters( 'um_profile_query_make_posts', $args );
62
  $posts = get_posts( $args );
63
 
64
- $count_posts = wp_count_posts();
65
- $count_posts = ! empty( $count_posts->publish ) ? $count_posts->publish : 0;
66
 
67
  UM()->shortcodes()->set_args = array( 'posts' => $posts, 'count_posts' => $count_posts );
68
  UM()->shortcodes()->load_template( 'profile/posts' );
61
  $args = apply_filters( 'um_profile_query_make_posts', $args );
62
  $posts = get_posts( $args );
63
 
64
+ $count_posts = (int) count_user_posts( um_get_requested_user(), 'post', true );
 
65
 
66
  UM()->shortcodes()->set_args = array( 'posts' => $posts, 'count_posts' => $count_posts );
67
  UM()->shortcodes()->load_template( 'profile/posts' );
includes/core/class-user.php CHANGED
@@ -99,9 +99,6 @@ if ( ! class_exists( 'um\core\User' ) ) {
99
  * @param $user_id
100
  */
101
  function delete_user_handler( $user_id ) {
102
- error_log( '----------------' );
103
- error_log( $user_id );
104
-
105
  um_fetch_user( $user_id );
106
 
107
  /**
@@ -1378,8 +1375,6 @@ if ( ! class_exists( 'um\core\User' ) ) {
1378
  $this->send_mail_on_delete = false;
1379
  }
1380
 
1381
- $this->delete_user_handler( um_user( 'ID' ) );
1382
-
1383
  // remove user
1384
  if ( is_multisite() ) {
1385
 
@@ -1672,7 +1667,11 @@ if ( ! class_exists( 'um\core\User' ) ) {
1672
 
1673
  foreach ( $changes as $key => $value ) {
1674
  if ( ! in_array( $key, $this->update_user_keys ) ) {
1675
- update_user_meta( $this->id, $key, $value );
 
 
 
 
1676
  } else {
1677
  $args[ $key ] = esc_attr( $changes[ $key ] );
1678
  }
99
  * @param $user_id
100
  */
101
  function delete_user_handler( $user_id ) {
 
 
 
102
  um_fetch_user( $user_id );
103
 
104
  /**
1375
  $this->send_mail_on_delete = false;
1376
  }
1377
 
 
 
1378
  // remove user
1379
  if ( is_multisite() ) {
1380
 
1667
 
1668
  foreach ( $changes as $key => $value ) {
1669
  if ( ! in_array( $key, $this->update_user_keys ) ) {
1670
+ if( $value === 0 ){
1671
+ update_user_meta( $this->id, $key, '0' );
1672
+ } else {
1673
+ update_user_meta( $this->id, $key, $value );
1674
+ }
1675
  } else {
1676
  $args[ $key ] = esc_attr( $changes[ $key ] );
1677
  }
includes/core/um-actions-account.php CHANGED
@@ -24,10 +24,10 @@ function um_submit_account_errors_hook( $args ) {
24
  case 'delete': {
25
  // delete account
26
  if ( strlen(trim( $_POST['single_user_password'] ) ) == 0 ) {
27
- UM()->form()->add_error('single_user_password', __('You must enter your password','ultimate-member') );
28
  } else {
29
  if ( ! wp_check_password( $_POST['single_user_password'], $user->data->user_pass, $user->data->ID ) ) {
30
- UM()->form()->add_error('single_user_password', __('This is not your password','ultimate-member') );
31
  }
32
  }
33
 
@@ -95,14 +95,29 @@ function um_submit_account_errors_hook( $args ) {
95
  }
96
 
97
  if ( isset( $_POST['user_email'] ) ) {
98
- if ( strlen( trim( $_POST['user_email'] ) ) == 0 )
 
99
  UM()->form()->add_error( 'user_email', __( 'You must provide your e-mail', 'ultimate-member' ) );
 
100
 
101
- if ( ! is_email( $_POST['user_email'] ) )
102
  UM()->form()->add_error( 'user_email', __( 'Please provide a valid e-mail', 'ultimate-member' ) );
 
103
 
104
- if ( email_exists( $_POST['user_email'] ) && email_exists( $_POST['user_email'] ) != get_current_user_id() )
105
  UM()->form()->add_error( 'user_email', __( 'Email already linked to another account', 'ultimate-member' ) );
 
 
 
 
 
 
 
 
 
 
 
 
106
  }
107
 
108
  break;
24
  case 'delete': {
25
  // delete account
26
  if ( strlen(trim( $_POST['single_user_password'] ) ) == 0 ) {
27
+ UM()->form()->add_error( 'single_user_password', __( 'You must enter your password', 'ultimate-member' ) );
28
  } else {
29
  if ( ! wp_check_password( $_POST['single_user_password'], $user->data->user_pass, $user->data->ID ) ) {
30
+ UM()->form()->add_error( 'single_user_password', __( 'This is not your password', 'ultimate-member' ) );
31
  }
32
  }
33
 
95
  }
96
 
97
  if ( isset( $_POST['user_email'] ) ) {
98
+
99
+ if ( strlen( trim( $_POST['user_email'] ) ) == 0 ) {
100
  UM()->form()->add_error( 'user_email', __( 'You must provide your e-mail', 'ultimate-member' ) );
101
+ }
102
 
103
+ if ( ! is_email( $_POST['user_email'] ) ) {
104
  UM()->form()->add_error( 'user_email', __( 'Please provide a valid e-mail', 'ultimate-member' ) );
105
+ }
106
 
107
+ if ( email_exists( $_POST['user_email'] ) && email_exists( $_POST['user_email'] ) != get_current_user_id() ) {
108
  UM()->form()->add_error( 'user_email', __( 'Email already linked to another account', 'ultimate-member' ) );
109
+ }
110
+ }
111
+
112
+ // check account password
113
+ if ( UM()->options()->get( 'account_general_password' ) ) {
114
+ if ( strlen( trim( $_POST['single_user_password'] ) ) == 0 ) {
115
+ UM()->form()->add_error('single_user_password', __( 'You must enter your password', 'ultimate-member' ) );
116
+ } else {
117
+ if ( ! wp_check_password( $_POST['single_user_password'], $user->data->user_pass, $user->data->ID ) ) {
118
+ UM()->form()->add_error('single_user_password', __( 'This is not your password', 'ultimate-member' ) );
119
+ }
120
+ }
121
  }
122
 
123
  break;
includes/core/um-actions-form.php CHANGED
@@ -444,7 +444,7 @@ function um_submit_form_errors_hook_( $args ) {
444
  }
445
 
446
  if ( isset( $array['max_words'] ) && $array['max_words'] > 0 ) {
447
- if ( str_word_count( $args[$key] ) > $array['max_words'] ) {
448
  UM()->form()->add_error($key, sprintf(__('You are only allowed to enter a maximum of %s words','ultimate-member'), $array['max_words']) );
449
  }
450
  }
444
  }
445
 
446
  if ( isset( $array['max_words'] ) && $array['max_words'] > 0 ) {
447
+ if ( str_word_count( $args[$key], 0, "éèàôù" ) > $array['max_words'] ) {
448
  UM()->form()->add_error($key, sprintf(__('You are only allowed to enter a maximum of %s words','ultimate-member'), $array['max_words']) );
449
  }
450
  }
includes/core/um-actions-profile.php CHANGED
@@ -218,6 +218,7 @@ function um_user_edit_profile( $args ) {
218
 
219
  // loop through fields
220
  if ( ! empty( $fields ) ) {
 
221
  foreach ( $fields as $key => $array ) {
222
 
223
  if ( ! um_can_edit_field( $array ) && isset( $array['editable'] ) && ! $array['editable'] ) {
@@ -229,6 +230,7 @@ function um_user_edit_profile( $args ) {
229
  }
230
 
231
  if ( isset( $args['submitted'][ $key ] ) ) {
 
232
  if ( isset( $array['type'] ) && in_array( $array['type'], array( 'image', 'file' ) ) &&
233
  ( /*um_is_file_owner( UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . '/' . $args['submitted'][ $key ], um_user( 'ID' ) ) ||*/
234
  um_is_temp_file( $args['submitted'][ $key ] ) || $args['submitted'][ $key ] == 'empty_file' ) ) {
@@ -236,14 +238,13 @@ function um_user_edit_profile( $args ) {
236
  $files[ $key ] = $args['submitted'][ $key ];
237
 
238
  } else {
239
-
240
  if ( $array['type'] == 'password' ) {
241
  $to_update[ $key ] = wp_hash_password( $args['submitted'][ $key ] );
242
  $args['submitted'][ $key ] = sprintf( __( 'Your choosed %s', 'ultimate-member' ), $array['title'] );
243
  } else {
244
  if ( isset( $userinfo[ $key ] ) && $args['submitted'][ $key ] != $userinfo[ $key ] ) {
245
  $to_update[ $key ] = $args['submitted'][ $key ];
246
- } elseif ( $args['submitted'][ $key ] ) {
247
  $to_update[ $key ] = $args['submitted'][ $key ];
248
  }
249
  }
218
 
219
  // loop through fields
220
  if ( ! empty( $fields ) ) {
221
+
222
  foreach ( $fields as $key => $array ) {
223
 
224
  if ( ! um_can_edit_field( $array ) && isset( $array['editable'] ) && ! $array['editable'] ) {
230
  }
231
 
232
  if ( isset( $args['submitted'][ $key ] ) ) {
233
+
234
  if ( isset( $array['type'] ) && in_array( $array['type'], array( 'image', 'file' ) ) &&
235
  ( /*um_is_file_owner( UM()->uploader()->get_upload_base_url() . um_user( 'ID' ) . '/' . $args['submitted'][ $key ], um_user( 'ID' ) ) ||*/
236
  um_is_temp_file( $args['submitted'][ $key ] ) || $args['submitted'][ $key ] == 'empty_file' ) ) {
238
  $files[ $key ] = $args['submitted'][ $key ];
239
 
240
  } else {
 
241
  if ( $array['type'] == 'password' ) {
242
  $to_update[ $key ] = wp_hash_password( $args['submitted'][ $key ] );
243
  $args['submitted'][ $key ] = sprintf( __( 'Your choosed %s', 'ultimate-member' ), $array['title'] );
244
  } else {
245
  if ( isset( $userinfo[ $key ] ) && $args['submitted'][ $key ] != $userinfo[ $key ] ) {
246
  $to_update[ $key ] = $args['submitted'][ $key ];
247
+ } elseif ( $args['submitted'][ $key ] != '' ) {
248
  $to_update[ $key ] = $args['submitted'][ $key ];
249
  }
250
  }
includes/core/um-filters-members.php CHANGED
@@ -86,11 +86,14 @@ function um_remove_special_users_from_list( $query_args, $args ) {
86
 
87
  if ( ! empty( $roles ) ) {
88
  if ( ! empty( $query_args['role__in'] ) ) {
89
- $query_args['role__in'] = array_intersect( $query_args['role__in'], $roles );
 
 
 
90
  } else {
91
  $query_args['role__in'] = $roles;
92
  }
93
- }
94
 
95
  }
96
 
@@ -376,7 +379,6 @@ function um_prepare_user_query_args( $query_args, $args ) {
376
 
377
  if ( isset( $sortby ) ) {
378
 
379
-
380
  if ( $sortby == 'other' && $sortby_custom ) {
381
 
382
  $query_args['meta_key'] = $sortby_custom;
@@ -448,9 +450,18 @@ add_filter( 'um_prepare_user_query_args', 'um_prepare_user_query_args', 10, 2 );
448
  */
449
  function um_sortby_last_login( $query_args, $sortby ) {
450
  if ( $sortby == 'last_login' ) {
451
- $query_args['orderby'] = 'meta_value_num';
452
- $query_args['order'] = 'desc';
453
- $query_args['meta_key'] = '_um_last_login';
 
 
 
 
 
 
 
 
 
454
  }
455
  return $query_args;
456
  }
86
 
87
  if ( ! empty( $roles ) ) {
88
  if ( ! empty( $query_args['role__in'] ) ) {
89
+ $roles_intersect = array_intersect( $query_args['role__in'], $roles );
90
+ if( ! empty( $roles_intersect ) ){
91
+ $query_args['role__in'] = $roles_intersect;
92
+ }
93
  } else {
94
  $query_args['role__in'] = $roles;
95
  }
96
+ }
97
 
98
  }
99
 
379
 
380
  if ( isset( $sortby ) ) {
381
 
 
382
  if ( $sortby == 'other' && $sortby_custom ) {
383
 
384
  $query_args['meta_key'] = $sortby_custom;
450
  */
451
  function um_sortby_last_login( $query_args, $sortby ) {
452
  if ( $sortby == 'last_login' ) {
453
+ $query_args['orderby'] = array( 'um_last_login' => 'DESC' );
454
+ $query_args['meta_query']['um_last_login'] = array(
455
+ 'relation' => 'OR',
456
+ array(
457
+ 'key' => '_um_last_login',
458
+ 'compare' => 'EXISTS',
459
+ ),
460
+ array(
461
+ 'key' => '_um_last_login',
462
+ 'compare' => 'NOT EXISTS',
463
+ ),
464
+ );
465
  }
466
  return $query_args;
467
  }
includes/um-short-functions.php CHANGED
@@ -620,7 +620,7 @@ function um_js_redirect( $url ) {
620
  * @return string
621
  */
622
  function um_get_snippet( $str, $wordCount = 10 ) {
623
- if (str_word_count( $str ) > $wordCount) {
624
  $str = implode(
625
  '',
626
  array_slice(
@@ -2131,7 +2131,7 @@ function um_get_default_cover_uri() {
2131
  * @param $data
2132
  * @param null $attrs
2133
  *
2134
- * @return string
2135
  */
2136
  function um_user( $data, $attrs = null ) {
2137
 
620
  * @return string
621
  */
622
  function um_get_snippet( $str, $wordCount = 10 ) {
623
+ if (str_word_count( $str, 0, "éèàôù" ) > $wordCount) {
624
  $str = implode(
625
  '',
626
  array_slice(
2131
  * @param $data
2132
  * @param null $attrs
2133
  *
2134
+ * @return string|array
2135
  */
2136
  function um_user( $data, $attrs = null ) {
2137
 
languages/ultimate-member-en_US.mo CHANGED
Binary file
languages/ultimate-member-en_US.po CHANGED
@@ -1,8 +1,8 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Ultimate Member\n"
4
- "POT-Creation-Date: 2019-03-12 14:40+0200\n"
5
- "PO-Revision-Date: 2019-03-12 14:40+0200\n"
6
  "Last-Translator: \n"
7
  "Language-Team: \n"
8
  "Language: en_US\n"
@@ -35,7 +35,7 @@ msgid "Docs"
35
  msgstr ""
36
 
37
  #: includes/admin/class-admin.php:308
38
- #: includes/admin/core/class-admin-settings.php:1156
39
  msgid "Settings"
40
  msgstr ""
41
 
@@ -103,7 +103,7 @@ msgstr ""
103
  #: includes/admin/core/class-admin-builder.php:767
104
  #: includes/admin/core/class-admin-dragdrop.php:32
105
  #: includes/admin/core/class-admin-menu.php:104
106
- #: includes/core/class-fields.php:4071
107
  msgid "Please login as administrator"
108
  msgstr ""
109
 
@@ -158,7 +158,7 @@ msgstr ""
158
 
159
  #: includes/admin/core/class-admin-builder.php:1143
160
  #: includes/core/class-form.php:155 includes/core/class-form.php:328
161
- #: includes/core/class-password.php:528
162
  msgid "This is not possible for security reasons."
163
  msgstr ""
164
 
@@ -226,7 +226,7 @@ msgstr ""
226
  #: includes/admin/templates/form/register_gdpr.php:23
227
  #: includes/core/class-builtin.php:1130 includes/core/class-builtin.php:1144
228
  #: includes/core/class-builtin.php:1145
229
- #: includes/core/um-actions-account.php:256
230
  msgid "No"
231
  msgstr ""
232
 
@@ -253,53 +253,79 @@ msgstr ""
253
  msgid "Yes"
254
  msgstr ""
255
 
256
- #: includes/admin/core/class-admin-enqueue.php:166
257
  msgid "e.g. Member Directory"
258
  msgstr ""
259
 
260
- #: includes/admin/core/class-admin-enqueue.php:168
261
  msgid "e.g. New Registration Form"
262
  msgstr ""
263
 
264
- #: includes/admin/core/class-admin-enqueue.php:213
265
- #: includes/admin/core/class-admin-enqueue.php:244
266
- #: includes/admin/core/class-admin-forms.php:828
267
- #: includes/admin/core/class-admin-forms.php:842
268
- #: includes/admin/core/class-admin-forms.php:947
269
- #: includes/admin/core/class-admin-forms.php:956
270
  #: includes/admin/core/class-admin-notices.php:390
271
- #: includes/core/um-actions-profile.php:555
272
  msgid "Remove"
273
  msgstr ""
274
 
275
- #: includes/admin/core/class-admin-enqueue.php:214
276
- #: includes/admin/core/class-admin-enqueue.php:245
277
- #: includes/admin/core/class-admin-forms.php:1024
278
  msgid "Select"
279
  msgstr ""
280
 
281
- #: includes/admin/core/class-admin-enqueue.php:242
282
  msgid "Are sure, maybe some settings not saved"
283
  msgstr ""
284
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
285
  #: includes/admin/core/class-admin-forms.php:314
286
  #: includes/core/um-filters-fields.php:15
287
  msgid "Required"
288
  msgstr ""
289
 
290
- #: includes/admin/core/class-admin-forms.php:466
291
  msgid "Choose Icon"
292
  msgstr ""
293
 
294
- #: includes/admin/core/class-admin-forms.php:472
295
  msgid "No Icon"
296
  msgstr ""
297
 
298
- #: includes/admin/core/class-admin-forms.php:1001
299
  msgid "Select media"
300
  msgstr ""
301
 
302
- #: includes/admin/core/class-admin-forms.php:1025
303
  msgid "Clear"
304
  msgstr ""
305
 
@@ -408,7 +434,7 @@ msgstr ""
408
  #. Plugin Name of the plugin/theme
409
  #. Author of the plugin/theme
410
  #: includes/admin/core/class-admin-menu.php:145
411
- #: includes/core/class-user.php:558
412
  msgid "Ultimate Member"
413
  msgstr ""
414
 
@@ -428,12 +454,12 @@ msgid "User Roles"
428
  msgstr ""
429
 
430
  #: includes/admin/core/class-admin-menu.php:162
431
- #: includes/core/class-common.php:83
432
  msgid "Member Directories"
433
  msgstr ""
434
 
435
  #: includes/admin/core/class-admin-menu.php:204
436
- #: includes/admin/core/class-admin-settings.php:1029
437
  msgid "Extensions"
438
  msgstr ""
439
 
@@ -1184,7 +1210,7 @@ msgid "Your user cache is now removed."
1184
  msgstr ""
1185
 
1186
  #: includes/admin/core/class-admin-notices.php:407
1187
- msgid "You got the latest upgrades."
1188
  msgstr ""
1189
 
1190
  #: includes/admin/core/class-admin-notices.php:411
@@ -1661,8 +1687,8 @@ msgid ""
1661
  msgstr ""
1662
 
1663
  #: includes/admin/core/class-admin-settings.php:436
1664
- #: includes/class-config.php:134 includes/class-config.php:743
1665
- #: includes/core/class-account.php:90
1666
  msgid "Account"
1667
  msgstr ""
1668
 
@@ -1740,746 +1766,754 @@ msgid "Whether to allow users changing their email in account page."
1740
  msgstr ""
1741
 
1742
  #: includes/admin/core/class-admin-settings.php:500
1743
- msgid "Allow users to hide their profiles from directory"
1744
  msgstr ""
1745
 
1746
  #: includes/admin/core/class-admin-settings.php:501
 
 
 
 
 
 
 
 
1747
  msgid ""
1748
  "Whether to allow users changing their profile visibility from member "
1749
  "directory in account page."
1750
  msgstr ""
1751
 
1752
- #: includes/admin/core/class-admin-settings.php:506
1753
  msgid "Require a strong password?"
1754
  msgstr ""
1755
 
1756
- #: includes/admin/core/class-admin-settings.php:507
1757
  msgid ""
1758
  "Enable or disable a strong password rules on account page / change password "
1759
  "tab"
1760
  msgstr ""
1761
 
1762
- #: includes/admin/core/class-admin-settings.php:512
1763
  msgid "Uploads"
1764
  msgstr ""
1765
 
1766
- #: includes/admin/core/class-admin-settings.php:518
1767
  msgid "Profile Photo Maximum File Size (bytes)"
1768
  msgstr ""
1769
 
1770
- #: includes/admin/core/class-admin-settings.php:519
1771
  msgid "Sets a maximum size for the uploaded photo"
1772
  msgstr ""
1773
 
1774
- #: includes/admin/core/class-admin-settings.php:526
1775
  msgid "Cover Photo Maximum File Size (bytes)"
1776
  msgstr ""
1777
 
1778
- #: includes/admin/core/class-admin-settings.php:527
1779
  msgid "Sets a maximum size for the uploaded cover"
1780
  msgstr ""
1781
 
1782
- #: includes/admin/core/class-admin-settings.php:533
1783
  msgid "Profile Photo Thumbnail Sizes (px)"
1784
  msgstr ""
1785
 
1786
- #: includes/admin/core/class-admin-settings.php:534
1787
  msgid ""
1788
  "Here you can define which thumbnail sizes will be created for each profile "
1789
  "photo upload."
1790
  msgstr ""
1791
 
1792
- #: includes/admin/core/class-admin-settings.php:536
1793
- #: includes/admin/core/class-admin-settings.php:546
1794
  msgid "Add New Size"
1795
  msgstr ""
1796
 
1797
- #: includes/admin/core/class-admin-settings.php:543
1798
  msgid "Cover Photo Thumbnail Sizes (px)"
1799
  msgstr ""
1800
 
1801
- #: includes/admin/core/class-admin-settings.php:544
1802
  msgid ""
1803
  "Here you can define which thumbnail sizes will be created for each cover "
1804
  "photo upload."
1805
  msgstr ""
1806
 
1807
- #: includes/admin/core/class-admin-settings.php:554
1808
  msgid "Image Quality"
1809
  msgstr ""
1810
 
1811
- #: includes/admin/core/class-admin-settings.php:555
1812
  msgid ""
1813
  "Quality is used to determine quality of image uploads, and ranges from 0 "
1814
  "(worst quality, smaller file) to 100 (best quality, biggest file). The "
1815
  "default range is 60."
1816
  msgstr ""
1817
 
1818
- #: includes/admin/core/class-admin-settings.php:562
1819
  msgid "Image Upload Maximum Width (px)"
1820
  msgstr ""
1821
 
1822
- #: includes/admin/core/class-admin-settings.php:563
1823
  msgid ""
1824
  "Any image upload above this width will be resized to this limit "
1825
  "automatically."
1826
  msgstr ""
1827
 
1828
- #: includes/admin/core/class-admin-settings.php:570
1829
  msgid "Cover Photo Minimum Width (px)"
1830
  msgstr ""
1831
 
1832
- #: includes/admin/core/class-admin-settings.php:571
1833
  msgid "This will be the minimum width for cover photo uploads"
1834
  msgstr ""
1835
 
1836
- #: includes/admin/core/class-admin-settings.php:578
1837
  msgid "Access"
1838
  msgstr ""
1839
 
1840
- #: includes/admin/core/class-admin-settings.php:581
1841
  msgid "Restriction Content"
1842
  msgstr ""
1843
 
1844
- #: includes/admin/core/class-admin-settings.php:585
1845
  msgid "Other"
1846
  msgstr ""
1847
 
1848
- #: includes/admin/core/class-admin-settings.php:590
1849
  msgid "Enable the Reset Password Limit?"
1850
  msgstr ""
1851
 
1852
- #: includes/admin/core/class-admin-settings.php:595
1853
  msgid "Reset Password Limit"
1854
  msgstr ""
1855
 
1856
- #: includes/admin/core/class-admin-settings.php:596
1857
  msgid ""
1858
  "Set the maximum reset password limit. If reached the maximum limit, user "
1859
  "will be locked from using this."
1860
  msgstr ""
1861
 
1862
- #: includes/admin/core/class-admin-settings.php:604
1863
  msgid "Blocked Email Addresses"
1864
  msgstr ""
1865
 
1866
- #: includes/admin/core/class-admin-settings.php:605
1867
  msgid ""
1868
  "This will block the specified e-mail addresses from being able to sign up or "
1869
  "sign in to your site. To block an entire domain, use something like *@domain."
1870
  "com"
1871
  msgstr ""
1872
 
1873
- #: includes/admin/core/class-admin-settings.php:610
1874
  msgid "Blacklist Words"
1875
  msgstr ""
1876
 
1877
- #: includes/admin/core/class-admin-settings.php:611
1878
  msgid ""
1879
  "This option lets you specify blacklist of words to prevent anyone from "
1880
  "signing up with such a word as their username"
1881
  msgstr ""
1882
 
1883
- #: includes/admin/core/class-admin-settings.php:618
1884
  #: includes/admin/core/list-tables/emails-list-table.php:300
1885
  msgid "Email"
1886
  msgstr ""
1887
 
1888
- #: includes/admin/core/class-admin-settings.php:623
1889
  msgid "Admin E-mail Address"
1890
  msgstr ""
1891
 
1892
- #: includes/admin/core/class-admin-settings.php:624
1893
- #: includes/admin/core/class-admin-settings.php:636
1894
  msgid "e.g. admin@companyname.com"
1895
  msgstr ""
1896
 
1897
- #: includes/admin/core/class-admin-settings.php:629
1898
  msgid "Mail appears from"
1899
  msgstr ""
1900
 
1901
- #: includes/admin/core/class-admin-settings.php:630
1902
  msgid "e.g. Site Name"
1903
  msgstr ""
1904
 
1905
- #: includes/admin/core/class-admin-settings.php:635
1906
  msgid "Mail appears from address"
1907
  msgstr ""
1908
 
1909
- #: includes/admin/core/class-admin-settings.php:641
1910
  msgid "Use HTML for E-mails?"
1911
  msgstr ""
1912
 
1913
- #: includes/admin/core/class-admin-settings.php:642
1914
  msgid ""
1915
  "If you plan use e-mails with HTML, please make sure that this option is "
1916
  "enabled. Otherwise, HTML will be displayed as plain text."
1917
  msgstr ""
1918
 
1919
- #: includes/admin/core/class-admin-settings.php:647
1920
  msgid "Appearance"
1921
  msgstr ""
1922
 
1923
- #: includes/admin/core/class-admin-settings.php:650
1924
  msgid "Profile"
1925
  msgstr ""
1926
 
1927
- #: includes/admin/core/class-admin-settings.php:655
1928
  msgid "Profile Default Template"
1929
  msgstr ""
1930
 
1931
- #: includes/admin/core/class-admin-settings.php:656
1932
  msgid "This will be the default template to output profile"
1933
  msgstr ""
1934
 
1935
- #: includes/admin/core/class-admin-settings.php:664
1936
  msgid "Profile Maximum Width"
1937
  msgstr ""
1938
 
1939
- #: includes/admin/core/class-admin-settings.php:673
1940
  msgid "Profile Area Maximum Width"
1941
  msgstr ""
1942
 
1943
- #: includes/admin/core/class-admin-settings.php:675
1944
  #: includes/admin/templates/form/profile_customize.php:56
1945
  msgid ""
1946
  "The maximum width of the profile area inside profile (below profile header)"
1947
  msgstr ""
1948
 
1949
- #: includes/admin/core/class-admin-settings.php:681
1950
  msgid "Profile Field Icons"
1951
  msgstr ""
1952
 
1953
- #: includes/admin/core/class-admin-settings.php:682
1954
  msgid "This is applicable for edit mode only"
1955
  msgstr ""
1956
 
1957
- #: includes/admin/core/class-admin-settings.php:685
1958
- #: includes/admin/core/class-admin-settings.php:881
1959
- #: includes/admin/core/class-admin-settings.php:971
1960
  #: includes/admin/templates/form/login_customize.php:40
1961
  #: includes/admin/templates/form/profile_customize.php:67
1962
  #: includes/admin/templates/form/register_customize.php:55
1963
  msgid "Show inside text field"
1964
  msgstr ""
1965
 
1966
- #: includes/admin/core/class-admin-settings.php:686
1967
- #: includes/admin/core/class-admin-settings.php:882
1968
- #: includes/admin/core/class-admin-settings.php:972
1969
  #: includes/admin/templates/form/login_customize.php:41
1970
  #: includes/admin/templates/form/profile_customize.php:68
1971
  #: includes/admin/templates/form/register_customize.php:56
1972
  msgid "Show with label"
1973
  msgstr ""
1974
 
1975
- #: includes/admin/core/class-admin-settings.php:687
1976
- #: includes/admin/core/class-admin-settings.php:883
1977
- #: includes/admin/core/class-admin-settings.php:973
1978
  #: includes/admin/templates/form/login_customize.php:42
1979
  #: includes/admin/templates/form/profile_customize.php:69
1980
  #: includes/admin/templates/form/register_customize.php:57
1981
  msgid "Turn off"
1982
  msgstr ""
1983
 
1984
- #: includes/admin/core/class-admin-settings.php:694
1985
  msgid "Profile Primary Button Text"
1986
  msgstr ""
1987
 
1988
- #: includes/admin/core/class-admin-settings.php:696
1989
  msgid "The text that is used for updating profile button"
1990
  msgstr ""
1991
 
1992
- #: includes/admin/core/class-admin-settings.php:702
1993
  msgid "Profile Secondary Button"
1994
  msgstr ""
1995
 
1996
- #: includes/admin/core/class-admin-settings.php:704
1997
- #: includes/admin/core/class-admin-settings.php:900
1998
- #: includes/admin/core/class-admin-settings.php:990
1999
  msgid "Switch on/off the secondary button display in the form"
2000
  msgstr ""
2001
 
2002
- #: includes/admin/core/class-admin-settings.php:709
2003
  msgid "Profile Secondary Button Text"
2004
  msgstr ""
2005
 
2006
- #: includes/admin/core/class-admin-settings.php:711
2007
  msgid "The text that is used for cancelling update profile button"
2008
  msgstr ""
2009
 
2010
- #: includes/admin/core/class-admin-settings.php:718
2011
  msgid "Default Profile Photo"
2012
  msgstr ""
2013
 
2014
- #: includes/admin/core/class-admin-settings.php:719
2015
  msgid ""
2016
  "You can change the default profile picture globally here. Please make sure "
2017
  "that the photo is 300x300px."
2018
  msgstr ""
2019
 
2020
- #: includes/admin/core/class-admin-settings.php:720
2021
  msgid "Select Default Profile Photo"
2022
  msgstr ""
2023
 
2024
- #: includes/admin/core/class-admin-settings.php:730
2025
  msgid "Default Cover Photo"
2026
  msgstr ""
2027
 
2028
- #: includes/admin/core/class-admin-settings.php:731
2029
  msgid ""
2030
  "You can change the default cover photo globally here. Please make sure that "
2031
  "the default cover is large enough and respects the ratio you are using for "
2032
  "cover photos."
2033
  msgstr ""
2034
 
2035
- #: includes/admin/core/class-admin-settings.php:732
2036
  msgid "Select Default Cover Photo"
2037
  msgstr ""
2038
 
2039
- #: includes/admin/core/class-admin-settings.php:737
2040
  #: includes/admin/templates/form/profile_customize.php:128
2041
  msgid "Profile Photo Size"
2042
  msgstr ""
2043
 
2044
- #: includes/admin/core/class-admin-settings.php:739
2045
  msgid ""
2046
  "The global default of profile photo size. This can be overridden by "
2047
  "individual form settings"
2048
  msgstr ""
2049
 
2050
- #: includes/admin/core/class-admin-settings.php:745
2051
  msgid "Profile Cover Photos"
2052
  msgstr ""
2053
 
2054
- #: includes/admin/core/class-admin-settings.php:747
2055
  msgid "Switch on/off the profile cover photos"
2056
  msgstr ""
2057
 
2058
- #: includes/admin/core/class-admin-settings.php:752
2059
  msgid "Profile Cover Ratio"
2060
  msgstr ""
2061
 
2062
- #: includes/admin/core/class-admin-settings.php:753
2063
  msgid "Choose global ratio for cover photos of profiles"
2064
  msgstr ""
2065
 
2066
- #: includes/admin/core/class-admin-settings.php:767
2067
  msgid "Profile Header Meta Text Icon"
2068
  msgstr ""
2069
 
2070
- #: includes/admin/core/class-admin-settings.php:769
2071
  msgid "Display field icons for related user meta fields in header or not"
2072
  msgstr ""
2073
 
2074
- #: includes/admin/core/class-admin-settings.php:774
2075
  msgid "Show display name in profile header"
2076
  msgstr ""
2077
 
2078
- #: includes/admin/core/class-admin-settings.php:776
2079
  msgid "Switch on/off the user name on profile header"
2080
  msgstr ""
2081
 
2082
- #: includes/admin/core/class-admin-settings.php:781
2083
  msgid "Show social links in profile header"
2084
  msgstr ""
2085
 
2086
- #: includes/admin/core/class-admin-settings.php:783
2087
  msgid "Switch on/off the social links on profile header"
2088
  msgstr ""
2089
 
2090
- #: includes/admin/core/class-admin-settings.php:788
2091
  msgid "Show user description in header"
2092
  msgstr ""
2093
 
2094
- #: includes/admin/core/class-admin-settings.php:790
2095
  msgid "Switch on/off the user description on profile header"
2096
  msgstr ""
2097
 
2098
- #: includes/admin/core/class-admin-settings.php:795
2099
  msgid "Enable html support for user description"
2100
  msgstr ""
2101
 
2102
- #: includes/admin/core/class-admin-settings.php:797
2103
  msgid ""
2104
  "Switch on/off to enable/disable support for html tags on user description."
2105
  msgstr ""
2106
 
2107
- #: includes/admin/core/class-admin-settings.php:802
2108
  msgid "User description maximum chars"
2109
  msgstr ""
2110
 
2111
- #: includes/admin/core/class-admin-settings.php:804
2112
  msgid ""
2113
  "Maximum number of characters to allow in user description field in header."
2114
  msgstr ""
2115
 
2116
- #: includes/admin/core/class-admin-settings.php:811
2117
  msgid "Profile Header Menu Position"
2118
  msgstr ""
2119
 
2120
- #: includes/admin/core/class-admin-settings.php:813
2121
  msgid ""
2122
  "For incompatible themes, please make the menu open from left instead of "
2123
  "bottom by default."
2124
  msgstr ""
2125
 
2126
- #: includes/admin/core/class-admin-settings.php:823
2127
  msgid "Show a custom message if profile is empty"
2128
  msgstr ""
2129
 
2130
- #: includes/admin/core/class-admin-settings.php:825
2131
  msgid "Switch on/off the custom message that appears when the profile is empty"
2132
  msgstr ""
2133
 
2134
- #: includes/admin/core/class-admin-settings.php:830
2135
  msgid "Show the emoticon"
2136
  msgstr ""
2137
 
2138
- #: includes/admin/core/class-admin-settings.php:832
2139
  msgid "Switch on/off the emoticon (sad face) that appears above the message"
2140
  msgstr ""
2141
 
2142
- #: includes/admin/core/class-admin-settings.php:838
2143
  msgid "Profile Menu"
2144
  msgstr ""
2145
 
2146
- #: includes/admin/core/class-admin-settings.php:842
2147
  #: includes/admin/templates/form/mode.php:9
2148
  msgid "Registration Form"
2149
  msgstr ""
2150
 
2151
- #: includes/admin/core/class-admin-settings.php:847
2152
  msgid "Registration Default Template"
2153
  msgstr ""
2154
 
2155
- #: includes/admin/core/class-admin-settings.php:848
2156
  msgid "This will be the default template to output registration"
2157
  msgstr ""
2158
 
2159
- #: includes/admin/core/class-admin-settings.php:856
2160
  msgid "Registration Maximum Width"
2161
  msgstr ""
2162
 
2163
- #: includes/admin/core/class-admin-settings.php:858
2164
- #: includes/admin/core/class-admin-settings.php:948
2165
  msgid "The maximum width this shortcode can take from the page width"
2166
  msgstr ""
2167
 
2168
- #: includes/admin/core/class-admin-settings.php:864
2169
  msgid "Registration Shortcode Alignment"
2170
  msgstr ""
2171
 
2172
- #: includes/admin/core/class-admin-settings.php:865
2173
- #: includes/admin/core/class-admin-settings.php:955
2174
  #: includes/admin/templates/form/profile_customize.php:115
2175
  msgid "The shortcode is centered by default unless you specify otherwise here"
2176
  msgstr ""
2177
 
2178
- #: includes/admin/core/class-admin-settings.php:868
2179
- #: includes/admin/core/class-admin-settings.php:958
2180
  msgid "Centered"
2181
  msgstr ""
2182
 
2183
- #: includes/admin/core/class-admin-settings.php:869
2184
- #: includes/admin/core/class-admin-settings.php:959
2185
  msgid "Left aligned"
2186
  msgstr ""
2187
 
2188
- #: includes/admin/core/class-admin-settings.php:870
2189
- #: includes/admin/core/class-admin-settings.php:960
2190
  msgid "Right aligned"
2191
  msgstr ""
2192
 
2193
- #: includes/admin/core/class-admin-settings.php:877
2194
  msgid "Registration Field Icons"
2195
  msgstr ""
2196
 
2197
- #: includes/admin/core/class-admin-settings.php:878
2198
  msgid "This controls the display of field icons in the registration form"
2199
  msgstr ""
2200
 
2201
- #: includes/admin/core/class-admin-settings.php:890
2202
  msgid "Registration Primary Button Text"
2203
  msgstr ""
2204
 
2205
- #: includes/admin/core/class-admin-settings.php:892
2206
- #: includes/admin/core/class-admin-settings.php:982
2207
  msgid "The text that is used for primary button text"
2208
  msgstr ""
2209
 
2210
- #: includes/admin/core/class-admin-settings.php:898
2211
  msgid "Registration Secondary Button"
2212
  msgstr ""
2213
 
2214
- #: includes/admin/core/class-admin-settings.php:905
2215
  msgid "Registration Secondary Button Text"
2216
  msgstr ""
2217
 
2218
- #: includes/admin/core/class-admin-settings.php:907
2219
- #: includes/admin/core/class-admin-settings.php:997
2220
  msgid "The text that is used for the secondary button text"
2221
  msgstr ""
2222
 
2223
- #: includes/admin/core/class-admin-settings.php:914
2224
  msgid "Registration Secondary Button URL"
2225
  msgstr ""
2226
 
2227
- #: includes/admin/core/class-admin-settings.php:916
2228
- #: includes/admin/core/class-admin-settings.php:1006
2229
  msgid "You can replace default link for this button by entering custom URL"
2230
  msgstr ""
2231
 
2232
- #: includes/admin/core/class-admin-settings.php:923
2233
  msgid "Registration Default Role"
2234
  msgstr ""
2235
 
2236
- #: includes/admin/core/class-admin-settings.php:924
2237
  msgid ""
2238
  "This will be the default role assigned to users registering thru "
2239
  "registration form"
2240
  msgstr ""
2241
 
2242
- #: includes/admin/core/class-admin-settings.php:932
2243
  #: includes/admin/templates/form/mode.php:13
2244
  msgid "Login Form"
2245
  msgstr ""
2246
 
2247
- #: includes/admin/core/class-admin-settings.php:937
2248
  msgid "Login Default Template"
2249
  msgstr ""
2250
 
2251
- #: includes/admin/core/class-admin-settings.php:938
2252
  msgid "This will be the default template to output login"
2253
  msgstr ""
2254
 
2255
- #: includes/admin/core/class-admin-settings.php:946
2256
  msgid "Login Maximum Width"
2257
  msgstr ""
2258
 
2259
- #: includes/admin/core/class-admin-settings.php:954
2260
  msgid "Login Shortcode Alignment"
2261
  msgstr ""
2262
 
2263
- #: includes/admin/core/class-admin-settings.php:967
2264
  msgid "Login Field Icons"
2265
  msgstr ""
2266
 
2267
- #: includes/admin/core/class-admin-settings.php:968
2268
  msgid "This controls the display of field icons in the login form"
2269
  msgstr ""
2270
 
2271
- #: includes/admin/core/class-admin-settings.php:980
2272
  msgid "Login Primary Button Text"
2273
  msgstr ""
2274
 
2275
- #: includes/admin/core/class-admin-settings.php:988
2276
  msgid "Login Secondary Button"
2277
  msgstr ""
2278
 
2279
- #: includes/admin/core/class-admin-settings.php:995
2280
  msgid "Login Secondary Button Text"
2281
  msgstr ""
2282
 
2283
- #: includes/admin/core/class-admin-settings.php:1004
2284
  msgid "Login Secondary Button URL"
2285
  msgstr ""
2286
 
2287
- #: includes/admin/core/class-admin-settings.php:1013
2288
  msgid "Login Forgot Password Link"
2289
  msgstr ""
2290
 
2291
- #: includes/admin/core/class-admin-settings.php:1015
2292
  msgid "Switch on/off the forgot password link in login form"
2293
  msgstr ""
2294
 
2295
- #: includes/admin/core/class-admin-settings.php:1020
2296
  msgid "Show \"Remember Me\""
2297
  msgstr ""
2298
 
2299
- #: includes/admin/core/class-admin-settings.php:1022
2300
  msgid ""
2301
  "Allow users to choose If they want to stay signed in even after closing the "
2302
  "browser. If you do not show this option, the default will be to not remember "
2303
  "login session."
2304
  msgstr ""
2305
 
2306
- #: includes/admin/core/class-admin-settings.php:1032
2307
  msgid "Licenses"
2308
  msgstr ""
2309
 
2310
- #: includes/admin/core/class-admin-settings.php:1035
2311
  msgid "Misc"
2312
  msgstr ""
2313
 
2314
- #: includes/admin/core/class-admin-settings.php:1040
2315
  msgid "Show an asterisk for required fields"
2316
  msgstr ""
2317
 
2318
- #: includes/admin/core/class-admin-settings.php:1045
2319
  msgid "User Profile Title"
2320
  msgstr ""
2321
 
2322
- #: includes/admin/core/class-admin-settings.php:1046
2323
  msgid "This is the title that is displayed on a specific user profile"
2324
  msgstr ""
2325
 
2326
- #: includes/admin/core/class-admin-settings.php:1052
2327
  msgid "User Profile Dynamic Meta Description"
2328
  msgstr ""
2329
 
2330
- #: includes/admin/core/class-admin-settings.php:1053
2331
  msgid ""
2332
  "This will be used in the meta description that is available for search-"
2333
  "engines."
2334
  msgstr ""
2335
 
2336
- #: includes/admin/core/class-admin-settings.php:1061
2337
  msgid "Disable Cache User Profile"
2338
  msgstr ""
2339
 
2340
- #: includes/admin/core/class-admin-settings.php:1062
2341
  msgid ""
2342
  "Check this box if you would like to disable Ultimate Member user's cache."
2343
  msgstr ""
2344
 
2345
- #: includes/admin/core/class-admin-settings.php:1067
2346
  msgid "Remove Data on Uninstall?"
2347
  msgstr ""
2348
 
2349
- #: includes/admin/core/class-admin-settings.php:1068
2350
  msgid ""
2351
  "Check this box if you would like Ultimate Member to completely remove all of "
2352
  "its data when the plugin/extensions are deleted."
2353
  msgstr ""
2354
 
2355
- #: includes/admin/core/class-admin-settings.php:1073
2356
  msgid "Install Info"
2357
  msgstr ""
2358
 
2359
- #: includes/admin/core/class-admin-settings.php:1187
2360
  msgid "Ultimate Member - Settings"
2361
  msgstr ""
2362
 
2363
- #: includes/admin/core/class-admin-settings.php:1326
2364
  msgid "Save Changes"
2365
  msgstr ""
2366
 
2367
- #: includes/admin/core/class-admin-settings.php:1769
2368
  msgid "Subject Line"
2369
  msgstr ""
2370
 
2371
- #: includes/admin/core/class-admin-settings.php:1771
2372
  msgid "This is the subject line of the e-mail"
2373
  msgstr ""
2374
 
2375
- #: includes/admin/core/class-admin-settings.php:1776
2376
  msgid "Message Body"
2377
  msgstr ""
2378
 
2379
- #: includes/admin/core/class-admin-settings.php:1778
2380
  msgid "This is the content of the e-mail"
2381
  msgstr ""
2382
 
2383
- #: includes/admin/core/class-admin-settings.php:1828
2384
- #: includes/admin/core/class-admin-settings.php:1926
2385
  #, php-format
2386
  msgid ""
2387
  "Your license key expired on %s. Please <a href=\"%s\" target=\"_blank"
2388
  "\">renew your license key</a>."
2389
  msgstr ""
2390
 
2391
- #: includes/admin/core/class-admin-settings.php:1841
2392
- #: includes/admin/core/class-admin-settings.php:1939
2393
  #, php-format
2394
  msgid ""
2395
  "Your license key has been disabled. Please <a href=\"%s\" target=\"_blank"
2396
  "\">contact support</a> for more information."
2397
  msgstr ""
2398
 
2399
- #: includes/admin/core/class-admin-settings.php:1853
2400
- #: includes/admin/core/class-admin-settings.php:1951
2401
  #, php-format
2402
  msgid ""
2403
  "Invalid license. Please <a href=\"%s\" target=\"_blank\">visit your account "
2404
  "page</a> and verify it."
2405
  msgstr ""
2406
 
2407
- #: includes/admin/core/class-admin-settings.php:1866
2408
- #: includes/admin/core/class-admin-settings.php:1964
2409
  #, php-format
2410
  msgid ""
2411
  "Your %s is not active for this URL. Please <a href=\"%s\" target=\"_blank"
2412
  "\">visit your account page</a> to manage your license key URLs."
2413
  msgstr ""
2414
 
2415
- #: includes/admin/core/class-admin-settings.php:1878
2416
- #: includes/admin/core/class-admin-settings.php:1976
2417
  #, php-format
2418
  msgid "This appears to be an invalid license key for %s."
2419
  msgstr ""
2420
 
2421
- #: includes/admin/core/class-admin-settings.php:1887
2422
- #: includes/admin/core/class-admin-settings.php:1985
2423
  #, php-format
2424
  msgid ""
2425
  "Your license key has reached its activation limit. <a href=\"%s\">View "
2426
  "possible upgrades</a> now."
2427
  msgstr ""
2428
 
2429
- #: includes/admin/core/class-admin-settings.php:1896
2430
- #: includes/admin/core/class-admin-settings.php:1994
2431
  msgid ""
2432
  "The key you entered belongs to a bundle, please use the product specific "
2433
  "license key."
2434
  msgstr ""
2435
 
2436
- #: includes/admin/core/class-admin-settings.php:1904
2437
- #: includes/admin/core/class-admin-settings.php:1912
2438
  msgid "unknown_error"
2439
  msgstr ""
2440
 
2441
- #: includes/admin/core/class-admin-settings.php:1905
2442
- #: includes/admin/core/class-admin-settings.php:1913
2443
  #, php-format
2444
  msgid ""
2445
  "There was an error with this license key: %s. Please <a href=\"%s\">contact "
2446
  "our support team</a>."
2447
  msgstr ""
2448
 
2449
- #: includes/admin/core/class-admin-settings.php:2009
2450
  msgid "License key never expires."
2451
  msgstr ""
2452
 
2453
- #: includes/admin/core/class-admin-settings.php:2016
2454
  #, php-format
2455
  msgid ""
2456
  "Your license key expires soon! It expires on %s. <a href=\"%s\" target="
2457
  "\"_blank\">Renew your license key</a>."
2458
  msgstr ""
2459
 
2460
- #: includes/admin/core/class-admin-settings.php:2026
2461
  #, php-format
2462
  msgid "Your license key expires on %s."
2463
  msgstr ""
2464
 
2465
- #: includes/admin/core/class-admin-settings.php:2044
2466
  #, php-format
2467
  msgid "To receive updates, please enter your valid %s license key."
2468
  msgstr ""
2469
 
2470
- #: includes/admin/core/class-admin-settings.php:2068
2471
  msgid "Clear License"
2472
  msgstr ""
2473
 
2474
- #: includes/admin/core/class-admin-settings.php:2070
2475
  msgid "Activate"
2476
  msgstr ""
2477
 
2478
- #: includes/admin/core/class-admin-settings.php:2072
2479
  msgid "Re-Activate"
2480
  msgstr ""
2481
 
2482
- #: includes/admin/core/class-admin-settings.php:2124
2483
  msgid ""
2484
  "To copy the Install info, click below then press Ctrl + C (PC) or Cmd + C "
2485
  "(Mac)."
@@ -2550,7 +2584,7 @@ msgid "UM Action"
2550
  msgstr ""
2551
 
2552
  #: includes/admin/core/class-admin-users.php:116
2553
- #: includes/core/class-fields.php:2306
2554
  msgid "Apply"
2555
  msgstr ""
2556
 
@@ -2593,7 +2627,7 @@ msgstr ""
2593
 
2594
  #: includes/admin/core/class-admin-users.php:305
2595
  #: includes/admin/templates/dashboard/users.php:11
2596
- #: includes/core/class-user.php:822
2597
  msgid "Approved"
2598
  msgstr ""
2599
 
@@ -2664,11 +2698,6 @@ msgstr ""
2664
  msgid "Are you sure you want to delete this role?"
2665
  msgstr ""
2666
 
2667
- #: includes/admin/core/list-tables/roles-list-table.php:338
2668
- #: includes/admin/core/list-tables/roles-list-table.php:406
2669
- msgid "Delete"
2670
- msgstr ""
2671
-
2672
  #: includes/admin/core/list-tables/roles-list-table.php:343
2673
  msgid "Are you sure you want to reset UM role meta?"
2674
  msgstr ""
@@ -2708,7 +2737,7 @@ msgstr ""
2708
  #: includes/admin/core/list-tables/roles-list-table.php:479
2709
  #: includes/admin/core/packages/2.0-beta1/user_roles.php:14
2710
  #: includes/admin/templates/role/role-edit.php:136
2711
- #: includes/core/class-common.php:56 includes/core/class-common.php:85
2712
  msgid "Add New"
2713
  msgstr ""
2714
 
@@ -2863,7 +2892,7 @@ msgid "You did not create any user roles yet"
2863
  msgstr ""
2864
 
2865
  #: includes/admin/core/packages/2.0-beta1/user_roles.php:18
2866
- #: includes/core/class-common.php:60 includes/core/class-common.php:89
2867
  msgid "Nothing found in Trash"
2868
  msgstr ""
2869
 
@@ -2928,12 +2957,12 @@ msgid "Get latest versions"
2928
  msgstr ""
2929
 
2930
  #: includes/admin/templates/dashboard/users.php:27
2931
- #: includes/core/class-user.php:830
2932
  msgid "Pending Review"
2933
  msgstr ""
2934
 
2935
  #: includes/admin/templates/dashboard/users.php:32
2936
- #: includes/core/class-user.php:826
2937
  msgid "Awaiting E-mail Confirmation"
2938
  msgstr ""
2939
 
@@ -3524,12 +3553,12 @@ msgstr ""
3524
  #: includes/admin/templates/modal/dynamic_new_group.php:15
3525
  #: includes/admin/templates/modal/fonticons.php:11
3526
  #: includes/admin/templates/role/publish.php:24
3527
- #: includes/core/class-fields.php:2307 includes/core/class-fields.php:2404
3528
- #: includes/core/um-actions-profile.php:556
3529
- #: includes/core/um-actions-profile.php:695
3530
- #: includes/core/um-actions-profile.php:728
3531
- #: includes/core/um-actions-profile.php:1073
3532
- #: includes/core/um-actions-profile.php:1080
3533
  msgid "Cancel"
3534
  msgstr ""
3535
 
@@ -3873,31 +3902,31 @@ msgstr ""
3873
  msgid "Check All"
3874
  msgstr ""
3875
 
3876
- #: includes/class-config.php:129 includes/class-config.php:738
3877
  msgid "User"
3878
  msgstr ""
3879
 
3880
  #: includes/class-config.php:130 includes/class-config.php:235
3881
- #: includes/class-config.php:241 includes/class-config.php:739
3882
  msgid "Login"
3883
  msgstr ""
3884
 
3885
  #: includes/class-config.php:131 includes/class-config.php:233
3886
- #: includes/class-config.php:245 includes/class-config.php:740
3887
  msgid "Register"
3888
  msgstr ""
3889
 
3890
- #: includes/class-config.php:132 includes/class-config.php:741
3891
  msgid "Members"
3892
  msgstr ""
3893
 
3894
- #: includes/class-config.php:133 includes/class-config.php:742
3895
- #: includes/core/um-actions-profile.php:1079
3896
  #: includes/core/um-actions-user.php:15
3897
  msgid "Logout"
3898
  msgstr ""
3899
 
3900
- #: includes/class-config.php:135 includes/class-config.php:744
3901
  msgid "Password Reset"
3902
  msgstr ""
3903
 
@@ -4060,35 +4089,27 @@ msgstr ""
4060
  msgid "Cheatin&#8217; huh?"
4061
  msgstr ""
4062
 
4063
- #: includes/core/class-account.php:91
4064
  msgid "Update Account"
4065
  msgstr ""
4066
 
4067
- #: includes/core/class-account.php:96
4068
  msgid "Change Password"
4069
  msgstr ""
4070
 
4071
- #: includes/core/class-account.php:97
4072
  msgid "Update Password"
4073
  msgstr ""
4074
 
4075
- #: includes/core/class-account.php:102
4076
- msgid "Privacy"
4077
- msgstr ""
4078
-
4079
- #: includes/core/class-account.php:103
4080
  msgid "Update Privacy"
4081
  msgstr ""
4082
 
4083
- #: includes/core/class-account.php:108
4084
- msgid "Notifications"
4085
- msgstr ""
4086
-
4087
- #: includes/core/class-account.php:109
4088
  msgid "Update Notifications"
4089
  msgstr ""
4090
 
4091
- #: includes/core/class-account.php:117 includes/core/class-account.php:118
4092
  #: includes/core/class-builtin.php:1136 includes/core/class-builtin.php:1139
4093
  msgid "Delete Account"
4094
  msgstr ""
@@ -4168,7 +4189,7 @@ msgstr ""
4168
  msgid "You must add a shortcode to the content area"
4169
  msgstr ""
4170
 
4171
- #: includes/core/class-builtin.php:663 includes/core/class-user.php:1544
4172
  msgid "Only me"
4173
  msgstr ""
4174
 
@@ -4177,11 +4198,6 @@ msgstr ""
4177
  msgid "Username or E-mail"
4178
  msgstr ""
4179
 
4180
- #: includes/core/class-builtin.php:693 includes/core/class-builtin.php:696
4181
- #: includes/core/class-builtin.php:1150 includes/core/class-builtin.php:1153
4182
- msgid "Password"
4183
- msgstr ""
4184
-
4185
  #: includes/core/class-builtin.php:737 includes/core/class-builtin.php:740
4186
  #: includes/core/class-builtin.php:1325
4187
  msgid "Website URL"
@@ -4322,7 +4338,7 @@ msgid "Cover Photo"
4322
  msgstr ""
4323
 
4324
  #: includes/core/class-builtin.php:1080
4325
- #: includes/core/um-actions-profile.php:518
4326
  msgid "Change your cover photo"
4327
  msgstr ""
4328
 
@@ -6164,23 +6180,23 @@ msgstr ""
6164
  msgid "Search Forms"
6165
  msgstr ""
6166
 
6167
- #: includes/core/class-common.php:84
6168
  msgid "Member Directory"
6169
  msgstr ""
6170
 
6171
- #: includes/core/class-common.php:86
6172
  msgid "Add New Member Directory"
6173
  msgstr ""
6174
 
6175
- #: includes/core/class-common.php:87
6176
  msgid "Edit Member Directory"
6177
  msgstr ""
6178
 
6179
- #: includes/core/class-common.php:88
6180
  msgid "You did not create any member directories yet"
6181
  msgstr ""
6182
 
6183
- #: includes/core/class-common.php:90
6184
  msgid "Search Member Directories"
6185
  msgstr ""
6186
 
@@ -6241,89 +6257,89 @@ msgstr ""
6241
  msgid "Add translation to %s"
6242
  msgstr ""
6243
 
6244
- #: includes/core/class-fields.php:1171 templates/message.php:5
6245
  #, php-format
6246
  msgid "%s"
6247
  msgstr ""
6248
 
6249
- #: includes/core/class-fields.php:1190
6250
  msgid "Custom Field"
6251
  msgstr ""
6252
 
6253
- #: includes/core/class-fields.php:1487
6254
  msgid "Please upload a valid image!"
6255
  msgstr ""
6256
 
6257
- #: includes/core/class-fields.php:1494 includes/core/class-fields.php:1515
6258
  msgid "Upload"
6259
  msgstr ""
6260
 
6261
- #: includes/core/class-fields.php:1495
6262
  msgid "Sorry this is not a valid image."
6263
  msgstr ""
6264
 
6265
- #: includes/core/class-fields.php:1496
6266
  msgid "This image is too large!"
6267
  msgstr ""
6268
 
6269
- #: includes/core/class-fields.php:1497
6270
  msgid "This image is too small!"
6271
  msgstr ""
6272
 
6273
- #: includes/core/class-fields.php:1498
6274
  msgid "You can only upload one image"
6275
  msgstr ""
6276
 
6277
- #: includes/core/class-fields.php:1965
6278
  msgid "Current Password"
6279
  msgstr ""
6280
 
6281
- #: includes/core/class-fields.php:1994
6282
  msgid "New Password"
6283
  msgstr ""
6284
 
6285
- #: includes/core/class-fields.php:2026
6286
  #, php-format
6287
  msgid "Confirm %s"
6288
  msgstr ""
6289
 
6290
- #: includes/core/class-fields.php:2261
6291
  msgid "Upload Photo"
6292
  msgstr ""
6293
 
6294
- #: includes/core/class-fields.php:2282 includes/core/class-fields.php:2306
6295
- #: includes/core/um-actions-profile.php:726
6296
  msgid "Change photo"
6297
  msgstr ""
6298
 
6299
- #: includes/core/class-fields.php:2306 includes/core/class-fields.php:2403
6300
  msgid "Processing..."
6301
  msgstr ""
6302
 
6303
- #: includes/core/class-fields.php:2328
6304
  msgid "Upload File"
6305
  msgstr ""
6306
 
6307
- #: includes/core/class-fields.php:2370 includes/core/um-filters-fields.php:243
6308
  msgid "This file has been removed."
6309
  msgstr ""
6310
 
6311
- #: includes/core/class-fields.php:2373 includes/core/class-fields.php:2403
6312
  msgid "Change file"
6313
  msgstr ""
6314
 
6315
- #: includes/core/class-fields.php:2403
6316
  msgid "Save"
6317
  msgstr ""
6318
 
6319
- #: includes/core/class-fields.php:3826
6320
  #, php-format
6321
  msgid ""
6322
  "Your profile is looking a little empty. Why not <a href=\"%s\">add</a> some "
6323
  "information!"
6324
  msgstr ""
6325
 
6326
- #: includes/core/class-fields.php:3828
6327
  msgid "This user has not added any information to their profile yet."
6328
  msgstr ""
6329
 
@@ -6364,44 +6380,44 @@ msgstr ""
6364
  msgid "You can not edit this user"
6365
  msgstr ""
6366
 
6367
- #: includes/core/class-password.php:453
6368
  msgid "Please provide your username or email"
6369
  msgstr ""
6370
 
6371
- #: includes/core/class-password.php:457
6372
  msgid "We can't find an account registered with that address or username"
6373
  msgstr ""
6374
 
6375
- #: includes/core/class-password.php:476
6376
  msgid ""
6377
  "You have reached the limit for requesting password change for this user "
6378
  "already. Contact support if you cannot open the email"
6379
  msgstr ""
6380
 
6381
- #: includes/core/class-password.php:532
6382
  msgid "You must enter a new password"
6383
  msgstr ""
6384
 
6385
- #: includes/core/class-password.php:538 includes/core/um-actions-account.php:59
6386
  msgid "Your password must contain at least 8 characters"
6387
  msgstr ""
6388
 
6389
- #: includes/core/class-password.php:542 includes/core/um-actions-account.php:63
6390
  msgid "Your password must contain less than 30 characters"
6391
  msgstr ""
6392
 
6393
- #: includes/core/class-password.php:546 includes/core/um-actions-account.php:67
6394
  #: includes/core/um-actions-form.php:476
6395
  msgid ""
6396
  "Your password must contain at least one lowercase letter, one capital letter "
6397
  "and one number"
6398
  msgstr ""
6399
 
6400
- #: includes/core/class-password.php:552
6401
  msgid "You must confirm your new password"
6402
  msgstr ""
6403
 
6404
- #: includes/core/class-password.php:556 includes/core/um-actions-form.php:485
6405
  msgid "Your passwords do not match"
6406
  msgstr ""
6407
 
@@ -6517,45 +6533,45 @@ msgstr ""
6517
  msgid "Default Template"
6518
  msgstr ""
6519
 
6520
- #: includes/core/class-uploader.php:662
6521
  msgid "Your image is invalid!"
6522
  msgstr ""
6523
 
6524
- #: includes/core/class-uploader.php:704
6525
  msgid "This media type is not recognized."
6526
  msgstr ""
6527
 
6528
- #: includes/core/class-uploader.php:752
6529
  msgid "Your image is invalid or too large!"
6530
  msgstr ""
6531
 
6532
- #: includes/core/class-uploader.php:758 includes/core/class-uploader.php:760
6533
  #, php-format
6534
  msgid "Your photo is too small. It must be at least %spx wide."
6535
  msgstr ""
6536
 
6537
- #: includes/core/class-uploader.php:813
6538
  msgid "This file type is not recognized."
6539
  msgstr ""
6540
 
6541
- #: includes/core/class-uploader.php:1087
6542
  #, php-format
6543
  msgid "Maximum file size allowed: %s"
6544
  msgstr ""
6545
 
6546
- #: includes/core/class-user.php:616
6547
  msgid "Ultimate Member Role"
6548
  msgstr ""
6549
 
6550
- #: includes/core/class-user.php:619
6551
  msgid "&mdash; No role for Ultimate Member &mdash;"
6552
  msgstr ""
6553
 
6554
- #: includes/core/class-user.php:834
6555
  msgid "Membership Rejected"
6556
  msgstr ""
6557
 
6558
- #: includes/core/class-user.php:838
6559
  msgid "Membership Inactive"
6560
  msgstr ""
6561
 
@@ -6564,11 +6580,13 @@ msgid "Are you hacking? Please try again!"
6564
  msgstr ""
6565
 
6566
  #: includes/core/um-actions-account.php:27
 
6567
  msgid "You must enter your password"
6568
  msgstr ""
6569
 
6570
  #: includes/core/um-actions-account.php:30
6571
  #: includes/core/um-actions-account.php:47
 
6572
  msgid "This is not your password"
6573
  msgstr ""
6574
 
@@ -6588,19 +6606,19 @@ msgstr ""
6588
  msgid "You must provide your last name"
6589
  msgstr ""
6590
 
6591
- #: includes/core/um-actions-account.php:99
6592
  msgid "You must provide your e-mail"
6593
  msgstr ""
6594
 
6595
- #: includes/core/um-actions-account.php:102
6596
  msgid "Please provide a valid e-mail"
6597
  msgstr ""
6598
 
6599
- #: includes/core/um-actions-account.php:105
6600
  msgid "Email already linked to another account"
6601
  msgstr ""
6602
 
6603
- #: includes/core/um-actions-account.php:401
6604
  msgid "Email me when"
6605
  msgstr ""
6606
 
@@ -6877,42 +6895,42 @@ msgstr ""
6877
  msgid "You are not allowed to edit this user."
6878
  msgstr ""
6879
 
6880
- #: includes/core/um-actions-profile.php:242
6881
  #, php-format
6882
  msgid "Your choosed %s"
6883
  msgstr ""
6884
 
6885
- #: includes/core/um-actions-profile.php:554
6886
  msgid "Change cover photo"
6887
  msgstr ""
6888
 
6889
- #: includes/core/um-actions-profile.php:597
6890
  msgid "Upload a cover photo"
6891
  msgstr ""
6892
 
6893
- #: includes/core/um-actions-profile.php:694
6894
  msgid "Upload photo"
6895
  msgstr ""
6896
 
6897
- #: includes/core/um-actions-profile.php:727
6898
  msgid "Remove photo"
6899
  msgstr ""
6900
 
6901
- #: includes/core/um-actions-profile.php:891
6902
  msgid "Tell us a bit about yourself..."
6903
  msgstr ""
6904
 
6905
- #: includes/core/um-actions-profile.php:907
6906
  #, php-format
6907
  msgid "This user account status is %s"
6908
  msgstr ""
6909
 
6910
- #: includes/core/um-actions-profile.php:1046
6911
- #: includes/core/um-actions-profile.php:1077
6912
  msgid "Edit Profile"
6913
  msgstr ""
6914
 
6915
- #: includes/core/um-actions-profile.php:1078
6916
  msgid "My Account"
6917
  msgstr ""
6918
 
@@ -6978,7 +6996,7 @@ msgstr ""
6978
  msgid "Title:"
6979
  msgstr ""
6980
 
6981
- #: templates/members-grid.php:65
6982
  msgid "Edit profile"
6983
  msgstr ""
6984
 
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Ultimate Member\n"
4
+ "POT-Creation-Date: 2019-03-27 19:18+0200\n"
5
+ "PO-Revision-Date: 2019-03-27 19:18+0200\n"
6
  "Last-Translator: \n"
7
  "Language-Team: \n"
8
  "Language: en_US\n"
35
  msgstr ""
36
 
37
  #: includes/admin/class-admin.php:308
38
+ #: includes/admin/core/class-admin-settings.php:1162
39
  msgid "Settings"
40
  msgstr ""
41
 
103
  #: includes/admin/core/class-admin-builder.php:767
104
  #: includes/admin/core/class-admin-dragdrop.php:32
105
  #: includes/admin/core/class-admin-menu.php:104
106
+ #: includes/core/class-fields.php:4100
107
  msgid "Please login as administrator"
108
  msgstr ""
109
 
158
 
159
  #: includes/admin/core/class-admin-builder.php:1143
160
  #: includes/core/class-form.php:155 includes/core/class-form.php:328
161
+ #: includes/core/class-password.php:532
162
  msgid "This is not possible for security reasons."
163
  msgstr ""
164
 
226
  #: includes/admin/templates/form/register_gdpr.php:23
227
  #: includes/core/class-builtin.php:1130 includes/core/class-builtin.php:1144
228
  #: includes/core/class-builtin.php:1145
229
+ #: includes/core/um-actions-account.php:271
230
  msgid "No"
231
  msgstr ""
232
 
253
  msgid "Yes"
254
  msgstr ""
255
 
256
+ #: includes/admin/core/class-admin-enqueue.php:168
257
  msgid "e.g. Member Directory"
258
  msgstr ""
259
 
260
+ #: includes/admin/core/class-admin-enqueue.php:170
261
  msgid "e.g. New Registration Form"
262
  msgstr ""
263
 
264
+ #: includes/admin/core/class-admin-enqueue.php:215
265
+ #: includes/admin/core/class-admin-enqueue.php:246
266
+ #: includes/admin/core/class-admin-forms.php:832
267
+ #: includes/admin/core/class-admin-forms.php:846
268
+ #: includes/admin/core/class-admin-forms.php:951
269
+ #: includes/admin/core/class-admin-forms.php:960
270
  #: includes/admin/core/class-admin-notices.php:390
271
+ #: includes/core/um-actions-profile.php:556
272
  msgid "Remove"
273
  msgstr ""
274
 
275
+ #: includes/admin/core/class-admin-enqueue.php:216
276
+ #: includes/admin/core/class-admin-enqueue.php:247
277
+ #: includes/admin/core/class-admin-forms.php:1028
278
  msgid "Select"
279
  msgstr ""
280
 
281
+ #: includes/admin/core/class-admin-enqueue.php:244
282
  msgid "Are sure, maybe some settings not saved"
283
  msgstr ""
284
 
285
+ #: includes/admin/core/class-admin-enqueue.php:450
286
+ #: includes/core/class-builtin.php:693 includes/core/class-builtin.php:696
287
+ #: includes/core/class-builtin.php:1150 includes/core/class-builtin.php:1153
288
+ msgid "Password"
289
+ msgstr ""
290
+
291
+ #: includes/admin/core/class-admin-enqueue.php:454
292
+ #: includes/core/class-account.php:104
293
+ msgid "Privacy"
294
+ msgstr ""
295
+
296
+ #: includes/admin/core/class-admin-enqueue.php:458
297
+ #: includes/core/class-account.php:110
298
+ msgid "Notifications"
299
+ msgstr ""
300
+
301
+ #: includes/admin/core/class-admin-enqueue.php:462
302
+ #: includes/admin/core/list-tables/roles-list-table.php:338
303
+ #: includes/admin/core/list-tables/roles-list-table.php:406
304
+ msgid "Delete"
305
+ msgstr ""
306
+
307
+ #: includes/admin/core/class-admin-enqueue.php:507
308
+ msgid "Ultimate Member Blocks"
309
+ msgstr ""
310
+
311
  #: includes/admin/core/class-admin-forms.php:314
312
  #: includes/core/um-filters-fields.php:15
313
  msgid "Required"
314
  msgstr ""
315
 
316
+ #: includes/admin/core/class-admin-forms.php:470
317
  msgid "Choose Icon"
318
  msgstr ""
319
 
320
+ #: includes/admin/core/class-admin-forms.php:476
321
  msgid "No Icon"
322
  msgstr ""
323
 
324
+ #: includes/admin/core/class-admin-forms.php:1005
325
  msgid "Select media"
326
  msgstr ""
327
 
328
+ #: includes/admin/core/class-admin-forms.php:1029
329
  msgid "Clear"
330
  msgstr ""
331
 
434
  #. Plugin Name of the plugin/theme
435
  #. Author of the plugin/theme
436
  #: includes/admin/core/class-admin-menu.php:145
437
+ #: includes/core/class-user.php:555
438
  msgid "Ultimate Member"
439
  msgstr ""
440
 
454
  msgstr ""
455
 
456
  #: includes/admin/core/class-admin-menu.php:162
457
+ #: includes/core/class-common.php:84
458
  msgid "Member Directories"
459
  msgstr ""
460
 
461
  #: includes/admin/core/class-admin-menu.php:204
462
+ #: includes/admin/core/class-admin-settings.php:1035
463
  msgid "Extensions"
464
  msgstr ""
465
 
1210
  msgstr ""
1211
 
1212
  #: includes/admin/core/class-admin-notices.php:407
1213
+ msgid "You have the latest updates."
1214
  msgstr ""
1215
 
1216
  #: includes/admin/core/class-admin-notices.php:411
1687
  msgstr ""
1688
 
1689
  #: includes/admin/core/class-admin-settings.php:436
1690
+ #: includes/class-config.php:134 includes/class-config.php:744
1691
+ #: includes/core/class-account.php:92
1692
  msgid "Account"
1693
  msgstr ""
1694
 
1766
  msgstr ""
1767
 
1768
  #: includes/admin/core/class-admin-settings.php:500
1769
+ msgid "Password is required?"
1770
  msgstr ""
1771
 
1772
  #: includes/admin/core/class-admin-settings.php:501
1773
+ msgid "Password is required to save account data."
1774
+ msgstr ""
1775
+
1776
+ #: includes/admin/core/class-admin-settings.php:506
1777
+ msgid "Allow users to hide their profiles from directory"
1778
+ msgstr ""
1779
+
1780
+ #: includes/admin/core/class-admin-settings.php:507
1781
  msgid ""
1782
  "Whether to allow users changing their profile visibility from member "
1783
  "directory in account page."
1784
  msgstr ""
1785
 
1786
+ #: includes/admin/core/class-admin-settings.php:512
1787
  msgid "Require a strong password?"
1788
  msgstr ""
1789
 
1790
+ #: includes/admin/core/class-admin-settings.php:513
1791
  msgid ""
1792
  "Enable or disable a strong password rules on account page / change password "
1793
  "tab"
1794
  msgstr ""
1795
 
1796
+ #: includes/admin/core/class-admin-settings.php:518
1797
  msgid "Uploads"
1798
  msgstr ""
1799
 
1800
+ #: includes/admin/core/class-admin-settings.php:524
1801
  msgid "Profile Photo Maximum File Size (bytes)"
1802
  msgstr ""
1803
 
1804
+ #: includes/admin/core/class-admin-settings.php:525
1805
  msgid "Sets a maximum size for the uploaded photo"
1806
  msgstr ""
1807
 
1808
+ #: includes/admin/core/class-admin-settings.php:532
1809
  msgid "Cover Photo Maximum File Size (bytes)"
1810
  msgstr ""
1811
 
1812
+ #: includes/admin/core/class-admin-settings.php:533
1813
  msgid "Sets a maximum size for the uploaded cover"
1814
  msgstr ""
1815
 
1816
+ #: includes/admin/core/class-admin-settings.php:539
1817
  msgid "Profile Photo Thumbnail Sizes (px)"
1818
  msgstr ""
1819
 
1820
+ #: includes/admin/core/class-admin-settings.php:540
1821
  msgid ""
1822
  "Here you can define which thumbnail sizes will be created for each profile "
1823
  "photo upload."
1824
  msgstr ""
1825
 
1826
+ #: includes/admin/core/class-admin-settings.php:542
1827
+ #: includes/admin/core/class-admin-settings.php:552
1828
  msgid "Add New Size"
1829
  msgstr ""
1830
 
1831
+ #: includes/admin/core/class-admin-settings.php:549
1832
  msgid "Cover Photo Thumbnail Sizes (px)"
1833
  msgstr ""
1834
 
1835
+ #: includes/admin/core/class-admin-settings.php:550
1836
  msgid ""
1837
  "Here you can define which thumbnail sizes will be created for each cover "
1838
  "photo upload."
1839
  msgstr ""
1840
 
1841
+ #: includes/admin/core/class-admin-settings.php:560
1842
  msgid "Image Quality"
1843
  msgstr ""
1844
 
1845
+ #: includes/admin/core/class-admin-settings.php:561
1846
  msgid ""
1847
  "Quality is used to determine quality of image uploads, and ranges from 0 "
1848
  "(worst quality, smaller file) to 100 (best quality, biggest file). The "
1849
  "default range is 60."
1850
  msgstr ""
1851
 
1852
+ #: includes/admin/core/class-admin-settings.php:568
1853
  msgid "Image Upload Maximum Width (px)"
1854
  msgstr ""
1855
 
1856
+ #: includes/admin/core/class-admin-settings.php:569
1857
  msgid ""
1858
  "Any image upload above this width will be resized to this limit "
1859
  "automatically."
1860
  msgstr ""
1861
 
1862
+ #: includes/admin/core/class-admin-settings.php:576
1863
  msgid "Cover Photo Minimum Width (px)"
1864
  msgstr ""
1865
 
1866
+ #: includes/admin/core/class-admin-settings.php:577
1867
  msgid "This will be the minimum width for cover photo uploads"
1868
  msgstr ""
1869
 
1870
+ #: includes/admin/core/class-admin-settings.php:584
1871
  msgid "Access"
1872
  msgstr ""
1873
 
1874
+ #: includes/admin/core/class-admin-settings.php:587
1875
  msgid "Restriction Content"
1876
  msgstr ""
1877
 
1878
+ #: includes/admin/core/class-admin-settings.php:591
1879
  msgid "Other"
1880
  msgstr ""
1881
 
1882
+ #: includes/admin/core/class-admin-settings.php:596
1883
  msgid "Enable the Reset Password Limit?"
1884
  msgstr ""
1885
 
1886
+ #: includes/admin/core/class-admin-settings.php:601
1887
  msgid "Reset Password Limit"
1888
  msgstr ""
1889
 
1890
+ #: includes/admin/core/class-admin-settings.php:602
1891
  msgid ""
1892
  "Set the maximum reset password limit. If reached the maximum limit, user "
1893
  "will be locked from using this."
1894
  msgstr ""
1895
 
1896
+ #: includes/admin/core/class-admin-settings.php:610
1897
  msgid "Blocked Email Addresses"
1898
  msgstr ""
1899
 
1900
+ #: includes/admin/core/class-admin-settings.php:611
1901
  msgid ""
1902
  "This will block the specified e-mail addresses from being able to sign up or "
1903
  "sign in to your site. To block an entire domain, use something like *@domain."
1904
  "com"
1905
  msgstr ""
1906
 
1907
+ #: includes/admin/core/class-admin-settings.php:616
1908
  msgid "Blacklist Words"
1909
  msgstr ""
1910
 
1911
+ #: includes/admin/core/class-admin-settings.php:617
1912
  msgid ""
1913
  "This option lets you specify blacklist of words to prevent anyone from "
1914
  "signing up with such a word as their username"
1915
  msgstr ""
1916
 
1917
+ #: includes/admin/core/class-admin-settings.php:624
1918
  #: includes/admin/core/list-tables/emails-list-table.php:300
1919
  msgid "Email"
1920
  msgstr ""
1921
 
1922
+ #: includes/admin/core/class-admin-settings.php:629
1923
  msgid "Admin E-mail Address"
1924
  msgstr ""
1925
 
1926
+ #: includes/admin/core/class-admin-settings.php:630
1927
+ #: includes/admin/core/class-admin-settings.php:642
1928
  msgid "e.g. admin@companyname.com"
1929
  msgstr ""
1930
 
1931
+ #: includes/admin/core/class-admin-settings.php:635
1932
  msgid "Mail appears from"
1933
  msgstr ""
1934
 
1935
+ #: includes/admin/core/class-admin-settings.php:636
1936
  msgid "e.g. Site Name"
1937
  msgstr ""
1938
 
1939
+ #: includes/admin/core/class-admin-settings.php:641
1940
  msgid "Mail appears from address"
1941
  msgstr ""
1942
 
1943
+ #: includes/admin/core/class-admin-settings.php:647
1944
  msgid "Use HTML for E-mails?"
1945
  msgstr ""
1946
 
1947
+ #: includes/admin/core/class-admin-settings.php:648
1948
  msgid ""
1949
  "If you plan use e-mails with HTML, please make sure that this option is "
1950
  "enabled. Otherwise, HTML will be displayed as plain text."
1951
  msgstr ""
1952
 
1953
+ #: includes/admin/core/class-admin-settings.php:653
1954
  msgid "Appearance"
1955
  msgstr ""
1956
 
1957
+ #: includes/admin/core/class-admin-settings.php:656
1958
  msgid "Profile"
1959
  msgstr ""
1960
 
1961
+ #: includes/admin/core/class-admin-settings.php:661
1962
  msgid "Profile Default Template"
1963
  msgstr ""
1964
 
1965
+ #: includes/admin/core/class-admin-settings.php:662
1966
  msgid "This will be the default template to output profile"
1967
  msgstr ""
1968
 
1969
+ #: includes/admin/core/class-admin-settings.php:670
1970
  msgid "Profile Maximum Width"
1971
  msgstr ""
1972
 
1973
+ #: includes/admin/core/class-admin-settings.php:679
1974
  msgid "Profile Area Maximum Width"
1975
  msgstr ""
1976
 
1977
+ #: includes/admin/core/class-admin-settings.php:681
1978
  #: includes/admin/templates/form/profile_customize.php:56
1979
  msgid ""
1980
  "The maximum width of the profile area inside profile (below profile header)"
1981
  msgstr ""
1982
 
1983
+ #: includes/admin/core/class-admin-settings.php:687
1984
  msgid "Profile Field Icons"
1985
  msgstr ""
1986
 
1987
+ #: includes/admin/core/class-admin-settings.php:688
1988
  msgid "This is applicable for edit mode only"
1989
  msgstr ""
1990
 
1991
+ #: includes/admin/core/class-admin-settings.php:691
1992
+ #: includes/admin/core/class-admin-settings.php:887
1993
+ #: includes/admin/core/class-admin-settings.php:977
1994
  #: includes/admin/templates/form/login_customize.php:40
1995
  #: includes/admin/templates/form/profile_customize.php:67
1996
  #: includes/admin/templates/form/register_customize.php:55
1997
  msgid "Show inside text field"
1998
  msgstr ""
1999
 
2000
+ #: includes/admin/core/class-admin-settings.php:692
2001
+ #: includes/admin/core/class-admin-settings.php:888
2002
+ #: includes/admin/core/class-admin-settings.php:978
2003
  #: includes/admin/templates/form/login_customize.php:41
2004
  #: includes/admin/templates/form/profile_customize.php:68
2005
  #: includes/admin/templates/form/register_customize.php:56
2006
  msgid "Show with label"
2007
  msgstr ""
2008
 
2009
+ #: includes/admin/core/class-admin-settings.php:693
2010
+ #: includes/admin/core/class-admin-settings.php:889
2011
+ #: includes/admin/core/class-admin-settings.php:979
2012
  #: includes/admin/templates/form/login_customize.php:42
2013
  #: includes/admin/templates/form/profile_customize.php:69
2014
  #: includes/admin/templates/form/register_customize.php:57
2015
  msgid "Turn off"
2016
  msgstr ""
2017
 
2018
+ #: includes/admin/core/class-admin-settings.php:700
2019
  msgid "Profile Primary Button Text"
2020
  msgstr ""
2021
 
2022
+ #: includes/admin/core/class-admin-settings.php:702
2023
  msgid "The text that is used for updating profile button"
2024
  msgstr ""
2025
 
2026
+ #: includes/admin/core/class-admin-settings.php:708
2027
  msgid "Profile Secondary Button"
2028
  msgstr ""
2029
 
2030
+ #: includes/admin/core/class-admin-settings.php:710
2031
+ #: includes/admin/core/class-admin-settings.php:906
2032
+ #: includes/admin/core/class-admin-settings.php:996
2033
  msgid "Switch on/off the secondary button display in the form"
2034
  msgstr ""
2035
 
2036
+ #: includes/admin/core/class-admin-settings.php:715
2037
  msgid "Profile Secondary Button Text"
2038
  msgstr ""
2039
 
2040
+ #: includes/admin/core/class-admin-settings.php:717
2041
  msgid "The text that is used for cancelling update profile button"
2042
  msgstr ""
2043
 
2044
+ #: includes/admin/core/class-admin-settings.php:724
2045
  msgid "Default Profile Photo"
2046
  msgstr ""
2047
 
2048
+ #: includes/admin/core/class-admin-settings.php:725
2049
  msgid ""
2050
  "You can change the default profile picture globally here. Please make sure "
2051
  "that the photo is 300x300px."
2052
  msgstr ""
2053
 
2054
+ #: includes/admin/core/class-admin-settings.php:726
2055
  msgid "Select Default Profile Photo"
2056
  msgstr ""
2057
 
2058
+ #: includes/admin/core/class-admin-settings.php:736
2059
  msgid "Default Cover Photo"
2060
  msgstr ""
2061
 
2062
+ #: includes/admin/core/class-admin-settings.php:737
2063
  msgid ""
2064
  "You can change the default cover photo globally here. Please make sure that "
2065
  "the default cover is large enough and respects the ratio you are using for "
2066
  "cover photos."
2067
  msgstr ""
2068
 
2069
+ #: includes/admin/core/class-admin-settings.php:738
2070
  msgid "Select Default Cover Photo"
2071
  msgstr ""
2072
 
2073
+ #: includes/admin/core/class-admin-settings.php:743
2074
  #: includes/admin/templates/form/profile_customize.php:128
2075
  msgid "Profile Photo Size"
2076
  msgstr ""
2077
 
2078
+ #: includes/admin/core/class-admin-settings.php:745
2079
  msgid ""
2080
  "The global default of profile photo size. This can be overridden by "
2081
  "individual form settings"
2082
  msgstr ""
2083
 
2084
+ #: includes/admin/core/class-admin-settings.php:751
2085
  msgid "Profile Cover Photos"
2086
  msgstr ""
2087
 
2088
+ #: includes/admin/core/class-admin-settings.php:753
2089
  msgid "Switch on/off the profile cover photos"
2090
  msgstr ""
2091
 
2092
+ #: includes/admin/core/class-admin-settings.php:758
2093
  msgid "Profile Cover Ratio"
2094
  msgstr ""
2095
 
2096
+ #: includes/admin/core/class-admin-settings.php:759
2097
  msgid "Choose global ratio for cover photos of profiles"
2098
  msgstr ""
2099
 
2100
+ #: includes/admin/core/class-admin-settings.php:773
2101
  msgid "Profile Header Meta Text Icon"
2102
  msgstr ""
2103
 
2104
+ #: includes/admin/core/class-admin-settings.php:775
2105
  msgid "Display field icons for related user meta fields in header or not"
2106
  msgstr ""
2107
 
2108
+ #: includes/admin/core/class-admin-settings.php:780
2109
  msgid "Show display name in profile header"
2110
  msgstr ""
2111
 
2112
+ #: includes/admin/core/class-admin-settings.php:782
2113
  msgid "Switch on/off the user name on profile header"
2114
  msgstr ""
2115
 
2116
+ #: includes/admin/core/class-admin-settings.php:787
2117
  msgid "Show social links in profile header"
2118
  msgstr ""
2119
 
2120
+ #: includes/admin/core/class-admin-settings.php:789
2121
  msgid "Switch on/off the social links on profile header"
2122
  msgstr ""
2123
 
2124
+ #: includes/admin/core/class-admin-settings.php:794
2125
  msgid "Show user description in header"
2126
  msgstr ""
2127
 
2128
+ #: includes/admin/core/class-admin-settings.php:796
2129
  msgid "Switch on/off the user description on profile header"
2130
  msgstr ""
2131
 
2132
+ #: includes/admin/core/class-admin-settings.php:801
2133
  msgid "Enable html support for user description"
2134
  msgstr ""
2135
 
2136
+ #: includes/admin/core/class-admin-settings.php:803
2137
  msgid ""
2138
  "Switch on/off to enable/disable support for html tags on user description."
2139
  msgstr ""
2140
 
2141
+ #: includes/admin/core/class-admin-settings.php:808
2142
  msgid "User description maximum chars"
2143
  msgstr ""
2144
 
2145
+ #: includes/admin/core/class-admin-settings.php:810
2146
  msgid ""
2147
  "Maximum number of characters to allow in user description field in header."
2148
  msgstr ""
2149
 
2150
+ #: includes/admin/core/class-admin-settings.php:817
2151
  msgid "Profile Header Menu Position"
2152
  msgstr ""
2153
 
2154
+ #: includes/admin/core/class-admin-settings.php:819
2155
  msgid ""
2156
  "For incompatible themes, please make the menu open from left instead of "
2157
  "bottom by default."
2158
  msgstr ""
2159
 
2160
+ #: includes/admin/core/class-admin-settings.php:829
2161
  msgid "Show a custom message if profile is empty"
2162
  msgstr ""
2163
 
2164
+ #: includes/admin/core/class-admin-settings.php:831
2165
  msgid "Switch on/off the custom message that appears when the profile is empty"
2166
  msgstr ""
2167
 
2168
+ #: includes/admin/core/class-admin-settings.php:836
2169
  msgid "Show the emoticon"
2170
  msgstr ""
2171
 
2172
+ #: includes/admin/core/class-admin-settings.php:838
2173
  msgid "Switch on/off the emoticon (sad face) that appears above the message"
2174
  msgstr ""
2175
 
2176
+ #: includes/admin/core/class-admin-settings.php:844
2177
  msgid "Profile Menu"
2178
  msgstr ""
2179
 
2180
+ #: includes/admin/core/class-admin-settings.php:848
2181
  #: includes/admin/templates/form/mode.php:9
2182
  msgid "Registration Form"
2183
  msgstr ""
2184
 
2185
+ #: includes/admin/core/class-admin-settings.php:853
2186
  msgid "Registration Default Template"
2187
  msgstr ""
2188
 
2189
+ #: includes/admin/core/class-admin-settings.php:854
2190
  msgid "This will be the default template to output registration"
2191
  msgstr ""
2192
 
2193
+ #: includes/admin/core/class-admin-settings.php:862
2194
  msgid "Registration Maximum Width"
2195
  msgstr ""
2196
 
2197
+ #: includes/admin/core/class-admin-settings.php:864
2198
+ #: includes/admin/core/class-admin-settings.php:954
2199
  msgid "The maximum width this shortcode can take from the page width"
2200
  msgstr ""
2201
 
2202
+ #: includes/admin/core/class-admin-settings.php:870
2203
  msgid "Registration Shortcode Alignment"
2204
  msgstr ""
2205
 
2206
+ #: includes/admin/core/class-admin-settings.php:871
2207
+ #: includes/admin/core/class-admin-settings.php:961
2208
  #: includes/admin/templates/form/profile_customize.php:115
2209
  msgid "The shortcode is centered by default unless you specify otherwise here"
2210
  msgstr ""
2211
 
2212
+ #: includes/admin/core/class-admin-settings.php:874
2213
+ #: includes/admin/core/class-admin-settings.php:964
2214
  msgid "Centered"
2215
  msgstr ""
2216
 
2217
+ #: includes/admin/core/class-admin-settings.php:875
2218
+ #: includes/admin/core/class-admin-settings.php:965
2219
  msgid "Left aligned"
2220
  msgstr ""
2221
 
2222
+ #: includes/admin/core/class-admin-settings.php:876
2223
+ #: includes/admin/core/class-admin-settings.php:966
2224
  msgid "Right aligned"
2225
  msgstr ""
2226
 
2227
+ #: includes/admin/core/class-admin-settings.php:883
2228
  msgid "Registration Field Icons"
2229
  msgstr ""
2230
 
2231
+ #: includes/admin/core/class-admin-settings.php:884
2232
  msgid "This controls the display of field icons in the registration form"
2233
  msgstr ""
2234
 
2235
+ #: includes/admin/core/class-admin-settings.php:896
2236
  msgid "Registration Primary Button Text"
2237
  msgstr ""
2238
 
2239
+ #: includes/admin/core/class-admin-settings.php:898
2240
+ #: includes/admin/core/class-admin-settings.php:988
2241
  msgid "The text that is used for primary button text"
2242
  msgstr ""
2243
 
2244
+ #: includes/admin/core/class-admin-settings.php:904
2245
  msgid "Registration Secondary Button"
2246
  msgstr ""
2247
 
2248
+ #: includes/admin/core/class-admin-settings.php:911
2249
  msgid "Registration Secondary Button Text"
2250
  msgstr ""
2251
 
2252
+ #: includes/admin/core/class-admin-settings.php:913
2253
+ #: includes/admin/core/class-admin-settings.php:1003
2254
  msgid "The text that is used for the secondary button text"
2255
  msgstr ""
2256
 
2257
+ #: includes/admin/core/class-admin-settings.php:920
2258
  msgid "Registration Secondary Button URL"
2259
  msgstr ""
2260
 
2261
+ #: includes/admin/core/class-admin-settings.php:922
2262
+ #: includes/admin/core/class-admin-settings.php:1012
2263
  msgid "You can replace default link for this button by entering custom URL"
2264
  msgstr ""
2265
 
2266
+ #: includes/admin/core/class-admin-settings.php:929
2267
  msgid "Registration Default Role"
2268
  msgstr ""
2269
 
2270
+ #: includes/admin/core/class-admin-settings.php:930
2271
  msgid ""
2272
  "This will be the default role assigned to users registering thru "
2273
  "registration form"
2274
  msgstr ""
2275
 
2276
+ #: includes/admin/core/class-admin-settings.php:938
2277
  #: includes/admin/templates/form/mode.php:13
2278
  msgid "Login Form"
2279
  msgstr ""
2280
 
2281
+ #: includes/admin/core/class-admin-settings.php:943
2282
  msgid "Login Default Template"
2283
  msgstr ""
2284
 
2285
+ #: includes/admin/core/class-admin-settings.php:944
2286
  msgid "This will be the default template to output login"
2287
  msgstr ""
2288
 
2289
+ #: includes/admin/core/class-admin-settings.php:952
2290
  msgid "Login Maximum Width"
2291
  msgstr ""
2292
 
2293
+ #: includes/admin/core/class-admin-settings.php:960
2294
  msgid "Login Shortcode Alignment"
2295
  msgstr ""
2296
 
2297
+ #: includes/admin/core/class-admin-settings.php:973
2298
  msgid "Login Field Icons"
2299
  msgstr ""
2300
 
2301
+ #: includes/admin/core/class-admin-settings.php:974
2302
  msgid "This controls the display of field icons in the login form"
2303
  msgstr ""
2304
 
2305
+ #: includes/admin/core/class-admin-settings.php:986
2306
  msgid "Login Primary Button Text"
2307
  msgstr ""
2308
 
2309
+ #: includes/admin/core/class-admin-settings.php:994
2310
  msgid "Login Secondary Button"
2311
  msgstr ""
2312
 
2313
+ #: includes/admin/core/class-admin-settings.php:1001
2314
  msgid "Login Secondary Button Text"
2315
  msgstr ""
2316
 
2317
+ #: includes/admin/core/class-admin-settings.php:1010
2318
  msgid "Login Secondary Button URL"
2319
  msgstr ""
2320
 
2321
+ #: includes/admin/core/class-admin-settings.php:1019
2322
  msgid "Login Forgot Password Link"
2323
  msgstr ""
2324
 
2325
+ #: includes/admin/core/class-admin-settings.php:1021
2326
  msgid "Switch on/off the forgot password link in login form"
2327
  msgstr ""
2328
 
2329
+ #: includes/admin/core/class-admin-settings.php:1026
2330
  msgid "Show \"Remember Me\""
2331
  msgstr ""
2332
 
2333
+ #: includes/admin/core/class-admin-settings.php:1028
2334
  msgid ""
2335
  "Allow users to choose If they want to stay signed in even after closing the "
2336
  "browser. If you do not show this option, the default will be to not remember "
2337
  "login session."
2338
  msgstr ""
2339
 
2340
+ #: includes/admin/core/class-admin-settings.php:1038
2341
  msgid "Licenses"
2342
  msgstr ""
2343
 
2344
+ #: includes/admin/core/class-admin-settings.php:1041
2345
  msgid "Misc"
2346
  msgstr ""
2347
 
2348
+ #: includes/admin/core/class-admin-settings.php:1046
2349
  msgid "Show an asterisk for required fields"
2350
  msgstr ""
2351
 
2352
+ #: includes/admin/core/class-admin-settings.php:1051
2353
  msgid "User Profile Title"
2354
  msgstr ""
2355
 
2356
+ #: includes/admin/core/class-admin-settings.php:1052
2357
  msgid "This is the title that is displayed on a specific user profile"
2358
  msgstr ""
2359
 
2360
+ #: includes/admin/core/class-admin-settings.php:1058
2361
  msgid "User Profile Dynamic Meta Description"
2362
  msgstr ""
2363
 
2364
+ #: includes/admin/core/class-admin-settings.php:1059
2365
  msgid ""
2366
  "This will be used in the meta description that is available for search-"
2367
  "engines."
2368
  msgstr ""
2369
 
2370
+ #: includes/admin/core/class-admin-settings.php:1067
2371
  msgid "Disable Cache User Profile"
2372
  msgstr ""
2373
 
2374
+ #: includes/admin/core/class-admin-settings.php:1068
2375
  msgid ""
2376
  "Check this box if you would like to disable Ultimate Member user's cache."
2377
  msgstr ""
2378
 
2379
+ #: includes/admin/core/class-admin-settings.php:1073
2380
  msgid "Remove Data on Uninstall?"
2381
  msgstr ""
2382
 
2383
+ #: includes/admin/core/class-admin-settings.php:1074
2384
  msgid ""
2385
  "Check this box if you would like Ultimate Member to completely remove all of "
2386
  "its data when the plugin/extensions are deleted."
2387
  msgstr ""
2388
 
2389
+ #: includes/admin/core/class-admin-settings.php:1079
2390
  msgid "Install Info"
2391
  msgstr ""
2392
 
2393
+ #: includes/admin/core/class-admin-settings.php:1193
2394
  msgid "Ultimate Member - Settings"
2395
  msgstr ""
2396
 
2397
+ #: includes/admin/core/class-admin-settings.php:1332
2398
  msgid "Save Changes"
2399
  msgstr ""
2400
 
2401
+ #: includes/admin/core/class-admin-settings.php:1775
2402
  msgid "Subject Line"
2403
  msgstr ""
2404
 
2405
+ #: includes/admin/core/class-admin-settings.php:1777
2406
  msgid "This is the subject line of the e-mail"
2407
  msgstr ""
2408
 
2409
+ #: includes/admin/core/class-admin-settings.php:1782
2410
  msgid "Message Body"
2411
  msgstr ""
2412
 
2413
+ #: includes/admin/core/class-admin-settings.php:1784
2414
  msgid "This is the content of the e-mail"
2415
  msgstr ""
2416
 
2417
+ #: includes/admin/core/class-admin-settings.php:1834
2418
+ #: includes/admin/core/class-admin-settings.php:1932
2419
  #, php-format
2420
  msgid ""
2421
  "Your license key expired on %s. Please <a href=\"%s\" target=\"_blank"
2422
  "\">renew your license key</a>."
2423
  msgstr ""
2424
 
2425
+ #: includes/admin/core/class-admin-settings.php:1847
2426
+ #: includes/admin/core/class-admin-settings.php:1945
2427
  #, php-format
2428
  msgid ""
2429
  "Your license key has been disabled. Please <a href=\"%s\" target=\"_blank"
2430
  "\">contact support</a> for more information."
2431
  msgstr ""
2432
 
2433
+ #: includes/admin/core/class-admin-settings.php:1859
2434
+ #: includes/admin/core/class-admin-settings.php:1957
2435
  #, php-format
2436
  msgid ""
2437
  "Invalid license. Please <a href=\"%s\" target=\"_blank\">visit your account "
2438
  "page</a> and verify it."
2439
  msgstr ""
2440
 
2441
+ #: includes/admin/core/class-admin-settings.php:1872
2442
+ #: includes/admin/core/class-admin-settings.php:1970
2443
  #, php-format
2444
  msgid ""
2445
  "Your %s is not active for this URL. Please <a href=\"%s\" target=\"_blank"
2446
  "\">visit your account page</a> to manage your license key URLs."
2447
  msgstr ""
2448
 
2449
+ #: includes/admin/core/class-admin-settings.php:1884
2450
+ #: includes/admin/core/class-admin-settings.php:1982
2451
  #, php-format
2452
  msgid "This appears to be an invalid license key for %s."
2453
  msgstr ""
2454
 
2455
+ #: includes/admin/core/class-admin-settings.php:1893
2456
+ #: includes/admin/core/class-admin-settings.php:1991
2457
  #, php-format
2458
  msgid ""
2459
  "Your license key has reached its activation limit. <a href=\"%s\">View "
2460
  "possible upgrades</a> now."
2461
  msgstr ""
2462
 
2463
+ #: includes/admin/core/class-admin-settings.php:1902
2464
+ #: includes/admin/core/class-admin-settings.php:2000
2465
  msgid ""
2466
  "The key you entered belongs to a bundle, please use the product specific "
2467
  "license key."
2468
  msgstr ""
2469
 
2470
+ #: includes/admin/core/class-admin-settings.php:1910
2471
+ #: includes/admin/core/class-admin-settings.php:1918
2472
  msgid "unknown_error"
2473
  msgstr ""
2474
 
2475
+ #: includes/admin/core/class-admin-settings.php:1911
2476
+ #: includes/admin/core/class-admin-settings.php:1919
2477
  #, php-format
2478
  msgid ""
2479
  "There was an error with this license key: %s. Please <a href=\"%s\">contact "
2480
  "our support team</a>."
2481
  msgstr ""
2482
 
2483
+ #: includes/admin/core/class-admin-settings.php:2015
2484
  msgid "License key never expires."
2485
  msgstr ""
2486
 
2487
+ #: includes/admin/core/class-admin-settings.php:2022
2488
  #, php-format
2489
  msgid ""
2490
  "Your license key expires soon! It expires on %s. <a href=\"%s\" target="
2491
  "\"_blank\">Renew your license key</a>."
2492
  msgstr ""
2493
 
2494
+ #: includes/admin/core/class-admin-settings.php:2032
2495
  #, php-format
2496
  msgid "Your license key expires on %s."
2497
  msgstr ""
2498
 
2499
+ #: includes/admin/core/class-admin-settings.php:2050
2500
  #, php-format
2501
  msgid "To receive updates, please enter your valid %s license key."
2502
  msgstr ""
2503
 
2504
+ #: includes/admin/core/class-admin-settings.php:2074
2505
  msgid "Clear License"
2506
  msgstr ""
2507
 
2508
+ #: includes/admin/core/class-admin-settings.php:2076
2509
  msgid "Activate"
2510
  msgstr ""
2511
 
2512
+ #: includes/admin/core/class-admin-settings.php:2078
2513
  msgid "Re-Activate"
2514
  msgstr ""
2515
 
2516
+ #: includes/admin/core/class-admin-settings.php:2130
2517
  msgid ""
2518
  "To copy the Install info, click below then press Ctrl + C (PC) or Cmd + C "
2519
  "(Mac)."
2584
  msgstr ""
2585
 
2586
  #: includes/admin/core/class-admin-users.php:116
2587
+ #: includes/core/class-fields.php:2314
2588
  msgid "Apply"
2589
  msgstr ""
2590
 
2627
 
2628
  #: includes/admin/core/class-admin-users.php:305
2629
  #: includes/admin/templates/dashboard/users.php:11
2630
+ #: includes/core/class-user.php:819
2631
  msgid "Approved"
2632
  msgstr ""
2633
 
2698
  msgid "Are you sure you want to delete this role?"
2699
  msgstr ""
2700
 
 
 
 
 
 
2701
  #: includes/admin/core/list-tables/roles-list-table.php:343
2702
  msgid "Are you sure you want to reset UM role meta?"
2703
  msgstr ""
2737
  #: includes/admin/core/list-tables/roles-list-table.php:479
2738
  #: includes/admin/core/packages/2.0-beta1/user_roles.php:14
2739
  #: includes/admin/templates/role/role-edit.php:136
2740
+ #: includes/core/class-common.php:56 includes/core/class-common.php:86
2741
  msgid "Add New"
2742
  msgstr ""
2743
 
2892
  msgstr ""
2893
 
2894
  #: includes/admin/core/packages/2.0-beta1/user_roles.php:18
2895
+ #: includes/core/class-common.php:60 includes/core/class-common.php:90
2896
  msgid "Nothing found in Trash"
2897
  msgstr ""
2898
 
2957
  msgstr ""
2958
 
2959
  #: includes/admin/templates/dashboard/users.php:27
2960
+ #: includes/core/class-user.php:827
2961
  msgid "Pending Review"
2962
  msgstr ""
2963
 
2964
  #: includes/admin/templates/dashboard/users.php:32
2965
+ #: includes/core/class-user.php:823
2966
  msgid "Awaiting E-mail Confirmation"
2967
  msgstr ""
2968
 
3553
  #: includes/admin/templates/modal/dynamic_new_group.php:15
3554
  #: includes/admin/templates/modal/fonticons.php:11
3555
  #: includes/admin/templates/role/publish.php:24
3556
+ #: includes/core/class-fields.php:2315 includes/core/class-fields.php:2412
3557
+ #: includes/core/um-actions-profile.php:557
3558
+ #: includes/core/um-actions-profile.php:696
3559
+ #: includes/core/um-actions-profile.php:729
3560
+ #: includes/core/um-actions-profile.php:1074
3561
+ #: includes/core/um-actions-profile.php:1081
3562
  msgid "Cancel"
3563
  msgstr ""
3564
 
3902
  msgid "Check All"
3903
  msgstr ""
3904
 
3905
+ #: includes/class-config.php:129 includes/class-config.php:739
3906
  msgid "User"
3907
  msgstr ""
3908
 
3909
  #: includes/class-config.php:130 includes/class-config.php:235
3910
+ #: includes/class-config.php:241 includes/class-config.php:740
3911
  msgid "Login"
3912
  msgstr ""
3913
 
3914
  #: includes/class-config.php:131 includes/class-config.php:233
3915
+ #: includes/class-config.php:245 includes/class-config.php:741
3916
  msgid "Register"
3917
  msgstr ""
3918
 
3919
+ #: includes/class-config.php:132 includes/class-config.php:742
3920
  msgid "Members"
3921
  msgstr ""
3922
 
3923
+ #: includes/class-config.php:133 includes/class-config.php:743
3924
+ #: includes/core/um-actions-profile.php:1080
3925
  #: includes/core/um-actions-user.php:15
3926
  msgid "Logout"
3927
  msgstr ""
3928
 
3929
+ #: includes/class-config.php:135 includes/class-config.php:745
3930
  msgid "Password Reset"
3931
  msgstr ""
3932
 
4089
  msgid "Cheatin&#8217; huh?"
4090
  msgstr ""
4091
 
4092
+ #: includes/core/class-account.php:93
4093
  msgid "Update Account"
4094
  msgstr ""
4095
 
4096
+ #: includes/core/class-account.php:98
4097
  msgid "Change Password"
4098
  msgstr ""
4099
 
4100
+ #: includes/core/class-account.php:99
4101
  msgid "Update Password"
4102
  msgstr ""
4103
 
4104
+ #: includes/core/class-account.php:105
 
 
 
 
4105
  msgid "Update Privacy"
4106
  msgstr ""
4107
 
4108
+ #: includes/core/class-account.php:111
 
 
 
 
4109
  msgid "Update Notifications"
4110
  msgstr ""
4111
 
4112
+ #: includes/core/class-account.php:119 includes/core/class-account.php:120
4113
  #: includes/core/class-builtin.php:1136 includes/core/class-builtin.php:1139
4114
  msgid "Delete Account"
4115
  msgstr ""
4189
  msgid "You must add a shortcode to the content area"
4190
  msgstr ""
4191
 
4192
+ #: includes/core/class-builtin.php:663 includes/core/class-user.php:1539
4193
  msgid "Only me"
4194
  msgstr ""
4195
 
4198
  msgid "Username or E-mail"
4199
  msgstr ""
4200
 
 
 
 
 
 
4201
  #: includes/core/class-builtin.php:737 includes/core/class-builtin.php:740
4202
  #: includes/core/class-builtin.php:1325
4203
  msgid "Website URL"
4338
  msgstr ""
4339
 
4340
  #: includes/core/class-builtin.php:1080
4341
+ #: includes/core/um-actions-profile.php:519
4342
  msgid "Change your cover photo"
4343
  msgstr ""
4344
 
6180
  msgid "Search Forms"
6181
  msgstr ""
6182
 
6183
+ #: includes/core/class-common.php:85
6184
  msgid "Member Directory"
6185
  msgstr ""
6186
 
6187
+ #: includes/core/class-common.php:87
6188
  msgid "Add New Member Directory"
6189
  msgstr ""
6190
 
6191
+ #: includes/core/class-common.php:88
6192
  msgid "Edit Member Directory"
6193
  msgstr ""
6194
 
6195
+ #: includes/core/class-common.php:89
6196
  msgid "You did not create any member directories yet"
6197
  msgstr ""
6198
 
6199
+ #: includes/core/class-common.php:91
6200
  msgid "Search Member Directories"
6201
  msgstr ""
6202
 
6257
  msgid "Add translation to %s"
6258
  msgstr ""
6259
 
6260
+ #: includes/core/class-fields.php:1178 templates/message.php:5
6261
  #, php-format
6262
  msgid "%s"
6263
  msgstr ""
6264
 
6265
+ #: includes/core/class-fields.php:1197
6266
  msgid "Custom Field"
6267
  msgstr ""
6268
 
6269
+ #: includes/core/class-fields.php:1494
6270
  msgid "Please upload a valid image!"
6271
  msgstr ""
6272
 
6273
+ #: includes/core/class-fields.php:1501 includes/core/class-fields.php:1522
6274
  msgid "Upload"
6275
  msgstr ""
6276
 
6277
+ #: includes/core/class-fields.php:1502
6278
  msgid "Sorry this is not a valid image."
6279
  msgstr ""
6280
 
6281
+ #: includes/core/class-fields.php:1503
6282
  msgid "This image is too large!"
6283
  msgstr ""
6284
 
6285
+ #: includes/core/class-fields.php:1504
6286
  msgid "This image is too small!"
6287
  msgstr ""
6288
 
6289
+ #: includes/core/class-fields.php:1505
6290
  msgid "You can only upload one image"
6291
  msgstr ""
6292
 
6293
+ #: includes/core/class-fields.php:1973
6294
  msgid "Current Password"
6295
  msgstr ""
6296
 
6297
+ #: includes/core/class-fields.php:2002
6298
  msgid "New Password"
6299
  msgstr ""
6300
 
6301
+ #: includes/core/class-fields.php:2034
6302
  #, php-format
6303
  msgid "Confirm %s"
6304
  msgstr ""
6305
 
6306
+ #: includes/core/class-fields.php:2269
6307
  msgid "Upload Photo"
6308
  msgstr ""
6309
 
6310
+ #: includes/core/class-fields.php:2290 includes/core/class-fields.php:2314
6311
+ #: includes/core/um-actions-profile.php:727
6312
  msgid "Change photo"
6313
  msgstr ""
6314
 
6315
+ #: includes/core/class-fields.php:2314 includes/core/class-fields.php:2411
6316
  msgid "Processing..."
6317
  msgstr ""
6318
 
6319
+ #: includes/core/class-fields.php:2336
6320
  msgid "Upload File"
6321
  msgstr ""
6322
 
6323
+ #: includes/core/class-fields.php:2378 includes/core/um-filters-fields.php:243
6324
  msgid "This file has been removed."
6325
  msgstr ""
6326
 
6327
+ #: includes/core/class-fields.php:2381 includes/core/class-fields.php:2411
6328
  msgid "Change file"
6329
  msgstr ""
6330
 
6331
+ #: includes/core/class-fields.php:2411
6332
  msgid "Save"
6333
  msgstr ""
6334
 
6335
+ #: includes/core/class-fields.php:3834
6336
  #, php-format
6337
  msgid ""
6338
  "Your profile is looking a little empty. Why not <a href=\"%s\">add</a> some "
6339
  "information!"
6340
  msgstr ""
6341
 
6342
+ #: includes/core/class-fields.php:3836
6343
  msgid "This user has not added any information to their profile yet."
6344
  msgstr ""
6345
 
6380
  msgid "You can not edit this user"
6381
  msgstr ""
6382
 
6383
+ #: includes/core/class-password.php:457
6384
  msgid "Please provide your username or email"
6385
  msgstr ""
6386
 
6387
+ #: includes/core/class-password.php:461
6388
  msgid "We can't find an account registered with that address or username"
6389
  msgstr ""
6390
 
6391
+ #: includes/core/class-password.php:480
6392
  msgid ""
6393
  "You have reached the limit for requesting password change for this user "
6394
  "already. Contact support if you cannot open the email"
6395
  msgstr ""
6396
 
6397
+ #: includes/core/class-password.php:536
6398
  msgid "You must enter a new password"
6399
  msgstr ""
6400
 
6401
+ #: includes/core/class-password.php:542 includes/core/um-actions-account.php:59
6402
  msgid "Your password must contain at least 8 characters"
6403
  msgstr ""
6404
 
6405
+ #: includes/core/class-password.php:546 includes/core/um-actions-account.php:63
6406
  msgid "Your password must contain less than 30 characters"
6407
  msgstr ""
6408
 
6409
+ #: includes/core/class-password.php:550 includes/core/um-actions-account.php:67
6410
  #: includes/core/um-actions-form.php:476
6411
  msgid ""
6412
  "Your password must contain at least one lowercase letter, one capital letter "
6413
  "and one number"
6414
  msgstr ""
6415
 
6416
+ #: includes/core/class-password.php:556
6417
  msgid "You must confirm your new password"
6418
  msgstr ""
6419
 
6420
+ #: includes/core/class-password.php:560 includes/core/um-actions-form.php:485
6421
  msgid "Your passwords do not match"
6422
  msgstr ""
6423
 
6533
  msgid "Default Template"
6534
  msgstr ""
6535
 
6536
+ #: includes/core/class-uploader.php:668
6537
  msgid "Your image is invalid!"
6538
  msgstr ""
6539
 
6540
+ #: includes/core/class-uploader.php:710
6541
  msgid "This media type is not recognized."
6542
  msgstr ""
6543
 
6544
+ #: includes/core/class-uploader.php:758
6545
  msgid "Your image is invalid or too large!"
6546
  msgstr ""
6547
 
6548
+ #: includes/core/class-uploader.php:764 includes/core/class-uploader.php:766
6549
  #, php-format
6550
  msgid "Your photo is too small. It must be at least %spx wide."
6551
  msgstr ""
6552
 
6553
+ #: includes/core/class-uploader.php:819
6554
  msgid "This file type is not recognized."
6555
  msgstr ""
6556
 
6557
+ #: includes/core/class-uploader.php:1098
6558
  #, php-format
6559
  msgid "Maximum file size allowed: %s"
6560
  msgstr ""
6561
 
6562
+ #: includes/core/class-user.php:613
6563
  msgid "Ultimate Member Role"
6564
  msgstr ""
6565
 
6566
+ #: includes/core/class-user.php:616
6567
  msgid "&mdash; No role for Ultimate Member &mdash;"
6568
  msgstr ""
6569
 
6570
+ #: includes/core/class-user.php:831
6571
  msgid "Membership Rejected"
6572
  msgstr ""
6573
 
6574
+ #: includes/core/class-user.php:835
6575
  msgid "Membership Inactive"
6576
  msgstr ""
6577
 
6580
  msgstr ""
6581
 
6582
  #: includes/core/um-actions-account.php:27
6583
+ #: includes/core/um-actions-account.php:115
6584
  msgid "You must enter your password"
6585
  msgstr ""
6586
 
6587
  #: includes/core/um-actions-account.php:30
6588
  #: includes/core/um-actions-account.php:47
6589
+ #: includes/core/um-actions-account.php:118
6590
  msgid "This is not your password"
6591
  msgstr ""
6592
 
6606
  msgid "You must provide your last name"
6607
  msgstr ""
6608
 
6609
+ #: includes/core/um-actions-account.php:100
6610
  msgid "You must provide your e-mail"
6611
  msgstr ""
6612
 
6613
+ #: includes/core/um-actions-account.php:104
6614
  msgid "Please provide a valid e-mail"
6615
  msgstr ""
6616
 
6617
+ #: includes/core/um-actions-account.php:108
6618
  msgid "Email already linked to another account"
6619
  msgstr ""
6620
 
6621
+ #: includes/core/um-actions-account.php:416
6622
  msgid "Email me when"
6623
  msgstr ""
6624
 
6895
  msgid "You are not allowed to edit this user."
6896
  msgstr ""
6897
 
6898
+ #: includes/core/um-actions-profile.php:243
6899
  #, php-format
6900
  msgid "Your choosed %s"
6901
  msgstr ""
6902
 
6903
+ #: includes/core/um-actions-profile.php:555
6904
  msgid "Change cover photo"
6905
  msgstr ""
6906
 
6907
+ #: includes/core/um-actions-profile.php:598
6908
  msgid "Upload a cover photo"
6909
  msgstr ""
6910
 
6911
+ #: includes/core/um-actions-profile.php:695
6912
  msgid "Upload photo"
6913
  msgstr ""
6914
 
6915
+ #: includes/core/um-actions-profile.php:728
6916
  msgid "Remove photo"
6917
  msgstr ""
6918
 
6919
+ #: includes/core/um-actions-profile.php:892
6920
  msgid "Tell us a bit about yourself..."
6921
  msgstr ""
6922
 
6923
+ #: includes/core/um-actions-profile.php:908
6924
  #, php-format
6925
  msgid "This user account status is %s"
6926
  msgstr ""
6927
 
6928
+ #: includes/core/um-actions-profile.php:1047
6929
+ #: includes/core/um-actions-profile.php:1078
6930
  msgid "Edit Profile"
6931
  msgstr ""
6932
 
6933
+ #: includes/core/um-actions-profile.php:1079
6934
  msgid "My Account"
6935
  msgstr ""
6936
 
6996
  msgid "Title:"
6997
  msgstr ""
6998
 
6999
+ #: templates/members-grid.php:66
7000
  msgid "Edit profile"
7001
  msgstr ""
7002
 
readme.txt CHANGED
@@ -6,7 +6,7 @@ Donate link:
6
  Tags: community, member, membership, user-profile, user-registration
7
  Requires at least: 4.7
8
  Tested up to: 5.1
9
- Stable tag: 2.0.40
10
  License: GNU Version 2 or Any Later Version
11
  License URI: http://www.gnu.org/licenses/gpl-3.0.txt
12
 
@@ -133,6 +133,30 @@ The plugin works with popular caching plugins by automatically excluding Ultimat
133
 
134
  = Important: UM2.0+ is a significant update to the code base from 1.3.88. Please make sure you take a full-site backup with restore point before updating the plugin =
135
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
136
  = 2.0.40: March 12, 2019 =
137
 
138
  * Bugfixes:
6
  Tags: community, member, membership, user-profile, user-registration
7
  Requires at least: 4.7
8
  Tested up to: 5.1
9
+ Stable tag: 2.0.41
10
  License: GNU Version 2 or Any Later Version
11
  License URI: http://www.gnu.org/licenses/gpl-3.0.txt
12
 
133
 
134
  = Important: UM2.0+ is a significant update to the code base from 1.3.88. Please make sure you take a full-site backup with restore point before updating the plugin =
135
 
136
+ = 2.0.41: March 27, 2019 =
137
+
138
+ * Enhancements:
139
+ - Added Gutenberg blocks section with Ultimate Member shortcodes
140
+ - Clear temp directory on upload process 1 day files old
141
+ - Updated custom scrollbar JS library to jQuery 3 support
142
+
143
+ * Bugfixes:
144
+ - Fixed vulnerability with Reset Password form
145
+ - Fixed Edit Row settings
146
+ - Fixed save profile fields with 0 values
147
+ - Fixed upload photo base URL for Windows servers
148
+ - Fixed displaying user Posts at Profile/Posts tab
149
+ - Fixed unique filename issue, upload avatar with high case extension
150
+ - Fixed member directory filter title
151
+ - Fixed duplicate delete user handler
152
+ - Fixed sorting by Last Login date for users without meta
153
+ - Fixed hook after password reset (issue #532)
154
+ - Fixed member directory user role filter
155
+ - Fixed restriction content WC Products integration
156
+ - Fixed words count for French in user description field
157
+ - Fixed is_selected function for dropdown/multi-select/checkbox profile fields
158
+ - Fixed disable email field at Edit Profile form via filter (disabled by default)
159
+
160
  = 2.0.40: March 12, 2019 =
161
 
162
  * Bugfixes:
templates/account.php CHANGED
@@ -26,65 +26,65 @@
26
  */
27
  do_action( 'um_account_page_hidden_fields', $args ); ?>
28
 
29
- <div class="um-account-meta radius-<?php echo UM()->options()->get( 'profile_photocorner' ); ?> uimob340-show uimob500-show">
30
 
31
- <div class="um-account-meta-img">
32
- <a href="<?php echo um_user_profile_url(); ?>"><?php echo get_avatar( um_user('ID'), 120 ); ?></a>
33
- </div>
34
 
35
- <div class="um-account-name">
36
- <a href="<?php echo um_user_profile_url(); ?>"><?php echo um_user( 'display_name' ); ?></a>
37
- <div class="um-account-profile-link">
38
- <a href="<?php echo um_user_profile_url(); ?>" class="um-link"><?php _e( 'View profile', 'ultimate-member' ); ?></a>
39
- </div>
40
- </div>
41
 
42
- </div>
43
 
44
  <div class="um-account-side uimob340-hide uimob500-hide">
45
 
46
- <div class="um-account-meta radius-<?php echo UM()->options()->get('profile_photocorner'); ?>">
47
 
48
- <div class="um-account-meta-img uimob800-hide"><a href="<?php echo um_user_profile_url(); ?>"><?php echo get_avatar( um_user('ID'), 120 ); ?></a></div>
49
 
50
- <?php if ( UM()->mobile()->isMobile() ) { ?>
51
 
52
- <div class="um-account-meta-img-b uimob800-show" title="<?php echo um_user( 'display_name' ); ?>"><a href="<?php echo um_user_profile_url(); ?>"><?php echo get_avatar( um_user('ID'), 120 ); ?></a></div>
53
 
54
- <?php } else { ?>
55
 
56
- <div class="um-account-meta-img-b uimob800-show um-tip-w" title="<?php echo um_user( 'display_name' ); ?>"><a href="<?php echo um_user_profile_url(); ?>"><?php echo get_avatar( um_user('ID'), 120 ); ?></a></div>
57
 
58
- <?php } ?>
59
 
60
- <div class="um-account-name uimob800-hide">
61
- <a href="<?php echo um_user_profile_url(); ?>"><?php echo um_user( 'display_name', 'html' ); ?></a>
62
- <div class="um-account-profile-link"><a href="<?php echo um_user_profile_url(); ?>" class="um-link"><?php _e( 'View profile', 'ultimate-member' ); ?></a></div>
63
- </div>
64
 
65
- </div>
66
 
67
  <ul>
68
  <?php foreach ( UM()->account()->tabs as $id => $info ) {
69
- if ( isset( $info['custom'] ) || UM()->options()->get( "account_tab_{$id}" ) == 1 || $id == 'general' ) { ?>
70
-
71
- <li>
72
- <a data-tab="<?php echo $id ?>" href="<?php echo UM()->account()->tab_link( $id ); ?>" class="um-account-link <?php if ( $id == UM()->account()->current_tab ) echo 'current'; ?>">
73
- <?php if ( UM()->mobile()->isMobile() ) { ?>
74
- <span class="um-account-icontip uimob800-show" title="<?php echo $info['title']; ?>"><i class="<?php echo $info['icon']; ?>"></i></span>
75
- <?php } else { ?>
76
- <span class="um-account-icontip uimob800-show um-tip-w" title="<?php echo $info['title']; ?>"><i class="<?php echo $info['icon']; ?>"></i></span>
77
- <?php } ?>
78
-
79
- <span class="um-account-icon uimob800-hide"><i class="<?php echo $info['icon']; ?>"></i></span>
80
- <span class="um-account-title uimob800-hide"><?php echo $info['title']; ?></span>
81
- <span class="um-account-arrow uimob800-hide">
82
- <i class="<?php if ( is_rtl() ) { ?>um-faicon-angle-left<?php } else { ?>um-faicon-angle-right<?php } ?>"></i>
83
- </span>
84
- </a>
85
- </li>
86
-
87
- <?php }
88
  } ?>
89
  </ul>
90
  </div>
@@ -115,25 +115,24 @@
115
 
116
  foreach ( UM()->account()->tabs as $id => $info ) {
117
 
118
- $current_tab = UM()->account()->current_tab;
119
 
120
- if ( isset( $info['custom'] ) || UM()->options()->get( 'account_tab_' . $id ) == 1 || $id == 'general' ) { ?>
121
 
122
- <div class="um-account-nav uimob340-show uimob500-show">
123
- <a href="#" data-tab="<?php echo $id; ?>" class="<?php if ( $id == $current_tab ) echo 'current'; ?>">
124
- <?php echo $info['title']; ?>
125
- <span class="ico"><i class="<?php echo $info['icon']; ?>"></i></span>
126
- <span class="arr"><i class="um-faicon-angle-down"></i></span>
127
- </a>
128
- </div>
129
 
130
- <div class="um-account-tab um-account-tab-<?php echo $id ?>" data-tab="<?php echo $id ?>">
131
- <?php $info['with_header'] = true;
132
- UM()->account()->render_account_tab( $id, $info, $args ); ?>
133
- </div>
134
 
135
- <?php }
136
-
137
  } ?>
138
 
139
  </div>
@@ -161,5 +160,5 @@
161
  do_action( 'um_after_account_page_load' ); ?>
162
 
163
  </div>
164
-
165
  </div>
26
  */
27
  do_action( 'um_account_page_hidden_fields', $args ); ?>
28
 
29
+ <div class="um-account-meta radius-<?php echo UM()->options()->get( 'profile_photocorner' ); ?> uimob340-show uimob500-show">
30
 
31
+ <div class="um-account-meta-img">
32
+ <a href="<?php echo um_user_profile_url(); ?>"><?php echo get_avatar( um_user('ID'), 120 ); ?></a>
33
+ </div>
34
 
35
+ <div class="um-account-name">
36
+ <a href="<?php echo um_user_profile_url(); ?>"><?php echo um_user( 'display_name' ); ?></a>
37
+ <div class="um-account-profile-link">
38
+ <a href="<?php echo um_user_profile_url(); ?>" class="um-link"><?php _e( 'View profile', 'ultimate-member' ); ?></a>
39
+ </div>
40
+ </div>
41
 
42
+ </div>
43
 
44
  <div class="um-account-side uimob340-hide uimob500-hide">
45
 
46
+ <div class="um-account-meta radius-<?php echo UM()->options()->get('profile_photocorner'); ?>">
47
 
48
+ <div class="um-account-meta-img uimob800-hide"><a href="<?php echo um_user_profile_url(); ?>"><?php echo get_avatar( um_user('ID'), 120 ); ?></a></div>
49
 
50
+ <?php if ( UM()->mobile()->isMobile() ) { ?>
51
 
52
+ <div class="um-account-meta-img-b uimob800-show" title="<?php echo um_user( 'display_name' ); ?>"><a href="<?php echo um_user_profile_url(); ?>"><?php echo get_avatar( um_user('ID'), 120 ); ?></a></div>
53
 
54
+ <?php } else { ?>
55
 
56
+ <div class="um-account-meta-img-b uimob800-show um-tip-w" title="<?php echo um_user( 'display_name' ); ?>"><a href="<?php echo um_user_profile_url(); ?>"><?php echo get_avatar( um_user('ID'), 120 ); ?></a></div>
57
 
58
+ <?php } ?>
59
 
60
+ <div class="um-account-name uimob800-hide">
61
+ <a href="<?php echo um_user_profile_url(); ?>"><?php echo um_user( 'display_name', 'html' ); ?></a>
62
+ <div class="um-account-profile-link"><a href="<?php echo um_user_profile_url(); ?>" class="um-link"><?php _e( 'View profile', 'ultimate-member' ); ?></a></div>
63
+ </div>
64
 
65
+ </div>
66
 
67
  <ul>
68
  <?php foreach ( UM()->account()->tabs as $id => $info ) {
69
+ if ( isset( $info['custom'] ) || UM()->options()->get( "account_tab_{$id}" ) == 1 || $id == 'general' ) { ?>
70
+
71
+ <li>
72
+ <a data-tab="<?php echo $id ?>" href="<?php echo UM()->account()->tab_link( $id ); ?>" class="um-account-link <?php if ( $id == UM()->account()->current_tab ) echo 'current'; ?>">
73
+ <?php if ( UM()->mobile()->isMobile() ) { ?>
74
+ <span class="um-account-icontip uimob800-show" title="<?php echo $info['title']; ?>"><i class="<?php echo $info['icon']; ?>"></i></span>
75
+ <?php } else { ?>
76
+ <span class="um-account-icontip uimob800-show um-tip-w" title="<?php echo $info['title']; ?>"><i class="<?php echo $info['icon']; ?>"></i></span>
77
+ <?php } ?>
78
+
79
+ <span class="um-account-icon uimob800-hide"><i class="<?php echo $info['icon']; ?>"></i></span>
80
+ <span class="um-account-title uimob800-hide"><?php echo $info['title']; ?></span>
81
+ <span class="um-account-arrow uimob800-hide">
82
+ <i class="<?php if ( is_rtl() ) { ?>um-faicon-angle-left<?php } else { ?>um-faicon-angle-right<?php } ?>"></i>
83
+ </span>
84
+ </a>
85
+ </li>
86
+
87
+ <?php }
88
  } ?>
89
  </ul>
90
  </div>
115
 
116
  foreach ( UM()->account()->tabs as $id => $info ) {
117
 
118
+ $current_tab = UM()->account()->current_tab;
119
 
120
+ if ( isset( $info['custom'] ) || UM()->options()->get( 'account_tab_' . $id ) == 1 || $id == 'general' ) { ?>
121
 
122
+ <div class="um-account-nav uimob340-show uimob500-show">
123
+ <a href="#" data-tab="<?php echo $id; ?>" class="<?php if ( $id == $current_tab ) echo 'current'; ?>">
124
+ <?php echo $info['title']; ?>
125
+ <span class="ico"><i class="<?php echo $info['icon']; ?>"></i></span>
126
+ <span class="arr"><i class="um-faicon-angle-down"></i></span>
127
+ </a>
128
+ </div>
129
 
130
+ <div class="um-account-tab um-account-tab-<?php echo $id ?>" data-tab="<?php echo $id ?>">
131
+ <?php $info['with_header'] = true;
132
+ UM()->account()->render_account_tab( $id, $info, $args ); ?>
133
+ </div>
134
 
135
+ <?php }
 
136
  } ?>
137
 
138
  </div>
160
  do_action( 'um_after_account_page_load' ); ?>
161
 
162
  </div>
163
+
164
  </div>
templates/members-grid.php CHANGED
@@ -60,9 +60,11 @@
60
  */
61
  do_action( 'um_members_just_after_name', um_user('ID'), $args ); ?>
62
 
63
- <?php if ( UM()->roles()->um_current_user_can( 'edit', um_user('ID') ) || UM()->roles()->um_user_can( 'can_edit_everyone' ) ) { ?>
64
  <div class="um-members-edit-btn">
65
- <a href="<?php echo um_edit_profile_url() ?>" class="um-edit-profile-btn um-button um-alt"><?php _e( 'Edit profile','ultimate-member' ) ?></a>
 
 
66
  </div>
67
  <?php }
68
 
60
  */
61
  do_action( 'um_members_just_after_name', um_user('ID'), $args ); ?>
62
 
63
+ <?php if ( UM()->roles()->um_current_user_can( 'edit', um_user('ID') ) ) { ?>
64
  <div class="um-members-edit-btn">
65
+ <a href="<?php echo um_edit_profile_url() ?>" class="um-edit-profile-btn um-button um-alt">
66
+ <?php _e( 'Edit profile','ultimate-member' ) ?>
67
+ </a>
68
  </div>
69
  <?php }
70
 
ultimate-member.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Ultimate Member
4
  Plugin URI: http://ultimatemember.com/
5
  Description: The easiest way to create powerful online communities and beautiful user profiles with WordPress
6
- Version: 2.0.40
7
  Author: Ultimate Member
8
  Author URI: http://ultimatemember.com/
9
  Text Domain: ultimate-member
3
  Plugin Name: Ultimate Member
4
  Plugin URI: http://ultimatemember.com/
5
  Description: The easiest way to create powerful online communities and beautiful user profiles with WordPress
6
+ Version: 2.0.41
7
  Author: Ultimate Member
8
  Author URI: http://ultimatemember.com/
9
  Text Domain: ultimate-member