Advanced AJAX Product Filters - Version 1.1.0.5

Version Description

  • Enhancement - Option to add text before and after price input fields
  • Enhancement - Jump to first page when filter changed
  • Fix - Now only used values must be shown, not all
  • Fix - Products are limited by category we are in
  • Fix - Products amount on the first page is correct now
Download this release

Release Info

Developer dholovnia
Plugin Icon wp plugin Advanced AJAX Product Filters
Version 1.1.0.5
Comparing to
See all releases

Code changes from version 1.1.0.4 to 1.1.0.5

README.md ADDED
@@ -0,0 +1,240 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === Advanced AJAX Product Filters ===
2
+ Plugin Name: Advanced AJAX Product Filters
3
+ Contributors: dholovnia, berocket
4
+ Donate link: http://berocket.com
5
+ Tags: filters, product filters, ajax product filters, advanced product filters, woocommerce filters, woocommerce product filters, woocommerce ajax product filters, widget, plugin
6
+ Requires at least: 3.9
7
+ Tested up to: 4.2.2
8
+ Stable tag: 1.1.0.5
9
+ License: GPLv2 or later
10
+ License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
+
12
+ WooCommerce AJAX Product Filters - advanced AJAX product filters plugin for WooCommerce.
13
+
14
+ == Description ==
15
+
16
+ WooCommerce AJAX Product Filters - advanced AJAX product filters plugin for WooCommerce. Add unlimited filters with one widget.
17
+
18
+ = Features: =
19
+
20
+ * AJAX Filters, Pagination and Sorting!
21
+ * Unlimited Filters
22
+ * Multiple User Interface Elements
23
+ * SEO Friendly Urls ( with HTML5 PushState )
24
+ * Filter Visibility By Product Category And Globals.
25
+ * Accessible through shortcode
26
+ * Filter box height limit with scroll themes
27
+ * Working great with custom widget area
28
+ * Drag and Drop Filter Building
29
+ * And More...
30
+
31
+ = Additional Features in Paid Plugin: =
32
+
33
+ * Filter by Attribute, Tag and Custom Taxonomy
34
+ * Customize filters look through admin
35
+ * Tag Cloud for Tag filter
36
+ * Slider can use strings as a value
37
+ * Filters can be collapsed by clicking on title, option to collapse filter on start
38
+ * Price Filter Custom Min and Max values
39
+ * Add custom CSS on admin settings page
40
+ * And More...
41
+
42
+ = Paid Plugin Link =
43
+ http://berocket.com/product/woocommerce-ajax-products-filter
44
+
45
+ = Demo =
46
+ http://woocommerce-product-filter.berocket.com
47
+
48
+
49
+ = How It Works: =
50
+ *check installation*
51
+
52
+
53
+ = In recent updates: =
54
+ * Jump to first page when filter changed
55
+ * Option to add text before and after price input fields
56
+ * Now only used values must be shown, not all
57
+ * Products are limited by category we are in
58
+ * Products amount on the first page fixed
59
+ * Custom CSS class can be added per widget/filter
60
+ * Update button - if added products will be updated only when user click Update button
61
+ * Radio-box can be unselected by clicking it again
62
+ * Minor fixes
63
+
64
+
65
+
66
+ = Shortcode: =
67
+ * In editor `[br_filters attribute=price type=slider title="Price Filter"]`
68
+ * In PHP `do_shortcode('[br_filters attribute=price type=slider title="Price Filter"]');`
69
+
70
+ = Shortcode Options: =
71
+ * `attribute`(required) - product attribute, eg price or length. Don't forget that woocommerce adding pa_ suffix for created attributes.
72
+ So if you create new attribute `jump` its name is `pa_jump`
73
+ * `type`(required) - checkbox, radio, slider or select
74
+ * `operator` - OR or AND
75
+ * `title` - whatever you want to see as title. Can be empty
76
+ * `product_cat` - parent category id
77
+ * `cat_propagation` - should we propagate this filter to child categories? set 1 to turn this on
78
+ * `height` - max filter box height. When height is met scroll will be added
79
+ * `scroll_theme` - pretty clear name, scroll theme. Will be used if height is set and real height of box is more
80
+
81
+
82
+ = Advanced Settings (Widget area): =
83
+
84
+ * Product Category - if you want to pin your filter to category of the product this is good place to do it.
85
+ Eg. You selling Phones and Cases for them. If user choose Category "Phones" filter "Have Wi-Fi" will appear
86
+ but if user will choose "Cases" it will not be there as Admin set that "Have Wi-Fi" filter will be visible only on
87
+ "Phones" category.
88
+ * Filter Box Height - if your filter have too much options it is nice to limit height of the filter to not prolong
89
+ the page too much. Scroll will appear.
90
+ * Scroll theme - if "Filter Box Height" is set and box length is more than "Filter Box Height" scroll appear and
91
+ how it looks depends on the theme you choose.
92
+
93
+
94
+ = Advanced Settings (Plugin Settings): =
95
+ * Plugin settings can be found in admin area, WooCommerce -> Product Filters
96
+ * "No Products" message - Text that will be shown if no products found
97
+ * "No Products" class - Add class and use it to style "No Products" box
98
+ * Products selector - Selector for tag that is holding products
99
+ * Sorting control - Take control over WooCommerce's sorting selectbox
100
+ * SEO friendly urls - url will be changed when filter is selected/changed
101
+ * Turn all filters off - If you want to hide filters without losing current configuration just turn them off
102
+
103
+
104
+
105
+ == Installation ==
106
+
107
+ = Step 1: =
108
+ * First you need to add attributes to the products ( WooCommerce plugin should be installed and activated already )
109
+ * Go to Admin area -> Products -> Attributes and add attributes your products will have, add them all
110
+ * Click attribute's name where type is select and add values to it. Predefine product options
111
+ * Go to your products and add attributes to each of them
112
+
113
+ = Step 2: =
114
+ * Install and activate plugin
115
+ * First of all go to Admin area -> WooCommerce -> Product Filter and check what global options you can manage
116
+ * After that go to Admin area -> Appearance -> Widgets
117
+ * In Available Widgets ( left side of the screen ) find AJAX Product Filters
118
+ * Drag it to Sidebar you choose
119
+ * Enter title, choose attribute that will be used for filtering products, choose filter type,
120
+ choose operator( whether product should have all selected values (AND) or one of them (OR) ),
121
+ * Click save and go to your shop to check how it work.
122
+ * That's it =)
123
+
124
+
125
+ == Frequently Asked Questions ==
126
+
127
+ ---
128
+
129
+ == Screenshots ==
130
+
131
+ ---
132
+
133
+ == Changelog ==
134
+
135
+ = 1.1.0.5 =
136
+ * Enhancement - Jump to first page when filter changed
137
+ * Enhancement - Option to add text before and after price input fields
138
+ * Fix - Now only used values must be shown, not all
139
+ * Fix - Products are limited by category we are in
140
+ * Fix - Products amount on the first page is correct now
141
+
142
+ = 1.1.0.4 =
143
+ * Minor fix
144
+
145
+ = 1.1.0.3 =
146
+ * Enhancement - Custom CSS class can be added per widget/filter
147
+ * Enhancement - Update button. If added products will be updated only when user click Update button
148
+ * Enhancement - Radio-box can be unselected by clicking it again
149
+ * Enhancement/Fix - Urls are shortened using better structure to save filters. `~` symbol is not used now
150
+ * Fix - issue with shortened tags for shortcode.
151
+ * Fix - on widgets page widget now has subcategories(hierarchy)
152
+ * Fix - all categories are visible, not only that have products inside(popular)
153
+ * Minor fixes
154
+
155
+ = 1.1.0.2 =
156
+ * Fix - another js issue that stops plugin from work
157
+ * Fix - order by name, name_numeric and attribute ID wasn't working
158
+
159
+ = 1.1.0.1 =
160
+ * Fix - js issue that stops plugin from work
161
+
162
+ = 1.1.0 =
163
+ * Enhancement - Show all values - on plugin settings page you can enable option to show all values no matter if they are used or not
164
+ * Enhancement - Values order - you can set values order when editing attribute. You can set how to order (by id, name or custom). If
165
+ you set to order `by custom` you can drag&drop values up and down and set your own order.
166
+ * Small fixes
167
+
168
+ = 1.0.4.5 =
169
+ * Enhancement - values order added. Now order of values can be controlled through attribute options
170
+ * Enhancement/Fix - Better support for for category pages
171
+ * Other small fixes
172
+
173
+ = 1.0.4.4 =
174
+ * Enhancement - adding callback for before_update, on_update, after_update events.
175
+ * Other small fixes
176
+
177
+ = 1.0.4.3 =
178
+ * Enhancement - shortcode added
179
+ * Critical/Fix - If slider match none its values wasn't counted
180
+ * Enhancement/Fix - Changing attribute data location from url to action-element, providing more flexibility for template
181
+ * Enhancement/Templating - Using full products loop instead of including product content template
182
+ * Fix - Pagination with SEO url issue
183
+
184
+ = 1.0.4.2 =
185
+ * Enhancement/Fix - Better support for SEO urls with permalinks on/off
186
+ * Fix - Critical bug that was returning incorrect products.
187
+
188
+ = 1.0.4.1 =
189
+ * Enhancement - Adding AJAX for pagination.
190
+ * Enhancement - Adding PushState for pagination.
191
+ * Enhancement/Fix - Pagination wasn't updating when filters used.
192
+ * Enhancement/Fix - Text with amount of results (Eg "Showing all 2 results") wasn't updating after filters applied
193
+ * Enhancement/Fix - When choosing Slider in admin Operator became hidden
194
+ * Fix - All sliders except price wasn't working with SEO url
195
+ * Fix - When changing attribute to/from price in admin all filters jumping
196
+ * Fix - After filter applied all products was showed. Even those with Draft status.
197
+
198
+ = 1.0.4 =
199
+ * Enhancement - SEO friendly urls with possibility for users to share/bookmark their search. Will be shortened in future
200
+ * Enhancement - Option added to turn SEO friendly urls on/off. Off by default as this is first version of this feature
201
+ * Enhancement - Option to turn filters on/off globally
202
+ * Enhancement - Option to take control over (default) sorting function, make it AJAXy and work with filters
203
+ * Fix - Sorting remain correct after using filters. Sorting wasn't counted before
204
+ * Fix - If there are 2 or more sliders they are not working correctly.
205
+ * Fix - Values in slider was converted to float even when value ia not a price.
206
+ * Fix - If there are 2 or more values for attribute it was not validated when used in slider.
207
+
208
+ = 1.0.3.6 =
209
+ * Fix - Removed actions that provide warning messages
210
+ * Enhancement - Actions and filters inside plugin
211
+
212
+ = 1.0.3.3 =
213
+ * Enhancement/Fix - Showing products and options now depending on woocommerce_hide_out_of_stock_items option
214
+ * Enhancement/Fix - If not enough data available( quantity of options < 2 ) filters will not be shown.
215
+ * Fix - If in category, only products/options from this category will be shown
216
+
217
+ = 1.0.3.2 =
218
+ * Fix - wrong path was committed in previous version that killed plugin
219
+
220
+ = 1.0.3 =
221
+ * Enhancement - CSS and JavaScript files minimized
222
+ * Enhancement - Settings page added
223
+ * Enhancement - "No Products" message and it's class can be changed through admin
224
+ * Enhancement - Option added that can enable control over sorting( if visible )
225
+ * Enhancement - User can select several categories instead of one. Now you don't need to create several same filters
226
+ for different categories.
227
+ * Enhancement - Added option "include subcats?". if selected filter will be shown in selected categories and their
228
+ subcategories
229
+ * Fix - Adding support to themes that require product div to have "product" class
230
+ * Fix - Slider in categories wasn't initialized
231
+ * Fix - Subcategories wasn't working. Only Main categories were showing filters
232
+ * Templating - return woocommerce/theme default structure for product
233
+ * Templating - html parts moved to separate files in templates folder. You can overwrite them by creating folder
234
+ "woocommerce-filters" and file with same name as in plugin templates folder.
235
+
236
+ = 1.0.2 =
237
+ * Fix - better support for older PHP versions
238
+
239
+ = 1.0.1 =
240
+ * First public version
css/admin.css CHANGED
@@ -1 +1,17 @@
1
- .berocket_aapf_advanced_settings{display:none}.berocket_aapf_widget_admin_height_input{width:43px}.berocket_aapf_advanced_settings_categories_list{max-height:200px;overflow:auto}.berocket_aapf_advanced_settings_subcategory{float:right;position:relative;top:3px}.colorpicker_field{width:30px;height:30px;margin:5px auto;border:1px solid #000}.admin-column-color{width:6%;text-align:center!important}.admin-column-font-family{width:15%}.admin-column-font-family select{max-width:100%}.admin-column-font-weight{width:12%}.admin-column-font-weight select{max-width:100%}.admin-column-font-size{width:10%;text-align:center!important}.admin-column-font-size input{max-width:100%;text-align:center!important}.admin-column-dimensions{width:10%}.admin-column-dimensions select{max-width:100%}.admin-column-theme{width:14%}.admin-column-theme select{max-width:100%}.tab-item{display:none}.tab-item.current{display:block}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .berocket_aapf_advanced_settings{display: none;}.berocket_aapf_widget_admin_height_input{width: 43px;}.berocket_aapf_advanced_settings_categories_list{max-height: 200px;overflow:auto;}.berocket_aapf_advanced_settings_subcategory{float: right;position: relative;top: 3px;}
2
+
3
+ .colorpicker_field{width: 30px; height: 30px; margin: 5px auto; border: 1px solid black;}
4
+
5
+ .admin-column-color{width: 6%; text-align: center!important;}
6
+ .admin-column-font-family{width: 15%;}
7
+ .admin-column-font-family select{max-width: 100%;}
8
+ .admin-column-font-weight{width: 12%;}
9
+ .admin-column-font-weight select{max-width: 100%;}
10
+ .admin-column-font-size{width: 10%; text-align: center!important;}
11
+ .admin-column-font-size input{max-width: 100%; text-align: center!important;}
12
+ .admin-column-dimensions{width: 10%;}
13
+ .admin-column-dimensions select{max-width: 100%;}
14
+ .admin-column-theme{width: 14%;}
15
+ .admin-column-theme select{max-width: 100%;}
16
+ .tab-item{display: none;}
17
+ .tab-item.current{display: block;}
css/scrollbar/Scrollbar.min.css CHANGED
@@ -1 +1 @@
1
- .mCustomScrollbar{-ms-touch-action:none;touch-action:none}.mCustomScrollbar.mCS_no_scrollbar{-ms-touch-action:auto;touch-action:auto}.mCustomScrollBox{position:relative;overflow:hidden;height:100%;max-width:100%;outline:0;direction:ltr}.mCSB_container{overflow:hidden;width:auto;height:auto}.mCSB_inside>.mCSB_container{margin-right:30px}.mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{margin-right:0}.mCS-dir-rtl>.mCSB_inside>.mCSB_container{margin-right:0;margin-left:30px}.mCS-dir-rtl>.mCSB_inside>.mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{margin-left:0}.mCSB_scrollTools{position:absolute;width:16px;height:auto;left:auto;top:0;right:0;bottom:0}.mCSB_outside+.mCSB_scrollTools{right:-26px}.mCS-dir-rtl>.mCSB_inside>.mCSB_scrollTools,.mCS-dir-rtl>.mCSB_outside+.mCSB_scrollTools{right:auto;left:0}.mCS-dir-rtl>.mCSB_outside+.mCSB_scrollTools{left:-26px}.mCSB_scrollTools .mCSB_draggerContainer{position:absolute;top:0;left:0;bottom:0;right:0;height:auto}.mCSB_scrollTools a+.mCSB_draggerContainer{margin:20px 0}.mCSB_scrollTools .mCSB_draggerRail{width:2px;height:100%;margin:0 auto;-webkit-border-radius:16px;-moz-border-radius:16px;border-radius:16px}.mCSB_scrollTools .mCSB_dragger{cursor:pointer;width:100%;height:30px;z-index:1}.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{position:relative;width:4px;height:100%;margin:0 auto;-webkit-border-radius:16px;-moz-border-radius:16px;border-radius:16px;text-align:center}.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{width:12px}.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{width:8px}.mCSB_scrollTools .mCSB_buttonDown,.mCSB_scrollTools .mCSB_buttonUp{display:block;position:absolute;height:20px;width:100%;overflow:hidden;margin:0 auto;cursor:pointer}.mCSB_scrollTools .mCSB_buttonDown{bottom:0}.mCSB_horizontal.mCSB_inside>.mCSB_container{margin-right:0;margin-bottom:30px}.mCSB_horizontal.mCSB_outside>.mCSB_container{min-height:100%}.mCSB_horizontal>.mCSB_container.mCS_no_scrollbar_x.mCS_x_hidden{margin-bottom:0}.mCSB_scrollTools.mCSB_scrollTools_horizontal{width:auto;height:16px;top:auto;right:0;bottom:0;left:0}.mCustomScrollBox+.mCSB_scrollTools+.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCustomScrollBox+.mCSB_scrollTools.mCSB_scrollTools_horizontal{bottom:-26px}.mCSB_scrollTools.mCSB_scrollTools_horizontal a+.mCSB_draggerContainer{margin:0 20px}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:2px;margin:7px 0}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger{width:30px;height:100%;left:0}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{width:100%;height:4px;margin:6px auto}.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{height:12px;margin:2px auto}.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{height:8px;margin:4px 0}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft,.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{display:block;position:absolute;width:20px;height:100%;overflow:hidden;margin:0 auto;cursor:pointer}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft{left:0}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{right:0}.mCSB_container_wrapper{position:absolute;height:auto;width:auto;overflow:hidden;top:0;left:0;right:0;bottom:0;margin-right:30px;margin-bottom:30px}.mCSB_container_wrapper>.mCSB_container{padding-right:30px;padding-bottom:30px}.mCSB_vertical_horizontal>.mCSB_scrollTools.mCSB_scrollTools_vertical{bottom:20px}.mCSB_vertical_horizontal>.mCSB_scrollTools.mCSB_scrollTools_horizontal{right:20px}.mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden+.mCSB_scrollTools.mCSB_scrollTools_vertical{bottom:0}.mCS-dir-rtl>.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden+.mCSB_scrollTools~.mCSB_scrollTools.mCSB_scrollTools_horizontal{right:0}.mCS-dir-rtl>.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_scrollTools.mCSB_scrollTools_horizontal{left:20px}.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}.mCS-dir-rtl>.mCSB_inside>.mCSB_container_wrapper{margin-right:0;margin-left:30px}.mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden>.mCSB_container{padding-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden>.mCSB_container{padding-bottom:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden{margin-right:0;margin-left:0}.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden{margin-bottom:0}.mCSB_scrollTools,.mCSB_scrollTools .mCSB_buttonDown,.mCSB_scrollTools .mCSB_buttonLeft,.mCSB_scrollTools .mCSB_buttonRight,.mCSB_scrollTools .mCSB_buttonUp,.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{-webkit-transition:opacity .2s ease-in-out,background-color .2s ease-in-out;-moz-transition:opacity .2s ease-in-out,background-color .2s ease-in-out;-o-transition:opacity .2s ease-in-out,background-color .2s ease-in-out;transition:opacity .2s ease-in-out,background-color .2s ease-in-out}.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail,.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar,.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail,.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar{-webkit-transition:width .2s ease-out .2s,height .2s ease-out .2s,margin-left .2s ease-out .2s,margin-right .2s ease-out .2s,margin-top .2s ease-out .2s,margin-bottom .2s ease-out .2s,opacity .2s ease-in-out,background-color .2s ease-in-out;-moz-transition:width .2s ease-out .2s,height .2s ease-out .2s,margin-left .2s ease-out .2s,margin-right .2s ease-out .2s,margin-top .2s ease-out .2s,margin-bottom .2s ease-out .2s,opacity .2s ease-in-out,background-color .2s ease-in-out;-o-transition:width .2s ease-out .2s,height .2s ease-out .2s,margin-left .2s ease-out .2s,margin-right .2s ease-out .2s,margin-top .2s ease-out .2s,margin-bottom .2s ease-out .2s,opacity .2s ease-in-out,background-color .2s ease-in-out;transition:width .2s ease-out .2s,height .2s ease-out .2s,margin-left .2s ease-out .2s,margin-right .2s ease-out .2s,margin-top .2s ease-out .2s,margin-bottom .2s ease-out .2s,opacity .2s ease-in-out,background-color .2s ease-in-out}.mCSB_scrollTools{opacity:.75;filter:"alpha(opacity=75)";-ms-filter:"alpha(opacity=75)"}.mCS-autoHide>.mCustomScrollBox>.mCSB_scrollTools,.mCS-autoHide>.mCustomScrollBox~.mCSB_scrollTools{opacity:0;filter:"alpha(opacity=0)";-ms-filter:"alpha(opacity=0)"}.mCS-autoHide:hover>.mCustomScrollBox>.mCSB_scrollTools,.mCS-autoHide:hover>.mCustomScrollBox~.mCSB_scrollTools,.mCustomScrollBox:hover>.mCSB_scrollTools,.mCustomScrollBox:hover~.mCSB_scrollTools,.mCustomScrollbar>.mCustomScrollBox>.mCSB_scrollTools.mCSB_scrollTools_onDrag,.mCustomScrollbar>.mCustomScrollBox~.mCSB_scrollTools.mCSB_scrollTools_onDrag{opacity:1;filter:"alpha(opacity=100)";-ms-filter:"alpha(opacity=100)"}.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.4);filter:"alpha(opacity=40)";-ms-filter:"alpha(opacity=40)"}.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.75);filter:"alpha(opacity=75)";-ms-filter:"alpha(opacity=75)"}.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.85);filter:"alpha(opacity=85)";-ms-filter:"alpha(opacity=85)"}.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.9);filter:"alpha(opacity=90)";-ms-filter:"alpha(opacity=90)"}.mCSB_scrollTools .mCSB_buttonDown,.mCSB_scrollTools .mCSB_buttonLeft,.mCSB_scrollTools .mCSB_buttonRight,.mCSB_scrollTools .mCSB_buttonUp{background-image:url(mCSB_buttons.png);background-repeat:no-repeat;opacity:.4;filter:"alpha(opacity=40)";-ms-filter:"alpha(opacity=40)"}.mCSB_scrollTools .mCSB_buttonUp{background-position:0 0}.mCSB_scrollTools .mCSB_buttonDown{background-position:0 -20px}.mCSB_scrollTools .mCSB_buttonLeft{background-position:0 -40px}.mCSB_scrollTools .mCSB_buttonRight{background-position:0 -56px}.mCSB_scrollTools .mCSB_buttonDown:hover,.mCSB_scrollTools .mCSB_buttonLeft:hover,.mCSB_scrollTools .mCSB_buttonRight:hover,.mCSB_scrollTools .mCSB_buttonUp:hover{opacity:.75;filter:"alpha(opacity=75)";-ms-filter:"alpha(opacity=75)"}.mCSB_scrollTools .mCSB_buttonDown:active,.mCSB_scrollTools .mCSB_buttonLeft:active,.mCSB_scrollTools .mCSB_buttonRight:active,.mCSB_scrollTools .mCSB_buttonUp:active{opacity:.9;filter:"alpha(opacity=90)";-ms-filter:"alpha(opacity=90)"}.mCS-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.15)}.mCS-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:rgba(0,0,0,.85)}.mCS-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:rgba(0,0,0,.9)}.mCS-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-80px 0}.mCS-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-80px -20px}.mCS-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-80px -40px}.mCS-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-80px -56px}.mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail,.mCS-light-2.mCSB_scrollTools .mCSB_draggerRail{width:4px;background-color:#fff;background-color:rgba(255,255,255,.1);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-light-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:4px;background-color:#fff;background-color:rgba(255,255,255,.75);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-light-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-light-2.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:4px;margin:6px auto}.mCS-light-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.85)}.mCS-light-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-light-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.9)}.mCS-light-2.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px 0}.mCS-light-2.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -20px}.mCS-light-2.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -40px}.mCS-light-2.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -56px}.mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-dark-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-dark-2.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px 0}.mCS-dark-2.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -20px}.mCS-dark-2.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -40px}.mCS-dark-2.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -56px}.mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail,.mCS-light-thick.mCSB_scrollTools .mCSB_draggerRail{width:4px;background-color:#fff;background-color:rgba(255,255,255,.1);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-light-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:6px;background-color:#fff;background-color:rgba(255,255,255,.75);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:4px;margin:6px 0}.mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{width:100%;height:6px;margin:5px auto}.mCS-light-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.85)}.mCS-light-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-light-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.9)}.mCS-light-thick.mCSB_scrollTools .mCSB_buttonUp{background-position:-16px 0}.mCS-light-thick.mCSB_scrollTools .mCSB_buttonDown{background-position:-16px -20px}.mCS-light-thick.mCSB_scrollTools .mCSB_buttonLeft{background-position:-20px -40px}.mCS-light-thick.mCSB_scrollTools .mCSB_buttonRight{background-position:-20px -56px}.mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonUp{background-position:-96px 0}.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonDown{background-position:-96px -20px}.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonLeft{background-position:-100px -40px}.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonRight{background-position:-100px -56px}.mCS-light-thin.mCSB_scrollTools .mCSB_draggerRail{background-color:#fff;background-color:rgba(255,255,255,.1)}.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-light-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:2px}.mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%}.mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{width:100%;height:2px;margin:7px auto}.mCS-dark-thin.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.15)}.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonUp{background-position:-80px 0}.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonDown{background-position:-80px -20px}.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonLeft{background-position:-80px -40px}.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonRight{background-position:-80px -56px}.mCS-rounded.mCSB_scrollTools .mCSB_draggerRail{background-color:#fff;background-color:rgba(255,255,255,.15)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger,.mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger,.mCS-rounded.mCSB_scrollTools .mCSB_dragger{height:14px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:14px;margin:0 1px}.mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger{width:14px}.mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{height:14px;margin:1px 0}.mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{width:16px;height:16px;margin:-1px 0}.mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{width:4px}.mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{height:16px;width:16px;margin:0 -1px}.mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{height:4px;margin:6px 0}.mCS-rounded.mCSB_scrollTools .mCSB_buttonUp{background-position:0 -72px}.mCS-rounded.mCSB_scrollTools .mCSB_buttonDown{background-position:0 -92px}.mCS-rounded.mCSB_scrollTools .mCSB_buttonLeft{background-position:0 -112px}.mCS-rounded.mCSB_scrollTools .mCSB_buttonRight{background-position:0 -128px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.15)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-80px -72px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-80px -92px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-80px -112px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-80px -128px}.mCS-rounded-dots-dark.mCSB_scrollTools_vertical .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools_vertical .mCSB_draggerRail{width:4px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail{background-color:transparent;background-position:center}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAANElEQVQYV2NkIAAYiVbw//9/Y6DiM1ANJoyMjGdBbLgJQAX/kU0DKgDLkaQAvxW4HEvQFwCRcxIJK1XznAAAAABJRU5ErkJggg==);background-repeat:repeat-y;opacity:.3;filter:"alpha(opacity=30)";-ms-filter:"alpha(opacity=30)"}.mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail{height:4px;margin:6px 0;background-repeat:repeat-x}.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonUp{background-position:-16px -72px}.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonDown{background-position:-16px -92px}.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonLeft{background-position:-20px -112px}.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonRight{background-position:-20px -128px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYV2NkIAAYSVFgDFR8BqrBBEifBbGRTfiPZhpYjiQFBK3A6l6CvgAAE9kGCd1mvgEAAAAASUVORK5CYII=)}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-96px -72px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-96px -92px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-100px -112px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-100px -128px}.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-repeat:repeat-y;background-image:-moz-linear-gradient(left,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-webkit-gradient(linear,left top,right top,color-stop(0%,rgba(255,255,255,.5)),color-stop(100%,rgba(255,255,255,0)));background-image:-webkit-linear-gradient(left,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-o-linear-gradient(left,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-ms-linear-gradient(left,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:linear-gradient(to right,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%)}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{background-repeat:repeat-x;background-image:-moz-linear-gradient(top,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0%,rgba(255,255,255,.5)),color-stop(100%,rgba(255,255,255,0)));background-image:-webkit-linear-gradient(top,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-o-linear-gradient(top,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-ms-linear-gradient(top,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:linear-gradient(to bottom,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%)}.mCS-3d-dark.mCSB_scrollTools_vertical .mCSB_dragger,.mCS-3d.mCSB_scrollTools_vertical .mCSB_dragger{height:70px}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger{width:70px}.mCS-3d-dark.mCSB_scrollTools,.mCS-3d.mCSB_scrollTools{opacity:1;filter:"alpha(opacity=30)";-ms-filter:"alpha(opacity=30)"}.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_draggerRail{-webkit-border-radius:16px;-moz-border-radius:16px;border-radius:16px}.mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-3d.mCSB_scrollTools .mCSB_draggerRail{width:8px;background-color:#000;background-color:rgba(0,0,0,.2);box-shadow:inset 1px 0 1px rgba(0,0,0,.5),inset -1px 0 1px rgba(255,255,255,.2)}.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#555}.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:8px}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-3d.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:8px;margin:4px 0;box-shadow:inset 0 1px 1px rgba(0,0,0,.5),inset 0 -1px 1px rgba(255,255,255,.2)}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{width:100%;height:8px;margin:4px auto}.mCS-3d.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px -72px}.mCS-3d.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -92px}.mCS-3d.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -112px}.mCS-3d.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -128px}.mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1);box-shadow:inset 1px 0 1px rgba(0,0,0,.1)}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{box-shadow:inset 0 1px 1px rgba(0,0,0,.1)}.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px -72px}.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -92px}.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -112px}.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -128px}.mCS-3d-thick-dark.mCSB_scrollTools,.mCS-3d-thick.mCSB_scrollTools{opacity:1;filter:"alpha(opacity=30)";-ms-filter:"alpha(opacity=30)"}.mCS-3d-thick-dark.mCSB_scrollTools,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer,.mCS-3d-thick.mCSB_scrollTools,.mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer{-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.mCSB_inside+.mCS-3d-thick-dark.mCSB_scrollTools_vertical,.mCSB_inside+.mCS-3d-thick.mCSB_scrollTools_vertical{right:1px}.mCS-3d-thick-dark.mCSB_scrollTools_vertical,.mCS-3d-thick.mCSB_scrollTools_vertical{box-shadow:inset 1px 0 1px rgba(0,0,0,.1),inset 0 0 14px rgba(0,0,0,.5)}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal,.mCS-3d-thick.mCSB_scrollTools_horizontal{bottom:1px;box-shadow:inset 0 1px 1px rgba(0,0,0,.1),inset 0 0 14px rgba(0,0,0,.5)}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{box-shadow:inset 1px 0 0 rgba(255,255,255,.4);width:12px;margin:2px;position:absolute;height:auto;top:0;bottom:0;left:0;right:0}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{box-shadow:inset 0 1px 0 rgba(255,255,255,.4)}.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#555}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{height:12px;width:auto}.mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer{background-color:#000;background-color:rgba(0,0,0,.05);box-shadow:inset 1px 1px 16px rgba(0,0,0,.1)}.mCS-3d-thick.mCSB_scrollTools .mCSB_draggerRail{background-color:transparent}.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px -72px}.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -92px}.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -112px}.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -128px}.mCS-3d-thick-dark.mCSB_scrollTools{box-shadow:inset 0 0 14px rgba(0,0,0,.2)}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal{box-shadow:inset 0 1px 1px rgba(0,0,0,.1),inset 0 0 14px rgba(0,0,0,.2)}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{box-shadow:inset 1px 0 0 rgba(255,255,255,.4),inset -1px 0 0 rgba(0,0,0,.2)}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{box-shadow:inset 0 1px 0 rgba(255,255,255,.4),inset 0 -1px 0 rgba(0,0,0,.2)}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#777}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer{background-color:#fff;background-color:rgba(0,0,0,.05);box-shadow:inset 1px 1px 16px rgba(0,0,0,.1)}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:transparent}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px -72px}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -92px}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -112px}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -128px}.mCSB_outside+.mCS-minimal-dark.mCSB_scrollTools_vertical,.mCSB_outside+.mCS-minimal.mCSB_scrollTools_vertical{right:0;margin:12px 0}.mCustomScrollBox.mCS-minimal+.mCSB_scrollTools+.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCustomScrollBox.mCS-minimal+.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCustomScrollBox.mCS-minimal-dark+.mCSB_scrollTools+.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCustomScrollBox.mCS-minimal-dark+.mCSB_scrollTools.mCSB_scrollTools_horizontal{bottom:0;margin:0 12px}.mCS-dir-rtl>.mCSB_outside+.mCS-minimal-dark.mCSB_scrollTools_vertical,.mCS-dir-rtl>.mCSB_outside+.mCS-minimal.mCSB_scrollTools_vertical{left:0;right:auto}.mCS-minimal-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-minimal.mCSB_scrollTools .mCSB_draggerRail{background-color:transparent}.mCS-minimal-dark.mCSB_scrollTools_vertical .mCSB_dragger,.mCS-minimal.mCSB_scrollTools_vertical .mCSB_dragger{height:50px}.mCS-minimal-dark.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-minimal.mCSB_scrollTools_horizontal .mCSB_dragger{width:50px}.mCS-minimal.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.2);filter:"alpha(opacity=20)";-ms-filter:"alpha(opacity=20)"}.mCS-minimal.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-minimal.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.5);filter:"alpha(opacity=50)";-ms-filter:"alpha(opacity=50)"}.mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.2);filter:"alpha(opacity=20)";-ms-filter:"alpha(opacity=20)"}.mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.5);filter:"alpha(opacity=50)";-ms-filter:"alpha(opacity=50)"}.mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools .mCSB_draggerRail{width:6px;background-color:#000;background-color:rgba(0,0,0,.2)}.mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-light-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:6px}.mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-light-3.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:6px;margin:5px 0}.mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{width:12px}.mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{height:12px;margin:2px 0}.mCS-light-3.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px -72px}.mCS-light-3.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -92px}.mCS-light-3.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -112px}.mCS-light-3.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -128px}.mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-dark-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-dark-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1)}.mCS-dark-3.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px -72px}.mCS-dark-3.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -92px}.mCS-dark-3.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -112px}.mCS-dark-3.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -128px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset.mCSB_scrollTools .mCSB_draggerRail{width:12px;background-color:#000;background-color:rgba(0,0,0,.2)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:6px;margin:3px 5px;position:absolute;height:auto;top:0;bottom:0;left:0;right:0}.mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{height:6px;margin:5px 3px;position:absolute;width:auto;top:0;bottom:0;left:0;right:0}.mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:12px;margin:2px 0}.mCS-inset-2.mCSB_scrollTools .mCSB_buttonUp,.mCS-inset-3.mCSB_scrollTools .mCSB_buttonUp,.mCS-inset.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px -72px}.mCS-inset-2.mCSB_scrollTools .mCSB_buttonDown,.mCS-inset-3.mCSB_scrollTools .mCSB_buttonDown,.mCS-inset.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -92px}.mCS-inset-2.mCSB_scrollTools .mCSB_buttonLeft,.mCS-inset-3.mCSB_scrollTools .mCSB_buttonLeft,.mCS-inset.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -112px}.mCS-inset-2.mCSB_scrollTools .mCSB_buttonRight,.mCS-inset-3.mCSB_scrollTools .mCSB_buttonRight,.mCS-inset.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -128px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonUp,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonUp,.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px -72px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonDown,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonDown,.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -92px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonLeft,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonLeft,.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -112px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonRight,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonRight,.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -128px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail{background-color:transparent;border-width:1px;border-style:solid;border-color:#fff;border-color:rgba(255,255,255,.2);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail{border-color:#000;border-color:rgba(0,0,0,.2)}.mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail{background-color:#fff;background-color:rgba(255,255,255,.6)}.mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.6)}.mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-inset-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-inset-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.75)}.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.85)}.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.9)}
1
+ .mCustomScrollbar{-ms-touch-action:none;touch-action:none}.mCustomScrollbar.mCS_no_scrollbar{-ms-touch-action:auto;touch-action:auto}.mCustomScrollBox{position:relative;overflow:hidden;height:100%;max-width:100%;outline:0;direction:ltr}.mCSB_container{overflow:hidden;width:auto;height:auto}.mCSB_inside>.mCSB_container{margin-right:30px}.mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{margin-right:0}.mCS-dir-rtl>.mCSB_inside>.mCSB_container{margin-right:0;margin-left:30px}.mCS-dir-rtl>.mCSB_inside>.mCSB_container.mCS_no_scrollbar_y.mCS_y_hidden{margin-left:0}.mCSB_scrollTools{position:absolute;width:16px;height:auto;left:auto;top:0;right:0;bottom:0}.mCSB_outside+.mCSB_scrollTools{right:-26px}.mCS-dir-rtl>.mCSB_inside>.mCSB_scrollTools,.mCS-dir-rtl>.mCSB_outside+.mCSB_scrollTools{right:auto;left:0}.mCS-dir-rtl>.mCSB_outside+.mCSB_scrollTools{left:-26px}.mCSB_scrollTools .mCSB_draggerContainer{position:absolute;top:0;left:0;bottom:0;right:0;height:auto}.mCSB_scrollTools a+.mCSB_draggerContainer{margin:20px 0}.mCSB_scrollTools .mCSB_draggerRail{width:2px;height:100%;margin:0 auto;-webkit-border-radius:16px;-moz-border-radius:16px;border-radius:16px}.mCSB_scrollTools .mCSB_dragger{cursor:pointer;width:100%;height:30px;z-index:1}.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{position:relative;width:4px;height:100%;margin:0 auto;-webkit-border-radius:16px;-moz-border-radius:16px;border-radius:16px;text-align:center}.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{width:12px}.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{width:8px}.mCSB_scrollTools .mCSB_buttonDown,.mCSB_scrollTools .mCSB_buttonUp{display:block;position:absolute;height:20px;width:100%;overflow:hidden;margin:0 auto;cursor:pointer}.mCSB_scrollTools .mCSB_buttonDown{bottom:0}.mCSB_horizontal.mCSB_inside>.mCSB_container{margin-right:0;margin-bottom:30px}.mCSB_horizontal.mCSB_outside>.mCSB_container{min-height:100%}.mCSB_horizontal>.mCSB_container.mCS_no_scrollbar_x.mCS_x_hidden{margin-bottom:0}.mCSB_scrollTools.mCSB_scrollTools_horizontal{width:auto;height:16px;top:auto;right:0;bottom:0;left:0}.mCustomScrollBox+.mCSB_scrollTools+.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCustomScrollBox+.mCSB_scrollTools.mCSB_scrollTools_horizontal{bottom:-26px}.mCSB_scrollTools.mCSB_scrollTools_horizontal a+.mCSB_draggerContainer{margin:0 20px}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:2px;margin:7px 0}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger{width:30px;height:100%;left:0}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{width:100%;height:4px;margin:6px auto}.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{height:12px;margin:2px auto}.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{height:8px;margin:4px 0}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft,.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{display:block;position:absolute;width:20px;height:100%;overflow:hidden;margin:0 auto;cursor:pointer}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonLeft{left:0}.mCSB_scrollTools.mCSB_scrollTools_horizontal .mCSB_buttonRight{right:0}.mCSB_container_wrapper{position:absolute;height:auto;width:auto;overflow:hidden;top:0;left:0;right:0;bottom:0;margin-right:30px;margin-bottom:30px}.mCSB_container_wrapper>.mCSB_container{padding-right:30px;padding-bottom:30px}.mCSB_vertical_horizontal>.mCSB_scrollTools.mCSB_scrollTools_vertical{bottom:20px}.mCSB_vertical_horizontal>.mCSB_scrollTools.mCSB_scrollTools_horizontal{right:20px}.mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden+.mCSB_scrollTools.mCSB_scrollTools_vertical{bottom:0}.mCS-dir-rtl>.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden+.mCSB_scrollTools~.mCSB_scrollTools.mCSB_scrollTools_horizontal{right:0}.mCS-dir-rtl>.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_scrollTools.mCSB_scrollTools_horizontal{left:20px}.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}.mCS-dir-rtl>.mCSB_inside>.mCSB_container_wrapper{margin-right:0;margin-left:30px}.mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden>.mCSB_container{padding-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden>.mCSB_container{padding-bottom:10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_container_wrapper.mCS_no_scrollbar_y.mCS_y_hidden{margin-right:0;margin-left:0}.mCustomScrollBox.mCSB_vertical_horizontal.mCSB_inside>.mCSB_container_wrapper.mCS_no_scrollbar_x.mCS_x_hidden{margin-bottom:0}.mCSB_scrollTools,.mCSB_scrollTools .mCSB_buttonDown,.mCSB_scrollTools .mCSB_buttonLeft,.mCSB_scrollTools .mCSB_buttonRight,.mCSB_scrollTools .mCSB_buttonUp,.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{-webkit-transition:opacity .2s ease-in-out,background-color .2s ease-in-out;-moz-transition:opacity .2s ease-in-out,background-color .2s ease-in-out;-o-transition:opacity .2s ease-in-out,background-color .2s ease-in-out;transition:opacity .2s ease-in-out,background-color .2s ease-in-out}.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail,.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar,.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerRail,.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger_bar{-webkit-transition:width .2s ease-out .2s,height .2s ease-out .2s,margin-left .2s ease-out .2s,margin-right .2s ease-out .2s,margin-top .2s ease-out .2s,margin-bottom .2s ease-out .2s,opacity .2s ease-in-out,background-color .2s ease-in-out;-moz-transition:width .2s ease-out .2s,height .2s ease-out .2s,margin-left .2s ease-out .2s,margin-right .2s ease-out .2s,margin-top .2s ease-out .2s,margin-bottom .2s ease-out .2s,opacity .2s ease-in-out,background-color .2s ease-in-out;-o-transition:width .2s ease-out .2s,height .2s ease-out .2s,margin-left .2s ease-out .2s,margin-right .2s ease-out .2s,margin-top .2s ease-out .2s,margin-bottom .2s ease-out .2s,opacity .2s ease-in-out,background-color .2s ease-in-out;transition:width .2s ease-out .2s,height .2s ease-out .2s,margin-left .2s ease-out .2s,margin-right .2s ease-out .2s,margin-top .2s ease-out .2s,margin-bottom .2s ease-out .2s,opacity .2s ease-in-out,background-color .2s ease-in-out}.mCSB_scrollTools{opacity:.75;filter:"alpha(opacity=75)";-ms-filter:"alpha(opacity=75)"}.mCS-autoHide>.mCustomScrollBox>.mCSB_scrollTools,.mCS-autoHide>.mCustomScrollBox~.mCSB_scrollTools{opacity:0;filter:"alpha(opacity=0)";-ms-filter:"alpha(opacity=0)"}.mCS-autoHide:hover>.mCustomScrollBox>.mCSB_scrollTools,.mCS-autoHide:hover>.mCustomScrollBox~.mCSB_scrollTools,.mCustomScrollBox:hover>.mCSB_scrollTools,.mCustomScrollBox:hover~.mCSB_scrollTools,.mCustomScrollbar>.mCustomScrollBox>.mCSB_scrollTools.mCSB_scrollTools_onDrag,.mCustomScrollbar>.mCustomScrollBox~.mCSB_scrollTools.mCSB_scrollTools_onDrag{opacity:1;filter:"alpha(opacity=100)";-ms-filter:"alpha(opacity=100)"}.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.4);filter:"alpha(opacity=40)";-ms-filter:"alpha(opacity=40)"}.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.75);filter:"alpha(opacity=75)";-ms-filter:"alpha(opacity=75)"}.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.85);filter:"alpha(opacity=85)";-ms-filter:"alpha(opacity=85)"}.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.9);filter:"alpha(opacity=90)";-ms-filter:"alpha(opacity=90)"}.mCSB_scrollTools .mCSB_buttonDown,.mCSB_scrollTools .mCSB_buttonLeft,.mCSB_scrollTools .mCSB_buttonRight,.mCSB_scrollTools .mCSB_buttonUp{background-image:url(mCSB_buttons.png);background-repeat:no-repeat;opacity:.4;filter:"alpha(opacity=40)";-ms-filter:"alpha(opacity=40)"}.mCSB_scrollTools .mCSB_buttonUp{background-position:0 0}.mCSB_scrollTools .mCSB_buttonDown{background-position:0 -20px}.mCSB_scrollTools .mCSB_buttonLeft{background-position:0 -40px}.mCSB_scrollTools .mCSB_buttonRight{background-position:0 -56px}.mCSB_scrollTools .mCSB_buttonDown:hover,.mCSB_scrollTools .mCSB_buttonLeft:hover,.mCSB_scrollTools .mCSB_buttonRight:hover,.mCSB_scrollTools .mCSB_buttonUp:hover{opacity:.75;filter:"alpha(opacity=75)";-ms-filter:"alpha(opacity=75)"}.mCSB_scrollTools .mCSB_buttonDown:active,.mCSB_scrollTools .mCSB_buttonLeft:active,.mCSB_scrollTools .mCSB_buttonRight:active,.mCSB_scrollTools .mCSB_buttonUp:active{opacity:.9;filter:"alpha(opacity=90)";-ms-filter:"alpha(opacity=90)"}.mCS-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.15)}.mCS-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:rgba(0,0,0,.85)}.mCS-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:rgba(0,0,0,.9)}.mCS-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-80px 0}.mCS-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-80px -20px}.mCS-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-80px -40px}.mCS-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-80px -56px}.mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail,.mCS-light-2.mCSB_scrollTools .mCSB_draggerRail{width:4px;background-color:#fff;background-color:rgba(255,255,255,.1);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-light-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:4px;background-color:#fff;background-color:rgba(255,255,255,.75);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-dark-2.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-light-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-light-2.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:4px;margin:6px auto}.mCS-light-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.85)}.mCS-light-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-light-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.9)}.mCS-light-2.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px 0}.mCS-light-2.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -20px}.mCS-light-2.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -40px}.mCS-light-2.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -56px}.mCS-dark-2.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75);-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}.mCS-dark-2.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-dark-2.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark-2.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-dark-2.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px 0}.mCS-dark-2.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -20px}.mCS-dark-2.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -40px}.mCS-dark-2.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -56px}.mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail,.mCS-light-thick.mCSB_scrollTools .mCSB_draggerRail{width:4px;background-color:#fff;background-color:rgba(255,255,255,.1);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-light-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:6px;background-color:#fff;background-color:rgba(255,255,255,.75);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:4px;margin:6px 0}.mCS-dark-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-light-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{width:100%;height:6px;margin:5px auto}.mCS-light-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.85)}.mCS-light-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-light-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.9)}.mCS-light-thick.mCSB_scrollTools .mCSB_buttonUp{background-position:-16px 0}.mCS-light-thick.mCSB_scrollTools .mCSB_buttonDown{background-position:-16px -20px}.mCS-light-thick.mCSB_scrollTools .mCSB_buttonLeft{background-position:-20px -40px}.mCS-light-thick.mCSB_scrollTools .mCSB_buttonRight{background-position:-20px -56px}.mCS-dark-thick.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75);-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonUp{background-position:-96px 0}.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonDown{background-position:-96px -20px}.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonLeft{background-position:-100px -40px}.mCS-dark-thick.mCSB_scrollTools .mCSB_buttonRight{background-position:-100px -56px}.mCS-light-thin.mCSB_scrollTools .mCSB_draggerRail{background-color:#fff;background-color:rgba(255,255,255,.1)}.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-light-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:2px}.mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%}.mCS-dark-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-light-thin.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{width:100%;height:2px;margin:7px auto}.mCS-dark-thin.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.15)}.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark-thin.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonUp{background-position:-80px 0}.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonDown{background-position:-80px -20px}.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonLeft{background-position:-80px -40px}.mCS-dark-thin.mCSB_scrollTools .mCSB_buttonRight{background-position:-80px -56px}.mCS-rounded.mCSB_scrollTools .mCSB_draggerRail{background-color:#fff;background-color:rgba(255,255,255,.15)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger,.mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger,.mCS-rounded.mCSB_scrollTools .mCSB_dragger{height:14px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:14px;margin:0 1px}.mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger{width:14px}.mCS-rounded-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{height:14px;margin:1px 0}.mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{width:16px;height:16px;margin:-1px 0}.mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-rounded-dark.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-rounded.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{width:4px}.mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded .mCSB_dragger_bar,.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_dragger .mCSB_dragger_bar{height:16px;width:16px;margin:0 -1px}.mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-rounded-dark.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-rounded.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{height:4px;margin:6px 0}.mCS-rounded.mCSB_scrollTools .mCSB_buttonUp{background-position:0 -72px}.mCS-rounded.mCSB_scrollTools .mCSB_buttonDown{background-position:0 -92px}.mCS-rounded.mCSB_scrollTools .mCSB_buttonLeft{background-position:0 -112px}.mCS-rounded.mCSB_scrollTools .mCSB_buttonRight{background-position:0 -128px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.15)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-rounded-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-80px -72px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-80px -92px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-80px -112px}.mCS-rounded-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-80px -128px}.mCS-rounded-dots-dark.mCSB_scrollTools_vertical .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools_vertical .mCSB_draggerRail{width:4px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail{background-color:transparent;background-position:center}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools .mCSB_draggerRail{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAANElEQVQYV2NkIAAYiVbw//9/Y6DiM1ANJoyMjGdBbLgJQAX/kU0DKgDLkaQAvxW4HEvQFwCRcxIJK1XznAAAAABJRU5ErkJggg==);background-repeat:repeat-y;opacity:.3;filter:"alpha(opacity=30)";-ms-filter:"alpha(opacity=30)"}.mCS-rounded-dots-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-rounded-dots.mCSB_scrollTools_horizontal .mCSB_draggerRail{height:4px;margin:6px 0;background-repeat:repeat-x}.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonUp{background-position:-16px -72px}.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonDown{background-position:-16px -92px}.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonLeft{background-position:-20px -112px}.mCS-rounded-dots.mCSB_scrollTools .mCSB_buttonRight{background-position:-20px -128px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_draggerRail{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYV2NkIAAYSVFgDFR8BqrBBEifBbGRTfiPZhpYjiQFBK3A6l6CvgAAE9kGCd1mvgEAAAAASUVORK5CYII=)}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-96px -72px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-96px -92px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-100px -112px}.mCS-rounded-dots-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-100px -128px}.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-repeat:repeat-y;background-image:-moz-linear-gradient(left,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-webkit-gradient(linear,left top,right top,color-stop(0%,rgba(255,255,255,.5)),color-stop(100%,rgba(255,255,255,0)));background-image:-webkit-linear-gradient(left,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-o-linear-gradient(left,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-ms-linear-gradient(left,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:linear-gradient(to right,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%)}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{background-repeat:repeat-x;background-image:-moz-linear-gradient(top,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0%,rgba(255,255,255,.5)),color-stop(100%,rgba(255,255,255,0)));background-image:-webkit-linear-gradient(top,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-o-linear-gradient(top,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:-ms-linear-gradient(top,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%);background-image:linear-gradient(to bottom,rgba(255,255,255,.5)0,rgba(255,255,255,0)100%)}.mCS-3d-dark.mCSB_scrollTools_vertical .mCSB_dragger,.mCS-3d.mCSB_scrollTools_vertical .mCSB_dragger{height:70px}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger{width:70px}.mCS-3d-dark.mCSB_scrollTools,.mCS-3d.mCSB_scrollTools{opacity:1;filter:"alpha(opacity=30)";-ms-filter:"alpha(opacity=30)"}.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_draggerRail{-webkit-border-radius:16px;-moz-border-radius:16px;border-radius:16px}.mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-3d.mCSB_scrollTools .mCSB_draggerRail{width:8px;background-color:#000;background-color:rgba(0,0,0,.2);box-shadow:inset 1px 0 1px rgba(0,0,0,.5),inset -1px 0 1px rgba(255,255,255,.2)}.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#555}.mCS-3d-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:8px}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-3d.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:8px;margin:4px 0;box-shadow:inset 0 1px 1px rgba(0,0,0,.5),inset 0 -1px 1px rgba(255,255,255,.2)}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{width:100%;height:8px;margin:4px auto}.mCS-3d.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px -72px}.mCS-3d.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -92px}.mCS-3d.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -112px}.mCS-3d.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -128px}.mCS-3d-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1);box-shadow:inset 1px 0 1px rgba(0,0,0,.1)}.mCS-3d-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail{box-shadow:inset 0 1px 1px rgba(0,0,0,.1)}.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px -72px}.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -92px}.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -112px}.mCS-3d-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -128px}.mCS-3d-thick-dark.mCSB_scrollTools,.mCS-3d-thick.mCSB_scrollTools{opacity:1;filter:"alpha(opacity=30)";-ms-filter:"alpha(opacity=30)"}.mCS-3d-thick-dark.mCSB_scrollTools,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer,.mCS-3d-thick.mCSB_scrollTools,.mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer{-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.mCSB_inside+.mCS-3d-thick-dark.mCSB_scrollTools_vertical,.mCSB_inside+.mCS-3d-thick.mCSB_scrollTools_vertical{right:1px}.mCS-3d-thick-dark.mCSB_scrollTools_vertical,.mCS-3d-thick.mCSB_scrollTools_vertical{box-shadow:inset 1px 0 1px rgba(0,0,0,.1),inset 0 0 14px rgba(0,0,0,.5)}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal,.mCS-3d-thick.mCSB_scrollTools_horizontal{bottom:1px;box-shadow:inset 0 1px 1px rgba(0,0,0,.1),inset 0 0 14px rgba(0,0,0,.5)}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{box-shadow:inset 1px 0 0 rgba(255,255,255,.4);width:12px;margin:2px;position:absolute;height:auto;top:0;bottom:0;left:0;right:0}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{box-shadow:inset 0 1px 0 rgba(255,255,255,.4)}.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#555}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{height:12px;width:auto}.mCS-3d-thick.mCSB_scrollTools .mCSB_draggerContainer{background-color:#000;background-color:rgba(0,0,0,.05);box-shadow:inset 1px 1px 16px rgba(0,0,0,.1)}.mCS-3d-thick.mCSB_scrollTools .mCSB_draggerRail{background-color:transparent}.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px -72px}.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -92px}.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -112px}.mCS-3d-thick.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -128px}.mCS-3d-thick-dark.mCSB_scrollTools{box-shadow:inset 0 0 14px rgba(0,0,0,.2)}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal{box-shadow:inset 0 1px 1px rgba(0,0,0,.1),inset 0 0 14px rgba(0,0,0,.2)}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{box-shadow:inset 1px 0 0 rgba(255,255,255,.4),inset -1px 0 0 rgba(0,0,0,.2)}.mCS-3d-thick-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{box-shadow:inset 0 1px 0 rgba(255,255,255,.4),inset 0 -1px 0 rgba(0,0,0,.2)}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#777}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerContainer{background-color:#fff;background-color:rgba(0,0,0,.05);box-shadow:inset 1px 1px 16px rgba(0,0,0,.1)}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:transparent}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px -72px}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -92px}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -112px}.mCS-3d-thick-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -128px}.mCSB_outside+.mCS-minimal-dark.mCSB_scrollTools_vertical,.mCSB_outside+.mCS-minimal.mCSB_scrollTools_vertical{right:0;margin:12px 0}.mCustomScrollBox.mCS-minimal+.mCSB_scrollTools+.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCustomScrollBox.mCS-minimal+.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCustomScrollBox.mCS-minimal-dark+.mCSB_scrollTools+.mCSB_scrollTools.mCSB_scrollTools_horizontal,.mCustomScrollBox.mCS-minimal-dark+.mCSB_scrollTools.mCSB_scrollTools_horizontal{bottom:0;margin:0 12px}.mCS-dir-rtl>.mCSB_outside+.mCS-minimal-dark.mCSB_scrollTools_vertical,.mCS-dir-rtl>.mCSB_outside+.mCS-minimal.mCSB_scrollTools_vertical{left:0;right:auto}.mCS-minimal-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-minimal.mCSB_scrollTools .mCSB_draggerRail{background-color:transparent}.mCS-minimal-dark.mCSB_scrollTools_vertical .mCSB_dragger,.mCS-minimal.mCSB_scrollTools_vertical .mCSB_dragger{height:50px}.mCS-minimal-dark.mCSB_scrollTools_horizontal .mCSB_dragger,.mCS-minimal.mCSB_scrollTools_horizontal .mCSB_dragger{width:50px}.mCS-minimal.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.2);filter:"alpha(opacity=20)";-ms-filter:"alpha(opacity=20)"}.mCS-minimal.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-minimal.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.5);filter:"alpha(opacity=50)";-ms-filter:"alpha(opacity=50)"}.mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.2);filter:"alpha(opacity=20)";-ms-filter:"alpha(opacity=20)"}.mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-minimal-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.5);filter:"alpha(opacity=50)";-ms-filter:"alpha(opacity=50)"}.mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools .mCSB_draggerRail{width:6px;background-color:#000;background-color:rgba(0,0,0,.2)}.mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-light-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:6px}.mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-dark-3.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-light-3.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:6px;margin:5px 0}.mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-dark-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_vertical.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{width:12px}.mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-dark-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_dragger.mCSB_dragger_onDrag_expanded+.mCSB_draggerRail,.mCS-light-3.mCSB_scrollTools_horizontal.mCSB_scrollTools_onDrag_expand .mCSB_draggerContainer:hover .mCSB_draggerRail{height:12px;margin:2px 0}.mCS-light-3.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px -72px}.mCS-light-3.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -92px}.mCS-light-3.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -112px}.mCS-light-3.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -128px}.mCS-dark-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-dark-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-dark-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-dark-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-dark-3.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1)}.mCS-dark-3.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px -72px}.mCS-dark-3.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -92px}.mCS-dark-3.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -112px}.mCS-dark-3.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -128px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset.mCSB_scrollTools .mCSB_draggerRail{width:12px;background-color:#000;background-color:rgba(0,0,0,.2)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-2.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{width:6px;margin:3px 5px;position:absolute;height:auto;top:0;bottom:0;left:0;right:0}.mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar,.mCS-inset.mCSB_scrollTools_horizontal .mCSB_dragger .mCSB_dragger_bar{height:6px;margin:5px 3px;position:absolute;width:auto;top:0;bottom:0;left:0;right:0}.mCS-inset-2-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset-2.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset-3-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset-3.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset-dark.mCSB_scrollTools_horizontal .mCSB_draggerRail,.mCS-inset.mCSB_scrollTools_horizontal .mCSB_draggerRail{width:100%;height:12px;margin:2px 0}.mCS-inset-2.mCSB_scrollTools .mCSB_buttonUp,.mCS-inset-3.mCSB_scrollTools .mCSB_buttonUp,.mCS-inset.mCSB_scrollTools .mCSB_buttonUp{background-position:-32px -72px}.mCS-inset-2.mCSB_scrollTools .mCSB_buttonDown,.mCS-inset-3.mCSB_scrollTools .mCSB_buttonDown,.mCS-inset.mCSB_scrollTools .mCSB_buttonDown{background-position:-32px -92px}.mCS-inset-2.mCSB_scrollTools .mCSB_buttonLeft,.mCS-inset-3.mCSB_scrollTools .mCSB_buttonLeft,.mCS-inset.mCSB_scrollTools .mCSB_buttonLeft{background-position:-40px -112px}.mCS-inset-2.mCSB_scrollTools .mCSB_buttonRight,.mCS-inset-3.mCSB_scrollTools .mCSB_buttonRight,.mCS-inset.mCSB_scrollTools .mCSB_buttonRight{background-position:-40px -128px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-2-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.1)}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonUp,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonUp,.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonUp{background-position:-112px -72px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonDown,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonDown,.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonDown{background-position:-112px -92px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonLeft,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonLeft,.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonLeft{background-position:-120px -112px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_buttonRight,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_buttonRight,.mCS-inset-dark.mCSB_scrollTools .mCSB_buttonRight{background-position:-120px -128px}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail,.mCS-inset-2.mCSB_scrollTools .mCSB_draggerRail{background-color:transparent;border-width:1px;border-style:solid;border-color:#fff;border-color:rgba(255,255,255,.2);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mCS-inset-2-dark.mCSB_scrollTools .mCSB_draggerRail{border-color:#000;border-color:rgba(0,0,0,.2)}.mCS-inset-3.mCSB_scrollTools .mCSB_draggerRail{background-color:#fff;background-color:rgba(255,255,255,.6)}.mCS-inset-3-dark.mCSB_scrollTools .mCSB_draggerRail{background-color:#000;background-color:rgba(0,0,0,.6)}.mCS-inset-3.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.75)}.mCS-inset-3.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.85)}.mCS-inset-3.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-3.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#000;background-color:rgba(0,0,0,.9)}.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.75)}.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:hover .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.85)}.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger.mCSB_dragger_onDrag .mCSB_dragger_bar,.mCS-inset-3-dark.mCSB_scrollTools .mCSB_dragger:active .mCSB_dragger_bar{background-color:#fff;background-color:rgba(255,255,255,.9)}
css/widget.css CHANGED
@@ -1 +1,220 @@
1
- ul.products{position:relative;min-height:500px}ul.products.hide_products li{visibility:hidden;height:20px}.berocket_aapf_widget input[type=checkbox]{position:absolute;left:-9999px}.berocket_aapf_widget input[type=checkbox]+label:before{content:"";display:inline-block;width:14px;height:14px;background:url(../images/sprite.png) no-repeat;cursor:pointer}.berocket_aapf_widget input[type=checkbox]:checked+label:before{background-position:-14px 0}.berocket_aapf_widget input[type=radio]{position:absolute;left:-9999px}.berocket_aapf_widget input[type=radio]+label:before{content:"";display:inline-block;width:14px;height:14px;background:url(../images/sprite_radio.png) no-repeat}.berocket_aapf_widget input[type=radio]:checked+label:before{background-position:-14px 0}.berocket_aapf_widget-title{margin-bottom:5px;font-size:14px}ul.berocket_aapf_widget{margin-bottom:30px}ul.berocket_aapf_widget li{list-style-type:none;padding-left:0}ul.berocket_aapf_widget li>span{display:block;cursor:pointer;height:20px}ul.berocket_aapf_widget li>span:hover{color:#000}.berocket_aapf_widget_loading{position:absolute;top:0;left:0;right:0;bottom:0;background:url(../images/ajax-loader.gif) center center no-repeat #fff;z-index:10000}.no-products{font-size:26px;font-weight:700;line-height:6em;text-align:center}span.product-size{color:#777;display:block;text-align:center}.berocket_aapf_widget li.slider span.left,.berocket_aapf_widget li.slider span.right{height:40px;float:left;font-size:12px}.berocket_aapf_widget li.slider span.left input,.berocket_aapf_widget li.slider span.right input{border:1px solid #E8E8E8;font-size:13px;font-style:italic;padding:4px 9px;text-align:right;width:40px;background:#fff}.berocket_aapf_widget li.slider{width:80%}.berocket_aapf_widget li.slider span.right{float:right}.berocket_aapf_widget li.slider span.slide{clear:both;height:auto}.berocket_filter_price_slider.ui-widget-content,.berocket_filter_slider.ui-widget-content{background:#b0b5b9;border:0;border-radius:0;height:4px;padding:0}.berocket_filter_price_slider.ui-widget-content .ui-slider-range,.berocket_filter_slider.ui-widget-content .ui-slider-range{background:#000}.berocket_filter_price_slider.ui-widget-content .ui-slider-handle,.berocket_filter_slider.ui-widget-content .ui-slider-handle{background:url(../images/handler.png) center center/cover no-repeat;width:12px;height:12px;border:0;top:-4px}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:pointer;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ul.products{
2
+ position: relative;
3
+ min-height: 500px;
4
+ }
5
+
6
+ ul.products.hide_products li{
7
+ visibility: hidden;
8
+ height: 20px;
9
+ }
10
+
11
+ .berocket_aapf_widget input[type="checkbox"] {
12
+ position: absolute;
13
+ left: -9999px;
14
+ }
15
+
16
+ .berocket_aapf_widget input[type="checkbox"] + label:before {
17
+ content: "";
18
+ display: inline-block;
19
+ width: 14px;
20
+ height: 14px;
21
+ background: url('../images/sprite.png') no-repeat;
22
+ cursor: pointer;
23
+ }
24
+
25
+ .berocket_aapf_widget input[type="checkbox"]:checked + label:before {
26
+ background-position: -14px 0;
27
+ }
28
+
29
+ .berocket_aapf_widget input[type="radio"] {
30
+ position: absolute;
31
+ left: -9999px;
32
+ }
33
+
34
+ .berocket_aapf_widget input[type="radio"] + label:before {
35
+ content: "";
36
+ display: inline-block;
37
+ width: 14px;
38
+ height: 14px;
39
+ background: url('../images/sprite_radio.png') no-repeat;
40
+ }
41
+
42
+ .berocket_aapf_widget input[type="radio"]:checked + label:before {
43
+ background-position: -14px 0;
44
+ }
45
+
46
+ .berocket_aapf_widget-title{
47
+ margin-bottom: 5px;
48
+ font-size: 14px;
49
+ }
50
+
51
+ ul.berocket_aapf_widget{
52
+ margin-bottom: 30px;
53
+ }
54
+
55
+ ul.berocket_aapf_widget li{
56
+ list-style-type: none;
57
+ padding-left: 0;
58
+ }
59
+
60
+ ul.berocket_aapf_widget li > span{
61
+ display: block;
62
+ cursor: pointer;
63
+ height: 20px;
64
+ }
65
+
66
+ ul.berocket_aapf_widget li > span:hover{
67
+ color: #000000;
68
+ }
69
+
70
+ .berocket_aapf_widget_loading {
71
+ position: absolute;
72
+ top: 0;
73
+ left: 0;
74
+ right: 0;
75
+ bottom: 0;
76
+ background: white url('../images/ajax-loader.gif') no-repeat center center;
77
+ z-index: 10000;
78
+ }
79
+ .berocket_aapf_widget_loading.transparent {
80
+ background-color: transparent;
81
+ }
82
+
83
+ .no-products{
84
+ font-size: 26px;
85
+ font-weight: bold;
86
+ line-height: 6em;
87
+ text-align: center;
88
+ }
89
+
90
+ span.product-size{
91
+ color: #777;
92
+ display: block;
93
+ text-align: center;
94
+ }
95
+
96
+ .berocket_aapf_widget li.slider span.left, .berocket_aapf_widget li.slider span.right{
97
+ height: 40px;
98
+ float: left;
99
+ font-size: 12px;
100
+ max-width: 50%;
101
+ text-align: left;
102
+ }
103
+
104
+ .berocket_aapf_widget li.slider span.left input, .berocket_aapf_widget li.slider span.right input{
105
+ border: 1px solid #E8E8E8;
106
+ font-size: 13px;
107
+ font-style: italic;
108
+ padding: 4px 9px;
109
+ text-align: right;
110
+ width: 60px;
111
+ background: white;
112
+ line-height: 1.1em;
113
+ }
114
+
115
+ .berocket_aapf_widget li.slider{
116
+ width: 80%;
117
+ }
118
+
119
+ .berocket_aapf_widget li.slider span.right{
120
+ float: right;
121
+ text-align: right;
122
+ }
123
+
124
+ .berocket_aapf_widget li.slider span.slide{
125
+ clear: both;
126
+ height: auto;
127
+ text-align: right;
128
+ }
129
+
130
+ .berocket_filter_slider.ui-widget-content, .berocket_filter_price_slider.ui-widget-content{
131
+ background: none repeat scroll 0 0 #b0b5b9;
132
+ border: 0 none;
133
+ border-radius: 0;
134
+ height: 4px;
135
+ padding: 0;
136
+ }
137
+
138
+ .berocket_filter_slider.ui-widget-content .ui-slider-range, .berocket_filter_price_slider.ui-widget-content .ui-slider-range{
139
+ background: none repeat scroll 0 0 #000000;
140
+ }
141
+
142
+ .berocket_filter_slider.ui-widget-content .ui-slider-handle, .berocket_filter_price_slider.ui-widget-content .ui-slider-handle{
143
+ background: url("../images/handler.png") no-repeat scroll center center / cover transparent;
144
+ width: 12px;
145
+ height: 12px;
146
+ border: 0;
147
+ top: -4px;
148
+ }
149
+
150
+ .berocket_aapf_widget li.slider span.slide{
151
+ clear: both;
152
+ height: auto;
153
+ }
154
+
155
+ .ui-slider {
156
+ position: relative;
157
+ text-align: left;
158
+ }
159
+ .ui-slider .ui-slider-handle {
160
+ position: absolute;
161
+ z-index: 2;
162
+ width: 1.2em;
163
+ height: 1.2em;
164
+ cursor: pointer;
165
+ -ms-touch-action: none;
166
+ touch-action: none;
167
+ }
168
+ .ui-slider .ui-slider-range {
169
+ position: absolute;
170
+ z-index: 1;
171
+ font-size: .7em;
172
+ display: block;
173
+ border: 0;
174
+ background-position: 0 0;
175
+ }
176
+ .ui-slider.ui-state-disabled .ui-slider-handle,
177
+ .ui-slider.ui-state-disabled .ui-slider-range {
178
+ filter: inherit;
179
+ }
180
+
181
+ .ui-slider-horizontal {
182
+ height: .8em;
183
+ }
184
+ .ui-slider-horizontal .ui-slider-handle {
185
+ top: -.3em;
186
+ margin-left: -.6em;
187
+ }
188
+ .berocket_filter_slider > a:last-child {
189
+ margin-left: -12px;
190
+ }
191
+ .ui-slider-horizontal .ui-slider-range {
192
+ top: 0;
193
+ height: 100%;
194
+ }
195
+ .ui-slider-horizontal .ui-slider-range-min {
196
+ left: 0;
197
+ }
198
+ .ui-slider-horizontal .ui-slider-range-max {
199
+ right: 0;
200
+ }
201
+
202
+ .ui-slider-vertical {
203
+ width: .8em;
204
+ height: 100px;
205
+ }
206
+ .ui-slider-vertical .ui-slider-handle {
207
+ left: -.3em;
208
+ margin-left: 0;
209
+ margin-bottom: -.6em;
210
+ }
211
+ .ui-slider-vertical .ui-slider-range {
212
+ left: 0;
213
+ width: 100%;
214
+ }
215
+ .ui-slider-vertical .ui-slider-range-min {
216
+ bottom: 0;
217
+ }
218
+ .ui-slider-vertical .ui-slider-range-max {
219
+ top: 0;
220
+ }
images/paid/custom_css.png ADDED
Binary file
images/paid/styler.png ADDED
Binary file
includes/functions.php CHANGED
@@ -10,8 +10,8 @@ if( ! function_exists( 'br_get_template_part' ) ){
10
  * @return void
11
  */
12
  function br_get_template_part( $name = '' ){
13
- BeRocket_AAPF::br_get_template_part( $name );
14
- }
15
  }
16
 
17
  if( ! function_exists( 'br_aapf_get_attributes' ) ) {
@@ -21,17 +21,17 @@ if( ! function_exists( 'br_aapf_get_attributes' ) ) {
21
  * @return mixed|void
22
  */
23
  function br_aapf_get_attributes() {
24
- $attribute_taxonomies = wc_get_attribute_taxonomies();
25
- $attributes = array();
26
 
27
- if ( $attribute_taxonomies ) {
28
- foreach ( $attribute_taxonomies as $tax ) {
29
- $attributes[ wc_attribute_taxonomy_name( $tax->attribute_name ) ] = $tax->attribute_label;
30
- }
31
- }
32
 
33
- return apply_filters( 'berocket_aapf_get_attributes', $attributes );
34
- }
35
  }
36
 
37
  if( ! function_exists( 'br_parse_order_by' ) ){
@@ -41,53 +41,53 @@ if( ! function_exists( 'br_parse_order_by' ) ){
41
  * @param $args
42
  */
43
  function br_aapf_parse_order_by( &$args ){
44
- $orderby = $_GET['orderby'] = $_POST['orderby'];
45
- $order = "ASK";
46
- if( @ preg_match( "/-/", $orderby ) ){
47
- list( $orderby, $order ) = explode( "-", $orderby );
48
- }
49
 
50
  // needed for woocommerce sorting funtionality
51
  if( @ $orderby and @ $order ) {
52
 
53
- // Get ordering from query string unless defined
54
- $orderby = strtolower( $orderby );
55
- $order = strtoupper( $order );
56
-
57
- // default - menu_order
58
- $args['orderby'] = 'menu_order title';
59
- $args['order'] = $order == 'DESC' ? 'DESC' : 'ASC';
60
-
61
- switch ( $orderby ) {
62
- case 'rand' :
63
- $args['orderby'] = 'rand';
64
- break;
65
- case 'date' :
66
- $args['orderby'] = 'date';
67
- $args['order'] = $order == 'ASC' ? 'ASC' : 'DESC';
68
- break;
69
- case 'price' :
70
- $args['orderby'] = 'meta_value_num';
71
- $args['order'] = $order == 'DESC' ? 'DESC' : 'ASC';
72
- $args['meta_key'] = '_price';
73
- break;
74
- case 'popularity' :
75
- $args['meta_key'] = 'total_sales';
76
-
77
- // Sorting handled later though a hook
78
- add_filter( 'posts_clauses', array( 'WC_Query', 'order_by_popularity_post_clauses' ) );
79
- break;
80
- case 'rating' :
81
- // Sorting handled later though a hook
82
- add_filter( 'posts_clauses', array( 'WC_Query', 'order_by_rating_post_clauses' ) );
83
- break;
84
- case 'title' :
85
- $args['orderby'] = 'title';
86
- $args['order'] = $order == 'DESC' ? 'DESC' : 'ASC';
87
- break;
88
- }
89
- }
90
- }
91
  }
92
 
93
  if( ! function_exists( 'br_aapf_args_parser' ) ){
@@ -99,68 +99,68 @@ if( ! function_exists( 'br_aapf_args_parser' ) ){
99
  * @return array
100
  */
101
  function br_aapf_args_parser( $args = array() ) {
102
- $attributes_terms = $tax_query = array();
103
- $attributes = apply_filters( 'berocket_aapf_listener_get_attributes', br_aapf_get_attributes() );
104
-
105
- if ( @$attributes ) {
106
- foreach ( $attributes as $k => $v ) {
107
- $terms = get_terms( array( $k ), $args = array( 'orderby' => 'name', 'order' => 'ASC' ) );
108
- if ( $terms ) {
109
- foreach ( $terms as $term ) {
110
- $attributes_terms[ $k ][ $term->term_id ] = $term->slug;
111
- }
112
- }
113
- }
114
- }
115
-
116
- if ( @$_POST['terms'] ) {
117
- foreach ( $_POST['terms'] as $t ) {
118
- $taxonomies[ $t[0] ][] = $attributes_terms[ $t[0] ][ $t[1] ];
119
- $taxonomies_operator[ $t[0] ] = $t[2];
120
- }
121
- }
122
-
123
- $taxonomies = apply_filters( 'berocket_aapf_listener_taxonomies', @$taxonomies );
124
- $taxonomies_operator = apply_filters( 'berocket_aapf_listener_taxonomies_operator', @$taxonomies_operator );
125
-
126
- if ( @$taxonomies ) {
127
- $tax_query['relation'] = 'AND';
128
- if ( $taxonomies ) {
129
- foreach ( $taxonomies as $k => $v ) {
130
- if ( $taxonomies_operator[ $k ] == 'AND' ) {
131
- $op = 'AND';
132
- } else {
133
- $op = 'IN';
134
- }
135
-
136
- $tax_query[] = array(
137
- 'taxonomy' => $k,
138
- 'field' => 'slug',
139
- 'terms' => $v,
140
- 'operator' => $op
141
- );
142
- }
143
- }
144
- }
145
-
146
- if ( @$_POST['product_cat'] and $_POST['product_cat'] != '-1' ) {
147
- $tax_query[] = array(
148
- 'taxonomy' => 'product_cat',
149
- 'field' => 'slug',
150
- 'terms' => strip_tags( $_POST['product_cat'] ),
151
- 'operator' => 'IN'
152
- );
153
- }
154
-
155
- $args['tax_query'] = $tax_query;
156
- $args['post_type'] = 'product';
157
-
158
- if ( @ $_POST['orderby'] ) {
159
- br_aapf_parse_order_by( $args );
160
- }
161
-
162
- return $args;
163
- }
164
  }
165
 
166
  if( ! function_exists( 'br_aapf_args_converter' ) ) {
@@ -169,10 +169,10 @@ if( ! function_exists( 'br_aapf_args_converter' ) ) {
169
  */
170
  function br_aapf_args_converter() {
171
  if ( preg_match( "~\|~", $_GET['filters'] ) ) {
172
- $filters = explode( "|", $_GET['filters'] );
173
- } else {
174
- $filters[0] = $_GET['filters'];
175
- }
176
 
177
  foreach ( $filters as $filter ) {
178
 
@@ -192,11 +192,11 @@ if( ! function_exists( 'br_aapf_args_converter' ) ) {
192
  list( $attribute, $value ) = explode( "-", $filter, 2 );
193
  }
194
 
195
- if ( $attribute == 'price' ) {
196
- $_POST['price'] = array( $min, $max );
197
- } elseif ( $attribute == 'order' ) {
198
- $_GET['orderby'] = $value;
199
- } else {
200
  if ( $operator ) {
201
  foreach ( $value as $v ) {
202
  $_POST['terms'][] = array( "pa_" . $attribute, $v, $operator );
@@ -204,7 +204,7 @@ if( ! function_exists( 'br_aapf_args_converter' ) ) {
204
  } else {
205
  $_POST['limits'][] = array( "pa_" . $attribute, $min, $max );
206
  }
207
- }
208
- }
209
- }
210
  }
10
  * @return void
11
  */
12
  function br_get_template_part( $name = '' ){
13
+ BeRocket_AAPF::br_get_template_part( $name );
14
+ }
15
  }
16
 
17
  if( ! function_exists( 'br_aapf_get_attributes' ) ) {
21
  * @return mixed|void
22
  */
23
  function br_aapf_get_attributes() {
24
+ $attribute_taxonomies = wc_get_attribute_taxonomies();
25
+ $attributes = array();
26
 
27
+ if ( $attribute_taxonomies ) {
28
+ foreach ( $attribute_taxonomies as $tax ) {
29
+ $attributes[ wc_attribute_taxonomy_name( $tax->attribute_name ) ] = $tax->attribute_label;
30
+ }
31
+ }
32
 
33
+ return apply_filters( 'berocket_aapf_get_attributes', $attributes );
34
+ }
35
  }
36
 
37
  if( ! function_exists( 'br_parse_order_by' ) ){
41
  * @param $args
42
  */
43
  function br_aapf_parse_order_by( &$args ){
44
+ $orderby = $_GET['orderby'] = $_POST['orderby'];
45
+ $order = "ASK";
46
+ if( @ preg_match( "/-/", $orderby ) ){
47
+ list( $orderby, $order ) = explode( "-", $orderby );
48
+ }
49
 
50
  // needed for woocommerce sorting funtionality
51
  if( @ $orderby and @ $order ) {
52
 
53
+ // Get ordering from query string unless defined
54
+ $orderby = strtolower( $orderby );
55
+ $order = strtoupper( $order );
56
+
57
+ // default - menu_order
58
+ $args['orderby'] = 'menu_order title';
59
+ $args['order'] = $order == 'DESC' ? 'DESC' : 'ASC';
60
+
61
+ switch ( $orderby ) {
62
+ case 'rand' :
63
+ $args['orderby'] = 'rand';
64
+ break;
65
+ case 'date' :
66
+ $args['orderby'] = 'date';
67
+ $args['order'] = $order == 'ASC' ? 'ASC' : 'DESC';
68
+ break;
69
+ case 'price' :
70
+ $args['orderby'] = 'meta_value_num';
71
+ $args['order'] = $order == 'DESC' ? 'DESC' : 'ASC';
72
+ $args['meta_key'] = '_price';
73
+ break;
74
+ case 'popularity' :
75
+ $args['meta_key'] = 'total_sales';
76
+
77
+ // Sorting handled later though a hook
78
+ add_filter( 'posts_clauses', array( 'WC_Query', 'order_by_popularity_post_clauses' ) );
79
+ break;
80
+ case 'rating' :
81
+ // Sorting handled later though a hook
82
+ add_filter( 'posts_clauses', array( 'WC_Query', 'order_by_rating_post_clauses' ) );
83
+ break;
84
+ case 'title' :
85
+ $args['orderby'] = 'title';
86
+ $args['order'] = $order == 'DESC' ? 'DESC' : 'ASC';
87
+ break;
88
+ }
89
+ }
90
+ }
91
  }
92
 
93
  if( ! function_exists( 'br_aapf_args_parser' ) ){
99
  * @return array
100
  */
101
  function br_aapf_args_parser( $args = array() ) {
102
+ $attributes_terms = $tax_query = array();
103
+ $attributes = apply_filters( 'berocket_aapf_listener_get_attributes', br_aapf_get_attributes() );
104
+
105
+ if ( @$attributes ) {
106
+ foreach ( $attributes as $k => $v ) {
107
+ $terms = get_terms( array( $k ), $args = array( 'orderby' => 'name', 'order' => 'ASC' ) );
108
+ if ( $terms ) {
109
+ foreach ( $terms as $term ) {
110
+ $attributes_terms[ $k ][ $term->term_id ] = $term->slug;
111
+ }
112
+ }
113
+ }
114
+ }
115
+
116
+ if ( @$_POST['terms'] ) {
117
+ foreach ( $_POST['terms'] as $t ) {
118
+ $taxonomies[ $t[0] ][] = $attributes_terms[ $t[0] ][ $t[1] ];
119
+ $taxonomies_operator[ $t[0] ] = $t[2];
120
+ }
121
+ }
122
+
123
+ $taxonomies = apply_filters( 'berocket_aapf_listener_taxonomies', @$taxonomies );
124
+ $taxonomies_operator = apply_filters( 'berocket_aapf_listener_taxonomies_operator', @$taxonomies_operator );
125
+
126
+ if ( @$taxonomies ) {
127
+ $tax_query['relation'] = 'AND';
128
+ if ( $taxonomies ) {
129
+ foreach ( $taxonomies as $k => $v ) {
130
+ if ( $taxonomies_operator[ $k ] == 'AND' ) {
131
+ $op = 'AND';
132
+ } else {
133
+ $op = 'IN';
134
+ }
135
+
136
+ $tax_query[] = array(
137
+ 'taxonomy' => $k,
138
+ 'field' => 'slug',
139
+ 'terms' => $v,
140
+ 'operator' => $op
141
+ );
142
+ }
143
+ }
144
+ }
145
+
146
+ if ( @$_POST['product_cat'] and $_POST['product_cat'] != '-1' ) {
147
+ $tax_query[] = array(
148
+ 'taxonomy' => 'product_cat',
149
+ 'field' => 'slug',
150
+ 'terms' => strip_tags( $_POST['product_cat'] ),
151
+ 'operator' => 'IN'
152
+ );
153
+ }
154
+
155
+ $args['tax_query'] = $tax_query;
156
+ $args['post_type'] = 'product';
157
+
158
+ if ( @ $_POST['orderby'] ) {
159
+ br_aapf_parse_order_by( $args );
160
+ }
161
+
162
+ return $args;
163
+ }
164
  }
165
 
166
  if( ! function_exists( 'br_aapf_args_converter' ) ) {
169
  */
170
  function br_aapf_args_converter() {
171
  if ( preg_match( "~\|~", $_GET['filters'] ) ) {
172
+ $filters = explode( "|", $_GET['filters'] );
173
+ } else {
174
+ $filters[0] = $_GET['filters'];
175
+ }
176
 
177
  foreach ( $filters as $filter ) {
178
 
192
  list( $attribute, $value ) = explode( "-", $filter, 2 );
193
  }
194
 
195
+ if ( $attribute == 'price' ) {
196
+ $_POST['price'] = array( $min, $max );
197
+ } elseif ( $attribute == 'order' ) {
198
+ $_GET['orderby'] = $value;
199
+ } else {
200
  if ( $operator ) {
201
  foreach ( $value as $v ) {
202
  $_POST['terms'][] = array( "pa_" . $attribute, $v, $operator );
204
  } else {
205
  $_POST['limits'][] = array( "pa_" . $attribute, $min, $max );
206
  }
207
+ }
208
+ }
209
+ }
210
  }
includes/widget.php CHANGED
@@ -41,7 +41,7 @@ class BeRocket_AAPF_Widget extends WP_Widget {
41
  */
42
  function widget( $args, $instance ) {
43
  $br_options = apply_filters( 'berocket_aapf_listener_br_options', get_option('br_filters_options') );
44
- if( @ $br_options['filters_turn_off'] ) return false;
45
 
46
  global $wp_query, $wp;
47
 
@@ -79,9 +79,9 @@ class BeRocket_AAPF_Widget extends WP_Widget {
79
  'current_page_url' => preg_replace( "~paged?/[0-9]+/?~", "", home_url( $wp->request ) ),
80
  'ajaxurl' => admin_url( 'admin-ajax.php' ),
81
  'product_cat' => $wp_query_product_cat,
82
- 'products_holder_id' => $br_options['products_holder_id'],
83
- 'control_sorting' => $br_options['control_sorting'],
84
- 'seo_friendly_urls' => $br_options['seo_friendly_urls'],
85
  'berocket_aapf_widget_product_filters' => $post_temrs,
86
  'user_func' => @ $br_options['user_func'],
87
  )
@@ -144,7 +144,7 @@ class BeRocket_AAPF_Widget extends WP_Widget {
144
  $terms = BeRocket_AAPF_Widget::get_attribute_values( $attribute, 'id', true );
145
  }
146
 
147
- if ( @ count( $terms ) < 2 ) return false;
148
 
149
  if ( $wc_order_by == 'menu_order' ) {
150
  foreach ( $terms as $term ) {
@@ -174,9 +174,10 @@ class BeRocket_AAPF_Widget extends WP_Widget {
174
  if( !$scroll_theme ) $scroll_theme = 'dark';
175
 
176
  set_query_var( 'operator', $operator );
 
177
  set_query_var( 'title', apply_filters( 'berocket_aapf_widget_title', $title ) );
178
  set_query_var( 'class', apply_filters( 'berocket_aapf_widget_class', $class ) );
179
- set_query_var( 'css_class', apply_filters( 'berocket_aapf_widget_css_class', $css_class ) );
180
  set_query_var( 'style', apply_filters( 'berocket_aapf_widget_style', $style ) );
181
  set_query_var( 'scroll_theme', $scroll_theme );
182
  set_query_var( 'x', time() );
@@ -190,6 +191,14 @@ class BeRocket_AAPF_Widget extends WP_Widget {
190
  $slider_class = 'berocket_filter_slider';
191
 
192
  if( $attribute == 'price' ){
 
 
 
 
 
 
 
 
193
  if( $price_range ) {
194
  foreach ( $price_range as $price ) {
195
  if ( $min === false or $min > (int) $price ) {
@@ -200,20 +209,20 @@ class BeRocket_AAPF_Widget extends WP_Widget {
200
  }
201
  }
202
  }
203
- $id = rand( 0, time() );
204
  $slider_class .= ' berocket_filter_price_slider';
205
  $main_class .= ' price';
206
 
207
  $min = number_format( floor( $min ), 2, '.', '' );
208
  $max = number_format( ceil( $max ), 2, '.', '' );
209
- }else{
210
- if( $terms ) {
211
  foreach ( $terms as $term ) {
212
- if ( $min === false or $min > (int) $term->slug ) {
213
- $min = $term->slug;
214
  }
215
- if ( $max === false or $max < (int) $term->slug ) {
216
- $max = $term->slug;
217
  }
218
  }
219
  }
@@ -243,7 +252,10 @@ class BeRocket_AAPF_Widget extends WP_Widget {
243
  set_query_var( 'slider_class', $slider_class );
244
  set_query_var( 'min', $min );
245
  set_query_var( 'max', $max );
 
 
246
  }
 
247
 
248
  br_get_template_part( $type );
249
 
@@ -263,8 +275,11 @@ class BeRocket_AAPF_Widget extends WP_Widget {
263
  }
264
 
265
  public static function get_price_range( $wp_query_product_cat, $woocommerce_hide_out_of_stock_items ){
 
266
  $price_range = array();
 
267
  $products = BeRocket_AAPF_Widget::get_filter_products( $wp_query_product_cat, $woocommerce_hide_out_of_stock_items, false );
 
268
 
269
  foreach ( $products as $ID ) {
270
  $meta_values = get_post_meta( $ID, '_price' );
@@ -282,14 +297,44 @@ class BeRocket_AAPF_Widget extends WP_Widget {
282
 
283
  public static function get_attribute_values( $taxonomy = '', $order_by = 'id', $hide_empty = false ) {
284
  if ( ! $taxonomy ) return array();
285
-
286
- $args = array(
287
- 'orderby' => $order_by,
288
- 'order' => 'ASC',
289
- 'hide_empty' => $hide_empty,
290
- );
291
-
292
- return get_terms( $taxonomy, $args );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
293
  }
294
 
295
  public static function get_filter_products( $wp_query_product_cat, $woocommerce_hide_out_of_stock_items, $use_filters = true ) {
@@ -321,7 +366,7 @@ class BeRocket_AAPF_Widget extends WP_Widget {
321
  $wp_query = new WP_Query( $args );
322
 
323
  // here we get max products to know if current page is not too big
324
- if ( $wp_rewrite->using_permalinks() and preg_match( "~/page/([0-9]+)~", $_POST['location'], $mathces ) or preg_match( "~paged?=([0-9]+)~", $_POST['location'], $mathces ) ) {
325
  $args['paged'] = min( $mathces[1], $wp_query->max_num_pages );
326
  $wp_query = new WP_Query( $args );
327
  }
@@ -334,6 +379,8 @@ class BeRocket_AAPF_Widget extends WP_Widget {
334
  }
335
  }
336
 
 
 
337
  return $products;
338
  }
339
 
@@ -349,14 +396,17 @@ class BeRocket_AAPF_Widget extends WP_Widget {
349
  $instance = $old_instance;
350
 
351
  /* Strip tags (if needed) and update the widget settings. */
352
- $instance['widget_type'] = strip_tags( $new_instance['widget_type'] );
353
- $instance['title'] = strip_tags( $new_instance['title'] );
354
- $instance['attribute'] = strip_tags( $new_instance['attribute'] );
355
- $instance['type'] = strip_tags( $new_instance['type'] );
356
- $instance['product_cat'] = ( $new_instance['product_cat'] ) ? json_encode( $new_instance['product_cat'] ) : '';
357
- $instance['scroll_theme'] = strip_tags( $new_instance['scroll_theme'] );
358
- $instance['cat_propagation'] = (int) $new_instance['cat_propagation'];
359
- $instance['css_class'] = strip_tags( $new_instance['css_class'] );
 
 
 
360
 
361
  if( $new_instance['height'] != 'auto' ) $new_instance['height'] = (float) $new_instance['height'];
362
  if( !$new_instance['height'] ) $new_instance['height'] = 'auto';
@@ -386,14 +436,16 @@ class BeRocket_AAPF_Widget extends WP_Widget {
386
 
387
  /* Set up some default widget settings. */
388
  $defaults = array(
389
- 'widget_type' => '',
390
- 'title' => '',
391
- 'attribute' => '',
392
- 'type' => '',
393
- 'operator' => '',
394
- 'product_cat' => '',
395
- 'height' => 'auto',
396
- 'scroll_theme' => 'dark'
 
 
397
  );
398
 
399
  $defaults = apply_filters( 'berocket_aapf_form_defaults', $defaults );
41
  */
42
  function widget( $args, $instance ) {
43
  $br_options = apply_filters( 'berocket_aapf_listener_br_options', get_option('br_filters_options') );
44
+ if( @ $br_options['filters_turn_off'] || is_product() ) return false;
45
 
46
  global $wp_query, $wp;
47
 
79
  'current_page_url' => preg_replace( "~paged?/[0-9]+/?~", "", home_url( $wp->request ) ),
80
  'ajaxurl' => admin_url( 'admin-ajax.php' ),
81
  'product_cat' => $wp_query_product_cat,
82
+ 'products_holder_id' => @ $br_options['products_holder_id'],
83
+ 'control_sorting' => @ $br_options['control_sorting'],
84
+ 'seo_friendly_urls' => @ $br_options['seo_friendly_urls'],
85
  'berocket_aapf_widget_product_filters' => $post_temrs,
86
  'user_func' => @ $br_options['user_func'],
87
  )
144
  $terms = BeRocket_AAPF_Widget::get_attribute_values( $attribute, 'id', true );
145
  }
146
 
147
+ if ( @ count( $terms ) < 1 ) return false;
148
 
149
  if ( $wc_order_by == 'menu_order' ) {
150
  foreach ( $terms as $term ) {
174
  if( !$scroll_theme ) $scroll_theme = 'dark';
175
 
176
  set_query_var( 'operator', $operator );
177
+ set_query_var( 'type', $type );
178
  set_query_var( 'title', apply_filters( 'berocket_aapf_widget_title', $title ) );
179
  set_query_var( 'class', apply_filters( 'berocket_aapf_widget_class', $class ) );
180
+ set_query_var( 'css_class', apply_filters( 'berocket_aapf_widget_css_class', @ $css_class ) );
181
  set_query_var( 'style', apply_filters( 'berocket_aapf_widget_style', $style ) );
182
  set_query_var( 'scroll_theme', $scroll_theme );
183
  set_query_var( 'x', time() );
191
  $slider_class = 'berocket_filter_slider';
192
 
193
  if( $attribute == 'price' ){
194
+ wp_localize_script(
195
+ 'berocket_aapf_widget-script',
196
+ 'br_price_text',
197
+ array(
198
+ 'before' => @ $text_before_price,
199
+ 'after' => @ $text_after_price,
200
+ )
201
+ );
202
  if( $price_range ) {
203
  foreach ( $price_range as $price ) {
204
  if ( $min === false or $min > (int) $price ) {
209
  }
210
  }
211
  }
212
+ $id = 'br_price';
213
  $slider_class .= ' berocket_filter_price_slider';
214
  $main_class .= ' price';
215
 
216
  $min = number_format( floor( $min ), 2, '.', '' );
217
  $max = number_format( ceil( $max ), 2, '.', '' );
218
+ } else {
219
+ if( @ $terms ) {
220
  foreach ( $terms as $term ) {
221
+ if ( $min === false or $min > (int) $term->name ) {
222
+ $min = floor( (float) $term->name );
223
  }
224
+ if ( $max === false or $max < (int) $term->name ) {
225
+ $max = ceil( (float) $term->name );
226
  }
227
  }
228
  }
252
  set_query_var( 'slider_class', $slider_class );
253
  set_query_var( 'min', $min );
254
  set_query_var( 'max', $max );
255
+ set_query_var( 'text_before_price', @ $text_before_price );
256
+ set_query_var( 'text_after_price', @ $text_after_price );
257
  }
258
+ set_query_var( 'first_page_jump', $first_page_jump );
259
 
260
  br_get_template_part( $type );
261
 
275
  }
276
 
277
  public static function get_price_range( $wp_query_product_cat, $woocommerce_hide_out_of_stock_items ){
278
+ global $wp_query;
279
  $price_range = array();
280
+ $wp_query_product_cat_save = $wp_query;
281
  $products = BeRocket_AAPF_Widget::get_filter_products( $wp_query_product_cat, $woocommerce_hide_out_of_stock_items, false );
282
+ $wp_query = $wp_query_product_cat_save;
283
 
284
  foreach ( $products as $ID ) {
285
  $meta_values = get_post_meta( $ID, '_price' );
297
 
298
  public static function get_attribute_values( $taxonomy = '', $order_by = 'id', $hide_empty = false ) {
299
  if ( ! $taxonomy ) return array();
300
+ if( $hide_empty ) {
301
+ global $wp_query, $post;
302
+ $terms = array();
303
+ $q_args = $wp_query->query_vars;
304
+ $q_args['nopaging'] = true;
305
+ $q_args['post__in'] = '';
306
+ $q_args['tax_query'] = '';
307
+ $the_query = new WP_Query($q_args);
308
+ while ( $the_query -> have_posts() ) {
309
+ $the_query->the_post();
310
+ $curent_terms = wp_get_object_terms( $post->ID, $taxonomy);
311
+ foreach ( $curent_terms as $t ) {
312
+ if ( ! in_array($t,$terms) ) {
313
+ $terms[] = $t->term_id;
314
+ }
315
+ }
316
+ }
317
+ wp_reset_query();
318
+ $args = array(
319
+ 'orderby' => $order_by,
320
+ 'order' => 'ASC',
321
+ 'hide_empty' => false,
322
+ );
323
+ $terms2 = get_terms( $taxonomy, $args );
324
+ foreach ( $terms2 as $t ) {
325
+ if ( in_array( $t->term_id, $terms ) ) {
326
+ $re[] = $t;
327
+ }
328
+ }
329
+ return $re;
330
+ } else {
331
+ $args = array(
332
+ 'orderby' => $order_by,
333
+ 'order' => 'ASC',
334
+ 'hide_empty' => false,
335
+ );
336
+ return get_terms( $taxonomy, $args );
337
+ }
338
  }
339
 
340
  public static function get_filter_products( $wp_query_product_cat, $woocommerce_hide_out_of_stock_items, $use_filters = true ) {
366
  $wp_query = new WP_Query( $args );
367
 
368
  // here we get max products to know if current page is not too big
369
+ if ( $wp_rewrite->using_permalinks() and preg_match( "~/page/([0-9]+)~", @ $_POST['location'], $mathces ) or preg_match( "~paged?=([0-9]+)~", @ $_POST['location'], $mathces ) ) {
370
  $args['paged'] = min( $mathces[1], $wp_query->max_num_pages );
371
  $wp_query = new WP_Query( $args );
372
  }
379
  }
380
  }
381
 
382
+ wp_reset_query();
383
+
384
  return $products;
385
  }
386
 
396
  $instance = $old_instance;
397
 
398
  /* Strip tags (if needed) and update the widget settings. */
399
+ $instance['widget_type'] = strip_tags( $new_instance['widget_type'] );
400
+ $instance['title'] = strip_tags( $new_instance['title'] );
401
+ $instance['attribute'] = strip_tags( $new_instance['attribute'] );
402
+ $instance['type'] = strip_tags( $new_instance['type'] );
403
+ $instance['product_cat'] = ( $new_instance['product_cat'] ) ? json_encode( $new_instance['product_cat'] ) : '';
404
+ $instance['scroll_theme'] = strip_tags( $new_instance['scroll_theme'] );
405
+ $instance['cat_propagation'] = (int) $new_instance['cat_propagation'];
406
+ $instance['css_class'] = strip_tags( $new_instance['css_class'] );
407
+ $instance['text_before_price'] = strip_tags( $new_instance['text_before_price'] );
408
+ $instance['text_after_price'] = strip_tags( $new_instance['text_after_price'] );
409
+ $instance['first_page_jump'] = (int) $new_instance['first_page_jump'];
410
 
411
  if( $new_instance['height'] != 'auto' ) $new_instance['height'] = (float) $new_instance['height'];
412
  if( !$new_instance['height'] ) $new_instance['height'] = 'auto';
436
 
437
  /* Set up some default widget settings. */
438
  $defaults = array(
439
+ 'widget_type' => 'filter',
440
+ 'title' => '',
441
+ 'attribute' => 'price',
442
+ 'type' => 'slider',
443
+ 'operator' => '',
444
+ 'product_cat' => '',
445
+ 'text_before_price' => '',
446
+ 'text_after_price' => '',
447
+ 'height' => 'auto',
448
+ 'scroll_theme' => 'dark',
449
  );
450
 
451
  $defaults = apply_filters( 'berocket_aapf_form_defaults', $defaults );
js/admin.js CHANGED
@@ -1 +1,65 @@
1
- !function(e){e(document).ready(function(){e(document).on("change",".berocket_aapf_widget_admin_attribute_select",function(){$parent=e(this).parents("form"),"price"==e(this).val()?(e(".berocket_aapf_widget_admin_type_select",$parent).html('<option value="slider">Slider</option>'),e(".berocket_aapf_widget_admin_operator_select",$parent).parent().parent().hide(0)):(e(".berocket_aapf_widget_admin_type_select",$parent).html('<option value="checkbox">Checkbox</option><option value="radio">Radio</option><option value="select">Select</option><option value="slider">Slider</option>'),e(".berocket_aapf_widget_admin_operator_select",$parent).parent().parent().show(0))}),e(document).on("change",".berocket_aapf_widget_admin_type_select",function(){$parent=e(this).parents("form"),"slider"==e(this).val()?e(".berocket_aapf_widget_admin_operator_select",$parent).parent().parent().hide(0):e(".berocket_aapf_widget_admin_operator_select",$parent).parent().parent().show(0)}),e(document).on("click",".berocket_aapf_advanced_settings_pointer",function(t){t.preventDefault(),e(this).parent().next().slideDown(300),e(this).parent().slideUp(200)}),e(".colorpicker_field").each(function(t,a){e(a).css("backgroundColor","#"+e(a).data("color")).next().val(e(a).data("color")),e(a).colpick({layout:"hex",submit:0,color:e(a).data("color"),onChange:function(t,a,n,o,i){e(o).css("backgroundColor","#"+a).next().val(a)}})}),e(".filter_settings_tabs").on("click","a",function(t){t.preventDefault(),$id=e(this).attr("href"),e(".tab-item.current").removeClass("current"),e($id).addClass("current"),e(".filter_settings_tabs .nav-tab").removeClass("nav-tab-active"),e(this).addClass("nav-tab-active")}),e(document).on("change",".berocket_aapf_widget_admin_widget_type_select",function(){"filter"==e(this).val()?e(".berocket_aapf_admin_filter_widget_content").show():"update_button"==e(this).val()?e(".berocket_aapf_admin_filter_widget_content").hide():"selected_area"==e(this).val()&&e(".berocket_aapf_admin_filter_widget_content").hide()})})}(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function ($) {
2
+ $(document).ready(function () {
3
+
4
+ $(document).on('change', '.berocket_aapf_widget_admin_attribute_select', function () {
5
+ $parent = $(this).parents('form');
6
+ if ($(this).val() == 'price') {
7
+ $('.berocket_aapf_widget_admin_type_select', $parent).html('<option value="slider">Slider</option>');
8
+ $('.berocket_aapf_widget_admin_operator_select', $parent).parent().parent().hide(0);
9
+ $('.berocket_aapf_widget_admin_price_attribute', $parent).show(0);
10
+ } else {
11
+ $('.berocket_aapf_widget_admin_type_select', $parent).html('<option value="checkbox">Checkbox</option><option value="radio">Radio</option><option value="select">Select</option><option value="slider">Slider</option>');
12
+ $('.berocket_aapf_widget_admin_operator_select', $parent).parent().parent().show(0);
13
+ $('.berocket_aapf_widget_admin_price_attribute', $parent).hide(0);
14
+ }
15
+ });
16
+
17
+ $(document).on('change', '.berocket_aapf_widget_admin_type_select', function () {
18
+ $parent = $(this).parents('form');
19
+ if ($(this).val() == 'slider') {
20
+ $('.berocket_aapf_widget_admin_operator_select', $parent).parent().parent().hide(0);
21
+ } else {
22
+ $('.berocket_aapf_widget_admin_operator_select', $parent).parent().parent().show(0);
23
+ }
24
+ });
25
+
26
+ $(document).on('click', '.berocket_aapf_advanced_settings_pointer', function (event) {
27
+ event.preventDefault();
28
+ $(this).parent().next().slideDown(300);
29
+ $(this).parent().slideUp(200);
30
+ });
31
+
32
+ $('.colorpicker_field').each(function (i,o){
33
+ $(o).css('backgroundColor', '#'+$(o).data('color')).next().val($(o).data('color'));
34
+ $(o).colpick({
35
+ layout: 'hex',
36
+ submit: 0,
37
+ color: '#'+$(o).data('color'),
38
+ onChange: function(hsb,hex,rgb,el,bySetColor) {
39
+ $(el).css('backgroundColor', '#'+hex).next().val(hex);
40
+ }
41
+ })
42
+ });
43
+
44
+ $('.filter_settings_tabs').on('click', 'a', function (event) {
45
+ event.preventDefault();
46
+ $id = $(this).attr('href');
47
+ $('.tab-item.current').removeClass('current');
48
+ $($id).addClass('current');
49
+
50
+ $('.filter_settings_tabs .nav-tab').removeClass('nav-tab-active');
51
+ $(this).addClass('nav-tab-active');
52
+ });
53
+
54
+ $(document).on('change', '.berocket_aapf_widget_admin_widget_type_select', function () {
55
+ $parent = $(this).parents('form');
56
+ if ( $(this).val() == 'filter' ) {
57
+ $('.berocket_aapf_admin_filter_widget_content', $parent).show();
58
+ } else if( $(this).val() == 'update_button' ) {
59
+ $('.berocket_aapf_admin_filter_widget_content', $parent).hide();
60
+ } else if( $(this).val() == 'selected_area' ) {
61
+ $('.berocket_aapf_admin_filter_widget_content', $parent).hide();
62
+ }
63
+ });
64
+ })
65
+ })(jQuery);
js/widget.min.js CHANGED
@@ -1 +1,536 @@
1
- eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(7($){$(1r).2E(7(){1s f=[],1g=[],1t=[],1u=1,1O=P,J=[];5($(\'.h-G\').u(\'.h-G\')){1u=H($(\'.h-G .Q\').R());5(1u<1)1u=1}5($(\'.1P\').u(\'1P\')){1O=V}7 1v(a){5(S j.T!=\'W\'&&j.T!=1w&&S a!=\'W\'&&a.p>0){2F(a)}}7 1Q(){5(!$(\'.1h\').u(\'1h\')){1R P}X=\'\';1x=\'\';v=\'\';$(J).z(7(i,a){5(a.14(\'K\')){A=a.6(\'B\').15(3).1S(0).1T()+a.6(\'B\').15(4);w=a.1y(\'w:1z\').R();v=\'K\';L=a.1A(\'2d\')}8 5(a.14(\'1B\')){A=a.6(\'B\').15(3).1S(0).1T()+a.6(\'B\').15(4);w=a.2e(\'16\').1y(\'A\').R();v=a.1A(\'1U\');L=a.1A(\'2d\')}8 5(a.u(\'17\')){r=$(\'#\'+a.6(\'1C\')).I();s=$(\'#\'+a.6(\'1i\')).I();5(r!=a.6(\'18\')||s!=a.6(\'19\')){5(a.u(\'1j\')){A=\'2G\'}8{A=a.6(\'B\').15(3).1S(0).1T()+a.6(\'B\').15(4)}}v=\'q\';L=a.6(\'1i\');w=r+\' - \'+s}w=\'<16><a Y="2H \'+A+\'" 6-v="\'+v+\'" 6-L="\'+L+\'">\'+w+\'</a></16>\';5(1x==\'\'){X+=\'<1a><C>\'+A+\'</C><1D>\'+w}8 5(1x==A){X+=w}8{X+=\'</1D></1a><1a><C>\'+A+\'</C><1D>\'+w}1x=A});5(X==\'\'){$(\'.1h\').1V(\'\').2f().1k().2f()}8{X+=\'</1D></1a>\';$(\'.1h\').1V(X).2g().1k().2g()}}7 1W(){f=[];J=[];$(\'.1E 16:1X(.q) 1B, .1E 16:1X(q) K\').z(7(i,o){$M=$(o);5($M.14("K")){D=$M.1y("w:1z").6();$(f).z(7(i,o){5(o[0]==D.B){f.2h(i,1)}});5($M.I()){f[f.p]=[D.B,D.1Y,D.2i];J[J.p]=$M}}8{D=$M.6();5($M.14(\':1F\')||$M.14(\':1z\')){f[f.p]=[D.B,D.1Y,D.2i];J[J.p]=$M}8{$(f).z(7(i,o){5(o[0]==D.B&&o[1]==D.1Y){f.2h(i,1)}})}}});1g=[];1t=[];$t=$(\'.17\');5($t.u(\'17\')){$t.z(7(i,o){r=$(\'#\'+$(o).6(\'1C\')).I();s=$(\'#\'+$(o).6(\'1i\')).I();5(r!=$(o).6(\'18\')||s!=$(o).6(\'19\')){J[J.p]=$(o);5($(o).u(\'1j\')){1t=[r,s]}8{1g[1g.p]=[$(o).6(\'B\'),r,s]}}})}}7 U(b){5(S b==\'W\')b=P;5(!b&&1O)1R P;5(j.T!=1w)1v(j.T.2I);$(j.1G).2J(\'1Z\').2K(\'<1a 2j="2k" />\');1W();1Q();N={20:f,O:1t,21:1g,1l:j.1l,2L:\'2M\',Z:$(\'.h-1H K.Z\').I()};5(j.2N&&\'1I\'22 2O&&\'2l\'22 1I){2m(N);N.x=x.Y}8{N.x=j.2n;l=$(\'.h-G C.Q\').R();5(1b=x.Y.1c(/.+\\/10\\/([0-9]+).+/,"$1")){5(!H(l)){l=1b}N.x=N.x.1c(/\\/?/,"")+"/10/"+l+"/"}8 5(1b=x.Y.1c(/.+1m?=([0-9]+).+/,"$1")){5(!H(l)){l=1b}N.x=N.x.1c(/\\/?/,"")+"?10="+l+""}}$.2P(j.2Q,N,7(a){$(\'.h-2R-2S\').1n();$(\'.h-G\').1n();$(\'2o.h-1H\').1n();5(j.T!=1w)1v(j.T.2T);5($(\'.h-23\').u(\'h-23\')&&!$(j.1G).14(\':2U\')){5(S a.24!=\'W\'){$(\'.h-23\').2p(a.24)}}8{5(S a.2q!=\'W\'){$(j.1G).1V(a.2q).25(\'1Z\')}8{$(j.1G).2p(a.24).25(\'1Z\')}}$(\'.2k\').1n();26();5(j.T!=1w)1v(j.T.2V)},"2W")}7 2m(c){E=[];g=\'\';m=[];5(c.Z&&$(\'.h-1H K.Z w:2X\').1A(\'2Y\')!=c.Z){g+=\'2Z-\'+c.Z}5(c.1l&&c.1l>0){5(g)g+="|";g+=\'30-\'+c.1l}5(c.O){$27=$(\'.1j\');5(c.O[0]&&c.O[1]&&(c.O[0]!=$27.6(\'18\')||c.O[1]!=$27.6(\'19\'))){5(g)g+="|";g+=\'O[\'+c.O[0]+\'2r\'+c.O[1]+\']\'}}5(c.21){$(c.21).z(7(i,o){5(!F(o[0].y(3),m)){m[m.p]=o[0].y(3)}5(S E[F(o[0].y(3),m)]==\'W\'){E[F(o[0].y(3),m)]=[]}E[F(o[0].y(3),m)][E[F(o[0].y(3),m)].p]=[o[1],o[2]]})}5(c.20){$(c.20).z(7(i,o){5(!F(o[0].y(3),m)){m[m.p]=o[0].y(3)}5(S E[F(o[0].y(3),m)]==\'W\'){E[F(o[0].y(3),m)]=[]}E[F(o[0].y(3),m)][E[F(o[0].y(3),m)].p]=[o[1],o[2]]})}1s d=j.2n;5(E.p){$(E).z(7(i,o){5(g)g+="|";5(S o!=\'31\'){g+=o}8{28=P;g+=m[i]+\'[\';$(o).z(7(a,b){5((b[1]==\'2s\'||b[1]==\'32\')){5(28){5(b[1]==\'2s\'){g+=\'+\'}8{g+=\'-\'}}}8{b[0]+=\'2r\'+b[1]}g+=b[0];28=V});g+=\']\'}})}l=$(\'.h-G C.Q\').R();5(1b=H(x.Y.1c(/.+\\/10\\/([0-9]+).+/,"$1"))){5(!H(l)){l=1b}d=d.1c(/\\/?$/,"")+"/10/"+l+"/";5(g){d=d+"?1J="+g}}8{1K=P;5(/\\?/.2t(x.Y)){1o=x.Y.1L(\'?\');5(1o[1]){n=[];33=[];5(/&/.2t(1o[1])){n=1o[1].1L(\'&\');2u=n.p;29(k=0;k<2u;k++){1d=n[k].1L(\'=\');n[k]=[];n[k][0]=1d.2v();n[k][1]=1d.2w("=")}}8{n[0]=[];1d=1o[1].1L(\'=\');n[0][0]=1d.2v();n[0][1]=1d.2w("=")}29(k=0;k<n.p;k++){5(n[k][0]==\'1J\'||n[k][0]==\'10\'||n[k][0]==\'1m\')34;5(1K)d+=\'&\';8 d+=\'?\';d+=n[k][0]+\'=\'+n[k][1];1K=V}}}5(1K&&g){d=d+"&1J="+g;5(l>1){d=d+"&1m="+H(l)}}8 5(g){d=d+"?1J="+g;5(l>1){d=d+"&1m="+H(l)}}8 5(l>1){d=d+"?1m="+H(l)}}1s e={2x:"2y"};1I.2l(e,"2x 2y",d);1I.35=d}7 26(){$(\'.h-G\').11(\'1p\',\'a\',7(a){a.1e();5($(12).u(\'36\')){1M=H($(\'.h-G C.Q\').R())+1}8 5($(12).u(\'1k\')){1M=H($(\'.h-G C.Q\').R())-1}8{1M=$(12).R()}$(\'.h-G C.Q\').25(\'Q\');$(12).37("<C 2j=\'10-38 Q\'>"+1M+"</C>").1n();U(V)})}7 F(a,b,c){1s d=P,1q,c=!!c;29(1q 22 b){5((c&&b[1q]===a)||(!c&&b[1q]==a)){d=1q;39}}1R d}$(\'.1E\').11("1p","1B[1U=\'2a\'] + A",7(a){a.1e()||$(12).1k().2b(\'1F\',!$(12).1k().2b(\'1F\'));U()});$(\'.1E\').11("2z","1B:1X([1U=\'2a\']), K",7(a){U()});$(".17").z(7(i,o){$(o).q({3a:V,18:$(o).6(\'18\')>>0,19:$(o).6(\'19\')>>0,2c:[$(o).6(\'3b\')>>0,$(o).6(\'3c\')>>0],3d:7(a,b){$o=$(b.3e).3f(\'1a.17\');13=b.2c;5($(o).u(\'1j\')){13[0]=13[0].1N(2);13[1]=13[1].1N(2)}$(\'#\'+$o.6(\'1C\')).I(13[0]);$(\'#\'+$o.6(\'1i\')).I(13[1])},3g:7(){U()}})});$(".3h").z(7(i,o){$(o).3i({3j:"3k",3l:$(o).6(\'3m\'),3n:3o})});$(".1h").11(\'1p\',\'a\',7(a){a.1e();$1f=$(12);v=$1f.6(\'v\');5(v==\'3p\'){$(\'#\'+$1f.6(\'L\')+\'-2A\').1p()}8 5(v==\'2a\'){$(\'#\'+$1f.6(\'L\')+\'-2A\').3q()}8 5(v==\'K\'){$(\'#\'+$1f.6(\'L\')+\' w:1z\').2b(\'1F\',P)}8 5(v==\'q\'){$q=$(\'#\'+$1f.6(\'L\')).2e(\'16\').1y(\'.17\');2B.2C($q);r=2D($q.6(\'18\'));s=2D($q.6(\'19\'));5($q.u(\'1j\')){r=r.1N(2);s=s.1N(2)}$(\'#\'+$q.6(\'1C\')).I(r);$(\'#\'+$q.6(\'1i\')).I(s);2B.2C([r,s]);$q.q("2c",[r,s]);U()}});5(j.3r){$(1r).11(\'3s\',\'2o.h-1H\',7(a){a.1e()});$(1r).11(\'2z\',\'K.Z\',7(a){a.1e();U(V)})}26();$(1r).11(\'1p\',\'.1P\',7(a){a.1e();U(V)});1W();1Q()})})(3t);',62,216,'|||||if|data|function|else||||||||uri_request|woocommerce||the_ajax_script||cur_page|temp_terms|passed_vars2||length|slider|val1|val2||hasClass|el_type|option|location|substring|each|label|taxonomy|span|el_data|uri_request_array|in_array|pagination|parseInt|val|berocket_aapf_widget_selected_filters|select|el_id|el|args|price|false|current|text|typeof|user_func|updateProducts|true|undefined|tmp_html|href|orderby|page|on|this|vals|is|slice|li|berocket_filter_slider|min|max|div|prev_page|replace|temp|preventDefault|obj|berocket_aapf_widget_product_limits|berocket_aapf_widget_selected_area|fields_2|berocket_filter_price_slider|prev|product_cat|paged|remove|passed_vars1|click|key|document|var|berocket_aapf_widget_product_price_limit|woocommerce_pagination_page|berocket_fire|null|prev_label|find|selected|attr|input|fields_1|ul|berocket_aapf_widget|checked|products_holder_id|ordering|history|filters|something_added|split|_next_page|toFixed|berocket_aapf_widget_wait_for_button|berocket_aapf_widget_update_button|update_selected_area|return|charAt|toUpperCase|type|html|update_data_containers|not|term_id|hide_products|terms|limits|in|info|products|removeClass|aapf_action_init|price_obj|cnt_oo|for|radio|prop|values|id|closest|hide|show|splice|operator|class|berocket_aapf_widget_loading|pushState|updateLocation|current_page_url|form|replaceWith|no_products|_|AND|test|passed_vars2_length|shift|join|BeRocket|Rules|change|styler|console|log|parseFloat|ready|eval|Price|Unselect|before_update|addClass|append|action|berocket_aapf_listener|seo_friendly_urls|window|post|ajaxurl|result|count|on_update|visible|after_update|json|first|value|order|pcategory|object|OR|temp2|continue|pathname|next|after|numbers|break|range|value1|value2|slide|handle|parents|stop|berocket_aapf_widget_height_control|mCustomScrollbar|axis|xy|theme|scroll_theme|scrollInertia|300|checkbox|reset|control_sorting|submit|jQuery'.split('|'),0,{}))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* packer link http://dean.edwards.name/packer/ */
2
+
3
+ (function ($){
4
+ $(document).ready(function (){
5
+
6
+ var berocket_aapf_widget_product_filters = [],
7
+ berocket_aapf_widget_product_limits = [],
8
+ berocket_aapf_widget_product_price_limit = [],
9
+ woocommerce_pagination_page = 1,
10
+ berocket_aapf_widget_wait_for_button = false,
11
+ berocket_aapf_widget_selected_filters = [],
12
+ berocket_aapf_widget_first_page_jump = false;
13
+
14
+ if( $('.woocommerce-pagination').hasClass('.woocommerce-pagination') ){
15
+ woocommerce_pagination_page = parseInt( $('.woocommerce-pagination .current').text() );
16
+ if( woocommerce_pagination_page < 1 ) woocommerce_pagination_page = 1;
17
+ }
18
+
19
+ if( $('.berocket_aapf_widget_update_button').hasClass('berocket_aapf_widget_update_button') ){
20
+ berocket_aapf_widget_wait_for_button = true;
21
+ }
22
+
23
+ function berocket_fire( func ){
24
+ if ( typeof the_ajax_script.user_func != 'undefined'
25
+ && the_ajax_script.user_func != null
26
+ && typeof func != 'undefined'
27
+ && func.length > 0
28
+ ) {
29
+ eval( func );
30
+ }
31
+ }
32
+
33
+ function update_selected_area() {
34
+ if ( ! $('.berocket_aapf_widget_selected_area').hasClass('berocket_aapf_widget_selected_area') ) {
35
+ return false;
36
+ }
37
+ tmp_html = '';
38
+ prev_label = '';
39
+ el_type = '';
40
+ $(berocket_aapf_widget_selected_filters).each(function (i, $el) {
41
+ if ( $el.is('select') ) {
42
+ label = $el.data('taxonomy').slice(3).charAt(0).toUpperCase() + $el.data('taxonomy').slice(4);
43
+ option = $el.find('option:selected').text();
44
+ el_type = 'select';
45
+ el_id = $el.attr('id');
46
+ } else if ( $el.is('input') ) {
47
+ label = $el.data('taxonomy').slice(3).charAt(0).toUpperCase() + $el.data('taxonomy').slice(4);
48
+ option = $el.closest('li').find('label').text();
49
+ el_type = $el.attr('type');
50
+ el_id = $el.attr('id');
51
+ } else if ( $el.hasClass('berocket_filter_slider') ) {
52
+ val1 = $('#'+$el.data('fields_1')).val();
53
+ val2 = $('#'+$el.data('fields_2')).val();
54
+ if ( val1 != $el.data('min') || val2 != $el.data('max') ) {
55
+ if ( $el.hasClass('berocket_filter_price_slider') ) {
56
+ label = 'Price';
57
+ } else {
58
+ label = $el.data('taxonomy').slice(3).charAt(0).toUpperCase() + $el.data('taxonomy').slice(4);
59
+ }
60
+ }
61
+ el_type = 'slider';
62
+ el_id = $el.data('fields_2');
63
+ option = val1+' - '+val2;
64
+ }
65
+
66
+ option = '<li><a href="Unselect '+label+'" data-el_type="'+el_type+'" data-el_id="'+el_id+'">'+option+'</a></li>';
67
+
68
+ if ( prev_label == '' ) {
69
+ tmp_html += '<div><span>'+label+'</span><ul>'+option;
70
+ } else if ( prev_label == label ) {
71
+ tmp_html += option;
72
+ } else {
73
+ tmp_html += '</ul></div><div><span>'+label+'</span><ul>'+option;
74
+ }
75
+
76
+ prev_label = label;
77
+ });
78
+
79
+ if ( tmp_html == '' ) {
80
+ $('.berocket_aapf_widget_selected_area').html('').hide().prev().hide();
81
+ } else {
82
+ tmp_html += '</ul></div>';
83
+ $('.berocket_aapf_widget_selected_area').html(tmp_html).show().prev().show();
84
+ }
85
+ }
86
+
87
+ function update_data_containers() {
88
+ berocket_aapf_widget_product_filters = [];
89
+ berocket_aapf_widget_selected_filters = [];
90
+ $('.berocket_aapf_widget li:not(.slider) input, .berocket_aapf_widget li:not(slider) select').each(function (i,o) {
91
+ $el = $(o);
92
+
93
+ if ( $el.is("select") ) {
94
+ el_data = $el.find("option:selected").data();
95
+
96
+ var el_show = true;
97
+ $(berocket_aapf_widget_product_filters).each(function (i, o) {
98
+ if (o[0] == el_data.taxonomy) {
99
+ el_show = false;
100
+ }
101
+ });
102
+ if( el_show && $el.val() ){
103
+ berocket_aapf_widget_product_filters[berocket_aapf_widget_product_filters.length] = [el_data.taxonomy, el_data.term_id, el_data.operator];
104
+ berocket_aapf_widget_selected_filters[berocket_aapf_widget_selected_filters.length] = $el;
105
+ }
106
+ } else {
107
+ el_data = $el.data();
108
+
109
+ var el_show = true;
110
+ $(berocket_aapf_widget_product_filters).each(function (i, o) {
111
+ if (o[0] == el_data.taxonomy && o[1] == el_data.term_id) {
112
+ el_show = false;
113
+ }
114
+ });
115
+
116
+ if (el_show && ($el.is(':checked') || $el.is(':selected'))) {
117
+ berocket_aapf_widget_product_filters[berocket_aapf_widget_product_filters.length] = [el_data.taxonomy, el_data.term_id, el_data.operator];
118
+ berocket_aapf_widget_selected_filters[berocket_aapf_widget_selected_filters.length] = $el;
119
+ }
120
+ }
121
+ });
122
+
123
+ berocket_aapf_widget_product_limits = [];
124
+ berocket_aapf_widget_product_price_limit = [];
125
+ $t = $('.berocket_filter_slider');
126
+ if( $t.hasClass('berocket_filter_slider') ){
127
+ $t.each(function (i,o){
128
+ val1 = $('#'+$(o).data('fields_1')).val();
129
+ val2 = $('#'+$(o).data('fields_2')).val();
130
+ if( val1 != $(o).data('min') || val2 != $(o).data('max') ){
131
+ berocket_aapf_widget_selected_filters[berocket_aapf_widget_selected_filters.length] = $(o);
132
+ if( $(o).hasClass('berocket_filter_price_slider') ){
133
+ berocket_aapf_widget_product_price_limit = [val1, val2];
134
+ } else {
135
+ var add_limit = true;
136
+ for( i = 0 ; i < berocket_aapf_widget_product_limits.length ; i++ ) {
137
+ if( berocket_aapf_widget_product_limits[ i ][ 0 ] == $(o).data( 'taxonomy' ) ) {
138
+ add_limit = false;
139
+ }
140
+ }
141
+ if( add_limit ) {
142
+ berocket_aapf_widget_product_limits[berocket_aapf_widget_product_limits.length] = [$(o).data('taxonomy'), val1, val2];
143
+ }
144
+ }
145
+ }
146
+ });
147
+ }
148
+ }
149
+
150
+ function updateProducts( $force ){
151
+ if ( typeof $force == 'undefined' ) $force = false;
152
+ // if we have update_button on the page we must wait for it to be clicked
153
+ if ( ! $force && berocket_aapf_widget_wait_for_button ) return false;
154
+
155
+ // call user func before_update
156
+ if( the_ajax_script.user_func != null )
157
+ berocket_fire( the_ajax_script.user_func.before_update );
158
+
159
+ $(the_ajax_script.products_holder_id).addClass('hide_products').append('<div class="berocket_aapf_widget_loading" />');
160
+
161
+ update_data_containers();
162
+ update_selected_area();
163
+
164
+ args = {
165
+ terms: berocket_aapf_widget_product_filters,
166
+ price: berocket_aapf_widget_product_price_limit,
167
+ limits: berocket_aapf_widget_product_limits,
168
+ product_cat: the_ajax_script.product_cat,
169
+ action: 'berocket_aapf_listener',
170
+ orderby: $('.woocommerce-ordering select.orderby').val()
171
+ };
172
+
173
+ if( the_ajax_script.seo_friendly_urls && 'history' in window && 'pushState' in history ) {
174
+ updateLocation(args);
175
+ args.location = location.href;
176
+ }else{
177
+ args.location = the_ajax_script.current_page_url;
178
+
179
+ cur_page = $('.woocommerce-pagination span.current').text();
180
+ if( prev_page = location.href.replace(/.+\/page\/([0-9]+).+/, "$1") ){
181
+ if( ! parseInt( cur_page ) ){
182
+ cur_page = prev_page;
183
+ }
184
+ if(berocket_aapf_widget_first_page_jump) {
185
+ cur_page = 1;
186
+ }
187
+ args.location = args.location.replace(/\/?/,"") + "/page/" + cur_page + "/";
188
+ }else if( prev_page = location.href.replace(/.+paged?=([0-9]+).+/, "$1") ){
189
+ if( ! parseInt( cur_page ) ){
190
+ cur_page = prev_page;
191
+ }
192
+ if(berocket_aapf_widget_first_page_jump) {
193
+ cur_page = 1;
194
+ }
195
+ args.location = args.location.replace(/\/?/,"") + "/?page=" + cur_page + "";
196
+ }
197
+ }
198
+
199
+ $.post(the_ajax_script.ajaxurl, args, function (data) {
200
+ berocket_aapf_widget_first_page_jump = false;
201
+ $('.woocommerce-result-count').remove();
202
+ $('.woocommerce-pagination').remove();
203
+ $('form.woocommerce-ordering').remove();
204
+
205
+ // call user func on_update
206
+ if( the_ajax_script.user_func != null )
207
+ berocket_fire( the_ajax_script.user_func.on_update );
208
+
209
+ if ( $('.woocommerce-info').hasClass('woocommerce-info') && ! $(the_ajax_script.products_holder_id).is(':visible') ) {
210
+ if ( typeof data.products != 'undefined' ) {
211
+ $('.woocommerce-info').replaceWith(data.products);
212
+ }
213
+ } else {
214
+ if ( typeof data.no_products != 'undefined' ) {
215
+ $(the_ajax_script.products_holder_id).html(data.no_products).removeClass('hide_products');
216
+ } else {
217
+ $(the_ajax_script.products_holder_id).replaceWith(data.products).removeClass('hide_products');
218
+ }
219
+ }
220
+
221
+ $('.berocket_aapf_widget_loading').remove();
222
+
223
+ aapf_action_init();
224
+
225
+ // call user func after_update
226
+ if( the_ajax_script.user_func != null )
227
+ berocket_fire( the_ajax_script.user_func.after_update );
228
+ }, "json");
229
+ }
230
+
231
+ function updateLocation( args ){
232
+ uri_request_array = [];
233
+ uri_request = '';
234
+ temp_terms = [];
235
+
236
+ if( args.orderby && $('.woocommerce-ordering select.orderby option:first').attr('value') != args.orderby ){
237
+ uri_request += 'order-'+args.orderby;
238
+ }
239
+ if( args.product_cat && args.product_cat > 0 ){
240
+ if( uri_request ) uri_request += "|";
241
+ uri_request += 'pcategory-'+args.product_cat;
242
+ }
243
+ if( args.price ){
244
+ $price_obj = $('.berocket_filter_price_slider');
245
+ if( args.price[0] && args.price[1] && ( args.price[0] != $price_obj.data('min') || args.price[1] != $price_obj.data('max') ) ){
246
+ if( uri_request ) uri_request += "|";
247
+ uri_request += 'price['+args.price[0]+'_'+args.price[1]+']';
248
+ }
249
+ }
250
+
251
+ if( args.limits ){
252
+ $(args.limits).each(function (i,o){
253
+ if( !in_array( o[0].substring(3), temp_terms ) ){
254
+ temp_terms[temp_terms.length] = o[0].substring(3);
255
+ }
256
+ if( typeof uri_request_array[in_array( o[0].substring(3), temp_terms )] == 'undefined' ) {
257
+ uri_request_array[in_array(o[0].substring(3), temp_terms)] = [];
258
+ }
259
+
260
+ uri_request_array[in_array( o[0].substring(3), temp_terms )]
261
+ [uri_request_array[in_array( o[0].substring(3), temp_terms )].length] = [o[1],o[2]];
262
+ });
263
+ }
264
+ if( args.terms ){
265
+ $(args.terms).each(function (i,o){
266
+ if( !in_array( o[0].substring(3), temp_terms ) ){
267
+ temp_terms[temp_terms.length] = o[0].substring(3);
268
+ }
269
+ if( typeof uri_request_array[in_array( o[0].substring(3), temp_terms )] == 'undefined' ) {
270
+ uri_request_array[in_array(o[0].substring(3), temp_terms)] = [];
271
+ }
272
+
273
+ uri_request_array[in_array( o[0].substring(3), temp_terms )]
274
+ [uri_request_array[in_array( o[0].substring(3), temp_terms )].length] = [o[1],o[2]];
275
+ });
276
+ }
277
+
278
+ var uri = the_ajax_script.current_page_url;
279
+
280
+ if( uri_request_array.length ){
281
+ $(uri_request_array).each(function (i,o){
282
+ if( uri_request ) uri_request += "|";
283
+
284
+ if( typeof o != 'object' ){
285
+ uri_request += o;
286
+ }else{
287
+ cnt_oo = false;
288
+ uri_request += temp_terms[i]+'[';
289
+
290
+ $(o).each(function (ii,oo){
291
+ if( ( oo[1] == 'AND' || oo[1] == 'OR' ) ){
292
+ if( cnt_oo ){
293
+ if(oo[1] == 'AND'){
294
+ uri_request += '+';
295
+ }else{
296
+ uri_request += '-';
297
+ }
298
+ }
299
+ }else{
300
+ oo[0] += '_'+oo[1];
301
+ }
302
+ uri_request += oo[0];
303
+ cnt_oo = true;
304
+ });
305
+ uri_request += ']'
306
+ }
307
+ });
308
+ }
309
+
310
+ cur_page = $('.woocommerce-pagination span.current').text();
311
+ if( prev_page = parseInt( location.href.replace(/.+\/page\/([0-9]+).+/, "$1") ) ){
312
+ if( ! parseInt( cur_page ) ){
313
+ cur_page = prev_page;
314
+ }
315
+ if(berocket_aapf_widget_first_page_jump) {
316
+ cur_page = 1;
317
+ }
318
+ uri = uri.replace(/\/?$/,"") + "/page/" + cur_page + "/";
319
+ if( uri_request ){
320
+ uri = uri + "?filters=" + uri_request;
321
+ }
322
+ }else{
323
+ something_added = false;
324
+ if( /\?/.test(location.href) ){
325
+ passed_vars1 = location.href.split('?');
326
+ if( passed_vars1[1] ){
327
+ passed_vars2 = [];
328
+ temp2 = [];
329
+ if( /&/.test(passed_vars1[1]) ) {
330
+ passed_vars2 = passed_vars1[1].split('&');
331
+ passed_vars2_length = passed_vars2.length;
332
+ for ( k = 0; k < passed_vars2_length; k++ ){
333
+ temp = passed_vars2[k].split('=');
334
+ passed_vars2[k] = [];
335
+ passed_vars2[k][0] = temp.shift();
336
+ passed_vars2[k][1] = temp.join("=");
337
+ }
338
+ }else{
339
+ passed_vars2[0] = [];
340
+ temp = passed_vars1[1].split('=');
341
+ passed_vars2[0][0] = temp.shift();
342
+ passed_vars2[0][1] = temp.join("=");
343
+ }
344
+ for ( k = 0; k < passed_vars2.length; k++ ){
345
+ if( passed_vars2[k][0] == 'filters' || passed_vars2[k][0] == 'page' || passed_vars2[k][0] == 'paged' ) continue;
346
+
347
+ if( something_added ) uri += '&';
348
+ else uri += '/?';
349
+
350
+ uri += passed_vars2[k][0]+'='+passed_vars2[k][1];
351
+ something_added = true;
352
+ }
353
+ }
354
+ }
355
+ if(berocket_aapf_widget_first_page_jump) {
356
+ cur_page = 1;
357
+ }
358
+ if( something_added && uri_request ){
359
+ uri = uri + "&filters=" + uri_request;
360
+ if( cur_page > 1 ){
361
+ uri = uri + "&paged=" + parseInt( cur_page );
362
+ }
363
+ }else if( uri_request ){
364
+ uri = uri + "/?filters=" + uri_request;
365
+ if( cur_page > 1 ){
366
+ uri = uri + "&paged=" + parseInt( cur_page );
367
+ }
368
+ }else if( cur_page > 1 ){
369
+ uri = uri + "/?paged=" + parseInt( cur_page );
370
+ }
371
+ }
372
+
373
+ var stateParameters = { BeRocket: "Rules" };
374
+ history.pushState(stateParameters, "BeRocket Rules", uri);
375
+ history.pathname = uri;
376
+ }
377
+
378
+ function aapf_action_init(){
379
+ // Take control over (default) pagination and sorting, make it AJAXy and work with filters
380
+ $('.woocommerce-pagination').on('click', 'a', function (event) {
381
+ event.preventDefault();
382
+ if ( $(this).hasClass('next') ) {
383
+ _next_page = parseInt( $('.woocommerce-pagination span.current').text() ) + 1;
384
+ } else if ( $(this).hasClass('prev') ) {
385
+ _next_page = parseInt( $('.woocommerce-pagination span.current').text() ) - 1;
386
+ } else {
387
+ _next_page = $(this).text();
388
+ }
389
+ $('.woocommerce-pagination span.current').removeClass('current');
390
+ $(this).after("<span class='page-numbers current'>"+_next_page+"</span>").remove();
391
+ updateProducts(true);
392
+ });
393
+ }
394
+
395
+ function in_array(needle, haystack, strict) {
396
+ var found = false, key, strict = !!strict;
397
+ for (key in haystack) {
398
+ if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
399
+ found = key;
400
+ break;
401
+ }
402
+ }
403
+ return found;
404
+ }
405
+
406
+ $('.berocket_aapf_widget').on("change", "input, select", function(){
407
+ if($(this).data('first_page') == '1' || berocket_aapf_widget_first_page_jump)
408
+ berocket_aapf_widget_first_page_jump = true;
409
+ else
410
+ berocket_aapf_widget_first_page_jump = false;
411
+ if($(this).attr('type') == 'checkbox' || $(this).attr('type') == 'radio')
412
+ {
413
+ if($(this).prop('checked'))
414
+ {
415
+ $('.'+$(this).next('label').attr('for')).prop('checked', true);
416
+ }
417
+ else
418
+ {
419
+ $('.'+$(this).next('label').attr('for')).prop('checked', false);
420
+ }
421
+ } else if($(this).is('select'))
422
+ {
423
+ $('select.'+$(this).data('taxonomy')).val($(this).find('option:selected').val());
424
+ }
425
+ updateProducts();
426
+ });
427
+
428
+ $( ".berocket_filter_slider" ).each(function (i,o){
429
+ $(o).slider({
430
+ range: true,
431
+ min: parseFloat($(o).data('min')),
432
+ max: parseFloat($(o).data('max')),
433
+ values: [$(o).data('value1'),$(o).data('value2')],
434
+ slide: function( event, ui ) {
435
+ $o = $(ui.handle).parents('div.berocket_filter_slider');
436
+ vals = ui.values;
437
+ if( $(o).hasClass('berocket_filter_price_slider') ){
438
+ vals[0] = vals[0].toFixed(2);
439
+ vals[1] = vals[1].toFixed(2);
440
+ }
441
+ $( '#'+$o.data('fields_1') ).val( vals[0] );
442
+ $( '#'+$o.data('fields_2') ).val( vals[1] );
443
+
444
+ if($(o).data('first_page') == '1' || berocket_aapf_widget_first_page_jump)
445
+ berocket_aapf_widget_first_page_jump = true;
446
+ else
447
+ berocket_aapf_widget_first_page_jump = false;
448
+ $('.slide div').each(function(i, obj)
449
+ {
450
+ if($(obj).data('taxonomy') == $(o).data('taxonomy'))
451
+ {
452
+ $(obj).slider("values", vals);
453
+ $( '#'+$(obj).data('fields_1') ).val( vals[0] );
454
+ $( '#'+$(obj).data('fields_2') ).val( vals[1] );
455
+ }
456
+ });
457
+ },
458
+ stop: function( ){
459
+ updateProducts();
460
+ }
461
+ });
462
+ });
463
+
464
+ $(".berocket_aapf_widget_height_control").each(function (i,o){
465
+ $(o).mCustomScrollbar({
466
+ axis: "xy",
467
+ theme: $(o).data('scroll_theme'),
468
+ scrollInertia: 300
469
+ });
470
+ });
471
+
472
+ $(".berocket_aapf_widget_selected_area").on('click', 'a', function (event){
473
+ event.preventDefault();
474
+ $obj = $(this);
475
+ el_type = $obj.data('el_type');
476
+ if ( el_type == 'checkbox' ) {
477
+ $('#'+$obj.data('el_id')+'-styler').click();
478
+ } else if ( el_type == 'radio' ) {
479
+ $('#'+$obj.data('el_id')+'-styler').reset();
480
+ } else if ( el_type == 'select' ) {
481
+ $('#'+$obj.data('el_id')+' option:selected').prop('checked', false);
482
+ } else if ( el_type == 'slider' ) {
483
+ $slider = $('#'+$obj.data('el_id')).closest('li').find('.berocket_filter_slider');
484
+
485
+ val1 = parseFloat($slider.data('min'));
486
+ val2 = parseFloat($slider.data('max'));
487
+
488
+ if( $slider.hasClass('berocket_filter_price_slider') ){
489
+ val1 = val1.toFixed(2);
490
+ val2 = val2.toFixed(2);
491
+ }
492
+
493
+ $( '#'+$slider.data('fields_1') ).val( val1 );
494
+ $( '#'+$slider.data('fields_2') ).val( val2 );
495
+
496
+ $slider.slider( "values", [ val1, val2 ] );
497
+
498
+ updateProducts();
499
+ }
500
+ });
501
+
502
+ // Option to take control over (default) sorting, make it AJAXy and work with filters
503
+ if( the_ajax_script.control_sorting ) {
504
+ $(document).on('submit', 'form.woocommerce-ordering', function (event) {
505
+ event.preventDefault();
506
+ });
507
+ $(document).on('change', 'select.orderby', function (event) {
508
+ event.preventDefault();
509
+ updateProducts(true);
510
+ });
511
+ }
512
+
513
+ aapf_action_init();
514
+
515
+ $(document).on('click', '.berocket_aapf_widget_update_button', function (event) {
516
+ event.preventDefault();
517
+ updateProducts(true);
518
+ });
519
+
520
+ update_data_containers();
521
+ update_selected_area();
522
+
523
+ $(document).on('click', '.berocket_label_widgets', function(event) {
524
+ if( $(this).prev('input').attr('type') == 'checkbox' || $(this).prev('input').attr('type') == 'radio' ) {
525
+ event.preventDefault();
526
+ if($(this).prev('input').prop('checked')) {
527
+ $('.'+$(this).attr('for')).prop('checked', false);
528
+ } else {
529
+ $('.'+$(this).attr('for')).prop('checked', true);
530
+ }
531
+ $(this).prev('input').trigger('change');
532
+ }
533
+ });
534
+
535
+ });
536
+ })(jQuery);
readme.txt CHANGED
@@ -2,18 +2,18 @@
2
  Plugin Name: Advanced AJAX Product Filters
3
  Contributors: dholovnia, berocket
4
  Donate link: http://berocket.com
5
- Tags: filters, product filters, ajax product filters, advanced product filters, woocommerce filters, woocommerce product filters, woocommerce ajax product filters
6
  Requires at least: 3.9
7
  Tested up to: 4.2.2
8
- Stable tag: 1.1.0.4
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
12
- WooCommerce AJAX Filters - advanced AJAX product filters plugin for WooCommerce.
13
 
14
  == Description ==
15
 
16
- WooCommerce AJAX Filters - advanced AJAX product filters plugin for WooCommerce. Add unlimited filters with one widget.
17
 
18
  = Features: =
19
 
@@ -28,29 +28,46 @@ WooCommerce AJAX Filters - advanced AJAX product filters plugin for WooCommerce.
28
  * Drag and Drop Filter Building
29
  * And More...
30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  = Demo =
32
  http://woocommerce-product-filter.berocket.com
33
 
 
34
  = How It Works: =
35
  *check installation*
36
 
37
 
38
- = New in recent version(s): =
 
 
 
 
 
39
  * Custom CSS class can be added per widget/filter
40
  * Update button - if added products will be updated only when user click Update button
41
  * Radio-box can be unselected by clicking it again
42
- * Urls are shortened using better structure to save filters
43
- * Fixed issue with shortened tags for shortcode.
44
- * Widget now has subcategories(hierarchy) to show all possible categories
45
  * Minor fixes
46
 
47
 
 
48
  = Shortcode: =
49
  * In editor `[br_filters attribute=price type=slider title="Price Filter"]`
50
  * In PHP `do_shortcode('[br_filters attribute=price type=slider title="Price Filter"]');`
51
 
52
  = Shortcode Options: =
53
- * `widget_type` - filter or update_button
54
  * `attribute`(required) - product attribute, eg price or length. Don't forget that woocommerce adding pa_ suffix for created attributes.
55
  So if you create new attribute `jump` its name is `pa_jump`
56
  * `type`(required) - checkbox, radio, slider or select
@@ -64,7 +81,6 @@ http://woocommerce-product-filter.berocket.com
64
 
65
  = Advanced Settings (Widget area): =
66
 
67
- * CSS Class - if you want to style filters in different manner you can add class here and use it in css
68
  * Product Category - if you want to pin your filter to category of the product this is good place to do it.
69
  Eg. You selling Phones and Cases for them. If user choose Category "Phones" filter "Have Wi-Fi" will appear
70
  but if user will choose "Cases" it will not be there as Admin set that "Have Wi-Fi" filter will be visible only on
@@ -96,9 +112,10 @@ http://woocommerce-product-filter.berocket.com
96
 
97
  = Step 2: =
98
  * Install and activate plugin
99
- * Go to Admin area -> Appearance -> Widgets
 
100
  * In Available Widgets ( left side of the screen ) find AJAX Product Filters
101
- * Drag it to Sidebar you choose for it
102
  * Enter title, choose attribute that will be used for filtering products, choose filter type,
103
  choose operator( whether product should have all selected values (AND) or one of them (OR) ),
104
  * Click save and go to your shop to check how it work.
@@ -115,6 +132,13 @@ http://woocommerce-product-filter.berocket.com
115
 
116
  == Changelog ==
117
 
 
 
 
 
 
 
 
118
  = 1.1.0.4 =
119
  * Minor fix
120
 
2
  Plugin Name: Advanced AJAX Product Filters
3
  Contributors: dholovnia, berocket
4
  Donate link: http://berocket.com
5
+ Tags: filters, product filters, ajax product filters, advanced product filters, woocommerce filters, woocommerce product filters, woocommerce ajax product filters, widget, plugin
6
  Requires at least: 3.9
7
  Tested up to: 4.2.2
8
+ Stable tag: 1.1.0.5
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
12
+ WooCommerce AJAX Product Filters - advanced AJAX product filters plugin for WooCommerce.
13
 
14
  == Description ==
15
 
16
+ WooCommerce AJAX Product Filters - advanced AJAX product filters plugin for WooCommerce. Add unlimited filters with one widget.
17
 
18
  = Features: =
19
 
28
  * Drag and Drop Filter Building
29
  * And More...
30
 
31
+ = Additional Features in Paid Plugin: =
32
+
33
+ * Filter by Attribute, Tag and Custom Taxonomy
34
+ * Customize filters look through admin
35
+ * Tag Cloud for Tag filter
36
+ * Slider can use strings as a value
37
+ * Filters can be collapsed by clicking on title, option to collapse filter on start
38
+ * Price Filter Custom Min and Max values
39
+ * Add custom CSS on admin settings page
40
+ * And More...
41
+
42
+ = Paid Plugin Link =
43
+ http://berocket.com/product/woocommerce-ajax-products-filter
44
+
45
  = Demo =
46
  http://woocommerce-product-filter.berocket.com
47
 
48
+
49
  = How It Works: =
50
  *check installation*
51
 
52
 
53
+ = In recent updates: =
54
+ * Jump to first page when filter changed
55
+ * Option to add text before and after price input fields
56
+ * Now only used values must be shown, not all
57
+ * Products are limited by category we are in
58
+ * Products amount on the first page fixed
59
  * Custom CSS class can be added per widget/filter
60
  * Update button - if added products will be updated only when user click Update button
61
  * Radio-box can be unselected by clicking it again
 
 
 
62
  * Minor fixes
63
 
64
 
65
+
66
  = Shortcode: =
67
  * In editor `[br_filters attribute=price type=slider title="Price Filter"]`
68
  * In PHP `do_shortcode('[br_filters attribute=price type=slider title="Price Filter"]');`
69
 
70
  = Shortcode Options: =
 
71
  * `attribute`(required) - product attribute, eg price or length. Don't forget that woocommerce adding pa_ suffix for created attributes.
72
  So if you create new attribute `jump` its name is `pa_jump`
73
  * `type`(required) - checkbox, radio, slider or select
81
 
82
  = Advanced Settings (Widget area): =
83
 
 
84
  * Product Category - if you want to pin your filter to category of the product this is good place to do it.
85
  Eg. You selling Phones and Cases for them. If user choose Category "Phones" filter "Have Wi-Fi" will appear
86
  but if user will choose "Cases" it will not be there as Admin set that "Have Wi-Fi" filter will be visible only on
112
 
113
  = Step 2: =
114
  * Install and activate plugin
115
+ * First of all go to Admin area -> WooCommerce -> Product Filter and check what global options you can manage
116
+ * After that go to Admin area -> Appearance -> Widgets
117
  * In Available Widgets ( left side of the screen ) find AJAX Product Filters
118
+ * Drag it to Sidebar you choose
119
  * Enter title, choose attribute that will be used for filtering products, choose filter type,
120
  choose operator( whether product should have all selected values (AND) or one of them (OR) ),
121
  * Click save and go to your shop to check how it work.
132
 
133
  == Changelog ==
134
 
135
+ = 1.1.0.5 =
136
+ * Enhancement - Option to add text before and after price input fields
137
+ * Enhancement - Jump to first page when filter changed
138
+ * Fix - Now only used values must be shown, not all
139
+ * Fix - Products are limited by category we are in
140
+ * Fix - Products amount on the first page is correct now
141
+
142
  = 1.1.0.4 =
143
  * Minor fix
144
 
templates/admin-settings.php CHANGED
@@ -1,13 +1,14 @@
1
  <div class="wrap">
2
- <form method="post" action="options.php">
3
- <?php
4
- settings_fields('br_filters_plugin_options');
5
- $options = get_option('br_filters_options');
6
- ?>
7
  <h2 class="nav-tab-wrapper filter_settings_tabs">
8
  <a href="#general" class="nav-tab nav-tab-active">General</a>
9
  <a href="#design" class="nav-tab">Design</a>
10
  <a href="#javascript" class="nav-tab">JavaScript</a>
 
11
  </h2>
12
  <div id="general" class="tab-item current">
13
  <table class="form-table">
@@ -66,7 +67,9 @@
66
  </table>
67
  </div>
68
  <div id="design" class="tab-item">
69
- ----
 
 
70
  </div>
71
  <div id="javascript" class="tab-item">
72
  <table class="form-table">
@@ -96,9 +99,26 @@
96
  </tr>
97
  </table>
98
  </div>
99
- <p class="submit">
100
- <input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
101
- </p>
102
- </form>
103
- <h4>WooCommerce AJAX Product Filters developed by <a href="http://berocket.com" target="_blank">BeRocket</a></h4>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
  </div>
1
  <div class="wrap">
2
+ <form method="post" action="options.php">
3
+ <?php
4
+ settings_fields('br_filters_plugin_options');
5
+ $options = get_option('br_filters_options');
6
+ ?>
7
  <h2 class="nav-tab-wrapper filter_settings_tabs">
8
  <a href="#general" class="nav-tab nav-tab-active">General</a>
9
  <a href="#design" class="nav-tab">Design</a>
10
  <a href="#javascript" class="nav-tab">JavaScript</a>
11
+ <a href="#customcss" class="nav-tab">Custom CSS</a>
12
  </h2>
13
  <div id="general" class="tab-item current">
14
  <table class="form-table">
67
  </table>
68
  </div>
69
  <div id="design" class="tab-item">
70
+ <a href="http://berocket.com/product/woocommerce-ajax-products-filter" target="_blank">
71
+ <img src="<?php echo AAPF_URL; ?>images/paid/styler.png" style="max-width: 100%;" />
72
+ </a>
73
  </div>
74
  <div id="javascript" class="tab-item">
75
  <table class="form-table">
99
  </tr>
100
  </table>
101
  </div>
102
+ <div id="customcss" class="tab-item">
103
+ <a href="http://berocket.com/product/woocommerce-ajax-products-filter" target="_blank">
104
+ <img src="<?php echo AAPF_URL; ?>images/paid/custom_css.png" style="max-width: 100%;" />
105
+ </a>
106
+ </div>
107
+ <p class="submit">
108
+ <input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
109
+ </p>
110
+ </form>
111
+ <h3>Receive more features and control with Paid version of the plugin:</h3>
112
+ <ul>
113
+ <li><b>- Filter by Attribute, Tag and Custom Taxonomy</b></li>
114
+ <li><b>- Customize filters look through admin</b></li>
115
+ <li><b>- Filters can be collapsed, option to collapse filter on start</b></li>
116
+ <li><b>- Price Filter Custom Min and Max values</b></li>
117
+ <li><b>- Tag Cloud for Tag filter</b></li>
118
+ <li><b>- Add custom CSS on admin settings page</b></li>
119
+ <li><b>- Slider can use strings as a value</b></li>
120
+ <li><b>- And More...</b></li>
121
+ </ul>
122
+ <h4>Support the plugin by purchasing paid version. This will provide faster growth, better support and much more functionality for the plugin!</h4>
123
+ <h4>Both <a href="https://wordpress.org/plugins/woocommerce-ajax-filters/" target="_blank">Free</a> and <a href="http://berocket.com/product/woocommerce-ajax-products-filter" target="_blank">Paid</a> versions of WooCommerce AJAX Product Filters developed by <a href="http://berocket.com" target="_blank">BeRocket</a></h4>
124
  </div>
templates/admin.php CHANGED
@@ -13,7 +13,7 @@
13
  <label for="<?php echo $this->get_field_id( 'title' ); ?>">Title: </label>
14
  <input id="<?php echo $this->get_field_id( 'title' ); ?>" type="text" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" />
15
  </p>
16
- <div class="berocket_aapf_admin_filter_widget_content" <?php if ( $instance['widget_type'] == 'update_button' or $instance['widget_type'] == 'selected_area' ) echo 'style="display: none;"'; ?>>
17
  <p>
18
  <label>Attribute:
19
  <select id="<?php echo $this->get_field_id( 'attribute' ); ?>" name="<?php echo $this->get_field_name( 'attribute' ); ?>" class="berocket_aapf_widget_admin_attribute_select">
@@ -36,6 +36,7 @@
36
  </select>
37
  </label>
38
  </p>
 
39
  <p <?php if ( $instance['attribute'] == 'price' or $instance['type'] == 'slider' ) echo " style='display: none;'"; ?> >
40
  <label>Operator:
41
  <select id="<?php echo $this->get_field_id( 'operator' ); ?>" name="<?php echo $this->get_field_name( 'operator' ); ?>" class="berocket_aapf_widget_admin_operator_select">
@@ -44,6 +45,14 @@
44
  </select>
45
  </label>
46
  </p>
 
 
 
 
 
 
 
 
47
  <p>
48
  <a href="#" class='berocket_aapf_advanced_settings_pointer'>Advanced Settings</a>
49
  </p>
@@ -99,5 +108,11 @@
99
  <?php endforeach; ?>
100
  </select>
101
  </p>
 
 
 
 
 
 
102
  </div>
103
  </div>
13
  <label for="<?php echo $this->get_field_id( 'title' ); ?>">Title: </label>
14
  <input id="<?php echo $this->get_field_id( 'title' ); ?>" type="text" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" />
15
  </p>
16
+ <div class="berocket_aapf_admin_filter_widget_content" <?php if ( $instance['widget_type'] == 'update_button' or $instance['widget_type'] == 'selected_area' ){ echo 'style="display: none;"';} else { echo 'style="float: none;"'; } ?>>
17
  <p>
18
  <label>Attribute:
19
  <select id="<?php echo $this->get_field_id( 'attribute' ); ?>" name="<?php echo $this->get_field_name( 'attribute' ); ?>" class="berocket_aapf_widget_admin_attribute_select">
36
  </select>
37
  </label>
38
  </p>
39
+
40
  <p <?php if ( $instance['attribute'] == 'price' or $instance['type'] == 'slider' ) echo " style='display: none;'"; ?> >
41
  <label>Operator:
42
  <select id="<?php echo $this->get_field_id( 'operator' ); ?>" name="<?php echo $this->get_field_name( 'operator' ); ?>" class="berocket_aapf_widget_admin_operator_select">
45
  </select>
46
  </label>
47
  </p>
48
+ <p <?php if ( $instance['attribute'] != 'price' ) echo " style='display: none;'"; ?> class="berocket_aapf_widget_admin_price_attribute" >
49
+ <label for="<?php echo $this->get_field_id( 'text_before_price' ); ?>">Text before price: </label>
50
+ <input id="<?php echo $this->get_field_id( 'text_before_price' ); ?>" type="text" name="<?php echo $this->get_field_name( 'text_before_price' ); ?>" value="<?php echo $instance['text_before_price']; ?>" />
51
+ </p>
52
+ <p <?php if ( $instance['attribute'] != 'price' ) echo " style='display: none;'"; ?> class="berocket_aapf_widget_admin_price_attribute" >
53
+ <label for="<?php echo $this->get_field_id( 'text_after_price' ); ?>">Text after price: </label>
54
+ <input id="<?php echo $this->get_field_id( 'text_after_price' ); ?>" type="text" name="<?php echo $this->get_field_name( 'text_after_price' ); ?>" value="<?php echo $instance['text_after_price']; ?>" />
55
+ </p>
56
  <p>
57
  <a href="#" class='berocket_aapf_advanced_settings_pointer'>Advanced Settings</a>
58
  </p>
108
  <?php endforeach; ?>
109
  </select>
110
  </p>
111
+ <p>
112
+ <label>
113
+ <input type="checkbox" name="<?php echo $this->get_field_name( 'first_page_jump' ); ?>" <?php if ( $instance['first_page_jump'] ) echo 'checked'; ?> value="1" class="berocket_aapf_widget_admin_height_input" />
114
+ Jump to first page?
115
+ </label>
116
+ </p>
117
  </div>
118
  </div>
templates/checkbox.php CHANGED
@@ -4,26 +4,32 @@
4
  *
5
  * Override this template by copying it to yourtheme/woocommerce-filters/checkbox.php
6
  *
7
- * @author BeRocket
8
- * @package WooCommerce-Filters/Templates
9
- * @version 1.0.1
10
  */
11
  ?>
12
- <?php foreach( $terms as $term ): ?>
13
- <li>
14
- <span>
15
- <input class="<?php echo $uo['class']['checkbox_radio'] ?>" type='checkbox' id='radio_<?php echo $term->term_id ?>'
16
- data-term_id='<?php echo $term->term_id ?>' data-taxonomy='<?php echo $term->taxonomy ?>' data-operator='<?php echo $operator ?>'
17
- <?php
18
- if( @ $_POST['terms'] ){
19
- foreach( $_POST['terms'] as $p_term ){
20
- if( $p_term[0] == $term->taxonomy and $term->term_id == $p_term[1] ){
21
- echo ' checked="checked"';
22
- break;
23
- }
24
- }
25
- }
26
- ?> /><label for='radio_<?php echo $term->term_id ?>'> <?php echo $term->name ?></label>
27
- </span>
28
- </li>
29
- <?php endforeach; ?>
 
 
 
 
 
 
4
  *
5
  * Override this template by copying it to yourtheme/woocommerce-filters/checkbox.php
6
  *
7
+ * @author BeRocket
8
+ * @package WooCommerce-Filters/Templates
9
+ * @version 1.0.1
10
  */
11
  ?>
12
+ <?php
13
+ if ( @ $terms ):
14
+ foreach( $terms as $term ):
15
+ ?>
16
+ <li>
17
+ <span>
18
+ <input id='checkbox_<?=$term->term_id?>' class="<?php echo @ $uo['class']['checkbox_radio'] ?> checkbox_<?php echo $term->term_id ?>" type='checkbox' data-first_page='<?php echo (($first_page_jump) ? '1' : '0'); ?>'
19
+ data-term_id='<?php echo $term->term_id ?>' data-taxonomy='<?php echo $term->taxonomy ?>' data-operator='<?php echo $operator ?>'
20
+ <?php
21
+ if( @ $_POST['terms'] ){
22
+ foreach( $_POST['terms'] as $p_term ){
23
+ if( @ $p_term[0] == $term->taxonomy and $term->term_id == @ $p_term[1] ){
24
+ echo ' checked="checked"';
25
+ break;
26
+ }
27
+ }
28
+ }
29
+ ?> /><label for='checkbox_<?php echo $term->term_id ?>' class="berocket_label_widgets"> <?php echo $term->name ?></label>
30
+ </span>
31
+ </li>
32
+ <?php
33
+ endforeach;
34
+ endif;
35
+ ?>
templates/radio.php CHANGED
@@ -1,19 +1,24 @@
1
- <?php foreach( $terms as $term ): ?>
2
- <li>
3
- <span>
4
- <input class="<?php echo $uo['class']['checkbox_radio'] ?>" type='radio' id='radio_<?php echo $term->term_id ?>'
5
- name='radio_<?php echo $term->taxonomy ?>_<?php echo $x ?>' data-term_id='<?php echo $term->term_id ?>'
6
- data-taxonomy='<?php echo $term->taxonomy ?>' data-operator='<?php echo $operator ?>'
7
- <?php
8
- if( @ $_POST['terms'] ){
9
- foreach( $_POST['terms'] as $p_term ){
10
- if( $p_term[0] == $term->taxonomy and $term->term_id == $p_term[1] ){
11
- echo ' checked="checked"';
12
- break;
13
- }
14
- }
15
- }
16
- ?> /><label for='radio_<?php echo $term->term_id ?>'> <?php echo $term->name ?></label>
17
- </span>
18
- </li>
19
- <?php endforeach; ?>
 
 
 
 
 
1
+ <?php
2
+ $random_name = rand();
3
+ if ( $terms ):
4
+ foreach( $terms as $term ): ?>
5
+ <li>
6
+ <span>
7
+ <input class="<?php echo @ $uo['class']['checkbox_radio'] ?> radio_<?php echo $term->term_id?>" type='radio' id='radio_<?php echo $term->term_id?>_<?php echo $random_name ?>'
8
+ name='radio_<?php echo $term->taxonomy ?>_<?php echo $x ?>_<?php echo $random_name ?>'
9
+ data-term_id='<?php echo $term->term_id ?>' data-taxonomy='<?php echo $term->taxonomy ?>' data-operator='<?php echo $operator ?>' data-first_page='<?php echo (($first_page_jump) ? '1' : '0'); ?>'
10
+ <?php
11
+ if( @ $_POST['terms'] ){
12
+ foreach( $_POST['terms'] as $p_term ){
13
+ if( $p_term[0] == $term->taxonomy and $term->term_id == $p_term[1] ){
14
+ echo ' checked="checked"';
15
+ break;
16
+ }
17
+ }
18
+ }
19
+ ?> /><label for='radio_<?php echo $term->term_id ?>' class="berocket_label_widgets"> <?php echo $term->name ?></label>
20
+ </span>
21
+ </li>
22
+ <?php endforeach;
23
+ endif;
24
+ ?>
templates/select.php CHANGED
@@ -1,22 +1,22 @@
1
  <li>
2
- <span>
3
- <select class="<?php echo $uo['class']['selectbox'] ?>">
4
- <option data-taxonomy='<?php echo $terms[0]->taxonomy ?>' value=''>Any</option>
5
- <?php foreach( $terms as $term ): ?>
6
- <option data-term_id='<?php echo $term->term_id ?>' data-taxonomy='<?php echo $term->taxonomy ?>'
7
- data-operator='<?php echo $operator ?>'
8
- <?php
9
- if( @ $_POST['terms'] ){
10
- foreach( $_POST['terms'] as $p_term ){
11
- if( $p_term[0] == $term->taxonomy and $term->term_id == $p_term[1] ){
12
- echo ' selected="selected"';
13
- break;
14
- }
15
- }
16
- }
17
- ?>
18
- ><?php echo $term->name ?></option>
19
- <?php endforeach; ?>
20
- </select>
21
- </span>
22
  </li>
1
  <li>
2
+ <span>
3
+ <select class="<?php echo @ $uo['class']['selectbox'] ?> <?php echo $terms[0]->taxonomy?>" data-taxonomy='<?php echo $terms[0]->taxonomy ?>'>
4
+ <option data-taxonomy='<?php echo $terms[0]->taxonomy ?>' value=''>Any</option>
5
+ <?php foreach( $terms as $term ): ?>
6
+ <option value='<?php echo $term->term_id?>' data-term_id='<?php echo $term->term_id ?>' data-taxonomy='<?php echo $term->taxonomy ?>'
7
+ data-operator='<?php echo $operator ?>' data-first_page='<?php echo (($first_page_jump) ? '1' : '0'); ?>'
8
+ <?php
9
+ if( @ $_POST['terms'] ){
10
+ foreach( $_POST['terms'] as $p_term ){
11
+ if( $p_term[0] == $term->taxonomy and $term->term_id == $p_term[1] ){
12
+ echo ' selected="selected"';
13
+ break;
14
+ }
15
+ }
16
+ }
17
+ ?>
18
+ ><?php echo $term->name ?></option>
19
+ <?php endforeach; ?>
20
+ </select>
21
+ </span>
22
  </li>
templates/slider.php CHANGED
@@ -1,15 +1,19 @@
1
  <?php $unique = rand( 0, time() ); ?>
2
  <li class='<?php echo $main_class ?>'>
3
- <span class='left'>
4
- <input type='text' disabled id='text_<?php echo $filter_slider_id . $unique ?>_1' value='<?php echo $slider_value1 ?>'/>
5
- </span>
6
- <span class='right'>
7
- <input type='text' disabled id='text_<?php echo $filter_slider_id . $unique ?>_2' value='<?php echo $slider_value2 ?>'/>
8
- </span>
9
- <span class='slide <?php echo $uo['class']['slider'] ?>'>
10
- <div class='<?php echo $slider_class ?>' data-taxonomy='<?php echo $filter_slider_id ?>' data-min='<?php echo $min ?>'
11
- data-max='<?php echo $max ?>' data-value1='<?php echo $slider_value1 ?>' data-value2='<?php echo $slider_value2 ?>'
12
- data-fields_1='text_<?php echo $filter_slider_id . $unique ?>_1'
13
- data-fields_2='text_<?php echo $filter_slider_id . $unique ?>_2'></div>
14
- </span>
 
 
 
 
15
  </li>
1
  <?php $unique = rand( 0, time() ); ?>
2
  <li class='<?php echo $main_class ?>'>
3
+ <span class='left'>
4
+ <?php echo $text_before_price ?><input type='text' disabled id='text_<?php echo $filter_slider_id . $unique ?>_1' value='<?php echo $slider_value1 ?>'
5
+ /><?php echo $text_after_price ?>
6
+ </span>
7
+ <span class='right'>
8
+ <?php echo $text_before_price ?><input type='text' disabled id='text_<?php echo $filter_slider_id . $unique ?>_2' value='<?php echo $slider_value2 ?>'
9
+ /><?php echo $text_after_price ?>
10
+ </span>
11
+ <span class='slide <?php echo @ $uo['class']['slider'] ?>'>
12
+ <div class='<?php echo $slider_class ?>' data-taxonomy='<?php echo $filter_slider_id ?>'
13
+ data-min='<?php echo $min ?>' data-max='<?php echo $max ?>'
14
+ data-value1='<?php echo $slider_value1 ?>' data-value2='<?php echo $slider_value2 ?>'
15
+ data-first_page='<?php echo (($first_page_jump) ? '1' : '0'); ?>'
16
+ data-fields_1='text_<?php echo $filter_slider_id . $unique ?>_1'
17
+ data-fields_2='text_<?php echo $filter_slider_id . $unique ?>_2'></div>
18
+ </span>
19
  </li>
templates/widget_start.php CHANGED
@@ -1,2 +1,2 @@
1
- <h3 class="widget-title berocket_aapf_widget-title <?php echo $css_class ?>"><?php echo $title ?></h3>
2
  <ul class='berocket_aapf_widget <?php echo $class ?> <?php echo $css_class ?>' <?php echo $style ?> data-scroll_theme='<?php echo $scroll_theme ?>'>
1
+ <h3 class="widget-title berocket_aapf_widget-title <?php echo $css_class ?>"><span><?php echo $title ?></span></h3>
2
  <ul class='berocket_aapf_widget <?php echo $class ?> <?php echo $css_class ?>' <?php echo $style ?> data-scroll_theme='<?php echo $scroll_theme ?>'>
woocommerce-filters.php CHANGED
@@ -1,14 +1,15 @@
1
  <?php
2
- /*
3
- Plugin Name: Advanced AJAX Product Filters for WooCommerce
4
- Plugin URI: http://berocket.com/wp-plugins/product-filters
5
- Description: Advanced AJAX Product Filters for WooCommerce
6
- Version: 1.1.0.4
7
- Author: BeRocket
8
- Author URI: http://berocket.com
9
- */
10
 
11
  define( "AAPF_TEMPLATE_PATH", plugin_dir_path( __FILE__ ) . "templates/" );
 
12
 
13
  require_once dirname( __FILE__ ).'/includes/widget.php';
14
  require_once dirname( __FILE__ ).'/includes/functions.php';
@@ -36,6 +37,7 @@ class BeRocket_AAPF {
36
  add_action( 'admin_init', array( __CLASS__, 'register_br_options' ) );
37
 
38
  add_shortcode( 'br_filters', array( __CLASS__, 'shortcode' ) );
 
39
 
40
  if( @ $_GET['filters'] and ! @ defined( 'DOING_AJAX' ) ) {
41
  add_filter( 'pre_get_posts', array( __CLASS__, 'apply_user_filters' ) );
@@ -52,13 +54,16 @@ class BeRocket_AAPF {
52
  'widget_type' => 'filter',
53
  'attribute' => '',
54
  'type' => 'checkbox',
 
55
  'operator' => 'OR',
56
  'title' => '',
57
- 'product_cat' => '',
58
  'cat_propagation' => '',
59
  'height' => 'auto',
60
  'scroll_theme' => 'dark',
61
  ), $atts );
 
 
62
  if ( ! $a['attribute'] || ! $a['type'] ) return false;
63
 
64
  $BeRocket_AAPF_Widget = new BeRocket_AAPF_Widget();
@@ -110,29 +115,48 @@ class BeRocket_AAPF {
110
  global $wpdb;
111
 
112
  if ( @ $_POST['limits'] ) {
113
- $matched_products = array( 0 );
114
 
115
  foreach ( $_POST['limits'] as $v ) {
116
  $matched_products_query = $wpdb->get_results( $wpdb->prepare("
117
- SELECT DISTINCT ID, post_parent, post_type FROM $wpdb->posts
118
- INNER JOIN $wpdb->term_relationships as tr ON ID = tr.object_id
119
- INNER JOIN $wpdb->term_taxonomy as tt ON tt.term_taxonomy_id = tr.term_taxonomy_id
120
- INNER JOIN $wpdb->terms as t ON t.term_id = tt.term_id
121
- WHERE post_type IN ( 'product', 'product_variation' ) AND post_status = 'publish'
122
- AND tt.taxonomy = %s AND t.slug BETWEEN %d AND %d
123
- ", $v[0], $v[1], $v[2] ), OBJECT_K );
124
 
125
  if ( $matched_products_query ) {
126
- foreach ( $matched_products_query as $product ) {
127
- if ( $product->post_type == 'product' )
128
- $matched_products[] = $product->ID;
129
- if ( $product->post_parent > 0 && ! in_array( $product->post_parent, $matched_products ) )
130
- $matched_products[] = $product->post_parent;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
131
  }
132
  }
133
  }
 
 
 
 
134
 
135
- $matched_products = array_unique( $matched_products );
136
 
137
  // Filter the id's
138
  if ( sizeof( $filtered_posts ) == 0) {
@@ -150,14 +174,14 @@ class BeRocket_AAPF {
150
 
151
  if ( @ $_POST['price'] ) {
152
  $matched_products = array( 0 );
153
- $min = floatval( $_POST['price'][0] );
154
- $max = floatval( $_POST['price'][1] );
155
 
156
  $matched_products_query = apply_filters( 'woocommerce_price_filter_results', $wpdb->get_results( $wpdb->prepare("
157
- SELECT DISTINCT ID, post_parent, post_type FROM $wpdb->posts
158
- INNER JOIN $wpdb->postmeta ON ID = post_id
159
- WHERE post_type IN ( 'product', 'product_variation' ) AND post_status = 'publish' AND meta_key = %s AND meta_value BETWEEN %d AND %d
160
- ", '_price', $min, $max ), OBJECT_K ), $min, $max );
161
 
162
  if ( $matched_products_query ) {
163
  foreach ( $matched_products_query as $product ) {
@@ -214,8 +238,8 @@ class BeRocket_AAPF {
214
  }
215
 
216
  public static function br_add_defaults(){
217
- $tmp = get_option('br_filters_options');
218
- if( @$tmp['chk_default_options_db'] == '1' or ! @is_array( $tmp ) ){
219
  delete_option( 'br_filters_options' );
220
  update_option( 'br_filters_options', BeRocket_AAPF::$defaults );
221
  }
@@ -225,6 +249,10 @@ class BeRocket_AAPF {
225
  delete_option( 'br_filters_options' );
226
  }
227
 
 
 
 
 
228
  }
229
 
230
  new BeRocket_AAPF;
1
  <?php
2
+ /**
3
+ * Plugin Name: Advanced AJAX Product Filters for WooCommerce
4
+ * Plugin URI: http://berocket.com/wp-plugins/product-filters
5
+ * Description: Advanced AJAX Product Filters for WooCommerce
6
+ * Version: 1.1.0.5
7
+ * Author: BeRocket
8
+ * Author URI: http://berocket.com
9
+ */
10
 
11
  define( "AAPF_TEMPLATE_PATH", plugin_dir_path( __FILE__ ) . "templates/" );
12
+ define( "AAPF_URL", plugin_dir_url( __FILE__ ) );
13
 
14
  require_once dirname( __FILE__ ).'/includes/widget.php';
15
  require_once dirname( __FILE__ ).'/includes/functions.php';
37
  add_action( 'admin_init', array( __CLASS__, 'register_br_options' ) );
38
 
39
  add_shortcode( 'br_filters', array( __CLASS__, 'shortcode' ) );
40
+ add_filter( 'loop_shop_per_page', array( __CLASS__, 'loop_shop_per_page' ), 99 );
41
 
42
  if( @ $_GET['filters'] and ! @ defined( 'DOING_AJAX' ) ) {
43
  add_filter( 'pre_get_posts', array( __CLASS__, 'apply_user_filters' ) );
54
  'widget_type' => 'filter',
55
  'attribute' => '',
56
  'type' => 'checkbox',
57
+ 'filter_type' => 'attribute',
58
  'operator' => 'OR',
59
  'title' => '',
60
+ 'product_cat' => null,
61
  'cat_propagation' => '',
62
  'height' => 'auto',
63
  'scroll_theme' => 'dark',
64
  ), $atts );
65
+ if(isset($a['product_cat']))
66
+ $a['product_cat'] = json_encode(explode("|",$a['product_cat']));
67
  if ( ! $a['attribute'] || ! $a['type'] ) return false;
68
 
69
  $BeRocket_AAPF_Widget = new BeRocket_AAPF_Widget();
115
  global $wpdb;
116
 
117
  if ( @ $_POST['limits'] ) {
118
+ $matched_products = false;
119
 
120
  foreach ( $_POST['limits'] as $v ) {
121
  $matched_products_query = $wpdb->get_results( $wpdb->prepare("
122
+ SELECT DISTINCT ID, post_parent, post_type FROM $wpdb->posts
123
+ INNER JOIN $wpdb->term_relationships as tr ON ID = tr.object_id
124
+ INNER JOIN $wpdb->term_taxonomy as tt ON tt.term_taxonomy_id = tr.term_taxonomy_id
125
+ INNER JOIN $wpdb->terms as t ON t.term_id = tt.term_id
126
+ WHERE post_type IN ( 'product', 'product_variation' ) AND post_status = 'publish'
127
+ AND tt.taxonomy = %s AND t.slug BETWEEN %d AND %d
128
+ ", $v[0], $v[1], $v[2] ), OBJECT_K );
129
 
130
  if ( $matched_products_query ) {
131
+ if($matched_products === false)
132
+ {
133
+ $matched_products = array( 0 );
134
+ foreach ( $matched_products_query as $product ) {
135
+ if ( $product->post_type == 'product' )
136
+ $matched_products[] = $product->ID;
137
+ if ( $product->post_parent > 0 && ! in_array( $product->post_parent, $matched_products ) )
138
+ $matched_products[] = $product->post_parent;
139
+ }
140
+ }
141
+ else
142
+ {
143
+ $new_products = array( 0 );
144
+ foreach ( $matched_products_query as $product ) {
145
+ if ( $product->post_type == 'product' && in_array($product->ID, $matched_products))
146
+ $new_products[] = $product->ID;
147
+ if ( $product->post_parent > 0 && ! in_array( $product->post_parent, $matched_products ) && in_array($product->post_parent, $matched_products))
148
+ $new_products[] = $product->post_parent;
149
+ }
150
+ $matched_products = $new_products;
151
  }
152
  }
153
  }
154
+ if($matched_products === false)
155
+ {
156
+ $matched_products = array( 0 );
157
+ }
158
 
159
+ $matched_products = @ array_unique( $matched_products );
160
 
161
  // Filter the id's
162
  if ( sizeof( $filtered_posts ) == 0) {
174
 
175
  if ( @ $_POST['price'] ) {
176
  $matched_products = array( 0 );
177
+ $min = floatval( $_POST['price'][0] );
178
+ $max = floatval( $_POST['price'][1] );
179
 
180
  $matched_products_query = apply_filters( 'woocommerce_price_filter_results', $wpdb->get_results( $wpdb->prepare("
181
+ SELECT DISTINCT ID, post_parent, post_type FROM $wpdb->posts
182
+ INNER JOIN $wpdb->postmeta ON ID = post_id
183
+ WHERE post_type IN ( 'product', 'product_variation' ) AND post_status = 'publish' AND meta_key = %s AND meta_value BETWEEN %d AND %d
184
+ ", '_price', $min, $max ), OBJECT_K ), $min, $max );
185
 
186
  if ( $matched_products_query ) {
187
  foreach ( $matched_products_query as $product ) {
238
  }
239
 
240
  public static function br_add_defaults(){
241
+ $tmp = get_option( 'br_filters_options' );
242
+ if( @ $tmp['chk_default_options_db'] == '1' or ! @ is_array( $tmp ) ){
243
  delete_option( 'br_filters_options' );
244
  update_option( 'br_filters_options', BeRocket_AAPF::$defaults );
245
  }
249
  delete_option( 'br_filters_options' );
250
  }
251
 
252
+ public static function loop_shop_per_page() {
253
+ return get_option( 'posts_per_page' );
254
+ }
255
+
256
  }
257
 
258
  new BeRocket_AAPF;