var $isInitSelectionRecap = false;

$(document).ready(function() {

	if ($('#formBien').length > 0)  {

		$('#prix').blur( function() { setPriceRecap(); });
	    $('#departement').change( function() { $('#lookfor').val('2'); $('#formBien').submit(); });
	    $('#etude').change( function() { toggleLocalisationChoice(); setLocalisationRecap(); }).change(); 

		$('#btnGeolocalisation').click( function() {
			open($(this).attr('href') + '?departement=' + $('#departement').val() + '&typeTransac=' + $('#typeTransac').val(), 'geolocalisation', 'toolbar=0,location=0,height=500,width=550'); 
			return false;
		}); 

		initMultiTypes();
		initMultiCategories();
		initMultiNbpieces();
	 	initMultiSecteurs();  
	 	initMultiCommunes();
		initMultiQuartiers(); 

		$("#departement, #etude").uniform();

		setSelectionRecapInit();

	}

	if ($('#resultAnnonces').length > 0)  {
		initSort();
		initPagination();
	}

	if ($('#formFiche').length > 0)  {
		$('#btnRenseignements').click( function() {
			if ($('#innerRenseignements').is(':visible'))
				$('#innerRenseignements').slideUp();
			else
				$('#innerRenseignements').slideDown();
			return false;
		} );
		$('#btnContact').click( function() {
			submitRenseignements();
			return false;
		} );
	}

});

setSelectionRecap = function($selectMulti, $selectId, $recapId, $recapTitle) {
	var $select = $('#' + $selectId);
	var $recap = $('#' + $recapId);	
	var $html = '';
	
	if ($selectMulti) {
		$select.parent().find(".ui-multiselect-checkboxes input:checked").each( function() {
			$html += '<li>' + $(this).attr('title') + '</li>';		
		});
	} else if ($select.val() != '') {
			$html = '<li>' + $('#' + $selectId + ' option:selected').text() + '</li>';				
	}
	if ($html != '') $html = '<h5>' + $recapTitle + '</h5>' + '<ul>' + $html + '</ul>';
	$recap.html($html);
	$recap.toggle($recap.html() != '');

	$('#recapSelection').toggle($('#recapSelection').find('ul').length > 0);
	if ($isInitSelectionRecap) $('#resultAnnonces').html('');
}

setSelectionRecapInit = function() {
	setTypeRecap();
	setPriceRecap();
	setType2Recap();
	setNbpieceRecap();
	setDepartementRecap();
	setLocalisationRecap();
	setSecteurRecap();
	setCommuneRecap();
	setQuartierRecap();

	$('#recapSelection').toggle($('#recapSelection').find('ul').length > 0);
	$isInitSelectionRecap = true;
}

initMultiTypes = function() {
    $('#type').multiSelect({   
                checkAllText: 'Tout cocher',
				unCheckAllText: 'Tout décocher',
                noneSelectedText: 'Tous types de biens',
                selectedText: '# sélectionnés sur #',
				onCheck: setTypeRecap,
				onCheckAll: setTypeRecap,
				onUncheckAll: setTypeRecap
	});
}

initMultiCategories = function() {
    $('#type2').multiSelect({   
                checkAllText: 'Tout cocher',
				unCheckAllText: 'Tout décocher',
                noneSelectedText: 'Toutes catégories de biens',
                selectedText: '# sélectionnées sur #',
				onCheck: setType2Recap,
				onCheckAll: setType2Recap,
				onUncheckAll: setType2Recap
    });
}

initMultiNbpieces = function() {
    $('#nbpiece').multiSelect({   
		        checkAllText: 'Tout cocher',
				unCheckAllText: 'Tout décocher',
		        noneSelectedText: 'Indifférent',
		        selectedText: '# sélectionnés sur #',
				onCheck: setNbpieceRecap,
				onCheckAll: setNbpieceRecap,
				onUncheckAll: setNbpieceRecap
    });
}

initMultiSecteurs = function() {
	$('#secteur').multiSelect({   
                    checkAllText: 'Tout cocher',
					unCheckAllText: 'Tout décocher',
                    noneSelectedText: 'Tous les secteurs',
                    selectedText: '# sélectionnés sur #',
					onCheck: function() { setSecteurRecap(); toggleSecteurChoice(); },
					onCheckAll: function() { setSecteurRecap(); toggleSecteurChoice(); },
					onUncheckAll: function() { setSecteurRecap(); toggleSecteurChoice(); }
    });
}

initMultiCommunes = function() {
	$('#commune').multiSelect({   
                    checkAllText: 'Tout cocher',
					unCheckAllText: 'Tout décocher',
                    noneSelectedText: 'Toutes les communes',
                    selectedText: '# sélectionnées sur #',
					onCheck: setCommuneRecap,
					onCheckAll: setCommuneRecap,
					onUncheckAll: setCommuneRecap
    });
}

initMultiQuartiers = function() {
	$('#quartier').multiSelect({   
                    checkAllText: 'Tout cocher',
					unCheckAllText: 'Tout décocher',
                    noneSelectedText: 'Tous les quartiers',
                    selectedText: '# sélectionnés sur #',
					onCheck: setQuartierRecap,
					onCheckAll: setQuartierRecap,
					onUncheckAll: setQuartierRecap
    })
}

toggleLocalisationChoice = function () {
	if ($('#etude').val() != '') { 
        $('#pSecteur, #pCommune, #pQuartier').hide();
	} else { 
        $('#pSecteur, #pCommune').show();
		toggleSecteurChoice();
	}
}

setLocalisationRecap = function () {
	setSelectionRecap(false, 'etude', 'recapEtude', 'Etude');
	if ($('#etude').val() != '') {
		$('#recapSecteur, #recapCommune, #recapQuartier').hide();
	} else {
		setSecteurRecap();
		setCommuneRecap();
		setQuartierRecap();
	}
	if ($isInitSelectionRecap) $('#resultAnnonces').html('');
}

setTypeRecap = function() {
	setSelectionRecap(true, 'type', 'recapType', 'Type de biens');
}

setType2Recap = function() {
	setSelectionRecap(true, 'type2', 'recapType2', 'Catégorie de bien');
}

setNbpieceRecap = function() {
	setSelectionRecap(true, 'nbpiece', 'recapNbpiece', 'Nombre de pièce(s)');
}

setDepartementRecap = function() {
	var $html = '';
	if (($('#isDep').val() == '') && ($('#departement').val() != '')) {
		$html = '<h5>Département</h5>' + '<ul><li>' + $('#departement option:selected').text() + '</li></ul>';
	}
	$('#recapDepartement').html($html);
	$('#recapDepartement').toggle($('#recapDepartement').html() != '');
	if ($isInitSelectionRecap) $('#resultAnnonces').html('');
}

setSecteurRecap = function() {
	setSelectionRecap(true, 'secteur', 'recapSecteur', 'Secteur');
}

toggleSecteurChoice = function() {
	var $vals = '', $found = false;
	if ($('#secteur').parent().find(".ui-multiselect-checkboxes input").length > 0)
		$vals = $('#secteur').parent().find(".ui-multiselect-checkboxes input:checked");
	else if ($('#secteur').find("option:selected").length > 0)
		$vals = $('#secteur').find("option:selected");
	
	if ($vals != '') {
		$vals.each( function() {
			if (($(this).val() == '6') || ($(this).val() == '186')) $found = true;
		});
	}
	$('#pQuartier').toggle($found);
}

setCommuneRecap = function() {
	setSelectionRecap(true, 'commune', 'recapCommune', 'Commune');
}

setQuartierRecap = function() {
	setSelectionRecap(true, 'quartier', 'recapQuartier', 'Quartier');
}

setPriceRecap = function() {
	var $html = '';
	$price = $('#prix').val().replace(' ', '').replace(',', '.');
	if ((!isNaN($price)) && ($price != '')) {
		$price1 = ($price * 0.8);
		$price2 = ($price * 1.22);
		$html = '<h5>' + (($('#typeTransac').val() == '2') ? 'Loyer' : 'Prix') + '</h5>' + '<ul><li>de ' + number_format($price1, 0, '', ' ') + ' € à ' + number_format($price2, 0, '', ' ') + ' €</li></ul>';
	} else {
		$('#prix').val('');
	}
	$('#recapPrix').html($html);
	$('#recapPrix').toggle($('#recapPrix').html() != '');
	$('#recapSelection').toggle($('#recapSelection').find('ul').length > 0);
	if ($isInitSelectionRecap) $('#resultAnnonces').html('');
}

initSort = function() {
	$("#sort").uniform().change( function() {
		searchAnnonce( { lookfor: 5, sort: $(this).val() } );	
	});
	$('#sort_up, #sort_down').click( function() {
		if ($(this).attr('class').indexOf('sort-current') == -1)
			searchAnnonce( { lookfor: 5, sort: $(this).attr('rel') } );	
		return false;
	});
}

initPagination = function() {
	$('a.PageSuivante, a.PagePrecedente').click( function() { 
		searchAnnonce( { lookfor: 3, current: $(this).attr('rel') } );
		return false; 
	});
}

searchAnnonce = function(args) {

	$('#resultAnnonces').html('<img src="/global/images/ajax-loader.gif" alt="Chargement en cours .." />');

	var request = { 
        callMode: 'xhr',
		sessionId: $session_id,
		baseLink: window.location.pathname
    };

 	if (args.lookfor != undefined) request.lookfor = args.lookfor; else request.lookfor = '1'; 
	if (args.current != undefined) request.current = args.current;
	if (args.sort != undefined) request.sort = args.sort;
	if (args.modeVente != undefined) request.typeTransac = ((args.modeVente) ? '1' : '2');
	if (args.departement != undefined) request.departement = args.departement;
	if (args.secteur != undefined) request.secteur = args.secteur;
	if (args.commune != undefined) request.commune = args.commune;
	if (args.quartier != undefined) request.quartier = args.quartier;

    $.post('/global/includes/bien/xhr.php',
        request,                   
        function(data) {
            $('#resultAnnonces').html(data);
			document.location = '#resultAnnonces';
			initSort();
			initPagination();
        }
    );
}

setGeoloc = function (args) {

	var $departement = ((args.departement != undefined) ? args.departement : '');
	var $secteur = ((args.secteur != undefined) ? args.secteur : '');
	var $quartier = ((args.quartier != undefined) ? args.quartier : '');
	var $typeTransac = ((args.typeTransac != undefined) ? args.typeTransac : '1');
	
	if ((($departement != '') && ($departement != $('#departement').val())) || ($typeTransac != $('#typeTransac').val())) {

		$('#departement').val($departement);	
		$('#secteur_geoloc').val($secteur);
		$('#quartier_geoloc').val($quartier);
		$('#typeTransac').val($typeTransac);
		$('#lookfor').val('2');
		$('#formBien').submit();

	} else {

		if (($secteur == '186') && ($quartier != '')) {
			var $soussecteur = $('#soussecteur_' + $quartier).val()
			$quartier = new Array();
			$('#quartier').parent().find('.ui-multiselect-checkboxes li').each( function() {
				if ($(this).attr('class') == 'ui-multiselect-optgroup-label') {
					$current = ($(this).find('a').html() == $soussecteur);
				} else if ($current) {
					$quartier.push($(this).find('input').val());
				}
			});	
		}

		reinitMulti('secteur', $secteur, 'Tous les secteurs', '# sélectionnés sur #');
		reinitMulti('commune', '', 'Toutes les communes', '# sélectionnées sur #');
		reinitMulti('quartier', $quartier, 'Tous les quartiers', '# sélectionnés sur #');

		$('#etude').val('').change();

	}
}

reinitMulti = function ($selectId, $selectVals, $noneSelectedText, $selectedText) {
	var $select = $('#' + $selectId);
	var $numChecked = 0, $value = '';
	var $inputs = $select.parent().find(".ui-multiselect-checkboxes input");

	$inputs.each( function() {
		if (in_array($(this).val(), $selectVals, false)) {
			$(this).attr('checked', 'checked');
			$numChecked ++;
		} else {
			$(this).attr('checked', '');
		} 
	});

	if ($numChecked > 0)
		$value = $selectedText.replace('#', $numChecked).replace('#', $inputs.length)
	else
		$value = $noneSelectedText;
	$select.find('input').val($value);
}

submitRenseignements = function(args) {

	$('#btnContact').attr('disabled', 'disabled');

	var request = { 
        callMode: 'xhr',
		sessionId: $session_id,
		renseignements: $('#renseignements').val(),
		fiche: $('#fiche').val(),
		ref: $('#ref').val(),
		etude: $('#etude').val(),
		service_email: $('#service_email').val(),
		nom: $('#nom').val(),
		prenom: $('#prenom').val(),
		email: $('#email').val(),
		tel: $('#tel').val(),
		objet: $('#objet').val(),
		captcha: $('#captcha').val()
    };

    $.post('/global/includes/bien/renseignements.php',
        request,                   
        function(data) {
			var response = $.evalJSON(data);
			if (!response.valid) {
            	$('#msgRenseignements').html('<p class="msgError">' + response.message + '</p>');
				$('#btnContact').attr('disabled', '');
			} else {
				$('#msgRenseignements').html('<p class="msgSuccess">' + response.message + '</p>');
				$('#formContact').html('');
			}
        }
    );
}

initGMap = function(address, zoom) {
	
	(new google.maps.Geocoder()).geocode(
		{ address: address},
		function(results, status) {
			if (status == google.maps.GeocoderStatus.OK) {
				$.each(results, function() {
					var options = {
						zoom: zoom,
						center: this.geometry.location,
				      	mapTypeId: google.maps.MapTypeId.ROADMAP
					}
    				var map = new google.maps.Map(document.getElementById("gmap"), options);
					var marker = new google.maps.Marker({
				        position: this.geometry.location, 
				        map: map,
				        title: address
				    });   
				});
			}
		}
	);

}
