/**
 * The MarkerClusterer object.
 * @type {MarkerCluster}
 */
var mc = null;

/**
 * The Map object.
 * @type {google.maps.Map}
 */
var map = null;
var critsearch = '';
var optionsmap;
var map_2 = null;

/**
 * The MarkerManager object.
 * @type {MarkerManager}
 */
var mgr = null;
var interets = '';
var interets_2 = '';
/**
 * Marker Clusterer display/hide flag.
 * @type {boolean}
 */
var showMarketClusterer = false;
var infowindow = new google.maps.InfoWindow();
var contain_info = '';
/**
 * Toggles Marker Clusterer visibility.
 */
function toggleMarkerClusterer() {
  showMarketClusterer = !showMarketClusterer;
  if (showMarketClusterer || search) {
		// alert('here');
    if (mc && !search) {
			alert('first');
      mc.addMarkers(markers.locations);
      // mc = new MarkerClusterer(map, markers.locations, {maxZoom: 19});
    } else { // ICI
			// var iconMarker = new google.maps.MarkerImage(url_site+'template/img/pins.gif');			
      mc = new MarkerClusterer(map, markers.locations, {maxZoom: 19});
    }
  } else {		
		mc.clearMarkers();
		mc = new MarkerClusterer(map, markers.locations, {maxZoom: 19}); 
  }
}


/**
 * Initializes the map and listeners.
 */
function initialize() {
	var valZoom = (map != null) ? map.getZoom() : 9;
	optionsmap = {
		center: new google.maps.LatLng(c_lat, c_lng),
		zoom: valZoom,
	  // disableDefaultUI: true,
	  mapTypeControl: true,
	  streetViewControl: false,
	  zoomControl: true,
		maxZoom: 20,
		minZoom: 8	
	};
	
	map = new google.maps.Map(document.getElementById('default_map'),optionsmap);
	
	// if(home)
		// map.mapTypeId =  google.maps.MapTypeId.HYBRID;
	// else	
		map.mapTypeId =  google.maps.MapTypeId.ROADMAP;
	
  // google.maps.event.addDomListener(document.getElementById('mc-cb'),
      // 'click', toggleMarkerClusterer);

  // Prepares the marker object, creating a google.maps.Marker object for each
  // location, place and country
	traiteMarkers();
}

function initialize_search() {

	var valZoom = (map != null) ? map.getZoom() : 9;
	optionsmap = {
	  mapTypeControl: true,
	  streetViewControl: false,
	  zoomControl: true,
		maxZoom: 15,
		minZoom: 9		
	};
	
	map = new google.maps.Map(document.getElementById('default_map'),optionsmap);
	map.mapTypeId =  google.maps.MapTypeId.ROADMAP;
	if(markers){
		var bounds = new google.maps.LatLngBounds();
    for (var level in markers) {					
      for (var i = 0; i < markers[level].length; i++) {			
        var details = markers[level][i];				
        markers[level][i] = new google.maps.Marker({
          title: 'Cliquez pour visualiser les annonces',
          id_: details.id_,
          position: new google.maps.LatLng(details.location[0], details.location[1]),
          clickable: true,
          draggable: false,
          flat: true
        });
				bounds.extend(new google.maps.LatLng(details.location[0], details.location[1]));
      }
    }
		map.fitBounds(bounds);
	}
	if(markers){
		if(markers.locations.length < 2)	
			setTimeout('centerMyMap()',300);
	}

	toggleMarkerClusterer();
}

function centerMyMap(){
	map.setZoom(12);
}

function traiteMarkers(){
  if (markers) {	
    for (var level in markers) {					
      for (var i = 0; i < markers[level].length; i++) {			
        var details = markers[level][i];				
        markers[level][i] = new google.maps.Marker({
          title: 'Cliquer pour visualiser les annonces',
          id_: details.id_,
          position: new google.maps.LatLng(details.location[0], details.location[1]),
          clickable: true,
          draggable: false,
          flat: true
        });
      }
    }
		toggleMarkerClusterer();
  }
}
if(search){	
	google.maps.event.addDomListener(window, 'load', initialize_search);
}
else if(home)
	google.maps.event.addDomListener(window, 'load', initialize);
else if(annonce){	
	var all_interets = [];
	var options = {
		center: new google.maps.LatLng(centre[0],centre[1]),
		zoom: 12,
	  // disableDefaultUI: true,
	  overviewMapControl: true,
	  scrollwheel: false,
	  mapTypeControl: false,
	  streetViewControl: false,
	  zoomControl: true,
		mapTypeId: google.maps.MapTypeId.ROADMAP
	};
		
	map = new google.maps.Map(document.getElementById('bigmap'),options);
	map_2 = new google.maps.Map(document.getElementById('default_map'),options);
	
	var iconCentre = new google.maps.MarkerImage(url_site+'template/img/pictos/centre.png',
		/* dimensions de l'image */
		new google.maps.Size(32,32),
		/* Origine de l'image 0,0. */
		new google.maps.Point(0,0),
		/* l'ancre (point d'accrochage sur la map) du picto
		(varie en fonction de ces dimensions) */
		new google.maps.Point(16,32)
	);
	
	var markerCentre_1 = new google.maps.Marker({
		position: new google.maps.LatLng(centre[0],centre[1]),
		title: 'Le quartier ou la zone oł se situe l\'annonce',
		draggable: false,
		clickable: true,
		flat: true,
		icon: iconCentre,
		map: map
	});
	
	var markerCentre_2 = new google.maps.Marker({
		position: new google.maps.LatLng(centre[0],centre[1]),
		title: 'Le quartier ou la zone oł se situe l\'annonce',
		draggable: false,
		clickable: true,
		flat: true,
		icon: iconCentre,
		map: map_2
	});
	
	function get_bounds(){
		removeMarkers('all');
		var bounds = map.getBounds();
		var South_Lat = bounds.getSouthWest().lat();
		var South_Lng = bounds.getSouthWest().lng();
		var North_Lat = bounds.getNorthEast().lat();
		var North_Lng = bounds.getNorthEast().lng();
		callAjax(South_Lat,South_Lng,North_Lat,North_Lng);
	}
		
	function get_bounds_2(){
		removeMarkers('all');
		var bounds = map_2.getBounds();
		var South_Lat = bounds.getSouthWest().lat();
		var South_Lng = bounds.getSouthWest().lng();
		var North_Lat = bounds.getNorthEast().lat();
		var North_Lng = bounds.getNorthEast().lng();
		callAjax_2(South_Lat,South_Lng,North_Lat,North_Lng);
	}
		
	// google.maps.event.addDomListener(map, 'zoom_changed', get_bounds);
	// google.maps.event.addDomListener(map_2, 'zoom_changed', get_bounds_2);
  /* Partons du principe que nous utilisons la librairie javascript JQuery */
  function callAjax(slt,slg,nlt,nlg){
   var sendAjax = $.ajax({
    type: "POST",
    url: url_site+'ajax/retrieveInterets.php',
    data: 'SO_Lt='+slt+'&SO_lg='+slg+'&NE_lt='+nlt+'&NE_lg='+nlg,
    success: handleResponse
   });
	 
		function handleResponse(){
			interets = eval(sendAjax.responseText);
		  if (interets) {	
		    for (var level in interets){	
		      for (var i = 0; i < interets[level].length; i++) {					
		        var details = interets[level][i];				
						
						var iconInteret = new google.maps.MarkerImage(url_site+'template/img/pictos/icons/'+details.categorie+'.png',
						  /* dimensions de l'image */
						  new google.maps.Size(32,37),
						  /* Origine de l'image 0,0. */
						  new google.maps.Point(0,0),
						  /* l'ancre (point d'accrochage sur la map) du picto
						  (varie en fonction de ces dimensions) */
						  new google.maps.Point(16,37)
						);
						
						var on_map = (details.categorie == 'boulangerie') ? map : null;
		        interets[level][i] = new google.maps.Marker({
		          title: details.title,
		          position: new google.maps.LatLng(
		              details.location[0], details.location[1]),
		          draggable: false,
		          clickable: true,
		          flat: true,
							icon: iconInteret,
							categorie: details.categorie,
							map: on_map
		        });
		      }
		    }
		  }
		}
	}
  function callAjax_2(slt,slg,nlt,nlg){
   var sendAjax = $.ajax({
    type: "POST",
    url: url_site+'ajax/retrieveInterets.php',
    data: 'SO_Lt='+slt+'&SO_lg='+slg+'&NE_lt='+nlt+'&NE_lg='+nlg,
    success: handleResponse
   });
	 
		function handleResponse(){
			interets_2 = eval(sendAjax.responseText);
		  if (interets_2) {	
		    for (var level in interets_2){	
		      for (var i = 0; i < interets_2[level].length; i++) {					
		        var details = interets_2[level][i];				
						
						var iconInteret = new google.maps.MarkerImage(url_site+'template/img/pictos/icons/'+details.categorie+'.png',
						  /* dimensions de l'image */
						  new google.maps.Size(32,37),
						  /* Origine de l'image 0,0. */
						  new google.maps.Point(0,0),
						  /* l'ancre (point d'accrochage sur la map) du picto
						  (varie en fonction de ces dimensions) */
						  new google.maps.Point(16,37)
						);
						
						var on_map_2 = (details.categorie == 'boulangerie') ? map_2 : null;
		        interets_2[level][i] = new google.maps.Marker({
		          title: details.title,
		          position: new google.maps.LatLng(
		              details.location[0], details.location[1]),
		          draggable: false,
		          clickable: true,
		          flat: true,
							icon: iconInteret,
							categorie: details.categorie,
							map : on_map_2
		        });
		      }
		    }
		  }
		}
	}
	setTimeout('get_bounds()',2000);
	setTimeout('get_bounds_2()',2000);
}

function removeMarkers(type){
	for (var level in interets){	
		for (var i = 0; i < interets[level].length; i++) {					
			var details = interets[level][i];				
			if(details.categorie == type || type == 'all')
				interets[level][i].setMap(null);
		}
	}
	for (var level in interets_2){	
		for (var i = 0; i < interets_2[level].length; i++) {					
			var details = interets_2[level][i];				
			if(details.categorie == type || type == 'all')
				interets_2[level][i].setMap(null);
		}
	}
}

function replaceMarkers(type){
	for (var level in interets){	
		for (var i = 0; i < interets[level].length; i++) {					
			var details = interets[level][i];				
			if(details.categorie == type)
				interets[level][i].setMap(map);
		}
	}
	for (var level in interets_2){	
		for (var i = 0; i < interets_2[level].length; i++) {					
			var details = interets_2[level][i];				
			if(details.categorie == type)
				interets_2[level][i].setMap(map_2);
		}
	}
}








