PageSourceSearch

https://www.bestbassgear.com/js/amasty/amshopby/amshopby.js?q=051216

js bestbassgear.com collected 2026-10-02 17:58:48 UTC 7,862 bytes, 288 lines download raw bytes

1function amshopby_start(){
2    $$('.block-layered-nav .form-button').each(function (e){
3        e.observe('click', amshopby_price_click_callback);
4    });
5
6    $$('.block-layered-nav .input-text').each(function (e){
7        e.observe('focus', amshopby_price_focus_callback);
8        e.observe('keypress', amshopby_price_click_callback);
9    });
10    
11    $$('a.amshopby-less', 'a.amshopby-more').each(function (a){
12        a.observe('click', amshopby_toggle);
13    });
14    
15    $$('span.amshopby-plusminus').each(function (span){
16        span.observe('click', amshopby_category_show);
17    });
18    
19    $$('.block-layered-nav dt').each(function (dt){
20        dt.observe('click', amshopby_filter_show);
21    });
22
23    // $$('.block-layered-nav dd').each(function (dd){
24    //     dd.observe('mouseleave', amshopby_filter_hide);
25    // });
26    
27    
28    $$('.block-layered-nav dt img').each(function (img){
29        img.observe('mouseover', amshopby_tooltip_show);
30        img.observe('mouseout', amshopby_tooltip_hide);
31    });
32    
33    $$('.amshopby-slider-param').each(function (item) {
34        param = item.value.split(',');
35        amshopby_slider(param[0], param[1], param[2], param[3], param[4], param[5], param[6], param[7]);
36    });
37} 
38
39function amshopby_price_click_callback(evt, decimal) {
40    
41    if (evt && evt.type == 'keypress' && 13 != evt.keyCode)
42        return;
43    
44    var prefix = 'amshopby-price';
45    // from slider
46    if (typeof(evt) == 'string'){
47        prefix = evt;    
48    } 
49    else {
50        var el = Event.findElement(evt, 'input');
51        if (!Object.isElement(el)){
52            el = Event.findElement(evt, 'button');
53        }
54        prefix = el.name;
55    }  
56    
57    var a = prefix + '-from';
58    var b = prefix + '-to';
59    
60    var numFrom = amshopby_price_format($(a).value, decimal);
61    var numTo   = amshopby_price_format($(b).value, decimal);
62  
63    if ((numFrom < 0.01 && numTo < 0.01) || numFrom < 0 || numTo < 0) {   
64        return;   
65    }
66    
67    var url =  $(prefix +'-url').value.gsub(a, numFrom).gsub(b, numTo);
68    amshopby_set_location(url);
69}
70
71function amshopby_price_focus_callback(evt){
72    var el = Event.findElement(evt, 'input');
73    if (isNaN(parseFloat(el.value))){
74        el.value = '';
75    } 
76}
77
78
79function amshopby_price_format(num, decimal){
80    num = parseFloat(num);
81
82    if (isNaN(num))
83        num = 0;
84        
85    if (decimal >= 0) { 
86        return num.toFixed(decimal);
87    } else {
88        return Math.round(num); 
89    }
90}
91
92
93function amshopby_slider(width, from, to, max_value, prefix, min_value, ratePP, decimal) {
94    
95    width = parseFloat(width);
96    from = parseFloat(from);
97    to = parseFloat(to);
98    max_value = parseFloat(max_value);
99    min_value = parseFloat(min_value);
100    
101    var slider = $(prefix); 
102    //      var allowedVals = new Array(11);
103    //      for (var i=0; i<allowedVals.length; ++i){
104    //          allowedVals[i] = Math.round(i * to /10);
105    //      }
106    return new Control.Slider(slider.select('.handle'), slider, {
107        range: $R(0, width),
108        sliderValue: [from, to],
109        restricted: true,
110        //values: allowedVals,
111        
112        onChange: function (values){
113            this.onSlide(values);  
114            amshopby_price_click_callback(prefix, decimal);  
115        },
116        onSlide: function(values) {
117            var fromValue = (min_value + ratePP * values[0]).toFixed(decimal);
118            var toValue   = (min_value + ratePP * values[1]).toFixed(decimal);
119
120            if ($(prefix + '-slider-bar')) {
121                var barWidth = values[1] - values[0] - 1;
122                if (values[1] == values[0]) {
123                    barWidth = 0;
124                }
125                $(prefix + '-slider-bar').setStyle({
126                    width : barWidth + 'px',
127                    left : values[0] + 'px'
128                });
129            }
130          
131          
132            if ($(prefix+'-from')) {
133                $(prefix+'-from').value = fromValue;
134                $(prefix+'-to').value   = toValue;
135            }
136
137            if ($(prefix + '-from-slider')) {
138                $(prefix + '-from-slider').update(fromValue);
139                $(prefix + '-to-slider').update(toValue);
140            }
141        }
142    });
143
144}
145
146function amshopby_toggle(evt){
147    var attr = Event.findElement(evt, 'a').id.substr(14);
148    
149    $$('.amshopby-attr-' + attr).invoke('toggle');       
150        
151    $('amshopby-less-' + attr, 'amshopby-more-' + attr).invoke('toggle');
152    
153    Event.stop(evt);
154    return false;
155}
156
157function amshopby_category_show(evt){
158    var span = Event.findElement(evt, 'span');
159    var id = span.id.substr(16);
160    
161    $$('.amshopby-cat-parentid-' + id).invoke('toggle');
162
163    span.toggleClassName('minus'); 
164    Event.stop(evt);
165          
166    return false;
167}
168
169function amshopby_filter_show(evt){
170    var dt = Event.findElement(evt, 'dt');
171    var clsnampos = dt.className;
172    if (clsnampos.indexOf("amshopby-collapsed") > -1) {
173         jQuery(".top_filters").find("dt").addClass('amshopby-collapsed');
174        jQuery(".top_filters").find("dd ol").toggle(); 
175        //dt.removeClass('amshopby-collapsed');
176    }
177            dt.next('dd').down('ol').setStyle({display: 'block'});
178            // dt.setStyle({display: 'block'})
179            dt.toggleClassName('amshopby-collapsed'); 
180    
181    Event.stop(evt);
182    return false;
183}
184function amshopby_filter_hide(evt){
185    // var dd = Event.findElement(evt, 'dt');
186    
187    // dd.next('dd').down('ol').toggle();
188    // dd.toggleClassName('amshopby-collapsed');
189    jQuery(".top_filters").find(" dt").addClass('amshopby-collapsed');
190    jQuery(".top_filters").find("dd ol").toggle(); 
191    
192    // Event.stop(evt);
193    // return false;
194}
195
196
197
198
199
200
201function amshopby_tooltip_show(evt){
202    var img = Event.findElement(evt, 'img');
203    var txt = img.alt;
204    
205    var tooltip = $(img.id + '-tooltip');
206    if (!tooltip) {
207        tooltip           = document.createElement('div');
208        tooltip.className = 'amshopby-tooltip';
209        tooltip.id        = img.id + '-tooltip';
210        tooltip.innerHTML = img.alt;
211    
212        document.body.appendChild(tooltip);
213    }
214    
215    var offset = Element.cumulativeOffset(img);
216    tooltip.style.top  = offset[1] + 'px';
217    tooltip.style.left = (offset[0] + 30) + 'px';
218    tooltip.show();
219}
220
221function amshopby_tooltip_hide(evt){
222    var img = Event.findElement(evt, 'img');
223    var tooltip = $(img.id + '-tooltip');
224    if (tooltip) {
225        tooltip.hide();
226    }    
227}
228
229function amshopby_set_location(url){
230    if (typeof amshopby_working != 'undefined'){
231        return amshopby_ajax_request(url);    
232    }
233    else {
234        return setLocation(url);
235    }
236}
237
238function amshopby_attr_highlight(li, str)
239{
240	/* 
241	 * Remove previous highlight
242	 */
243	amshopby_attr_unhighlight(li);
244	
245	var ch = li.childElements();
246	if (ch.length >  0) {
247		ch = ch[0];
248		if (ch.tagName == 'A') {
249			ch.innerHTML = ch.innerHTML.replace(new RegExp(str,'gi'), '<span class="amshopby-hightlighted">' + str + '</span>');
250		}
251	}
252}
253
254function amshopby_attr_unhighlight(li)
255{
256	var ch = li.childElements();
257	if (ch.length > 0) {
258		ch = ch[0];
259		if (ch.tagName == 'A') {
260			ch.innerHTML = li.readAttribute('rel');
261		}
262	}
263}
264
265
266function amshopby_attr_search(searchBox){
267    var str = searchBox.value.toLowerCase();
268    var all = searchBox.up(1).childElements();
269
270    all.each(function(li) {
271		val = li.readAttribute('rel').toLowerCase();
272        if (!val || val == 'search' || val.indexOf(str) > -1) {
273        	if (str != '' && val.indexOf(str) > -1) {
274        		amshopby_attr_highlight(li, str);
275        	} else {
276        		amshopby_attr_unhighlight(li);	
277        	}
278            li.show();
279        } 
280        else {
281        	amshopby_attr_unhighlight(li);
282            li.hide();
283        }
284	});
285}
286
287
288document.observe("dom:loaded", function() { amshopby_start(); });

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.