PageSourceSearch

https://www.scampparnashop.hu/wa_script/js/params.js?u=2026-09-02-11-10

js scampparnashop.hu collected 2026-09-25 18:52:11 UTC 15,032 bytes, 508 lines download raw bytes

1/**
2 * @name params.js
3 *
4 *
5 *
6 * @copyright Bohemiasoft s.r.o. - 10.10.2014
7 * @author Michal Schwarz <[email protected]>
8 *
9 */
10
11/**
12 * Jako parametr prijme html fragment e-products a pokud neni undefined,
13 * nahradi s tim aktualni stranku.
14 * Inicializuje potrebny ovladaci javascript.
15 *
16 * @param {string} $new_html html fragment e-products
17 * @returns {undefined}
18 */
19function products_refresh($new_html)
20{
21  if(BS.Fce.loading_run <= 1)
22  {
23    if(typeof($new_html) !== 'undefined')
24    {
25      clear_products_page();
26      $('#products_place').after($new_html);
27      $(document).triggerHandler("page:productsLoaded");
28    }
29    init_slider();
30    init_tabs();
31    // vyjizdece v akci, nejprodavanejsi, atd nad. produktem
32    if(typeof(init_products_hovers) === 'function')
33    {
34      init_products_hovers();
35    }
36    $( ".centerpage_params_filters li" ).removeClass( "ui-corner-top" ).addClass( "ui-corner-left" );
37    //$( ".params_filter_areas input.price" ).number( true, 0, ',', ' ');
38  }
39  BS.Fce.hide_top_bar_loading();
40}
41
42/**
43 * Smaze z produktove stranky veskera data pro refresh - produkty, strankovani, parametry, razeni...
44 *
45 * @returns {undefined}
46 */
47function clear_products_page()
48{
49  $('#masterpage div#centerpage_params_filter_area, #masterpage div#products_sorting_box, #masterpage .productList').remove();
50  //na šabloně krypton jsou všechny produktu v divu
51  $("#incenterpage").find("div.products_wrap").remove();
52  $('#masterpage div.product').each(function (){
53    if(! $(this).parent('.contentdiv').length)
54    {
55      $(this).remove();
56    }
57  });
58  $('#masterpage div.pagination').each(function (){
59    if(! $(this).parent('.contentslider').length)
60    {
61      $(this).remove();
62    }
63  });
64}
65
66/**
67 * Inicializuje tab s vyberem parametru
68 *
69 * @returns {undefined}
70 */
71function init_tabs()
72{
73  var $selected_param = $('#centerpage_filtering_form input[name="selected_centerpage_param_filter"]').val();
74  var $selected_param_index = parseInt($selected_param) ? $('#centerpage_params_filter a[href="#param_tabs_'+$selected_param+'"]').parent().index() : 0;
75  $( ".centerpage_params_filters" ).tabs({
76    active: $selected_param_index,
77    activate: function(event, ui) {
78    $('#centerpage_filtering_form input[name="selected_centerpage_param_filter"]').val($(ui.newTab).find('a').attr('href').split('#param_tabs_')[1]);
79    }
80  }).addClass( "ui-tabs-vertical ui-helper-clearfix" );
81}
82
83/**
84 * Inicializuje slider cenove listy
85 *
86 * @returns {undefined}
87 */
88function init_slider()
89{
90  var $price_tags = ["#centerpage_filtering_form input.min_price", "#centerpage_filtering_form input.max_price"];
91  var $allowed_price_tags = ["#centerpage_filtering_form input[name='allowed_min_price']", "#centerpage_filtering_form input[name='allowed_max_price']"];
92  var $prices = [parseInt($($price_tags[0]).val()), parseInt( $($price_tags[1]).val())];
93  var $allowed_prices = [parseInt($($allowed_price_tags[0]).val()), parseInt( $($allowed_price_tags[1]).val())];
94  $( ".centerpage_price_slider_boxes" ).slider({
95    range: true,
96    min: $allowed_prices[0],
97    max: $allowed_prices[1],
98    animate: true,
99    values: [ $prices[0], $prices[1] ],
100    slide: function( event, ui ) {
101      $($price_tags[0]).val(ui.values[0]);
102      $($price_tags[1]).val(ui.values[1]);
103    },
104    stop: function( event, ui ) {
105      $handle_key = ui.values[0] === ui.value ? 0 : 1;
106      update_price_filter();
107    }
108  });
109}
110
111/**
112 * Aktualizuje cenovy filtr z nastavenych limitu
113 *
114 * @returns {undefined}
115 */
116function update_price_filter()
117{
118  var $new_min_price = $('#centerpage_filtering_form input[name="allowed_min_price"]').val();
119  var $new_max_price = $('#centerpage_filtering_form input[name="allowed_max_price"]').val();
120  if(is_price_in_ranges())
121  {
122    $new_min_price = $('.filtering_form input[name="min_price"]').val();
123    $new_max_price = $('.filtering_form input[name="max_price"]').val();
124  }
125  else
126  {
127    $('.filtering_form input[name="min_price"]').val($new_min_price);
128    $('.filtering_form input[name="max_price"]').val($new_max_price);
129  }
130
131  $('.filtering_form input[name="min_price_filter"]').val($new_min_price);
132  $('.filtering_form input[name="max_price_filter"]').val($new_max_price);
133  update_filter();
134}
135
136/**
137 * Zjisti, zda cenove rozpeti pro filtr je v mezich
138 *
139 * @returns {Boolean}
140 */
141function is_price_in_ranges()
142{
143  var $min = parseInt($('.filtering_form input[name="min_price"]').val());
144  var $allowed_min = parseInt($('#centerpage_filtering_form input[name="allowed_min_price"]').val());
145  var $max = parseInt($('.filtering_form input[name="max_price"]').val());
146  var $allowed_max = parseInt($('#centerpage_filtering_form input[name="allowed_max_price"]').val());
147
148  if($min <= $max && $min >= $allowed_min && $max <= $allowed_max)
149  {
150    return true;
151  }
152  else
153  {
154    return false;
155  }
156}
157
158/**
159 * @author Yarin http://stackoverflow.com/a/4198132/1750366
160 * @returns {getHashParams.hashParams}
161 */
162function get_hash_params()
163{
164  var hashParams = {};
165  var e,
166      a = /\+/g,  // Regex for replacing addition symbol with a space
167      r = /([^&;=]+)=?([^&;]*)/g,
168      d = function (s) { return decodeURIComponent(s.replace(a, " ")); },
169      q = window.location.hash.substring(1);
170
171  while (e = r.exec(q)) {
172    hashParams[escapeHtml(d(e[1]))] = escapeHtml(d(e[2]));
173  }
174
175  return hashParams;
176}
177
178/**
179 * Vynuti aktualizaci produktu podle aktualniho url hashe a zajisti refresh parametru
180 *
181 * @param {boolean} $if_hash_empty pokud je true dojde k nacteni novych produktu jen pokud neni prazdny hash
182 * @returns {undefined}
183 */
184function update_products($if_hash_empty)
185{
186  $if_hash_empty = (typeof($if_hash_empty) !== 'undefined' && $if_hash_empty) ? true : false;
187  BS.Fce.show_top_bar_loading();
188  $hash_params = get_hash_params();
189  if(!$if_hash_empty || !$.isEmptyObject($hash_params))
190  {
191    $( "#products_params_form #hash_params_place" ).html('');
192    for(var $key in $hash_params)
193    {
194      $( "#products_params_form #hash_params_place" ).append( '<input type="hidden" name="'+$key+'" value="'+$hash_params[$key]+'">' );
195    }
196    left_filter_select($hash_params['variant-selected']);
197    send_update_request();
198  }
199  else
200  {
201    products_refresh();
202  }
203
204  BS.h1_paging.append_html();
205}
206
207/**
208 * Odesle request na nove produkty dle parametru v form#products_params_form
209 * S vysledkem $data vola products_refresh($data)
210 *
211 * @returns {undefined}
212 */
213function send_update_request()
214{
215  var $request = BS.extend(BS.Request.$default, {
216    data: $('form#products_params_form').serialize(),
217    dataType: 'html',
218    type: "GET",
219    success: function($data) {
220      products_refresh($data);
221    }
222  });
223  $.ajax($request);
224}
225
226/**
227 * Zajisti aktualizaci stranky po zmene filtru
228 *
229 * @returns {undefined}
230 */
231function update_filter()
232{
233  var $new_url_activated = $('#products_params_form input[name="new_url_activated"]').val() === '1';
234  var selector = $(".icon-filter__box-selected");
235  var serialized_data = $('form.filtering_form input:not(.price)');
236  var variant_input = document.createElement('input')
237  variant_input.setAttribute('name', 'variant-selected');
238  var selected_icons = [];
239  $.each(selector, function(key, element) {
240    var icon_group = $(element).data('group-id') + "-" + $(element).data('id');
241    selected_icons.push(icon_group);
242  });
243  variant_input.setAttribute('value', selected_icons);
244  var screen_width = document.createElement('input')
245  screen_width.setAttribute('name', 'screen_width');
246  screen_width.setAttribute('value', window.innerWidth);
247  serialized_data.push(variant_input);
248  serialized_data.push(screen_width);
249  $('form.filtering_form').data('serialized', serialized_data.serialize());
250  var $new_hash = $('form.filtering_form').data('serialized');
251  if(!$new_url_activated)
252  {
253    $new_hash += '&' + get_old_url_page_param(0);
254  }
255  var $sorting_link = $('#products_sorting_box .sorting_item.active');
256  if($sorting_link.length === 1)
257  {
258    $new_hash += '&' + 'sort='+$sorting_link.data('sorting');
259  }
260  window.location.hash = $new_hash;
261}
262
263function left_filter_select(selected_icons)
264{
265  if(selected_icons !== undefined)
266  {
267    var values = selected_icons.split(',');
268    $.each(values, function (index, value) {
269      $("#left-filtration__value-" + value).addClass('icon-filter__box-selected')
270      $("#left-filtration__value-" + value).addClass('icon-filter__box-selected-visual')
271    });
272  }
273}
274
275/**
276 * Vrati strankovaci url dane stranky $page pro stare url
277 *
278 * @param {number} $page
279 * @returns {String}
280 */
281function get_old_url_page_param($page)
282{
283  return 'man=9&page=' + parseInt($page);
284}
285
286/**
287 * pokud neni na obrazovce, najede k prvku $element
288 *
289 * @param {String} $element selector
290 * @returns {undefined}
291 */
292function scroll_to_element($element)
293{
294  if($($element).length)
295  {
296    var $visible_area_top = $(window).scrollTop();
297    var $visible_area_bottom = $visible_area_top + window.innerHeight;
298    var $element_pos = $($element).offset().top;
299    var scroll_offset = (BS.Design.template.is_selected(BS.Design.templates.TEMPLATE_KRYPTON)
300      || BS.Design.template.is_selected(BS.Design.templates.TEMPLATE_KRYPTONIT))
301      ? 180 : 0;
302
303    if($element_pos < $visible_area_top || $element_pos > $visible_area_bottom)
304    {
305      $('html, body').animate({
306          scrollTop: $element_pos - scroll_offset
307      }, 200);
308    }
309  }
310}
311
312function rolldown_click_event()
313{
314  var $box = $(".p-rolldown-outer"),
315      $input = $("#centerpage_filtering_form").find("input[name='rolled_down']"),
316      $button = $("#products_sorting_box").find(".p-rolldown-toggle").find("button");
317
318  $button.toggleClass("active");
319  if(!$box.hasClass("p-rolled-down"))
320  {
321    $input.val(1);
322  }
323  else
324  {
325    $input.val(0);
326  }
327  $box.toggleClass("p-rolled-down");
328}
329
330$( window ).resize(function() {
331  if(window.innerWidth <= 767) {
332    $("#centerpage_variant_filters").after($("#left-filtration-container"));
333    $("#centerpage_variant_filters").after($("#centerpage-left-filter"));
334  }
335  else
336  {
337    $("#left-filtration-box").after($("#left-filtration-container"));
338    $("#left-filtration-box").after($("#centerpage-left-filter"));
339  }
340});
341
342$(document).ready(function ()
343{
344  if(window.innerWidth <= 767) {
345    $("#centerpage_variant_filters").after($("#left-filtration-container"));
346  }
347  $("#aroundpage").on('click', '.extract_details_btns', function ()
348  {
349    if($('.centerpage_params_filter_areas').hasClass('params_part_hidden'))
350    {
351      $('.centerpage_params_filter_areas').removeClass('params_part_hidden');
352      $('#centerpage_filtering_form input[name="show_centerpage_params_filter"]').val('1');
353    }
354    else
355    {
356      $('.centerpage_params_filter_areas').addClass('params_part_hidden');
357      $('#centerpage_filtering_form input[name="show_centerpage_params_filter"]').val('0');
358    }
359  });
360
361  $("#aroundpage").on('change', '.params_filter_areas input.price', function (){
362    update_price_filter();
363  });
364
365  $("#aroundpage").on('click', 'div.pagination:not(#paginate-categorySlider) a, div.sorting a.sorting_item', function (){
366    var $new_url_activated = $('#products_params_form input[name="new_url_activated"]').val() === '1';
367    var $link = $(this).attr('href');
368    $new_hash = ($link.indexOf('?') >= 0) ? $link.split('?')[1] : '';
369    if(!$(this).hasClass('sorting_item') && ($new_hash === '' || !$new_url_activated))
370    {
371      $new_hash += '&' + get_old_url_page_param($(this).data('page'));
372    }
373
374    scroll_to_element("div.product:first");
375    window.location.hash = $new_hash;
376    return false;
377  });
378
379  $("#aroundpage").on('click', '.params_filter_areas .cancel_filter_button', function (){
380    $type = $(this).attr('id').split('storno_filter_')[1];
381    switch ($type)
382    {
383      case 'price':
384      case 'all':
385        $('.filtering_form input[name="min_price_filter"]').val(0);
386        $('.filtering_form input[name="max_price_filter"]').val(0);
387        if($type === 'all')
388        {
389          $('input.filter_values').removeAttr('checked');
390        }
391        update_filter();
392        break;
393     default:
394        $id_value = $type.split('value_')[1];
395        $('#filter_values_'+$id_value).removeAttr('checked').change();
396        break;
397    }
398  });
399
400  $(window).on('hashchange', function() {
401    update_products();
402  });
403
404  $(window).on('click', '#main-menu a[href="#"], #left-box a[href="#"]', function (){
405    return false;
406  });
407
408  $("#aroundpage").on('change', '.params_filter_areas input:not(.price)', function (){
409    update_filter();
410  });
411
412  $("#aroundpage").on('click', '.icon-filter__box', function (){
413    if($(this).hasClass('icon-filter__box-selected'))
414    {
415      $(this).removeClass('icon-filter__box-selected');
416      $(this).removeClass('icon-filter__box-selected-visual');
417    }
418    else
419    {
420      //$(this).parents('.icon-filter__content').find('.icon-filter__box-selected').removeClass('icon-filter__box-selected');
421      $(this).addClass('icon-filter__box-selected');
422      $(this).addClass('icon-filter__box-selected-visual');
423    }
424    update_filter();
425  });
426
427  $("#aroundpage").on('click', '.param-filter__box', function(){
428    var id = $(this).data('id');
429    if($(this).hasClass('icon-filter__box-selected-visual'))
430    {
431      $(this).removeClass('icon-filter__box-selected-visual');
432    }
433    else
434    {
435      $(this).addClass('icon-filter__box-selected-visual');
436    }
437    $("#filter_values_" + id).click();
438  });
439
440  $("body")
441    .delegate(".p-rolldown-toggle button", "click", function(e) {
442      e.preventDefault();
443      rolldown_click_event();
444    })
445    .delegate(".p-close", "click", function(e) {
446      e.preventDefault();
447      rolldown_click_event();
448    });
449
450
451  (function(selector) {
452
453    var banner = $(selector);
454    var delay = 125;
455    var t;
456    var wWidth;
457    var boxes;
458
459    function insertCatBanner() {
460      var i = 0, itemsPerRow, offsTop;
461      if(banner.length) {
462        boxes = $("div.product");
463
464        if(boxes.length) {
465          banner = banner.detach();
466          i = 0;
467          offsTop = boxes.get(i).offsetTop;
468          itemsPerRow = 1;
469          while(++i < boxes.length
470            && boxes.get(i).offsetTop === offsTop) {
471            itemsPerRow++;
472          }
473
474          banner.addClass("banner-hidden");
475          boxes.eq(itemsPerRow - 1).after(banner);
476
477          if(banner.hasClass("banner-hidden"))
478          {
479            requestAnimationFrame(function() {
480              banner.removeClass("banner-hidden");
481            });
482          }
483        }
484      }
485    }
486
487    if(banner.length) {
488      $(window).on("resize", function() {
489        clearTimeout(t);
490        t = setTimeout(function() {
491          var cWidth = window.innerWidth;
492          if(cWidth !== wWidth) {
493            wWidth = cWidth;
494            insertCatBanner();
495          }
496        }, delay);
497      });
498
499      $(document).on("page:productsLoaded", function() {
500        //zobrazení banneru
501        insertCatBanner();
502      });
503      insertCatBanner();
504      wWidth = window.innerWidth;
505    }
506  })(".in_cat_banner");
507
508});

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.