// Builds an array of geocode responses
/*
  Adaptation du code de http://www.google.com/apis/maps/documentation/geocodercache.html

*/
var lieu = [
  {
    name: "Hotel Magenta",
    Status: {
      code: 200,
      request: "geocode"
    },
    Placemark: [
      {
        address: "<strong>HotelMagentaParis.com</strong><br />38 Boulevard de Magenta<br />75010 Paris - France<br /><br /><a href=\"http://www.hotelmagentaparis.com/index.php\">www.hotelmagentaparis.com</a>",
        Point: {
          coordinates: [2.359872,48.8719989, 16]
        }
      }
    ]
  },
  {
    name: "Hotel Cervantes",
    Status: {
      code: 200,
      request: "geocode"
    },
    Placemark: [
      {
        address: "<strong>HotelCervantesParis.com</strong><br />19, rue de Berne<br />75008 Paris - France<br /><br /><a href=\"http://www.hotelcervantesparis.com/index.php\">www.hotelcervantesparis.com</a>",
        Point: {
          coordinates: [2.323565, 48.880275, 16]
        }
      }
    ]
  }
];


var map;
var geocoder;

// CapitalCitiesCache is a custom cache that extends the standard GeocodeCache.
// We call apply(this) to invoke the parent's class constructor.
function CapitalCitiesCache() {
  GGeocodeCache.apply(this);
}

// Assigns an instance of the parent class as a prototype of the
// child class, to make sure that all methods defined on the parent
// class can be directly invoked on the child class.
CapitalCitiesCache.prototype = new GGeocodeCache();

// Override the reset method to populate the empty cache with
// information from our array of geocode responses for capitals.
CapitalCitiesCache.prototype.reset = function() {
  GGeocodeCache.prototype.reset.call(this);
  for (var i in lieu) {
    this.put(lieu[i].name, lieu[i]);
  }
}


function loadGmaps_zoom(target) {
	mapZoom = new GMap2(document.getElementById(target));
	// ajout des fonctionnalités de zoom et de déplacement
	mapZoom.addControl(new GSmallMapControl());
	mapZoom.addControl(new GMapTypeControl());
	// on va centrer la mapZoom sur le bon hotel
	mapZoom.setCenter(new GLatLng(48.88, 2.350966), 12);

	geocoder = new GClientGeocoder();
	geocoder.setCache(new CapitalCitiesCache());
	//--------------------------------------------------------------------------
	var baseIcon = new GIcon();
	/*
	baseIcon.shadowSize = new GSize(37, 36);
	baseIcon.iconAnchor = new GPoint(0, 36);
	baseIcon.infoWindowAnchor = new GPoint(9, 2);
	baseIcon.infoShadowAnchor = new GPoint(18, 25);
	*/
	baseIcon.shadowSize = new GSize(37, 36);
	baseIcon.iconAnchor = new GPoint(10, 18);
	baseIcon.infoWindowAnchor = new GPoint(9, 2);
	baseIcon.infoShadowAnchor = new GPoint(18, 25);

	function createMarker(point, texte, iconName, iconSizeL, iconSizeH) {

	  baseIcon.iconSize = new GSize(iconSizeL, iconSizeH);

		var icon = new GIcon(baseIcon);
		icon.image = "http://www.hotelaparis.fr/root/"+ iconName +".png";
		var marker = new GMarker(point, icon);

		GEvent.addListener(marker, "click", function() {
	    marker.openInfoWindowHtml(texte);
	  });

	  return marker;
	}



	/*
	  +++++++++++ DATAS +++++++++++++++++
	*/
	// Add 1 marker to the mapZoom
	var latSpan = 48.8719989;
	var lngSpan = 2.359872;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "<strong>HotelMagentaParis.com</strong><br />38 Boulevard de Magenta<br />75010 Paris - France<br /><br /><a href=\"http://www.hotelmagentaparis.com/index.php\">www.hotelmagentaparis.com</a>";
	var iconName = "icon.hotel-magenta-paris";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	// Add 1 marker to the mapZoom
	/*
	var latSpan = 48.871405;
	var lngSpan = 2.360634;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "Metro Jacques Bonsergent<br />Ligne 5";
	var iconName = "icon.metro-5";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));
	*/

	// Add 1 marker to the mapZoom
	/*
	var latSpan = 48.8726;
	var lngSpan = 2.3555;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "Metro Château d’Eau<br />Ligne 4";
	var iconName = "icon.metro-4";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));
	*/

	// Add 1 marker to the mapZoom : http://www.google.com/mapZooms?f=q&source=s_q&hl=fr&geocode=&q=hotelcervantesparis&sll=48.877753,2.356383&sspn=0.012898,0.033023&ie=UTF8&ll=48.880839,2.323179&spn=0.006272,0.016512&z=17
	var latSpan = 48.880839;
	var lngSpan = 2.323160;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "<strong>Hôtel Cervantes Paris</strong><br />19, rue de Berne<br />75008 Paris - France<br /><br /><a href=\"http://www.hotelcervantesparis.com/index.php\">www.hotelcervantesparis.com</a>";
	var iconName = "icon.hotel-cervantes-paris";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	// Add 1 marker to the mapZoom
	var latSpan = 48.876486;
	var lngSpan = 2.358284;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "Gare de l'Est";
	var iconName = "icon.gare";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	// Add 1 marker to the mapZoom
	var latSpan = 48.880917;
	var lngSpan = 2.357404;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "Gare de du Nord";
	var iconName = "icon.gare";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	// Add 1 marker to the mapZoom
	var latSpan = 48.875399;
	var lngSpan = 2.328866;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "Gare St-Lazare";
	var iconName = "icon.gare";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	// Add 1 marker to the mapZoom
	var latSpan = 48.842012;
	var lngSpan = 2.32069;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "Gare Montparnasse";
	var iconName = "icon.gare";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	// Add 1 marker to the mapZoom http://www.google.com/mapZooms?ie=UTF8&ll=48.845118,2.373905&spn=0.025305,0.064716&z=15
	var latSpan = 48.845118;
	var lngSpan = 2.373905;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "Gare de Lyon";
	var iconName = "icon.gare";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	// Add 1 marker to the mapZoom http://www.google.com/mapZooms?ie=UTF8&ll=48.842605,2.364936&spn=0.025307,0.064716&z=15
	var latSpan = 48.842605;
	var lngSpan = 2.364936;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "Gare d'Austerlitz";
	var iconName = "icon.gare";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	// Add 1 marker to the mapZoom
	var latSpan = 48.733889;
	var lngSpan = 2.352276;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "Aéroport de Paris Orly";
	var iconName = "icon.airport";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	// Add 1 marker to the mapZoom
	var latSpan = 49.016707;
	var lngSpan = 2.561531;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "Aéroport de Paris Roissy";
	var iconName = "icon.airport";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	// tour eiffel
	var latSpan = 48.859054;
	var lngSpan = 2.294362;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "Tour Eiffel";
	var iconName = "icon.musee";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	// arc triomphe
	var latSpan = 48.873946;
	var lngSpan = 2.295134;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "Arc de triomphe";
	var iconName = "icon.musee";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	// Louvre
	var latSpan = 48.860325;
	var lngSpan = 2.339637;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "Musee du Louvre";
	var iconName = "icon.musee";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	// Opera
	var latSpan = 48.870855;
	var lngSpan = 2.332363;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "Opera";
	var iconName = "icon.musee";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	// Montmartre
	var latSpan = 48.888875;
	var lngSpan = 2.350903;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "Sacre Coeur (Basilique du)";
	var iconName = "icon.musee";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	// Notre dame
	var latSpan = 48.853534;
	var lngSpan = 2.349079;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "Cathédrale Notre-Dame";
	var iconName = "icon.musee";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	// Grande Arche
	var latSpan = 48.8926;
	var lngSpan = 2.236276;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "Grande Arche";
	var iconName = "icon.musee";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	// Satde de france
	var latSpan = 48.923303;
	var lngSpan = 2.361116;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "Stade de France";
	var iconName = "icon.musee";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	// Bastille
	var latSpan = 48.853294;
	var lngSpan = 2.369013;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "Bastille";
	var iconName = "icon.musee";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	// le printemps
	var latSpan = 48.87372;
	var lngSpan = 2.329552;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "Le Printemps Hausmann";
	var iconName = "icon.magasin";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	// galeries lafayette
	var latSpan = 48.879619;
	var lngSpan = 2.351074;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "Galeries Lafayette";
	var iconName = "icon.magasin";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	// bon marché
	var latSpan = 48.856583;
	var lngSpan = 2.350903;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "Le Bon Marché";
	var iconName = "icon.magasin";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	/* Les velib du Magenta */
	//http://www.google.com/mapZooms?ie=UTF8&ll=48.870968,2.361138&spn=0.006288,0.016179&z=17
	var latSpan = 48.870968;
	var lngSpan = 2.361138;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "<strong>Station N°10010</strong><br />8 place Jacques Bonsergent";
	var iconName = "icon.velib";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	//http://www.google.com/mapZooms?ie=UTF8&ll=48.869168,2.362286&spn=0.006288,0.016179&z=17
	var latSpan = 48.869168;
	var lngSpan = 2.362286;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "<strong>Station N°10011</strong><br />3 rue du Château d'Eau";
	var iconName = "icon.velib";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	//http://www.google.com/mapZooms?ie=UTF8&ll=48.873318,2.358885&spn=0.006287,0.016179&z=17
	var latSpan = 48.873318;
	var lngSpan = 2.358885;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "<strong>Station N°10012</strong><br />58 rue des Vinaigriers";
	var iconName = "icon.velib";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));
	//--------------------------------------------------------------------------

	//http://www.google.com/mapZooms?ie=UTF8&ll=48.872146,2.357479&spn=0.006288,0.016179&z=17
	var latSpan = 48.872146;
	var lngSpan = 2.357479;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "<strong>Station N°10009</strong><br />14 rue Hittorff";
	var iconName = "icon.velib";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));
	//--------------------------------------------------------------------------

	//http://www.google.com/mapZooms?ie=UTF8&ll=48.871694,2.36411&spn=0.006288,0.016179&z=17
	var latSpan = 48.871694;
	var lngSpan = 2.36411;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "<strong>Station N°10014</strong><br />14 rue de Marseille";
	var iconName = "icon.velib";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));
	//--------------------------------------------------------------------------

	/* Les velib du Cervantes */
	//http://www.google.com/mapZooms?ie=UTF8&ll=48.880762,2.324638&spn=0.006287,0.016179&z=17
	var latSpan = 48.880762;
	var lngSpan = 2.324638;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "<strong>Station N°8011</strong><br />1 rue Clapeyron";
	var iconName = "icon.velib";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	//http://www.google.com/mapZooms?ie=UTF8&ll=48.881919,2.320411&spn=0.006286,0.016179&z=17
	var latSpan = 48.881919;
	var lngSpan = 2.320411;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "<strong>Station N°8051</strong><br />45 Boulevard des Batignolles";
	var iconName = "icon.velib";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	//http://www.google.com/mapZooms?ie=UTF8&ll=48.883005,2.323973&spn=0.006286,0.016179&z=17
	var latSpan = 48.883005;
	var lngSpan = 2.323973;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "<strong>Station N°17050</strong><br />1 rue des Batignolles";
	var iconName = "icon.velib";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	//http://www.google.com/mapZooms?ie=UTF8&ll=48.879689,2.326999&spn=0.006287,0.016179&z=17
	var latSpan = 48.879689;
	var lngSpan = 2.326999;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "<strong>Station N°8010</strong><br />22 rue de Liège";
	var iconName = "icon.velib";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	//http://www.google.com/mapZooms?ie=UTF8&ll=48.879964,2.321463&spn=0.006287,0.016179&z=17
	var latSpan = 48.879964;
	var lngSpan = 2.321463;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "<strong>Station N°8019</strong><br />3 rue de Naples";
	var iconName = "icon.velib";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));

	// Parking
	//http://www.google.com/mapZooms?ie=UTF8&ll=48.882102,2.32127&spn=0.012897,0.033023&z=16
	var latSpan = 48.882102;
	var lngSpan = 2.32127;
	var point = new GLatLng(latSpan , lngSpan);
	var texte = "<strong>Parking</strong>";
	var iconName = "icon.parking";
	var iconSizeL = 32;
	var iconSizeH = 32;
	mapZoom.addOverlay(createMarker(point, texte, iconName, iconSizeL, iconSizeH));
}


function addAddressToMap(response) {
  //map.clearOverlays();

  if (response && response.Status.code != 200) {
    alert("Unable to locate " + decodeURIComponent(response.name));
  } else {
    var place = response.Placemark[0];
    var point = new GLatLng(place.Point.coordinates[1],
                            place.Point.coordinates[0]);
    map.setCenter(point, 16);
    map.openInfoWindowHtml(point, place.address);
  }
}

function findPlace(which) {
  if (which != 0) {
    geocoder.getLocations(lieu[which - 1].name, addAddressToMap);
  }
}
