$(function() {
  var search_word = '';
  var search_was = false;
  var search_expand = false;
  var search_default_text_1 = 'введите название ресторана или блюда';
  var search_default_text_2 = 'введите название блюда';
  var search_default_text = $('#search_use_restoran').is(':checked') ? search_default_text_2 : search_default_text_1;
  
  searchForm = {};

  searchForm.focus = function() {
    if ($(this).val() == search_default_text) {
      $(this).val('');
      $(this).css('color','black');
    }
  }

  searchForm.blur = function() {
    if ($(this).val() == '' || $(this).val() == search_default_text) {
      $(this).val(search_default_text);
      $(this).css('color','#a1a1a1');
      $('#search_reset').hide();
    } else {
      $(this).css('color','black');
      $('#search_reset').show();
    }
  }

  searchForm.submit = function() {
    $('#search_loader').show();
    $('#search_content').html('');
    var form = $(this);
    if($('#search_use_delivery_price').is(':checked')){
      addDeliveryUserSearch($('#search_delivery_address').val(), $('#search_order_price').val(),function(){
        postSubmit(form, true);
      });
    } else {
      postSubmit(form, true);
    }
      
    return false;
  }

  postSubmit = function(form, show){
    if ($('#search_form_input').val() == search_default_text) {
      $('#search_form_input').val('');
      data = form.serialize();
      $('#search_form_input').val(search_default_text);
    } else {
      data = form.serialize();
    }
    
    $.post(form.attr('action'), data, function(response){
      if(show){
        search_was = true;
        search_expand = true;
        $('#search_loader').hide();
        $('#search_content').html(response.result).show();
        $('#search_content_hide span').text('Свернуть').parent().removeClass('roll-up').addClass('roll-down').show();
        $('#expand_arraw').attr('src','/images/expand1.gif').css('cursor','pointer');

        if (search_word != $('#search_form_input').val()){
          if(response.status == 'finded'){
            categoryTypeFilter(response.category_type_id);
            $('#search_content_hide small').text('(было найдено ' + response.finded_text + ')');
          } else {
            categoryTypeFilter('all');
            $('#search_content_hide small').text('').hide();
          }
        }

        $('#search_content_hide small').hide();
        $.scrollTo($('#search_bar').position().top,'slow');
      } else {
        search_was = false;
        search_expand = false;
        $('#search_loader').hide();
        $('#search_content').hide();
        $('#search_content_hide').hide();
        categoryTypeFilter('all');
      }
      search_word = $('#search_form_input').val();
      
      $('#search_form_input').blur();
    }, 'json');
  }
  
  categoryTypeFilter = function(id_list) {
    if (id_list == 'all'){
      $('#search_category_type_list input[type="checkbox"]').removeAttr('disabled').parent().removeClass('font_color_attr_grey').parent().show();
    } else {
      var checkbox_list = $('#search_category_type_list input[type="checkbox"]');
      
      checkbox_list.each(function(){
        if(!id_list[$(this).val()]){
          $(this).attr('disabled','disabled').removeAttr('checked').parent().addClass('font_color_attr_grey').parent().hide();
        } else {
          $(this).removeAttr('disabled').show().parent().removeClass('font_color_attr_grey').parent().show();
        }
      })
    }
  }
  
  toggleFilterHr = function() {
    if ($('#search_use_category_type').is(':checked') && $('#search_use_delivery_price').is(':checked') && !$('#search_use_restoran').is(':checked')){
      $('#filter_hr').show();
    } else {
      $('#filter_hr').hide();
    }
  }
  
  $('#search_content_hide').click(function(){
    if(search_expand) {
      $('#search_content').slideUp(function(){
        $.scrollTo($('#search_bar').position().top,'slow');
      });
      $('#expand_arraw').attr('src','/images/expand2.gif').css('cursor','pointer');
    } else {
      if(!search_was){
        $('#search_form').submit();
      } else {
        $('#search_content').slideDown(function(){
        });
      }
      $('#expand_arraw').attr('src','/images/expand1.gif').css('cursor','pointer');
    }
    
    if(search_expand){
      $('span', this).text('Развернуть последние результаты поиска');
      $('small', this).show();
      $(this).removeClass('roll-down').addClass('roll-up');
    } else {
      $('span', this).text('Свернуть');
      $(this).removeClass('roll-up').addClass('roll-down');
      $('small', this).hide();
    }
    
    search_expand = !search_expand;
  })
  
  $('#search_delivery_address,#search_order_price').blur(function(){
      var _tmp_address = ($('#search_delivery_address').val() != '' && $('#search_delivery_address').val() != 'Адрес доставки') ? true : false;
      var _tmp_summary_price = ($('#search_order_price').val() != '' && $('#search_order_price').val() != 'Предполагаемая сумма заказа') ? true : false;
      
      if(_tmp_address && _tmp_summary_price){
        $('#search_form').submit();
      }
  })
  
  $('#search_use_delivery_price,#search_use_category_type').change(function(){
    $.get($('#search_form').attr('action'),{'search_use_delivery_price': $('#search_use_delivery_price').is(':checked') ? 1 : 0, 'search_use_category_type': $('#search_use_category_type').is(':checked') ? 1 : 0});
  })
  
  
  $('#search_category_type_list input:checkbox,#search_use_category_type').change(function(){
    if ($('#search_form_input').val() != search_default_text && $('#search_category_type_list :checkbox:checked:first').html()!=null) {
      $('#search_form').submit();
    }
  })
  
  $('#search_reset').click(function(){
    $('#search_form_input').val('').blur();
    $('#expand_arraw').attr('src','/images/expand3.png').css('cursor','auto');
    
    postSubmit($('#search_form'), false);
  })
  
  $('#search_use_category_type').click(function(){
    if($(this).is(':checked')){
      $('#search_category_type_list').slideDown();
    } else {
      $('#search_category_type_list').slideUp();
    }
    toggleFilterHr();
    
    if (search_word != $('#search_form_input').val())
      categoryTypeFilter('all');
  })
  
  $('#search_use_delivery_price').click(function(){
    if($(this).is(':checked')){
      $('#search_delivery_price').slideDown();
    } else {
      $('#search_delivery_price').slideUp();
    }
    toggleFilterHr();
  })
  
  $('#search_use_restoran').click(function(){
    var _tmp_val = $('#search_form_input').val();
    var _tmp_default = search_default_text;
    
    if($(this).is(':checked')){
      search_default_text = search_default_text_2;
      $('#search_use_delivery_price').attr('disabled', 'disabled').next().addClass('font_color_attr_grey');
      $('#search_use_category_type').attr('disabled', 'disabled').next().addClass('font_color_attr_grey');

      $('#search_delivery_price, #search_category_type_list').slideUp();
    } else {
      search_default_text = search_default_text_1;
      $('#search_use_delivery_price').removeAttr('disabled').next().removeClass('font_color_attr_grey').parent().show();
      $('#search_use_category_type').removeAttr('disabled').next().removeClass('font_color_attr_grey').parent().show();

      if($('#search_use_category_type').is(':checked')) $('#search_category_type_list').slideDown();
      if($('#search_use_delivery_price').is(':checked')) $('#search_delivery_price').slideDown();
    }
    
    if (_tmp_val == _tmp_default) {
      $('#search_form_input').val(search_default_text);
    }
    
    toggleFilterHr();
  })
    
  searchForm.init = function() {
    $('#search_form_input').focus(searchForm.focus);
    $('#search_form_input').blur(searchForm.blur).blur();
    $('#search_form').submit(searchForm.submit);
    
    $('#expand_arraw').unbind().click(function(){
      if($(this).attr('src') != '/images/expand3.png'){
        $('#search_content_hide').click();
      }
    })
    
    toggleFilterHr();
  }
  
  searchForm.init();
});

