var map,infoWindows;
var pagesCluster = [];
var listPoly = new Array();
var listExtendedPoly = new Array();
var listMarker = new google.maps.MVCArray();
var returnedData;
var markerCluster;
var clusterInfoWindows;
var styles = new Array();
styles.transac = [{
  url: '/media/images/moteur_ggmaps/carre_bleu_petit.png',
  height: 20,
  width: 20,
  textColor: '#ffffff',
  textSize: 10
},
{
  url: '/media/images/moteur_ggmaps/carre_bleu.png',
  height: 25,
  width: 25,
  textColor: '#ffffff',
  textSize: 11
},
{
  url: '/media/images/moteur_ggmaps/carre_bleu_grand.png',
  height: 30,
  width: 30,
  textColor: '#ffffff',
  textSize: 12
}];
styles.neuf = [{
  url: '/media/images/moteur_ggmaps/carre_bleu_petit.png',
  height: 20,
  width: 20,
  textColor: '#074F8E',
  textSize: 10
},
{
  url: '/media/images/moteur_ggmaps/carre_bleu.png',
  height: 25,
  width: 25,
  textColor: '#074F8E',
  textSize: 11
},
{
  url: '/media/images/moteur_ggmaps/carre_bleu_grand.png',
  height: 30,
  width: 30,
  textColor: '#074F8E',
  textSize: 12
}];
function initialize(adresse,div) {
	var i = 0;
	var centre = new google.maps.Geocoder();
	var myOptions = {
	  zoom: 10,
	  maxZoom: 14,
	  scrollwheel: false,
	  streetViewControl: false,
	  mapTypeId: google.maps.MapTypeId.ROADMAP
	};
	var centreMap;
	map = new google.maps.Map(document.getElementById(div),myOptions);
	centre.geocode({
		address: adresse
		},
		function(results, status){
			centreMap = results[0].geometry.location
			map.setCenter(centreMap);
		}
	);
	markerCluster = new MarkerClusterer(map,"",{
	  minimumClusterSize: 1,
	  averageCenter: true,
	  zoomOnClick: false,
	  gridSize: 50,
	  maxZoom:14,
	  styles: styles.transac
  });
}

function infosCluster(cluster,type,lang){
  var lat,lon,content,options;
  var biens = [];
  switch(type){
    case"tr":
      var url ="/"+lang+"/ggmaps_transactions/clusterInfoWindow";
    break;
    case"lo":
      var url ="/"+lang+"/ggmaps_locations/clusterInfoWindow";
    break;
    case"ne":
      var url ="/"+lang+"/ggmaps_programmes/clusterInfoWindow";
    break;
  }
  pagesCluster = [];

  if(typeof(clusterInfoWindows) != 'undefined'){
    clusterInfoWindows.close();
  }

  for(var i = 0; i<cluster.markers_.length; i++){
    pagesCluster.push(cluster.markers_[i].title);
  }
  $.ajax({
    async: false,
    type:"POST",
    url: url,
    data:"refs=" + pagesCluster.to_json(),
    success: function(retour){
      content = retour;
    }
  });
  options = {
		position: cluster.getCenter(),
		content: content
	};
	clusterInfoWindows = new google.maps.InfoWindow(options);
	clusterInfoWindows.open(map);
}

function createPoly(infos){
	var listPoints = json2LatLng(infos.points);
	var polyPath = new google.maps.MVCArray();
	var i = 0;
	for(i; i<listPoints.length; i++) {
		polyPath.push(new google.maps.LatLng(listPoints[i][0],listPoints[i][1]));
	}
	listPoly[infos.id] = new google.maps.Polygon({
		path: polyPath,
	    strokeColor: "#706B67",
	    strokeOpacity: 0.8,
	    strokeWeight: 2,
	    fillColor: "#706B67",
	    fillOpacity: 0.35
	});
}

function createMarker(lat,lon,infos,contentInfo,style) {
	var marker;
	var options = {
		position: new google.maps.LatLng(lat,lon),
		flat: true,
		visible: false,
		title: infos
	};
	marker = new google.maps.Marker(options);
	listMarker.push(marker);
	return marker;
}

function deleteMarkers() {
	listMarker.forEach(function(marker,index) {
		marker.setMap(null);
	});
	listMarker.clear();
}

function displayPoly(listId){
	var i = 0;
	var y = 0;
	var poly;
	for(y; y<listPoly.length; y++) {
		if(listPoly[y]) {
			if(listId.length>0) {
				if(listId[0] == "all") {
					listPoly[y].setMap(map);
				}else {
					for(i; i<listId.length; i++) {
						if(listId[i]==y) {
							listPoly[y].setMap(map);
							break;
						}else {
							listPoly[y].setMap(null);
						}
					}
					i = 0;
				}
			}else {
				listPoly[y].setMap(null);
			}
		}
	}
}

function extendPoly(listId,distance){
	var newPath = new Array();
	listExtendedPoly = new Array();
	for(var y=0; y<listPoly.length; y++) {
		if(listPoly[y]) {
			if(listId.length>0) {
				for(var i=0; i<listId.length; i++) {
					if(listId[i]==y) {
						var centre = listPoly[y].getBounds().getCenter();
						var chemin = listPoly[y].getPath();
						chemin.forEach(function(element,index) {
							var angle = google.maps.geometry.spherical.computeHeading(centre,element);
							var nouvo = google.maps.geometry.spherical.computeOffset(element, distance, angle);
							newPath.push(nouvo);
						});
						listExtendedPoly[i] = new google.maps.Polygon({//listId[i]
							path: newPath
						});
						newPath = new Array();
					}
				}
			}
		}
	}
}


// Recupération et affichage des secteurs présents dans un groupe
function getSecteursGroupe(id) {
  $.ajax({
    url: "admin/get_secteurs_groupe",
    type: "POST",
    data: "idGroupe=" + id,
    success: function(retour){
      var secteur = eval ( "(" + retour + ")" );
      displayPoly(secteur);
    }
  });
}

function json2LatLng(json) {
	var listPoints = [];
	var stringPoints = json;
	var points = stringPoints.split(';');
	var point;
	for(var i = 0; i<points.length; i++){
		point = points[i].split('|');
		listPoints[i] = new Array(point[0].replace(",","."),point[1].replace(",","."));
	}
	return listPoints;
}
