var gmap = null;
var gcoder = null;
var orig_lat = 48.850258199721495;
var orig_long = 2.362060546875;
var orig_zoom = 11;
var url_infos = '';
var url_points = '';

window.onload = function() {
	google.load("maps", "2", {callback: gmap_load});
}
window.onunload = gmap_unload;
/******* DEBUT MODIF SMILE************/
function patternAutoFill(pattern){
	if( (pattern=='' || pattern=='entrez votre code postal') && google.loader.ClientLocation){
		pattern = google.loader.ClientLocation.address.city;
	}
	return pattern;
}
/******* FIN MODIF  SMILE************/

function gmap_load(id) {
        id = 'gmap';
	if (GBrowserIsCompatible()) {
		gmap = new GMap2(document.getElementById(id));
		gmap.addControl(new GLargeMapControl());
		gmap.addControl(new GMapTypeControl());
		gmap.setCenter(new GLatLng(orig_lat, orig_long), orig_zoom);
		gcoder = new GClientGeocoder();
	}
	/******* DEBUT MODIF SMILE************/
	var pattern = $('#espacesmab_swords')[0].value;
	if(pattern=='')
		return gmap_search_far(1);
	/******* FIN MODIF  SMILE************/
	if (pattern != '')
		gmap_search(pattern, 'resultdetails', 1);
}

function gmap_unload() {
	GUnload();
}

function gmap_disp_point(lt, lg, num, info, common, openinfo) {
	var cpoint = new GLatLng(lt, lg);

	var icon = new GIcon();
	if (common) {
		icon.image = path_icons + 'icon-all.png';
		icon.shadow = path_icons + 'shadow-all.png';
	}
	else {
		/******* DEBUT MODIF SMILE************/
		if(num<31){
		icon.image = path_icons + 'icon-' + num + '.png';
		icon.shadow = path_icons + 'shadow.png';
		}
		else{
			icon.image = path_icons + 'icon-' + 'all' + '.png';
			icon.shadow = path_icons + 'shadow-all.png';
		}
		/******* FIN MODIF SMILE************/
	}
	icon.iconAnchor = new GPoint(5, 35);
	icon.infoWindowAnchor = new GPoint(10, 2);

	var marker = new GMarker(cpoint, icon);

	if (info) {
		GEvent.addListener(marker, "click", function() {
			marker.openInfoWindowHtml(info);
		});
	}
	gmap.addOverlay(marker);

	if (info && openinfo)
		marker.openInfoWindowHtml(info);

	return cpoint;
}

function gmap_disp_points() {
	var bounds = new GLatLngBounds();
	var found = 0;
	gmap.clearOverlays();
	$('.espacesmab_coords').each(function() {
		var lt = $(this).children('.espacesmab_coords_latitude')[0].value;
		var lg = $(this).children('.espacesmab_coords_longitude')[0].value;
		var num = $(this).children('.espacesmab_coords_num')[0].value;
		bounds.extend(gmap_disp_point(lt, lg, num, $("#elemmabplus-bulle-"+num).html(), false, false));
		found = found + 1;
	});
	if (found > 0) {
		var newzoom = gmap.getBoundsZoomLevel(bounds);
		if (newzoom < orig_zoom)
			gmap.setZoom(gmap.getBoundsZoomLevel(bounds));
		gmap.setCenter(bounds.getCenter());
	}
}

function gmap_search(pattern, tgt, page) {

	$('#espacesmab_numtexte').hide();
	attente();
	if (gcoder) {
		var address = pattern + ', France';
		gcoder.getLatLng(address, function(point) {
			if (point) {
				// on retablit le mode 'afficher tous les espaces' au besoin
				$('#espacesmab_searchnone').hide();
				$('#espacesmab_searchall').show();

				gmap.setCenter(point, orig_zoom);
				
				$.ajax({
					type: "POST",
					url: url_infos,
					data: "lat=" + point.y + "&long=" + point.x + "&page=" + page,
					dataType: 'html',
					success: function(msg) {
						$('#'+tgt).html(msg);
						$('#espacesmab_num').html($('#espacesmab_allcount')[0].value);
						$('#espacesmab_numtexte').show();
						gmap_disp_points();
						cacheAttente();
					}
				});
			}
			else {
				alert("Erreur : adresse ou code postal introuvable.");
				cacheAttente();
			}
		});
	}

	return false;
}

function gmap_search_form(pattern, tgt) {
	// on traite les nums de departements
	if (pattern.match(/^\d{2}000$/))
		pattern = pattern.substring(0, 2);
	if (pattern.match(/13|69|75$/))
		pattern += '001';
	else if (pattern.match(/^\d{2}$/))
		pattern += '000';
	/******* DEBUT MODIF SMILE************/
	if(pattern=='')
		return gmap_search_far(1);
	/******* FIN MODIF  SMILE************/
	return gmap_search(pattern, tgt, 1);
}

function gmap_search_link(tgt, page) {
	/******* DEBUT MODIF SMILE************/
	var pattern = $('#espacesmab_swords')[0].value;
	if(pattern=='')
		return gmap_search_far(page);
	/******* FIN MODIF  SMILE************/
	return gmap_search(pattern, tgt, page);
}

function gmap_search_all() {

	/******* DEBUT MODIF SMILE************/
	//$('#espacesmab_numtexte').hide();
	/******* FIN MODIF  SMILE************/

	$('#espacesmab_searchall').hide();
	$('#espacesmab_searchnone').show();

	attente();
	/******* DEBUT MODIF SMILE************/
	//$('#resultdetails').html("&nbsp;");
	/******* FIN MODIF  SMILE************/
	gmap.clearOverlays();
	$.ajax({
		type: "GET",
		url: url_points,
		dataType: 'json',
		success: function(data) {
			var i = 0;
			var n = data.length;
			for(i=0; i<n; i++) {
				gmap_disp_point(data[i]['lat'], data[i]['long'], i, data[i]['bulle'], true, false);
			}
			cacheAttente();
		}
	});

	gmap.setZoom(5);
	gmap.setCenter(new GLatLng(46.61, 4.57));
	return false;
}

/******* DEBUT MODIF SMILE************/
/**
 * cible l'ip client
 * affiche la liste de tous les magasins à gauche
 */
function gmap_search_far(page) {

	$('#espacesmab_searchnone').hide();
	$('#espacesmab_searchall').show();
		
		attente();
		
		gmap.clearOverlays();
		var address = patternAutoFill('') + ', France';
		gcoder.getLatLng(address, function(point) {
			$.ajax({
				type: "GET",
				url: url_points,
				data: "lat=" + point.y + "&long=" + point.x + "&page=" + page + "&distance=" + 10,
				dataType: 'json',
				success: function(data) {
					var i = 0;
					var n = data.length;
					for(i=0; i<n; i++) {
						gmap_disp_point(data[i]['lat'], data[i]['long'], i+1, data[i]['bulle'], false, false);
					}
					
					
					
						gmap.setCenter(point, orig_zoom);
					
				}
			});
			
			$.ajax({
				type: "POST",
				url: url_infos,
				data: "lat=" + point.y + "&long=" + point.x + "&page=" + page + "&distance=" + 40100,
				dataType: 'html',
				success: function(msg) {
				
					$('#resultdetails').html(msg);
					$('#espacesmab_num').html($('#espacesmab_allcount')[0].value);
					$('#espacesmab_numtexte').show();
					cacheAttente();
				}
			});
		});
		
		return false;
	}
/******* FIN MODIF  SMILE************/
function gmap_search_none() {
	$('#espacesmab_searchnone').hide();
	$('#espacesmab_searchall').show();

	/******* DEBUT MODIF SMILE************/
	var pattern = $('#espacesmab_swords')[0].value;
	if(pattern=='')
		return gmap_search_far(1);
	/******* FIN MODIF  SMILE************/
	if (pattern != '')
		gmap_search(pattern, 'resultdetails', 1);
	else {
		gmap.clearOverlays();
		gmap.setCenter(new GLatLng(orig_lat, orig_long), orig_zoom);
	}

	return false;
}

function gmap_search_csv_common(id, a1, a2, a3) {

	if (!gcoder) {
		if (GBrowserIsCompatible()) {
			gcoder = new GClientGeocoder();
		}
	}
	var o = document.getElementById(id);
	if (o && gcoder) {
		gcoder.getLatLng(a1, function(p) {
			if (p) {
				o.innerHTML = ",\""+p.x+"\",\""+p.y+"\"";
			}
			else {
				gcoder.getLatLng(a2, function(q) {
					if (q) {
						o.innerHTML = ",\""+q.x+"\",\""+q.y+"\"";
					}
					else {
						gcoder.getLatLng(a3, function(r) {
							if(r){
								o.innerHTML = ",\""+r.x+"\",\""+r.y+"\"";
							}
						});
					}
				});
			}
		});
	}
}

function gmap_search_csv(id, street, zipcode, city) {
	var adresse1 = street + ', ' + zipcode + ' ' + city + ', FRANCE';
	var adresse2 = zipcode + ' ' + city + ', FRANCE';
	var adresse3 = city + ', FRANCE';
	gmap_search_csv_common(id, adresse1, adresse2, adresse3);
}

function show_result(n) {

	// on retablit le mode 'afficher tous les espaces' au besoin
	$('#espacesmab_searchnone').hide();
	$('#espacesmab_searchall').show();
	/******* DEBUT MODIF SMILE************/
	//$('#espacesmab_numtexte').hide();
	/******* FIN MODIF  SMILE************/
	$('#elemmabplus-'+n).show();
	$('.elemmab').hide();

	var bounds = new GLatLngBounds();
	var found = 0;
	/******* DEBUT MODIF SMILE************/
	//gmap.clearOverlays();
	/******* FIN MODIF  SMILE************/
	var lt = $('#elemmabplus-'+n+'-latitude')[0].value;
	var lg = $('#elemmabplus-'+n+'-longitude')[0].value;
	var num = $('#elemmabplus-'+n+'-num')[0].value;

	if (lt && lg && num) {
		/******* DEBUT MODIF SMILE************/
		//bounds.extend(gmap_disp_point(lt, lg, num, $("#elemmabplus-bulle-"+num).html(), false, true));
		//var newzoom = gmap.getBoundsZoomLevel(bounds);
		//if (newzoom < orig_zoom)
		/******* FIN MODIF  SMILE************/
		gmap.setZoom(orig_zoom);
		gmap.setCenter(new GLatLng(lt, lg));
	}
}

function show_result2(n) {
	$('#resultdetails').html($('#elemmabplus2-'+n).html());
}

function retore_results() {
	$('#espacesmab_numtexte').show();
	$('.elemmabplus').hide();
	$('.elemmab').show();
	/******* DEBUT MODIF SMILE************/
	//gmap_disp_points();
	/******* FIN MODIF  SMILE************/
}


