var listeBiens = new Array();
var displayedBiens = new Array();
var markersBiens = new Array();
var infoWindowsBien = new Array();

function getCriteres(idForm) {
	var i,y,flag;
	var champs =$(idForm + " :input");
	var criteres = new Array();
	for(i = 0; i<champs.length; i++) {
		if(champs[i].type == "checkbox" && champs[i].checked == true) {
			flag = false;
			for(y = 0; y < criteres.length; y++) {
				if(criteres[y].in_array(champs[i].name)) {
					criteres[y][1].push(champs[i].value);
					flag = true;
				}
			}
			if(!flag) {
				criteres.push(new Array(champs[i].name,new Array(champs[i].value)));
			}
		}else if(champs[i].type == "radio" && champs[i].checked == true) {
				criteres.push(new Array(champs[i].name,champs[i].value));
    }else if(champs[i].type != "checkbox" && champs[i].type != "radio") {
			criteres.push(new Array(champs[i].name,champs[i].value));
		}
	}
	return criteres;
}

function search(idForm,divResult,type,lang){
  switch(lang.valueOf()){
    case"fr":
      var loader = "<br style=\"clear:both\" /><div style=\"width: 400px; margin: 50px auto; color:#37597E; text-align:center \"><img src=\"/media/images/load.gif\" /><br />Recherche des annonces en cours</div>";
	  break;
	  case"en":
      var loader = "<br style=\"clear:both\" /><div style=\"width: 400px; margin: 50px auto; color:#37597E; text-align:center \"><img src=\"/media/images/load.gif\" /><br />Updating</div>";
	  break;
	}
  $(divResult).html(loader);
  var criteres = getCriteres(idForm);

	switch(type) {
		case"transac":
			var url = "/"+lang+"/ggmaps_transactions/listeTransaction/true";
		break;
		case"loc":
			var url = "/"+lang+"/ggmaps_locations/listeLocation/true";
		break;
		case"neuf":
			var url = "/"+lang+"/ggmaps_programmes/listeNeuf/" + criteres[0][1] + "/true";
		break;
	}
	$.ajax({
		type: "POST",
		url: url,
		data: "criteres=" + criteres.to_json(),
		success: function(retour){
			$(divResult).html(retour);
		}
	});
}

function initBiensMulti(lang,typeBien,typeSearch,flagTypeCat,callback) {
  if(typeof(clusterInfoWindows) != 'undefined'){
    clusterInfoWindows.close();
  }
  $("#loading").fadeIn("fast");
  switch(typeSearch) {
		case"transac":
		case"ref_tr":
			var url = "/"+lang+"/ggmaps_transactions/listeTransactionMap";
		break;
		case"loc":
		case"ref_lo":
			var url = "/"+lang+"/ggmaps_locations/listeLocationMap";
		break;
	}

  markersBiens = [];
	$.ajax({
		type: "POST",
		url: url,
		data: "criteres=" + typeBien.to_json() + "&flagTypeCat=" + flagTypeCat,
		success: function(retour){
			deleteMarkers();
			retour = eval ( '(' + retour + ')' );
			listeBiens = new Array();
			for(var i=0; i<retour.length; i++) {
				if(retour[i].lat != null && retour[i].lon != null) {
					var bien = new Array();
					bien.code_societe = retour[i].code_societe;
					bien.code_site = retour[i].code_site;
					bien.no_asp = retour[i].no_asp;
					bien.ref = retour[i].no_mandat;
					bien.type = retour[i].type_offre;
					bien.lat = retour[i].lat;
					bien.lon = retour[i].lon;
					if(typeSearch == "transac" || typeSearch == "ref_tr") {
						bien.prix = retour[i].prix_vente;
					}else if(typeSearch == "loc" || typeSearch == "ref_lo") {
						bien.prix = retour[i].loyer_cc;
					}
					bien.nbPieces = retour[i].nb_pieces;
					var markBien = createMarker(bien.lat,bien.lon,bien.code_societe+"-"+bien.code_site+"-"+bien.no_asp);

					markersBiens.push(markBien);
					listeBiens.push(bien);
				}
			}
			displayBiens(typeSearch,lang);
			if(typeof(callback) != 'undefined'){
	        callback();
	      }
		}
	});
}

function displayBiens(typeSearch,lang) {
  if(typeof(clusterInfoWindows) != 'undefined'){
    clusterInfoWindows.close();
  }
	switch(typeSearch) {
		case"transac":
			var crit = getCriteres("#form_tr");
		break;
		case"loc":
			var crit = getCriteres("#form_lo");
		break;
		case"ref_tr":
		case"ref_lo":
		  var crit = getCriteres("#form_ref");
		break;
	}
	var criteres = new Array();

	var i=0;
	var y=0;
	var l=0;
	var k,j,flag,flagGlobal,mapBien;

	displayedBiens = [];

	for(i; i<crit.length; i++) {
		criteres[crit[i][0]] = crit[i][1]
	}

	for(y; y<listeBiens.length; y++) {
		flag = new Array();
		// verif du type de bien
		if(criteres.type_bien != null && criteres.type_bien.length > 0) {
		console.log(listeBiens[y].type);
			if((listeBiens[y].type == 4 || listeBiens[y].type == 5 || listeBiens[y].type == 6) && criteres.type_bien.in_array(6)) {
				flag.type_bien = true;
				console.log('yes');
			}else if(criteres.type_bien.in_array(listeBiens[y].type)) {
				flag.type_bien = true;
				console.log('2222222');
			}else {
				flag.type_bien = false;
				console.log('no');
			}
		}else {
			flag.type_bien = true;
		}

		// verif du budget minimum
		if(criteres.budget_min != null && criteres.budget_min != "") {
			if(parseFloat(listeBiens[y].prix) >= parseFloat(criteres.budget_min)) {
				flag.budget_min = true;
			}else {
				flag.budget_min = false;
			}
		}else {
			flag.budget_min = true;
		}

		// verif du budget maximum
		if(criteres.budget_max != null && criteres.budget_max != "") {
			if(parseFloat(listeBiens[y].prix) <= parseFloat(criteres.budget_max)) {
				flag.budget_max = true;

			}else {
				flag.budget_max = false;
			}
		}else {
			flag.budget_max = true;
		}

		// verif du nombre de pieces
		if(listeBiens[y].type != 3 && criteres.nbre_pieces != null && criteres.nbre_pieces != "") {
	  		if(criteres.nbre_pieces != null && criteres.nbre_pieces != "") {
		     	if(!criteres.nbre_pieces.in_array(5) && criteres.nbre_pieces.in_array(listeBiens[y].nbPieces)) {
		    		flag.pieces = true;
		    	}else if(criteres.nbre_pieces.in_array(5) && (criteres.nbre_pieces.in_array(listeBiens[y].nbPieces) || listeBiens[y].nbPieces >= 5)){
		    		flag.pieces = true;
		        }else{
		    		flag.pieces = false;
		    	}
	    	}else {
	    		flag.pieces = true;
	    	}
	    }else{
	    	flag.pieces = true;
	    }

	// on place les biens a afficher dans le tableau des affichages

    flagGlobal = true;
		for(j in flag){
			if(!flag[j]){
				flagGlobal = false;
			}
		}

		mapBien = markersBiens[y].getMap();

		if(mapBien == null && flagGlobal) {
			markersBiens[y].setMap(map);
		}else if(mapBien != null && !flagGlobal) {
			markersBiens[y].setMap(null);
		}

		if(markersBiens[y].getMap() != null) {
			//map.initZoom(markersBiens[listeBiens[y].no_asp]);
      displayedBiens.push(markersBiens[y]);
		}
  }
  markerCluster.clearMarkers();
  markerCluster.setStyles(styles.transac);
  markerCluster.addMarkers(displayedBiens);
  google.maps.event.clearListeners(markerCluster,'clusterclick');
  if(typeSearch == "transac" || typeSearch == "ref_tr"){
    google.maps.event.addDomListener(markerCluster,'clusterclick',function(e){
      infosCluster(e,"tr",lang);
    });
  } else if(typeSearch == "loc" || typeSearch == "ref_lo") {
    google.maps.event.addDomListener(markerCluster,'clusterclick',function(e){
      infosCluster(e,"lo",lang);
    });
  }
  $("#loading").fadeOut("fast");

}

function positionneMap(typeInfo,value){
  var maxZoom = 12;
  switch(typeInfo){
    // Centrage de la map sur la ville choisie dans le menu déroulant des villes
    case"ville":
    $.ajax({
		  type: "POST",
		  async: false,
		  url: "/fr/ggmaps_transactions/getLatLngVille",
		  data: "centre=" + value,
		  success: function(retour){
		    retour = eval( '(' + retour + ')');
		    map.panTo(new google.maps.LatLng(retour.LAT,retour.LON));
        map.setZoom(maxZoom);
      }
    });
    break;
    // Centrage de la map pour que tous les biens affichés soient visibles sur la map
    case"secteur":

      if(displayedBiens.length>0){
      var latMax = 0;
      var latMin = 0;
      var lngMax = 0;
      var lngMin = 0;
      for (var i = 0; i < displayedBiens.length; i++){
	  if(i == 0){
	      latMax = displayedBiens[i].position.lat();
	      latMin = displayedBiens[i].position.lat();
	      lngMax = displayedBiens[i].position.lng();
	      lngMin = displayedBiens[i].position.lng();
	          } else{
	            if(latMax < displayedBiens[i].position.lat()){
	              latMax = displayedBiens[i].position.lat();
	            }
	            if(latMin > displayedBiens[i].position.lat()){
	              latMin = displayedBiens[i].position.lat();
	            }
	            if(lngMax < displayedBiens[i].position.lng()){
	              lngMax = displayedBiens[i].position.lng();
	            }
	            if(lngMin > displayedBiens[i].position.lng()){
	              lngMin = displayedBiens[i].position.lng();
	            }
	          }
	      }
      var sw = new google.maps.LatLng(latMin,lngMin);
      var ne = new google.maps.LatLng(latMax,lngMax);
      var bounds = new google.maps.LatLngBounds(sw,ne);
      map.fitBounds(bounds);
	  markerCluster.repaint();
      }
    break;
  }
}
