PageSourceSearch

https://kamna.astranet.cz/js/async.js?t=1791454316

js astranet.cz collected 2026-10-08 10:12:01 UTC 19,209 bytes, 695 lines download raw bytes

1var page_loaded = 0; // index načtené stránky - při zvolení filtru je nutné jej vynulovat
2
3// tyto proměnné uchovávají hodnoty získané z funkce loadEshopItems(). Hodnoty slouží pro funkci filtrEshopItems()
4var sql_where = '';
5var sql_limit = 0;
6var sql_order = '';
7var sql_select = '';
8var sql_page = '';
9
10var scrollTop = true;  // určuje, jestli budeme po zobrazení produktů scrollovat viewport dolů
11
12function getTotalOrderPrice(lang)
13{
14  $.post('/jquery/scripts/get-order-total-price.php', { },  function( data ) {
15    $('.order-total-price').html(data);
16  });
17}
18
19// FUNKCE SPOČÍTÁ CENU DOPRAVY
20function dopravaSk(id_item)
21{
22  $.post('/jquery/scripts/doprava-sk.php', { id_item:id_item },  function( data ) {
23	  $( ".dialogContent" ).html( data );
24	  $( ".dialogContent" ).dialog( "open" );
25  });
26}
27
28// FUNKCE ODSTRANÍ VŠECHNY ID PARAMETRŮ S ŠOUPÁTKY SE KTERÝMI HÝBEME
29function getFiltrCena(min, max, url)
30{
31  var filter_str = '', filter_arr = [];
32  var filter = getUrlFilter();    
33  var url_to_load = url;
34  var regOd = /od-[0-9]+/;
35  var regDo = /do-[0-9]+/;
36  var foundOd = false, foundDo = false;
37  
38  if (filter)
39  {
40    filter_str = filter.replace("f=", "");
41    filter_arr = filter_str.split(",");
42    
43    
44    for (var i=0; i < filter_arr.length; i++){
45      
46      if (filter_arr[i].match(regOd)){
47        filter_arr.splice(i, 1, 'od-' + min);
48        foundOd = true;
49      }
50      
51      if (filter_arr[i].match(regDo)){
52        filter_arr.splice(i, 1, 'do-' + max);
53        foundDo = true;
54      }
55    }
56  }
57  
58  if (!foundOd)
59  {
60    filter_arr.push('od-' + min);
61  }
62  if (!foundDo)
63  {
64    filter_arr.push('do-' + max); 
65  }
66  
67  if (filter_arr.length > 0)
68  {
69    filter_arr.sort();
70    url_to_load = url + '/f=' + filter_arr.join(",");
71  }  
72  window.history.pushState("", "", url_to_load);
73  
74  // SMAŽU ZOBRAZENÉ PRODUKTY 
75  $('.asyncItemsContainer').html('');
76  
77  // ZOBRAZÍM PRODUKTY
78  var url_filter = getUrlFilter();  
79  page_loaded = 0;
80  loadEshopItems(sql_where, 0, sql_limit, sql_order, sql_select, url, sql_page, url_filter);
81}
82
83
84
85
86
87
88
89
90// FUNKCE ODSTRANÍ VŠECHNY ID PARAMETRŮ S ŠOUPÁTKY SE KTERÝMI HÝBEME
91function getValuesFromRange(range, min, max, url)
92{
93  var i;  
94  
95  // NEJDŘÍVE ODSTRANÍM VŠECHNY PARAMETRY Z URL
96  var filter_str = '', filter_arr = [];  
97  // ZJISTÍM IDčka FILTRŮ / PARAMETRŮ Z URL
98  var filter = getUrlFilter();  
99
100  var url_to_load = url;
101  
102  if (filter)
103  {
104    filter_str = filter.replace("f=", "");
105    filter_arr = filter_str.split(",");
106    
107    for (i = 0; i < range.length; i++)
108    {      
109      // OVĚŘÍM, JESTLI JIŽ JE FILTR V URL A POPŘ. JEJ ODSTRANÍM        
110      var filtr_url_index = filter_arr.indexOf(range[i]['id'].toString());
111      if (filtr_url_index > -1)
112      {
113        filter_arr.splice(filtr_url_index,1);          
114      }
115    }
116  }
117  
118  if (filter_arr.length > 0)
119  {
120    filter_arr.sort();
121    url_to_load = url + '/f=' + filter_arr.join(",");
122  }
123
124  filter_arr.sort();
125  //window.history.pushState("", "", url_to_load);
126  
127  for (i = 0; i < range.length; i++)
128  {
129    if (parseInt(min) <= parseInt(range[i]['value']) && parseInt(range[i]['value']) <= parseInt(max))
130    {
131      // SMAŽU ZOBRAZENÉ PRODUKTY
132      /*$('.asyncItemsContainer').html('');
133      console.log('RANGE VALUE ID: ' + range[i]['id']);
134      console.log('RANGE VALUE: ' + range[i]['value']);
135      filtrEshopItems(url, range[i]['id']);*/
136      
137      filter_arr.push(range[i]['id'].toString());
138      
139    }
140  }
141  
142  if (filter_arr.length > 0)
143  {
144    filter_arr.sort();
145    url_to_load = url + '/f=' + filter_arr.join(",");
146  }
147  
148  window.history.pushState("", "", url_to_load);
149  
150  // SMAŽU ZOBRAZENÉ PRODUKTY 
151  $('.asyncItemsContainer').html('');
152  
153  // ZOBRAZÍM PRODUKTY
154  var url_filter = getUrlFilter();  
155  page_loaded = 0;
156  loadEshopItems(sql_where, 0, sql_limit, sql_order, sql_select, url, sql_page, url_filter);
157}
158
159// FUNKCE DEAKTIVUJE KOMBINACE FILTRŮ, KTERÉ NEOBSAHUJÍ PRODUKTY
160function deactivateFilter()
161{
162  // 11.6.2018 - obsah funkce je zakomentovaný - pokud jej odkomentujeme, tak při každém zvolení filtru se bude ověřovat, jestli existují nějaké produkty
163  /*$('.paramFilterContainer').each(function(index) {
164    
165    var elem = $(this);
166        filter_orig = getUrlFilter(),
167        filter = filter_orig.replace("f=", ""),
168        id_paramvalue = elem.data("id_paramvalue");    
169    
170    $.post('/jquery/scripts/has-param-items.php', { where:sql_where, filter:filter, filter_orig:filter_orig, filter_id: id_paramvalue},  function( data ) {
171      //elem.children('.cnt').html('<span class="small">['+data+']</span>');
172      if (data*1 == 0)
173      {
174        elem.addClass("empty");
175        elem.children('INPUT').attr("disabled", "true");
176      }
177      else
178      {
179        elem.removeClass("empty");
180        elem.children('INPUT').removeAttr("disabled");
181      }
182    });
183  });*/
184}
185
186
187// FUNKCE SLOUŽÍ PRO FILTROVÁNÍ VELIKOSTÍ PRODUKTŮ
188function filtrItemSizes(par1, param, value)
189{
190  page_loaded = 0;
191  var h = window.history,
192      hs = h.state,
193      url = hs || window.location.pathname,
194      filtr = getUrlFilter(),
195      filtr = filtr.replace("f=", ""),
196      parts = filtr.split(','),
197      regex = new RegExp(param+'-('+'[0-9]+'+')', 'i');
198
199  if (value > 0)
200  {
201    if (url.match(regex))
202    {
203      parts = removeArrItem(parts, param);
204      parts.push(param+'-'+value);
205
206    }
207    else
208    {
209      parts.push(param+'-'+value);
210    }
211  }
212  else
213  {
214    parts = removeArrItem(parts, param);
215  }
216
217  //Odstranime prazdne prvky pole
218  parts = removeArrEmptyItem(parts);
219
220  //Vytvorime url adresu
221  url = '/' + par1 + '/f=' + parts.join(',');
222
223  //Vlozime do url prohlizece
224  h.pushState(null, null, url);
225
226  // SMAŽU ZOBRAZENÉ PRODUKTY
227  $('.asyncItemsContainer').html('');
228
229  // ZOBRAZÍM PRODUKTY
230  var url_filter = getUrlFilter();
231  loadEshopItems(sql_where, 0, sql_limit, sql_order, sql_select, '/'+par1, sql_page, url_filter);
232  
233  // DEAKTIVUJI KOMBINACE FILTRŮ, KTERÉ NEOBSAHUJÍ PRODUKTY
234  deactivateFilter()
235}
236
237function filtrEshopItems(url, idFiltr)
238{
239  page_loaded = 0;
240  var filter_str = '', filter_arr = [];
241  
242  // ZJISTÍM IDčka FILTRŮ / PARAMETRŮ Z URL
243  var filter = getUrlFilter();  
244  
245  var url_to_load = '';
246  if (filter)
247  {
248    // OVĚŘÍM, JESTLI JIŽ JE FILTR V URL A POPŘ. JEJ ODSTRANÍM
249    filter_str = filter.replace("f=", "");
250    filter_arr = filter_str.split(",");
251    var filtr_url_index = filter_arr.indexOf(idFiltr.toString());
252
253    if (filtr_url_index > -1)
254    {
255      url_to_load = url;
256      filter_arr.splice(filtr_url_index,1);
257      if (filter_arr.length > 0)
258      {
259        filter_arr.sort();
260        url_to_load = url + '/f=' + filter_arr.join(",");
261      }
262    }
263    else
264    {
265      filter_arr.push(idFiltr.toString());
266      filter_arr.sort();
267      url_to_load = url + '/f=' + filter_arr.join(",");
268    }
269  }
270  else
271  {
272    url_to_load = url + '/f='+idFiltr;
273  }
274  //Seradime pole
275  filter_arr.sort();
276
277  //Vytvorime url adresu
278  //url_to_load = url + '/f=' + filter_arr.join(",");
279
280  //Vlozime adresu do historie (adresni radek)
281  window.history.pushState("", "", url_to_load);
282  
283  // ULOŽÍ DO SESSION POSLEDNÍ ZOBRAZENOU KATEGORII
284  sessionUpdateLastCat(url_to_load);
285  
286  // SMAŽU ZOBRAZENÉ PRODUKTY 
287  $('.asyncItemsContainer').html('');
288  
289  // ZOBRAZÍM PRODUKTY
290  var url_filter = getUrlFilter();  
291  loadEshopItems(sql_where, 0, sql_limit, sql_order, sql_select, url, sql_page, url_filter);
292  
293  // DEAKTIVUJU FILTRY
294  deactivateFilter();
295}
296
297
298function loadEshopItems(where, limit_from, limit, order, select, url, page, url_filter, error_type, scroll=true)
299{
300  $('#loading').show();
301
302  var limit_origin = limit;  // původní počet stránkování
303  sql_where = where;
304  sql_limit = limit;
305  sql_order = order;
306  sql_select = select;
307  sql_page = page;
308  
309  var limit_origin = limit;
310  limit_from = page_loaded;
311  
312  if (page > 0)
313  {
314    limit_from = 0;
315    limit = 1*limit + (1*limit * 1*page);
316    page_loaded = 1*page;
317  }
318  
319  // DO URL VLOŽÍM INDEX STRÁNKY
320  if (page_loaded > 0)
321  {
322    var url_to_load;
323    
324    if (url_filter)
325    {
326      var url_filter = url_filter.replace("f=", "");
327      url_to_load = url + '/f=' + url_filter + '/p=' + page_loaded;
328      //window.history.pushState("", "", url + '/f=' + url_filter + '/p=' + page_loaded);
329    }
330    else
331    {
332      url_to_load = url + '/p=' + page_loaded;
333      //window.history.pushState("", "", url + '/p=' + page_loaded);
334    }
335    window.history.pushState("", "", url_to_load);
336    
337    // ULOŽÍ DO SESSION POSLEDNÍ ZOBRAZENOU KATEGORII
338    sessionUpdateLastCat(url_to_load)
339  }
340  
341  // SKRYJEME TLAČÍTKO PRO ZOBRAZENÍ DALŠÍCH PRODUKTŮ
342  $('.asyncLoadItems').hide();
343  
344  // NAKONEC STRÁNKY VLOŽEM ELEMENT DO KTERÉHO NAČTU DALŠÍ PRODUKTY
345  if ($('.asyncItems').length > 0)
346  {
347    // ONDRA - zmena LOADING $('.asyncItems:last').addClass('loadingContainer');
348  }
349  else
350  {
351    // ONDRA - zmena LOADING var e = $('<div class="asyncItems loadingContainer"></div>');
352    var e = $('<div class="asyncItems"></div>');    
353    
354    $('.asyncItemsContainer').append(e);
355  }    
356  
357  // NAČTU IDčka FILTRŮ Z URL A POŠLU JE POSTEM PRO ZPRACOVÁNÍ MYSQL DOTAZU
358  filter = getUrlFilter();
359  
360  //console.log('limit_from ONDRA: '+limit_from);
361  
362  // NAČTU PRODUKTY
363  $.post('/jquery/scripts/eshop-items.php', { where:where, limit_from:limit_from, limit:limit, order:order, select:select, url:url, limit_origin:limit_origin, filter:filter, error_type: error_type },  function( data ) {
364    
365    if (limit_from > 0)
366    {
367      $('.itemsFrame:last').append( data );
368    }
369    else
370    {
371      $('.asyncItems:last').append( data );
372    }
373    
374    $('.asyncItems').removeClass('loadingContainer');
375    $('#loading').hide();
376    
377    page_loaded = page_loaded + 1;
378
379    if (scroll) {
380      var scrollToProductId = $('input[name="scrollToProduct"]').val();
381      if (scrollToProductId > 0) {
382        scrollToId('product-id-' + scrollToProductId);
383      } else if (scrollTop) {
384        var cnt = limit - limit_origin + 1;
385        if (cnt > 1) {
386          scrollToId('item-' + cnt);
387        }
388        //scrollTop = false;
389      }
390    }
391  });  
392}
393
394
395// FUNKCE NAČTE PARAMETRY PRODUKTU V DETAILU
396function loadItemParams(id_item, id_param, bookmark)
397{
398  $('.paramValuesSelected').hide();
399  $('.bookmark').removeClass('on');
400  $('#'+bookmark).addClass('on');
401  $('.paramValues').show();
402  var e = $('<div class="loadingContainer"></div>');
403  $('.paramValues').html('');
404  $('.paramValues').append(e);    
405  
406  $.post('/jquery/scripts/item-params.php', { id_item:id_item, id_param:id_param },  function( data ) {
407    $('.paramValues').removeClass('loadingContainer');    
408    $('.paramValues').html( data );
409    console.log('Params loaded...');    
410  });
411}
412
413function loadItemSelectedParams(id_item, check_params)
414{
415  $.post('/jquery/scripts/item-selected-params.php', { id_item:id_item, check_params:check_params },  function( data ) {
416    $('.bookmark').removeClass('on');
417    $('.paramValues').hide();
418    $('.paramValuesSelected').show();
419    $('.paramValuesSelected').removeClass('loadingContainer');    
420    $('.paramValuesSelected').html( data );
421    console.log('Selected params loaded...');    
422  });
423}
424
425
426// FUNKCE ULOŽÍ ZÁZNAM O ZVOLENÉM PARAMETRU DO DB
427function pushToDb(id_item, id_paramvalue, param_value_button, param_is_selectable)
428{
429  if ($(param_value_button).is(':checked')) 
430  {
431    var param_id = $(param_value_button).data('id');
432    var cnt = $("INPUT[name='param-cnt-" + param_id + "']").val();
433  
434    if (param_is_selectable)
435    {
436      $('.asyncSelectabelParamValue').removeClass('on');
437    }
438    $(param_value_button).addClass('on');
439  
440    $.post('/jquery/scripts/db-push-item.php', { id_item:id_item, id_paramvalue:id_paramvalue, param_is_selectable:param_is_selectable, cnt:cnt},  function( data ) {
441      counItemPrice(id_item);
442      
443      // JESTLIŽE PARAMETR is_selectable = 0 TAK ZAVŘU VÝBĚR PARAMETRŮ PO ZVOLENÍ
444      /*if (param_is_selectable)
445      {
446        loadItemSelectedParams(id_item);
447      }*/
448    });
449  }
450  else
451  {
452    if (param_is_selectable)
453    {
454      $('.asyncSelectabelParamValue').removeClass('on');
455    }
456    else
457    {
458      $(param_value_button).removeClass('on');
459    }
460  
461    $.post('/jquery/scripts/db-remove-item.php', { id_item:id_item, id_paramvalue:id_paramvalue},  function( data ) {
462      counItemPrice(id_item);
463    });
464  }      
465}
466
467// UPRAVÍ POČET KUSŮ V KOŠÍKU U PARAMETRU
468function updateParamCartCnt(id_item, id_paramvalue, input_cnt)
469{
470  var cnt = $(input_cnt).val();
471  console.log('cnt: ' + cnt);
472
473  var param_id = $(input_cnt).data('id');
474  var checkbox = $("INPUT[name='param-" + param_id + "']");
475
476  if (checkbox.is(':checked'))
477  { 
478    $.post('/jquery/scripts/db-update-cart-cnt.php', { id_item:id_item, id_paramvalue:id_paramvalue, cnt:cnt},  function( data ) {
479      if (data == 'DELETE')
480      {
481        checkbox.prop('checked', false);
482      }
483      counItemPrice(id_item);
484    });
485  }    
486}
487
488
489// SPOČÍTÁ CENU PRODUKTU SE VŠEMI ZVOLENÝMI PARAMETRY
490function counItemPrice(id_item)
491{
492  $('.priceLoading').show();
493  
494  $.post('/jquery/scripts/count-item-price.php', { id_item:id_item },  function( data ) {
495    //$('#itemPriceNoVat').html(data.cena_bez_dph);
496    $('#itemPriceVat').html(data.cena);
497    $('.priceLoading').hide();
498    
499    console.log('CENA CELKEM: ' + data.cena_bez_dph);
500    console.log(data);    
501  }, "json");
502}
503
504function clearSessDopravaPlatba()
505{
506  $.post('/jquery/scripts/clear-shipping-session.php', { },  function( data ) {
507  });
508}
509
510// SPOČÍTÁ CENU KOŠÍKU
511function countCart(id_cart, type, value, lang)
512{
513  //$('.priceLoading').show();
514  var cnt = $('.' + id_cart + '-input').val();
515  
516  $.post('/jquery/scripts/count-kosik.php', { id_cart:id_cart , cnt:cnt , type:type , value:value },  function( data ) {
517    
518    if (data.cnt == 0)
519    {
520      $('.' + id_cart + '-cart-box').fadeOut('slow');
521    }
522    if (data.cnt == 1)
523    {
524      $('.' + id_cart + '-arrow-down').hide();
525    }
526    if (data.cnt > 1)
527    {
528      $('.' + id_cart + '-arrow-down').fadeIn('fast');
529    }
530    
531    $('.' + id_cart + '-cena-bez-dph').html(data.cart_cena_bez_dph);
532    $('.' + id_cart + '-cena').html(data.cart_cena);
533    $('.' + id_cart + '-input').val(data.cnt);
534    $('.total-cena-bez-dph').html(data.total_cena_bez_dph);
535    $('.total-cena').html(data.total_cena);
536    $('.total-cnt').html(data.total_cnt);
537    
538    //DphRekap();
539    clearSessDopravaPlatba();
540    getDoprava(lang);
541    
542    console.log(data);    
543  }, "json");
544}
545
546// VYGENERUJE NOVOU REKAPITULACI DPH
547function DphRekap()
548{
549  $.post('/jquery/scripts/kosik-dph.php', { },  function( data ) {
550    $('.dphRekap').html(data);
551  });
552}
553
554// ZOBRAZÍ ZPŮSOBY DOPRAVY
555function getDoprava(lang)
556{ 
557  $('.doprava-container').html(''); 
558  $('.doprava-container').addClass('loading');
559  
560  $.post('/jquery/scripts/get-doprava.php', { lang:lang },  function( data ) {
561    $('.doprava-container').html(data);
562    $('.doprava-container').removeClass('loading');
563    //showAddressForm();
564    getTotalOrderPrice(lang);
565  });
566}
567
568// NASTAVÍ ZPŮSOB DOPRAVY
569function setDoprava(id_doprava, lang)
570{ 
571  $('.platba-container').html(''); 
572  $('.platba-container').addClass('loading');
573  
574  $.post('/jquery/scripts/set-doprava.php', { id_doprava:id_doprava, lang:lang },  function( data ) {
575    $('.platba-container').html(data);
576    $('.platba-container').removeClass('loading');
577    //showAddressForm();
578    getTotalOrderPrice(lang);
579  });
580}
581
582// NASTAVÍ ZPŮSOB PLATBA
583function setPlatba(id_platba)
584{ 
585  $.post('/jquery/scripts/set-platba.php', { id_platba:id_platba },  function( data ) {
586    //showAddressForm();
587    getTotalOrderPrice();
588  });
589}
590
591// NASTAVÍ ZPŮSOB MONTÁŽE
592function setMontaz(id_montaz)
593{ 
594  $.post('/jquery/scripts/set-montaz.php', { id_montaz:id_montaz },  function( data ) {
595    showAddressForm();
596  });
597}
598
599// ULOŽÍ DO SESSION POSLEDNÍ ZOBRAZENOU KATEGORII
600function sessionUpdateLastCat(url)
601{  
602  $.post('/jquery/scripts/session-update-last-cat.php', { url:url },  function( data ) {
603    //console.log('SESSION: ' + data);    
604  });
605}
606
607// SPOČÍTÁ VZDÁLENOST A CENU DOPRAVY ZBOŽÍ K ZÁKAZNÍKOVI
608function getDistance()
609{
610  var geocoder = new google.maps.Geocoder(); // creating a new geocode object
611  var ulice = document.getElementById("ulice").value;
612	var mesto = document.getElementById("mesto").value;
613	var psc = document.getElementById("psc").value;
614	
615	if (mesto!='' && psc!='')
616	{
617    var address = ulice + ', ' + mesto + ' ' + psc;	
618	
619  	// finding out the coordinates
620  	if (geocoder) 
621  	{
622  		geocoder.geocode( { 'address': address}, function(results, status) 
623  		{
624  			if (status == google.maps.GeocoderStatus.OK) 
625  			{
626  				$.post('/jquery/scripts/get-distance.php', { address:address },  function( data ) {
627  				  $('.map-container').slideDown();
628        	  if (data != '')
629        	  {
630              $('.calcRoute').slideDown();
631              $('.buttonContinue').slideDown();
632            }
633        	  $('#shippingInfoFrame').html(data);
634        	  findRoute();
635          });
636  			} 
637        else 
638  			{
639  			  //alert("Geocode was not successful for the following reason: " + status);
640  			  if (status != "ZERO_RESULTS")
641  			  {
642  				  alert("Bohužel se nám nepodařilo najít zadanou adresu na mapě. Prosím zkontrolujte zadanou adresu.");
643  				}
644  			}
645  		});
646  	}
647	}
648	else
649	{
650    $('.map-container').slideUp();
651    $('.buttonContinue').slideUp();
652  }
653}
654
655// FUNKCE POUZE ZOBRAZÍ FORMULÁŘ PRO ZADÁNÍ ADRESY U UŽIVATELE
656function showAddressForm()
657{
658  $.post('/jquery/scripts/show-address-form.php', { },  function( data ) {
659	  if (data != '')
660	  {
661      $('.calcRoute').slideDown("fast", function(){
662        getDistance();
663      });
664    }
665    else
666    {
667      $('.calcRoute').slideUp();
668    }
669  });
670}
671
672// FUNKCE POUZE ULOŽÍ ADRESU UŽIVATELE DO SESSION
673function setCustAddress(param, value)
674{
675  $.post('/jquery/scripts/set-cust-address.php', { param:param , value:value },  function( data ) {
676	  
677  });
678}
679
680function searchTips(search, lang)
681{
682  console.log('search: ' + search);
683  if (search == '')
684  {
685    $('#searchTipsContainer').slideUp();
686  }
687  else
688  {
689    console.log('lang ' + lang);
690    $.post('/jquery/scripts/search.php', { search:search, lang:lang },  function( data ) {
691  	  $('#searchTipsContainer').html(data);
692  	  $('#searchTipsContainer').slideDown();
693    });
694  }
695}

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.