// WAITING
var waitingAjax='<img src="http://www.l-acoustics.com/img/common/ajax-add-basket.gif" />';
// ICON MAKER
var MapIconMaker = {};
MapIconMaker.createMarkerIcon = function(opts) {
  var width = opts.width || 32;
  var height = opts.height || 32;
  var primaryColor = opts.primaryColor || "#ff0000";
  var strokeColor = opts.strokeColor || "#000000";
  var cornerColor = opts.cornerColor || "#ffffff";
  var baseUrl = "http://chart.apis.google.com/chart?cht=mm";
  var iconUrl = baseUrl + "&chs=" + width + "x" + height + "&chco=" + cornerColor.replace("#", "") + "," + primaryColor.replace("#", "") + "," + strokeColor.replace("#", "") + "&ext=.png";
  var icon = new GIcon(G_DEFAULT_ICON);
  icon.image = iconUrl;
  icon.iconSize = new GSize(width, height);
  icon.shadowSize = new GSize(Math.floor(width*1.6), height);
  icon.iconAnchor = new GPoint(width/2, height);
  icon.infoWindowAnchor = new GPoint(width/2, Math.floor(height/12));
  icon.printImage = iconUrl + "&chof=gif";
  icon.mozPrintImage = iconUrl + "&chf=bg,s,ECECD8" + "&chof=gif";
  var iconUrl = baseUrl + "&chs=" + width + "x" + height + "&chco=" + cornerColor.replace("#", "") + "," + primaryColor.replace("#", "") + "," + strokeColor.replace("#", "");
  icon.transparent = iconUrl + "&chf=a,s,ffffff11&ext=.png";
  icon.imageMap = [
      width/2, height,
      (7/16)*width, (5/8)*height,
      (5/16)*width, (7/16)*height,
      (7/32)*width, (5/16)*height,
      (5/16)*width, (1/8)*height,
      (1/2)*width, 0,
      (11/16)*width, (1/8)*height,
      (25/32)*width, (5/16)*height,
      (11/16)*width, (7/16)*height,
      (9/16)*width, (5/8)*height
  ];
  for (var i = 0; i < icon.imageMap.length; i++) {
    icon.imageMap[i] = parseInt(icon.imageMap[i]);
  }
  return icon;
}
// ICON : COLOR & SIZE
var myIcon = new GIcon();
myIcon.image = "img/map/pt_lacoustics.png";
myIcon.iconSize = new GSize(11,11);
myIcon.iconAnchor = new GPoint(5,5);
myIcon.infoWindowAnchor = new GPoint(13, 1);
var markerOptions = {
    icon: myIcon
};
// ICON SEARCH LOCATION
var myIconSearch = new GIcon();
myIconSearch.image = "img/map/pt_lacoustics_search.png";
myIconSearch.iconSize = new GSize(11,11);
myIconSearch.iconAnchor = new GPoint(5,5);
myIconSearch.infoWindowAnchor = new GPoint(13, 1);
var markerOptionsSearch = {
    icon: myIconSearch
};
// INFOS CIRCLE
var cercleCouleur = "#ff0000";
var cercleEpaisseur = "2.5";
var cercleOpacite = ".5";
var disqueCouleur = "#ffffff";
var disqueOpacite = ".1";
var segment = 60;
// XML PARSING
function init(file,type) {
	// START CLEAR CONTENT
	document.getElementById("contentWeb").innerHTML = "";
	// END CLEAR CONTENT
	// HELP
	document.getElementById("waitingArea").innerHTML = waitingAjax;
	// TOOLS MAP
	var map = new GMap2(document.getElementById("map"));
	map.setCenter(new GLatLng(0,0),1);
	map.setMapType(G_NORMAL_MAP);
	map.addControl(new GMapTypeControl());
	map.addControl(new GSmallMapControl());
	map.enableScrollWheelZoom();
	// XML
	GDownloadUrl(file, function(data, responseCode) {
	  if(responseCode == 200) {
		var xml = GXml.parse(data);
		var markers = xml.documentElement.getElementsByTagName("marker");
		for (i = 0; i < markers.length; i++) {
			var test_long = markers[i].getAttribute("long");
			var test_lat =  markers[i].getAttribute("lat");
			if(test_long.length > 0 || test_lat.length > 0) {
			var point = new GLatLng(parseFloat(markers[i].getAttribute("long")), parseFloat(markers[i].getAttribute("lat")));
			// RECUP INFOS
			if(type == 0) {
				var logo = markers[i].getAttribute("logo");
				var name = markers[i].getAttribute("name");
				var contact_name = markers[i].getAttribute("contact_name");
				var street = markers[i].getAttribute("street");
				var country = markers[i].getAttribute("country");
				var city = markers[i].getAttribute("city");
				var zip_code = markers[i].getAttribute("zip_code");
				var phone = markers[i].getAttribute("phone");
				var fax = markers[i].getAttribute("fax");
				var email = markers[i].getAttribute("email");
				var web = markers[i].getAttribute("web");
				var arrayInfos = new Array(name, street, country, city, zip_code, phone, fax, email, contact_name, logo, web);
			} else {
				var name = markers[i].getAttribute("name");
				var street = markers[i].getAttribute("street");
				var country = markers[i].getAttribute("country");
				var city = markers[i].getAttribute("city");
				var zip_code = markers[i].getAttribute("zip_code");
				var phone = markers[i].getAttribute("phone");
				var fax = markers[i].getAttribute("fax");
				var email = markers[i].getAttribute("email");
				var web = markers[i].getAttribute("web");
				var matos = markers[i].getAttribute("standard");
				var arrayInfos = new Array(name, street, country, city, zip_code, phone, fax, email, web, matos);
			}
			// ARRAY MARKER
			var marker = createMarker(point, arrayInfos, type);
			map.addOverlay(marker);
			}
		}
	  } else if(responseCode == -1) {
		alert("Data request timed out. Please try later.");
	  } else { 
		alert("Request resulted in error. Check XML file is retrievable.");
	  }								   
	});
	// HELP
	document.getElementById("waitingArea").innerHTML = "";
}
// SEARCH LOCATION
function searchLocationNear(searchUrl,type) {
	// START CLEAR CONTENT
	document.getElementById("contentWeb").innerHTML = "";
	// END CLEAR CONTENT
	var place = document.getElementById("locationUser").value;
	var radius = document.getElementById("valueRadius").value;
	var testSystem = document.getElementById("valueSystem").value;
	var testStandard = document.getElementById("valueStandard").value;
	// HELP
	document.getElementById("zoneRadius").style.display = "none";
	document.getElementById("zoneNoWords").style.display = "none";
	document.getElementById("waitingArea").innerHTML = waitingAjax;
	if(radius != null) {
		if (place != null) {
				// TOOLS MAP
				var map = new GMap2(document.getElementById("map"));
				map.setCenter(new GLatLng(0,0),1);
				map.setMapType(G_NORMAL_MAP);
				map.addControl(new GMapTypeControl());
				map.addControl(new GSmallMapControl());
				map.enableScrollWheelZoom();
				// SEARCH DECODER
				var geocoder = new GClientGeocoder();
				geocoder.getLatLng(place, function(point) {
					if(point != null) {
					map.clearOverlays();
					if(radius == 50 || radius == 100) {
						coeffZoom = 7;
					} else if(radius == 250) {
						coeffZoom = 6;
					} else if(radius == 500) {
						coeffZoom = 5;
					} else if(radius == 1000) {
						coeffZoom = 4;
					} else if(radius == 1500) {
						coeffZoom = 3;	
					} else if(radius > 1500) {
						coeffZoom = 2;	
					} else {
						coeffZoom = 1;	
						document.getElementById("zoneRadius").style.display = "block";
					}
					// FIX PT SEARCH
					map.setCenter(point,coeffZoom);
					var marker = new GMarker(point,myIconSearch);
					map.addOverlay(marker);
					// FIX CIRCLE
					var pointsCercle = new Array();
					var step = parseInt(360/segment)||10;
					var centre = map.getCenter();
					var centreLat = centre.lat();
					var centreLng = centre.lng();
					var latConv = centre.distanceFrom(new google.maps.LatLng(centre.lat()+0.1, centre.lng()))/100;
					var lngConv = centre.distanceFrom(new google.maps.LatLng(centre.lat(), centre.lng()+0.1))/100;
					for(var i=0; i<=360; i+=step) {
						var calculLat = centreLat + (radius/latConv * Math.cos(i * Math.PI/180));
						var calculLng = centreLng + (radius/lngConv * Math.sin(i * Math.PI/180));
						var pint = new GLatLng(calculLat,calculLng);
						pointsCercle.push(pint);
					}
					polygoneCercle = new GPolygon(pointsCercle, cercleCouleur, cercleEpaisseur, cercleOpacite, disqueCouleur, disqueOpacite);
					map.addOverlay(polygoneCercle);
						// MATCHING
						GDownloadUrl(searchUrl, function(data) {
							var xml = GXml.parse(data);
							var markers = xml.documentElement.getElementsByTagName('marker');
							for (i = 0; i < markers.length; i++) {
								var test_long = markers[i].getAttribute("long");
								var test_lat =  markers[i].getAttribute("lat");
								if(test_long.length > 0 || test_lat.length > 0) {
								var lat = markers[i].getAttribute("long");
								var long = markers[i].getAttribute("lat");
								startPoint = new LatLong(centreLat, centreLng);
								endPoint = new LatLong(lat,long);
								var dist = LatLong.distHaversine(startPoint, endPoint);
								if(dist < radius) {
									var point = new GLatLng(parseFloat(markers[i].getAttribute("long")), parseFloat(markers[i].getAttribute("lat")));
									// RECUP INFOS
									if(type == 0) {
										var logo = markers[i].getAttribute("logo");
										var name = markers[i].getAttribute("name");
										var contact_name = markers[i].getAttribute("contact_name");
										var street = markers[i].getAttribute("street");
										var country = markers[i].getAttribute("country");
										var city = markers[i].getAttribute("city");
										var zip_code = markers[i].getAttribute("zip_code");
										var phone = markers[i].getAttribute("phone");
										var fax = markers[i].getAttribute("fax");
										var email = markers[i].getAttribute("email");
										var web = markers[i].getAttribute("web");
										var arrayInfos = new Array(name, street, country, city, zip_code, phone, fax, email, contact_name, logo, web);
									} else {
										var name = markers[i].getAttribute("name");
										var street = markers[i].getAttribute("street");
										var country = markers[i].getAttribute("country");
										var city = markers[i].getAttribute("city");
										var zip_code = markers[i].getAttribute("zip_code");
										var phone = markers[i].getAttribute("phone");
										var fax = markers[i].getAttribute("fax");
										var email = markers[i].getAttribute("email");
										var web = markers[i].getAttribute("web");
										var matos = markers[i].getAttribute("standard");
										var arrayInfos = new Array(name, street, country, city, zip_code, phone, fax, email, web, matos);
									}
									// AJAX CONTENT
									var content = createContentWeb(arrayInfos,'contentWeb');
									// ARRAY MARKER
									var marker = createMarker(point, arrayInfos);
									map.addOverlay(marker);
								}
							}
							// HELP
							document.getElementById("waitingArea").innerHTML = "";
							}
						});
				} else {
					document.getElementById("zoneNoWords").style.display = "block";
					init(searchUrl,type);
				}
			})	
		} else if(place != null && (testSystem != null || testStandard != null)) {
			searchLocationNearStandard(searchUrl,1);		
		} else {
			document.getElementById("zoneNoWords").style.display = "none";
			init(searchUrl,type);
		}
	} else {
		document.getElementById("zoneRadius").style.display = "block";
		init(searchUrl,type);
	}
}
// SEARCH SYSTEM OR STANDARD
function searchSysStand(searchUrl) {
	// START CLEAR CONTENT
	document.getElementById("contentWeb").innerHTML = "";
	// END CLEAR CONTENT
	var place = document.getElementById('locationUser').value;
	var country = document.getElementById('countryUser').value;
	var radius = document.getElementById('valueRadius').value;
	var system = document.getElementById("valueSystem").value;
	var standard = document.getElementById("valueStandard").value;
	// HELP
	document.getElementById("waitingArea").innerHTML = waitingAjax;
	if((place != null && radius != 0 && (system != 0 || standard != 0)) || country != 0) {
		searchLocationNearStandard(searchUrl, 1);	
	} else {
	// TOOLS MAP
	var map = new GMap2(document.getElementById("map"));
	map.setCenter(new GLatLng(0,0),1);
	map.setMapType(G_NORMAL_MAP);
	map.addControl(new GMapTypeControl());
	map.addControl(new GSmallMapControl());
	map.enableScrollWheelZoom();
	map.clearOverlays();
	document.getElementById("zoneNoWords").style.display = "none";
	if(system == 0 && standard == 0) {
		// REINIT
		init(searchUrl,1);	
	} else {
	GDownloadUrl(searchUrl, function(data) {
		var xml = GXml.parse(data);
		var markers = xml.documentElement.getElementsByTagName('marker');
		for (i = 0; i < markers.length; i++) {
			var system_value = markers[i].getAttribute("standard");
			// ONLY SYSTEM
			if(system != 0 && standard == 0) {
				if(system_value != 0) {
					var array_value = system_value.split(" - ");
					var length = array_value.length;
					for(j = 0; j < length; j++) {
						var test_long = markers[i].getAttribute("long");
						var test_lat =  markers[i].getAttribute("lat");
						if(test_long.length > 0 || test_lat.length > 0) {
						var test_value = array_value[j].indexOf(system);
						if(test_value == 0) {
							var point = new GLatLng(parseFloat(markers[i].getAttribute("long")), parseFloat(markers[i].getAttribute("lat")));
							var name = markers[i].getAttribute("name");
							var street = markers[i].getAttribute("street");
							var country = markers[i].getAttribute("country");
							var city = markers[i].getAttribute("city");
							var zip_code = markers[i].getAttribute("zip_code");
							var phone = markers[i].getAttribute("phone");
							var fax = markers[i].getAttribute("fax");
							var email = markers[i].getAttribute("email");
							var web = markers[i].getAttribute("web");
							var matos = markers[i].getAttribute("standard");
							var arrayInfos = new Array(name, street, country, city, zip_code, phone, fax, email, web, matos);
							// AJAX CONTENT
							var content = createContentWeb(arrayInfos,'contentWeb');
							// ARRAY MARKER
							var marker = createMarker(point, arrayInfos, 1);
							map.addOverlay(marker);
						}
					}
					// HELP
					document.getElementById("waitingArea").innerHTML = "";
					}
				}	
			// ONLY STANDARD
			} else if(system == 0 && standard != 0) {
				if(system_value != 0) {
					var array_value = system_value.split(" - ");
					var length = array_value.length;
					for(j = 0; j < length; j++) {
						var test_long = markers[i].getAttribute("long");
						var test_lat =  markers[i].getAttribute("lat");
						if(test_long.length > 0 || test_lat.length > 0) {
						var test_value = array_value[j].indexOf(standard);
						if(test_value > 0) {
							var point = new GLatLng(parseFloat(markers[i].getAttribute("long")), parseFloat(markers[i].getAttribute("lat")));
							var name = markers[i].getAttribute("name");
							var street = markers[i].getAttribute("street");
							var country = markers[i].getAttribute("country");
							var city = markers[i].getAttribute("city");
							var zip_code = markers[i].getAttribute("zip_code");
							var phone = markers[i].getAttribute("phone");
							var fax = markers[i].getAttribute("fax");
							var email = markers[i].getAttribute("email");
							var web = markers[i].getAttribute("web");
							var matos = markers[i].getAttribute("standard");
							var arrayInfos = new Array(name, street, country, city, zip_code, phone, fax, email, web, matos);
							// AJAX CONTENT
							var content = createContentWeb(arrayInfos,'contentWeb');
							// ARRAY MARKER
							var marker = createMarker(point, arrayInfos, 1);
							map.addOverlay(marker);
						}
					}
					// HELP
					document.getElementById("waitingArea").innerHTML = "";
					}
				}
			// BOTH
			} else if(system != 0 && standard != 0) {
				if(system_value != 0) {
					var array_value = system_value.split(" - ");
					var length = array_value.length;
					for(j = 0; j < length; j++) {
						var test_value_system = array_value[j].indexOf(system);
						var test_value_standard = array_value[j].indexOf(standard);
						if(test_value_system == 0 && test_value_standard > 0) {
							var point = new GLatLng(parseFloat(markers[i].getAttribute("long")), parseFloat(markers[i].getAttribute("lat")));
							var name = markers[i].getAttribute("name");
							var street = markers[i].getAttribute("street");
							var country = markers[i].getAttribute("country");
							var city = markers[i].getAttribute("city");
							var zip_code = markers[i].getAttribute("zip_code");
							var phone = markers[i].getAttribute("phone");
							var fax = markers[i].getAttribute("fax");
							var email = markers[i].getAttribute("email");
							var web = markers[i].getAttribute("web");
							var matos = markers[i].getAttribute("standard");
							var arrayInfos = new Array(name, street, country, city, zip_code, phone, fax, email, web, matos);
							// AJAX CONTENT
							var content = createContentWeb(arrayInfos,'contentWeb');
							// ARRAY MARKER
							var marker = createMarker(point, arrayInfos, 1);
							map.addOverlay(marker);
						}
					}
					// HELP
					document.getElementById("waitingArea").innerHTML = "";
				}
			}
		}
	})
	}
	}
}
// SEARCH SYSTEM / STANDARD + LOCATION
function searchLocationNearStandard(searchUrl,type) {
	// START CLEAR CONTENT
	document.getElementById("contentWeb").innerHTML = "";
	// END CLEAR CONTENT
	// HELP
	document.getElementById("waitingArea").innerHTML = waitingAjax;
	// TOOLS MAP
	var map = new GMap2(document.getElementById("map"));
	map.setCenter(new GLatLng(0,0),1);
	map.setMapType(G_NORMAL_MAP);
	map.addControl(new GMapTypeControl());
	map.addControl(new GSmallMapControl());
	map.enableScrollWheelZoom();
	map.clearOverlays();
	// VARS
	var valuePlace = document.getElementById("locationUser").value;
	var valueCountry = document.getElementById("countryUser").value;
	var valueRadius = document.getElementById("valueRadius").value;
	var system = document.getElementById("valueSystem").value;
	var standard = document.getElementById("valueStandard").value;
	if(valueRadius != 0 && valuePlace != 0 && valueCountry == 0) {
		// SEARCH DECODER + CIRCLE
		var geocoder = new GClientGeocoder();
		geocoder.getLatLng(valuePlace, function(point) {
				if(valueRadius == 50 || valueRadius == 100) {
					coeffZoom = 7;
				} else if(valueRadius == 250) {
					coeffZoom = 6;
				} else if(valueRadius == 500) {
					coeffZoom = 5;
				} else if(valueRadius == 1000) {
					coeffZoom = 4;
				} else if(valueRadius == 1500) {
					coeffZoom = 3;	
				} else if(valueRadius > 1500) {
					coeffZoom = 2;	
				} else {
					coeffZoom = 1;	
				}
			map.setCenter(point,coeffZoom);
			// ADD SEARCH POINT
			var marker = new GMarker(point,myIconSearch);
			map.addOverlay(marker);
			// FIX CIRCLE
			var pointsCercle = new Array();
			var step = parseInt(360/segment)||10;
			var centre = map.getCenter();
			var centreLat = centre.lat();
			var centreLng = centre.lng();
			var latConv = centre.distanceFrom(new google.maps.LatLng(centre.lat()+0.1, centre.lng()))/100;
			var lngConv = centre.distanceFrom(new google.maps.LatLng(centre.lat(), centre.lng()+0.1))/100;
				for(var i=0; i<=360; i+=step) {
					var calculLat = centreLat + (valueRadius/latConv * Math.cos(i * Math.PI/180));
					var calculLng = centreLng + (valueRadius/lngConv * Math.sin(i * Math.PI/180));
					var pint = new GLatLng(calculLat,calculLng);
					pointsCercle.push(pint);
				}
			polygoneCercle = new GPolygon(pointsCercle, cercleCouleur, cercleEpaisseur, cercleOpacite, disqueCouleur, disqueOpacite);
			map.addOverlay(polygoneCercle);
			// DETERMINE PTS
			GDownloadUrl(searchUrl, function(data) {
			var xml = GXml.parse(data);
			var markers = xml.documentElement.getElementsByTagName('marker');
			for (i = 0; i < markers.length; i++) {
				var test_long = markers[i].getAttribute("long");
				var test_lat =  markers[i].getAttribute("lat");
				if(test_long.length > 0 || test_lat.length > 0) {
				var lat = markers[i].getAttribute("long");
				var long = markers[i].getAttribute("lat");
				startPoint = new LatLong(centreLat, centreLng);
				endPoint = new LatLong(lat,long);
				var dist = LatLong.distHaversine(startPoint, endPoint);
				var system_value = markers[i].getAttribute("standard");
				if(dist <= valueRadius) {
					// ONLY SYSTEM
					if(system != 0 && standard == 0) {
						if(system_value != 0) {
							var array_value = system_value.split(" - ");
							var length = array_value.length;
							for(j = 0; j < length; j++) {
								var test_value = array_value[j].indexOf(system);
								if(test_value == 0) {
									var point = new GLatLng(parseFloat(markers[i].getAttribute("long")), parseFloat(markers[i].getAttribute("lat")));
									var name = markers[i].getAttribute("name");
									var street = markers[i].getAttribute("street");
									var country = markers[i].getAttribute("country");
									var city = markers[i].getAttribute("city");
									var zip_code = markers[i].getAttribute("zip_code");
									var phone = markers[i].getAttribute("phone");
									var fax = markers[i].getAttribute("fax");
									var email = markers[i].getAttribute("email");
									var web = markers[i].getAttribute("web");
									var matos = markers[i].getAttribute("standard");
									var arrayInfos = new Array(name, street, country, city, zip_code, phone, fax, email, web, matos);
									// AJAX CONTENT
									var content = createContentWeb(arrayInfos,'contentWeb');
									// ARRAY MARKER
									var marker = createMarker(point, arrayInfos, 1);
									map.addOverlay(marker);
								}
							}
							// HELP
							document.getElementById("waitingArea").innerHTML = "";
						}	
					// ONLY STANDARD
					} else if(system == 0 && standard != 0) {
						if(system_value != 0) {
							var array_value = system_value.split(" - ");
							var length = array_value.length;
							for(j = 0; j < length; j++) {
								var test_value = array_value[j].indexOf(standard);
								if(test_value > 0) {
									var point = new GLatLng(parseFloat(markers[i].getAttribute("long")), parseFloat(markers[i].getAttribute("lat")));
									var name = markers[i].getAttribute("name");
									var street = markers[i].getAttribute("street");
									var country = markers[i].getAttribute("country");
									var city = markers[i].getAttribute("city");
									var zip_code = markers[i].getAttribute("zip_code");
									var phone = markers[i].getAttribute("phone");
									var fax = markers[i].getAttribute("fax");
									var email = markers[i].getAttribute("email");
									var web = markers[i].getAttribute("web");
									var matos = markers[i].getAttribute("standard");
									var arrayInfos = new Array(name, street, country, city, zip_code, phone, fax, email, web, matos);
									// AJAX CONTENT
									var content = createContentWeb(arrayInfos,'contentWeb');
									// ARRAY MARKER
									var marker = createMarker(point, arrayInfos, 1);
									map.addOverlay(marker);
								}
							}
							// HELP
							document.getElementById("waitingArea").innerHTML = "";
						}
					// BOTH
					} else if(system != 0 && standard != 0) {
						if(system_value != 0) {
							var array_value = system_value.split(" - ");
							var length = array_value.length;
							for(j = 0; j < length; j++) {
								var test_value_system = array_value[j].indexOf(system);
								var test_value_standard = array_value[j].indexOf(standard);
								if(test_value_system == 0 && test_value_standard > 0) {
									var point = new GLatLng(parseFloat(markers[i].getAttribute("long")), parseFloat(markers[i].getAttribute("lat")));
									var name = markers[i].getAttribute("name");
									var street = markers[i].getAttribute("street");
									var country = markers[i].getAttribute("country");
									var city = markers[i].getAttribute("city");
									var zip_code = markers[i].getAttribute("zip_code");
									var phone = markers[i].getAttribute("phone");
									var fax = markers[i].getAttribute("fax");
									var email = markers[i].getAttribute("email");
									var web = markers[i].getAttribute("web");
									var matos = markers[i].getAttribute("standard");
									var arrayInfos = new Array(name, street, country, city, zip_code, phone, fax, email, web, matos);
									// AJAX CONTENT
									var content = createContentWeb(arrayInfos,'contentWeb');
									// ARRAY MARKER
									var marker = createMarker(point, arrayInfos, 1);
									map.addOverlay(marker);
								}
							}
							// HELP
							document.getElementById("waitingArea").innerHTML = "";
						}
					}
					}
				}
			}
		})
		});
	} else if(valueCountry != 0) {
		// SEARCH DECODER + CIRCLE
		var geocoder = new GClientGeocoder();
		geocoder.getLatLng(valueCountry, function(point) {
			map.setCenter(point,3);
			// DETERMINE PTS
			GDownloadUrl(searchUrl, function(data) {
			var xml = GXml.parse(data);
			var markers = xml.documentElement.getElementsByTagName('marker');
			for (i = 0; i < markers.length; i++) {
					var test_long = markers[i].getAttribute("long");
					var test_lat =  markers[i].getAttribute("lat");
					if(test_long.length > 0 || test_lat.length > 0) {
					var recup_country = markers[i].getAttribute("country");
					var system_value = markers[i].getAttribute("standard");
					var test_country = new RegExp(valueCountry,"i");
					if(recup_country.match(test_country)) {
					// ONLY SYSTEM
					if(system != 0 && standard == 0) {
						if(system_value != 0) {
							var array_value = system_value.split(" - ");
							var length = array_value.length;
							for(j = 0; j < length; j++) {
								var test_value = array_value[j].indexOf(system);
								if(test_value == 0) {
									var point = new GLatLng(parseFloat(markers[i].getAttribute("long")), parseFloat(markers[i].getAttribute("lat")));
									var name = markers[i].getAttribute("name");
									var street = markers[i].getAttribute("street");
									var country = markers[i].getAttribute("country");
									var city = markers[i].getAttribute("city");
									var zip_code = markers[i].getAttribute("zip_code");
									var phone = markers[i].getAttribute("phone");
									var fax = markers[i].getAttribute("fax");
									var email = markers[i].getAttribute("email");
									var web = markers[i].getAttribute("web");
									var matos = markers[i].getAttribute("standard");
									var arrayInfos = new Array(name, street, country, city, zip_code, phone, fax, email, web, matos);
									// AJAX CONTENT
									var content = createContentWeb(arrayInfos,'contentWeb');
									// ARRAY MARKER
									var marker = createMarker(point, arrayInfos, 1);
									map.addOverlay(marker);
								}
							}
							// HELP
							document.getElementById("waitingArea").innerHTML = "";
						}	
					// ONLY STANDARD
					} else if(system == 0 && standard != 0) {
						if(system_value != 0) {
							var array_value = system_value.split(" - ");
							var length = array_value.length;
							for(j = 0; j < length; j++) {
								var test_value = array_value[j].indexOf(standard);
								if(test_value > 0) {
									var point = new GLatLng(parseFloat(markers[i].getAttribute("long")), parseFloat(markers[i].getAttribute("lat")));
									var name = markers[i].getAttribute("name");
									var street = markers[i].getAttribute("street");
									var country = markers[i].getAttribute("country");
									var city = markers[i].getAttribute("city");
									var zip_code = markers[i].getAttribute("zip_code");
									var phone = markers[i].getAttribute("phone");
									var fax = markers[i].getAttribute("fax");
									var email = markers[i].getAttribute("email");
									var web = markers[i].getAttribute("web");
									var matos = markers[i].getAttribute("standard");
									var arrayInfos = new Array(name, street, country, city, zip_code, phone, fax, email, web, matos);
									// AJAX CONTENT
									var content = createContentWeb(arrayInfos,'contentWeb');
									// ARRAY MARKER
									var marker = createMarker(point, arrayInfos, 1);
									map.addOverlay(marker);
								}
							}
							// HELP
							document.getElementById("waitingArea").innerHTML = "";
						}
					// BOTH
					} else if(system != 0 && standard != 0) {
						if(system_value != 0) {
							var array_value = system_value.split(" - ");
							var length = array_value.length;
							for(j = 0; j < length; j++) {
								var test_value_system = array_value[j].indexOf(system);
								var test_value_standard = array_value[j].indexOf(standard);
								if(test_value_system == 0 && test_value_standard > 0) {
									var point = new GLatLng(parseFloat(markers[i].getAttribute("long")), parseFloat(markers[i].getAttribute("lat")));
									var name = markers[i].getAttribute("name");
									var street = markers[i].getAttribute("street");
									var country = markers[i].getAttribute("country");
									var city = markers[i].getAttribute("city");
									var zip_code = markers[i].getAttribute("zip_code");
									var phone = markers[i].getAttribute("phone");
									var fax = markers[i].getAttribute("fax");
									var email = markers[i].getAttribute("email");
									var web = markers[i].getAttribute("web");
									var matos = markers[i].getAttribute("standard");
									var arrayInfos = new Array(name, street, country, city, zip_code, phone, fax, email, web, matos);
									// AJAX CONTENT
									var content = createContentWeb(arrayInfos,'contentWeb');
									// ARRAY MARKER
									var marker = createMarker(point, arrayInfos, 1);
									map.addOverlay(marker);
								}
							}
							// HELP
							document.getElementById("waitingArea").innerHTML = "";
						}
					}
					}
				}
			}
		})
		});
	} else {
		document.getElementById("zoneNoWords").style.display = "block";	
		init(searchUrl,1);
	}
}
// SEARCH COMPANY NAME
function searchCompany(searchUrl,type) {
	// START CLEAR CONTENT
	document.getElementById("contentWeb").innerHTML = "";
	// END CLEAR CONTENT
	var companyName = document.getElementById('companyName').value;
	if(companyName != '') {
		var map = new GMap2(document.getElementById("map"));
		map.setCenter(new GLatLng(0,0),1);
		map.setMapType(G_NORMAL_MAP);
		map.addControl(new GMapTypeControl());
		map.addControl(new GSmallMapControl());
		map.enableScrollWheelZoom();
		map.clearOverlays();
		// DETERMINE PTS
		GDownloadUrl(searchUrl, function(data) {
			var xml = GXml.parse(data);
			companyName = companyName.toUpperCase();
			var markers = xml.documentElement.getElementsByTagName('marker');
			for (i = 0; i < markers.length; i++) {
				var test_long = markers[i].getAttribute("long");
				var test_lat =  markers[i].getAttribute("lat");
				if(test_long.length > 0 || test_lat.length > 0) {
				var name = markers[i].getAttribute("name");
				var test_search = new RegExp(companyName,"i");
				if(name.match(test_search)) {
					var point = new GLatLng(parseFloat(markers[i].getAttribute("long")), parseFloat(markers[i].getAttribute("lat")));
					var street = markers[i].getAttribute("street");
					var country = markers[i].getAttribute("country");
					var city = markers[i].getAttribute("city");
					var zip_code = markers[i].getAttribute("zip_code");
					var phone = markers[i].getAttribute("phone");
					var fax = markers[i].getAttribute("fax");
					var email = markers[i].getAttribute("email");
					var web = markers[i].getAttribute("web");
					var matos = markers[i].getAttribute("standard");
					var arrayInfos = new Array(name, street, country, city, zip_code, phone, fax, email, web, matos);
					// AJAX CONTENT
					var content = createContentWeb(arrayInfos,'contentWeb');
					// ARRAY MARKER
					var marker = createMarker(point, arrayInfos, 1);
					map.addOverlay(marker);
				}
				}
			}
		})
	}
}
// SEARCH COUNTRY
function searchCountry(searchUrl,type) {
	// START CLEAR CONTENT
	document.getElementById("contentWeb").innerHTML = "";
	// END CLEAR CONTENT
	var countryName = document.getElementById('countryUser').value;
	var system = document.getElementById("valueSystem").value;
	var standard = document.getElementById("valueStandard").value;
		if(countryName != 0) {
			if(standard != 0 || system != 0) {
				searchSysStand(searchUrl);
			} else {
			var map = new GMap2(document.getElementById("map"));
			map.setCenter(new GLatLng(0,0),1);
			map.setMapType(G_NORMAL_MAP);
			map.addControl(new GMapTypeControl());
			map.addControl(new GSmallMapControl());
			map.enableScrollWheelZoom();
			map.clearOverlays();
			// SEARCH DECODER
			var geocoder = new GClientGeocoder();
			geocoder.getLatLng(countryName, function(point) {
				map.setCenter(point,3);
			});
			// DETERMINE PTS
			GDownloadUrl(searchUrl, function(data) {
				var xml = GXml.parse(data);
				countryName = countryName.toUpperCase();
				var markers = xml.documentElement.getElementsByTagName('marker');
				for (i = 0; i < markers.length; i++) {
					var test_long = markers[i].getAttribute("long");
					var test_lat =  markers[i].getAttribute("lat");
					if(test_long.length > 0 || test_lat.length > 0) {
					var name = markers[i].getAttribute("country");
					if(countryName == 'UK') {
					var test_search = 'UK';	
					} else {
					var test_search = new RegExp(countryName,"i");	
					}
					var test_search = new RegExp(countryName,"i");
					if(name.match(test_search)) {
						var point = new GLatLng(parseFloat(markers[i].getAttribute("long")), parseFloat(markers[i].getAttribute("lat")));
						var name = markers[i].getAttribute("name");
						var street = markers[i].getAttribute("street");
						var country = markers[i].getAttribute("country");
						var city = markers[i].getAttribute("city");
						var zip_code = markers[i].getAttribute("zip_code");
						var phone = markers[i].getAttribute("phone");
						var fax = markers[i].getAttribute("fax");
						var email = markers[i].getAttribute("email");
						var web = markers[i].getAttribute("web");
						var matos = markers[i].getAttribute("standard");
						var arrayInfos = new Array(name, street, country, city, zip_code, phone, fax, email, web, matos);
						// AJAX CONTENT
						var content = createContentWeb(arrayInfos,'contentWeb');
						// ARRAY MARKER
						var marker = createMarker(point, arrayInfos, 1);
						map.addOverlay(marker);
					}
					}
				}
			})
		}
	} else {
		init(searchUrl,type);	
	}
}
// FIX SUB COUNTRY
function subCountry(point) {
	var marker_sub = new GMarker(point, markerOptionSub);
}
// FIX MARKER + POPUP INFOS
function createMarker (point, arrayInfos,type) {
	var marker = new GMarker(point, markerOptions);
	if(type == 0) {
		// HTML POPUP
		var end_html = '<div class="nameCompany"><div align="center"><img src="../admin/distributor_img/'+arrayInfos[9]+'" /></div><p><b>' + arrayInfos[0] + '</b></p>';
		if(arrayInfos[2] != null) {
			end_html += '<p>Geographical area: '+arrayInfos[2]+'</p>';	
		}
		if(arrayInfos[3] != null) {
			end_html += '<p>City: '+arrayInfos[3]+'</p>';	
		}
		if(arrayInfos[8] != null) {
			end_html += '<p>Contact name: '+arrayInfos[8]+'</p>';	
		}
		if(arrayInfos[1] != null) {
			end_html += '<p>Adress: '+arrayInfos[1]+'</p>';	
		}
		if(arrayInfos[4] != null) {
			end_html += '<p>Zip code: '+arrayInfos[4]+'</p>';	
		}
		if(arrayInfos[5] != null) {
			end_html += '<p>Phone: '+arrayInfos[5]+'</p>';	
		}
		if(arrayInfos[6] != null) {
			end_html += '<p>Fax: '+arrayInfos[6]+'</p>';	
		}
		if(arrayInfos[7] != null) {
			end_html += '<p>Email: <a href="mailto:'+arrayInfos[7]+'">'+arrayInfos[7]+'</a></p>';	
		}
		if(arrayInfos[10] != null) {
			end_html += '<p>Web: <a href="http://'+arrayInfos[10]+'">'+arrayInfos[10]+'</a></p>';
		}
		end_html += '</div>';	
	} else {
		// HTML POPUP
		var html = '<div class="nameCompany"><p><b>' + arrayInfos[0] + '</b></p>';
			html += '<p>Country: '+arrayInfos[2]+'</p>';
			html += '<p>City: '+arrayInfos[3]+'</p>';
		if(arrayInfos[1] != null) {
			//html += '<p>Adress: '+arrayInfos[1]+'</p>';	
		}
		if(arrayInfos[4] != null) {
			//html += '<p>Zip code: '+arrayInfos[4]+'</p>';	
		}
		if(arrayInfos[5] != null) {
			//html += '<p>Phone: '+arrayInfos[5]+'</p>';	
		}
		if(arrayInfos[6] != null) {
			//html += '<p>Fax: '+arrayInfos[6]+'</p>';	
		}
		if(arrayInfos[7] != null) {
			html += '<p>Email: <a href="mailto:'+arrayInfos[7]+'">'+arrayInfos[7]+'</a></p>';	
		}
		if(arrayInfos[8] != null) {
			html += '<p>Web: <a href="http://'+arrayInfos[8]+'">'+arrayInfos[8]+'</a></p>';	
		}
		if(arrayInfos[9] != null) {
			html += '<br />';
			var matos_replace = arrayInfos[9];
			matos_replace = matos_replace.replace(/ - /gi,"<br />");
			matos_replace = matos_replace.replace(/SYSTEM/gi,"");
			matos_replace = matos_replace.replace(/STANDARD/gi,"standard");
			matos_replace = matos_replace.replace(/DV-DOSC/gi,"dV-DOSC");
			var explode_matos = '<p>'+matos_replace+'</p>';
			var end_html = html+explode_matos+'</div>';
		} else {
			var end_html = html+'</div>';	
		}
	}
	// POPUP ON CLICK
	GEvent.addListener(marker, 'click', function() {
		marker.openInfoWindowHtml(end_html);
	});
	return marker;
}
// CREATE CONTENT WEB
function createContentWeb(arrayInfos,id) {
	document.getElementById("waitingArea").innerHTML = waitingAjax;
	var html = document.getElementById(id).innerHTML;
		html += '<div class="searchWebContent">';
			html += '<p><b>' + arrayInfos[0] + '</b></p>';
			html += '<p>Country: '+arrayInfos[2]+'</p>';
			html += '<p>City: '+arrayInfos[3]+'</p>';
			if(arrayInfos[7] != null) {
				html += '<p>Email: <a href="mailto:'+arrayInfos[7]+'">'+arrayInfos[7]+'</a></p>';	
			}
			if(arrayInfos[8] != null) {
				html += '<p>Web: <a href="http://'+arrayInfos[8]+'">'+arrayInfos[8]+'</a></p>';	
			}
			if(arrayInfos[9] != null) {
				var matos_replace = arrayInfos[9];
				matos_replace = matos_replace.replace(/ - /gi,"<br />");
				matos_replace = matos_replace.replace(/SYSTEM/gi,"");
				matos_replace = matos_replace.replace(/STANDARD/gi,"standard");
				matos_replace = matos_replace.replace(/DV-DOSC/gi,"dV-DOSC");
			html += '<p>'+matos_replace+'</p>';	
			}
	html += '</div>';	
	html += '<div class="clear">&nbsp;</div>';
	document.getElementById(id).innerHTML = html;
	document.getElementById(id).style.display = "block";
	document.getElementById("waitingArea").innerHTML = "";
}
// DISTANCE BETWEEN 2 PTS
function LatLong(degLat, degLong) {
	this.lat = LatLong.llToRad(degLat);
	this.lon = LatLong.llToRad(degLong);
}    
LatLong.llToRad = function(brng) {
	if (!isNaN(brng)) return brng * Math.PI / 180; 
	brng = brng.replace(/[\s]*$/,'');               
	var dir = brng.slice(-1).toUpperCase();         
	if (!/[NSEW]/.test(dir)) return NaN;           
	brng = brng.slice(0,-1);                       
	var dms = brng.split(/[\s:,Â°Âºâ€²\'â€³\"]/);         
	switch (dms.length) {                           
	case 3:                                       
	 var deg = dms[0]/1 + dms[1]/60 + dms[2]/3600; break;
	case 2:                                       
	 var deg = dms[0]/1 + dms[1]/60; break;
	case 1:                                       
	 if (/[NS]/.test(dir)) brng = '0' + brng;   
	 var deg = brng.slice(0,3)/1 + brng.slice(3,5)/60 + brng.slice(5)/3600; break;
	default: return NaN;
	}
	if (/[WS]/.test(dir)) deg = -deg;               
	return deg * Math.PI / 180;                     
}
LatLong.distHaversine = function(p1, p2) {
	var R = 6371;
	var dLat  = p2.lat - p1.lat;
	var dLong = p2.lon - p1.lon;
	var a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(p1.lat) * Math.cos(p2.lat) * Math.sin(dLong/2) * Math.sin(dLong/2);
	var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
	var d = R * c;
	return d;
}
/* FUNCTION BLUR & ON FOCUS */
function getBlur(field,txt) {
	if(document.getElementById(field).value == '') {
		document.getElementById(field).value = txt;	
	}
}
function getFocus(field) {
	document.getElementById(field).value = '';
}

