// Use stylish select
var $useStylish = false;

// Stylish char limit
var $stylishLimit = 25;

// Search form element (id or class)
var $searchForm = '#Frm_Pesquisa';

// Save last search?
var $saveLastSearch = false;

// Correct label for fields
var $label = [];
$label['Cidade'] = 'Cidade';
$label['Zona'] = 'Zona';
$label['Region'] = 'Região';
$label['Bairro'] = 'Todos os bairros';
$label['Tipo'] = 'Tipo do Imóvel';
$label['Finalidade'] = 'Finalidade';
$label['Dormitorios'] = 'Dormitórios';
$label['Suites'] = 'Suítes';
$label['ValorMinimo'] = 'Valor Mínimo';
$label['ValorMaximo'] = 'Valor Máximo';
$label['Estado'] = 'Estado';
$label['Cliente'] = 'Campo do Cliente';

var $allText = []
$allText['Cidade'] = 'Todas';
$allText['Zona'] = 'Todas';
$allText['Region'] = 'Todas';
$allText['Bairro'] = 'Todos';
$allText['Tipo'] = 'Todos';
$allText['Finalidade'] = 'Todas';
$allText['Dormitorios'] = 'Todos';
$allText['Suites'] = 'Todas';
$allText['ValorMinimo'] = 'Indiferente';
$allText['ValorMaximo'] = 'Indiferente';
$allText['Estado'] = 'Todos';
$allText['Cliente'] = 'Todos';

// Array fields
var $arrayFields = [];
$arrayFields['Bairro'] = true;
$arrayFields['Dormitorios'] = true;
$arrayFields['Garagem'] = true;

var $searchSplit = '::=>';

function reloadSearchFields($index) {

	var $filters = '';

	$('input:checkbox, select', $searchForm).each(function() {
		$filter = $(this).attr('id');
		if(typeof($arrayFields[$filter.split('_')[0]]) != 'undefined') {
			$filter = 'search[' + $filter + '][]=';    
		} else {
			$filter = 'search[' + $filter + ']=';
		}

		if($(this).data('searchIndex') > $index) {
			$filters += $filter + 'null&';
		} else {
			$filters += $filter + encodeURIComponent($(this).val()) + '&';
		}
	});

	if($filters.length > 0 && $index < $('select', $searchForm).length) {
			
		$('select', $searchForm).attr('disabled', 'disabled');
		
		if($useStylish) {
			$('select', $searchForm).resetSS();
		}

                $('#BtoBuscaAvancada').ajaxStart(function() {
                    $(this).attr('disabled', 'disabled');
                });

                $('#BtoBuscaAvancada').ajaxStop(function() {
                    $(this).removeAttr('disabled');
                });

		$.ajax({
			url: $websiteUrl + 'search/api.php?' + $filters.substr(0, ($filters.length - 1)),
			dataType: 'json',
			success: function(data) {
			   
				for(var i in data) {

					var $obj = $('#' + i);
					var selected = $obj.val()
					
					if($obj.data('searchIndex') > $index) {    
						var content = '<option value="null">' + $label[i] + '</option>';
                                                if(i != 'Bairro' && i != 'Finalidade') {
                                                    content += '<option value="null">' + $allText[i] + '</option>';
                                                }
	
						for(var j in data[i]) {
							content += '<option value="' + j + '">' + data[i][j] +  '</option>';
						}        
						
						$obj.html(content);
					}
					/*
					if(selected == 'null') {
						$obj.children('option:first').attr('selected', 'selected');
					}
                                        */
				}           
				
				$('select', $searchForm).attr('disabled', '');
				
				if($useStylish) {
					$('select', $searchForm).resetSS();
				}                               

				$('#Bairro').multiselect({ header: false });
				$('#Bairro').multiselect('refresh');

                                if($('#Cidade option:selected').text() == 'Cidade') {
                                    $('#Bairro').multiselect('disable');
                                }
                                else {
                                    $('#Bairro').multiselect('enable');

                                    $('#ui-multiselect-Bairro-option-0').click(function() {
                                        if($(this).attr('checked') == true) {
                                            $('#Bairro').multiselect('checkAll');
                                        }
                                        else {
                                            $('#Bairro').multiselect('uncheckAll');
                                        }                                        
                                    });

                                }

			}
			
		});

	}    
}

$(function() {
	
	if($useStylish) { 
		$('select', $searchForm).sSelect({subString: $stylishLimit});
	}
	
	if($saveLastSearch) {
		
		var $searchId = $.searchCookie('searchId');

		$($searchForm).submit(function() {
			
			var $content = '';

			$('select', $searchForm).each(function() {
				var $obj = $(this);
				$content += '[' + $obj.attr('id') + ':' + $obj.val() + ']' + $obj.html() + $searchSplit;
			});
			
			$.ajax({
				url: $websiteUrl + 'search/tmp.php',
				data: 'act=2&c=' + $content + '&id=' + $searchId,
				dataType: 'json',
				async: false,
				success: function(data) {
					if(data.id != 'undefined' && data.id != '') {    
						$.searchCookie('searchId', data.id, {path: '/'});
					}  
				},
				type: 'POST'
			});
			   
		});
		
		if(typeof($searchId) == 'undefined' || $searchId == '') {
			reloadSearchFields(0);	
			return;
		}
		 
			var $fieldCount = 0;
			$.ajax({
				url: $websiteUrl + 'search/tmp.php',
				data: 'act=1&c=true&id=' + $searchId,
				async: false,
				complete: function(jqXHR, textStatus) {
					
					if(textStatus != 'success') {
						reloadSearchFields(0);
						return;
					} 
					
					data = jqXHR.responseText;

					if(data.search($searchSplit) != -1) {

						data = data.split($searchSplit);

						for(var i in data) {
							if(data[i] != '' && data[i].search(']') != -1) {
								var $data = data[i].split(']');
								var $idAndValue = $data[0].substr(1, $data[0].length).split(':');

								$('#' + $idAndValue[0]).html($data[1]).val($idAndValue[1]);
								$fieldCount++;
							}	 
						}

						if($useStylish) {
							$('select', $searchForm).resetSS();
						}
					
					}
					
				},
				type: 'POST'
			});
			
			if(($fieldCount > 0 && $fieldCount < $('select', $searchForm).length) || $fieldCount == 0) {
				reloadSearchFields(0);
				$.searchCookie('searchId', null); 	
			}
		
	} else {
		reloadSearchFields(0);  	
	}
	
});

