var page_loaded = 0; // index načtené stránky - při zvolení filtru je nutné jej vynulovat

// tyto proměnné uchovávají hodnoty získané z funkce loadEshopItems(). Hodnoty slouží pro funkci filtrEshopItems()
var sql_where = '';
var sql_limit = 0;
var sql_order = '';
var sql_select = '';
var sql_page = '';
var price_min = 0;
var price_max = 0;
var filtr_price_loaded = false;

var scrollTop = true;  // určuje, jestli budeme po zobrazení produktů scrollovat viewport dolů

// FUNKCE ZOBRAZÍ FILTRY, KTERÉ JSOU ZVOLENÉ
/*function getSelecterFilters(id_param)
{
  var filter_orig = getUrlFilter();
  var filters = filter_orig.replace("f=", "");
  var url = getUrl();  
  
  console.log('url: ' + url);
  
  $.post('/jquery/scripts/print-selected-filters.php', {id_param:id_param , filters:filters},  function( data ) {
    $('#selected-params-id-' + id_param).html(data);
  });
}*/
function getSelecterFilters()
{
  var filter_orig = getUrlFilter();
  var filters = filter_orig.replace("f=", "");
  var url = getUrl();  
  
  console.log('url..: ' + url);
  
  $.post('/jquery/scripts/print-selected-filters.php', {filters:filters},  function( data ) {
    $('#selected-params').html(data);
  });
}

// FUNKCE DEAKTIVUJE KOMBINACE FILTRŮ, KTERÉ NEOBSAHUJÍ PRODUKTY
function deactivateFilter()
{
  $('.paramFilterContainer').each(function(index) {
    
    var elem = $(this);
        filter_orig = getUrlFilter(),
        filter = filter_orig.replace("f=", ""),
        id_paramvalue = elem.data("id_paramvalue");
        id_param = elem.data("id_param");        
    
    $.post('/jquery/scripts/has-param-items.php', { where:sql_where, filter:filter, filter_orig:filter_orig, filter_id: id_paramvalue},  function( data ) {
      //elem.children('.cnt').html('<span class="small">('+data+')</span>');
      if (data*1 == 0)
      {
        elem.addClass("empty");
        elem.children('INPUT').attr("disabled", "true");
      }
      else
      {
        elem.removeClass("empty");
        elem.children('INPUT').removeAttr("disabled");
      }
    });
    //getSelecterFilters(id_param);
  });
}


// FUNKCE SLOUŽÍ PRO FILTROVÁNÍ VELIKOSTÍ PRODUKTŮ
/*function filtrItemSizes(par1, param, value)
{
  page_loaded = 0;
  var h = window.history,
      hs = h.state,
      url = hs || window.location.pathname,
      filtr = getUrlFilter(),
      filtr = filtr.replace("f=", ""),
      parts = filtr.split(','),
      regex = new RegExp(param+'-('+'[0-9]+'+')', 'i');

  if (value > 0)
  {
    if (url.match(regex))
    {
      console.log('MATCH');
      parts = removeArrItem(parts, param);
      parts.push(param+'-'+value);

    }
    else
    {
      console.log('NO MATCH');
      parts.push(param+'-'+value);
    }
  }
  else
  {
    parts = removeArrItem(parts, param);
  }
   
  //Odstranime prazdne prvky pole
  parts = removeArrEmptyItem(parts);

  //Vytvorime url adresu
  url = '/' + par1 + '/f=' + parts.join(',');

  console.log('URL: ' + url);

  //Vlozime do url prohlizece
  h.pushState(null, null, url);

  // SMAŽU ZOBRAZENÉ PRODUKTY
  $('.asyncItemsContainer').html('');

  // ZOBRAZÍM PRODUKTY
  var url_filter = getUrlFilter();
  loadEshopItems(sql_where, 0, sql_limit, sql_order, sql_select, '/'+par1, sql_page, url_filter);
  
  // DEAKTIVUJI KOMBINACE FILTRŮ, KTERÉ NEOBSAHUJÍ PRODUKTY
  deactivateFilter()
}*/

function filtrEshopItems(url, idFiltr, toCheckInput)
{
  page_loaded = 0;
  var filter_str = '', filter_arr = [];
  
  // ZJISTÍM IDčka FILTRŮ / PARAMETRŮ Z URL
  var filter = getUrlFilter();  
  
  // OBARVÍM LABEL U CHECKBOXU
  var elemLabel = $('LABEL[data-id_paramvalue=' + idFiltr + ']');
  if (elemLabel.children('INPUT').is(':checked'))
  {
    elemLabel.addClass('on');
  }
  else
  {
    elemLabel.removeClass('on');
  }
  
  var url_to_load = '';
  if (filter)
  {
    // OVĚŘÍM, JESTLI JIŽ JE FILTR V URL A POPŘ. JEJ ODSTRANÍM
    filter_str = filter.replace("f=", "");
    filter_arr = filter_str.split(",");
    var filtr_url_index = filter_arr.indexOf(idFiltr.toString());

    if (filtr_url_index > -1)
    {
      url_to_load = url;
      filter_arr.splice(filtr_url_index,1);
      if (filter_arr.length > 0)
      {
        /*filter_arr.sort(function(a, b) {
          return a - b;
        });*/
        filter_arr.sort();
        url_to_load = url + '/f=' + filter_arr.join(",");
      }
      
      // ODŠKRTNU CHECKBOX
      if (toCheckInput == true)
      {
        $('#paramvalue-' + idFiltr.toString()).prop('checked', false);
      }
    }
    else
    {
      filter_arr.push(idFiltr.toString());
      /*filter_arr.sort(function(a, b) {
        return a - b;
      }); */
      filter_arr.sort();
      url_to_load = url + '/f=' + filter_arr.join(",");
      
      // ZAŠKRTNU CHECKBOX
      if (toCheckInput == true)
      {
        $('#paramvalue-' + idFiltr.toString()).prop('checked', true);
      }
    }
  }
  else
  {
    url_to_load = url + '/f='+idFiltr;
  }
  //Seradime pole
  filter_arr.sort();

  //Vytvorime url adresu
  //url_to_load = url + '/f=' + filter_arr.join(",");

  //Vlozime adresu do historie (adresni radek)
  window.history.pushState("", "", url_to_load);
  
  // ULOŽÍ DO SESSION POSLEDNÍ ZOBRAZENOU KATEGORII
  sessionUpdateLastCat(url_to_load)
  
  // SMAŽU ZOBRAZENÉ PRODUKTY 
  $('.asyncItemsContainer').html('');
  
  // ZOBRAZÍM PRODUKTY
  var url_filter = getUrlFilter();  
  loadEshopItems(sql_where, 0, sql_limit, sql_order, sql_select, url, sql_page, url_filter);
  
  // DEAKTIVUJU FILTRY
  deactivateFilter();
  
  getSelecterFilters();  
}

function loadItemsPodobne(where, limit, order, select)
{
  console.log('FCE: loadItemsPodobne');
  
  // NAKONEC STRÁNKY VLOŽEM ELEMENT DO KTERÉHO NAČTU DALŠÍ PRODUKTY
  var e = $('<div class="asyncItems loadingContainer"></div>');
  $('.asyncItemsContainer').append(e);    
  
  // NAČTU PRODUKTY
  $.post('/jquery/scripts/eshop-items-podobne.php', { where:where, limit:limit, order:order, select:select },  function( data ) {
    $('.asyncItems:last').append( data );
    $('.asyncItems').removeClass('loadingContainer');
  }); 
}

function loadEshopItems(where, limit_from, limit, order, select, url, page, url_filter)
{
  console.log('FCE: loadEshopItems');
  var limit_origin = limit;  // původní počet stránkování
  sql_where = where;
  sql_limit = limit;
  sql_order = order;
  sql_select = select;
  sql_page = page;

  var limit_origin = limit;
  limit_from = page_loaded;
  
  if (page > 0)
  {
    //limit_from = 0;
    limit_from = 1*limit * 1*page;
    //limit = 1*limit + (1*limit * 1*page);
    page_loaded = 1*page;
  }
  
  // DO URL VLOŽÍM INDEX STRÁNKY
  if (page_loaded > 0)
  {
    var url_to_load;
    // http://www.equisort.netsimple.cz/skolni-lavice-a-stoly/f=14,16/p=1
    
    if (url_filter)
    {
      var url_filter = url_filter.replace("f=", "");
      url_to_load = url + '/f=' + url_filter + '/p=' + page_loaded;
      //window.history.pushState("", "", url + '/f=' + url_filter + '/p=' + page_loaded);
    }
    else
    {
      url_to_load = url + '/p=' + page_loaded;
      //window.history.pushState("", "", url + '/p=' + page_loaded);
    }
    window.history.pushState("", "", url_to_load);
    
    // ULOŽÍ DO SESSION POSLEDNÍ ZOBRAZENOU KATEGORII
    sessionUpdateLastCat(url_to_load)
  }
  
  // SKRYJEME TLAČÍTKO PRO ZOBRAZENÍ DALŠÍCH PRODUKTŮ
  $('.asyncLoadItems').hide();
  
  // NAKONEC STRÁNKY VLOŽEM ELEMENT DO KTERÉHO NAČTU DALŠÍ PRODUKTY
  var e = $('<div class="asyncItems loadingContainer"></div>');
  $('.asyncItemsContainer').append(e);    
  
  // NAČTU IDčka FILTRŮ Z URL A POŠLU JE POSTEM PRO ZPRACOVÁNÍ MYSQL DOTAZU
  filter = getUrlFilter();
  
  // NAČTU PRODUKTY
  var url_full = getUrl();  
  //$.post('/jquery/scripts/eshop-items.php', { where:where, limit_from:limit_from, limit:limit, order:order, select:select, url:url_full, limit_origin:limit_origin, filter:filter, page:page_loaded },  function( data ) {
  $.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, page:page_loaded },  function( data ) {
    $('.asyncItems:last').append( data.html );
    $('.asyncItems').removeClass('loadingContainer');
    $('#itemsCnt').html(data.totalCnt);
    page_loaded = page_loaded + 1;
    
    if (scrollTop)
    {
      console.log('limit: ' + limit);
      var cnt = limit - limit_origin + 1;
      if (cnt > 1)
      {
        scrollToId('item-' + cnt);
      }
      scrollTop = false;
    }
    
    // NAČTU FILTR PRICE
    if (!filtr_price_loaded)
    {
      filtr_price_loaded = true;
      // http://www.tutorialspoint.com/jqueryui/jqueryui_slider.htm
      var min_active = getUrlFilterParam(url_filter, 'min');
      if (!min_active) { min_active = data.min; }
      var max_active = getUrlFilterParam(url_filter, 'max');
      if (!max_active) { max_active = data.max; }
      $( "#slider-filtr-price" ).slider({
         range:true,
         min: data.min,
         max: data.max,
         values: [ min_active, max_active ],
         create: function( event, ui ) {
            $(this).parent().parent().find( ".startvalue" ).val(data.min + ' ' + data.currency);
            $(this).parent().parent().find( ".stopvalue" ).val(data.max + ' ' + data.currency);
            price_min = data.min;
            price_max = data.max;
            console.log('CREATED!');
         },
         slide: function( event, ui ) {
            $(this).parent().parent().find( ".startvalue" ).val(ui.values[0] + ' ' + data.currency);
            $(this).parent().parent().find( ".stopvalue" ).val(ui.values[1] + ' ' + data.currency);
         },
         stop: function(event, ui) {
            var par1 = url.substring(1);
            if (price_min != ui.values[0])
            {
              price_min = ui.values[0];
              filtrItemSizes(par1, 'min', ui.values[0]);
            }
            if (price_max != ui.values[1])
            {
              price_max = ui.values[1];
              filtrItemSizes(par1, 'max', ui.values[1]);
            }
         }
      });
    }
    
  }, 'json');
  
  getSelecterFilters();  
}

// FUNKCE NAČTE PARAMETRY PRODUKTU V DETAILU
function loadItemParams(id_item, id_param, bookmark)
{
  $('.paramValuesSelected').hide();
  $('.bookmark').removeClass('on');
  $('#'+bookmark).addClass('on');
  $('.paramValues').show();
  var e = $('<div class="loadingContainer"></div>');
  $('.paramValues').html('');
  $('.paramValues').append(e);    
  
  $.post('/jquery/scripts/item-params.php', { id_item:id_item, id_param:id_param },  function( data ) {
    $('.paramValues').removeClass('loadingContainer');    
    $('.paramValues').html( data );
    console.log('Params loaded...');    
  });
}

function loadItemSelectedParams(id_item, check_params)
{
  $.post('/jquery/scripts/item-selected-params.php', { id_item:id_item, check_params:check_params },  function( data ) {
    $('.bookmark').removeClass('on');
    $('.paramValues').hide();
    $('.paramValuesSelected').show();
    $('.paramValuesSelected').removeClass('loadingContainer');    
    $('.paramValuesSelected').html( data );
    console.log('Selected params loaded...');    
  });
}


// FUNKCE ULOŽÍ ZÁZNAM O ZVOLENÉM PARAMETRU DO DB
function pushToDb(id_item, id_paramvalue, param_value_button, param_is_selectable)
{
  if ($(param_value_button).hasClass('on'))
  {
    if (param_is_selectable)
    {
      $('.asyncSelectabelParamValue').removeClass('on');
    }
    else
    {
      $(param_value_button).removeClass('on');
    }
  
    $.post('/jquery/scripts/db-remove-item.php', { id_item:id_item, id_paramvalue:id_paramvalue},  function( data ) {
      counItemPrice(id_item);
    });
  }
  else
  {
    if (param_is_selectable)
    {
      $('.asyncSelectabelParamValue').removeClass('on');
    }
    $(param_value_button).addClass('on');
  
    $.post('/jquery/scripts/db-push-item.php', { id_item:id_item, id_paramvalue:id_paramvalue, param_is_selectable:param_is_selectable},  function( data ) {
      counItemPrice(id_item);
      
      // JESTLIŽE PARAMETR is_selectable = 0 TAK ZAVŘU VÝBĚR PARAMETRŮ PO ZVOLENÍ
      if (param_is_selectable)
      {
        loadItemSelectedParams(id_item);
      }
    });
  }      
}

// SPOČÍTÁ CENU PRODUKTU SE VŠEMI ZVOLENÝMI PARAMETRY
function counItemPrice(id_item)
{
  $('.priceLoading').show();
  
  $.post('/jquery/scripts/count-item-price.php', { id_item:id_item },  function( data ) {
    $('#itemPriceNoVat').html(data.cena_bez_dph);
    $('#itemPriceVat').html(data.cena);
    $('#dostupnost-cont').html(data.dostupnost);
    $('.priceLoading').hide();
    
    console.log('CENA CELKEM: ' + data.cena_bez_dph);
    console.log(data);    
  }, "json");
}

// SPOČÍTÁ CENU KOŠÍKU
function countCart(id_cart, type, value)
{
  //$('.priceLoading').show();
  var cnt = $('.' + id_cart + '-input').val();
  
  $.post('/jquery/scripts/count-kosik.php', { id_cart:id_cart , cnt:cnt , type:type , value:value },  function( data ) {
    
    if (data.cnt == 0)
    {
      $('.' + id_cart + '-cart-box').fadeOut('slow');
    }
    if (data.cnt == 1)
    {
      $('.' + id_cart + '-arrow-down').hide();
    }
    if (data.cnt > 1)
    {
      $('.' + id_cart + '-arrow-down').fadeIn('fast');
    }
    
    $('.' + id_cart + '-cena-bez-dph').html(data.cart_cena_bez_dph);
    $('.' + id_cart + '-cena').html(data.cart_cena);
    $('.' + id_cart + '-input').val(data.cnt);
    $('.total-cena-bez-dph').html(data.total_cena_bez_dph);
    $('.total-cena').html(data.total_cena);
    
    DphRekap();
    getFreeDelivery();
    
    console.log(data);    
  }, "json");
}

// VYGENERUJE NOVOU REKAPITULACI DPH
function DphRekap()
{
  $.post('/jquery/scripts/kosik-dph.php', { },  function( data ) {
    $('.dphRekap').html(data);
  });
}

// NASTAVÍ ZPŮSOB DOPRAVY
function setDoprava(id_doprava)
{ 
  $('.doprava-container').html(''); 
  $('.doprava-container').addClass('loading');
  
  $.post('/jquery/scripts/set-doprava.php', { id_doprava:id_doprava },  function( data ) {
    $('.doprava-container').html(data.platba);
    //$('.prodejny-container').html(data.prodejny);
  }, "json");
}

// NASTAVÍ ZPŮSOB PLATBA
function setPlatba(id_platba)
{ 
  $.post('/jquery/scripts/set-platba.php', { id_platba:id_platba },  function( data ) {
    
  });
}

// NASTAVÍ ZVOLENÝ KRAJ
function setKraj(id_kraj)
{
  $.post('/jquery/scripts/set-kraj.php', { id_kraj:id_kraj },  function( data ) {
    $('#async-mesto-cont').html(data.mesta);
    showProdejnaSelect();
    setProdejna();
  }, "json");
}

// NASTAVÍ ZVOLENÝ KRAJ
function setMesto(id_mesto)
{
  $.post('/jquery/scripts/set-mesto.php', { id_mesto:id_mesto },  function( data ) {
    showProdejnaSelect();
    setProdejna();
  });
}

// NASTAVÍ ZVOLENOU PRODEJNU
function setProdejna(id_prodejna)
{
  $.post('/jquery/scripts/set-prodejna.php', { id_prodejna:id_prodejna },  function( data ) {
    $('#async-selected-prodejna-cont').html(data);
  });
}

// ZOBRAZÍ SELECT SE PRODEJNAMI
function showProdejnaSelect()
{
  $.post('/jquery/scripts/show-prodejna-select.php', {  },  function( data ) {
    $('#async-prodejny-cont').html(data.prodejna);
  }, "json");
}

// VYPÍŠE HLÁŠKU O DOPRAVĚ ZDARMA
function getFreeDelivery(lang)
{
  $('#free-delivery').html('');
  $('#free-delivery').addClass('loading');
  $.post('/jquery/scripts/free-delivery.php', { },  function( data ) {
    $('#free-delivery').removeClass('loading');
    $('#free-delivery').html(data);
  });
}

// FUNKCE VYPÍŠE REKAPITULACI OBJEDNÁVKY
function orderRecap()
{
  $('#orderRecap').html('');
  $('#orderRecap').addClass('loading');
  $.post('/jquery/scripts/order-recap.php', { },  function( data ) {
    $('#orderRecap').removeClass('loading');
    $('#orderRecap').html(data);
  });
}

// ULOŽÍ DO SESSION POSLEDNÍ ZOBRAZENOU KATEGORII
function sessionUpdateLastCat(url)
{  
  $.post('/jquery/scripts/session-update-last-cat.php', { url:url },  function( data ) {
    //console.log('SESSION: ' + data);    
  });
}

// SPOČÍTÁ VZDÁLENOST A CENU DOPRAVY ZBOŽÍ K ZÁKAZNÍKOVI
function getDistance()
{
  var geocoder = new google.maps.Geocoder(); // creating a new geocode object
  var ulice = document.getElementById("ulice").value;
	var mesto = document.getElementById("mesto").value;
	var psc = document.getElementById("psc").value;
	
	if (mesto!='' && psc!='')
	{
    var address = ulice + ', ' + mesto + ' ' + psc;	
	
  	// finding out the coordinates
  	if (geocoder) 
  	{
  		geocoder.geocode( { 'address': address}, function(results, status) 
  		{
  			if (status == google.maps.GeocoderStatus.OK) 
  			{
  				$.post('/jquery/scripts/get-distance.php', { address:address },  function( data ) {
  				  $('.map-container').slideDown();
        	  if (data != '')
        	  {
              $('.calcRoute').slideDown();
              //$('.buttonContinue').slideDown();
            }
        	  $('#shippingInfoFrame').html(data);
        	  findRoute();
          });
  			} 
        else 
  			{
  			  //alert("Geocode was not successful for the following reason: " + status);
  			  if (status != "ZERO_RESULTS")
  			  {
  				  alert("Bohužel se nám nepodařilo najít zadanou adresu na mapě. Prosím zkontrolujte zadanou adresu.");
  				}
  			}
  		});
  	}
	}
	else
	{
    $('.map-container').slideUp();
    //$('.buttonContinue').slideUp();
  }
}

// FUNKCE POUZE ZOBRAZÍ FORMULÁŘ PRO ZADÁNÍ ADRESY U UŽIVATELE
function showAddressForm()
{
  $.post('/jquery/scripts/show-address-form.php', { },  function( data ) {
	  if (data != '')
	  {
      $('.calcRoute').slideDown("fast", function(){
        getDistance();
      });
    }
    else
    {
      $('.calcRoute').slideUp();
    }
  });
}

// FUNKCE POUZE ULOŽÍ ADRESU UŽIVATELE DO SESSION
function setCustAddress(param, value)
{
  $.post('/jquery/scripts/set-cust-address.php', { param:param , value:value },  function( data ) {
	  
  });
}