Rev 1064 | Blame | Compare with Previous | Last modification | View Log | RSS feed
//+---------------------------------------------------------------------------------------------------------+// GÉNÉRAL/*** Stope l'évènement courrant quand on clique sur un lien.* Utile pour Chrome, Safari...* @param evenement* @return*/function arreter(evenement) {if (evenement.stopPropagation) {evenement.stopPropagation();}return false;}//+---------------------------------------------------------------------------------------------------------+// FORMULAIRE$(function() {$("#saisie-obs").validate({rules: {prenom : "required",nom : "required",courriel : {required : true,email : true},courriel_confirmation : {required : true,equalTo: "#courriel"},milieu : "required",latitude : {required: true,range: [-90, 90]},longitude : {required: true,range: [-180, 180]},date : {required: true,date: true},taxon : "required"}});$("#date").datepicker({onClose: function(dateText, inst) {$("#saisie-obs").valid();}});$("#courriel_confirmation").bind('paste', function(e) {$("#dialogue-bloquer-copier-coller").dialog();return false;});$("#localiser-gg-map").fancybox({'modal' : true,'autoDimensions' : true,'titleShow' : false,'onClosed' : function() {$("#gg-map").hide();},'onStart' : function(e) {arreter(e);$("#gg-map-localisation").height($(window).height() - 100);$("#gg-map-carte").height($(window).height() - 200);$("#gg-map-localisation").width($(window).width() - 100);},'onComplete' : function() {initialiserCarte();}});$("#valider-coordonnees").click(function(e) {var coordonnees = $("#marqueur-coordonnees").data('latLon');if (coordonnees != undefined) {$("#latitude").val(coordonnees.lat);$("#longitude").val(coordonnees.lon);}var commune = $("#marqueur-commune").data('commune');if (commune != undefined) {$("#commune_nom").val(commune.nom);$("#commune_code_insee").val(commune.codeInsee);}$.fancybox.close();$("#saisie-obs").valid();});$("#annuler-coordonnees").bind('click', function(e) {$.fancybox.close();$("#saisie-obs").valid()});var obsNumero = 0;$("#ajouter-obs").bind('click', function(e) {if ($("#saisie-obs").valid() == false) {$("#dialogue-form-invalide").dialog();} else {obsNumero = obsNumero + 1;$("#liste-obs tbody").append('<tr id="obs'+obsNumero+'" class="obs">'+'<td>'+obsNumero+'</td>'+'<td>'+$("#date").val()+'</td>'+'<td>'+$("#taxon option:selected").text()+'</td>'+'<td>'+$("#milieu option:selected").text()+'</td>'+'<td>'+$("#latitude").val()+'</td>'+'<td>'+$("#longitude").val()+'</td>'+'<td>'+$("#notes").val()+'</td>'+'<td><button class="supprimer-obs" value="'+obsNumero+'" title="'+obsNumero+'">Supprimer</button></td>'+'</tr>');var numNomSel = $("#taxon").val();$("#liste-obs").data('obsId'+obsNumero, {'date' : $("#date").val(),'num_nom_sel' : numNomSel,'nom_sel' : taxons[numNomSel]['nom_sel'],'nom_ret' : taxons[numNomSel]['nom_ret'],'num_nom_ret' : taxons[numNomSel]['num_nom_ret'],'num_taxon' : taxons[numNomSel]['num_taxon'],'famille' : taxons[numNomSel]['famille'],'nom_fr' : taxons[numNomSel]['nom_fr'],'milieu' : $("#milieu option:selected").val(),'latitude' : $("#latitude").val(),'longitude' : $("#longitude").val(),'commune_nom' : $("#commune_nom").val(),'commune_code_insee' : $("#commune_code_insee").val(),'notes' : $("#notes").val()});}});$(".supprimer-obs").live('click', function() {var obsId = $(this).val();// Problème avec IE 6 et 7if (obsId == "Supprimer") {obsId = $(this).attr("title");}$('#obs'+obsId).remove();$("#liste-obs").removeData('obsId'+obsId)});$("#tramsmettre-obs").click(function(e) {var observations = $("#liste-obs").data();if (observations == undefined || jQuery.isEmptyObject(observations)) {$("#dialogue-zero-obs").dialog();} else if ($("#saisie-obs").valid() == false) {$("#dialogue-form-invalide").dialog();} else {observations['projet'] = 'Biodiversite34';var utilisateur = new Object();utilisateur.prenom = $("#prenom").val();utilisateur.nom = $("#nom").val();utilisateur.courriel = $("#courriel").val();observations['utilisateur'] = utilisateur;var erreurMsg = "";$.ajax({url : SERVICE_SAISIE_URL,type : "POST",data : observations,dataType : "json",beforeSend : function() {$(".msg").remove();$(".msg-erreur").remove();$(".msg-debug").remove();},success : function(data, textStatus, jqXHR) {$("#dialogue-obs-transaction").append('<p class="msg">Vos observations ont bien été transmises.</p>');},statusCode : {500 : function(jqXHR, textStatus, errorThrown) {erreurMsg += "Erreur 500 :\ntype : "+textStatus+' '+errorThrown+"\n";reponse = jQuery.parseJSON(jqXHR.responseText);if (reponse != null) {$.each(reponse, function (cle, valeur) {erreurMsg += valeur + "\n";});}if (DEBUG) {$("#dialogue-obs-transaction").append('<pre class="msg-erreur">'+erreurMsg+'</pre>');}}},error : function(jqXHR, textStatus, errorThrown) {erreurMsg += "Erreur Ajax :\ntype : "+textStatus+' '+errorThrown+"\n";reponse = jQuery.parseJSON(jqXHR.responseText);if (reponse != null) {$.each(reponse, function (cle, valeur) {erreurMsg += valeur + "\n";});}if (DEBUG) {$("#dialogue-obs-transaction").append('<pre class="msg-erreur">'+erreurMsg+'</pre>');}},complete : function(jqXHR, textStatus) {var debugMsg = '';if (jqXHR.getResponseHeader("X-DebugJrest-Data") != '') {debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader("X-DebugJrest-Data"));if (debugInfos != null) {$.each(debugInfos, function (cle, valeur) {debugMsg += valeur + "\n";});}}if (erreurMsg != '') {$("#dialogue-obs-transaction").append('<p class="msg">'+'Une erreur est survenue lors de la transmission de vos observations.'+'<br />'+'Vous pouvez signaler le disfonctionnement à <a href="'+'mailto:cel@tela-botanica.org'+'?'+'subject=Disfonctionnement du widget de saisie Biodiversite34'+"&body="+erreurMsg+"\nDébogage :\n"+debugMsg+'">cel@tela-botanica.org</a>.'+'</p>');}if (DEBUG) {$("#dialogue-obs-transaction").append('<pre class="msg-debug">Débogage : '+debugMsg+'</pre>');}$("#dialogue-obs-transaction").dialog();$("#liste-obs").removeData();$('.obs').remove();obsNumero = 0;}});}return false;});});//+---------------------------------------------------------------------------------------------------------+// GOOGLE MAPvar geocoder;var latLng;var map;var marker;var osmMapType;function initialiserCarte() {geocoder = new google.maps.Geocoder();latLng = new google.maps.LatLng(43.577, 3.455);map = new google.maps.Map(document.getElementById('gg-map-carte'), {zoom: 9,mapTypeId: google.maps.MapTypeId.HYBRID,mapTypeControlOptions: {mapTypeIds: ['OSM', google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.HYBRID, google.maps.MapTypeId.SATELLITE, google.maps.MapTypeId.TERRAIN]}});// Ajout de la couche OSM à la carteosmMapType = new google.maps.ImageMapType({getTileUrl: function(coord, zoom) {return "http://tile.openstreetmap.org/" +zoom + "/" + coord.x + "/" + coord.y + ".png";},tileSize: new google.maps.Size(256, 256),isPng: true,alt: "OpenStreetMap",name: "OSM",maxZoom: 19});map.mapTypes.set('OSM', osmMapType);// Ajout des limites de communesctaLayer = new google.maps.KmlLayer('http://www.tela-botanica.org/commun/google/map/3/kmz/communes/34.kmz', {preserveViewport: true});ctaLayer.setMap(map);// Définition du marqueurmarker = new google.maps.Marker({position: latLng,title: 'Ma station',map: map,draggable: true});deplacerMarker(latLng);// Tentative de géolocalisationif(navigator.geolocation) { // Try W3C Geolocation (Preferred)navigator.geolocation.getCurrentPosition(function(position) {(DEBUG) ? console.log("Géolocalisation OK.") : '';latLng = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);deplacerMarker(latLng);map.setCenter(latLng);}, function(erreur) {(DEBUG) ? console.log("Géolocalisation échouée : "+erreur.code+" = "+erreur.message) : '';});} else { //Browser doesn't support Geolocation(DEBUG) ? console.log("Navigateur ne supportant pas la géolocalisation. Localisation par défaut.") : '';}deplacerMarker(latLng);map.setCenter(latLng);// Add des évènements concernant le marqueurgoogle.maps.event.addListener(marker, 'dragstart', function() {mettreAJourMarkerAdresse('Marqueur de station début du déplacement...');});google.maps.event.addListener(marker, 'drag', function() {mettreAJourMarkerStatut('Marqueur de station en cours de déplacement...');mettreAJourMarkerPosition(marker.getPosition());});google.maps.event.addListener(marker, 'dragend', function() {mettreAJourMarkerStatut('Marqueur de station déplacé (glisser/déposer).');mettreAJourMarkerPosition(marker.getPosition());geocoderPosition(marker.getPosition());trouverCommune(marker.getPosition());});google.maps.event.addListener(map, 'click', function(event) {deplacerMarker(event.latLng);});}function deplacerMarker(latLon) {if (marker != undefined) {marker.setPosition(latLon);mettreAJourMarkerStatut('Marqueur de station déplacé (clic).');mettreAJourMarkerPosition(marker.getPosition());geocoderPosition(marker.getPosition());trouverCommune(marker.getPosition());}}function geocoderPosition(pos) {if (geocoder != undefined) {geocoder.geocode({latLng: pos}, function(responses, status) {if (status == google.maps.GeocoderStatus.OK) {if (responses && responses.length > 0) {mettreAJourMarkerAdresse(responses[0].formatted_address);} else {mettreAJourMarkerAdresse("Impossible de trouver d'adresse pour cette position.");}} else {mettreAJourMarkerAdresse("Un problème de géolocalisation est survenu : "+status+".");}});}}function trouverCommune(pos) {$(function() {var urlNomCommuneFormatee = SERVICE_NOM_COMMUNE_URL.replace('{lat}', pos.lat()).replace('{lon}', pos.lng());$.ajax({url : urlNomCommuneFormatee,type : "GET",dataType : "json",beforeSend : function() {$(".commune-info").empty();$("#dialogue-erreur").empty();},success : function(data, textStatus, jqXHR) {$(".commune-info").empty();$("#commune-nom").append(data.nom);$("#commune-code-insee").append(data.codeINSEE);$("#marqueur-commune").data('commune', {'nom' : data.nom, 'codeInsee' : data.codeINSEE});},statusCode : {500 : function(jqXHR, textStatus, errorThrown) {if (DEBUG) {$("#dialogue-erreur").append('<p id="msg">Un problème est survenu lors de l\'appel au service fournissante le nom des communes.</p>');reponse = jQuery.parseJSON(jqXHR.responseText);var erreurMsg = "";if (reponse != null) {$.each(reponse, function (cle, valeur) {erreurMsg += valeur + "<br />";});}$("#dialogue-erreur").append('<p class="msg-erreur">Erreur 500 : '+errorThrown+"<br />"+erreurMsg+'</p>');}}},error : function(jqXHR, textStatus, errorThrown) {if (DEBUG) {$("#dialogue-erreur").append('<p class="msg">Une erreur Ajax est survenue lors de la transmission de vos observations.</p>');reponse = jQuery.parseJSON(jqXHR.responseText);var erreurMsg = "";if (reponse != null) {$.each(reponse, function (cle, valeur) {erreurMsg += valeur + "<br />";});}$("#dialogue-erreur").append('<p class="msg-erreur">Erreur Ajax : '+errorThrown+' (type : '+textStatus+') <br />'+erreurMsg+'</p>');}},complete : function(jqXHR, textStatus) {if (DEBUG && jqXHR.getResponseHeader("X-DebugJrest-Data") != '') {var debugMsg = "";debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader("X-DebugJrest-Data"));if (debugInfos != null) {$.each(debugInfos, function (cle, valeur) {debugMsg += valeur + "<br />";});$("#dialogue-erreur").append('<pre class="msg-debug msg">Débogage : '+debugMsg+'</pre>');}}if ($("#dialogue-erreur .msg").length > 0) {$("#dialogue-erreur").dialog();}}});});}function mettreAJourMarkerStatut(str) {document.getElementById('marqueur-statut').innerHTML = str;}function mettreAJourMarkerPosition(latLng) {var lat = latLng.lat().toFixed(5);var lon = latLng.lng().toFixed(5);document.getElementById('marqueur-wgs84').innerHTML = [lat, lon].join(', ');$("#marqueur-coordonnees").data('latLon', {'lat' : lat, 'lon' : lon});Proj4js.defs["EPSG:4326"] = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs";Proj4js.defs["EPSG:2154"]="+title=RGF93 / Lambert-93 +proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ";var source = new Proj4js.Proj('EPSG:4326');// Coordonnées source : WGS 84var dest = new Proj4js.Proj('EPSG:2154');// Coordonnées destination : Lambert 93var p = new Proj4js.Point(lon+','+lat);//lon+','+lat any object will do as long as it has 'x' and 'y' propertiesProj4js.transform(source, dest, p);//Proj4js.reportError = function(msg) {alert(msg);}//console.log(p.toString());document.getElementById('marqueur-lambert93').innerHTML = [p.x.toFixed(0)+' '+dest.units, p.y.toFixed(0)+' '+dest.units].join(', ');}function mettreAJourMarkerAdresse(str) {document.getElementById('marqueur-adresse').innerHTML = str;}