
if (typeof(icon_path) == 'undefined') var icon_path = '';
if (typeof(icon) == 'undefined') icon = '';
if (typeof(icons) == 'undefined') icons = new Array();

var no_marker_js = '';
var gm_err_val = '';
var geocoder = null;

var lat = [];
var lng = [];
var CarteItineraire;
var gdir;

function BackToMap() {
	var Carte = document.getElementById("show_map").style;
	Carte.display = '';
	var Trajet = document.getElementById("show_travel").style;
	Trajet.display = 'none';
}

function setDirections(direction, num_marqueur) {
	var Carte = document.getElementById("show_map").style;
	Carte.display = 'none';
	var Trajet = document.getElementById("show_travel").style;
	Trajet.display = '';
	markers[num_marqueur].closeInfoWindow();

	if (direction == '0')
		{
		startpoint = points[num_marqueur];
		endpoint = points[target];
		}
	else
		{
		startpoint = points[target];
		endpoint = points[num_marqueur];
		}

	if(gdir){gdir.clear();}
	gdir = null;
	CarteItineraire = new GMap2(document.getElementById("EmplacementCarteItineraire"));
	CarteItineraire.addControl(new GMapTypeControl());
	CarteItineraire.addControl(new GLargeMapControl());
	CarteItineraire.addControl(new GScaleControl());
	CarteItineraire.addControl(new GOverviewMapControl());
	gdir = new GDirections(CarteItineraire, document.getElementById("EmplacementTexteItineraire"));	GEvent.addListener(gdir, "error", EnCasdErreur);
	gdir.loadFromWaypoints([startpoint,endpoint]);
}

function EnCasdErreur()
{
if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
	alert('Aucun endroit géographique ne correspond. Code d\'erreur : ' + gdir.getStatus().code);
else
	alert('Une erreur inconnue s\'est produite. : '+gdir.getStatus().code);
}

function go(num){

	document.getElementById("message").innerHTML ='';
	document.getElementById("message").style.display='none';
	map.addControl(new GLargeMapControl());
	map.addControl(new GOverviewMapControl());
	map.addControl(new GScaleControl());

	micon                  = new GIcon();
	micon.image            = icon_path+'/'+icon;
	micon.imageSize        = new GPoint(icons[icon]['width'], icons[icon]['height']);
	micon.iconAnchor       = new GPoint(9, icons[icon]['height']);
	micon.infoWindowAnchor = new GPoint(9, 2);

	var point = new GLatLng(lat[num], lng[num]);
	marker = new GMarker(point, {draggable : true, icon : micon});
	GEvent.addListener(marker, 'dragstart', function() {
		map.closeInfoWindow();
		});
	GEvent.addListener(marker, 'dragend', function(point) {
		AfficheGPS(marker);
		});
	map.clearOverlays();
	map.addOverlay(marker);
	AfficheGPS(marker);
	map.setCenter(point, 15);
}

function AfficheGPS(marker){
	my_getbyid('my_marker').value = icon;

	var center = marker.getPoint();
	var gpscenter = center.toString();
	var TableauPositionMaxiCarte = gpscenter.split(',');
	var LatitudeCarteClick='';
	var LongitudeCarteClick='';
	var LatitudeCarteClick = TableauPositionMaxiCarte[0].replace('(', '');
	var LongitudeCarteClick = TableauPositionMaxiCarte[1].replace(')', '');
	document.getElementById('my_lat').value = LatitudeCarteClick;
	document.getElementById('my_lng').value = LongitudeCarteClick;
	window.setTimeout(function(){map.panTo(new GLatLng(LatitudeCarteClick, LongitudeCarteClick));}, 1000);
}

function AfficherAdresse(addresse)
{
if (geocoder && (addresse != ''))
	{
    geocoder.getLocations(addresse, function (result)
		{
		if (result.Status.code == G_GEO_SUCCESS)
			{
			document.getElementById("message").innerHTML ='';
			document.getElementById("message").style.display='';
			if(result.Placemark.length > 1)
				{
				// Loop through the results, placing markers
				for (var i=0; i<result.Placemark.length; i++)
					{
					lat[i]=result.Placemark[i].Point.coordinates[1];
					lng[i]=result.Placemark[i].Point.coordinates[0];

					ville = '';
					region = '';
					departement = '';
					html = '';
					lien = '';

					// département et région ?
					if (typeof(result.Placemark[i].AddressDetails.Country.AdministrativeArea) != 'undefined')
						{
						// département ?
						if (typeof(result.Placemark[i].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea) != 'undefined')
								departement = result.Placemark[i].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName;

						// région ?
						if (typeof(result.Placemark[i].AddressDetails.Country.AdministrativeArea.AdministrativeAreaName) != 'undefined')
								region = result.Placemark[i].AddressDetails.Country.AdministrativeArea.AdministrativeAreaName;
						// ville ?
						if (typeof(result.Placemark[i].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName) != 'undefined')
							ville = result.Placemark[i].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName;
						}
					else
						ville = result.Placemark[i].address;

					if ((departement != '') && (region != ''))
						lien = ville + ", " + departement + ", " + region;
					else
						lien = ville;

					html = "<img src='"+ipb_var_image_url+"/menu_item.gif' border='0' />&nbsp;" + lien;
					document.getElementById("message").innerHTML +="<a href=javascript:go("+i+")>"+html+"</a><br>";
					}
				}
			else
				{
				lat[0]=result.Placemark[0].Point.coordinates[1];
				lng[0]=result.Placemark[0].Point.coordinates[0];
				go(0);
				}
			}
		else
			display_error(gm_err_adr);
		});
	}
}

function display_error(message)
{
document.getElementById('error').style.display = '';
document.getElementById('error').innerHTML = "<img src='skin_acp/IPB2_Standard/images/aff_cross.png' border='0' alt='' title=''/>&nbsp;" + message;
}

function hide_error()
{
document.getElementById('error').style.display = 'none';
}

function set_marker()
{
my_lat = document.forms['set_prefs'].my_lat.value
my_lng = document.forms['set_prefs'].my_lng.value

if (my_lat == '' && my_lng == '')
	{
	display_error(gm_err_val);
	return;
	}

if (!isNaN(my_lat) && !isNaN(my_lng))
	{
	hide_error();
	lat[0]=my_lat;
	lng[0]=my_lng;
	go(0);
	}
else
	{
	display_error(gm_err_val);
	}
}

function toggle_info()
{
if (document.getElementById('info').style.display == 'none')
	document.getElementById('info').style.display = '';
else
	document.getElementById('info').style.display = 'none';
}

function load_icons(a)
{
	try
	{
		for (var x in a)
		{
			icons[x] = a[x];
		}
	}

	catch(me){}
}

/** Contrôle de la présence ou non du marqueur pour valider le formulaire
 *
 * @access public
 * @return void
 **/
function ValiderMarker(formulaire){
var my_lat;
var my_lng;

// Le marqueur a été trouvé et positionné ?
if (typeof(marker) != 'undefined')
  {
  my_lat = document.getElementById('my_lat');
  my_lng = document.getElementById('my_lng');
  
  if ((my_lat.value == 0) || ((my_lat.value == 0) && (my_lng.value == 0)) || isNaN(my_lat.value) || isNaN(my_lng.value))
     {
     alert(gm_err_val);
     return false;
     }
  else
     {
     formulaire.submit();
     return true;
     }
  }
else
  {
  alert(no_marker_js);
  return false;
  }
}

function select_icon(i)
	{
		if (i.toLowerCase() == 'shadow')
		{
			return false;
		}

		menu_action_close();
icon = i;

		my_getbyid('my_icon').src = icon_path+'/'+i;

		my_getbyid('my_marker').value = icon;

micon                  = new GIcon();
micon.image            = icon_path+'/'+icon;
micon.imageSize        = new GPoint(icons[icon]['width'], icons[icon]['height']);
micon.iconAnchor       = new GPoint(9, icons[icon]['height']);
micon.infoWindowAnchor = new GPoint(9, 2);


if (typeof(marker) != 'undefined') {
marker.setImage(icon_path+'/'+icon);
}

	}

