var MarkerSearch;

function AutreCat(select){ //affiche une case autre en cas de nouvelle categorie
	if(select.value == "autre"){
		new Effect.SlideDown($('autre'));
	} else {
		if ($('autre').style.display == "block"){
			new Effect.SlideUp($('autre'));
		}else{
			$('autre').style.display = "none";
		}
	}
}



function ajouter(){ //envoye les infos pour enregistrer un nouvelle element
	var xhr_object = null;
	if(window.XMLHttpRequest) // Firefox et autres
	   xhr_object = new XMLHttpRequest(); 
	else if(window.ActiveXObject){ // Internet Explorer 
		try {
	        xhr_object = new ActiveXObject("Msxml2.XMLHTTP");
	    } catch (e) {
	        xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	    }
	} else { // XMLHttpRequest non supporté par le navigateur 
	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
	   xhr_object = false; 
	}

	// On ouvre la requete vers la page désirée
	xhr_object.open("POST", './add.php5', true);
	
	$('statu_add').style.display = "block";
	
	xhr_object.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //POST
	xhr_object.onreadystatechange = function(){
		if ( xhr_object.readyState == 4 ){
			$('statu_add').innerHTML = xhr_object.responseText;
			//alert(xhr_object.responseText); //affiche le resultat dans une alert
			window.setTimeout(function (){$('statu_add').style.display = "none";},3000);//on attend avant de la cacher
			
			if($('reload').checked == true){
				window.parent.location.reload(); //actualise la fenettre
			} else {
				Form.reset('form_add');
				$('ListeAdd').innerHTML = "Ajouter";
			}
			

		} else {
			$('statu_add').innerHTML = "résultats en cour de chargement...";
		}
	}
	// dans le cas du post envoi des variables
	xhr_object.send(Form.serialize('form_add'));
}

var MarkerSearch;
function AddMarker(){ //montre le marker de l'element a ajouter ou modifier
	$('reload').checked = true;
	//alert($('ssmenuadd').style.display);
	if ($('ssmenuadd').style.display == "none"){ //si le menu est caché et qu'on l'ouvre
		if( $("modif").value == "modif" ) { //si on est en train de modifier
			var point = new GLatLng(parseFloat($("lat").value), parseFloat($("long").value));
			map.setCenter(point,5);
			MarkerSearch = new GMarker(point, {draggable: true});
			GEvent.addListener(MarkerSearch, 'dragend', function() {
				AfficheGPS(MarkerSearch);
				//alert(MarkerSearch.getPoint().x);
			});
			map.addOverlay(MarkerSearch); //on ajoute un markeur au centre de la carte, on recuperera ça position
			$('submitAdd').onclick = function(){ajouter(); return false;};//permet de modifier l'action en cas de modification
			$('submitGeo').onclick = function(){geocodage(MarkerSearch); return false;};//permet de modifier l'action en cas de modification
			
		} else { //si on est en train d'ajouter
			//alert("coché");
			MarkerSearch = new GMarker(map.getCenter(), {draggable: true});
			AfficheGPS(MarkerSearch);
			GEvent.addListener(MarkerSearch, 'drag', function() {
				AfficheGPS(MarkerSearch);
				//alert(MarkerSearch.getPoint().x);
			});
			map.addOverlay(MarkerSearch); //on ajoute un markeur au centre de la carte, on recuperera ça position
		}
	} else {
		if(MarkerSearch){	
			map.removeOverlay(MarkerSearch);
			//alert('marker present');
		}
		Form.reset('form_add');
		$('ListeAdd').innerHTML = "Ajouter";
		$('submitAdd').onclick = function(){ajouter(); return false;};
		$('submitGeo').onclick = function(){geocodage(); return false;};//permet de modifier l'action en cas de modification
	}

}

function AfficheGPS(marker){ //affiche les coordonnées GPS dans les inputs concernés
	$("coord").value = "lat:"+marker.getPoint().y+"/long:"+marker.getPoint().x;
	$("lat").value = marker.getPoint().y;
	$("long").value = marker.getPoint().x;	
	//alert($("lat").value+" - "+$("long").value);
}
function decode_utf8( s ){
	if (decodeURIComponent(  s  ) == "&nbsp;"){
		return "";
	}else{
		return decodeURIComponent( s );
	}
}

function modif(num){ //permet d'afficher et modifier les valeurs de tout element
	//alert(num);
	
		var element = xml.documentElement.getElementsByTagName('element');
		for (var i = 0; i < element.length; i++) {
 			var id = element[i].getAttribute('id');
			//alert(id);
 			if(id == num){
 				var point = new GLatLng(parseFloat(element[i].getAttribute('lat')), parseFloat(element[i].getAttribute('lon')));
 				$("lat").value = element[i].getAttribute('lat');
 				$("long").value = element[i].getAttribute('lon');
				//alert(point);
				var IdCat = num.split("_")
 				$("select").value = IdCat[0];
 				$("nom").value = decode_utf8(element[i].getAttribute('nom'));
 				$("adresse").value = decode_utf8(element[i].getAttribute('adresse'));
 				$("CP").value = decode_utf8(element[i].getAttribute('CP'));
 				$("ville").value = decode_utf8(element[i].getAttribute('ville'));
 				$("tel").value = decode_utf8(element[i].getAttribute('tel'));
 				$("fax").value = decode_utf8(element[i].getAttribute('fax'));
 				$("port").value = decode_utf8(element[i].getAttribute('port'));
 				$("contact").value = decode_utf8(element[i].getAttribute('contact'));
 				$("mail").value = decode_utf8(element[i].getAttribute('mail'));
 				$("web").value = decode_utf8(element[i].getAttribute('web'));
 				$("info").value = decode_utf8(element[i].getAttribute('info'));
 				$("modif").value = "modif";
 				$("num").value = num;
				$("coord").value = "lat:"+element[i].getAttribute('lat')+"/lon:"+element[i].getAttribute('lon');
				$('ListeAdd').innerHTML = "Modifier";
 			}
 		}
	AddMarker();
	bottomAccordion.activate($$('#vertical_container .accordion_toggle')[3]);// ouvrir l'onglet de modif
}
function geocodage(MarkerSearch){
	
	adresse = $("adresse").value+"+"+$("CP").value+"+"+$("ville").value+"+France";
	//alert( adresse);
	var MarkerGeo = new GClientGeocoder();
	if(MarkerSearch){
		MarkerGeo.getLatLng(adresse, function (coord) { //permet de convertir un adresse postale en coordonnée
	        // Et centrage de la map sur les coordonnées renvoyées par Google :
	        map.setCenter(coord, 15);
			MarkerSearch.setPoint(coord);
			AfficheGPS(MarkerSearch);
		});
	}else{
		MarkerGeo.getLatLng(adresse, function (coord) {
	        // Et centrage de la map sur les coordonnées renvoyées par Google :
	        map.setCenter(coord, 15);
			map.clearOverlays();
			var MarkerSearch = new GMarker(coord, {draggable: true});
			AfficheGPS(MarkerSearch);
				GEvent.addListener(MarkerSearch, 'drag', function() {
					AfficheGPS(MarkerSearch);
					//alert(MarkerSearch.getPoint().x);
				});
				map.addOverlay(MarkerSearch); //on ajoute un markeur au centre de la carte, on recuperera ça position
	    });
	}

}
