jQuery.validator.addMethod("sansVirgule",function(value,element){
	return (value.indexOf(",",0) == -1) && (value.indexOf("/",0) == -1);
},"Les caract&egrave;res ',' et '/' sont interdit");
$().ready(function() {
	// validate signup form on keyup and submit
	$("#form_recherche_agence").validate({
		highlight: function(element, errorClass) {
			$(element).addClass(errorClass);
			$(element.form).find("label[for=" + element.id + "]").css("color","red");
			$(element.form).find("label[generated='true']").css("color","#14589c");
		},
		unhighlight: function(element, errorClass) {
			$(element).removeClass(errorClass);
			$(element.form).find("label[for=" + element.id + "]").css("color","#14589c");
		},
		rules: {
			cp: "digits",
			agence: "sansVirgule",
			ville: "sansVirgule"	
		},
		messages: {
			cp: {
				digits: "Le code postal ne doit contenir que des chiffres"
			}
		}
	});
});

google.load("maps", "2");

var map = null;
var geocoder = null;
var markers = Array();
var nbPointsTraites = 0;
var premierPoint = 0;
var ret;
var affiche_lien_map;

function initialize() {
	if (GBrowserIsCompatible()) {
		try{
			map = new GMap2(document.getElementById("map"));
			map.setCenter(new GLatLng(45.758606,4.86621), 13);
			map.setUIToDefault();
			addAddresses();
		}catch(err){
			$("#map").hide();
		}
	}else{
		$("#map").hide();
	}
}

function addMarker(name,address,i,total){
	//alert('name = '+name+' et address = '+address+' et i = '+i+' et total = '+total);
	geocoder = new GClientGeocoder();
	geocoder.getLatLng(
		address,
		function(point) {
			try{
				if (!point) {
					$("#lien_"+i).hide();
				}else {
					markers[markers.length] = new Array(point,name,address,i,total);
				}
			}catch(err){
				$("#lien_"+i).hide();
			}
		}
	);
}

function addAddresses() {
	for(var k=0;k<markers.length;k++){
		try{
			nbPointsTraites++;
			var tmp = markers[k];
			var marker = new GMarker(tmp[0]);
			GEvent.addListener(marker,"click", function(latlng) { 
				var myHtml = "<h3>"+tmp[1]+"</h3>"+tmp[2];
				map.openInfoWindow(latlng, myHtml);
			});
			map.addOverlay(marker);
			if(nbPointsTraites == 1){
				map.setCenter(new GLatLng(tmp[0].lat(),tmp[0].lng()), 13);
			}
			else{
			//if(nbPointsTraites == tmp[3]){
				centerMap();
			}
		}catch(err){
			alert(err);
		}
	}
}

function centerMap() {
	var minlat=null;
	var maxlat=null;
	var minlong=null;
	var maxlong = null;
	//alert("fin : "+markers);
	for(var i=0; i<markers.length; i++)
	{
		if(markers[i][0]){
			//alert(markers[i]);
			lat = markers[i][0].lat();
			lng = markers[i][0].lng();
	
			if(minlat == null  ||lat < minlat) minlat = lat;
			if(maxlat == null  || lat > maxlat) maxlat = lat;
			if(minlong == null  || lng < minlong) minlong = lng;
			if(maxlong == null  || lng > maxlong) maxlong = lng;
		}
		//alert("minlat = "+minlat+" maxlat = "+maxlat);
	}
	map.checkResize();
	map.setCenter(new GLatLng((minlat+maxlat)/2.0,(minlong+maxlong)/2.0),
	map.getBoundsZoomLevel(new GLatLngBounds(new GLatLng(minlat,minlong), new GLatLng(maxlat,maxlong)),new GSize(693,300)));

	if(map.getZoom() >15)
		map.setZoom(15);
}

function voirAgence(name,address){
	geocoder = new GClientGeocoder();
	if (geocoder) {
		geocoder.getLatLng(
			address,
			function(point) {
				try{
					map.setCenter(point, 14);
					var myHtml = "<h3>"+name+"</h3>"+address;
					map.openInfoWindow(point, myHtml);
				}catch(err){
					//alert(err);
				}
			}
		);
	}
}

