var msie=(window.ActiveXObject) ? true: false;
var map="";
var directionsPanel;
var directions;
var deg=0;
var showcoor=1;
var lnk='';
var flagmesa=0;
var fav=new Array();
var cptfav=0;
var expire = new Date();
var unAn = expire.getTime() + (365*24*60*60*1000);
expire.setTime(unAn);
var divCible='';
var nDelay=true;
function wheelZoom(a)
{
	if (a.detail){
		if (a.detail < 0)map.zoomOut();
		else if (a.detail > 0) map.zoomIn();
	}
	else if (a.wheelDelta) 	{
		if (a.wheelDelta > 0)map.zoomOut();
		else if (a.wheelDelta < 0)map.zoomIn();
	}
} 
function loadmap(){
	document.getElementById('closex').onmousedown=MoveDiv;
	document.getElementById('closex').onmouseup=StopMove;
	document.getElementById('closenew').onmousedown=MoveDiv;
	document.getElementById('closenew').onmouseup=StopMove;
	getCookie();
	//document.getElementById('h1').style.display='none';
	document.getElementById('map').style.height=(document.getElementById('body').clientHeight-28)+'px';
	if (GBrowserIsCompatible()) 
	{
		map = new GMap2(document.getElementById("map"));
		map.addMapType(G_PHYSICAL_MAP);
		map.enableContinuousZoom();
		map.enableDoubleClickZoom();
		map.setCenter(new GLatLng(lat,lon), zoom);
		if(mt)map.setMapType(mt);
		map.addControl(new GMapTypeControl());
		map.addControl(new GLargeMapControl());
		map.addControl(new GScaleControl());
		map.addControl(new GOverviewMapControl());
		gdir = new GDirections(map, document.getElementById("txtiti"));
		//directions = new GDirections(map, directionsPanel);
		if(showdelay)showInfoDelay();
		if(nDelay)newdelay();
		if(iLat)
		{
			var icon = new GIcon();
			icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
			icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
			icon.iconSize = new GSize(12, 20);
			icon.shadowSize = new GSize(22, 20);
			icon.iconAnchor = new GPoint(6, 20);
			icon.infoWindowAnchor = new GPoint(5, 1);		
			var point = new GLatLng(iLat,iLon);
			map.addOverlay(new GMarker(point, icon));
		}
		/*if(cicon){
			c_center=map.getCenter();
			var c_icon = new GIcon();
			c_icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
			c_icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
			c_icon.iconSize = new GSize(12, 20);
			c_icon.shadowSize = new GSize(22, 20);
			c_icon.iconAnchor = new GPoint(6, 20);
			c_icon.infoWindowAnchor = new GPoint(5, 1);		
			var point = new GLatLng(c_center.lat(),c_center.lng());
			map.addOverlay(new GMarker(point, c_icon));
		
		}*/
		GEvent.addListener
		(
			map, "click", 
			function(marker, point) 
			{
	 			 if (marker) map.clearOverlays();	 			 
	 		}
	 	);
	 	GEvent.addListener
		(
			map, "mousemove", 
			function(latlon) 
			{
	 			if(showcoor){
		 			var level=7;	 			
		 			var formLat=latlon.lat();
		 			formLat=formLat.toFixed(level);
		 			var formLon=latlon.lng();
		 			formLon=formLon.toFixed(level);
		 		 	document.getElementById('cLat').innerHTML=dec2dms(formLat,'latitude',map.getZoom(),1);
		 			document.getElementById('cLon').innerHTML=dec2dms(formLon,'longitude',map.getZoom(),0);
		 		}
	 		}
	 	);
	 	//GEvent.addListener(gdir, "load", onGDirectionsLoad);
		GEvent.addListener(gdir, "error", handleErrors);
	 	//GEvent.addDomListener(document.getElementById("map"), "DOMMouseScroll",wheelZoom);
	 	//GEvent.addDomListener(document.getElementById("map"), "mousewheel",  wheelZoom);
	 	map.enableScrollWheelZoom();
	 	function ShareMapControl() {
		}
		ShareMapControl.prototype = new GControl();
		ShareMapControl.prototype.initialize = function(map) {
		var container = document.createElement("div");		
		var zoomInDiv = document.createElement("div");
		this.setButtonStyle_(zoomInDiv);
		container.appendChild(zoomInDiv);
		zoomInDiv.appendChild(document.createTextNode("partager cette carte"));
		GEvent.addDomListener(zoomInDiv, "click", function() {
			if( (map.getCurrentMapType().getUrlArg()=="k") || (map.getCurrentMapType().getUrlArg()=="h") )showShare();
			else alert("vous ne pouvez partager que des cartes satellite ou mixte");
		});		
		map.getContainer().appendChild(container);
			return container;
		}
		ShareMapControl.prototype.getDefaultPosition = function() {
			return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize( 7 , 30 ));
		}
		ShareMapControl.prototype.setButtonStyle_ = function(button) {
			button.style.textDecoration = "none";
			button.style.color = "#000";
			button.style.backgroundColor = "#fff";
			button.style.font = "normal 12px arial";
			button.style.border = "1px solid #000";
			button.style.padding = "1px";
			button.style.marginBottom = "3px";
			button.style.textAlign = "center";
			button.style.width = "125px";
			button.style.cursor = "pointer";
		}

	 	map.addControl(new ShareMapControl());
	 	
	 	
	 }
}function setDirections(fromAddress, toAddress, locale,p1,p2) {
	/*if(msie){
		if(confirm("cette fonctionnalité n'est actuellement \npas disponible avec \ninternet explorer \nveuillez utilisez un autre navigateur \ntel que firefox par ex, \ndesirez vous télécharger \ngratuitement firefox?"))document.location.href='http://map.jg-laurent.com/telecharger-firefox.php';
		return false;
	}*/
	if(!p1)p1="fr";
	if(!p2)p2="fr";
	//gdir.load("from: " + fromAddress + ","+p1+" to: " + toAddress +","+p2,{ "locale": locale });
	gdir.load("from: " + fromAddress +" to: " + toAddress ,{ "locale": locale });
	document.getElementById('iti').style.display='inline';
	document.getElementById('txtiti').style.display='inline';
}
function handleErrors(){
	div=document.getElementById('txtiti');
	if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
	div.innerHTML="l'adresse n'as pas put etre trouvée<br>verifiez la, ou ajoutez le pays, par ex fr pour france, be pour la belgique, it pour l'italie, etc";
	else if (gdir.getStatus().code == G_GEO_SERVER_ERROR)
	div.innerHTML="une erreur s'est produite<br> veuillez recommencer plus tard";
	
	else if (gdir.getStatus().code == G_GEO_MISSING_QUERY)
	div.innerHTML="The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.\n Error code: " + gdir.getStatus().code;
	
	else if (gdir.getStatus().code == G_GEO_BAD_KEY)
	div.innerHTML="The given key is either invalid or does not match the domain for which it was given. \n Error code: " + gdir.getStatus().code;
	
	else if (gdir.getStatus().code == G_GEO_BAD_REQUEST)
	div.innerHTML="A directions request could not be successfully parsed.\n Error code: " + gdir.getStatus().code;
	
	else div.innerHTML="An unknown error occurred.";

}
function dec2dms(l,str,z,t) {
	d = Math.floor(l);
	if(t)(d>0)?pc="Nord":pc="Sud";
	else (d>0)?pc="Est":pc="Ouest";	
	p = (l - d) * 60;
	m = Math.floor(p);
	if (m<10)m='0'+m;
	s = Math.round((p - m) * 60);
	if(z>14)
	{
		s=(p-m)*60;
		s=s.toFixed(1);
	}
	d=Math.abs(d);
	if(s<10)s='0'+s;
	formedString=str+' : '+pc+" "+d+'° '+m+"\' "+s+'"';
	if(deg)formedString=str+' : '+l;
	return formedString;
}
function cdeg(){
	if(deg){
		deg=0;
		document.getElementById('deg').innerHTML='coordonnée : degrés decimaux';
	}
	else{
		deg=1;
		document.getElementById('deg').innerHTML='coordonnée : degrés minute seconde';
	}
}
function showCoor(){
	if(showcoor){
		showcoor=0;
		document.getElementById('showcoor').innerHTML="activer l'affichage des coordonnées";
	}
	else{
		showcoor=1;
		document.getElementById('showcoor').innerHTML="desactiver l'affichage des coordonnées";
	}
}
function goToLoc(lat,lon)
{
	map.setCenter(new GLatLng(lat,lon),13);
}
function showThisPlace(lat,lon,zo)
{
	if(!zo)zo=13;
	map.setMapType(G_SATELLITE_MAP);
	map.setCenter(new GLatLng(lat,lon),zo);
}

function addAddressToMap(response)
 {
	map.clearOverlays();
	if (!response || response.Status.code != 200) 
	{
		alert(address +"  n'a pas été trouvée");
	} 
	else
	 {
		place = response.Placemark[0];
		point = new GLatLng(place.Point.coordinates[1],
			place.Point.coordinates[0]);
		marker = new GMarker(point);
		map.panTo(point);
		map.addOverlay(marker);				
		marker.openInfoWindowHtml(place.address);
	}
}
 
function showLocation() 
{
	var address = document.getElementById('in').value;
	geocoder.getLocations(address, addAddressToMap);
}
	

/*	menu	*/
function showdiv(i)
{
	document.getElementById('menu'+i).style.overflow='visible';
}
function hidediv(i)
{
	document.getElementById('menu'+i).style.overflow='hidden';
}
/*	div info	*/
function showInfo(cont){
	document.getElementById('info').style.display='inline';
}
function hideInfo(){
	document.getElementById('info').style.display='none';
}
function showInfoDelay(){
	document.getElementById('info').style.display='inline';
	setTimeout("hideInfo()",8000);
}
/*	aide */
function showAide(){
	window.open('aide.htm','aide','height=400,width=550,scrollbars=1,status=0,toolbar=0,top=50,left=50,resizable=1');
}

/*	suggest	*/
if(window.XMLHttpRequest)xml = new XMLHttpRequest();
else if(window.ActiveXObject)xml = new ActiveXObject("Microsoft.XMLHTTP");
var sub=true;
var key="";
var type="";
var ty=false;
function suggest_cp(search,ty)
{
	
	if((search.length > 1) && sub)
	{
		key=search;
		sub=false;
		if(ty)type="&type=1";
		xml.open("GET",'suggest.php?q='+search, true);	 
		xml.onreadystatechange = function()
		{ 
			if(xml.readyState == 4)
			{
				document.getElementById('suggest').innerHTML=xml.responseText;
				if(!ty)setTimeout("up()",800);
				else setTimeout("up2()",800);
			}
		} 	 
		xml.send(null);
	}
	else
	{
		document.getElementById('suggest').innerHTML='';
	}
}
function geoloc()
{
	if(geolocation)
	{
		xml.open("GET",'geolocation.php', true);	 
		xml.onreadystatechange = function()
		{ 
			if(xml.readyState == 4)
			{
				document.getElementById('geoloc').innerHTML=xml.responseText;
			}
		} 	 
		xml.send(null);	
	}
}
function up(){
	sub=true;
	if(key!=document.getElementById('key').value)
	{
		suggest_cp(document.getElementById('key').value);
	}
}
function up2(){
	sub=true;
	if(key!=document.getElementById('cp').value)
	{
		suggest_cp(document.getElementById('cp').value,true);
	}
}
var flagCursor=0;
function changeCursor(){
	if(!flagCursor)
	{
		ne=document.createElement('style');
		ne.setAttribute("type", "text/css");		
		if(ne.styleSheet)ne.styleSheet.cssText='#map div div div div img {cursor: crosshair !important;}';
		else ne.innerHTML='#map div div div div img {cursor:crosshair !important;}';
		document.getElementById('d1').appendChild(ne);
		document.getElementById('cur').innerHTML="curseur:main";
		flagCursor=1;			
	}
	else
	{
		document.getElementById('d1').removeChild(ne);
		document.getElementById('cur').innerHTML="curseur:croix";
		flagCursor=0;
	}	
}
function mkLink(){
	setLink();
	document.getElementById('mkl1').innerHTML ='&lt;a href=&quot;'+lnk+'&quot;&gt;'+document.title+'&lt;/a&gt;<br />';
	document.getElementById('mkl2').innerHTML='[url='+lnk+']'+document.title+'[/url]'
	document.getElementById('mkl3').innerHTML=lnk;
	upArea();
}
function setLink(){
	base="http://map.jg-laurent.com/map.php";
	cen=map.getCenter();
	if(ci)lnk=base+'?ci='+ci+'&mklon='+cen.lng()+'&mklat='+cen.lat()+'&zo='+map.getZoom()+'&mt='+map.getCurrentMapType().getUrlArg();
	else lnk=base+'?mklon='+cen.lng()+'&mklat='+cen.lat()+'&zo='+map.getZoom()+'&mt='+map.getCurrentMapType().getUrlArg();
}
function sendMail(){
	mail=document.getElementById('email').value;
	sujet=escape(document.getElementById('subject').value);
	mesa=escape(document.getElementById('mesage').value);
	location.href='mailto:'+mail+'?subject='+sujet+'&body='+mesa;
}
function upArea(){
	if(!flagmesa){
		if(nom=document.getElementById('email').value)nom=nom.replace(/(.+)@.+/,"$1");
		document.getElementById('mesage').value='bonjour '+nom+',\nje te recommande de visiter le site\nhttp://map.jg-laurent.com\net plus particulierement cette adresse\n'+lnk+'\ncordialement.';
	}
}
function getCookie(){
	if(document.cookie.search(/fav=/)!=-1){
		tmp=document.cookie.split("; ");
		for (var key in tmp){
			if(tmp[key].match(/fav=/)){
				var tmp2=tmp[key].replace(/fav=/,"");
				prtFav(unescape(tmp2));
			}
		}
	}
}
function prtFav(tmp){
	tt=eval('('+tmp+')');
	var favo='';
	var nfav='';	
	if(typeof(tt.lnfav)=="object"){
		for(i=0;i<tt.lnfav.length;i++){			
			if(typeof(tt.nfav)=="object")nfav=tt.nfav[i];
			else nfav='favori '+i;
			favo += '<a href="javascript:delfav('+cptfav+')" class="df">[effacer]</a> <a href="'+tt.lnfav[i]+'">'+nfav+'</a><br />\n';
			cptfav++;
			fav[cptfav]=[];
			fav[cptfav]["link"]=tt.lnfav[i];
			fav[cptfav]["name"]=nfav;
		}
		document.getElementById('favl').innerHTML=favo;
	}
	
}
function addfav(){
	setLink();
	var lien='';
	var nom='';
	nameFav=document.getElementById('nfav').value.replace(/"/," ");//"
	cptfav++;
	if(!nameFav)nameFav='favori '+cptfav;
	document.getElementById('nfav').value='';
	fav[cptfav]=[];
	fav[cptfav]["link"]=lnk;
	fav[cptfav]["name"]=nameFav;
	for (var keyvar in fav){
		lien+='"'+fav[keyvar]["link"]+'",';
		nom+='"'+fav[keyvar]["name"]+'",';		
	}
	lien=lien.substring(0,(lien.length-1));
	nom=nom.substring(0,(nom.length-1));
	var json="{lnfav:["+lien+"],nfav:["+nom+"]}";	
	document.cookie='fav='+escape(json)+'; domain=map.jg-laurent.com; expires=' + expire.toGMTString();
	document.getElementById('favl').innerHTML=document.getElementById('favl').innerHTML+'<a href="javascript:delfav('+cptfav+')" class="df">[effacer]</a> <a href="'+lnk+'">'+nameFav+'</a><br />\n';
}
function delfav(dfav){
	fav.splice(dfav,1);
	cptfav--;
	var lien='';
	var nom='';
	var favo='';
	for (var keyvar in fav){
		lien+='"'+fav[keyvar]["link"]+'",';
		nom+='"'+fav[keyvar]["name"]+'",';
		favo += '<a href="javascript:delfav('+keyvar+')" class="df">[effacer]</a> <a href="'+fav[keyvar]["link"]+'">'+fav[keyvar]["name"]+'</a><br />\n';
	}
	lien=lien.substring(0,(lien.length-1));
	nom=nom.substring(0,(nom.length-1));
	var json="{lnfav:["+lien+"],nfav:["+nom+"]}";	
	document.cookie='fav='+escape(json)+'; domain=map.jg-laurent.com; expires=' + expire.toGMTString();
	document.getElementById('favl').innerHTML=favo;
}
function lnkml(){
	cen=map.getCenter();
	base="http://map.jg-laurent.com/kml.php";
	if(ci)lnk=base+'?ci='+ci+'&lon='+cen.lng()+'&lat='+cen.lat()+'&zo='+map.getZoom();
	else lnk=base+'?lon='+cen.lng()+'&lat='+cen.lat()+'&zo='+map.getZoom();
	document.getElementById('kmz').href=lnk;
}
function sendMap(){
	formu=document.getElementById('sharemap');
	if( ! (formu.titre.value&&formu.description.value))alert("vous n'avez pas remplis\ntous les champs obligatoires");
	else{
		cen=map.getCenter();
		mapData='pseudo='+escape(formu.pseudo.value)+'&titre='+escape(formu.titre.value)+'&description='+escape(formu.description.value)+'&mail='+escape(formu.mail.value)+'&lon='+cen.lng()+'&lat='+cen.lat()+'&zo='+map.getZoom()+'&mt='+map.getCurrentMapType().getUrlArg()+'&ci='+ci;
		xml.open("POST","./sendmap.php",true);
		xml.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		xml.send(mapData);
		sto=document.getElementById('sharemap').innerHTML;
		document.getElementById('sharemap').innerHTML="votre partage à été envoyer<br />toute l'equipe vous remercie.";
		setTimeout('document.getElementById("share").style.display="none";document.getElementById("sharemap").innerHTML=sto;document.getElementById("cmap").style.display="none";',3000);
	}
}
function showShare(){
	document.getElementById('share').style.display='inline';
	mCenter=document.getElementById('cmap');	
	mCenter.style.left=(document.getElementById('map').offsetLeft+(document.getElementById('map').offsetWidth/2)-50)+'px';
	mCenter.style.top=(document.getElementById('map').offsetTop+(document.getElementById('map').offsetHeight/2)-50)+'px';
	mCenter.style.display='inline';
}
function hideIti(){
	if(document.getElementById('txtiti').style.display=='none')document.getElementById('txtiti').style.display='block';
	else document.getElementById('txtiti').style.display='none';
}
function hidenew(){
	if(document.getElementById('txtnew').style.display=='none')document.getElementById('txtnew').style.display='block';
	else document.getElementById('txtnew').style.display='none';
}
var flagm=false;
var cxx=0;
var cyy=0;

function MoveDiv(MyEvent){
	if(flagm)
	{
		StopMove();
		return false;
	}
	if(window.event) 
	{
		cxx=window.event.offsetX;
		cyy=window.event.offsetY;
	}
	else
	{
		cxx=MyEvent.layerX;
		cyy=MyEvent.layerY;
	}
	flagm=true;
	divCible=document.getElementById('lastnew');
	if(MyEvent.target.id=='itineraire')divCible=document.getElementById('iti');	
	document.onmousemove=MoveIniDiv;
}
function StopMove()
{
	flagm=false;
	return false;
}

function MoveIniDiv(MyEvent){
	if(flagm){
		if(window.event) 
		{
			x=window.event.clientX;
			y=window.event.clientY;
		}
		else
		{
			x=MyEvent.clientX;
			y=MyEvent.clientY;
		}
		
		y=y-cyy;
		x=x-cxx;
		divCible.style.top=y+'px';
		divCible.style.left=x+'px';
	}
}
function newdelay(){
	setTimeout("hidenew()",5000);
}