
var spots_charge = false;
var lat = 33.13755119234614;//48.786290;
var lng = -81.5625;//2.057517;
var zoom = 2;
var map_charge; // Ne pas encore définir sinon la carte ne se charge pas !
var mode_charge = "plan"; //On doit déjà l'indiqué pour le moment où il charge la carte !
var mapGoogle;
var mapYahoo;
var progressBar;


/// FONCTIONS DE DEBOGUAGE !! 
function print_r(obj) {
  win_print_r = window.open('about:blank', 'win_print_r');
  win_print_r.document.write('<html><body>');
  r_print_r(obj, win_print_r);
  win_print_r.document.write('</body></html>');
 }

 function r_print_r(theObj, win_print_r) {
  if(theObj.constructor == Array ||
   theObj.constructor == Object){
   if (win_print_r == null)
    win_print_r = window.open('about:blank', 'win_print_r');
   }
   for(var p in theObj){
    if(theObj[p].constructor == Array||
     theObj[p].constructor == Object){
     win_print_r.document.write("<li>["+p+"] =>"+typeof(theObj)+"</li>");
     win_print_r.document.write("<ul>")
     r_print_r(theObj[p], win_print_r);
     win_print_r.document.write("</ul>")
    } else {
     win_print_r.document.write("<li>["+p+"] =>"+theObj[p]+"</li>");
    }
   }
  win_print_r.document.write("</ul>")
 }



function InitMap(){

	divname = "divmapGoogle";
	if (GBrowserIsCompatible()) {
		 mapGoogle = new GMap2(document.getElementById(divname));
		 mapGoogle.setMapType(G_NORMAL_MAP);
		 mapGoogle.enableScrollWheelZoom();		 
		 chargeMarkerGoogle();
		 
	}
	divname = "divmapYahoo";
		 mapYahoo = new YMap(document.getElementById(divname),YAHOO_MAP_REG);
		 chargeMarkerYahoo();
		 
  ChangeSource('google');
  modif_liens();
  affiche_spots();
  paramurl();
}

function maj_latlngzoom(){
	if(map_charge=="google"){
		lat = mapGoogle.getCenter().lat();
		lng = mapGoogle.getCenter().lng();
		zoom = mapGoogle.getZoom();
	}
	else if(map_charge=="yahoo"){
		lat = mapYahoo.getCenterLatLon().Lat;
		lng = mapYahoo.getCenterLatLon().Lon;
		zoom = 18-mapYahoo.getZoomLevel();
	}
}


/////////////////////////////////////////////////////////////////
///////////////////// FUNCTION GOOGLE MAP //////////////////////
///////////////////////////////////////////////////////////////
function AfficheGoogleMap() {
	maj_latlngzoom();
	mapGoogle.setCenter(new GLatLng(lat, lng), zoom);
	document.getElementById("divmapGoogle").className="visible";
	document.getElementById("divmapYahoo").className="hide";
	map_charge = "google";
}
function ChangeModeGoogle(mode){
	mapGoogle.setMapType(mode);
}
///// Markers
var baseIcon;
var markerGoogleTypes;

function chargeMarkerGoogle(){
//|--> Types
/*    baseIcon = new GIcon();
    baseIcon.shadow = "http://www.lecerfvolant.info/kitespots/images/shadow.png";
    baseIcon.iconSize = new GSize(12, 20);
    baseIcon.shadowSize = new GSize(22, 20);
    baseIcon.iconAnchor = new GPoint(6, 20);
    baseIcon.infoWindowAnchor = new GPoint(9, 2);
    baseIcon.infoShadowAnchor = new GPoint(18, 25);
 */
    
    //markerGoogleTypes["kitesurf"] = new GIcon(baseIcon);
markerGoogleTypes = new Array();
    markerGoogleTypes["kitesurf"] = new GIcon();
    markerGoogleTypes["kitesurf"].image = "http://www.lecerfvolant.info/kitespots/images/kitesurf.png"
    markerGoogleTypes["kitesurf"].shadow = "http://www.lecerfvolant.info/kitespots/images/shadow.png";
    markerGoogleTypes["kitesurf"].iconSize = new GSize(12, 20);
    markerGoogleTypes["kitesurf"].iconAnchor = new GPoint(6, 20);
    markerGoogleTypes["kitesurf"].shadowSize = new GSize(22, 20);
    markerGoogleTypes["kitesurf"].infoWindowAnchor = new GPoint(9, 2);
    markerGoogleTypes["kitesurf"].infoShadowAnchor = new GPoint(18, 25);

    markerGoogleTypes["snowkite"] = new GIcon();
    markerGoogleTypes["snowkite"].image = "http://www.lecerfvolant.info/kitespots/images/snowkite.png"
    markerGoogleTypes["snowkite"].shadow = "http://www.lecerfvolant.info/kitespots/images/shadow.png";
    markerGoogleTypes["snowkite"].iconSize = new GSize(12, 20);
    markerGoogleTypes["snowkite"].iconAnchor = new GPoint(6, 20);
    markerGoogleTypes["snowkite"].shadowSize = new GSize(22, 20);
    markerGoogleTypes["snowkite"].infoWindowAnchor = new GPoint(9, 2);
    markerGoogleTypes["snowkite"].infoShadowAnchor = new GPoint(18, 25);
    
    markerGoogleTypes["autres"] = new GIcon();
    markerGoogleTypes["autres"].image = "http://www.lecerfvolant.info/kitespots/images/autres.png"
    markerGoogleTypes["autres"].shadow = "http://www.lecerfvolant.info/kitespots/images/shadow.png";
    markerGoogleTypes["autres"].iconSize = new GSize(12, 20);
    markerGoogleTypes["autres"].iconAnchor = new GPoint(6, 20);
    markerGoogleTypes["autres"].shadowSize = new GSize(22, 20);
    markerGoogleTypes["autres"].infoWindowAnchor = new GPoint(9, 2);
    markerGoogleTypes["autres"].infoShadowAnchor = new GPoint(18, 25);
    
    markerGoogleTypes["magasins"] = new GIcon();
    markerGoogleTypes["magasins"].image = "http://www.lecerfvolant.info/kitespots/images/magasins.png"
    markerGoogleTypes["magasins"].shadow = "http://www.lecerfvolant.info/kitespots/images/shadow.png";
    markerGoogleTypes["magasins"].iconSize = new GSize(12, 20);
    markerGoogleTypes["magasins"].iconAnchor = new GPoint(6, 20);
    markerGoogleTypes["magasins"].shadowSize = new GSize(22, 20);
    markerGoogleTypes["magasins"].infoWindowAnchor = new GPoint(9, 2);
    markerGoogleTypes["magasins"].infoShadowAnchor = new GPoint(18, 25);
    
    markerGoogleTypes["ecoles"] = new GIcon();
    markerGoogleTypes["ecoles"].image = "http://www.lecerfvolant.info/kitespots/images/ecoles.png"
    markerGoogleTypes["ecoles"].shadow = "http://www.lecerfvolant.info/kitespots/images/shadow.png";
    markerGoogleTypes["ecoles"].iconSize = new GSize(12, 20);
    markerGoogleTypes["ecoles"].iconAnchor = new GPoint(6, 20);
    markerGoogleTypes["ecoles"].shadowSize = new GSize(22, 20);
    markerGoogleTypes["ecoles"].infoWindowAnchor = new GPoint(9, 2);
    markerGoogleTypes["ecoles"].infoShadowAnchor = new GPoint(18, 25);
    
    markerGoogleTypes["membres"] = new GIcon();
    markerGoogleTypes["membres"].image = "http://www.lecerfvolant.info/kitespots/images/membres.png"
    markerGoogleTypes["membres"].shadow = "http://www.lecerfvolant.info/kitespots/images/shadow.png";
    markerGoogleTypes["membres"].iconSize = new GSize(12, 20);
    markerGoogleTypes["membres"].iconAnchor = new GPoint(6, 20);
    markerGoogleTypes["membres"].shadowSize = new GSize(22, 20);
    markerGoogleTypes["membres"].infoWindowAnchor = new GPoint(9, 2);
    markerGoogleTypes["membres"].infoShadowAnchor = new GPoint(18, 25);    

    markerGoogleTypes["gmaps"] = new GIcon();
    markerGoogleTypes["gmaps"].image = "http://www.lecerfvolant.info/kitespots/images/spotsGmaps.png"
    markerGoogleTypes["gmaps"].shadow = "http://www.lecerfvolant.info/kitespots/images/shadow.png";
    markerGoogleTypes["gmaps"].iconSize = new GSize(12, 20);
    markerGoogleTypes["gmaps"].iconAnchor = new GPoint(6, 20);
    markerGoogleTypes["gmaps"].shadowSize = new GSize(22, 20);
    markerGoogleTypes["gmaps"].infoWindowAnchor = new GPoint(9, 2);
    markerGoogleTypes["gmaps"].infoShadowAnchor = new GPoint(18, 25);    
}
//|--> Fonctions  
function AddMarkerGoogle(lat, lng, markertype, info)    {
      var newmarker = new GMarker(new GLatLng(lat, lng), markerGoogleTypes[markertype]);
      GEvent.addListener(newmarker, "click", function() {
        newmarker.openInfoWindowHtml(info);
      });
      mapGoogle.addOverlay(newmarker);
      return newmarker;
}
function DeleteMarkerGoogle(marker){
    mapGoogle.removeOverlay(marker);
}
/////////////////////////////////////////////////////////////////
///////////////////// FUNCTION YAHOO MAP ///////////////////////
///////////////////////////////////////////////////////////////
function AfficheYahooMap() {
	maj_latlngzoom();
	mapYahoo.drawZoomAndCenter(new YGeoPoint(lat, lng), 18-zoom);
	document.getElementById("divmapGoogle").className="hide";
	document.getElementById("divmapYahoo").className="visible";
	document.getElementById("divmapYahoo").style.position="absolute";
	map_charge = "yahoo";
}
function ChangeModeYahoo(mode){
	mapYahoo.setMapType(mode);
}
//// Markers 
//|--> Types
var markerYahooTypes = new Array();

function chargeMarkerYahoo(){
   markerYahooTypes["kitesurf"] = new YImage();
   markerYahooTypes["kitesurf"].src = "http://www.lecerfvolant.info/kitespots/images/kitesurf.png"
   markerYahooTypes["kitesurf"].size = new YSize(12,20);
   markerYahooTypes["kitesurf"].offsetSmartWindow = new YCoordPoint(6,20);
   
   markerYahooTypes["snowkite"] = new YImage();
   markerYahooTypes["snowkite"].src = "http://www.lecerfvolant.info/kitespots/images/snowkite.png"
   markerYahooTypes["snowkite"].size = new YSize(12,20);
   markerYahooTypes["snowkite"].offsetSmartWindow = new YCoordPoint(6,20);
   
   markerYahooTypes["autres"] = new YImage();
   markerYahooTypes["autres"].src = "http://www.lecerfvolant.info/kitespots/images/autres.png"
   markerYahooTypes["autres"].size = new YSize(12,20);
   markerYahooTypes["autres"].offsetSmartWindow = new YCoordPoint(6,20);

   markerYahooTypes["magasins"] = new YImage();
   markerYahooTypes["magasins"].src = "http://www.lecerfvolant.info/kitespots/images/magasins.png"
   markerYahooTypes["magasins"].size = new YSize(12,20);
   markerYahooTypes["magasins"].offsetSmartWindow = new YCoordPoint(6,20);

   markerYahooTypes["ecoles"] = new YImage();
   markerYahooTypes["ecoles"].src = "http://www.lecerfvolant.info/kitespots/images/ecoles.png"
   markerYahooTypes["ecoles"].size = new YSize(12,20);
   markerYahooTypes["ecoles"].offsetSmartWindow = new YCoordPoint(6,20);
   
   markerYahooTypes["membres"] = new YImage();
   markerYahooTypes["membres"].src = "http://www.lecerfvolant.info/kitespots/images/membres.png"
   markerYahooTypes["membres"].size = new YSize(12,20);
   markerYahooTypes["membres"].offsetSmartWindow = new YCoordPoint(6,20);

   markerYahooTypes["gmaps"] = new YImage();
   markerYahooTypes["gmaps"].src = "http://www.lecerfvolant.info/kitespots/images/spotsGmaps.png"
   markerYahooTypes["gmaps"].size = new YSize(12,20);
   markerYahooTypes["gmaps"].offsetSmartWindow = new YCoordPoint(6,20);

}
//|--> Fonctions
function AddMarkerYahoo(lat, lng, markertype, info) {
  var marker = new YMarker(new YGeoPoint(lat, lng), markerYahooTypes[markertype]);
  YEvent.Capture(marker, EventsList.MouseClick, function OnClick() {
         marker.openSmartWindow(info);
     });
 
   mapYahoo.addOverlay(marker);
   return marker;
}
function DeleteMarkerYahoo(marker){
    mapYahoo.removeOverlay(marker);
}

///////////////////////////////////////////////////////////////////

function ChangeMode(mode){
	switch(map_charge){
		case 'google':
			switch(mode){
				case 'plan': ChangeModeGoogle(G_NORMAL_MAP); break
				case 'mixte': ChangeModeGoogle(G_HYBRID_MAP); break
				case 'satellite': ChangeModeGoogle(G_SATELLITE_MAP); break
			}
		break;
		case 'yahoo':
			switch(mode){
				case 'plan': ChangeModeYahoo(YAHOO_MAP_REG); break
				case 'mixte': ChangeModeYahoo(YAHOO_MAP_HYB); break
				case 'satellite': ChangeModeYahoo(YAHOO_MAP_SAT); break
			}
		break;
	}
	mode_charge = mode;
	document.getElementById("plan").className="buttonOff";
	document.getElementById("mixte").className="buttonOff";
	document.getElementById("satellite").className="buttonOff";

	document.getElementById(mode).className="buttonOn";
}
function ChangeSource(source){
	if(map_charge==source) return false;

	switch(source){
		case 'google':
			AfficheGoogleMap();
			break;
		case 'yahoo':
			AfficheYahooMap();
			break;
	}
	document.getElementById("google").className="buttonOff";
	document.getElementById("yahoo").className="buttonOff";

	document.getElementById(source).className="buttonOn";
	ChangeMode(mode_charge);
}
function ChangeZoom(sens){
	switch(map_charge){
		case 'google':
			switch(sens){
				case '++': mapGoogle.zoomIn();mapGoogle.zoomIn();mapGoogle.zoomIn(); break;
				case '+': mapGoogle.zoomIn(); break;
				case '-': mapGoogle.zoomOut(); break;
				case '--': mapGoogle.zoomOut();mapGoogle.zoomOut();mapGoogle.zoomOut(); break;
			}
		break;
		case 'yahoo':
			switch(sens){
				case '++': mapYahoo.setZoomLevel(mapYahoo.getZoomLevel()-3) ; break; // - pour zoomer
				case '+': mapYahoo.setZoomLevel(mapYahoo.getZoomLevel()-1) ; break; // - pour zoomer
				case '-': mapYahoo.setZoomLevel(mapYahoo.getZoomLevel()+1); break; // + pour dézoomer
				case '--': mapYahoo.setZoomLevel(mapYahoo.getZoomLevel()+3); break; // + pour dézoomer
			}
		break;
	}
}


function geocode(address){
/*	switch(map_charge){
		case "google" :
*/			var geo = new GClientGeocoder();
      maj_latlngzoom();
			geo.getLatLng(address, function(point) {
				if (!point) return null;
				else {
					return centrer_sur(point.lat(),point.lng(),zoom);
				}
			});/*
			break;
		case "yahoo" :
		   YEvent.Capture(mapYahoo, EventsList.onEndGeoCode, function (point) {
				if (!point) alert("Pas trouvé");
				else {
					return centrer_sur(point.Lat,point.Lon,10);
				}
			});
			mapYahoo.geoCodeAddress(address);
			alert("OK");
			break;
	}*/
}
function aller_a(){
			var adresse =  document.getElementById("adresse");
			address = adresse.value;
			geocode(address);
			/*return geocode(address);
			var geocoder = new GClientGeocoder();
			geocoder.getLatLng(address, aller_a2);
}
function aller_a2(point){
	if(point && point.lat!=0 && point.lng!=0) {
		lalat = point.lat;
		lalng = point.lng;
	alert(lalat+","+lalng);
		centrer_sur(lalat,lalng,zoom);
	} */
}


function centrer_sur(lalat,lalng,lezoom){
	switch(map_charge){
		case "google" : 	mapGoogle.setCenter(new GLatLng(lalat, lalng), lezoom); break;
		case "yahoo" : 		mapYahoo.drawZoomAndCenter(new YGeoPoint(lalat, lalng), 18-lezoom);break;
	}
}

//// Types
var AfficheSpotsType = new Array();
AfficheSpotsType = new Array();
AfficheSpotsType[0]=true;//kitesurf
AfficheSpotsType[1]=true;//snowkite
AfficheSpotsType[2]=true;//autres
AfficheSpotsType[3]=true;//magasins
AfficheSpotsType[4]=true;//ecoles
AfficheSpotsType[5]=true;//membres
AfficheSpotsType[6]=true;//gmaps
///Sites 
var AfficheSpotsSite = new Array();
AfficheSpotsSite = new Array();
AfficheSpotsSite["lecerfvolant"]=true;//lecerfvolant.info
AfficheSpotsSite["spottrotters"]=true;//spottrotters.com
AfficheSpotsSite["kitesurfatlas"]=true;//kitesurfatlas.com
AfficheSpotsSite["kite-spots"]=true;//kite-spots.net

// Fonction pour afficher tous les spots (au chargement de la page et de la carte)
function affiche_spots(){
//  alert("En cours de tests !");
  progressBar = new ProgressbarControl(mapGoogle, {width:400, loadstring: 'Chargement en cours ...'}); 
  progressBar.start(spots.length);
  affiche_le_spot(0);
  /*for(x=0;x<nb_spots;x++){
    if(AfficheSpotsType[spots[x].type]&&AfficheSpotsSite[spots[x].site]){
        spots[x]= AddMarker(spots[x]);
    }
    else {
        spots[x].active = false;
    }
  }
  modif_liens();*/
}

/// Function qui charge les spots progressivement pour ne pas planter le navigateur du visiteur! 

function affiche_le_spot(x){
    progressBar.updateLoader(1);
    if(AfficheSpotsType[eval(spots[x].type)]&&AfficheSpotsSite[spots[x].site]){
        spots[x]= AddMarker(spots[x]);
    }
    else {
        spots[x].active = false;
    }
    x++;
    if(x<nb_spots) setTimeout('affiche_le_spot('+x+')', 5); // = 200 spots par secondes 
    else progressBar.remove();
}

function AddMarker(spot){
        var markertype =  defineMarkerType(spot.type);
        var markertype2 =  defineMarkerType2(spot.type);
	if(spot.type==6||spot.type=="6") {
		var info = '<div id="bulle"><b>'+spot.nom+'</b><br />'+spot.html+'</div>';
	}
	else {
	        var info = '<div id="bulle"><b>'+spot.nom+'</b><br />Type : '+markertype2+'<br />Site : '+spot.site+'<br />'+spot.html+'</div>';
	}
        spot.markerGoogle = AddMarkerGoogle(spot.lat, spot.lng, markertype,  info);        
        spot.markerYahoo = AddMarkerYahoo(spot.lat, spot.lng, markertype,  info);
        spot.active = true;
        return spot;
}


function AfficheSpotsTypeFct(input,type){
if(input.checked) AfficheSpotsType[type] = true;
else  AfficheSpotsType[type] = false;

  for(x=0;x<nb_spots;x++){ // On parcour tous les spots
    if(eval(spots[x].type)==eval(type) && AfficheSpotsSite[spots[x].site]){ // On prend uniquement les spots concernés !
      if(input.checked&&spots[x].active){ //Si on doit l'afficher et qu'il est déjà actif
         // On le laisse comme ça !
      }
      else if(input.checked && !spots[x].active){//Si on doit l'afficher mais qu'il ne l'est pas encore
        var markertype = defineMarkerType(spots[x].type);
         // On l'ajoute
         spots[x].markerGoogle.show();
         spots[x].markerYahoo.unhide();
         spots[x].active = true;
         //spots[x] = AddMarker(spots[x]);
      }
      else if(!input.checked && spots[x].active){ //Si on ne doit pas l'afficher mais qu'il l'est
        // On l'enleve
        //DeleteMarkerYahoo(spots[x].markerYahoo); 
        //DeleteMarkerGoogle(spots[x].markerGoogle);
        
        //On le masque 
        spots[x].markerGoogle.hide();
        spots[x].markerYahoo.hide();
        spots[x].active = false;
      }
      else if(!input.checked && !spots[x].active){ // Si on ne dois pas l'afficher et qu'il ne l'est pas 
         // On le laisse comme ça !
      }
    }
  }
}

function AfficheSiteFct(input,site){
if(input.checked) AfficheSpotsSite[site] = true;
else  AfficheSpotsSite[site] = false;

  for(x=0;x<nb_spots;x++){ // On parcour tous les spots
    if(spots[x].site==site && AfficheSpotsType[eval(spots[x].type)]){ // On prend uniquement les spots concernés !
      if(input.checked&&spots[x].active){ //Si on doit l'afficher et qu'il est déjà actif
         // On le laisse comme ça !
      }
      else if(input.checked && !spots[x].active){//Si on doit l'afficher mais qu'il ne l'est pas encore
        var markertype = defineMarkerType(spots[x].type);
         // On l'ajoute
         spots[x].markerGoogle.show();
         spots[x].markerYahoo.unhide();
         spots[x].active = true;
         //spots[x] = AddMarker(spots[x]);
      }
      else if(!input.checked && spots[x].active){ //Si on ne doit pas l'afficher mais qu'il l'est
        // On l'enleve
        //DeleteMarkerYahoo(spots[x].markerYahoo); 
        //DeleteMarkerGoogle(spots[x].markerGoogle);

        //On le masque 
        spots[x].markerGoogle.hide();
        spots[x].markerYahoo.hide();
        spots[x].active = false;
      }
      else if(!input.checked && !spots[x].active){ // Si on ne dois pas l'afficher et qu'il ne l'est pas 
         // On le laisse comme ça !
      }
    }
  }
}

function defineMarkerType(type){
  switch(eval(type)){ //on met eval pour ne pas qu'il y ait de différence entre 0 et '0'
    case 0: markertype="kitesurf"; break;
    case 1: markertype="snowkite"; break;
    case 2: markertype="autres"; break;
    case 3: markertype="magasins"; break;
    case 4: markertype="ecoles"; break;
    case 5: markertype="membres"; break;
    case 6: markertype="gmaps"; break;
    default: markertype="autres"; break;
  }
  return markertype;
}
function defineMarkerType2(type){
  switch(eval(type)){ //on met eval pour ne pas qu'il y ait de différence entre 0 et '0'
    case 0: markertype="KiteSurf"; break;
    case 1: markertype="SnowKite"; break;
    case 2: markertype="Buggy, MTB, cerf-volant..."; break;
    case 3: markertype="Magasins"; break;
    case 4: markertype="Écoles"; break;
    case 5: markertype="Cerf-volistes/Kiteurs"; break;
    case 6: markertype="Google Maps"; break;
    default: markertype="Buggy, MTB,..."; break;
  }
  return markertype;
}



function modif_liens(){
	var AllLinks=document.getElementsByTagName('a');	  
	for(i=0;i<AllLinks.length;i++){
    lelien=AllLinks[i];
    if(lelien.href!=""&&lelien.href!="#"&&lelien.alt!="_"){
      lelien.onclick= function() { affiche_overlay_window('./images/load.gif',this.href); return false; };
      //lelien.target="";
      lelien.alt="_";
      //lelien.href="javascript:affiche_overlay_window('./images/load.gif','"+AllLinks[i].href+"')";
    }
	} 
}    

