| 1054 | jpm | 1 | //+---------------------------------------------------------------------------------------------------------+
 | 
        
           | 1916 | jpm | 2 | // GÉNÉRAL => OK
 | 
        
           |  |  | 3 | $(document).ready(function() {
 | 
        
           |  |  | 4 | 	if (DEBUG == false) {
 | 
        
           |  |  | 5 | 		$(window).on('beforeunload', function(event) {
 | 
        
           |  |  | 6 | 			return 'Êtes vous sûr de vouloir quiter la page?\nLes observations saisies mais non transmises seront perdues.';
 | 
        
           |  |  | 7 | 		});
 | 
        
           |  |  | 8 | 	}
 | 
        
           |  |  | 9 | });
 | 
        
           |  |  | 10 | //+----------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 11 | // FONCTIONS GÉNÉRIQUES => OK
 | 
        
           | 1054 | jpm | 12 | /**
 | 
        
           |  |  | 13 |  * Stope l'évènement courrant quand on clique sur un lien.
 | 
        
           |  |  | 14 |  * Utile pour Chrome, Safari...
 | 
        
           |  |  | 15 |  * @param evenement
 | 
        
           |  |  | 16 |  * @return
 | 
        
           |  |  | 17 |  */
 | 
        
           |  |  | 18 | function arreter(evenement) {
 | 
        
           |  |  | 19 | 	if (evenement.stopPropagation) {
 | 
        
           |  |  | 20 | 		evenement.stopPropagation();
 | 
        
           |  |  | 21 | 	}
 | 
        
           | 1916 | jpm | 22 | 	if (evenement.preventDefault) {
 | 
        
           |  |  | 23 | 		evenement.preventDefault();
 | 
        
           |  |  | 24 | 	}
 | 
        
           | 1054 | jpm | 25 | 	return false;
 | 
        
           |  |  | 26 | }
 | 
        
           | 1346 | aurelien | 27 |   | 
        
           | 1916 | jpm | 28 | function extraireEnteteDebug(jqXHR) {
 | 
        
           |  |  | 29 | 	var msgDebug = '';
 | 
        
           |  |  | 30 | 	if (jqXHR.getResponseHeader('X-DebugJrest-Data') != '') {
 | 
        
           |  |  | 31 | 		var debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader('X-DebugJrest-Data'));
 | 
        
           |  |  | 32 | 		if (debugInfos != null) {
 | 
        
           |  |  | 33 | 			$.each(debugInfos, function (cle, valeur) {
 | 
        
           |  |  | 34 | 				msgDebug += valeur + "\n";
 | 
        
           |  |  | 35 | 			});
 | 
        
           |  |  | 36 | 		}
 | 
        
           | 1578 | jpm | 37 | 	}
 | 
        
           | 1916 | jpm | 38 | 	return msgDebug;
 | 
        
           |  |  | 39 | }
 | 
        
           | 1054 | jpm | 40 |   | 
        
           | 1916 | jpm | 41 | function afficherPanneau(selecteur) {
 | 
        
           |  |  | 42 | 	$(selecteur).fadeIn('slow').delay(DUREE_MESSAGE).fadeOut('slow');
 | 
        
           |  |  | 43 | }
 | 
        
           |  |  | 44 |   | 
        
           | 1054 | jpm | 45 | //+----------------------------------------------------------------------------------------------------------+
 | 
        
           | 1916 | jpm | 46 | //FORM IDENTITE : gestion de l'observateur => OK
 | 
        
           |  |  | 47 |   | 
        
           |  |  | 48 | $(document).ready(function() {
 | 
        
           | 1946 | jpm | 49 | 	requeterIdentite();// Sur rechargement de la page
 | 
        
           | 2408 | jpm | 50 |   | 
        
           | 1946 | jpm | 51 | 	// Interaction sur le formulaire observateur
 | 
        
           |  |  | 52 | 	$('#prenom').on('change', formaterPrenom);
 | 
        
           |  |  | 53 | 	$('#nom').on('change', formaterNom);
 | 
        
           | 1963 | jpm | 54 | 	$('#courriel').on('keyup', testerLancementRequeteIdentite);
 | 
        
           |  |  | 55 | 	$('#courriel').on('blur', requeterIdentite);
 | 
        
           | 1946 | jpm | 56 | 	$('#courriel_confirmation').on('paste', bloquerCopierCollerCourriel);
 | 
        
           | 1916 | jpm | 57 | });
 | 
        
           |  |  | 58 |   | 
        
           |  |  | 59 | function testerLancementRequeteIdentite(event) {
 | 
        
           |  |  | 60 | 	if (event.which == 13) {
 | 
        
           |  |  | 61 | 		event.preventDefault();
 | 
        
           |  |  | 62 | 		event.stopPropagation();
 | 
        
           | 1962 | jpm | 63 | 		requeterIdentite();
 | 
        
           | 1916 | jpm | 64 | 	}
 | 
        
           |  |  | 65 | }
 | 
        
           |  |  | 66 |   | 
        
           |  |  | 67 | function requeterIdentite() {
 | 
        
           |  |  | 68 | 	var courriel = $('#courriel').val();
 | 
        
           | 1946 | jpm | 69 | 	if (courriel) {
 | 
        
           |  |  | 70 | 		var urlAnnuaire = SERVICE_ANNUAIRE_ID_URL + courriel;
 | 
        
           |  |  | 71 | 		$.ajax({
 | 
        
           |  |  | 72 | 			url: urlAnnuaire,
 | 
        
           |  |  | 73 | 			type: 'GET',
 | 
        
           |  |  | 74 | 			success: function(data, textStatus, jqXHR) {
 | 
        
           |  |  | 75 | 				if (data != undefined && data[courriel] != undefined) {
 | 
        
           |  |  | 76 | 					var infos = data[courriel];
 | 
        
           |  |  | 77 | 					$('#id_utilisateur').val(infos.id);
 | 
        
           |  |  | 78 | 					$('#prenom').val(infos.prenom);
 | 
        
           |  |  | 79 | 					$('#nom').val(infos.nom);
 | 
        
           |  |  | 80 | 					$('#courriel_confirmation').val(courriel);
 | 
        
           |  |  | 81 | 					$('#prenom, #nom, #courriel_confirmation').attr('disabled', 'disabled');
 | 
        
           |  |  | 82 | 					$('#structure').focus();
 | 
        
           |  |  | 83 | 				} else {
 | 
        
           |  |  | 84 | 					surErreurCompletionCourriel();
 | 
        
           |  |  | 85 | 				}
 | 
        
           |  |  | 86 | 			},
 | 
        
           |  |  | 87 | 			error: function(jqXHR, textStatus, errorThrown) {
 | 
        
           | 1916 | jpm | 88 | 				surErreurCompletionCourriel();
 | 
        
           | 1946 | jpm | 89 | 			},
 | 
        
           |  |  | 90 | 			complete: function(jqXHR, textStatus) {
 | 
        
           | 1956 | jpm | 91 | 				montrerFormIdentite();
 | 
        
           | 1916 | jpm | 92 | 			}
 | 
        
           |  |  | 93 | 	});
 | 
        
           | 1946 | jpm | 94 | 	}
 | 
        
           | 1916 | jpm | 95 | }
 | 
        
           |  |  | 96 |   | 
        
           | 1956 | jpm | 97 | function montrerFormIdentite() {
 | 
        
           | 2049 | jpm | 98 | 	$('#zone-courriel-confirmation, #zone-prenom-nom').css('display', 'block');
 | 
        
           | 1956 | jpm | 99 | }
 | 
        
           |  |  | 100 |   | 
        
           | 1916 | jpm | 101 | function surErreurCompletionCourriel() {
 | 
        
           |  |  | 102 | 	$('#prenom, #nom, #courriel_confirmation').removeAttr('disabled');
 | 
        
           |  |  | 103 | 	afficherPanneau('#dialogue-courriel-introuvable');
 | 
        
           |  |  | 104 | }
 | 
        
           |  |  | 105 |   | 
        
           |  |  | 106 | function formaterNom() {
 | 
        
           |  |  | 107 | 	$(this).val($(this).val().toUpperCase());
 | 
        
           |  |  | 108 | }
 | 
        
           |  |  | 109 |   | 
        
           |  |  | 110 | function formaterPrenom() {
 | 
        
           |  |  | 111 | 	var prenom = new Array(),
 | 
        
           |  |  | 112 | 		mots = $(this).val().split(' ');
 | 
        
           |  |  | 113 | 	for (var i = 0; i < mots.length; i++) {
 | 
        
           |  |  | 114 | 		var mot = mots[i];
 | 
        
           |  |  | 115 | 		if (mot.indexOf('-') >= 0) {
 | 
        
           |  |  | 116 | 			var prenomCompose = new Array(),
 | 
        
           |  |  | 117 | 				motsComposes = mot.split('-');
 | 
        
           |  |  | 118 | 			for (var j = 0; j < motsComposes.length; j++) {
 | 
        
           |  |  | 119 | 				var motSimple = motsComposes[j],
 | 
        
           |  |  | 120 | 					motMajuscule = motSimple.charAt(0).toUpperCase() + motSimple.slice(1);
 | 
        
           |  |  | 121 | 				prenomCompose.push(motMajuscule);
 | 
        
           |  |  | 122 | 			}
 | 
        
           |  |  | 123 | 			prenom.push(prenomCompose.join('-'));
 | 
        
           |  |  | 124 | 		} else {
 | 
        
           |  |  | 125 | 			var motMajuscule = mot.charAt(0).toUpperCase() + mot.slice(1);
 | 
        
           |  |  | 126 | 			prenom.push(motMajuscule);
 | 
        
           |  |  | 127 | 		}
 | 
        
           |  |  | 128 | 	}
 | 
        
           |  |  | 129 | 	$(this).val(prenom.join(' '));
 | 
        
           |  |  | 130 | }
 | 
        
           |  |  | 131 |   | 
        
           | 1946 | jpm | 132 | function bloquerCopierCollerCourriel() {
 | 
        
           |  |  | 133 | 	afficherPanneau('#dialogue-bloquer-copier-coller');
 | 
        
           |  |  | 134 | 	return false;
 | 
        
           |  |  | 135 | }
 | 
        
           |  |  | 136 |   | 
        
           | 1916 | jpm | 137 | //+----------------------------------------------------------------------------------------------------------+
 | 
        
           | 1922 | jpm | 138 | //GOOGLE MAP => OK
 | 
        
           |  |  | 139 | var map,
 | 
        
           | 2408 | jpm | 140 | 	geocoder,
 | 
        
           | 1922 | jpm | 141 | 	markerDeb,
 | 
        
           |  |  | 142 | 	latLngDeb,
 | 
        
           |  |  | 143 | 	markerFin,
 | 
        
           |  |  | 144 | 	latLngFin,
 | 
        
           |  |  | 145 | 	ligneRue,
 | 
        
           |  |  | 146 | 	premierDeplacement = true;
 | 
        
           | 1346 | aurelien | 147 |   | 
        
           | 1922 | jpm | 148 | $(document).ready(function() {
 | 
        
           |  |  | 149 | 	initialiserGoogleMap();
 | 
        
           |  |  | 150 | 	afficherEtapeGeolocalisation(1);
 | 
        
           | 2408 | jpm | 151 |   | 
        
           | 1922 | jpm | 152 | 	// Autocompletion du champ adresse
 | 
        
           |  |  | 153 | 	$('#carte-recherche').on('focus', function() {
 | 
        
           |  |  | 154 | 		$(this).select();
 | 
        
           | 1346 | aurelien | 155 | 	});
 | 
        
           | 1922 | jpm | 156 | 	$('#carte-recherche').on('mouseup', function(event) {// Pour Safari...
 | 
        
           |  |  | 157 | 		event.preventDefault();
 | 
        
           |  |  | 158 | 	});
 | 
        
           | 2408 | jpm | 159 |   | 
        
           | 1922 | jpm | 160 | 	$('#carte-recherche').keypress(function(e) {
 | 
        
           |  |  | 161 | 		if (e.which == 13) {
 | 
        
           |  |  | 162 | 			e.preventDefault();
 | 
        
           |  |  | 163 | 		}
 | 
        
           | 1054 | jpm | 164 | 	});
 | 
        
           | 2408 | jpm | 165 |   | 
        
           | 1922 | jpm | 166 | 	$('#carte-recherche').autocomplete({
 | 
        
           | 1346 | aurelien | 167 | 		//Cette partie utilise geocoder pour extraire des valeurs d'adresse
 | 
        
           |  |  | 168 | 		source: function(request, response) {
 | 
        
           | 2408 | jpm | 169 |   | 
        
           | 1346 | aurelien | 170 | 			geocoder.geocode( {'address': request.term+', France', 'region' : 'fr' }, function(results, status) {
 | 
        
           |  |  | 171 | 				if (status == google.maps.GeocoderStatus.OK) {
 | 
        
           | 1054 | jpm | 172 | 					response($.map(results, function(item) {
 | 
        
           | 1956 | jpm | 173 | 						var rue = "";
 | 
        
           |  |  | 174 | 						$.each(item.address_components, function(){
 | 
        
           |  |  | 175 | 							if (this.types[0] == "route" || this.types[0] == "street_address" ) {
 | 
        
           |  |  | 176 | 								rue = this.short_name;
 | 
        
           |  |  | 177 | 							}
 | 
        
           |  |  | 178 | 						});
 | 
        
           | 1346 | aurelien | 179 | 						var retour = {
 | 
        
           |  |  | 180 | 							label: item.formatted_address,
 | 
        
           | 1956 | jpm | 181 | 							value: rue,
 | 
        
           | 1054 | jpm | 182 | 							latitude: item.geometry.location.lat(),
 | 
        
           |  |  | 183 | 							longitude: item.geometry.location.lng()
 | 
        
           | 1346 | aurelien | 184 | 						};
 | 
        
           |  |  | 185 | 						return retour;
 | 
        
           | 1054 | jpm | 186 | 					}));
 | 
        
           | 1346 | aurelien | 187 | 				} else {
 | 
        
           |  |  | 188 | 					afficherErreurGoogleMap(status);
 | 
        
           | 1054 | jpm | 189 | 				}
 | 
        
           |  |  | 190 | 			});
 | 
        
           | 1346 | aurelien | 191 | 		},
 | 
        
           |  |  | 192 | 		// Cette partie est executee a la selection d'une adresse
 | 
        
           |  |  | 193 | 		select: function(event, ui) {
 | 
        
           | 1922 | jpm | 194 | 			var nouvellePosition = new google.maps.LatLng(ui.item.latitude, ui.item.longitude);
 | 
        
           |  |  | 195 | 			initialiserMarkerDeb();
 | 
        
           |  |  | 196 | 			deplacerMarkerDeb(nouvellePosition);
 | 
        
           |  |  | 197 | 			map.setZoom(16);
 | 
        
           | 1346 | aurelien | 198 | 			afficherEtapeGeolocalisation(2);
 | 
        
           |  |  | 199 | 		}
 | 
        
           | 1054 | jpm | 200 | 	});
 | 
        
           | 2408 | jpm | 201 |   | 
        
           | 1922 | jpm | 202 | 	$('#geolocaliser').on('click', geolocaliser);
 | 
        
           |  |  | 203 | });
 | 
        
           |  |  | 204 |   | 
        
           |  |  | 205 | function initialiserGoogleMap(){
 | 
        
           | 1946 | jpm | 206 | 	latLngDeb = new google.maps.LatLng(48.8543, 2.3483);// Paris
 | 
        
           |  |  | 207 | 	if (VILLE == 'Marseille') {
 | 
        
           |  |  | 208 | 		latLngDeb = new google.maps.LatLng(43.29545, 5.37458);
 | 
        
           |  |  | 209 | 	} else if (VILLE == 'Montpellier') {
 | 
        
           |  |  | 210 | 		latLngDeb = new google.maps.LatLng(43.61077, 3.87672);
 | 
        
           |  |  | 211 | 	}
 | 
        
           | 1922 | jpm | 212 | 	var options = {
 | 
        
           | 1946 | jpm | 213 | 			zoom: 16,
 | 
        
           | 1922 | jpm | 214 | 			center: latLngDeb,
 | 
        
           |  |  | 215 | 			mapTypeId: google.maps.MapTypeId.HYBRID,
 | 
        
           |  |  | 216 | 			mapTypeControlOptions: {
 | 
        
           | 2408 | jpm | 217 | 				mapTypeIds: ['OSM',
 | 
        
           |  |  | 218 | 					google.maps.MapTypeId.ROADMAP,
 | 
        
           |  |  | 219 | 					google.maps.MapTypeId.HYBRID,
 | 
        
           |  |  | 220 | 					google.maps.MapTypeId.SATELLITE,
 | 
        
           | 1922 | jpm | 221 | 					google.maps.MapTypeId.TERRAIN]}
 | 
        
           |  |  | 222 | 		};
 | 
        
           | 2408 | jpm | 223 |   | 
        
           | 1922 | jpm | 224 | 	// Ajout de la couche OSM à la carte
 | 
        
           |  |  | 225 | 	osmMapType = new google.maps.ImageMapType({
 | 
        
           |  |  | 226 | 		getTileUrl: function(coord, zoom) {
 | 
        
           |  |  | 227 | 			return 'http://tile.openstreetmap.org/' + zoom + '/' + coord.x + '/' + coord.y + '.png';
 | 
        
           |  |  | 228 | 		},
 | 
        
           |  |  | 229 | 		tileSize: new google.maps.Size(256, 256),
 | 
        
           |  |  | 230 | 		isPng: true,
 | 
        
           |  |  | 231 | 		alt: 'OpenStreetMap',
 | 
        
           |  |  | 232 | 		name: 'OSM',
 | 
        
           |  |  | 233 | 		maxZoom: 19
 | 
        
           | 1346 | aurelien | 234 | 	});
 | 
        
           | 2408 | jpm | 235 |   | 
        
           | 1922 | jpm | 236 | 	// Création de la carte Google
 | 
        
           |  |  | 237 | 	map = new google.maps.Map(document.getElementById('map-canvas'), options); //affiche la google map dans la div map_canvas
 | 
        
           |  |  | 238 | 	map.mapTypes.set('OSM', osmMapType);
 | 
        
           | 2408 | jpm | 239 |   | 
        
           | 1922 | jpm | 240 | 	// Ajout de l'évènment sur click dans Carte
 | 
        
           |  |  | 241 | 	google.maps.event.addListener(map, 'click', surClickDansCarte);
 | 
        
           | 2408 | jpm | 242 |   | 
        
           | 1922 | jpm | 243 | 	// Lorsque la carte est chargée, on vérifie si on peut précharger des données
 | 
        
           |  |  | 244 | 	google.maps.event.addListenerOnce(map, 'idle', function(){
 | 
        
           |  |  | 245 | 		// Initialisation du marker de début de rue
 | 
        
           |  |  | 246 | 		initialiserMarkerDeb();
 | 
        
           | 2256 | aurelien | 247 | 		if (OBS_ID != '') {
 | 
        
           |  |  | 248 | 			chargerInfoObs();
 | 
        
           |  |  | 249 | 		} else {
 | 
        
           |  |  | 250 | 			// Tentative de geocalisation si aucune obs à précharger
 | 
        
           |  |  | 251 | 			tenterGeolocalisation();
 | 
        
           |  |  | 252 | 		}
 | 
        
           | 1346 | aurelien | 253 | 	});
 | 
        
           | 2408 | jpm | 254 |   | 
        
           | 1922 | jpm | 255 | 	// Création du Geocoder
 | 
        
           |  |  | 256 | 	geocoder = new google.maps.Geocoder();
 | 
        
           |  |  | 257 | }
 | 
        
           | 1054 | jpm | 258 |   | 
        
           | 2256 | aurelien | 259 | function chargerInfoObs() {
 | 
        
           |  |  | 260 | 	var urlObs = SERVICE_OBS_URL + '/' + OBS_ID;
 | 
        
           |  |  | 261 | 	$.ajax({
 | 
        
           |  |  | 262 | 		url: urlObs,
 | 
        
           |  |  | 263 | 		type: 'GET',
 | 
        
           |  |  | 264 | 		success: function(data, textStatus, jqXHR) {
 | 
        
           |  |  | 265 | 			if (data != undefined && data != "") {
 | 
        
           |  |  | 266 | 				prechargerForm(data);
 | 
        
           | 2408 | jpm | 267 | 			}
 | 
        
           | 2256 | aurelien | 268 | 			// TODO: voir s'il est pertinent d'indiquer quelque chose en cas d'erreur ou d'obs
 | 
        
           | 2408 | jpm | 269 | 			// inexistante
 | 
        
           | 2256 | aurelien | 270 | 		},
 | 
        
           |  |  | 271 | 		error: function(jqXHR, textStatus, errorThrown) {
 | 
        
           |  |  | 272 | 			// TODO: cf TODO ci-dessus
 | 
        
           |  |  | 273 | 		}
 | 
        
           |  |  | 274 | 	});
 | 
        
           |  |  | 275 | }
 | 
        
           |  |  | 276 |   | 
        
           |  |  | 277 | function prechargerForm(data) {
 | 
        
           | 2408 | jpm | 278 |   | 
        
           | 2256 | aurelien | 279 |     $('#carte-recherche').val(data.zoneGeo);
 | 
        
           | 2408 | jpm | 280 |   | 
        
           | 2256 | aurelien | 281 | 	$('#commune-nom').text(data.zoneGeo);
 | 
        
           | 2408 | jpm | 282 |   | 
        
           | 2257 | aurelien | 283 | 	if(data.hasOwnProperty("codeZoneGeo")) {
 | 
        
           |  |  | 284 | 		$('#commune-code-insee').text(data.codeZoneGeo.replace('INSEE-C:', ''));
 | 
        
           |  |  | 285 | 	}
 | 
        
           | 2408 | jpm | 286 |   | 
        
           |  |  | 287 |     pos = new google.maps.LatLng(data.latitude, data.longitude);
 | 
        
           |  |  | 288 |   | 
        
           | 2256 | aurelien | 289 |     if(data.hasOwnProperty("extension")) {
 | 
        
           |  |  | 290 |     	initialiserMarkerFin();
 | 
        
           | 2408 | jpm | 291 |   | 
        
           | 2256 | aurelien | 292 |     	// cas des obs florilèges qui apparaissent aussi comme des obs sauvages
 | 
        
           |  |  | 293 |     	// mais qui n'ont pas de coté de rue
 | 
        
           |  |  | 294 |     	if(data.extension.hasOwnProperty("coteRue")) {
 | 
        
           |  |  | 295 |     		$('#rue_cote option[value='+data.extension.coteRue.valeur+']').attr("selected", "selected");
 | 
        
           |  |  | 296 |     	}
 | 
        
           | 2408 | jpm | 297 |   | 
        
           | 2256 | aurelien | 298 | 	    deb = new google.maps.LatLng(data.extension.latitudeDebutRue.valeur, data.extension.longitudeDebutRue.valeur);
 | 
        
           |  |  | 299 | 	    fin = new google.maps.LatLng(data.extension.latitudeFinRue.valeur, data.extension.longitudeFinRue.valeur);
 | 
        
           | 2408 | jpm | 300 |   | 
        
           | 2256 | aurelien | 301 | 	    mettreAJourStationPosition(pos);
 | 
        
           | 2408 | jpm | 302 |   | 
        
           | 2256 | aurelien | 303 | 	    deplacerMarkerDeb(deb);
 | 
        
           |  |  | 304 | 	    deplacerMarkerFin(fin);
 | 
        
           |  |  | 305 | 	    afficherEtapeGeolocalisation(4);
 | 
        
           | 2408 | jpm | 306 |   | 
        
           | 2256 | aurelien | 307 | 	    var latlngbounds = new google.maps.LatLngBounds();
 | 
        
           |  |  | 308 | 	    latlngbounds.extend(deb);
 | 
        
           |  |  | 309 | 	    latlngbounds.extend(fin);
 | 
        
           |  |  | 310 | 	    map.setCenter(latlngbounds.getCenter());
 | 
        
           | 2408 | jpm | 311 | 	    map.fitBounds(latlngbounds);
 | 
        
           | 2256 | aurelien | 312 |     } else if(data.hasOwnProperty("latitude") && data.hasOwnProperty("longitude")) {
 | 
        
           |  |  | 313 |     	deplacerMarkerDeb(pos);
 | 
        
           |  |  | 314 |     }
 | 
        
           |  |  | 315 | }
 | 
        
           |  |  | 316 |   | 
        
           | 1922 | jpm | 317 | function initialiserMarkerDeb() {
 | 
        
           |  |  | 318 | 	premierDeplacement = true;
 | 
        
           |  |  | 319 | 	if (markerDeb == undefined) {
 | 
        
           |  |  | 320 | 		// Marqueur de début de Rue
 | 
        
           |  |  | 321 | 		markerDeb = new google.maps.Marker({
 | 
        
           |  |  | 322 | 			map: map,
 | 
        
           |  |  | 323 | 			draggable: true,
 | 
        
           |  |  | 324 | 			title: 'Début de la portion de rue étudiée',
 | 
        
           |  |  | 325 | 			icon: GOOGLE_MAP_MARQUEUR_DEBUT_URL,
 | 
        
           |  |  | 326 | 			position: latLngDeb
 | 
        
           |  |  | 327 | 		});
 | 
        
           |  |  | 328 | 		google.maps.event.addListener(markerDeb, 'dragend', surDeplacementMarkerDeb);
 | 
        
           |  |  | 329 | 	}
 | 
        
           | 2408 | jpm | 330 |   | 
        
           | 1922 | jpm | 331 | 	latLngFin = latLngDeb;
 | 
        
           |  |  | 332 | 	if (markerFin != undefined) {
 | 
        
           |  |  | 333 | 		markerFin.setMap(null);
 | 
        
           |  |  | 334 | 	}
 | 
        
           |  |  | 335 | 	latLngCentre = latLngDeb;
 | 
        
           |  |  | 336 | 	if (ligneRue != undefined) {
 | 
        
           |  |  | 337 | 		ligneRue.setMap(null);
 | 
        
           |  |  | 338 | 	}
 | 
        
           | 1346 | aurelien | 339 | }
 | 
        
           |  |  | 340 |   | 
        
           | 1922 | jpm | 341 | function surDeplacementMarkerDeb() {
 | 
        
           |  |  | 342 | 	deplacerMarkerDeb(markerDeb.getPosition());
 | 
        
           | 1346 | aurelien | 343 | }
 | 
        
           |  |  | 344 |   | 
        
           | 1922 | jpm | 345 | function deplacerMarkerDeb(nouvellePosition) {
 | 
        
           |  |  | 346 | 	latLngDeb = nouvellePosition;
 | 
        
           |  |  | 347 | 	markerDeb.setPosition(latLngDeb);
 | 
        
           |  |  | 348 | 	map.setCenter(latLngDeb);
 | 
        
           |  |  | 349 | 	mettreAJourStationPosition(latLngDeb);
 | 
        
           |  |  | 350 | 	trouverCommune(latLngDeb);
 | 
        
           |  |  | 351 |   | 
        
           |  |  | 352 | 	if (premierDeplacement) {
 | 
        
           |  |  | 353 | 		initialiserMarkerDeb();
 | 
        
           |  |  | 354 | 		premierDeplacement = false;
 | 
        
           |  |  | 355 | 	} else {
 | 
        
           |  |  | 356 | 		var nouvellePositionFin = new google.maps.LatLng(latLngDeb.lat(), latLngDeb.lng() + 0.0010);
 | 
        
           |  |  | 357 | 		initialiserMarkerFin();
 | 
        
           | 2256 | aurelien | 358 | 		deplacerMarkerFin(nouvellePositionFin)
 | 
        
           | 1922 | jpm | 359 | 		afficherEtapeGeolocalisation(3);
 | 
        
           | 1346 | aurelien | 360 | 	}
 | 
        
           |  |  | 361 | }
 | 
        
           |  |  | 362 |   | 
        
           | 1922 | jpm | 363 | function initialiserMarkerFin() {
 | 
        
           |  |  | 364 | 	if (markerFin == undefined) {
 | 
        
           |  |  | 365 | 		markerFin = new google.maps.Marker({
 | 
        
           |  |  | 366 | 			map: map,
 | 
        
           |  |  | 367 | 			draggable: true,
 | 
        
           |  |  | 368 | 			title: 'Fin de la portion de rue étudiée',
 | 
        
           |  |  | 369 | 			icon: GOOGLE_MAP_MARQUEUR_FIN_URL,
 | 
        
           |  |  | 370 | 			position: latLngFin
 | 
        
           |  |  | 371 | 		});
 | 
        
           |  |  | 372 | 		google.maps.event.addListener(markerFin, 'dragend', surDeplacementMarkerFin);
 | 
        
           |  |  | 373 | 	} else {
 | 
        
           |  |  | 374 | 		markerFin.setMap(null);
 | 
        
           | 1346 | aurelien | 375 | 	}
 | 
        
           |  |  | 376 | }
 | 
        
           |  |  | 377 |   | 
        
           | 2256 | aurelien | 378 | function deplacerMarkerFin(nouvellePosition) {
 | 
        
           | 1922 | jpm | 379 | 	latLngFin = nouvellePosition;
 | 
        
           |  |  | 380 | 	markerFin.setMap(map);
 | 
        
           |  |  | 381 | 	markerFin.setPosition(latLngFin);
 | 
        
           |  |  | 382 | 	dessinerLigneRue(latLngDeb, latLngFin);
 | 
        
           |  |  | 383 | }
 | 
        
           |  |  | 384 |   | 
        
           |  |  | 385 | function surDeplacementMarkerFin() {
 | 
        
           |  |  | 386 | 	dessinerLigneRue(markerDeb.getPosition(), markerFin.getPosition());
 | 
        
           |  |  | 387 | 	afficherCentreRue();
 | 
        
           |  |  | 388 | 	afficherEtapeGeolocalisation(4);
 | 
        
           |  |  | 389 | }
 | 
        
           |  |  | 390 |   | 
        
           | 1346 | aurelien | 391 | function dessinerLigneRue(pointDebut, pointFin) {
 | 
        
           | 1922 | jpm | 392 | 	if (ligneRue != undefined) {
 | 
        
           | 1346 | aurelien | 393 | 		ligneRue.setMap(null);
 | 
        
           |  |  | 394 | 	}
 | 
        
           | 2408 | jpm | 395 |   | 
        
           | 1346 | aurelien | 396 | 	ligneRue = new google.maps.Polyline({
 | 
        
           | 1922 | jpm | 397 | 		path: [pointDebut, pointFin],
 | 
        
           |  |  | 398 | 		strokeColor: "#FF0000",
 | 
        
           |  |  | 399 | 		strokeOpacity: 1.0,
 | 
        
           |  |  | 400 | 		strokeWeight: 2
 | 
        
           |  |  | 401 | 	});
 | 
        
           | 1346 | aurelien | 402 |   | 
        
           |  |  | 403 | 	ligneRue.setMap(map);
 | 
        
           |  |  | 404 | }
 | 
        
           |  |  | 405 |   | 
        
           | 1922 | jpm | 406 | function afficherCentreRue() {
 | 
        
           |  |  | 407 | 	latLngDeb = markerDeb.getPosition();
 | 
        
           |  |  | 408 | 	latLngFin = markerFin.getPosition();
 | 
        
           | 2408 | jpm | 409 | 	latLngCentre = new google.maps.LatLng((latLngFin.lat() + latLngDeb.lat())/2, (latLngFin.lng() + latLngDeb.lng())/2);
 | 
        
           | 1922 | jpm | 410 | 	mettreAJourStationPosition(latLngCentre);
 | 
        
           |  |  | 411 | }
 | 
        
           |  |  | 412 |   | 
        
           |  |  | 413 | function mettreAJourStationPosition(latLng) {
 | 
        
           |  |  | 414 | 	var lat = latLng.lat().toFixed(5),
 | 
        
           | 2408 | jpm | 415 | 		lng = latLng.lng().toFixed(5);
 | 
        
           | 1346 | aurelien | 416 | 	remplirChampLatitude(lat);
 | 
        
           |  |  | 417 | 	remplirChampLongitude(lng);
 | 
        
           |  |  | 418 | }
 | 
        
           |  |  | 419 |   | 
        
           |  |  | 420 | function remplirChampLatitude(latDecimale) {
 | 
        
           | 1922 | jpm | 421 | 	var lat = Math.round(latDecimale * 100000) / 100000;
 | 
        
           | 1346 | aurelien | 422 | 	$('#latitude').val(lat);
 | 
        
           |  |  | 423 | }
 | 
        
           |  |  | 424 |   | 
        
           |  |  | 425 | function remplirChampLongitude(lngDecimale) {
 | 
        
           | 1922 | jpm | 426 | 	var lng = Math.round(lngDecimale * 100000) / 100000;
 | 
        
           | 1346 | aurelien | 427 | 	$('#longitude').val(lng);
 | 
        
           |  |  | 428 | }
 | 
        
           |  |  | 429 |   | 
        
           |  |  | 430 | function trouverCommune(pos) {
 | 
        
           |  |  | 431 | 	$(function() {
 | 
        
           | 1922 | jpm | 432 | 		var url_service = SERVICE_NOM_COMMUNE_URL,
 | 
        
           |  |  | 433 | 			urlNomCommuneFormatee = url_service.replace('{lat}', pos.lat()).replace('{lon}', pos.lng());
 | 
        
           | 1346 | aurelien | 434 | 		$.ajax({
 | 
        
           | 1922 | jpm | 435 | 			url: urlNomCommuneFormatee,
 | 
        
           |  |  | 436 | 			type: 'GET',
 | 
        
           |  |  | 437 | 			dataType: 'jsonp',
 | 
        
           |  |  | 438 | 			beforeSend: function() {
 | 
        
           | 2408 | jpm | 439 | 				$('.commune-info').empty();
 | 
        
           | 1922 | jpm | 440 | 				$('#dialogue-erreur .alert-txt').empty();
 | 
        
           | 1346 | aurelien | 441 | 			},
 | 
        
           | 1922 | jpm | 442 | 			success: function(data, textStatus, jqXHR) {
 | 
        
           |  |  | 443 | 				$('.commune-info').empty();
 | 
        
           |  |  | 444 | 				$('#commune-nom').append(data.nom);
 | 
        
           |  |  | 445 | 				$('#commune-code-insee').append(data.codeINSEE);
 | 
        
           |  |  | 446 | 				$('#marqueur-commune').data('commune', {'nom' : data.nom, 'codeInsee' : data.codeINSEE});
 | 
        
           | 1346 | aurelien | 447 | 			},
 | 
        
           | 1922 | jpm | 448 | 			statusCode: {
 | 
        
           |  |  | 449 | 				500: function(jqXHR, textStatus, errorThrown) {
 | 
        
           | 2408 | jpm | 450 | 					if (DEBUG) {
 | 
        
           | 1922 | jpm | 451 | 						$('#dialogue-erreur .alert-txt').append('<p id="msg">Un problème est survenu lors de l\'appel au service fournissante le nom des communes.</p>');
 | 
        
           | 1346 | aurelien | 452 | 						reponse = jQuery.parseJSON(jqXHR.responseText);
 | 
        
           |  |  | 453 | 						var erreurMsg = "";
 | 
        
           |  |  | 454 | 						if (reponse != null) {
 | 
        
           |  |  | 455 | 							$.each(reponse, function (cle, valeur) {
 | 
        
           | 1922 | jpm | 456 | 								erreurMsg += valeur + '<br />';
 | 
        
           | 1346 | aurelien | 457 | 							});
 | 
        
           |  |  | 458 | 						}
 | 
        
           | 2408 | jpm | 459 |   | 
        
           | 1922 | jpm | 460 | 						$('#dialogue-erreur .alert-txt').append(
 | 
        
           |  |  | 461 | 							'<p class="msg-erreur">Erreur 500 : '+errorThrown+'<br />'+erreurMsg+'</p>');
 | 
        
           | 1346 | aurelien | 462 | 					}
 | 
        
           | 1922 | jpm | 463 | 				}
 | 
        
           | 1346 | aurelien | 464 | 			},
 | 
        
           | 1922 | jpm | 465 | 			error: function(jqXHR, textStatus, errorThrown) {
 | 
        
           | 1346 | aurelien | 466 | 				if (DEBUG) {
 | 
        
           | 1922 | jpm | 467 | 					$('#dialogue-erreur .alert-txt').append(
 | 
        
           |  |  | 468 | 						'<p class="msg">Une erreur Ajax est survenue lors de la transmission de vos observations.</p>');
 | 
        
           | 1346 | aurelien | 469 | 					reponse = jQuery.parseJSON(jqXHR.responseText);
 | 
        
           | 1922 | jpm | 470 | 					var erreurMsg = '';
 | 
        
           | 1346 | aurelien | 471 | 					if (reponse != null) {
 | 
        
           |  |  | 472 | 						$.each(reponse, function (cle, valeur) {
 | 
        
           | 1922 | jpm | 473 | 							erreurMsg += valeur + '<br />';
 | 
        
           | 1346 | aurelien | 474 | 						});
 | 
        
           |  |  | 475 | 					}
 | 
        
           | 2408 | jpm | 476 |   | 
        
           | 1922 | jpm | 477 | 					$('#dialogue-erreur .alert-txt').append(
 | 
        
           |  |  | 478 | 						'<p class="msg-erreur">Erreur Ajax : '+errorThrown+' (type : '+textStatus+') <br />'+erreurMsg+'</p>');
 | 
        
           | 1346 | aurelien | 479 | 				}
 | 
        
           |  |  | 480 | 			},
 | 
        
           | 1922 | jpm | 481 | 			complete: function(jqXHR, textStatus) {
 | 
        
           |  |  | 482 | 				var debugMsg = extraireEnteteDebug(jqXHR);
 | 
        
           |  |  | 483 | 				if (debugMsg != '') {
 | 
        
           |  |  | 484 | 					if (DEBUG) {
 | 
        
           |  |  | 485 | 						$("#dialogue-erreur .alert-txt").append('<pre class="msg-debug msg">Débogage : '+debugMsg+'</pre>');
 | 
        
           | 1346 | aurelien | 486 | 					}
 | 
        
           |  |  | 487 | 				}
 | 
        
           |  |  | 488 | 				if ($("#dialogue-erreur .msg").length > 0) {
 | 
        
           | 1922 | jpm | 489 | 					$("#dialogue-erreur").show();
 | 
        
           | 1346 | aurelien | 490 | 				}
 | 
        
           |  |  | 491 | 			}
 | 
        
           |  |  | 492 | 		});
 | 
        
           | 1054 | jpm | 493 | 	});
 | 
        
           |  |  | 494 | }
 | 
        
           |  |  | 495 |   | 
        
           | 1922 | jpm | 496 | function afficherEtapeGeolocalisation(numEtape) {
 | 
        
           |  |  | 497 | 	$('.liste_indication_geolocalisation').children().hide();
 | 
        
           |  |  | 498 | 	$('.liste_indication_geolocalisation :nth-child('+numEtape+')').show();
 | 
        
           |  |  | 499 | }
 | 
        
           |  |  | 500 |   | 
        
           |  |  | 501 | function afficherErreurGoogleMap(status) {
 | 
        
           |  |  | 502 | 	if (DEBUG) {
 | 
        
           |  |  | 503 | 		$('#dialogue-google-map .contenu').empty().append(
 | 
        
           |  |  | 504 | 			'<pre class="msg-erreur">'+
 | 
        
           |  |  | 505 | 			"Le service de Géocodage de Google Map a échoué à cause de l'erreur : "+status+
 | 
        
           |  |  | 506 | 			'</pre>');
 | 
        
           |  |  | 507 | 		afficherPanneau('#dialogue-google-map');
 | 
        
           |  |  | 508 | 	}
 | 
        
           |  |  | 509 | }
 | 
        
           |  |  | 510 |   | 
        
           |  |  | 511 | function geolocaliser(event) {
 | 
        
           |  |  | 512 | 	var latitude = $('#latitude').val(),
 | 
        
           |  |  | 513 | 		longitude = $('#longitude').val(),
 | 
        
           |  |  | 514 | 		nouvellePosition = new google.maps.LatLng(latitude, longitude);
 | 
        
           |  |  | 515 | 	initialiserMarkerDeb();
 | 
        
           |  |  | 516 | 	deplacerMarkerDeb(nouvellePosition);
 | 
        
           |  |  | 517 | 	afficherEtapeGeolocalisation(2);
 | 
        
           |  |  | 518 | 	map.setZoom(16);
 | 
        
           |  |  | 519 | 	arreter(event);
 | 
        
           |  |  | 520 | }
 | 
        
           |  |  | 521 |   | 
        
           |  |  | 522 | function tenterGeolocalisation() {
 | 
        
           |  |  | 523 | 	if (navigator.geolocation) {
 | 
        
           |  |  | 524 | 		navigator.geolocation.getCurrentPosition(function(position) {
 | 
        
           |  |  | 525 | 			var latitude = position.coords.latitude,
 | 
        
           |  |  | 526 | 				longitude = position.coords.longitude,
 | 
        
           |  |  | 527 | 				nouvellePosition = new google.maps.LatLng(latitude, longitude);
 | 
        
           |  |  | 528 | 			initialiserMarkerDeb();
 | 
        
           |  |  | 529 | 			deplacerMarkerDeb(nouvellePosition);
 | 
        
           |  |  | 530 | 			map.setZoom(16);
 | 
        
           |  |  | 531 | 		});
 | 
        
           |  |  | 532 | 	}
 | 
        
           |  |  | 533 | }
 | 
        
           |  |  | 534 |   | 
        
           |  |  | 535 | function surClickDansCarte(event) {
 | 
        
           |  |  | 536 | 	deplacerMarkerDeb(event.latLng);
 | 
        
           |  |  | 537 | }
 | 
        
           |  |  | 538 |   | 
        
           |  |  | 539 |   | 
        
           | 1054 | jpm | 540 | //+---------------------------------------------------------------------------------------------------------+
 | 
        
           | 1922 | jpm | 541 | //AUTO-COMPLÉTION Noms Scientifiques => OK
 | 
        
           |  |  | 542 |   | 
        
           |  |  | 543 | function ajouterAutocompletionNoms() {
 | 
        
           |  |  | 544 | 	$('#taxon').autocomplete({
 | 
        
           | 2408 | jpm | 545 | 		source: function(requete, add){
 | 
        
           | 1922 | jpm | 546 | 			// la variable de requête doit être vidée car sinon le parametre "term" est ajouté
 | 
        
           | 2408 | jpm | 547 |   | 
        
           | 1922 | jpm | 548 | 			var url = getUrlAutocompletionNomsSci();
 | 
        
           |  |  | 549 | 			$.getJSON(url, function(data) {
 | 
        
           |  |  | 550 | 				var suggestions = traiterRetourNomsSci(data);
 | 
        
           | 2408 | jpm | 551 | 				add(suggestions);
 | 
        
           | 1922 | jpm | 552 | 			});
 | 
        
           |  |  | 553 | 		},
 | 
        
           |  |  | 554 | 		html: true
 | 
        
           |  |  | 555 | 	});
 | 
        
           | 2408 | jpm | 556 |   | 
        
           | 1922 | jpm | 557 | 	$('#taxon').bind('autocompleteselect', function(event, ui) {
 | 
        
           |  |  | 558 | 		$('#taxon').data(ui.item);
 | 
        
           |  |  | 559 | 		if (ui.item.retenu == true) {
 | 
        
           |  |  | 560 | 			$('#taxon').addClass('ns-retenu');
 | 
        
           |  |  | 561 | 		} else {
 | 
        
           |  |  | 562 | 			$('#taxon').removeClass('ns-retenu');
 | 
        
           |  |  | 563 | 		}
 | 
        
           |  |  | 564 | 	});
 | 
        
           |  |  | 565 | }
 | 
        
           |  |  | 566 |   | 
        
           |  |  | 567 | function getUrlAutocompletionNomsSci() {
 | 
        
           |  |  | 568 | 	var mots = $('#taxon').val(),
 | 
        
           | 2408 | jpm | 569 | 		url = SERVICE_AUTOCOMPLETION_NOM_SCI_URL_TPL.replace('{referentiel}',NOM_SCI_REFERENTIEL);
 | 
        
           | 1922 | jpm | 570 | 	url = url.replace('{masque}', mots);
 | 
        
           |  |  | 571 | 	return url;
 | 
        
           |  |  | 572 | }
 | 
        
           |  |  | 573 |   | 
        
           |  |  | 574 | function traiterRetourNomsSci(data) {
 | 
        
           |  |  | 575 | 	var suggestions = [];
 | 
        
           |  |  | 576 | 	if (data.resultat != undefined) {
 | 
        
           |  |  | 577 | 		$.each(data.resultat, function(i, val) {
 | 
        
           |  |  | 578 | 			val.nn = i;
 | 
        
           |  |  | 579 | 			var nom = {label: '', value: '', nt: '', nomSel: '', nomSelComplet: '', numNomSel: '',
 | 
        
           |  |  | 580 | 				nomRet: '', numNomRet: '', famille: '', retenu: false
 | 
        
           |  |  | 581 | 			};
 | 
        
           |  |  | 582 | 			if (suggestions.length >= AUTOCOMPLETION_ELEMENTS_NBRE) {
 | 
        
           |  |  | 583 | 				nom.label = '...';
 | 
        
           |  |  | 584 | 				nom.value = $('#taxon').val();
 | 
        
           |  |  | 585 | 				suggestions.push(nom);
 | 
        
           |  |  | 586 | 				return false;
 | 
        
           |  |  | 587 | 			} else {
 | 
        
           |  |  | 588 | 				nom.label = val.nom_sci_complet;
 | 
        
           |  |  | 589 | 				nom.value = val.nom_sci_complet;
 | 
        
           |  |  | 590 | 				nom.nt = val.num_taxonomique;
 | 
        
           |  |  | 591 | 				nom.nomSel = val.nom_sci;
 | 
        
           |  |  | 592 | 				nom.nomSelComplet = val.nom_sci_complet;
 | 
        
           |  |  | 593 | 				nom.numNomSel = val.nn;
 | 
        
           |  |  | 594 | 				nom.nomRet = val.nom_retenu_complet;
 | 
        
           |  |  | 595 | 				nom.numNomRet = val['nom_retenu.id'];
 | 
        
           |  |  | 596 | 				nom.famille = val.famille;
 | 
        
           |  |  | 597 | 				nom.retenu = (val.retenu == 'false') ? false : true;
 | 
        
           | 2408 | jpm | 598 |   | 
        
           | 1922 | jpm | 599 | 				suggestions.push(nom);
 | 
        
           |  |  | 600 | 			}
 | 
        
           |  |  | 601 | 		});
 | 
        
           |  |  | 602 | 	}
 | 
        
           |  |  | 603 | 	return suggestions;
 | 
        
           |  |  | 604 | }
 | 
        
           |  |  | 605 |   | 
        
           |  |  | 606 | /*
 | 
        
           |  |  | 607 | * jQuery UI Autocomplete HTML Extension
 | 
        
           |  |  | 608 | *
 | 
        
           |  |  | 609 | * Copyright 2010, Scott González (http://scottgonzalez.com)
 | 
        
           |  |  | 610 | * Dual licensed under the MIT or GPL Version 2 licenses.
 | 
        
           |  |  | 611 | *
 | 
        
           |  |  | 612 | * http://github.com/scottgonzalez/jquery-ui-extensions
 | 
        
           | 2408 | jpm | 613 | *
 | 
        
           | 1922 | jpm | 614 | * Adaptation par Aurélien Peronnet pour la mise en gras des noms de taxons valides
 | 
        
           |  |  | 615 | */
 | 
        
           |  |  | 616 | (function($) {
 | 
        
           |  |  | 617 | 	var proto = $.ui.autocomplete.prototype,
 | 
        
           |  |  | 618 | 		initSource = proto._initSource;
 | 
        
           | 2408 | jpm | 619 |   | 
        
           | 1922 | jpm | 620 | 	function filter(array, term) {
 | 
        
           |  |  | 621 | 		var matcher = new RegExp($.ui.autocomplete.escapeRegex(term), 'i');
 | 
        
           |  |  | 622 | 		return $.grep(array, function(value) {
 | 
        
           |  |  | 623 | 			return matcher.test($('<div>').html(value.label || value.value || value).text());
 | 
        
           |  |  | 624 | 		});
 | 
        
           |  |  | 625 | 	}
 | 
        
           | 2408 | jpm | 626 |   | 
        
           | 1922 | jpm | 627 | 	$.extend(proto, {
 | 
        
           |  |  | 628 | 		_initSource: function() {
 | 
        
           |  |  | 629 | 			if (this.options.html && $.isArray(this.options.source)) {
 | 
        
           |  |  | 630 | 				this.source = function( request, response ) {
 | 
        
           |  |  | 631 | 					response(filter(this.options.source, request.term));
 | 
        
           |  |  | 632 | 				};
 | 
        
           |  |  | 633 | 			} else {
 | 
        
           |  |  | 634 | 				initSource.call(this);
 | 
        
           |  |  | 635 | 			}
 | 
        
           |  |  | 636 | 		},
 | 
        
           |  |  | 637 | 		_renderItem: function(ul, item) {
 | 
        
           |  |  | 638 | 			if (item.retenu == true) {
 | 
        
           |  |  | 639 | 				item.label = '<strong>'+item.label+'</strong>';
 | 
        
           |  |  | 640 | 			}
 | 
        
           | 2408 | jpm | 641 |   | 
        
           | 1922 | jpm | 642 | 			return $('<li></li>')
 | 
        
           |  |  | 643 | 				.data('item.autocomplete', item)
 | 
        
           |  |  | 644 | 				.append($('<a></a>')[this.options.html ? 'html' : 'text'](item.label))
 | 
        
           |  |  | 645 | 				.appendTo(ul);
 | 
        
           |  |  | 646 | 		}
 | 
        
           |  |  | 647 | 	});
 | 
        
           |  |  | 648 | })(jQuery);
 | 
        
           |  |  | 649 |   | 
        
           |  |  | 650 | //+----------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 651 | //UPLOAD PHOTO : Traitement de l'image => OK
 | 
        
           |  |  | 652 |   | 
        
           |  |  | 653 | $(document).ready(function() {
 | 
        
           |  |  | 654 | 	$('#fichier').on('click change', function(event) {
 | 
        
           |  |  | 655 | 		if ($(this).val().length > 0) {
 | 
        
           |  |  | 656 | 			arreter(event);
 | 
        
           | 2408 | jpm | 657 | 			var options = {
 | 
        
           |  |  | 658 | 				success: afficherMiniature, // post-submit callback
 | 
        
           |  |  | 659 | 				dataType: 'xml', // 'xml', 'script', or 'json' (expected server response type)
 | 
        
           |  |  | 660 | 				resetForm: true // reset the form after successful submit
 | 
        
           | 1922 | jpm | 661 | 			};
 | 
        
           |  |  | 662 | 			$('#miniature').append(
 | 
        
           |  |  | 663 | 				'<img id="miniature-chargement" class="miniature" alt="chargement" src="'+CHARGEMENT_IMAGE_URL+'"/>');
 | 
        
           |  |  | 664 | 			$('#ajouter-obs').attr('disabled', 'disabled');
 | 
        
           |  |  | 665 | 			if (verifierFormat($(this).val())) {
 | 
        
           |  |  | 666 | 				$('#form-upload').ajaxSubmit(options);
 | 
        
           |  |  | 667 | 			} else {
 | 
        
           | 2005 | aurelien | 668 | 				$('#form-upload')[0].reset();
 | 
        
           | 1922 | jpm | 669 | 				window.alert("Le format de fichier n'est pas supporté, les formats acceptés sont "+	$('#fichier').attr('accept'));
 | 
        
           |  |  | 670 | 			}
 | 
        
           |  |  | 671 | 			return false;
 | 
        
           |  |  | 672 | 		}
 | 
        
           |  |  | 673 | 	});
 | 
        
           | 2408 | jpm | 674 |   | 
        
           | 1922 | jpm | 675 | 	$('#photo-placeholder').click(function(event) {
 | 
        
           |  |  | 676 | 		$('#fichier').click();
 | 
        
           |  |  | 677 | 	});
 | 
        
           | 2408 | jpm | 678 |   | 
        
           | 1922 | jpm | 679 | 	$('body').on('click', '.effacer-miniature', function(event) {
 | 
        
           |  |  | 680 | 		supprimerMiniature($(this));
 | 
        
           |  |  | 681 | 	});
 | 
        
           |  |  | 682 | });
 | 
        
           |  |  | 683 |   | 
        
           |  |  | 684 |   | 
        
           |  |  | 685 |   | 
        
           |  |  | 686 | function verifierFormat(nom) {
 | 
        
           |  |  | 687 | 	var parts = nom.split('.');
 | 
        
           |  |  | 688 | 	extension = parts[parts.length - 1];
 | 
        
           |  |  | 689 | 	return (extension.toLowerCase() == 'jpeg' || extension.toLowerCase() == 'jpg');
 | 
        
           |  |  | 690 | }
 | 
        
           |  |  | 691 |   | 
        
           | 2408 | jpm | 692 | function afficherMiniature(reponse) {
 | 
        
           | 1922 | jpm | 693 | 	if (DEBUG) {
 | 
        
           |  |  | 694 | 		var debogage = $('debogage', reponse).text();
 | 
        
           | 1964 | jpm | 695 | 		console.log('Débogage upload : ' + debogage);
 | 
        
           | 1922 | jpm | 696 | 	}
 | 
        
           |  |  | 697 | 	var message = $('message', reponse).text();
 | 
        
           |  |  | 698 | 	if (message != '') {
 | 
        
           |  |  | 699 | 		$('#miniature-msg').append(message);
 | 
        
           |  |  | 700 | 	} else {
 | 
        
           |  |  | 701 | 		$('#miniatures').append(creerWidgetMiniature(reponse));
 | 
        
           |  |  | 702 | 	}
 | 
        
           |  |  | 703 | 	$('#ajouter-obs').removeAttr('disabled');
 | 
        
           |  |  | 704 | }
 | 
        
           |  |  | 705 |   | 
        
           |  |  | 706 | function creerWidgetMiniature(reponse) {
 | 
        
           |  |  | 707 | 	var miniatureUrl = $('miniature-url', reponse).text(),
 | 
        
           |  |  | 708 | 		imgNom = $('image-nom', reponse).text(),
 | 
        
           | 2408 | jpm | 709 | 		html =
 | 
        
           | 1922 | jpm | 710 | 			'<div class="miniature">'+
 | 
        
           |  |  | 711 | 				'<img class="miniature-img" class="miniature" alt="'+imgNom+'" src="'+miniatureUrl+'"/>'+
 | 
        
           |  |  | 712 | 				'<button class="btn effacer-miniature" type="button">Effacer</button>'+
 | 
        
           |  |  | 713 | 			'</div>'
 | 
        
           |  |  | 714 | 	return html;
 | 
        
           |  |  | 715 | }
 | 
        
           |  |  | 716 |   | 
        
           |  |  | 717 | function supprimerMiniature(miniature) {
 | 
        
           |  |  | 718 | 	miniature.parents('.miniature').remove();
 | 
        
           |  |  | 719 | }
 | 
        
           |  |  | 720 |   | 
        
           |  |  | 721 | function supprimerMiniatures() {
 | 
        
           |  |  | 722 | 	$('#miniatures').empty();
 | 
        
           |  |  | 723 | 	$('#miniature-msg').empty();
 | 
        
           |  |  | 724 | }
 | 
        
           |  |  | 725 |   | 
        
           |  |  | 726 |   | 
        
           |  |  | 727 | //+---------------------------------------------------------------------------------------------------------+
 | 
        
           | 1916 | jpm | 728 | //FORMULAIRE : traitements génériques
 | 
        
           |  |  | 729 |   | 
        
           | 1054 | jpm | 730 | $(document).ready(function() {
 | 
        
           | 1922 | jpm | 731 | 	// Interaction générales
 | 
        
           | 1916 | jpm | 732 | 	$('.alert .close').on('click', fermerPanneauAlert);
 | 
        
           |  |  | 733 | 	$('.has-tooltip').tooltip('enable');
 | 
        
           |  |  | 734 | 	$('#btn-aide').on('click', basculerAffichageAide);
 | 
        
           | 1922 | jpm | 735 | 	$('.dropdown-menu input, .dropdown-menu label').on('click', function(event) {
 | 
        
           |  |  | 736 | 		event.stopPropagation();
 | 
        
           |  |  | 737 | 	});
 | 
        
           | 2408 | jpm | 738 |   | 
        
           | 1946 | jpm | 739 | 	// Gestion de la liste des taxons
 | 
        
           |  |  | 740 | 	ajouterAutocompletionNoms();
 | 
        
           |  |  | 741 | 	surChangementTaxonListe();
 | 
        
           |  |  | 742 | 	$('#taxon-liste').on('change', surChangementTaxonListe);
 | 
        
           | 1964 | jpm | 743 | 	if (DEBUG) {
 | 
        
           |  |  | 744 | 		console.log('Selected taxon:'+$('#taxon-liste option:selected').val());
 | 
        
           |  |  | 745 | 	}
 | 
        
           | 1922 | jpm | 746 |   | 
        
           | 1946 | jpm | 747 | 	// Validation du formulaire
 | 
        
           |  |  | 748 | 	configurerFormValidator();
 | 
        
           |  |  | 749 | 	definirReglesFormValidator();
 | 
        
           | 2408 | jpm | 750 |   | 
        
           | 1922 | jpm | 751 | 	// Interaction sur le formulaire obs
 | 
        
           |  |  | 752 | 	configurerDatePicker('#date');
 | 
        
           |  |  | 753 | 	$('a.afficher-coord').on('click', basculerAffichageCoord);
 | 
        
           |  |  | 754 | 	$('.cb-milieux').on('click', function(event) {
 | 
        
           |  |  | 755 | 		$(this).valid();
 | 
        
           |  |  | 756 | 		event.stopPropagation();
 | 
        
           |  |  | 757 | 	});
 | 
        
           |  |  | 758 | 	$('#ajouter-obs').on('click', ajouterObs);
 | 
        
           |  |  | 759 | 	$('.obs-nbre').on('changement', surChangementNbreObs);
 | 
        
           |  |  | 760 | 	$('body').on('click', '.supprimer-obs', supprimerObs);
 | 
        
           |  |  | 761 | 	$('#transmettre-obs').on('click', transmettreObs);
 | 
        
           | 2408 | jpm | 762 |   | 
        
           | 1922 | jpm | 763 | 	// Défilement des photos
 | 
        
           |  |  | 764 | 	$('body').on('click', '.defilement-control-zone', function(event) {
 | 
        
           |  |  | 765 | 		defilerMiniatures($(this));
 | 
        
           | 1054 | jpm | 766 | 	});
 | 
        
           | 1922 | jpm | 767 | 	$('body').on('mouseover', '.defilement-control-zone', function(event) {
 | 
        
           |  |  | 768 | 		$('.defilement-control', this).removeClass('hidden');
 | 
        
           | 1054 | jpm | 769 | 	});
 | 
        
           | 1922 | jpm | 770 | 	$('body').on('mouseout', '.defilement-control-zone', function(event) {
 | 
        
           |  |  | 771 | 		$('.defilement-control', this).addClass('hidden');
 | 
        
           | 1054 | jpm | 772 | 	});
 | 
        
           |  |  | 773 | });
 | 
        
           |  |  | 774 |   | 
        
           | 1916 | jpm | 775 | function configurerFormValidator() {
 | 
        
           |  |  | 776 | 	$.validator.addMethod(
 | 
        
           | 2408 | jpm | 777 | 		'dateCel',
 | 
        
           |  |  | 778 | 		function (value, element) {
 | 
        
           |  |  | 779 | 			return value == '' || (/^[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{4}$/.test(value));
 | 
        
           |  |  | 780 | 		},
 | 
        
           | 1916 | jpm | 781 | 		'Format : jj/mm/aaaa. Date incomplète, utiliser 0, exemple : 00/12/2011.');
 | 
        
           | 2408 | jpm | 782 |   | 
        
           | 1916 | jpm | 783 | 	$.extend($.validator.defaults, {
 | 
        
           |  |  | 784 | 		ignore: [],// Forcer Jquery Validate à examiner les éléments avec en display:none;
 | 
        
           |  |  | 785 | 		highlight: function(element) {
 | 
        
           |  |  | 786 | 			$(element).closest('.control-group').removeClass('success').addClass('error');
 | 
        
           |  |  | 787 | 		},
 | 
        
           |  |  | 788 | 		success: function(element) {
 | 
        
           |  |  | 789 | 			element.text('OK!').addClass('valid');
 | 
        
           |  |  | 790 | 			element.closest('.control-group').removeClass('error').addClass('success');
 | 
        
           | 2408 | jpm | 791 |   | 
        
           | 1916 | jpm | 792 | 			if (element.attr('id') == 'taxon' && $('#taxon').val() != '') {
 | 
        
           |  |  | 793 | 				// Si le taxon n'est pas lié au référentiel, on vide le data associé
 | 
        
           |  |  | 794 | 				if ($('#taxon').data('value') != $('#taxon').val()) {
 | 
        
           |  |  | 795 | 					$('#taxon').data('numNomSel', '');
 | 
        
           |  |  | 796 | 					$('#taxon').data('nomRet', '');
 | 
        
           |  |  | 797 | 					$('#taxon').data('numNomRet', '');
 | 
        
           |  |  | 798 | 					$('#taxon').data('nt', '');
 | 
        
           |  |  | 799 | 					$('#taxon').data('famille', '');
 | 
        
           |  |  | 800 | 				}
 | 
        
           |  |  | 801 | 			}
 | 
        
           |  |  | 802 | 		}
 | 
        
           |  |  | 803 | 	});
 | 
        
           |  |  | 804 | }
 | 
        
           |  |  | 805 |   | 
        
           |  |  | 806 | function definirReglesFormValidator() {
 | 
        
           |  |  | 807 | 	$('#form-observateur').validate({
 | 
        
           |  |  | 808 | 		rules: {
 | 
        
           |  |  | 809 | 			courriel: {
 | 
        
           |  |  | 810 | 				required: true,
 | 
        
           |  |  | 811 | 				email: true},
 | 
        
           |  |  | 812 | 			courriel_confirmation: {
 | 
        
           |  |  | 813 | 				required: true,
 | 
        
           |  |  | 814 | 				equalTo: '#courriel'},
 | 
        
           |  |  | 815 | 			prenom: {
 | 
        
           |  |  | 816 | 				required: true},
 | 
        
           |  |  | 817 | 			nom: {
 | 
        
           |  |  | 818 | 				required: true}
 | 
        
           |  |  | 819 | 		}
 | 
        
           |  |  | 820 | 	});
 | 
        
           |  |  | 821 | 	$('#form-obs').validate({
 | 
        
           |  |  | 822 | 		rules: {
 | 
        
           |  |  | 823 | 			station: {
 | 
        
           |  |  | 824 | 				required: true},
 | 
        
           |  |  | 825 | 			latitude : {
 | 
        
           |  |  | 826 | 				required: true,
 | 
        
           |  |  | 827 | 				range: [-90, 90]},
 | 
        
           |  |  | 828 | 			longitude: {
 | 
        
           |  |  | 829 | 				required: true,
 | 
        
           |  |  | 830 | 				range: [-180, 180]},
 | 
        
           |  |  | 831 | 			date: {
 | 
        
           |  |  | 832 | 				required: true,
 | 
        
           |  |  | 833 | 				'dateCel' : true},
 | 
        
           | 1956 | jpm | 834 | 			coteRue: {
 | 
        
           | 1916 | jpm | 835 | 				required: true},
 | 
        
           |  |  | 836 | 			'taxon-liste': {
 | 
        
           |  |  | 837 | 				required: true},
 | 
        
           |  |  | 838 | 			'milieux[]': {
 | 
        
           |  |  | 839 | 				required: true,
 | 
        
           |  |  | 840 | 				minlength: 1}
 | 
        
           |  |  | 841 | 		},
 | 
        
           |  |  | 842 | 		errorPlacement: function(error, element) {
 | 
        
           |  |  | 843 | 			if (element.attr('name') == 'date') {
 | 
        
           |  |  | 844 | 				element.parent('.input-prepend').after(error);
 | 
        
           |  |  | 845 | 			} else if (element.attr('name') == 'milieux[]') {
 | 
        
           |  |  | 846 | 				error.insertAfter('#milieux-controls');
 | 
        
           |  |  | 847 | 			} else {
 | 
        
           |  |  | 848 | 				error.insertAfter(element);
 | 
        
           |  |  | 849 | 			}
 | 
        
           |  |  | 850 | 		},
 | 
        
           |  |  | 851 | 		messages: {
 | 
        
           |  |  | 852 | 			'milieu[]': 'Vous devez sélectionner au moins un milieu'
 | 
        
           |  |  | 853 | 		}
 | 
        
           |  |  | 854 | 	});
 | 
        
           |  |  | 855 | }
 | 
        
           |  |  | 856 |   | 
        
           | 1946 | jpm | 857 | function validerFormulaire() {
 | 
        
           |  |  | 858 | 	var observateur = $('#form-observateur').valid(),
 | 
        
           |  |  | 859 | 		obs = $('#form-obs').valid(),
 | 
        
           | 1956 | jpm | 860 | 		debRue = (latLngDeb == undefined || latLngDeb == latLngFin) ? false : true,
 | 
        
           |  |  | 861 | 		finRue = (latLngFin == undefined || latLngDeb == latLngFin) ? false : true;
 | 
        
           | 1946 | jpm | 862 | 	var ok = (observateur && obs && debRue && finRue) ? true : false;
 | 
        
           | 1964 | jpm | 863 | 	//console.log('observateur:'+observateur+'-obs:'+obs+'-debRue:'+debRue+'('+latLngDeb+')-finRue:'+finRue+'('+latLngDeb+')');
 | 
        
           | 1946 | jpm | 864 | 	return ok;
 | 
        
           |  |  | 865 | }
 | 
        
           |  |  | 866 |   | 
        
           | 1916 | jpm | 867 | function surChangementTaxonListe() {
 | 
        
           |  |  | 868 | 	if ($('#taxon-liste').val() === '?') {
 | 
        
           |  |  | 869 | 		$('#taxon-input-groupe').removeClass('hidden');
 | 
        
           |  |  | 870 | 	} else {
 | 
        
           |  |  | 871 | 		$('#taxon-input-groupe').addClass('hidden');
 | 
        
           |  |  | 872 | 	}
 | 
        
           |  |  | 873 | }
 | 
        
           |  |  | 874 |   | 
        
           |  |  | 875 | function configurerDatePicker(selector) {
 | 
        
           |  |  | 876 | 	$.datepicker.setDefaults($.datepicker.regional['fr']);
 | 
        
           |  |  | 877 | 	$(selector).datepicker({
 | 
        
           |  |  | 878 | 		dateFormat: 'dd/mm/yy',
 | 
        
           | 1990 | jpm | 879 | 		maxDate: new Date,
 | 
        
           | 1916 | jpm | 880 | 		showOn: 'button',
 | 
        
           |  |  | 881 | 		buttonImageOnly: true,
 | 
        
           |  |  | 882 | 		buttonImage: CALENDRIER_ICONE_URL,
 | 
        
           |  |  | 883 | 		buttonText: 'Afficher le calendrier pour saisir la date.',
 | 
        
           |  |  | 884 | 		showButtonPanel: true,
 | 
        
           |  |  | 885 | 		onSelect: function(date) {
 | 
        
           |  |  | 886 | 			$(this).valid();
 | 
        
           |  |  | 887 | 		}
 | 
        
           |  |  | 888 | 	});
 | 
        
           |  |  | 889 | 	$(selector + ' + img.ui-datepicker-trigger').appendTo(selector + '-icone.add-on');
 | 
        
           |  |  | 890 | }
 | 
        
           |  |  | 891 |   | 
        
           | 1922 | jpm | 892 | function fermerPanneauAlert() {
 | 
        
           |  |  | 893 | 	$(this).parentsUntil('.zone-alerte', '.alert').hide();
 | 
        
           |  |  | 894 | }
 | 
        
           |  |  | 895 |   | 
        
           |  |  | 896 | function basculerAffichageAide() {
 | 
        
           |  |  | 897 | 	if ($(this).hasClass('btn-warning')) {
 | 
        
           |  |  | 898 | 		$('.has-tooltip').tooltip('enable');
 | 
        
           |  |  | 899 | 		$(this).removeClass('btn-warning').addClass('btn-success');
 | 
        
           |  |  | 900 | 		$('#btn-aide-txt', this).text("Désactiver l'aide");
 | 
        
           |  |  | 901 | 	} else {
 | 
        
           |  |  | 902 | 		$('.has-tooltip').tooltip('disable');
 | 
        
           |  |  | 903 | 		$(this).removeClass('btn-success').addClass('btn-warning');
 | 
        
           |  |  | 904 | 		$('#btn-aide-txt', this).text("Activer l'aide");
 | 
        
           | 1346 | aurelien | 905 | 	}
 | 
        
           |  |  | 906 | }
 | 
        
           | 1054 | jpm | 907 |   | 
        
           | 1922 | jpm | 908 | function basculerAffichageCoord() {
 | 
        
           |  |  | 909 | 	$('.afficher-coord-action').toggle();
 | 
        
           |  |  | 910 | 	$('#coordonnees-geo').toggle('slow');
 | 
        
           |  |  | 911 | 	//valeur false pour que le lien ne soit pas suivi
 | 
        
           |  |  | 912 | 	return false;
 | 
        
           |  |  | 913 | }
 | 
        
           |  |  | 914 |   | 
        
           |  |  | 915 | //+----------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 916 | //CRÉER OBS : Gestion des obs => OK
 | 
        
           |  |  | 917 |   | 
        
           |  |  | 918 | var obsNbre = 0;
 | 
        
           |  |  | 919 |   | 
        
           |  |  | 920 | function ajouterObs() {
 | 
        
           |  |  | 921 | 	if (validerFormulaire() == true) {
 | 
        
           |  |  | 922 | 		obsNbre = obsNbre + 1;
 | 
        
           |  |  | 923 | 		$('.obs-nbre').text(obsNbre);
 | 
        
           |  |  | 924 | 		$('.obs-nbre').triggerHandler('changement');
 | 
        
           |  |  | 925 | 		afficherObs();
 | 
        
           |  |  | 926 | 		stockerObsData();
 | 
        
           |  |  | 927 | 		supprimerMiniatures();
 | 
        
           |  |  | 928 | 	} else {
 | 
        
           | 1956 | jpm | 929 | 		// Affichage de tous les panneau cachés avec champ obligatoire
 | 
        
           |  |  | 930 | 		var debRue = (latLngDeb == undefined || latLngDeb == latLngFin) ? false : true,
 | 
        
           |  |  | 931 | 			finRue = (latLngFin == undefined || latLngDeb == latLngFin) ? false : true;
 | 
        
           | 1922 | jpm | 932 | 		if (debRue == false || finRue == false) {
 | 
        
           |  |  | 933 | 			afficherPanneau('#dialogue-form-invalide-rue');
 | 
        
           |  |  | 934 | 		} else {
 | 
        
           | 1956 | jpm | 935 | 			afficherPanneau('#dialogue-form-invalide');
 | 
        
           | 1922 | jpm | 936 | 		}
 | 
        
           | 1956 | jpm | 937 | 		montrerFormIdentite();
 | 
        
           | 1922 | jpm | 938 | 	}
 | 
        
           |  |  | 939 | }
 | 
        
           |  |  | 940 |   | 
        
           |  |  | 941 | function afficherObs() {
 | 
        
           |  |  | 942 | 	var numNomSel = ($('#taxon-liste').val() == '?') ? $('#taxon').data('numNomSel') : $('#taxon-liste').val(),
 | 
        
           |  |  | 943 | 		nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special'),
 | 
        
           |  |  | 944 | 		taxon = ($('#taxon-liste').val() == '?') ? $('#taxon').val() : $('#taxon-liste option:selected').data('nom-a-sauver'),
 | 
        
           | 2408 | jpm | 945 | 		referentiel = (numNomSel == undefined) ? '' : '['+NOM_SCI_REFERENTIEL+']',
 | 
        
           | 1922 | jpm | 946 | 		commune = $('#commune-nom').text(),
 | 
        
           |  |  | 947 | 		codeInsee = $('#commune-code-insee').text(),
 | 
        
           | 1946 | jpm | 948 | 		station = $('input[name="adresse"]').val(),
 | 
        
           | 1922 | jpm | 949 | 		lat = $('input[name="latitude"]').val(),
 | 
        
           |  |  | 950 | 		lng = $('input[name="longitude"]').val(),
 | 
        
           |  |  | 951 | 		date = $('#date').val(),
 | 
        
           |  |  | 952 | 		milieux = getMilieux(),
 | 
        
           |  |  | 953 | 		notes = (nomSpecial ? taxons[numNomSel]['nom_fr'] + ".<br />" : '') + $('#notes').val();
 | 
        
           | 2408 | jpm | 954 |   | 
        
           | 1922 | jpm | 955 | 	$('#liste-obs').prepend(
 | 
        
           | 1946 | jpm | 956 | 		'<div id="obs'+obsNbre+'" class="row-fluid obs obs'+obsNbre+'">' +
 | 
        
           |  |  | 957 | 			'<div class="span12">' +
 | 
        
           |  |  | 958 | 				'<div class="well">' +
 | 
        
           |  |  | 959 | 					'<div class="obs-action pull-right has-tooltip" data-placement="bottom" ' +
 | 
        
           |  |  | 960 | 						'title="Supprimer cette observation de la liste à transmettre">' +
 | 
        
           |  |  | 961 | 						'<button class="btn btn-danger supprimer-obs" value="'+obsNbre+'" title="'+obsNbre+'">' +
 | 
        
           |  |  | 962 | 							'<i class="icon-trash icon-white"></i>' +
 | 
        
           |  |  | 963 | 						'</button>' +
 | 
        
           | 2408 | jpm | 964 | 					'</div> ' +
 | 
        
           |  |  | 965 | 					'<div class="row-fluid">' +
 | 
        
           | 1946 | jpm | 966 | 						'<div class="span2 obs-miniatures">' +
 | 
        
           |  |  | 967 | 							ajouterImgMiniatureAuTransfert() +
 | 
        
           | 1922 | jpm | 968 | 						'</div>'+
 | 
        
           | 1946 | jpm | 969 | 						'<div class="span7">' +
 | 
        
           |  |  | 970 | 							'<ul class="unstyled">' +
 | 
        
           | 1922 | jpm | 971 | 								'<li>'+
 | 
        
           |  |  | 972 | 									'<span class="nom-sci">' + taxon + '</span> ' +
 | 
        
           | 1946 | jpm | 973 | 									formaterNumNomSel(numNomSel) +
 | 
        
           |  |  | 974 | 									' observé à <br />' +
 | 
        
           | 1993 | jpm | 975 | 									'<span class="commune">' + commune + '</span> ' +
 | 
        
           |  |  | 976 | 									'(' + codeInsee + '), ' +
 | 
        
           | 1946 | jpm | 977 | 									'<span class="station">' + station + '</span><br /> ' +
 | 
        
           | 1922 | jpm | 978 | 									' le ' +
 | 
        
           |  |  | 979 | 									'<span class="date">' + date + '</span>' +
 | 
        
           |  |  | 980 | 								'</li>' +
 | 
        
           |  |  | 981 | 								'<li>' +
 | 
        
           | 1946 | jpm | 982 | 									'Milieux : ' + milieux + ' ' + ' ; ' +
 | 
        
           | 1922 | jpm | 983 | 								'</li>' +
 | 
        
           |  |  | 984 | 								'<li>' +
 | 
        
           | 2408 | jpm | 985 | 									'Notes : ' + notes +
 | 
        
           | 1946 | jpm | 986 | 								'</li>' +
 | 
        
           |  |  | 987 | 							'</ul>' +
 | 
        
           |  |  | 988 | 						'</div>' +
 | 
        
           |  |  | 989 | 					'</div>' +
 | 
        
           |  |  | 990 | 				'</div>' +
 | 
        
           | 1922 | jpm | 991 | 			'</div>'+
 | 
        
           |  |  | 992 | 		'</div>');
 | 
        
           |  |  | 993 | }
 | 
        
           |  |  | 994 |   | 
        
           |  |  | 995 | function getMilieux() {
 | 
        
           |  |  | 996 | 	var milieuxStr = '',
 | 
        
           |  |  | 997 | 		milieux = [];
 | 
        
           |  |  | 998 | 	$('.cb-milieux:checked').each(function() {
 | 
        
           |  |  | 999 | 		milieux.push($(this).val());
 | 
        
           |  |  | 1000 | 	});
 | 
        
           | 2408 | jpm | 1001 |   | 
        
           | 1922 | jpm | 1002 | 	milieuxStr = Array.prototype.slice.call(milieux).join(', ');
 | 
        
           |  |  | 1003 | 	return milieuxStr;
 | 
        
           |  |  | 1004 | }
 | 
        
           |  |  | 1005 |   | 
        
           |  |  | 1006 | function ajouterImgMiniatureAuTransfert() {
 | 
        
           |  |  | 1007 | 	var html = '',
 | 
        
           |  |  | 1008 | 		miniatures = '',
 | 
        
           |  |  | 1009 | 		indicateurs = '',
 | 
        
           |  |  | 1010 | 		premiere = true,
 | 
        
           |  |  | 1011 | 		numero = 1;
 | 
        
           |  |  | 1012 | 	if ($('#miniatures img').length == 0) {
 | 
        
           |  |  | 1013 | 		html = '<img class="miniature" alt="Aucune photo"src="'+PAS_DE_PHOTO_ICONE_URL+'" />';
 | 
        
           |  |  | 1014 | 	} else if ($('#miniatures img').length >= 1) {
 | 
        
           |  |  | 1015 | 		$('#miniatures img').each(function() {
 | 
        
           |  |  | 1016 | 			var visible = premiere ? 'miniature-selectionnee' : 'miniature-cachee',
 | 
        
           |  |  | 1017 | 				css = $(this).hasClass('b64') ? 'miniature b64' : 'miniature',
 | 
        
           |  |  | 1018 | 				src = $(this).attr('src'),
 | 
        
           |  |  | 1019 | 				alt = $(this).attr('alt');
 | 
        
           | 2408 | jpm | 1020 |   | 
        
           | 1922 | jpm | 1021 | 			var miniature = '<img class="'+css+' '+visible+'"  alt="'+alt+'"src="'+src+'" />';
 | 
        
           |  |  | 1022 | 			miniatures += miniature;
 | 
        
           | 2408 | jpm | 1023 |   | 
        
           | 1922 | jpm | 1024 | 			var indicateurActif = premiere ? 'active' : '';
 | 
        
           |  |  | 1025 | 			var indicateur = '<li class="' + indicateurActif + '" data-numero="' + numero++ + '"></li>';
 | 
        
           |  |  | 1026 | 			indicateurs += indicateur;
 | 
        
           | 2408 | jpm | 1027 |   | 
        
           | 1922 | jpm | 1028 | 			premiere = false;
 | 
        
           |  |  | 1029 | 		});
 | 
        
           | 2408 | jpm | 1030 |   | 
        
           | 1922 | jpm | 1031 | 		if ($('#miniatures img').length == 1) {
 | 
        
           |  |  | 1032 | 			html = miniatures;
 | 
        
           |  |  | 1033 | 		} else {
 | 
        
           | 2408 | jpm | 1034 | 			html =
 | 
        
           | 1922 | jpm | 1035 | 				'<div class="defilement">' +
 | 
        
           |  |  | 1036 | 					miniatures +
 | 
        
           |  |  | 1037 | 					'<a class="defilement-control-zone gauche">' +
 | 
        
           |  |  | 1038 | 					'	<span class="defilement-control gauche hidden"><</span>' +
 | 
        
           |  |  | 1039 | 					'</a>' +
 | 
        
           |  |  | 1040 | 					'<a class="defilement-control-zone droite">' +
 | 
        
           |  |  | 1041 | 					'	<span class="defilement-control droite hidden">></span>' +
 | 
        
           |  |  | 1042 | 					'</a>' +
 | 
        
           |  |  | 1043 | 					'<ol class="defilement-indicateurs">' + indicateurs + '</ol>' +
 | 
        
           |  |  | 1044 | 				'</div>';
 | 
        
           |  |  | 1045 | 		}
 | 
        
           |  |  | 1046 | 	}
 | 
        
           |  |  | 1047 | 	return html;
 | 
        
           |  |  | 1048 | }
 | 
        
           |  |  | 1049 |   | 
        
           |  |  | 1050 | function defilerMiniatures(element) {
 | 
        
           |  |  | 1051 | 	var miniatureSelectionne = element.siblings('img.miniature-selectionnee');
 | 
        
           |  |  | 1052 | 	miniatureSelectionne.removeClass('miniature-selectionnee').addClass('miniature-cachee');
 | 
        
           |  |  | 1053 | 	var miniatureAffichee = miniatureSelectionne;
 | 
        
           | 2408 | jpm | 1054 |   | 
        
           | 1922 | jpm | 1055 | 	var indicateurActif = element.parent().find('.defilement-indicateurs .active');
 | 
        
           |  |  | 1056 | 	indicateurActif.removeClass('active');
 | 
        
           | 2408 | jpm | 1057 |   | 
        
           | 1922 | jpm | 1058 | 	if (element.hasClass('defilement-control-zone') && element.hasClass('gauche')) {
 | 
        
           |  |  | 1059 | 		if (miniatureSelectionne.prev('.miniature').length != 0) {
 | 
        
           |  |  | 1060 | 			miniatureAffichee = miniatureSelectionne.prev('.miniature');
 | 
        
           |  |  | 1061 | 			indicateurActif.prev().addClass('active');
 | 
        
           |  |  | 1062 | 		} else {
 | 
        
           |  |  | 1063 | 			miniatureAffichee = miniatureSelectionne.siblings('.miniature').last();
 | 
        
           |  |  | 1064 | 			indicateurActif.siblings().last().addClass('active');
 | 
        
           |  |  | 1065 | 		}
 | 
        
           |  |  | 1066 | 	} else {
 | 
        
           |  |  | 1067 | 		if (miniatureSelectionne.next('.miniature').length != 0) {
 | 
        
           |  |  | 1068 | 			miniatureAffichee = miniatureSelectionne.next('.miniature');
 | 
        
           |  |  | 1069 | 			indicateurActif.next().addClass('active');
 | 
        
           |  |  | 1070 | 		} else {
 | 
        
           |  |  | 1071 | 			miniatureAffichee = miniatureSelectionne.siblings('.miniature').first();
 | 
        
           |  |  | 1072 | 			indicateurActif.siblings().first().addClass('active');
 | 
        
           |  |  | 1073 | 		}
 | 
        
           |  |  | 1074 | 	}
 | 
        
           |  |  | 1075 | 	miniatureAffichee.addClass('miniature-selectionnee').removeClass('miniature-cachee');
 | 
        
           |  |  | 1076 | }
 | 
        
           |  |  | 1077 |   | 
        
           |  |  | 1078 | function formaterNumNomSel(numNomSel) {
 | 
        
           |  |  | 1079 | 	var nn = '';
 | 
        
           |  |  | 1080 | 	if (numNomSel == undefined) {
 | 
        
           |  |  | 1081 | 		nn = '<span class="alert-error">[non lié au référentiel]</span>';
 | 
        
           |  |  | 1082 | 	} else {
 | 
        
           |  |  | 1083 | 		nn = '<span class="nn">[nn'+numNomSel+']</span>';
 | 
        
           |  |  | 1084 | 	}
 | 
        
           |  |  | 1085 | 	return nn;
 | 
        
           |  |  | 1086 | }
 | 
        
           |  |  | 1087 |   | 
        
           |  |  | 1088 | function surChangementReferentiel() {
 | 
        
           | 2408 | jpm | 1089 | 	NOM_SCI_REFERENTIEL = $('#referentiel').val();
 | 
        
           | 1922 | jpm | 1090 | 	$('#taxon').val('');
 | 
        
           |  |  | 1091 | }
 | 
        
           |  |  | 1092 |   | 
        
           |  |  | 1093 | function surChangementNbreObs() {
 | 
        
           |  |  | 1094 | 	if (obsNbre == 0) {
 | 
        
           |  |  | 1095 | 		$('#transmettre-obs').attr('disabled', 'disabled');
 | 
        
           |  |  | 1096 | 		$('#ajouter-obs').removeAttr('disabled');
 | 
        
           |  |  | 1097 | 		$('#zone-liste-obs').addClass('hidden');
 | 
        
           |  |  | 1098 | 	} else {
 | 
        
           |  |  | 1099 | 		$('#zone-liste-obs').removeClass('hidden');
 | 
        
           | 2408 | jpm | 1100 |   | 
        
           | 1922 | jpm | 1101 | 		if (obsNbre > 0 && obsNbre < OBS_MAX_NBRE) {
 | 
        
           |  |  | 1102 | 			$('#transmettre-obs').removeAttr('disabled');
 | 
        
           |  |  | 1103 | 			$('#ajouter-obs').removeAttr('disabled');
 | 
        
           |  |  | 1104 | 		} else if (obsNbre >= OBS_MAX_NBRE) {
 | 
        
           |  |  | 1105 | 			$('#ajouter-obs').attr('disabled', 'disabled');
 | 
        
           |  |  | 1106 | 			afficherPanneau('#dialogue-bloquer-creer-obs');
 | 
        
           |  |  | 1107 | 		}
 | 
        
           |  |  | 1108 | 	}
 | 
        
           |  |  | 1109 | }
 | 
        
           |  |  | 1110 |   | 
        
           | 1346 | aurelien | 1111 | function supprimerObs() {
 | 
        
           |  |  | 1112 | 	var obsId = $(this).val();
 | 
        
           |  |  | 1113 | 	// Problème avec IE 6 et 7
 | 
        
           | 2117 | aurelien | 1114 | 	if (obsId == "Supprimer") {
 | 
        
           |  |  | 1115 | 		obsId = $(this).attr("title");
 | 
        
           | 1346 | aurelien | 1116 | 	}
 | 
        
           | 2117 | aurelien | 1117 | 	supprimerObsParId(obsId);
 | 
        
           |  |  | 1118 | }
 | 
        
           |  |  | 1119 |   | 
        
           |  |  | 1120 | function supprimerObsParId(obsId) {
 | 
        
           | 1922 | jpm | 1121 | 	obsNbre = obsNbre - 1;
 | 
        
           | 2117 | aurelien | 1122 | 	$(".obs-nbre").text(obsNbre);
 | 
        
           |  |  | 1123 | 	$(".obs-nbre").triggerHandler('changement');
 | 
        
           | 1922 | jpm | 1124 | 	$('.obs'+obsId).remove();
 | 
        
           | 2117 | aurelien | 1125 | 	$("#liste-obs").removeData('obsId'+obsId);
 | 
        
           | 1346 | aurelien | 1126 | }
 | 
        
           | 1054 | jpm | 1127 |   | 
        
           | 2117 | aurelien | 1128 | function initialiserBarreProgression() {
 | 
        
           |  |  | 1129 | 	$('#barre-progression-upload').attr('aria-valuenow', 0);
 | 
        
           |  |  | 1130 | 	$('#barre-progression-upload').attr('style', "width: 0%");
 | 
        
           |  |  | 1131 | 	$('#barre-progression-upload .sr-only').text("0/0 observations transmises");
 | 
        
           |  |  | 1132 | 	$('.progress').addClass('active');
 | 
        
           |  |  | 1133 | 	$('.progress').addClass('progress-striped');
 | 
        
           |  |  | 1134 | }
 | 
        
           |  |  | 1135 |   | 
        
           | 1922 | jpm | 1136 | function initialiserObs() {
 | 
        
           |  |  | 1137 | 	obsNbre = 0;
 | 
        
           | 2117 | aurelien | 1138 | 	nbObsTransmises = 0;
 | 
        
           |  |  | 1139 | 	nbObsEnCours = 0;
 | 
        
           |  |  | 1140 | 	totalObsATransmettre = 0;
 | 
        
           |  |  | 1141 | 	initialiserBarreProgression();
 | 
        
           |  |  | 1142 | 	$(".obs-nbre").text(obsNbre);
 | 
        
           |  |  | 1143 | 	$(".obs-nbre").triggerHandler('changement');
 | 
        
           |  |  | 1144 | 	$("#liste-obs").removeData();
 | 
        
           | 1922 | jpm | 1145 | 	$('.obs').remove();
 | 
        
           | 2117 | aurelien | 1146 | 	$("#dialogue-bloquer-creer-obs").hide();
 | 
        
           | 1922 | jpm | 1147 | }
 | 
        
           |  |  | 1148 |   | 
        
           |  |  | 1149 | function stockerObsData() {
 | 
        
           |  |  | 1150 | 	var nomHorsListe = $('#taxon-liste').val() == '?' ? true : false;
 | 
        
           |  |  | 1151 | 		nomSpecial = $('#taxon-liste option:selected').hasClass('nom-special'),
 | 
        
           |  |  | 1152 | 		numNomSel = nomHorsListe ? $('#taxon').data('numNomSel') : $('#taxon-liste').val(),
 | 
        
           |  |  | 1153 | 		nomSel = nomHorsListe ? $('#taxon').val() : $('#taxon-liste option:selected').data('nom-a-sauver'),
 | 
        
           |  |  | 1154 | 		nomRet = nomHorsListe ? $('#taxon').data('nomRet') : taxons[numNomSel]['nom_ret'],
 | 
        
           |  |  | 1155 | 		numNomRet = nomHorsListe ? $('#taxon').data('numNomRet') : taxons[numNomSel]['num_nom_ret'],
 | 
        
           |  |  | 1156 | 		numTaxon = nomHorsListe ? $('#taxon').data('nt') : taxons[numNomSel]['num_taxon'],
 | 
        
           |  |  | 1157 | 		famille = nomHorsListe ? $('#taxon').data('famille') : taxons[numNomSel]['famille'],
 | 
        
           |  |  | 1158 | 		referentiel = (numNomSel == undefined) ? '' : NOM_SCI_REFERENTIEL,
 | 
        
           |  |  | 1159 | 		notes = (nomSpecial ? taxons[numNomSel]['nom_fr'] + '. ' : '') + $('#notes').val();
 | 
        
           | 2408 | jpm | 1160 |   | 
        
           | 1922 | jpm | 1161 | 	$('#liste-obs').data('obsId'+obsNbre, {
 | 
        
           | 2408 | jpm | 1162 | 		'date': $('#date').val(),
 | 
        
           | 1922 | jpm | 1163 | 		'notes': notes,
 | 
        
           | 2408 | jpm | 1164 |   | 
        
           | 1946 | jpm | 1165 | 		'station': $('input[name="adresse"]').val(),
 | 
        
           | 1922 | jpm | 1166 | 		'latitude': $('#latitude').val(),
 | 
        
           |  |  | 1167 | 		'longitude': $('#longitude').val(),
 | 
        
           |  |  | 1168 | 		'commune_nom': $('#commune-nom').text(),
 | 
        
           |  |  | 1169 | 		'commune_code_insee': $('#commune-code-insee').text(),
 | 
        
           | 2408 | jpm | 1170 |   | 
        
           | 1922 | jpm | 1171 | 		'nom_sel': nomSel,
 | 
        
           |  |  | 1172 | 		'num_nom_sel': numNomSel,
 | 
        
           |  |  | 1173 | 		'nom_ret': nomRet,
 | 
        
           |  |  | 1174 | 		'num_nom_ret': numNomRet,
 | 
        
           |  |  | 1175 | 		'num_taxon': numTaxon,
 | 
        
           |  |  | 1176 | 		'famille': famille,
 | 
        
           |  |  | 1177 | 		'referentiel': referentiel,
 | 
        
           | 2408 | jpm | 1178 |   | 
        
           | 1922 | jpm | 1179 | 		'milieu': getMilieux(),
 | 
        
           | 2408 | jpm | 1180 |   | 
        
           | 1922 | jpm | 1181 | 		// Ajout des champs images
 | 
        
           |  |  | 1182 | 		'image_nom': getNomsImgsOriginales(),
 | 
        
           | 2408 | jpm | 1183 |   | 
        
           | 1922 | jpm | 1184 | 		// Ajout des champs étendus de l'obs
 | 
        
           |  |  | 1185 | 		'obs_etendue': getObsChpEtendus()
 | 
        
           |  |  | 1186 | 	});
 | 
        
           | 1964 | jpm | 1187 | 	if (DEBUG) {
 | 
        
           |  |  | 1188 | 		console.log($('#liste-obs').data('obsId'+obsNbre));
 | 
        
           |  |  | 1189 | 	}
 | 
        
           | 1922 | jpm | 1190 | }
 | 
        
           |  |  | 1191 |   | 
        
           | 1946 | jpm | 1192 | function getNomsImgsOriginales() {
 | 
        
           |  |  | 1193 | 	var noms = new Array();
 | 
        
           |  |  | 1194 | 	$('.miniature-img').each(function() {
 | 
        
           |  |  | 1195 | 		noms.push($(this).attr('alt'));
 | 
        
           |  |  | 1196 | 	});
 | 
        
           |  |  | 1197 | 	return noms;
 | 
        
           |  |  | 1198 | }
 | 
        
           |  |  | 1199 |   | 
        
           | 1922 | jpm | 1200 | function getObsChpEtendus() {
 | 
        
           | 1946 | jpm | 1201 | 	var champs = [];
 | 
        
           | 1922 | jpm | 1202 | 	if (latLngDeb != undefined) {
 | 
        
           |  |  | 1203 | 		var latitudeDebutRue = {cle: 'latitudeDebutRue', label: 'Latitude du début de la rue', valeur: latLngDeb.lat().toFixed(5)};
 | 
        
           |  |  | 1204 | 		champs.push(latitudeDebutRue);
 | 
        
           |  |  | 1205 | 		var longitudeDebutRue = {cle: 'longitudeDebutRue', label: 'Longitude du début de la rue', valeur: latLngDeb.lng().toFixed(5)};
 | 
        
           |  |  | 1206 | 		champs.push(longitudeDebutRue);
 | 
        
           |  |  | 1207 | 	}
 | 
        
           |  |  | 1208 | 	if (latLngFin != undefined) {
 | 
        
           |  |  | 1209 | 		var latitudeFinRue = {cle: 'latitudeFinRue', label: 'Latitude de fin de la rue', valeur: latLngFin.lat().toFixed(5)};
 | 
        
           |  |  | 1210 | 		champs.push(latitudeFinRue);
 | 
        
           |  |  | 1211 | 		var longitudeFinRue = {cle: 'longitudeFinRue', label: 'Longitude de fin de la rue', valeur: latLngFin.lng().toFixed(5)};
 | 
        
           |  |  | 1212 | 		champs.push(longitudeFinRue);
 | 
        
           |  |  | 1213 | 	}
 | 
        
           | 2408 | jpm | 1214 |   | 
        
           | 1922 | jpm | 1215 | 	$('.obs-chp-etendu').each(function() {
 | 
        
           |  |  | 1216 | 		var valeur = $(this).val(),
 | 
        
           |  |  | 1217 | 			cle = $(this).attr('name'),
 | 
        
           |  |  | 1218 | 			label = $(this).data('label');
 | 
        
           |  |  | 1219 | 		if (valeur != '') {
 | 
        
           |  |  | 1220 | 			var chpEtendu = {cle: cle, label: label, valeur: valeur};
 | 
        
           |  |  | 1221 | 			champs.push(chpEtendu);
 | 
        
           |  |  | 1222 | 		}
 | 
        
           |  |  | 1223 | 	});
 | 
        
           |  |  | 1224 | 	return champs;
 | 
        
           |  |  | 1225 | }
 | 
        
           |  |  | 1226 |   | 
        
           |  |  | 1227 | //+----------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 1228 | //TRANSFERER OBS : envoie des obs au CEL => OK
 | 
        
           | 2117 | aurelien | 1229 | var nbObsEnCours = 1;
 | 
        
           |  |  | 1230 | var totalObsATransmettre = 0;
 | 
        
           | 1922 | jpm | 1231 | function transmettreObs() {
 | 
        
           | 2117 | aurelien | 1232 | 	var observations = $("#liste-obs").data();
 | 
        
           | 1922 | jpm | 1233 | 	if (observations == undefined || jQuery.isEmptyObject(observations)) {
 | 
        
           | 2117 | aurelien | 1234 | 		afficherPanneau("#dialogue-zero-obs");
 | 
        
           | 1922 | jpm | 1235 | 	} else {
 | 
        
           | 2117 | aurelien | 1236 | 		nbObsEnCours = 1;
 | 
        
           |  |  | 1237 | 		nbObsTransmises = 0;
 | 
        
           |  |  | 1238 | 		totalObsATransmettre = $.map(observations, function(n, i) { return i; }).length;
 | 
        
           |  |  | 1239 | 		depilerObsPourEnvoi();
 | 
        
           |  |  | 1240 | 	}
 | 
        
           |  |  | 1241 | 	return false;
 | 
        
           |  |  | 1242 | }
 | 
        
           |  |  | 1243 |   | 
        
           |  |  | 1244 | function depilerObsPourEnvoi() {
 | 
        
           |  |  | 1245 | 	var observations = $("#liste-obs").data();
 | 
        
           |  |  | 1246 | 	// la boucle est factice car on utilise un tableau
 | 
        
           |  |  | 1247 | 	// dont on a besoin de n'extraire que le premier élément
 | 
        
           |  |  | 1248 | 	// or javascript n'a pas de méthode cross browsers pour extraire les clés
 | 
        
           |  |  | 1249 | 	// TODO: utiliser var.keys quand ça sera plus répandu
 | 
        
           |  |  | 1250 | 	// ou bien utiliser un vrai tableau et pas un objet
 | 
        
           | 2408 | jpm | 1251 | 	for (var obsNum in observations) {
 | 
        
           |  |  | 1252 | 		obsATransmettre = new Object();
 | 
        
           |  |  | 1253 |   | 
        
           | 2117 | aurelien | 1254 | 	    obsATransmettre['projet'] = TAG_PROJET;
 | 
        
           |  |  | 1255 | 	    obsATransmettre['tag-obs'] = TAG_OBS;
 | 
        
           |  |  | 1256 | 	    obsATransmettre['tag-img'] = TAG_IMG;
 | 
        
           | 2408 | jpm | 1257 |   | 
        
           | 1922 | jpm | 1258 | 		var utilisateur = new Object();
 | 
        
           | 2117 | aurelien | 1259 | 		utilisateur.id_utilisateur = $("#id_utilisateur").val();
 | 
        
           |  |  | 1260 | 		utilisateur.prenom = $("#prenom").val();
 | 
        
           |  |  | 1261 | 		utilisateur.nom = $("#nom").val();
 | 
        
           |  |  | 1262 | 		utilisateur.courriel = $("#courriel").val();
 | 
        
           |  |  | 1263 | 		obsATransmettre['utilisateur'] = utilisateur;
 | 
        
           |  |  | 1264 | 		obsATransmettre[obsNum] = observations[obsNum];
 | 
        
           |  |  | 1265 | 		var idObsNumerique = obsNum.replace('obsId', '');
 | 
        
           |  |  | 1266 | 		if(idObsNumerique != "") {
 | 
        
           |  |  | 1267 | 			envoyerObsAuCel(idObsNumerique, obsATransmettre);
 | 
        
           |  |  | 1268 | 		}
 | 
        
           | 2408 | jpm | 1269 |   | 
        
           | 2117 | aurelien | 1270 | 		break;
 | 
        
           | 1922 | jpm | 1271 | 	}
 | 
        
           |  |  | 1272 | }
 | 
        
           |  |  | 1273 |   | 
        
           | 2117 | aurelien | 1274 | var nbObsTransmises = 0;
 | 
        
           |  |  | 1275 | function mettreAJourProgression() {
 | 
        
           |  |  | 1276 | 	nbObsTransmises++;
 | 
        
           |  |  | 1277 | 	var pct = (nbObsTransmises/totalObsATransmettre)*100;
 | 
        
           |  |  | 1278 | 	$('#barre-progression-upload').attr('aria-valuenow', nbObsTransmises);
 | 
        
           |  |  | 1279 | 	$('#barre-progression-upload').attr('style', "width: "+pct+"%");
 | 
        
           |  |  | 1280 | 	$('#barre-progression-upload .sr-only').text(nbObsTransmises+"/"+totalObsATransmettre+" observations transmises");
 | 
        
           |  |  | 1281 |   | 
        
           |  |  | 1282 | 	if(obsNbre == 0) {
 | 
        
           |  |  | 1283 | 		$('.progress').removeClass('active');
 | 
        
           |  |  | 1284 | 		$('.progress').removeClass('progress-striped');
 | 
        
           |  |  | 1285 | 	}
 | 
        
           |  |  | 1286 | }
 | 
        
           |  |  | 1287 |   | 
        
           |  |  | 1288 | function envoyerObsAuCel(idObs, observation) {
 | 
        
           | 1922 | jpm | 1289 | 	var erreurMsg = '',
 | 
        
           |  |  | 1290 | 		debugNonJson = '';
 | 
        
           |  |  | 1291 | 	$.ajax({
 | 
        
           |  |  | 1292 | 		url: SERVICE_SAISIE_URL,
 | 
        
           |  |  | 1293 | 		type: 'POST',
 | 
        
           | 2117 | aurelien | 1294 | 		data: observation,
 | 
        
           | 1922 | jpm | 1295 | 		dataType: 'json',
 | 
        
           |  |  | 1296 | 		beforeSend: function() {
 | 
        
           |  |  | 1297 | 			$('#dialogue-obs-transaction-ko').hide();
 | 
        
           |  |  | 1298 | 			$('#dialogue-obs-transaction-ok').hide();
 | 
        
           | 1961 | jpm | 1299 | 			$('.alert-txt').empty();
 | 
        
           | 1922 | jpm | 1300 | 			$('#chargement').show();
 | 
        
           |  |  | 1301 | 		},
 | 
        
           |  |  | 1302 | 		success: function(data, textStatus, jqXHR) {
 | 
        
           | 2117 | aurelien | 1303 | 			// mise à jour du nombre d'obs à transmettre
 | 
        
           |  |  | 1304 | 			// et suppression de l'obs
 | 
        
           |  |  | 1305 | 			supprimerObsParId(idObs);
 | 
        
           |  |  | 1306 | 			nbObsEnCours++;
 | 
        
           |  |  | 1307 | 			// mise à jour du statut
 | 
        
           |  |  | 1308 | 			mettreAJourProgression();
 | 
        
           |  |  | 1309 | 			if(obsNbre > 0) {
 | 
        
           |  |  | 1310 | 				// dépilement de la suivante
 | 
        
           |  |  | 1311 | 				depilerObsPourEnvoi();
 | 
        
           |  |  | 1312 | 			}
 | 
        
           | 1922 | jpm | 1313 | 			supprimerMiniatures();
 | 
        
           |  |  | 1314 | 		},
 | 
        
           |  |  | 1315 | 		statusCode: {
 | 
        
           |  |  | 1316 | 			500: function(jqXHR, textStatus, errorThrown) {
 | 
        
           |  |  | 1317 | 				erreurMsg += "Erreur 500 :\ntype : " + textStatus + ' ' + errorThrown + "\n";
 | 
        
           |  |  | 1318 | 			}
 | 
        
           |  |  | 1319 | 		},
 | 
        
           |  |  | 1320 | 		error: function(jqXHR, textStatus, errorThrown) {
 | 
        
           |  |  | 1321 | 			erreurMsg += "Erreur Ajax :\ntype : " + textStatus + ' ' + errorThrown + "\n";
 | 
        
           |  |  | 1322 | 			try {
 | 
        
           |  |  | 1323 | 				reponse = jQuery.parseJSON(jqXHR.responseText);
 | 
        
           |  |  | 1324 | 				if (reponse != null) {
 | 
        
           |  |  | 1325 | 					$.each(reponse, function (cle, valeur) {
 | 
        
           |  |  | 1326 | 						erreurMsg += valeur + "\n";
 | 
        
           |  |  | 1327 | 					});
 | 
        
           |  |  | 1328 | 				}
 | 
        
           |  |  | 1329 | 			} catch(e) {
 | 
        
           |  |  | 1330 | 				erreurMsg += "L'erreur n'est pas en JSON.";
 | 
        
           |  |  | 1331 | 				debugNonJson = jqXHR.responseText;
 | 
        
           |  |  | 1332 | 			}
 | 
        
           |  |  | 1333 | 		},
 | 
        
           |  |  | 1334 | 		complete: function(jqXHR, textStatus) {
 | 
        
           |  |  | 1335 | 			var debugMsg = extraireEnteteDebug(jqXHR);
 | 
        
           | 2408 | jpm | 1336 |   | 
        
           | 1922 | jpm | 1337 | 			if (erreurMsg != '') {
 | 
        
           |  |  | 1338 | 				if (DEBUG) {
 | 
        
           |  |  | 1339 | 					$('#dialogue-obs-transaction-ko .alert-txt').append('<pre class="msg-erreur">' + erreurMsg + '</pre>');
 | 
        
           |  |  | 1340 | 					$('#dialogue-obs-transaction-ko .alert-txt').append('<pre class="msg-debug">Débogage : ' + debugNonJson + debugMsg + '</pre>');
 | 
        
           |  |  | 1341 | 				}
 | 
        
           | 2408 | jpm | 1342 | 				var hrefCourriel = 'mailto:cel_remarques@tela-botanica.org?' +
 | 
        
           |  |  | 1343 | 					'subject=Disfonctionnement du widget de saisie ' + TAG_PROJET +
 | 
        
           | 1922 | jpm | 1344 | 					'&body=' + erreurMsg + "\nDébogage :\n" + debugMsg + debugNonJson;
 | 
        
           | 2408 | jpm | 1345 |   | 
        
           | 2117 | aurelien | 1346 | 				// mise en valeur de l'obs en erreur + scroll vers celle ci en changeant le hash
 | 
        
           |  |  | 1347 | 				$('#obs'+idObs+' div div').addClass('obs-erreur');
 | 
        
           |  |  | 1348 | 				window.location.hash = "obs"+idObs;
 | 
        
           | 2408 | jpm | 1349 |   | 
        
           | 1922 | jpm | 1350 | 				$('#dialogue-obs-transaction-ko .alert-txt').append($('#tpl-transmission-ko').clone()
 | 
        
           |  |  | 1351 | 					.find('.courriel-erreur')
 | 
        
           |  |  | 1352 | 					.attr('href', hrefCourriel)
 | 
        
           |  |  | 1353 | 					.end()
 | 
        
           |  |  | 1354 | 					.html());
 | 
        
           |  |  | 1355 | 				$('#dialogue-obs-transaction-ko').show();
 | 
        
           | 2117 | aurelien | 1356 | 				$("#chargement").hide();
 | 
        
           |  |  | 1357 | 				initialiserBarreProgression();
 | 
        
           | 1922 | jpm | 1358 | 			} else {
 | 
        
           |  |  | 1359 | 				if (DEBUG) {
 | 
        
           |  |  | 1360 | 					$('#dialogue-obs-transaction-ok .alert-txt').append('<pre class="msg-debug">Débogage : ' + debugMsg + debugNonJson + '</pre>');
 | 
        
           |  |  | 1361 | 				}
 | 
        
           | 2117 | aurelien | 1362 | 				if(obsNbre == 0) {
 | 
        
           |  |  | 1363 | 					setTimeout(function() {
 | 
        
           |  |  | 1364 | 						$("#chargement").hide();
 | 
        
           |  |  | 1365 | 						$('#dialogue-obs-transaction-ok .alert-txt').append($('#tpl-transmission-ok').clone().html());
 | 
        
           |  |  | 1366 | 						$("#dialogue-obs-transaction-ok").show();
 | 
        
           |  |  | 1367 | 						window.location.hash = "dialogue-obs-transaction-ok";
 | 
        
           |  |  | 1368 | 						initialiserObs();
 | 
        
           |  |  | 1369 | 					}, 1500);
 | 
        
           | 2408 | jpm | 1370 |   | 
        
           | 2117 | aurelien | 1371 | 				}
 | 
        
           | 1922 | jpm | 1372 | 			}
 | 
        
           |  |  | 1373 | 		}
 | 
        
           |  |  | 1374 | 	});
 | 
        
           | 1054 | jpm | 1375 | }
 |