/**
 * @author Sergey Rogin
 * 
 * Вынес js быстрого поска, что бы был одинаковый на всех страницах
 * 
 * Suffix: 
 * без суффикса - в данный момент закомиченный селект городов + столицы, которые необходим для фильтра картинок объявлений на главной
 * _quick_search - див layer4 - форма Быстрого поиска по объявлениям
 * _m - див layer2 - форма Выбора местоположения - даже и не знаю для чего она необходима
 *
 */

//********************************************** for search **********************************************//
(function($) {

  // очищаем select
  $.fn.clearSelect = function() {
	  return this.each(function() {
		  if(this.tagName=='SELECT') {
		      this.options.length = 0;
		      $(this).attr('disabled','disabled');
		  }
	  });
  }

  // заполняем select
  $.fn.fillSelect = function(dataArray) {
	  return this.clearSelect().each(function() {
		  if(this.tagName=='SELECT') {
			  var currentSelect = this;
			  $.each(dataArray,function(index,data) {
				  var option = new Option(data.text,data.value,data.selected);
				  if($.support.cssFloat) {
					  currentSelect.add(option,null);
				  } else {
					  currentSelect.add(option);
				  }
			  });

			  //!!!!!!!!!! это неверно нужно делать только для самого селекта сити. ! РЕАЛИЗОВАТЬ
			  if (this.id === "city_quick_search") {
			    $('#'+this.id+' option[text="Москва"]').remove();
			    $('#'+this.id+' option[text="Санкт-Петербург"]').remove()
			    $('#'+this.id+' option[text="Выбрать город"]').after($('<option value="">-------</option><option value="4400">Москва</option><option value="4962">Санкт-Петербург</option><option value="">-------</option>'));
			  }

			  if (this.id === "city_m" || this.id === "city_quick_search") {
			    $('#'+this.id+' option[text="Москва"]').before($('<option>-------</option>'));
			    $('#'+this.id+' option[text="Москва"]').after($('<option>-------</option>'));

			    $('#'+this.id+' option[text="Санкт-Петербург"]').before($('<option>-------</option>'));
			    $('#'+this.id+' option[text="Санкт-Петербург"]').after($('<option>-------</option>'));
			  }
		  }
	  });
  }

})(jQuery);

$(document).ready(function() {

    //функцию вынести в отдельный js файл функций
    function returnSelValue(data) {
        for (var el in data) if (data[el].selected === 'selected') return data[el].value;
        return false;
    }

    // запрос с целью выявления наличия результатов
    function checkQuickSearch() {

    	$.ajax({
          	async:false,
          	type:'GET',
          	data:{
          	    action:'search',
          	    check:'true',
            	act_type:      $("input[name='act_type']:checked").val(),
            	bild_type:     $("input[name='bild_type']:checked").val(),
            	bild_this:     $("input[name='bild_this']:checked").val(),
            	country:       $('#country_quick_search').val(),
            	region:        $('#region_quick_search').val(),
            	city:          $('#city_quick_search').val(),
            	price_start:   $("input[name='price_start']").val(),
            	price_end:     $("input[name='price_end']").val()
          	},
          	url:'/ajax.php',
          	dataType:'json',
          	success:function(data) {
          	    status = (data[0].text != '') ? 'unchecked' : 'checked';
          	    $('#err_act_type').addClass(status);
          		if (data[0].text != '') alert(data[0].text);
       			return (data[0].text != '') ? true : false;
          	}
    	});
    	return true;
    }

    // подргрузка регионов
    function adjustRegion(country_id)
    {
        countryValue = '';

        if (country_id === undefined)
        {
            if ($('#country').val())
            {
                var countryValue = $('#country').val();
            }
            else if ($('#country_quick_search').val())
            {
                var countryValue = $('#country_quick_search').val();
            }
        }
        else
        {
            countryValue = country_id;
        }

        var tmpSelect = $('#country_quick_search');

        if(countryValue === '') {

            $('#region').attr('disabled','disabled');
            $('#region').clearSelect();
            
            $('#region_quick_search').attr('disabled','disabled');
            $('#region_quick_search').clearSelect();

        }
        else
        {
            $.getJSON (
                '/ajax.php',
                {action:'search',country:countryValue},
                function(data) {

                    region_id = returnSelValue(data);
                    $('#region').fillSelect(data).attr('disabled','');
                    $('#region_quick_search').fillSelect(data).attr('disabled','');

                    adjustCity(region_id);
                }
            );
       }
    };

    // подгрузка горадов
    function adjustCity(region_id) {
        var countryValue = $('#country').val();
        var regionValue = (region_id === false) ? $('#region').val() : region_id;
        
        $('#region_quick_search option[value=' + regionValue + ']').attr('selected', 'selected');
        $('#region option[value=' + regionValue + ']').attr('selected', 'selected');

        if (region_id === false)
        {
            $('#city').attr('disabled','');
            $('#city').append($('<option value="">Выбрать город</option><option value="">-------</option><option value="4400">Москва</option><option value="4962">Санкт-Петербург</option><option value="">-------</option>'));
        }
        else if ((countryValue != null && regionValue != null) && (countryValue.length == 0||regionValue.length == 0))
        {
            $('#city').attr('disabled','disabled');
            $('#city').clearSelect();
            
            $('#city_m').attr('disabled','disabled');
            $('#city_m').clearSelect();
            
            $('#city_quick_search').attr('disabled','disabled');
            $('#city_quick_search').clearSelect();

        } else {
            $.getJSON(
                '/ajax.php',
                {action:'search', country:countryValue, region:regionValue},
                function(data) {
                    $('#city').fillSelect(data).attr('disabled','');
                    $('#city_quick_search').fillSelect(data).attr('disabled','');
                    $('#city_m').fillSelect(data).attr('disabled','');

                    var city_id = returnSelValue(data);
                        $('#city_quick_search option[value=' + city_id + ']').attr('selected', 'selected');
                        $('#city_m option[value=' + city_id + ']').attr('selected', 'selected');
                        $('#city option[value=' + city_id + ']').attr('selected', 'selected');
                }
            );
        }
    };
    //****************************** Вешаем события *************************************/

    $('#quick_search').submit(function() {
        return (checkQuickSearch() && $(".unchecked").length != 0) ? false : true;
    });

    //вешаем обработчики на "Быстрый поиск" по объявлениям
    $('#country_quick_search').change(function() {adjustRegion($('#country_quick_search').val())});
    $('#region_quick_search').change(function() {adjustCity($('#region_quick_search').val())});

    //вешаем обработчики на "Выберите местоположение" по объявлениям
    $('#country').change(function() {adjustRegion($('#country').val())});
    $('#region').change(function() {adjustCity($('#region').val())});

    //Запуск скриптов после прогрузки страницы

    //ajax запрос на заполнение региона и города
    adjustRegion();

});