
var ajaxBasePath = MVC_BASE_PATH + "resources/ajax/searcher_get.php";

var searchType = "sSearch";
var usePriceVal = -1;
var useArrayVal = -1;

var useOptions = false;
var locationOpt;
var typeOpt;
var sizeOpt;
var arrayOpt1;
var arrayOpt2;
var priceOpt1;
var priceOpt2;
var buildingOpt;
var levelOpt;

var langPlocha;
var langCena;
if (MVC_LANGUAGE == "en")
{
   langPlocha = "Floor area";
   langCena = "Price:";
}
else
{
   langPlocha = "Plocha:";
   langCena = "Cena:";
}

function setOptions()
{
    if (useOptions)
    {
        if ($(".listOption[name='typ']").length > 0)
        {
            $(".listOption[name='typ']").val(typeOpt);
        }

        if ($(".listOption[name='budova']").length > 0)
        {
            $(".listOption[name='budova']").val(buildingOpt);
        }

        if ($(".listOption[name='patro']").length > 0)
        {
            $(".listOption[name='patro']").val(levelOpt);
        }

        //$(".listOption[name='lokalita']").val(locationOpt);
        if ($(".listOption[name='velikost']").length > 0)
        {
            $(".listOption[name='velikost']").val(sizeOpt);
        }

        min = arrayOpt1;
        max = arrayOpt2;
        $('#arraySlider').slider('option','max', max);
        $('#arraySlider').slider('option','min', min);
        if (min != max)
        {
           $('#arraySlider').slider("values", 0, min);
           $('#arraySlider').slider("values", 1, max);
           useArrayVal = -1;
        } else
        {
           useArrayVal = min;
           $('#arraySlider').css("display", "none");
        }
        
        $('#arrayTitle').html(createTitleRange(langPlocha, min, max, "m<sup>2</sup>"));

        min = priceOpt1;
        max = priceOpt2;
        $('#priceSlider').slider('option','max', max);
        $('#priceSlider').slider('option','min', min);
        if (min != max)
        {
           $('#priceSlider').slider("values", 0, min);
           $('#priceSlider').slider("values", 1, max);
           usePriceVal = -1;
        } else
        {
           usePriceVal = min;
        }
        $('#priceTitle').html(createTitleRange(langCena, min, max, "Kč"));

        if (min == max || (min == -1 && max == 0))
        {
           $('#priceSlider').css("display", "none");
        }

        refreshSearcher();
        useOptions = false;
    }
}

function getBuilding()
{
    var building = -1;

    if ($(".listOption[name='budova']").length > 0)
    {
       building = $(".listOption[name='budova']").val().toString();
    }

    return building;
}

function getLevel()
{
    var level = -1;

    if ($(".listOption[name='patro']").length > 0)
    {
       level = $(".listOption[name='patro']").val().toString();
    }

    return level;
}

//window.alert(ajaxBasePath);

function refreshType()
{
    //var location = $(".listOption[name='lokalita']").val().toString();
    var location = -1;
    
    $.get(ajaxBasePath, {'stav':getStavOpt(),'building': getBuilding(), 'level':getLevel(), 'location': location, 'cmd': "typ", 'lang': MVC_LANGUAGE},
       function(data, status)
       {
           if (status == "success")
           {
              $(".listOption[name='typ']").empty();
              $(".listOption[name='typ']").append(data);
              refreshSize();
           } else
           {
              window.alert("Chyba: nemohu načíst seznam typů.");
           }
       }
    );
}

function refreshBuildings()
{
    var location = -1;

    $.get(ajaxBasePath, {'stav':getStavOpt(),'location': location, 'cmd': "buildings", 'lang': MVC_LANGUAGE},
       function(data, status)
       {
           if (status == "success")
           {
              $(".listOption[name='budova']").empty();
              $(".listOption[name='budova']").append(data);
              refreshLevels()
           } else
           {
              window.alert("Chyba: nemohu načíst seznam budov.");
           }
       }
    );
}

function refreshLevels()
{
    var location = -1;

    $.get(ajaxBasePath, {'stav':getStavOpt() ,'building': getBuilding(),'location': location, 'cmd': "levels", 'lang': MVC_LANGUAGE},
       function(data, status)
       {
           if (status == "success")
           {
              $(".listOption[name='patro']").empty();
              $(".listOption[name='patro']").append(data);
              refreshType();
           } else
           {
              window.alert("Chyba: nemohu načíst seznam pater.");
           }
       }
    );
}

function refreshSize()
{
   var typ = "";
   if ($(".listOption[name='typ']").length > 0)
   {
      typ = $(".listOption[name='typ']").val().toString();
   }
   var location =  -1; //$(".listOption[name='lokalita']").val().toString();

   $.get(ajaxBasePath, {'stav':getStavOpt(),'building': getBuilding(),'level':getLevel(),'location': location, 'type': typ, 'cmd': "size", 'lang': MVC_LANGUAGE},
       function(data, status)
       {
           if (status == "success")
           {
              $(".listOption[name='velikost']").empty();
              $(".listOption[name='velikost']").append(data);
              
              refreshArea();
           } else
           {
              window.alert("Chyba: nemohu načíst seznam velikostí.");
           }
       }
   );
}

function refreshArea()
{
    var typ = "";
    if ($(".listOption[name='typ']").length > 0)
    {
        typ = $(".listOption[name='typ']").val().toString();
    }

    var location = -1; //= $(".listOption[name='lokalita']").val().toString();

    var velikost = "";
    if ($(".listOption[name='velikost']").length > 0)
    {
        velikost = $(".listOption[name='velikost']").val().toString();
    }

    $.get(ajaxBasePath, {'stav':getStavOpt(),'building': getBuilding(),'level':getLevel(),'location': location, 'size': velikost,'type': typ, 'cmd': "scrollSize", 'lang': MVC_LANGUAGE},
       function(data, status)
       {
           if (status == "success")
           {
              
              try
              {
                   var obj = eval(data);
                   
                   if (obj.error == true)
                   {
                      window.alert("Chyba: nemohu načíst dostupnou plochu.");
                   } else
                   {
                      if ($('#arraySlider').css('display') == "none")
                      {
                         $('#arraySlider').css('display', 'block');
                      }

                      var min = parseInt(obj.min);
                      var max = parseInt(obj.max);

                      $('#arraySlider').slider('option','max', max);
                      $('#arraySlider').slider('option','min', min);
                      if (min != max)
                      {
                          $('#arraySlider').slider("values", 0, min);
                          $('#arraySlider').slider("values", 1, max);
                          useArrayVal = -1;

                      } else
                      {
                         useArrayVal = min;
                         $('#arraySlider').css("display", "none");
                      }
                      $('#arrayTitle').html(createTitleRange(langPlocha, min, max, "m<sup>2</sup>"));
                      refreshCost();
                   }
              } catch(e)
              {
                window.alert("Chyba: nemohu načíst dostupnou plochu. ");
              }
           } else
           {
              window.alert("Chyba: nemohu načíst dostupnou plochu.");
           }
       }
    );
}

function refreshCost()
{
    var typ = "";
    if ($(".listOption[name='typ']").length > 0)
    {
        typ = $(".listOption[name='typ']").val().toString();
    }
    
    var location = -1; //$(".listOption[name='lokalita']").val().toString();

    var velikost = "";
    if ($(".listOption[name='velikost']").length > 0)
    {
        velikost = $(".listOption[name='velikost']").val().toString();
    }

    var plochaOd;// = parseInt($('#arraySlider').slider("values", 0));
    var plochaDo;// = parseInt($('#arraySlider').slider("values", 1));

    if (useArrayVal != -1)
    {
        plochaOd = useArrayVal;
        plochaDo = useArrayVal;
    } else
    {
        plochaOd = parseInt($('#arraySlider').slider("values", 0));
        plochaDo = parseInt($('#arraySlider').slider("values", 1));
    }

    //window.alert(typ + "/" + location + "/" +velikost+ "/" +plochaOd + "/" + plochaDo)
    //return;
    //window.alert(plochaOd + "/" + plochaDo);

    $.get(ajaxBasePath, {'stav':getStavOpt(),'building': getBuilding(),'level':getLevel(),'location': location, 'size': velikost,'type': typ, 'cmd': "scrollCost", 'plochaOd': plochaOd, 'plochaDo': plochaDo, 'lang': MVC_LANGUAGE},
       function(data, status)
       {
           if (status == "success")
           {
              var obj = eval(data);
              
                   if (obj.error == true)
                   {
                      window.alert("Chyba: nemohu načíst dostupné ceny.");
                   } else
                   {
                      if ($('#priceSlider').css('display') == "none")
                      {
                         $('#priceSlider').css('display', 'block');
                      }

                      var min = parseInt(obj.min);
                      var max = parseInt(obj.max);
                      //window.alert(obj.min + "=" + min.toString() + "/" + obj.max + "="+ max.toString());
                      //window.alert(isNaN(min).toString() + "/" +isNaN(max).toString());

                      if (isNaN(min)) min = -1;
                      if (isNaN(max)) max = 0;
                      
                      /*if (min == max && !isNaN(min) && !isNaN(max))
                      {*/
                      /*if (!isNaN(min) && !isNaN(max))
                      {*/
                      
                      //window.alert(min +"/"+ max);

                      $('#priceSlider').slider('option','max', max);
                      $('#priceSlider').slider('option','min', min);
                      if (min != max)
                      {
                          $('#priceSlider').slider("values", 0, min);
                          $('#priceSlider').slider("values", 1, max);
                          usePriceVal = -1;
                      } else
                      {
                          usePriceVal = min;
                      }
                      
                      refreshSearcher();
                      /*} else
                      {
                         blockPriceVal = true;
                      }*/
                      
                      $('#priceTitle').html(createTitleRange(langCena, min, max, "Kč"));
                      /*}*/

                      if (min == max || (min == -1 && max == 0))
                      {
                         $('#priceSlider').css("display", "none");
                      }/* else
                      {
                        $('#priceSlider').slider('option','max', max);
                        $('#priceSlider').slider('option','min', min);
                        $('#priceSlider').slider("values", 0, min);
                        $('#priceSlider').slider("values", 1, max);
                        $('#priceTitle').html(createTitleRange("Cena:", min, max, "Kč"));
                      }*/

                      setOptions();
                   }
           } else
           {
              window.alert("Chyba: nemohu načíst dostupné ceny.");
           }
       }
    );

   //cmd=scrollSize&amp;location=&amp;type=&amp;size=&amp;plochaOd=&amp;plochaDo=
}

function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}

var searchResultRequestNum = 0;
var showActQidRequest = 0;
function refreshSearcher()
{
    var typ = "";
    if ($(".listOption[name='typ']").length > 0)
    {
        typ = $(".listOption[name='typ']").val().toString();
    }

    var location = -1; //$(".listOption[name='lokalita']").val().toString();
    var velikost = "";
    if ($(".listOption[name='velikost']").length > 0)
    {
        velikost = $(".listOption[name='velikost']").val().toString();
    }

    var plochaOd; //= parseInt($('#arraySlider').slider("values", 0));
    var plochaDo; //= parseInt($('#arraySlider').slider("values", 1));
    var cenaOd; //= parseInt($('#priceSlider').slider("values", 0));
    var cenaDo; //= parseInt($('#priceSlider').slider("values", 1));

    if (useArrayVal != -1)
    {
        plochaOd = useArrayVal;
        plochaDo = useArrayVal;
    } else
    {
        plochaOd = parseInt($('#arraySlider').slider("values", 0));
        plochaDo = parseInt($('#arraySlider').slider("values", 1));
    }

    if (usePriceVal != -1)
    {
        cenaOd = usePriceVal;
        cenaDo = usePriceVal;
        // todo: pri  vyberu 4+kk
    } else
    {
        cenaOd = parseInt($('#priceSlider').slider("values", 0));
        cenaDo = parseInt($('#priceSlider').slider("values", 1));
    }

/*
   var url = ajaxBasePath + "searcherGet.php?" +
             "cmd=sSearch&"+
             "location="+location+"&"+
             "type="+typ+"&"+
             "size="+velikost+"&"+
             "plochaOd="+plochaOd+"&"+
             "plochaDo="+plochaDo+"&"+
             "cenaOd="+cenaOd+"&"+
             "cenaDo="+cenaDo;

   window.alert(url);

   return;
  */
   searchResultRequestNum++;
   $.get(ajaxBasePath, {'stav':getStavOpt(),'building': getBuilding(),'level':getLevel(),'location': location, size: velikost,type: typ, cmd: searchType, 'plochaOd': plochaOd, 'plochaDo': plochaDo, 'cenaOd': cenaOd, 'cenaDo': cenaDo, 'lang': MVC_LANGUAGE, 'qId': searchResultRequestNum},
   function(data, status)
   {
      if (status == "success")
      {
          var getQid = 0;
          var ret = data.match(/^\{[0-9]*\}/);

          if (ret == null)
          {
             getQid = 0;
          } else
          {
             getQid = parseInt(ret[0].replace('{', '').replace('}', ''));
             data = data.replace(ret[0], '');
          }

          //alert('qId:' + getQid + ' showActQidRequest: ' + showActQidRequest + ' ret:' + (showActQidRequest < getQid).toString());

          if (showActQidRequest < getQid)
          {
              showActQidRequest = getQid;
              //alert('refresh: ' + getQid);
              $('#searchResultContainer').empty();
              $('#searchResultContainer').html = "";
              $('#searchResultContainer').append(data);
          }

          if(typeof document.body.style.maxHeight === "undefined")
          {
              var h = $('.textContent').css('height');

              $('.textContent').css('height', h);
              $('.textContent').css('overflow', 'hidden');
              $('.main').css('height', h);
              //$('.main').css('overflow', 'hidden');
              $('.footerContainer').css('bottom', '0');
              $('.footerContainer').css('z-index', '50');
          }
      } else
      {
         //window.alert("Chyba: nemohu načíst dostupné ceny.");
      }
   });
}

function initSearcher()
{
    var tmpType = $('#searchResultContainer').attr("class");
    var sSearchIndex = tmpType.indexOf('sSearch');
    var aSearchIndex = tmpType.indexOf('aSearch');

    if (aSearchIndex >= 0) {
        searchType = "aSearch";
    } else if (sSearchIndex >= 0) {
        searchType = "sSearch";
    } else {
        searchType = "sSearch";
    }

    //refreshType();
    refreshBuildings();
}

function formatValueSpace(value)
{
    var outVal = new String("");

    var strVal = new String(value.toString());
    var num = 0;

    for (var i = strVal.length - 1; i >= 0; i--)
    {
        if (num == 3)
        {
           num = 0;
           outVal = " " + outVal;
        }
        num++;
        outVal = strVal.charAt(i) + outVal;
    }

    return outVal;
}

function createTitleRange(title, val1, val2, suffix)
{
    var msg = "Tento parametr není pro zvolená kritéria dostupný.";

    if (suffix == "Kč") msg = "Info o ceně u našich makléřů.";

    if (val1 == -1 && (val2 == 0 || val2 == -1))
    {
        return "<strong>" + title + "</strong>&nbsp;" + msg +".";
    }else
    {
        if (suffix == "Kč")
        {
            val1 = formatValueSpace(val1);
            val2 = formatValueSpace(val2);
        }
        return "<strong>" + title + "</strong>&nbsp;" + val1 + " " + suffix  + " - " + val2 + " " + suffix;
    }
}

function setCookie(c_name, value, exdays)
{
    var exdate = new Date();

    exdate.setDate(exdate.getDate() + exdays);

    var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());

    document.cookie = c_name + "=" + c_value;
}

function getCookie(c_name)
{
    var i;
    var x;
    var y;
    var ARRcookies= document.cookie.split(";");

    for (i = 0; i < ARRcookies.length; i++)
    {
       x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
       y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
       x = x.replace(/^\s+|\s+$/g, "");

       if (x == c_name)
       {
          return unescape(y);
       }
    }

    return null;
}

function initSearcherStav()
{
    if ($('#StavOpt').length > 0)
    {
        var StavOpt = getCookie("StavOpt");

        if (StavOpt != null && StavOpt != "")
        {
            setCookie("StavOpt", StavOpt, 365)
        }

        $('#StavOpt').change(
            function(){
                setCookie("StavOpt", $('#StavOpt').val(), 365);
                refreshBuildings();
            }
        );
    }
}

function getStavOpt()
{
    if ($('#StavOpt').length > 0)
    {
        return $('#StavOpt').val();
    }

    return -1;
}

$(document).ready(function()
{
    initSearcherStav();

    if ($('.searchContainer').length > 0)
    {
        if ($('#priceSlider').length > 0)
        {
            $('#priceSlider').slider({
                'range': 'true',
                'min': 1, 'max': 100000000,
                'values':[1, 100000000],
                'slide': function(event, ui)
                {
                    $('#priceTitle').html(createTitleRange(langCena, ui.values[0], ui.values[1], "Kč"));
                },
                'change': refreshSearcher
            });
        }

        if ($('#priceTitle').length > 0)
        {
            $('#priceTitle').html(createTitleRange(langCena, $('#priceSlider').slider("values", 0), $('#priceSlider').slider("values", 1), " Kč"));
        }

        if ($('#arraySlider').length > 0)
        {
            $('#arraySlider').slider({
                'range': 'true',
                'min': 1,
                'max': 10000,
                'values':[1, 10000],
                'slide': function(event, ui)
                {
                    $('#arrayTitle').html(createTitleRange(langPlocha, ui.values[0], ui.values[1], " m<sup>2</sup>"));
                },
                'stop': refreshCost
                        
            });
        }

        if ($('#arrayTitle').length > 0)
        {
            $('#arrayTitle').html(createTitleRange(langPlocha, $('#arraySlider').slider("values", 0), $('#arraySlider').slider("values", 1), " m<sup>2</sup>"));
        }
       
        if ($('.listOption').length > 0)
        {
            $('.listOption').each(function(){
                var elName = $(this).attr("name");
                
                switch (elName)
                {
                   case "budova":
                       $(this).change(refreshLevels);
                   break;
                   case "patro":
                       $(this).change(refreshType);
                   case "typ":
                       $(this).change(refreshSize);
                   break;
                   case "velikost":
                       $(this).change(refreshArea);
                }
            });    
         }
        //$('.listOption').selectbox();

        $('.jsHidden').css("display", "none");

        initSearcher();
    }
});
//.footerContainer
//setTimeout("setOptions()", 1000);

