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.