if (url == undefined) url = '/';

$(document).ready(function(){
  // изменили вид сделки
  $('#rf-box-type a').click(function(){
    var link = $(this);
    
    if (link.hasClass('on'))
      return false;
    
    $('#rf-box-type a').filter('.on').removeClass('on').addClass('off');
    link.removeClass('off').addClass('on');
    
    $('#rf-tt').val(link.attr('rel'));
    
    fShowPeriod();
    loadObj();
    
    return false;
  });
  
  // изменили тип недвижимости
  $('#rf-rt').change(function(){
    fShowPeriod();
    fShowType();
    loadObj();
  });

  // изменили срок сдачи в аренду
  $('#rf-rp').change(function(){
    fShowPriceType();
  });

  // изменили тип объекта
  $('#rf-obj').change(function(){
    fShowParams();
    
  });
  
  // ссылка Все объекты в базе
  $('#rf-search-all').click(function(){
    var ts = +new Date;
    document.location.href = url+'realty?tt='+$('#rf-tt').val()+'&rt='+$('#rf-rt').val()+'&rnd='+ts;
    return false;
  });
  
  // ссылка Найти
  $('#rf-search').click(function(){
    var ts = +new Date;
    var rfserial = $('#realty-filter').serialize();
    rfserial = ((rfserial) ? rfserial + '&' : '') + 'rnd=' + ts;
    
    document.location.href = url+'realty?' + rfserial;
    return false;
  });
});

function fShowPeriod() {
  if ($('#rf-tt').val() == 'rent' && $('#rf-rt').val() == 'live') {
    $('#rf-box-rent-period').show('slow');
  } else {
    $('#rf-box-rent-period').hide('slow');
  }
}

function fShowType() {
  if ($('#rf-rt').val() != 'based' && $('#rf-rt').val() != 'foreign') {
    $('#rf-box-type').show('slow');
  } else {
    $('#rf-box-type').hide('slow');
  }
}

function loadObj() {
  if ($('#rf-rt').val() == 'based') {
    $('#rf-box-obj').hide('slow');
    fShowParams();
    // slide open
  } else {
    rfWait(true);
    $('#rf-box-obj').show('slow');
    $.ajax({
      type: 'post',
      url: url,
      dataType: 'json',
      data: {
        action: 'realty-filter-get-objects',
        type: $('#rf-tt').val(),
        rtype: $('#rf-rt').val()
      },
      async: false,
      beforeSend: function(){
        $('#rf-obj').find('option').filter(function (i) { 
          return i != 0 
        }).remove();
      },
      success: function(json){
        if (json) {
          
          $(json).each(function(i) {
            addOption($('#rf-obj'), this);
          });

          $('#rf-obj').val('0').change();
          
          $('#rf-obj_input').remove();
          $('#rf-obj_container').remove();
          $('#rf-obj').selectbox();
        }
      },
      complete: function(){
        rfWait(false);
      }
    });
  }
}

function filterInit(options) {
  var opt = options || {};
  opt.rt = opt.rt || 'live';
  opt.tt = opt.tt || 'sale';
  opt.obj = opt.obj || '0';
  
  opt.dd = opt.dd || '0';
  opt.cc = opt.cc || '0';
  opt.sf = opt.sf || '';
  opt.st = opt.st || '';
  opt.pf = opt.pf || '';
  opt.pt = opt.pt || '';
  opt.rp = opt.rp || 'm';
  opt.rm = opt.rm || '';
  
  rfWait(true);
  
  $('#rf-box-type a').filter(function(i){
    return $(this).attr('rel') == opt.tt;
  }).click();
  
  if ($('#rf-rt_input_'+opt.rt).click()) {
    if($('#rf-obj_input_'+opt.obj).click()) {
      $('#rf-dd_input_'+opt.dd).click();
      $('#rf-cc_input_'+opt.cc).click();
      $('#rf-rp_input_'+opt.rp).click();
      $('#rf-sf').val(opt.sf);
      $('#rf-st').val(opt.st);
      $('#rf-pf').val(opt.pf);
      $('#rf-rm').val(opt.rm);
    }
  }
  rfWait(false);
  
}

// Показываем ед измерения цены
function fShowPriceType() {
  $('.rf-pt-r').hide();
  
  // Типы недвижимости
  switch ($('#rf-rt').val()) {
    case 'live':
      // Вид сделки
      switch ($('#rf-tt').val()) {
        case 'sale':
          $('#rf-pt-tr').show(); // Цена (ед измерения)
        break;
        case 'rent':
          // Срок сдачи
          switch ($('#rf-rp').val()) {
            case 'm':
              $('#rf-pt-rpm').show(); // Цена (ед измерения)
            break;
            case 'd':
              $('#rf-pt-rpd').show(); // Цена (ед измерения)
            break;
          }
        break;
      }
    break;
    
    case 'based':
      $('#rf-pt-tr').show(); // Цена (ед измерения)
    break;
    
    case 'commerce':
      switch ($('#rf-tt').val()) {
        case 'sale':
          $('#rf-pt-r').show(); // Цена (ед измерения)
        break;
        case 'rent':
          $('#rf-pt-rm2').show(); // Цена (ед измерения)
        break;
      }
    break;
    
    case 'country':
      $('#rf-pt-tr').show(); // Цена (ед измерения)
    break;

    case 'foreign':
      $('#rf-pt-tr').show(); // Цена (ед измерения)
    break;
  }
}

// Показываем доп. поля поиска
function fShowParams() {
  
  if ($('#rf-obj').val() == '0' && $('#rf-rt').val() != 'based') {
    $('#rf-slider').slideUp('slow');
    $('#rf-dd_input_0').click();
    $('#rf-cc_input_0').click();
    $('#rf-rp_input_0').click();
    $('#rf-rm').val('');
    $('#rf-sf').val('');
    $('#rf-st').val('');
    $('#rf-pf').val('');
    $('#rf-pt').val('');
    return true;
  }
  
  $('.rf-add-prop').hide();
  $('.rf-pt-r').hide();
  
  switch ($('#rf-rt').val()) {
    case 'live':
      $('#rf-box-rooms').show(); // Кол-во комнат
      $('#rf-box-district').show(); // Район
      $('#rf-box-space').show(); // Площадь
      $('#rf-sp-m2').show(); // Площадь ед. измерения
      $('#rf-box-price').show(); // Цена
      fShowPriceType();
      
      // Вид сделки
      switch ($('#rf-tt').val()) {
        case 'rent':
          $('#rf-box-rent-period').show(); // Срок сдачи
        break;
      }
    break;
    
    case 'based':
      $('#rf-box-rooms').show(); // Кол-во комнат
      $('#rf-box-space').show(); // Площадь
      $('#rf-sp-m2').show(); // Площадь ед. измерения
      $('#rf-box-district').show(); // Район
      $('#rf-box-price').show(); // Цена
      fShowPriceType();
    break;
    
    case 'commerce':
      $('#rf-box-space').show(); // Площадь
      $('#rf-sp-m2').show(); // Площадь ед. измерения
      $('#rf-box-district').show(); // Район
      $('#rf-box-price').show(); // Цена
      fShowPriceType();
    break;
    
    case 'country':
      $('#rf-box-district').show(); // Район
      $('#rf-box-price').show(); // Цена
      fShowPriceType();
    break;
    
    case 'foreign':
      $('#rf-box-country').show(); // Страна
      //$('#rf-box-price').show(); // Цена
      //fShowPriceType();
    break;
  }
  
  $('#rf-slider').slideDown('slow');
  
  return true;
}

function rfWait(status) {
  status = (status == undefined) ? true : !!status;
  
  if (status == true) {
    //$('#rf-loading').slideDown('slow');
  } else {
    //$('#rf-loading').slideUp('slow');
  }
}

/**
 * Add an option to a select box
 * @param {Object} selectbox - select element
 * @param {Object} Item - option properties: String value, String text, Boolean selected
 * @param {String} selectedValue
 */
function addOption(selectbox, Item, selectedValue)
{
  var Opt = new Option(Item.text, Item.value);
  
  if (Item.selected == true || Opt.value == selectedValue)
    Opt.selected = true;
  
  $(selectbox).dom().options.add(Opt);
}
