var map;
var directionsPanel;
var directions;
var geocoder = new GClientGeocoder();

function find_agence_prox(lat,lng){
	var url = '../xmlrpc.php';
	var pars = 'mode=find_agence_prox&lat='+lat+'&lng='+lng;
	var target = 'agence_prox';	
	var myAjax = new Ajax.Updater(target, url,{

		onCreate:function(request){
		},

		onComplete:function(request){
			affiche_itineraire($('ville_agence_prox').value, $('nom_agence_prox').value,'0');
		},

		method: 'get', parameters: pars});

	return true;
}


function detect_localisation(){

	google.setOnLoadCallback(function() {
	    if (google.loader.ClientLocation) {
	
		var cl = google.loader.ClientLocation;
		var ville = cl.address.city;
		
		$('ville').value = ville;
		$('latitude').value = cl.latitude;
		$('longitude').value = cl.longitude;
		
	    } else {
	        $('ville').value = "Paris";
		$('latitude').value = 48.856697083;
		$('longitude').value = 2.350903034;
	    }
	    
	    find_agence_prox($('latitude').value,$('longitude').value)
	    load_map_itineraire()
	   
	});
}

var baseIcon = new GIcon();
baseIcon.iconSize=new GSize(32,32);
baseIcon.shadowSize=new GSize(56,32);
baseIcon.iconAnchor=new GPoint(16,32);
baseIcon.infoWindowAnchor=new GPoint(16,0);

var df = new GIcon(baseIcon, "../admin/img/iimm2-green.png ", null, "img/iimm2-shadow.png");
var dp = new GIcon(baseIcon, "../admin/img/iimm2-red.png", null, "img/iimm2-shadow.png");

function createMarker(point,html,icon) {

	var marker = new GMarker(point,icon);
	        GEvent.addListener(marker, "mouseover", function() {
			marker.openInfoWindowHtml("<div style=\"padding:5px; width:300px; \">"+html+"</div>");
	        });
	return marker;
}


function load_map_itineraire() {
	map = new GMap2(document.getElementById("map"));

	map.addControl(new GLargeMapControl());
	map.addMapType(G_PHYSICAL_MAP);
	map.addControl(new GMenuMapTypeControl(true,false));
	
	//map.setCenter(new GLatLng(47.15984,2.988281), 6);
	map.setCenter(new GLatLng(43.117687225,6.129414082), 10);
	
	GDownloadUrl('../implantation_map_data.php', function(data) {
		var xml = GXml.parse(data);
		var markers = xml.documentElement.getElementsByTagName('marker');
		for (var i = 0; i < markers.length; i++) {
			var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')), parseFloat(markers[i].getAttribute('lng')));
			var nom = markers[i].getAttribute('nom');
			var adresse = markers[i].getAttribute('adresse');
			var ville = markers[i].getAttribute('ville');
			var cp = markers[i].getAttribute('cp');
			var tel = markers[i].getAttribute('tel');
			var icone = markers[i].getAttribute('icone');
			var marker = createMarker(point, "<b>"+nom+"</b><br>"+adresse+"<br>"+cp+" "+ville+"<br>"+tel+"<br><a href=\"#\" onclick=\"affiche_itineraire('"+adresse+"', '"+ville+"', '1'); return false;\">Calculer mon itin&eacute;raire jusqu'&agrave; cette agence</a>", eval(icone));
			map.addOverlay(marker);
		}
	});
}


function affiche_itineraire(adresse, ville, reset) {
	
	if(reset=="1"){
		$('nom_agence_prox').value = ville;
		Element.update('nom_agence_prox_txt', ville);
		$('ville_agence_prox').value = adresse+", "+ville;
		Element.update('ville_agence_prox_txt', adresse+", "+ville);
	}
	else{
		Element.update('nom_agence_prox_txt', $('nom_agence_prox').value);
		Element.update('ville_agence_prox_txt', $('ville_agence_prox').value);
	}

	load_map_itineraire();
	Element.update('route','');
	
	directionsPanel = document.getElementById("route");
	directions = new GDirections(map, directionsPanel);
	directions.load("from: "+$('ville').value+", FR to: "+$('ville_agence_prox').value+", FR", {locale:"fr"});


        GEvent.addListener(directions,"load", function() {

        });

}


function relocalize(){

	var ville = $('ville').value;
	$('latitude').value = '';
	$('longitude').value = '';

	geocoder.getLatLng(
		ville+', france',
		function(point) {
			if (!point) {
				alert("La commune de " + ville + " est inconnue !");
			} else {
				map.setCenter(point, 13);
				var marker = new GMarker(point);
				map.addOverlay(marker);
				marker.openInfoWindowHtml(ville);

					var p = marker.getPoint();
					$('latitude').value=p.y;
					$('longitude').value=p.x;

				    find_agence_prox(p.y,p.x);
				    					    
			}
		}
	);


}
