/* TermálPortál keresés */

// ----- eseménykezelők ----- //
$(document).ready(function(){
  //cache:
  var typeSelect = $('#sf_type_id'),
      megyeSelect = $('#sf_megye_id'),
      zipSelect = $('#sf_zips'),
      keywordsInput = $('#sf_keywords'),
      
      typeList = '',
      megyeList = '',
      zipList = '',
      
      typeVal = '',
      megyeVal = '',
      zipVal = '',
      keyPhrase = '';
  
  //hover & click & focus:
  var kVal = '';
  keywordsInput.focus(function(){
    kVal = $(this).val();
    if (kVal == clientSettings.keywordsLabel) $(this).val('');
  });
  
  keywordsInput.blur(function(){
    kVal = $(this).val();
    if (kVal == '') $(this).val(clientSettings.keywordsLabel);
  });
  
  var btn = $('#searchBtn');
  btn.hover(function(){
    if ($(this).attr('class') == 'search-btn') $(this).removeClass('search-btn').addClass('search-btn-hover');
  },function(){
    if ($(this).attr('class') == 'search-btn-hover') $(this).removeClass('search-btn-hover').addClass('search-btn');
  });
  
  //alapértelmezett tartalom:
  loadDefaults();
  
  $('#searchBtn').click(function(){
    var currentClass = $(this).attr('class');
    if (currentClass != 'search-btn-disabled'){
      //submit search form:
      location.href = clientSettings.docRoot + 'kereses/';
    }
  });
  
  //típus változás:
  typeSelect.change(function(){
    typeVal = $(this).val();
    
    $.ajax({
      type: 'post',
      url: clientSettings.docRoot + 'ajax/searchparam.php',
      cache: false,
      data: 'type_id=' + encodeURIComponent(typeVal),
      dataType: 'json',
      success: function(obj){
        if (obj.status == 1){
          // MEGYE & TELEPÜLÉS újratöltése:
          megyeList = obj.megye_list;
          zipList = obj.zip_list;
          
          reloadSelect(megyeSelect,megyeList,clientSettings.chooseMegyeLabel,false,false);
          reloadSelect(zipSelect,zipList,clientSettings.chooseCityLabel,clientSettings.chooseCityAllLabel,true);
          
          setButtonCount();
        }
      }
    });
  });
  
  //megye változás:
  megyeSelect.change(function(){
    megyeVal = $(this).val();
    
    $.ajax({
      type: 'post',
      url: clientSettings.docRoot + 'ajax/searchparam.php',
      cache: false,
      data: 'megye_id=' + encodeURIComponent(megyeVal),
      dataType: 'json',
      success: function(obj){
        if (obj.status == 1){
          // TÍPUS & TELEPÜLÉS újratöltése:
          typeList = obj.type_list;
          zipList = obj.zip_list;
          
          reloadSelect(typeSelect,typeList,clientSettings.chooseTypeLabel,clientSettings.chooseTypeAllLabel);
          reloadSelect(zipSelect,zipList,clientSettings.chooseCityLabel,clientSettings.chooseCityAllLabel,true);
          
          setButtonCount();
        }
      }
    });
  });
  
  //település változás:
  zipSelect.change(function(){
    zipVal = $(this).val();
    
    $.ajax({
      type: 'post',
      url: clientSettings.docRoot + 'ajax/searchparam.php',
      cache: false,
      data: 'zip=' + encodeURIComponent(zipVal),
      dataType: 'json',
      success: function(obj){
        if (obj.status == 1){
          // TÍPUS újratöltése:
          typeList = obj.type_list;
          
          reloadSelect(typeSelect,typeList,clientSettings.chooseTypeLabel,clientSettings.chooseTypeAllLabel);
          
          setButtonCount();
        }
      }
    });
  });
  
  //kulcsszó keyup:
  keywordsInput.keyup(function(){
    keyPhrase = keywordsInput.val();
    if (keyPhrase == clientSettings.keywordsLabel) keyPhrase = '';
    //2 mp várakozás
    keyupDelay(function(){
      $.ajax({
        type: 'post',
        url: clientSettings.docRoot + 'ajax/searchparam.php',
        cache: false,
        data: 'keyphrase=' + encodeURIComponent(keyPhrase),
        dataType: 'json',
        success: function(obj){
          if (obj.status == 1){
            // TÍPUS & MEGYE & TELEPÜLÉS újratöltése:
            typeList = obj.type_list;
            megyeList = obj.megye_list;
            zipList = obj.zip_list;
            
            reloadSelect(typeSelect,typeList,clientSettings.chooseTypeLabel,clientSettings.chooseTypeAllLabel);
            reloadSelect(megyeSelect,megyeList,clientSettings.chooseMegyeLabel,false);
            reloadSelect(zipSelect,zipList,clientSettings.chooseCityLabel,clientSettings.chooseCityAllLabel);
            
            setButtonCount();
          }
        }
      });
    },2000);
  });
});

// ----- függvények ----- //

function loadDefaults(){
  $.ajax({
    type: 'post',
    url: clientSettings.docRoot + 'ajax/searchparam.php',
    cache: false,
    data: 'defaults=1',
    dataType: 'json',
    success: function(obj){
      if (obj.status == 1){
        megyeList = obj.megye_list;
        zipList = obj.zip_list;
        typeList = obj.type_list;
        keyphrase = obj.keyphrase;
        
        if (!keyphrase || keyphrase == ''){
          $('#sf_keywords').val(clientSettings.keywordsLabel);
        }else{
          $('#sf_keywords').val(keyphrase);
        }
        
        reloadSelect($('#sf_megye_id'),megyeList,clientSettings.chooseMegyeLabel,false,false);
        reloadSelect($('#sf_zips'),zipList,clientSettings.chooseCityLabel,clientSettings.chooseCityAllLabel,true);
        reloadSelect($('#sf_type_id'),typeList,clientSettings.chooseTypeLabel,clientSettings.chooseTypeAllLabel);
        setButtonCount();
      }
    }
  });
}

function setButtonCount(){
  var button = $('#searchBtn');
  var buttonClass = button.attr('class');
  
  button.removeClass(buttonClass).addClass('search-btn-disabled');
  
  var buttonCount = $('#sStatNum');
  buttonCount.html('...');
  
  //disable button:
  
  $.ajax({
    type: 'get',
    url: clientSettings.docRoot + 'ajax/get_button_counts.php',
    cache: false,
    dataType: 'json',
    success: function(obj){
      if (obj.status == 1){
        button.removeClass('search-btn-disabled').addClass('search-btn');
        
        if (obj.total == 0){
          button.removeClass('search-btn').addClass('search-btn-disabled');
        }
        
        buttonCount.html(obj.total);
      }
    }
  });
}

function reloadSelect(obj,json,defaultTitle,allTitle,canBeDisabled){
  //clear select:
  obj.html(' ');
  
  //enable:
  if (obj.attr('disabled')) obj.attr('disabled',false);
  
  //add default value:
  $('<option value=""> -- '+defaultTitle+' -- </option>').appendTo(obj);
  
  //add all - if needed AND if json items > 0!:
  var jsonCount = count(json);
  if (allTitle && jsonCount && jsonCount > 0){
    $('<option value="all">'+allTitle+'</option>').appendTo(obj);
  }
  
  //add items:
  if (jsonCount && jsonCount > 0){
    var item = '';
    var selected_out = '';
    for (var i in json){
      item = json[i];
      if (item['opt_selected'] && item['opt_selected'] == 1) selected_out = ' selected="selected"';
      else selected_out = '';
      
      $('<option value="'+item['opt_val']+'"'+selected_out+'>'+item['opt_label']+'</option>').appendTo(obj);
    }
  }
  
  //disable if can be disabled:
  if (canBeDisabled && (!jsonCount || jsonCount == 0)){
    obj.attr('disabled',true);
  }
}

//count associative array length:
function count(arr){
  var size = 0;
  for (var x in arr){
    if (arr.hasOwnProperty(x)) size ++;
  }
  return size;
}

//keyup timeout
var keyupDelay = (function(){
  var timer = 0;
  return function(callback, ms){
    clearTimeout (timer);
    timer = setTimeout(callback, ms);
  };
})();

/* search form */
/*$(document).ready(function(){
  //set button counts:
  setButtonCounts();
  
  //auto-set keywords textfield:
  var val = $('#sf_keywords').val();
  if (val == ''){
    $('#sf_keywords').val(clientSettings.keywordsLabel);
  }
  
  //change keywords textfield:
  $('#sf_keywords').focus(function(){
    var val = $(this).val();
    if (val == clientSettings.keywordsLabel) $(this).val('').css({'font-style':'normal'});
  });
  
  $('#sf_keywords').blur(function(){
    var val = $(this).val();
    if (val == ''){
      $(this).val(clientSettings.keywordsLabel).css({'font-style':'italic'});
      //searchparam:
      $.ajax({
        type: 'get',
        url: clientSettings.docRoot + 'ajax/set_searchparam.php',
        cache: false,
        data: 'skey=keyphrase&svalue=',
        success:function(response){
          //set counts on button:
          setButtonCounts();
        }
      });
    }
    else{
      //set searchparam & set button counts:
      $.ajax({
        type: 'get',
        url: clientSettings.docRoot + 'ajax/set_searchparam.php',
        cache: false,
        data: 'skey=keyphrase&svalue='+encodeURIComponent(val),
        success:function(response){
          //set counts on button:
          setButtonCounts();
        }
      });
    }
  });
  
  //search btn hover:
  $('#searchBtn').hover(function(){
    //over:
    var currentClass = $(this).attr('class');
    if (currentClass != 'search-btn-disabled'){
      $(this).removeClass(currentClass).addClass('search-btn-hover');
    }
  },function(){
    //out:
    var currentClass = $(this).attr('class');
    if (currentClass != 'search-btn-disabled'){
      $(this).removeClass(currentClass).addClass('search-btn');
    }
  });
  
  //megye-település választás:
  $('#sf_megye_id').change(function(){
    var megyeId = $(this).val();
    if (megyeId != ''){
      //megye kiválasztva => települések listázása:
      $.ajax({
        type: 'get',
        url: clientSettings.docRoot+'ajax/set_city_list.php',
        cache: false,
        dataType: 'json',
        data: 'megye_id='+encodeURIComponent(megyeId),
        success:function(response){
          //set counts on button:
          setButtonCounts();
          
          //clear select:
          clearSelect('sf_zips');
          var sfCitySelect = $('#sf_zips');
          sfCitySelect.attr('disabled',false);
          $('<option value="">-- '+clientSettings.chooseCityLabel+' --</option>').appendTo(sfCitySelect);
          $('<option value="all">'+clientSettings.chooseCityAllLabel+'</option>').appendTo(sfCitySelect);
          for (var i = 0; i<response.length; i++){
            $('<option value="'+response[i].zip+'">'+response[i].nev+'</option>').appendTo(sfCitySelect);
          }
        }
      });
    }else{
      //üres megye => nincs település:
      clearSelect('sf_zips');
      var sfCitySelect = $('#sf_zips');
      $('<option value="">-- '+clientSettings.chooseCityLabel+' --</option>').appendTo(sfCitySelect);
      //unset session:
      $.ajax({
        type: 'get',
        url: clientSettings.docRoot + 'ajax/set_searchparam.php',
        cache: false,
        data: 'skey=megye_id&svalue=0&extra=clear_zip',
        success:function(response){
          //set counts on button:
          setButtonCounts();
        }
      });
    }
  });
  
  //település-változás:
  $('#sf_zips').change(function(){
    var zip = $(this).val();
    //set search params:
    $.ajax({
      type: 'get',
      url: clientSettings.docRoot + 'ajax/set_searchparam.php',
      cache: false,
      data: 'skey=zips&svalue='+encodeURIComponent(zip),
      success:function(response){
        //set counts on button:
        setButtonCounts();
      }
    });
  });
  
  //típus-változás:
  $('#sf_type_id').change(function(){
    var typeId = $(this).val();
    //set search params:
    $.ajax({
      type: 'get',
      url: clientSettings.docRoot + 'ajax/set_searchparam.php',
      cache: false,
      data: 'skey=type_id&svalue='+encodeURIComponent(typeId),
      success:function(response){
        //set counts on button:
        setButtonCounts();
      }
    });
  });
  
  //form elküldése:
  $('#searchBtn').click(function(){
    $('#searchForm').submit();
  });
  
  $('#searchForm').submit(function(){
    var keywordsVal = $('#sf_keywords').val();
    var buttonClass = $('#searchBtn').attr('class');
    if (keywordsVal == clientSettings.keywordsLabel) keywordsVal = '';
    if (buttonClass !== 'search-btn-disabled'){
      //set searchparams:
      $.ajax({
        type: 'get',
        url: clientSettings.docRoot + 'ajax/set_searchparam.php',
        cache: false,
        data: 'skey=keyphrase&svalue='+encodeURIComponent(keywordsVal),
        success:function(response){
          //set counts on button:
          location.href = clientSettings.docRoot + 'kereses/';
        }
      });
    }
    return false;
  });
});

function clearSelect(selectId){
  $('#'+selectId).html('');
}

function setButtonCounts(){
  $.ajax({
    type:'get',
    url: clientSettings.docRoot + 'ajax/get_button_counts.php',
    cache: false,
    success: function(response){
      var currentSearchClass = $('#searchBtn').attr('class');
      
      if (response == 0){
        //set disabled class:
        $('#searchBtn').removeClass(currentSearchClass).addClass('search-btn-disabled');
        response = '0';
      }else{
        //set active class (if-needed):
        if (currentSearchClass == 'search-btn-disabled') $('#searchBtn').removeClass(currentSearchClass).addClass('search-btn');
      }
      $('#sStatNum').html(response);
    }
  });
}
*/

