var map;
var geocoder;
var center = new GLatLng(48.60908786918211, -65.972900390625);
var geoXml; 
var toggleState = 0;
var inizoom=8;
var sentiersarray=new Array();
var defautMap=null;

    function loadMap() {
      if (GBrowserIsCompatible()) {
        geocoder = new GClientGeocoder();
        map = new GMap2(document.getElementById('map'));
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
		map.enableScrollWheelZoom(); 
        map.setCenter(center, inizoom);
		map.setMapType(G_HYBRID_MAP);
		if (defautMap) loadMyKml(defautMap);
      }
    }

   function searchLocations() {
     var address = document.getElementById('addressInput').value;
     geocoder.getLatLng(address, function(latlng) {
       if (!latlng) {
         alert(address + ' not found');
       } else {
         searchLocationsNear(latlng);
       }
     });
   }

   function searchLocationsNear(center) {
     var radius = document.getElementById('radiusSelect').value;
     var searchUrl = 'phpsqlsearch_genxml.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius;
     GDownloadUrl(searchUrl, function(data) {
       var xml = GXml.parse(data);
       var markers = xml.documentElement.getElementsByTagName('marker');
       map.clearOverlays();

       var sidebar = document.getElementById('sidebar');
       sidebar.innerHTML = '';
       if (markers.length == 0) {
         sidebar.innerHTML = 'Aucun résultat.';
         map.setCenter(center, inizoom);
         return;
       }

       var bounds = new GLatLngBounds();
       for (var i = 0; i < markers.length; i++) {
         var name = markers[i].getAttribute('name');
         var address = markers[i].getAttribute('address');
         var distance = parseFloat(markers[i].getAttribute('distance'));
         var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
                                 parseFloat(markers[i].getAttribute('lng')));
         
         var marker = createMarker(point, name, address);
         map.addOverlay(marker);
         var sidebarEntry = createSidebarEntry(marker, name, address, distance);
         sidebar.appendChild(sidebarEntry);
         bounds.extend(point);
       }
       map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
     });
   }
   function searchLocationSentier(myNum) {
   	var numeroSentier=myNum;
	var numeroCat=document.getElementById("markerCat").value;
     var searchUrl = 'carte/xmlPoint.php?sentier=' + numeroSentier+'&cat='+ numeroCat;
     GDownloadUrl(searchUrl, function(data) {
       var xml = GXml.parse(data);
       var markers = xml.documentElement.getElementsByTagName('marker');
       var sidebar = document.getElementById('sidebar');
       sidebar.innerHTML = '';
       if (markers.length == 0) {
         sidebar.innerHTML = 'Aucun résultat';
         return;
       }

       var bounds = new GLatLngBounds();
       for (var i = 0; i < markers.length; i++) {
         var name = markers[i].getAttribute('name');
         var address = markers[i].getAttribute('address');
		 var idMarker = markers[i].getAttribute('numero');
         
         var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
                                 parseFloat(markers[i].getAttribute('lng')));
         
         var marker = createMarker(point, name, address,idMarker);
         map.addOverlay(marker);
		 var tmpName=name;
		 if (idMarker>0) tmpName=name +" (+)";
         var sidebarEntry = createSidebarEntry(marker, tmpName, address);
         sidebar.appendChild(sidebarEntry);
         bounds.extend(point);
       }
     });
   }
    function createMarker(point, name, address, idMarker) {
      var marker = new GMarker(point);
      var html = '<b>' + name + '</b> <br/>' + address;
      GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml(html);
      });
		if (idMarker>0){
		  GEvent.addListener(marker, 'click', function() {
          var maxContentDiv = document.createElement('div');
          maxContentDiv.innerHTML = 'Chargement...'
          marker.openInfoWindowHtml(html,
            {maxContent: maxContentDiv, 
             maxTitle: name});

          var iw = map.getInfoWindow();
          GEvent.addListener(iw, "maximizeclick", function() {
            GDownloadUrl("carte/description.php?numero="+idMarker, function(data) {
              maxContentDiv.innerHTML = data;
            });
          });
        });
		}
      return marker;
    }
function createMarkerSentier(point, name, para, idMarker) {
        var monicon = new GIcon(G_DEFAULT_ICON);
        monicon.image = "images/Upload/icons/sentier.png";

	  markerOptions = { icon:monicon };
      var marker = new GMarker(point,markerOptions);
      var html = '<b>' + name + '</b><br/><br/><strong>Catégorie : </strong>'+para['groupe']+'<br/><strong>Longueur : </strong>'+para['Longueur']+'<br/><strong>Difficulté : </strong>'+para['niveau']+'<br/><strong>Type : </strong>'+para['typeSentier']+'<br/><strong>Denivelé : </strong>'+para['Denivele']+"<br/><strong>Frais d'accès : </strong>"+para['Frais_acces'];
      GEvent.addListener(marker, 'click', function() {
       marker.openInfoWindowHtml(html);
      });
	
		if (idMarker>0){
		  GEvent.addListener(marker, 'click', function() {
          var maxContentDiv = document.createElement('div');
          maxContentDiv.innerHTML = 'Chargement...'
          marker.openInfoWindowHtml(html,
            {maxContent: maxContentDiv, 
             maxTitle: name});

          var iw = map.getInfoWindow();
          GEvent.addListener(iw, "maximizeclick", function() {
            GDownloadUrl("carte/sentier.php?sentier="+idMarker, function(data) {
              maxContentDiv.innerHTML = data;
            });
          });
        });
		}
      return marker;
    }
	
    function createSidebarEntry(marker, name, address) {
      var div = document.createElement('div');
      var html = '<b>' + name ;+ '</b><br/>' + address;
      div.innerHTML = html;
	  div.className='markerRow';
      div.style.cursor = 'pointer';
      div.style.marginBottom = '5px'; 
      GEvent.addDomListener(div, 'click', function() {
        GEvent.trigger(marker, 'click');
      });
    
	GEvent.addDomListener(div, 'mouseover', function() {
		div.className='markerRowOver';
      });
      GEvent.addDomListener(div, 'mouseout', function() {
      div.className='markerRow';
	  });

      return div;
    }

	
	
function randomNumber(limit){
  tmp=Math.floor(Math.random()*limit);
return tmp.toString();
}



function loadkmlFinishOld(myNum,etat){
if (sentiersarray[myNum]){
if (etat==false){
	map.removeOverlay(sentiersarray[myNum]['sentier']);
	map.removeOverlay(sentiersarray[myNum]['marker']);
	}else{
	map.addOverlay(sentiersarray[myNum]['sentier']);
	map.addOverlay(sentiersarray[myNum]['marker']);
	var bound=sentiersarray[myNum]['sentier'].getBounds();
	var newZoom=map.getBoundsZoomLevel(bound);
	if(map.getZoom<newZoom) map.setZoom(newZoom);
	map.panTo(sentiersarray[myNum]['centre']);
	//searchLocationSentier(myNum);
	gotoSentier(myNum);
	}
}

}

function loadkmlFinish(myNum,etat){
if (sentiersarray[myNum]){
if (etat==false){
	for (var s = 0; s < sentiersarray[myNum]['sentier'].length; s++) {
	map.removeOverlay(sentiersarray[myNum]['sentier'][s]);
	}
	map.removeOverlay(sentiersarray[myNum]['marker']);
	}else{
	for (var s = 0; s < sentiersarray[myNum]['sentier'].length; s++) {
	map.addOverlay(sentiersarray[myNum]['sentier'][s]);
	}
	map.addOverlay(sentiersarray[myNum]['marker']);
	//var bound=sentiersarray[myNum]['sentier'].getBounds();
	//var newZoom=map.getBoundsZoomLevel(bound);
	//if(map.getZoom<newZoom) map.setZoom(newZoom);
	//map.panTo(sentiersarray[myNum]['centre']);
	//searchLocationSentier(myNum);
	gotoSentier(myNum);
	}
}

}


function kmlLoading(etape) {
  this.thediv = document.getElementById('loading');
  this.WaitBarDiv = document.getElementById('WaitBarDiv');
  etat=this.thediv.style.visibility;
  if (etat!="visible" && etape==true){ 
  MM_showHideLayers('loading','','show');
  }else if(etape==false){
  MM_showHideLayers('loading','','hide');  
  }
}
function gotoSentier(myNum){
for (var i in sentiersarray) {
 GEvent.trigger(sentiersarray[i]['marker'], 'closeclick');

}
GEvent.trigger(sentiersarray[myNum]['marker'], 'click');
}
function loadMyKml(currentNum,etat) {
if (!toggleState){
	if (currentNum>0){
      if (etat!=false){
	  var ts = randomNumber(10);
	  if (sentiersarray[currentNum]==null){
		  sentiersarray[currentNum]=new Array();
		  kmlLoading(true);
		  toggleState=1;
		  var request = GXmlHttp.create();
		  request.open("GET", "../sentiersKML.php?kml="+currentNum+"&n="+ts, true);
		  request.onreadystatechange = function() {
			if (request.readyState == 4) {
			  var xmlDoc = GXml.parse(request.responseText);
			  var ligne = xmlDoc.documentElement.getElementsByTagName("sentier");
			  var placemarks = xmlDoc.documentElement.getElementsByTagName("placemarks");
			  sentiersarray[currentNum]['sentier']=Array();
			  for (var l = 0; l < placemarks.length; l++) {
				  var placemark = placemarks[l].getElementsByTagName("point");
				  var pts = [];
				  for (var i = 0; i < placemark.length; i++) {
					  pts[i] = new GLatLng(parseFloat(placemark[i].getAttribute("lat")), parseFloat(placemark[i].getAttribute("lng")));
				  }
			  	sentiersarray[currentNum]['sentier'][l]=new GPolyline(pts,ligne[0].getAttribute("couleur"),3,1);
				//map.addOverlay(tmpSentier[l]);
				//  alert(point);
                 // var coords = point.getElementsByTagName("coordinates")[0].childNodes[0].nodeValue;
                 // coords = coords.split(","); 
			  	//var points = xmlDoc.documentElement.getElementsByTagName("point");
			  	//var pts = [];
				 // for (var i = 0; i < points.length; i++) {
				//	  pts[i] = new GLatLng(parseFloat(points[i].getAttribute("lat")), parseFloat(points[i].getAttribute("lng")));
				 // }
			  //	tmpSentier[l]=new GPolyline(pts,ligne[0].getAttribute("couleur"),3,1);
				}
				//sentiersarray[currentNum]['sentier']=tmpSentier;//new GPolyline(pts,ligne[0].getAttribute("couleur"),3,1);
				//var cnt=parseInt((points.length/2)-1);
				//sentiersarray[currentNum]['centre']=pts[cnt];
				sentiersarray[currentNum]['centre']=pts[1];
				para=new Array();
				para['groupe']=ligne[0].getAttribute("groupe");
				para['Longueur']=ligne[0].getAttribute("Longueur");
				para['niveau']=ligne[0].getAttribute("niveau");
      			para['typeSentier']=ligne[0].getAttribute("typeSentier");
      			para['Denivele']=ligne[0].getAttribute("Denivele");
     			para['Frais_acces']=ligne[0].getAttribute("Frais_acces");
				sentiersarray[currentNum]['marker']= createMarkerSentier(sentiersarray[currentNum]['centre'], ligne[0].getAttribute("name"), para,currentNum);
    			sentiersarray[currentNum]['titre']=ligne[0].getAttribute("name");
				loadkmlFinish(currentNum,1);
				kmlLoading(false);
				toggleState=0;
			 }
			}
	  	request.send(null);
	  	}else{
		loadkmlFinish(currentNum,1);	
		}
		
	  }else{
	 loadkmlFinish(currentNum,false);
	  }
	}
}else{
setTimeout("loadMyKml("+currentNum+","+etat+")",500);
}
		  
}


