| 1210 | jpm | 1 | //+---------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 2 | // GÉNÉRAL
 | 
        
           | 1249 | jpm | 3 | $(document).ready(function() {
 | 
        
           |  |  | 4 | 	$(window).on('beforeunload', function(event) {
 | 
        
           | 1493 | aurelien | 5 | 		return 'Êtes vous sûr de vouloir quiter la page?\nLes observations saisies mais non transmises seront perdues.';
 | 
        
           | 1249 | jpm | 6 | 	});
 | 
        
           |  |  | 7 | });
 | 
        
           |  |  | 8 | //+----------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 9 | // FONCTIONS GÉNÉRIQUES
 | 
        
           | 1210 | jpm | 10 | /**
 | 
        
           |  |  | 11 |  * Stope l'évènement courrant quand on clique sur un lien.
 | 
        
           |  |  | 12 |  * Utile pour Chrome, Safari...
 | 
        
           |  |  | 13 |  * @param evenement
 | 
        
           |  |  | 14 |  * @return
 | 
        
           |  |  | 15 |  */
 | 
        
           |  |  | 16 | function arreter(evenement) {
 | 
        
           |  |  | 17 | 	if (evenement.stopPropagation) {
 | 
        
           |  |  | 18 | 		evenement.stopPropagation();
 | 
        
           |  |  | 19 | 	}
 | 
        
           | 1249 | jpm | 20 | 	if (evenement.preventDefault) {
 | 
        
           |  |  | 21 | 		evenement.preventDefault();
 | 
        
           |  |  | 22 | 	}
 | 
        
           | 1210 | jpm | 23 | 	return false;
 | 
        
           |  |  | 24 | }
 | 
        
           |  |  | 25 |   | 
        
           | 1249 | jpm | 26 | function extraireEnteteDebug(jqXHR) {
 | 
        
           |  |  | 27 | 	var msgDebug = '';
 | 
        
           |  |  | 28 | 	if (jqXHR.getResponseHeader("X-DebugJrest-Data") != '') {
 | 
        
           |  |  | 29 | 		var debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader("X-DebugJrest-Data"));
 | 
        
           |  |  | 30 | 		if (debugInfos != null) {
 | 
        
           |  |  | 31 | 			$.each(debugInfos, function (cle, valeur) {
 | 
        
           |  |  | 32 | 				msgDebug += valeur + "\n";
 | 
        
           |  |  | 33 | 			});
 | 
        
           |  |  | 34 | 		}
 | 
        
           |  |  | 35 | 	}
 | 
        
           |  |  | 36 | 	return msgDebug;
 | 
        
           |  |  | 37 | }
 | 
        
           | 1210 | jpm | 38 |   | 
        
           | 1249 | jpm | 39 | function afficherPanneau(selecteur) {
 | 
        
           |  |  | 40 | 	$(selecteur).fadeIn("slow").delay(DUREE_MESSAGE).fadeOut("slow");
 | 
        
           |  |  | 41 | }
 | 
        
           |  |  | 42 |   | 
        
           | 1210 | jpm | 43 | //+----------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 44 | //UPLOAD PHOTO : Traitement de l'image
 | 
        
           | 1249 | jpm | 45 | $(document).ready(function() {
 | 
        
           | 1210 | jpm | 46 |   | 
        
           | 1524 | aurelien | 47 | 	$(".effacer-miniature").click(function () {
 | 
        
           |  |  | 48 | 		supprimerMiniatures($(this));
 | 
        
           | 1210 | jpm | 49 | 	});
 | 
        
           | 1543 | aurelien | 50 |   | 
        
           | 1524 | aurelien | 51 | 	$("#fichier").bind('change', function (e) {
 | 
        
           |  |  | 52 | 		arreter(e);
 | 
        
           |  |  | 53 | 		var options = {
 | 
        
           |  |  | 54 | 			success: afficherMiniature, // post-submit callback
 | 
        
           |  |  | 55 | 			dataType: 'xml', // 'xml', 'script', or 'json' (expected server response type)
 | 
        
           |  |  | 56 | 			resetForm: true // reset the form after successful submit
 | 
        
           |  |  | 57 | 		};
 | 
        
           |  |  | 58 | 		$("#miniature").append('<img id="miniature-chargement" class="miniature" alt="chargement" src="'+CHARGEMENT_IMAGE_URL+'"/>');
 | 
        
           |  |  | 59 | 		$("#ajouter-obs").attr('disabled', 'disabled');
 | 
        
           |  |  | 60 | 		if(verifierFormat($("#fichier").val())) {
 | 
        
           |  |  | 61 | 			$("#form-upload").ajaxSubmit(options);
 | 
        
           |  |  | 62 | 		} else {
 | 
        
           | 2005 | aurelien | 63 | 			$('#form-upload')[0].reset();
 | 
        
           | 1524 | aurelien | 64 | 			window.alert("Le format de fichier n'est pas supporté, les formats acceptés sont "+	$("#fichier").attr("accept"));
 | 
        
           | 1210 | jpm | 65 | 		}
 | 
        
           | 1524 | aurelien | 66 | 		return false;
 | 
        
           |  |  | 67 | 	});
 | 
        
           | 1418 | aurelien | 68 |   | 
        
           |  |  | 69 | 	if(ESPECE_IMPOSEE) {
 | 
        
           |  |  | 70 | 		$("#taxon").attr("disabled", "disabled");
 | 
        
           |  |  | 71 | 		$("#taxon-input-groupe").attr("title","");
 | 
        
           | 1419 | aurelien | 72 | 		var infosAssociee = new Object();
 | 
        
           |  |  | 73 | 		infosAssociee.label = INFOS_ESPECE_IMPOSEE.nom_sci_complet;
 | 
        
           |  |  | 74 | 		infosAssociee.value = INFOS_ESPECE_IMPOSEE.nom_sci_complet;
 | 
        
           |  |  | 75 | 		infosAssociee.nt = INFOS_ESPECE_IMPOSEE.num_taxonomique;
 | 
        
           |  |  | 76 | 		infosAssociee.nomSel = INFOS_ESPECE_IMPOSEE.nom_sci;
 | 
        
           |  |  | 77 | 		infosAssociee.nomSelComplet = INFOS_ESPECE_IMPOSEE.nom_sci_complet;
 | 
        
           |  |  | 78 | 		infosAssociee.numNomSel = INFOS_ESPECE_IMPOSEE.id;
 | 
        
           |  |  | 79 | 		infosAssociee.nomRet = INFOS_ESPECE_IMPOSEE["nom_retenu.libelle"];
 | 
        
           |  |  | 80 | 		infosAssociee.numNomRet = INFOS_ESPECE_IMPOSEE["nom_retenu.id"];
 | 
        
           |  |  | 81 | 		infosAssociee.famille = INFOS_ESPECE_IMPOSEE.famille;
 | 
        
           |  |  | 82 | 		infosAssociee.retenu = (INFOS_ESPECE_IMPOSEE.retenu == 'false') ? false : true;
 | 
        
           |  |  | 83 | 		$("#taxon").data(infosAssociee);
 | 
        
           | 1418 | aurelien | 84 | 	}
 | 
        
           | 1524 | aurelien | 85 |   | 
        
           |  |  | 86 | 	$('.effacer-miniature').live('click', function() {
 | 
        
           |  |  | 87 | 		$(this).parent().remove();
 | 
        
           |  |  | 88 | 	});
 | 
        
           | 1210 | jpm | 89 | });
 | 
        
           | 1249 | jpm | 90 |   | 
        
           | 1524 | aurelien | 91 | function verifierFormat(nom) {
 | 
        
           |  |  | 92 | 	var parts = nom.split('.');
 | 
        
           |  |  | 93 | 	extension = parts[parts.length - 1];
 | 
        
           |  |  | 94 | 	return (extension.toLowerCase() == 'jpeg' || extension.toLowerCase() == 'jpg');
 | 
        
           | 1210 | jpm | 95 | }
 | 
        
           |  |  | 96 |   | 
        
           |  |  | 97 | function afficherMiniature(reponse) {
 | 
        
           |  |  | 98 | 	if (DEBUG) {
 | 
        
           |  |  | 99 | 		var debogage = $("debogage", reponse).text();
 | 
        
           | 1822 | aurelien | 100 | 		//console.log("Débogage upload : "+debogage);
 | 
        
           | 1210 | jpm | 101 | 	}
 | 
        
           |  |  | 102 | 	var message = $("message", reponse).text();
 | 
        
           |  |  | 103 | 	if (message != '') {
 | 
        
           |  |  | 104 | 		$("#miniature-msg").append(message);
 | 
        
           |  |  | 105 | 	} else {
 | 
        
           | 1524 | aurelien | 106 | 		$("#miniatures").append(creerWidgetMiniature(reponse));
 | 
        
           | 1210 | jpm | 107 | 	}
 | 
        
           | 1524 | aurelien | 108 | 	$('#ajouter-obs').removeAttr('disabled');
 | 
        
           | 1210 | jpm | 109 | }
 | 
        
           |  |  | 110 |   | 
        
           | 1524 | aurelien | 111 | function creerWidgetMiniature(reponse) {
 | 
        
           |  |  | 112 | 	var miniatureUrl = $("miniature-url", reponse).text();
 | 
        
           |  |  | 113 | 	var imgNom = $("image-nom", reponse).text();
 | 
        
           |  |  | 114 | 	var html =
 | 
        
           |  |  | 115 | 		'<div class="miniature">'+
 | 
        
           |  |  | 116 | 			'<img class="miniature-img" class="miniature" alt="'+imgNom+'" src="'+miniatureUrl+'"/>'+
 | 
        
           |  |  | 117 | 			'<button class="effacer-miniature" type="button">Effacer</button>'+
 | 
        
           |  |  | 118 | 		'</div>'
 | 
        
           |  |  | 119 | 	return html;
 | 
        
           |  |  | 120 | }
 | 
        
           |  |  | 121 |   | 
        
           |  |  | 122 | function supprimerMiniatures() {
 | 
        
           |  |  | 123 | 	$("#miniatures").empty();
 | 
        
           | 1210 | jpm | 124 | 	$("#miniature-msg").empty();
 | 
        
           |  |  | 125 | }
 | 
        
           |  |  | 126 |   | 
        
           | 2125 | mathias | 127 | //Initialise l'autocomplétion de la commune, en fonction du référentiel
 | 
        
           |  |  | 128 | function initialiserAutocompleteCommune() {
 | 
        
           | 2136 | mathias | 129 | 	var geocoderOptions = {
 | 
        
           |  |  | 130 | 	};
 | 
        
           |  |  | 131 | 	var addressSuffix = '';
 | 
        
           | 1210 | jpm | 132 |   | 
        
           | 2125 | mathias | 133 | 	switch(NOM_SCI_PROJET) {
 | 
        
           |  |  | 134 | 		case 'isfan':
 | 
        
           | 2136 | mathias | 135 | 			// Si des résultats se trouvent dans ce rectangle, ils apparaîtront en premier.
 | 
        
           |  |  | 136 | 			// Ça marche moyen...
 | 
        
           |  |  | 137 | 			geocoderOptions.bounds = new google.maps.LatLngBounds(
 | 
        
           |  |  | 138 | 				new google.maps.LatLng(20.756114, -22.023927),
 | 
        
           |  |  | 139 | 				new google.maps.LatLng(38.065392, 33.78662)
 | 
        
           |  |  | 140 | 			);
 | 
        
           |  |  | 141 | 			break;
 | 
        
           | 2155 | mathias | 142 | 		case 'apd':
 | 
        
           | 2136 | mathias | 143 | 			geocoderOptions.bounds = new google.maps.LatLngBounds(
 | 
        
           |  |  | 144 | 					new google.maps.LatLng(-6.708254, -26.154786),
 | 
        
           |  |  | 145 | 					new google.maps.LatLng(27.488781, 30.490722)
 | 
        
           |  |  | 146 | 				);
 | 
        
           |  |  | 147 | 			break;
 | 
        
           |  |  | 148 | 		case 'bdtfx':
 | 
        
           |  |  | 149 | 		case 'bdtxa':
 | 
        
           |  |  | 150 | 			geocoderOptions.region = 'fr';
 | 
        
           |  |  | 151 | 			addressSuffix = ', France';
 | 
        
           | 2125 | mathias | 152 | 	}
 | 
        
           |  |  | 153 |   | 
        
           | 1216 | jpm | 154 | 	$("#carte-recherche").autocomplete({
 | 
        
           |  |  | 155 | 		//Cette partie utilise geocoder pour extraire des valeurs d'adresse
 | 
        
           |  |  | 156 | 		source: function(request, response) {
 | 
        
           | 2136 | mathias | 157 | 			geocoderOptions.address = request.term + addressSuffix;
 | 
        
           |  |  | 158 | 			console.log('Geocoder options', geocoderOptions);
 | 
        
           |  |  | 159 | 			geocoder.geocode( geocoderOptions, function(results, status) {
 | 
        
           | 1216 | jpm | 160 | 				if (status == google.maps.GeocoderStatus.OK) {
 | 
        
           |  |  | 161 | 					response($.map(results, function(item) {
 | 
        
           |  |  | 162 | 						var retour = {
 | 
        
           |  |  | 163 | 							label: item.formatted_address,
 | 
        
           |  |  | 164 | 							value: item.formatted_address,
 | 
        
           |  |  | 165 | 							latitude: item.geometry.location.lat(),
 | 
        
           |  |  | 166 | 							longitude: item.geometry.location.lng()
 | 
        
           |  |  | 167 | 						};
 | 
        
           |  |  | 168 | 						return retour;
 | 
        
           |  |  | 169 | 					}));
 | 
        
           |  |  | 170 | 				} else {
 | 
        
           |  |  | 171 | 					afficherErreurGoogleMap(status);
 | 
        
           |  |  | 172 | 				}
 | 
        
           |  |  | 173 | 			});
 | 
        
           |  |  | 174 | 		},
 | 
        
           |  |  | 175 | 		// Cette partie est executee a la selection d'une adresse
 | 
        
           |  |  | 176 | 		select: function(event, ui) {
 | 
        
           |  |  | 177 | 			var latLng = new google.maps.LatLng(ui.item.latitude, ui.item.longitude);
 | 
        
           |  |  | 178 | 			deplacerMarker(latLng);
 | 
        
           |  |  | 179 | 		}
 | 
        
           |  |  | 180 | 	});
 | 
        
           | 2125 | mathias | 181 |   | 
        
           |  |  | 182 | 	// Autocompletion du champ adresse
 | 
        
           |  |  | 183 | 	$("#carte-recherche").on('focus', function() {
 | 
        
           |  |  | 184 | 		$(this).select();
 | 
        
           |  |  | 185 | 	});
 | 
        
           |  |  | 186 | 	$("#carte-recherche").on('mouseup', function(event) {// Pour Safari...
 | 
        
           |  |  | 187 | 		event.preventDefault();
 | 
        
           |  |  | 188 | 	});
 | 
        
           |  |  | 189 |   | 
        
           |  |  | 190 | 	$("#carte-recherche").keypress(function(e) {
 | 
        
           |  |  | 191 | 		if (e.which == 13) {
 | 
        
           |  |  | 192 | 			e.preventDefault();
 | 
        
           |  |  | 193 | 		}
 | 
        
           |  |  | 194 | 	});
 | 
        
           | 2127 | mathias | 195 | };
 | 
        
           | 2125 | mathias | 196 |   | 
        
           | 2127 | mathias | 197 | //+----------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 198 | // GOOGLE MAP
 | 
        
           |  |  | 199 | var map;
 | 
        
           |  |  | 200 | var marker;
 | 
        
           |  |  | 201 | var latLng;
 | 
        
           |  |  | 202 | var geocoder;
 | 
        
           |  |  | 203 |   | 
        
           |  |  | 204 | $(document).ready(function() {
 | 
        
           |  |  | 205 | 	initialiserGoogleMap();
 | 
        
           | 2125 | mathias | 206 | 	initialiserAutocompleteCommune();
 | 
        
           | 1216 | jpm | 207 | });
 | 
        
           |  |  | 208 |   | 
        
           | 1576 | jpm | 209 | function afficherErreurGoogleMap(status) {
 | 
        
           |  |  | 210 | 	if (DEBUG) {
 | 
        
           |  |  | 211 | 		$('#dialogue-google-map .contenu').empty().append(
 | 
        
           |  |  | 212 | 			'<pre class="msg-erreur">'+
 | 
        
           |  |  | 213 | 			"Le service de Géocodage de Google Map a échoué à cause de l'erreur : "+status+
 | 
        
           |  |  | 214 | 			'</pre>');
 | 
        
           |  |  | 215 | 		afficherPanneau('#dialogue-google-map');
 | 
        
           |  |  | 216 | 	}
 | 
        
           |  |  | 217 | }
 | 
        
           |  |  | 218 |   | 
        
           | 1249 | jpm | 219 | function surDeplacementMarker() {
 | 
        
           |  |  | 220 | 	trouverCommune(marker.getPosition());
 | 
        
           |  |  | 221 | 	mettreAJourMarkerPosition(marker.getPosition());
 | 
        
           |  |  | 222 | }
 | 
        
           |  |  | 223 |   | 
        
           |  |  | 224 | function surClickDansCarte(event) {
 | 
        
           |  |  | 225 | 	deplacerMarker(event.latLng);
 | 
        
           |  |  | 226 | }
 | 
        
           |  |  | 227 |   | 
        
           |  |  | 228 | function geolocaliser() {
 | 
        
           |  |  | 229 | 	var latitude = $('#latitude').val();
 | 
        
           |  |  | 230 | 	var longitude = $('#longitude').val();
 | 
        
           |  |  | 231 | 	latLng = new google.maps.LatLng(latitude, longitude);
 | 
        
           |  |  | 232 | 	deplacerMarker(latLng);
 | 
        
           |  |  | 233 | }
 | 
        
           |  |  | 234 |   | 
        
           | 1210 | jpm | 235 | function initialiserGoogleMap(){
 | 
        
           |  |  | 236 | 	// Carte
 | 
        
           | 2125 | mathias | 237 | 	if(NOM_SCI_PROJET == 'bdtxa') {
 | 
        
           | 1476 | aurelien | 238 | 		var latLng = new google.maps.LatLng(14.6, -61.08334);// Fort-De-France
 | 
        
           |  |  | 239 | 		var zoomDefaut = 8;
 | 
        
           | 2125 | mathias | 240 | 	} else if(NOM_SCI_PROJET == 'isfan') {
 | 
        
           | 1620 | aurelien | 241 | 		var latLng = new google.maps.LatLng(29.28358, 10.21884);// Afrique du Nord
 | 
        
           |  |  | 242 | 		var zoomDefaut = 4;
 | 
        
           | 2155 | mathias | 243 | 	} else if(NOM_SCI_PROJET == 'apd') {
 | 
        
           | 2125 | mathias | 244 | 		var latLng = new google.maps.LatLng(8.75624, 1.80176);// Afrique de l'Ouest et du Centre
 | 
        
           |  |  | 245 | 		var zoomDefaut = 4;
 | 
        
           | 1476 | aurelien | 246 | 	} else {
 | 
        
           | 1485 | aurelien | 247 | 		var latLng = new google.maps.LatLng(46.30871, 2.54395);// Centre de la France
 | 
        
           |  |  | 248 | 		var zoomDefaut = 5;
 | 
        
           | 1476 | aurelien | 249 | 	}
 | 
        
           | 1485 | aurelien | 250 |   | 
        
           | 1210 | jpm | 251 | 	var options = {
 | 
        
           | 1476 | aurelien | 252 | 		zoom: zoomDefaut,
 | 
        
           | 1210 | jpm | 253 | 		center: latLng,
 | 
        
           |  |  | 254 | 		mapTypeId: google.maps.MapTypeId.HYBRID,
 | 
        
           |  |  | 255 | 		mapTypeControlOptions: {
 | 
        
           |  |  | 256 | 			mapTypeIds: ['OSM', google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.HYBRID, google.maps.MapTypeId.SATELLITE, google.maps.MapTypeId.TERRAIN]}
 | 
        
           |  |  | 257 | 	};
 | 
        
           |  |  | 258 |   | 
        
           |  |  | 259 | 	// Ajout de la couche OSM à la carte
 | 
        
           |  |  | 260 | 	osmMapType = new google.maps.ImageMapType({
 | 
        
           |  |  | 261 | 		getTileUrl: function(coord, zoom) {
 | 
        
           |  |  | 262 | 			return "http://tile.openstreetmap.org/" +
 | 
        
           |  |  | 263 | 			zoom + "/" + coord.x + "/" + coord.y + ".png";
 | 
        
           |  |  | 264 | 		},
 | 
        
           |  |  | 265 | 		tileSize: new google.maps.Size(256, 256),
 | 
        
           |  |  | 266 | 		isPng: true,
 | 
        
           |  |  | 267 | 		alt: 'OpenStreetMap',
 | 
        
           |  |  | 268 | 		name: 'OSM',
 | 
        
           |  |  | 269 | 		maxZoom: 19
 | 
        
           |  |  | 270 | 	});
 | 
        
           |  |  | 271 |   | 
        
           |  |  | 272 | 	// Création de la carte Google
 | 
        
           |  |  | 273 | 	map = new google.maps.Map(document.getElementById('map-canvas'), options); //affiche la google map dans la div map_canvas
 | 
        
           |  |  | 274 | 	map.mapTypes.set('OSM', osmMapType);
 | 
        
           |  |  | 275 |   | 
        
           | 1216 | jpm | 276 | 	// Création du Geocoder
 | 
        
           |  |  | 277 | 	geocoder = new google.maps.Geocoder();
 | 
        
           |  |  | 278 |   | 
        
           | 1210 | jpm | 279 | 	// Marqueur google draggable
 | 
        
           |  |  | 280 | 	marker = new google.maps.Marker({
 | 
        
           |  |  | 281 | 		map: map,
 | 
        
           |  |  | 282 | 		draggable: true,
 | 
        
           |  |  | 283 | 		title: 'Ma station',
 | 
        
           |  |  | 284 | 		icon: GOOGLE_MAP_MARQUEUR_URL,
 | 
        
           |  |  | 285 | 		position: latLng
 | 
        
           |  |  | 286 | 	});
 | 
        
           |  |  | 287 |   | 
        
           | 1485 | aurelien | 288 | 	initialiserMarker(latLng);
 | 
        
           | 1210 | jpm | 289 |   | 
        
           |  |  | 290 | 	// Tentative de geocalisation
 | 
        
           |  |  | 291 | 	if (navigator.geolocation) {
 | 
        
           |  |  | 292 | 		navigator.geolocation.getCurrentPosition(function(position) {
 | 
        
           |  |  | 293 | 			var latitude = position.coords.latitude;
 | 
        
           |  |  | 294 | 			var longitude = position.coords.longitude;
 | 
        
           |  |  | 295 | 			latLng = new google.maps.LatLng(latitude, longitude);
 | 
        
           |  |  | 296 | 			deplacerMarker(latLng);
 | 
        
           |  |  | 297 | 		});
 | 
        
           |  |  | 298 | 	}
 | 
        
           | 2127 | mathias | 299 |   | 
        
           |  |  | 300 | 	// intéraction carte
 | 
        
           |  |  | 301 | 	$("#geolocaliser").on('click', geolocaliser);
 | 
        
           |  |  | 302 | 	google.maps.event.addListener(marker, 'dragend', surDeplacementMarker);
 | 
        
           |  |  | 303 | 	google.maps.event.addListener(map, 'click', surClickDansCarte);
 | 
        
           | 1210 | jpm | 304 | }
 | 
        
           |  |  | 305 |   | 
        
           | 1485 | aurelien | 306 | function initialiserMarker(latLng) {
 | 
        
           |  |  | 307 | 	if (marker != undefined) {
 | 
        
           |  |  | 308 | 		marker.setPosition(latLng);
 | 
        
           |  |  | 309 | 		map.setCenter(latLng);
 | 
        
           |  |  | 310 | 	}
 | 
        
           |  |  | 311 | }
 | 
        
           |  |  | 312 |   | 
        
           | 1210 | jpm | 313 | function deplacerMarker(latLng) {
 | 
        
           |  |  | 314 | 	if (marker != undefined) {
 | 
        
           |  |  | 315 | 		marker.setPosition(latLng);
 | 
        
           |  |  | 316 | 		map.setCenter(latLng);
 | 
        
           |  |  | 317 | 		mettreAJourMarkerPosition(latLng);
 | 
        
           |  |  | 318 | 		trouverCommune(latLng);
 | 
        
           |  |  | 319 | 	}
 | 
        
           |  |  | 320 | }
 | 
        
           |  |  | 321 |   | 
        
           |  |  | 322 | function mettreAJourMarkerPosition(latLng) {
 | 
        
           |  |  | 323 | 	var lat = latLng.lat().toFixed(5);
 | 
        
           |  |  | 324 | 	var lng = latLng.lng().toFixed(5);
 | 
        
           |  |  | 325 | 	remplirChampLatitude(lat);
 | 
        
           |  |  | 326 | 	remplirChampLongitude(lng);
 | 
        
           |  |  | 327 | }
 | 
        
           |  |  | 328 |   | 
        
           |  |  | 329 | function remplirChampLatitude(latDecimale) {
 | 
        
           |  |  | 330 | 	var lat = Math.round(latDecimale * 100000) / 100000;
 | 
        
           |  |  | 331 | 	$('#latitude').val(lat);
 | 
        
           |  |  | 332 | }
 | 
        
           |  |  | 333 |   | 
        
           |  |  | 334 | function remplirChampLongitude(lngDecimale) {
 | 
        
           |  |  | 335 | 	var lng = Math.round(lngDecimale * 100000) / 100000;
 | 
        
           |  |  | 336 | 	$('#longitude').val(lng);
 | 
        
           |  |  | 337 | }
 | 
        
           |  |  | 338 |   | 
        
           |  |  | 339 | function trouverCommune(pos) {
 | 
        
           |  |  | 340 | 	$(function() {
 | 
        
           | 1476 | aurelien | 341 |   | 
        
           |  |  | 342 | 		var url_service = SERVICE_NOM_COMMUNE_URL;
 | 
        
           |  |  | 343 |   | 
        
           |  |  | 344 | 		var urlNomCommuneFormatee = url_service.replace('{lat}', pos.lat()).replace('{lon}', pos.lng());
 | 
        
           | 1210 | jpm | 345 | 		$.ajax({
 | 
        
           |  |  | 346 | 			url : urlNomCommuneFormatee,
 | 
        
           |  |  | 347 | 			type : "GET",
 | 
        
           |  |  | 348 | 			dataType : "jsonp",
 | 
        
           |  |  | 349 | 			beforeSend : function() {
 | 
        
           |  |  | 350 | 				$(".commune-info").empty();
 | 
        
           | 1220 | jpm | 351 | 				$("#dialogue-erreur .alert-txt").empty();
 | 
        
           | 1210 | jpm | 352 | 			},
 | 
        
           |  |  | 353 | 			success : function(data, textStatus, jqXHR) {
 | 
        
           |  |  | 354 | 				$(".commune-info").empty();
 | 
        
           |  |  | 355 | 				$("#commune-nom").append(data.nom);
 | 
        
           |  |  | 356 | 				$("#commune-code-insee").append(data.codeINSEE);
 | 
        
           |  |  | 357 | 				$("#marqueur-commune").data('commune', {'nom' : data.nom, 'codeInsee' : data.codeINSEE});
 | 
        
           |  |  | 358 | 			},
 | 
        
           |  |  | 359 | 			statusCode : {
 | 
        
           |  |  | 360 | 			    500 : function(jqXHR, textStatus, errorThrown) {
 | 
        
           |  |  | 361 | 					if (DEBUG) {
 | 
        
           | 1220 | jpm | 362 | 						$("#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>');
 | 
        
           | 1210 | jpm | 363 | 						reponse = jQuery.parseJSON(jqXHR.responseText);
 | 
        
           |  |  | 364 | 						var erreurMsg = "";
 | 
        
           |  |  | 365 | 						if (reponse != null) {
 | 
        
           |  |  | 366 | 							$.each(reponse, function (cle, valeur) {
 | 
        
           |  |  | 367 | 								erreurMsg += valeur + "<br />";
 | 
        
           |  |  | 368 | 							});
 | 
        
           |  |  | 369 | 						}
 | 
        
           |  |  | 370 |   | 
        
           | 1220 | jpm | 371 | 						$("#dialogue-erreur .alert-txt").append('<p class="msg-erreur">Erreur 500 : '+errorThrown+"<br />"+erreurMsg+'</p>');
 | 
        
           | 1210 | jpm | 372 | 					}
 | 
        
           |  |  | 373 | 			    }
 | 
        
           |  |  | 374 | 			},
 | 
        
           |  |  | 375 | 			error : function(jqXHR, textStatus, errorThrown) {
 | 
        
           |  |  | 376 | 				if (DEBUG) {
 | 
        
           | 1220 | jpm | 377 | 					$("#dialogue-erreur .alert-txt").append('<p class="msg">Une erreur Ajax est survenue lors de la transmission de vos observations.</p>');
 | 
        
           | 1210 | jpm | 378 | 					reponse = jQuery.parseJSON(jqXHR.responseText);
 | 
        
           |  |  | 379 | 					var erreurMsg = "";
 | 
        
           |  |  | 380 | 					if (reponse != null) {
 | 
        
           |  |  | 381 | 						$.each(reponse, function (cle, valeur) {
 | 
        
           |  |  | 382 | 							erreurMsg += valeur + "<br />";
 | 
        
           |  |  | 383 | 						});
 | 
        
           |  |  | 384 | 					}
 | 
        
           |  |  | 385 |   | 
        
           | 1220 | jpm | 386 | 					$("#dialogue-erreur .alert-txt").append('<p class="msg-erreur">Erreur Ajax : '+errorThrown+' (type : '+textStatus+') <br />'+erreurMsg+'</p>');
 | 
        
           | 1210 | jpm | 387 | 				}
 | 
        
           |  |  | 388 | 			},
 | 
        
           |  |  | 389 | 			complete : function(jqXHR, textStatus) {
 | 
        
           | 1249 | jpm | 390 | 				var debugMsg = extraireEnteteDebug(jqXHR);
 | 
        
           |  |  | 391 | 				if (debugMsg != '') {
 | 
        
           |  |  | 392 | 					if (DEBUG) {
 | 
        
           | 1220 | jpm | 393 | 						$("#dialogue-erreur .alert-txt").append('<pre class="msg-debug msg">Débogage : '+debugMsg+'</pre>');
 | 
        
           | 1210 | jpm | 394 | 					}
 | 
        
           |  |  | 395 | 				}
 | 
        
           |  |  | 396 | 				if ($("#dialogue-erreur .msg").length > 0) {
 | 
        
           | 1220 | jpm | 397 | 					$("#dialogue-erreur").show();
 | 
        
           | 1210 | jpm | 398 | 				}
 | 
        
           |  |  | 399 | 			}
 | 
        
           |  |  | 400 | 		});
 | 
        
           |  |  | 401 | 	});
 | 
        
           |  |  | 402 | }
 | 
        
           | 1241 | jpm | 403 | //+---------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 404 | // IDENTITÉ
 | 
        
           |  |  | 405 | $(document).ready(function() {
 | 
        
           | 1249 | jpm | 406 | 	$("#courriel").on('blur', requeterIdentite);
 | 
        
           |  |  | 407 | 	$("#courriel").on('keypress', testerLancementRequeteIdentite);
 | 
        
           |  |  | 408 | });
 | 
        
           |  |  | 409 |   | 
        
           |  |  | 410 | function testerLancementRequeteIdentite(event) {
 | 
        
           |  |  | 411 | 	if (event.which == 13) {
 | 
        
           |  |  | 412 | 		requeterIdentite();
 | 
        
           |  |  | 413 | 		event.preventDefault();
 | 
        
           |  |  | 414 | 		event.stopPropagation();
 | 
        
           |  |  | 415 | 	}
 | 
        
           |  |  | 416 | }
 | 
        
           |  |  | 417 |   | 
        
           |  |  | 418 | function requeterIdentite() {
 | 
        
           |  |  | 419 | 	var courriel = $("#courriel").val();
 | 
        
           | 1356 | aurelien | 420 | 	//TODO: mettre ceci en paramètre de config
 | 
        
           | 1984 | jpm | 421 | 	var urlAnnuaire = "http://www.tela-botanica.org/service:annuaire:utilisateur/identite-par-courriel/"+courriel;//http://localhost/applications/annuaire/jrest/
 | 
        
           | 1249 | jpm | 422 | 	$.ajax({
 | 
        
           |  |  | 423 | 		url : urlAnnuaire,
 | 
        
           |  |  | 424 | 		type : "GET",
 | 
        
           |  |  | 425 | 		success : function(data, textStatus, jqXHR) {
 | 
        
           | 1822 | aurelien | 426 | 			//console.log('SUCCESS:'+textStatus);
 | 
        
           | 1249 | jpm | 427 | 			if (data != undefined && data[courriel] != undefined) {
 | 
        
           |  |  | 428 | 				var infos = data[courriel];
 | 
        
           | 1352 | aurelien | 429 | 				$("#id_utilisateur").val(infos.id);
 | 
        
           | 1249 | jpm | 430 | 				$("#prenom").val(infos.prenom);
 | 
        
           |  |  | 431 | 				$("#nom").val(infos.nom);
 | 
        
           |  |  | 432 | 				$("#courriel_confirmation").val(courriel);
 | 
        
           |  |  | 433 | 				$("#prenom, #nom, #courriel_confirmation").attr('disabled', 'disabled');
 | 
        
           |  |  | 434 | 				$("#date").focus();
 | 
        
           |  |  | 435 | 			} else {
 | 
        
           |  |  | 436 | 				surErreurCompletionCourriel();
 | 
        
           | 1241 | jpm | 437 | 			}
 | 
        
           | 1249 | jpm | 438 | 		},
 | 
        
           |  |  | 439 | 		error : function(jqXHR, textStatus, errorThrown) {
 | 
        
           | 1822 | aurelien | 440 | 			//console.log('ERREUR :'+textStatus);
 | 
        
           | 1249 | jpm | 441 | 			surErreurCompletionCourriel();
 | 
        
           |  |  | 442 | 		},
 | 
        
           |  |  | 443 | 		complete : function(jqXHR, textStatus) {
 | 
        
           | 1822 | aurelien | 444 | 			//console.log('COMPLETE :'+textStatus);
 | 
        
           | 1249 | jpm | 445 | 			$("#zone-prenom-nom").removeClass("hidden");
 | 
        
           |  |  | 446 | 			$("#zone-courriel-confirmation").removeClass("hidden");
 | 
        
           |  |  | 447 | 		}
 | 
        
           | 1241 | jpm | 448 | 	});
 | 
        
           | 1249 | jpm | 449 | }
 | 
        
           | 1210 | jpm | 450 |   | 
        
           | 1249 | jpm | 451 | function surErreurCompletionCourriel() {
 | 
        
           |  |  | 452 | 	$("#prenom, #nom, #courriel_confirmation").val('');
 | 
        
           |  |  | 453 | 	$("#prenom, #nom, #courriel_confirmation").removeAttr('disabled');
 | 
        
           |  |  | 454 | 	afficherPanneau("#dialogue-courriel-introuvable");
 | 
        
           |  |  | 455 | }
 | 
        
           | 1210 | jpm | 456 | //+---------------------------------------------------------------------------------------------------------+
 | 
        
           | 1249 | jpm | 457 | //FORMULAIRE VALIDATION
 | 
        
           |  |  | 458 | $(document).ready(function() {
 | 
        
           |  |  | 459 |   | 
        
           |  |  | 460 |   | 
        
           |  |  | 461 | });
 | 
        
           |  |  | 462 | //+---------------------------------------------------------------------------------------------------------+
 | 
        
           | 1210 | jpm | 463 | // FORMULAIRE
 | 
        
           | 1215 | jpm | 464 | var obsNbre = 0;
 | 
        
           |  |  | 465 |   | 
        
           | 1210 | jpm | 466 | $(document).ready(function() {
 | 
        
           | 1249 | jpm | 467 | 	$(".alert .close").on('click', fermerPanneauAlert);
 | 
        
           | 1220 | jpm | 468 |   | 
        
           | 1253 | jpm | 469 | 	$("[rel=tooltip]").tooltip('enable');
 | 
        
           | 1249 | jpm | 470 | 	$("#btn-aide").on('click', basculerAffichageAide);
 | 
        
           | 1218 | jpm | 471 |   | 
        
           | 1249 | jpm | 472 | 	$("#prenom").on("change", formaterPrenom);
 | 
        
           | 1218 | jpm | 473 |   | 
        
           | 1249 | jpm | 474 | 	$("#nom").on("change", formaterNom);
 | 
        
           | 1210 | jpm | 475 |   | 
        
           | 1249 | jpm | 476 | 	configurerDatePicker();
 | 
        
           | 1210 | jpm | 477 |   | 
        
           |  |  | 478 | 	ajouterAutocompletionNoms();
 | 
        
           |  |  | 479 |   | 
        
           | 1249 | jpm | 480 | 	configurerFormValidator();
 | 
        
           |  |  | 481 | 	definirReglesFormValidator();
 | 
        
           |  |  | 482 |   | 
        
           |  |  | 483 | 	$("#courriel_confirmation").on('paste', bloquerCopierCollerCourriel);
 | 
        
           |  |  | 484 |   | 
        
           |  |  | 485 | 	$("a.afficher-coord").on('click', basculerAffichageCoord);
 | 
        
           |  |  | 486 |   | 
        
           |  |  | 487 | 	$("#ajouter-obs").on('click', ajouterObs);
 | 
        
           |  |  | 488 |   | 
        
           |  |  | 489 | 	$(".obs-nbre").on('changement', surChangementNbreObs);
 | 
        
           |  |  | 490 |   | 
        
           |  |  | 491 | 	$("body").on('click', ".supprimer-obs", supprimerObs);
 | 
        
           |  |  | 492 |   | 
        
           |  |  | 493 | 	$("#transmettre-obs").on('click', transmettreObs);
 | 
        
           | 1476 | aurelien | 494 |   | 
        
           |  |  | 495 | 	$("#referentiel").on('change', surChangementReferentiel);
 | 
        
           | 1524 | aurelien | 496 |   | 
        
           |  |  | 497 | 	$("body").on('click', ".defilement-miniatures-gauche", function(event) {
 | 
        
           |  |  | 498 | 			event.preventDefault();
 | 
        
           |  |  | 499 | 			defilerMiniatures($(this));
 | 
        
           |  |  | 500 | 	});
 | 
        
           |  |  | 501 |   | 
        
           |  |  | 502 | 	$("body").on('click', ".defilement-miniatures-droite", function(event) {
 | 
        
           |  |  | 503 | 		event.preventDefault();
 | 
        
           |  |  | 504 | 		defilerMiniatures($(this));
 | 
        
           |  |  | 505 | 	});
 | 
        
           | 1249 | jpm | 506 | });
 | 
        
           |  |  | 507 |   | 
        
           |  |  | 508 | function configurerFormValidator() {
 | 
        
           | 1210 | jpm | 509 | 	$.validator.addMethod(
 | 
        
           |  |  | 510 | 		"dateCel",
 | 
        
           |  |  | 511 | 		function (value, element) {
 | 
        
           | 1485 | aurelien | 512 | 			return value == "" || (/^[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{4}$/.test(value));
 | 
        
           | 1213 | jpm | 513 | 		},
 | 
        
           |  |  | 514 | 		"Format : jj/mm/aaaa. Date incomplète, utiliser 0, exemple : 00/12/2011.");
 | 
        
           | 1210 | jpm | 515 | 	$.extend($.validator.defaults, {
 | 
        
           |  |  | 516 | 		errorClass: "control-group error",
 | 
        
           |  |  | 517 | 		validClass: "control-group success",
 | 
        
           |  |  | 518 | 		errorElement: "span",
 | 
        
           | 1213 | jpm | 519 | 		highlight: function(element, errorClass, validClass) {
 | 
        
           | 1210 | jpm | 520 | 			if (element.type === 'radio') {
 | 
        
           |  |  | 521 | 				this.findByName(element.name).parent("div").parent("div").removeClass(validClass).addClass(errorClass);
 | 
        
           |  |  | 522 | 			} else {
 | 
        
           |  |  | 523 | 				$(element).parent("div").parent("div").removeClass(validClass).addClass(errorClass);
 | 
        
           |  |  | 524 | 			}
 | 
        
           |  |  | 525 | 		},
 | 
        
           | 1213 | jpm | 526 | 		unhighlight: function(element, errorClass, validClass) {
 | 
        
           | 1210 | jpm | 527 | 			if (element.type === 'radio') {
 | 
        
           |  |  | 528 | 				this.findByName(element.name).parent("div").parent("div").removeClass(errorClass).addClass(validClass);
 | 
        
           |  |  | 529 | 			} else {
 | 
        
           | 1213 | jpm | 530 | 				if ($(element).attr('id') == 'taxon') {
 | 
        
           | 1493 | aurelien | 531 | 					if ($("#taxon").val() != '') {
 | 
        
           |  |  | 532 | 						// Si le taxon n'est pas lié au référentiel, on vide le data associé
 | 
        
           |  |  | 533 | 						if($("#taxon").data("value") != $("#taxon").val()) {
 | 
        
           |  |  | 534 | 							$("#taxon").data("numNomSel","");
 | 
        
           |  |  | 535 | 							$("#taxon").data("nomRet","");
 | 
        
           |  |  | 536 | 							$("#taxon").data("numNomRet","");
 | 
        
           |  |  | 537 | 							$("#taxon").data("nt","");
 | 
        
           |  |  | 538 | 							$("#taxon").data("famille","");
 | 
        
           | 1213 | jpm | 539 | 						}
 | 
        
           | 1493 | aurelien | 540 | 						$("#taxon-input-groupe").removeClass(errorClass).addClass(validClass);
 | 
        
           |  |  | 541 | 						$(element).next(" span.help-inline").remove();
 | 
        
           | 1213 | jpm | 542 | 					}
 | 
        
           |  |  | 543 | 				} else {
 | 
        
           |  |  | 544 | 					$(element).parent("div").parent("div").removeClass(errorClass).addClass(validClass);
 | 
        
           |  |  | 545 | 					$(element).next(" span.help-inline").remove();
 | 
        
           |  |  | 546 | 				}
 | 
        
           | 1210 | jpm | 547 | 			}
 | 
        
           |  |  | 548 | 		}
 | 
        
           |  |  | 549 | 	});
 | 
        
           | 1249 | jpm | 550 | }
 | 
        
           |  |  | 551 |   | 
        
           |  |  | 552 | function definirReglesFormValidator() {
 | 
        
           | 1210 | jpm | 553 | 	$("#form-observateur").validate({
 | 
        
           |  |  | 554 | 		rules: {
 | 
        
           |  |  | 555 | 			courriel : {
 | 
        
           |  |  | 556 | 				required : true,
 | 
        
           |  |  | 557 | 				email : true},
 | 
        
           |  |  | 558 | 			courriel_confirmation : {
 | 
        
           |  |  | 559 | 				required : true,
 | 
        
           |  |  | 560 | 				equalTo: "#courriel"}
 | 
        
           |  |  | 561 | 		}
 | 
        
           |  |  | 562 | 	});
 | 
        
           |  |  | 563 | 	$("#form-station").validate({
 | 
        
           |  |  | 564 | 		rules: {
 | 
        
           |  |  | 565 | 			latitude : {
 | 
        
           |  |  | 566 | 				range: [-90, 90]},
 | 
        
           |  |  | 567 | 			longitude : {
 | 
        
           |  |  | 568 | 				range: [-180, 180]}
 | 
        
           |  |  | 569 | 		}
 | 
        
           |  |  | 570 | 	});
 | 
        
           |  |  | 571 | 	$("#form-obs").validate({
 | 
        
           |  |  | 572 | 		rules: {
 | 
        
           | 1213 | jpm | 573 | 			date : "dateCel",
 | 
        
           | 1210 | jpm | 574 | 			taxon : "required"
 | 
        
           |  |  | 575 | 		}
 | 
        
           |  |  | 576 | 	});
 | 
        
           | 1249 | jpm | 577 | }
 | 
        
           |  |  | 578 |   | 
        
           |  |  | 579 | function configurerDatePicker() {
 | 
        
           |  |  | 580 | 	$.datepicker.setDefaults($.datepicker.regional["fr"]);
 | 
        
           |  |  | 581 | 	$("#date").datepicker({
 | 
        
           | 1990 | jpm | 582 | 		dateFormat: "dd/mm/yy",
 | 
        
           |  |  | 583 | 		maxDate: new Date,
 | 
        
           | 1249 | jpm | 584 | 		showOn: "button",
 | 
        
           | 1990 | jpm | 585 | 		buttonImageOnly: true,
 | 
        
           | 1249 | jpm | 586 | 		buttonImage: CALENDRIER_ICONE_URL,
 | 
        
           |  |  | 587 | 		buttonText: "Afficher le calendrier pour saisir la date.",
 | 
        
           |  |  | 588 | 		showButtonPanel: true
 | 
        
           | 1210 | jpm | 589 | 	});
 | 
        
           | 1249 | jpm | 590 | 	$("img.ui-datepicker-trigger").appendTo("#date-icone");
 | 
        
           |  |  | 591 | }
 | 
        
           |  |  | 592 |   | 
        
           |  |  | 593 | function fermerPanneauAlert() {
 | 
        
           |  |  | 594 | 	$(this).parentsUntil(".zone-alerte", ".alert").hide();
 | 
        
           |  |  | 595 | }
 | 
        
           |  |  | 596 |   | 
        
           |  |  | 597 | function formaterNom() {
 | 
        
           |  |  | 598 | 	$(this).val($(this).val().toUpperCase());
 | 
        
           |  |  | 599 | }
 | 
        
           |  |  | 600 |   | 
        
           |  |  | 601 | function formaterPrenom() {
 | 
        
           |  |  | 602 | 	var prenom = new Array();
 | 
        
           |  |  | 603 | 	var mots = $(this).val().split(' ');
 | 
        
           |  |  | 604 | 	for (var i = 0; i < mots.length; i++) {
 | 
        
           |  |  | 605 | 		var mot = mots[i];
 | 
        
           |  |  | 606 | 		if (mot.indexOf('-') >= 0) {
 | 
        
           |  |  | 607 | 			var prenomCompose = new Array();
 | 
        
           |  |  | 608 | 			var motsComposes = mot.split('-');
 | 
        
           |  |  | 609 | 		    for (var j = 0; j < motsComposes.length; j++) {
 | 
        
           |  |  | 610 | 		    	var motSimple = motsComposes[j];
 | 
        
           |  |  | 611 | 		    	var motMajuscule = motSimple.charAt(0).toUpperCase() + motSimple.slice(1);
 | 
        
           |  |  | 612 | 		    	prenomCompose.push(motMajuscule);
 | 
        
           |  |  | 613 | 		    }
 | 
        
           |  |  | 614 | 		    prenom.push(prenomCompose.join('-'));
 | 
        
           |  |  | 615 | 		} else {
 | 
        
           |  |  | 616 | 			var motMajuscule = mot.charAt(0).toUpperCase() + mot.slice(1);
 | 
        
           |  |  | 617 | 			prenom.push(motMajuscule);
 | 
        
           |  |  | 618 | 		}
 | 
        
           |  |  | 619 | 	}
 | 
        
           |  |  | 620 | 	$(this).val(prenom.join(' '));
 | 
        
           |  |  | 621 | }
 | 
        
           |  |  | 622 |   | 
        
           |  |  | 623 | function basculerAffichageAide()  {
 | 
        
           |  |  | 624 | 	if ($(this).hasClass('btn-warning')) {
 | 
        
           |  |  | 625 | 		$("[rel=tooltip]").tooltip('enable');
 | 
        
           |  |  | 626 | 		$(this).removeClass('btn-warning').addClass('btn-success');
 | 
        
           |  |  | 627 | 		$('#btn-aide-txt', this).text("Désactiver l'aide");
 | 
        
           |  |  | 628 | 	} else {
 | 
        
           |  |  | 629 | 		$("[rel=tooltip]").tooltip('disable');
 | 
        
           |  |  | 630 | 		$(this).removeClass('btn-success').addClass('btn-warning');
 | 
        
           |  |  | 631 | 		$('#btn-aide-txt', this).text("Activer l'aide");
 | 
        
           |  |  | 632 | 	}
 | 
        
           |  |  | 633 | }
 | 
        
           |  |  | 634 |   | 
        
           |  |  | 635 | function bloquerCopierCollerCourriel() {
 | 
        
           | 1251 | jpm | 636 | 	afficherPanneau("#dialogue-bloquer-copier-coller");
 | 
        
           | 1249 | jpm | 637 | 	return false;
 | 
        
           |  |  | 638 | }
 | 
        
           |  |  | 639 |   | 
        
           |  |  | 640 | function basculerAffichageCoord() {
 | 
        
           |  |  | 641 | 	$("a.afficher-coord").toggle();
 | 
        
           |  |  | 642 | 	$("#coordonnees-geo").toggle('slow');
 | 
        
           |  |  | 643 | 	//valeur false pour que le lien ne soit pas suivi
 | 
        
           |  |  | 644 | 	return false;
 | 
        
           |  |  | 645 | }
 | 
        
           |  |  | 646 |   | 
        
           |  |  | 647 | function ajouterObs() {
 | 
        
           |  |  | 648 | 	if (validerFormulaire() == true) {
 | 
        
           |  |  | 649 | 		obsNbre = obsNbre + 1;
 | 
        
           |  |  | 650 | 		$(".obs-nbre").text(obsNbre);
 | 
        
           |  |  | 651 | 		$(".obs-nbre").triggerHandler('changement');
 | 
        
           |  |  | 652 | 		afficherObs();
 | 
        
           |  |  | 653 | 		stockerObsData();
 | 
        
           | 1524 | aurelien | 654 | 		supprimerMiniatures();
 | 
        
           | 1856 | aurelien | 655 | 		if(!ESPECE_IMPOSEE) {
 | 
        
           |  |  | 656 | 			$("#taxon").val("");
 | 
        
           |  |  | 657 | 			$("#taxon").data("numNomSel",undefined);
 | 
        
           |  |  | 658 | 		}
 | 
        
           | 2110 | aurelien | 659 | 		$('#barre-progression-upload').attr('aria-valuemax', obsNbre);
 | 
        
           |  |  | 660 | 		$('#barre-progression-upload .sr-only').text('0/'+obsNbre+" observations transmises");
 | 
        
           | 1249 | jpm | 661 | 	} else {
 | 
        
           |  |  | 662 | 		afficherPanneau('#dialogue-form-invalide');
 | 
        
           |  |  | 663 | 	}
 | 
        
           |  |  | 664 | }
 | 
        
           |  |  | 665 |   | 
        
           |  |  | 666 | function afficherObs() {
 | 
        
           |  |  | 667 | 	$("#liste-obs").prepend(
 | 
        
           |  |  | 668 | 		'<div id="obs'+obsNbre+'" class="row-fluid obs obs'+obsNbre+'">'+
 | 
        
           |  |  | 669 | 			'<div class="span12">'+
 | 
        
           | 1253 | jpm | 670 | 				'<div class="well">'+
 | 
        
           |  |  | 671 | 					'<div class="obs-action pull-right" rel="tooltip" data-placement="bottom" '+
 | 
        
           |  |  | 672 | 						'title="Supprimer cette observation de la liste à transmettre">'+
 | 
        
           | 1249 | jpm | 673 | 						'<button class="btn btn-danger supprimer-obs" value="'+obsNbre+'" title="'+obsNbre+'">'+
 | 
        
           |  |  | 674 | 							'<i class="icon-trash icon-white"></i>'+
 | 
        
           |  |  | 675 | 						'</button>'+
 | 
        
           |  |  | 676 | 					'</div> '+
 | 
        
           |  |  | 677 | 					'<div class="row-fluid">'+
 | 
        
           |  |  | 678 | 						'<div class="thumbnail span2">'+
 | 
        
           |  |  | 679 | 							ajouterImgMiniatureAuTransfert()+
 | 
        
           | 1240 | jpm | 680 | 						'</div>'+
 | 
        
           | 1249 | jpm | 681 | 						'<div class="span9">'+
 | 
        
           |  |  | 682 | 							'<ul class="unstyled">'+
 | 
        
           |  |  | 683 | 								'<li>'+
 | 
        
           |  |  | 684 | 									'<span class="nom-sci">'+$("#taxon").val()+'</span> '+
 | 
        
           | 1485 | aurelien | 685 | 									ajouterNumNomSel()+'<span class="referentiel-obs">'+
 | 
        
           |  |  | 686 | 									($("#taxon").data("numNomSel") == undefined ? '' : '['+NOM_SCI_PROJET+']')+'</span>'+
 | 
        
           | 1249 | jpm | 687 | 									' observé à '+
 | 
        
           |  |  | 688 | 									'<span class="commune">'+$('#commune-nom').text()+'</span> '+
 | 
        
           |  |  | 689 | 									'('+$('#commune-code-insee').text()+') ['+$("#latitude").val()+' / '+$("#longitude").val()+']'+
 | 
        
           |  |  | 690 | 									' le '+
 | 
        
           |  |  | 691 | 									'<span class="date">'+$("#date").val()+'</span>'+
 | 
        
           |  |  | 692 | 								'</li>'+
 | 
        
           |  |  | 693 | 								'<li>'+
 | 
        
           |  |  | 694 | 									'<span>Lieu-dit :</span> '+$('#lieudit').val()+' '+
 | 
        
           |  |  | 695 | 									'<span>Station :</span> '+$('#station').val()+' '+
 | 
        
           |  |  | 696 | 									'<span>Milieu :</span> '+$('#milieu').val()+' '+
 | 
        
           |  |  | 697 | 								'</li>'+
 | 
        
           |  |  | 698 | 								'<li>'+
 | 
        
           |  |  | 699 | 									'Commentaires : <span class="discretion">'+$("#notes").val()+'</span>'+
 | 
        
           |  |  | 700 | 								'</li>'+
 | 
        
           |  |  | 701 | 							'</ul>'+
 | 
        
           |  |  | 702 | 						'</div>'+
 | 
        
           | 1237 | jpm | 703 | 					'</div>'+
 | 
        
           | 1249 | jpm | 704 | 				'</div>'+
 | 
        
           |  |  | 705 | 			'</div>'+
 | 
        
           |  |  | 706 | 		'</div>');
 | 
        
           |  |  | 707 | }
 | 
        
           |  |  | 708 |   | 
        
           |  |  | 709 | function stockerObsData() {
 | 
        
           |  |  | 710 | 	$("#liste-obs").data('obsId'+obsNbre, {
 | 
        
           |  |  | 711 | 		'date' : $("#date").val(),
 | 
        
           |  |  | 712 | 		'notes' : $("#notes").val(),
 | 
        
           |  |  | 713 |   | 
        
           |  |  | 714 | 		'nom_sel' : $("#taxon").val(),
 | 
        
           |  |  | 715 | 		'num_nom_sel' : $("#taxon").data("numNomSel"),
 | 
        
           |  |  | 716 | 		'nom_ret' : $("#taxon").data("nomRet"),
 | 
        
           |  |  | 717 | 		'num_nom_ret' : $("#taxon").data("numNomRet"),
 | 
        
           |  |  | 718 | 		'num_taxon' : $("#taxon").data("nt"),
 | 
        
           |  |  | 719 | 		'famille' : $("#taxon").data("famille"),
 | 
        
           | 2159 | mathias | 720 | 		'referentiel' : ($("#taxon").data("numNomSel") == undefined ? '' : NOM_SCI_PROJET),
 | 
        
           | 1249 | jpm | 721 |   | 
        
           |  |  | 722 | 		'latitude' : $("#latitude").val(),
 | 
        
           |  |  | 723 | 		'longitude' : $("#longitude").val(),
 | 
        
           |  |  | 724 | 		'commune_nom' : $("#commune-nom").text(),
 | 
        
           |  |  | 725 | 		'commune_code_insee' : $("#commune-code-insee").text(),
 | 
        
           | 1251 | jpm | 726 | 		'lieudit' : $("#lieudit").val(),
 | 
        
           | 1249 | jpm | 727 | 		'station' : $("#station").val(),
 | 
        
           |  |  | 728 | 		'milieu' : $("#milieu").val(),
 | 
        
           |  |  | 729 |   | 
        
           |  |  | 730 | 		//Ajout des champs images
 | 
        
           | 1524 | aurelien | 731 | 		'image_nom' : getNomsImgsOriginales(),
 | 
        
           |  |  | 732 | 		'image_b64' : getB64ImgsOriginales()
 | 
        
           | 1210 | jpm | 733 | 	});
 | 
        
           | 1249 | jpm | 734 | }
 | 
        
           |  |  | 735 |   | 
        
           | 1476 | aurelien | 736 | function surChangementReferentiel() {
 | 
        
           |  |  | 737 | 	NOM_SCI_PROJET = $('#referentiel').val();
 | 
        
           |  |  | 738 | 	NOM_SCI_REFERENTIEL = NOM_SCI_PROJET+':'+PROJETS_VERSIONS[NOM_SCI_PROJET];
 | 
        
           |  |  | 739 | 	$('#taxon').val('');
 | 
        
           | 2125 | mathias | 740 | 	initialiserAutocompleteCommune();
 | 
        
           |  |  | 741 | 	initialiserGoogleMap();
 | 
        
           | 1476 | aurelien | 742 | }
 | 
        
           |  |  | 743 |   | 
        
           | 1249 | jpm | 744 | function surChangementNbreObs() {
 | 
        
           |  |  | 745 | 	if (obsNbre == 0) {
 | 
        
           |  |  | 746 | 		$("#transmettre-obs").attr('disabled', 'disabled');
 | 
        
           |  |  | 747 | 		$("#ajouter-obs").removeAttr('disabled');
 | 
        
           |  |  | 748 | 	} else if (obsNbre > 0 && obsNbre < OBS_MAX_NBRE) {
 | 
        
           |  |  | 749 | 		$("#transmettre-obs").removeAttr('disabled');
 | 
        
           |  |  | 750 | 		$("#ajouter-obs").removeAttr('disabled');
 | 
        
           |  |  | 751 | 	} else if (obsNbre >= OBS_MAX_NBRE) {
 | 
        
           |  |  | 752 | 		$("#ajouter-obs").attr('disabled', 'disabled');
 | 
        
           |  |  | 753 | 		afficherPanneau("#dialogue-bloquer-creer-obs");
 | 
        
           |  |  | 754 | 	}
 | 
        
           |  |  | 755 | }
 | 
        
           |  |  | 756 |   | 
        
           | 2110 | aurelien | 757 | var nbObsEnCours = 1;
 | 
        
           |  |  | 758 | var totalObsATransmettre = 0;
 | 
        
           | 1249 | jpm | 759 | function transmettreObs() {
 | 
        
           |  |  | 760 | 	var observations = $("#liste-obs").data();
 | 
        
           |  |  | 761 | 	if (observations == undefined || jQuery.isEmptyObject(observations)) {
 | 
        
           |  |  | 762 | 		afficherPanneau("#dialogue-zero-obs");
 | 
        
           |  |  | 763 | 	} else {
 | 
        
           | 2110 | aurelien | 764 | 		nbObsEnCours = 1;
 | 
        
           |  |  | 765 | 		nbObsTransmises = 0;
 | 
        
           |  |  | 766 | 		totalObsATransmettre = $.map(observations, function(n, i) { return i; }).length;
 | 
        
           |  |  | 767 | 		depilerObsPourEnvoi();
 | 
        
           |  |  | 768 | 	}
 | 
        
           |  |  | 769 | 	return false;
 | 
        
           |  |  | 770 | }
 | 
        
           |  |  | 771 |   | 
        
           |  |  | 772 | function depilerObsPourEnvoi() {
 | 
        
           |  |  | 773 | 	var observations = $("#liste-obs").data();
 | 
        
           |  |  | 774 | 	// la boucle est factice car on utilise un tableau
 | 
        
           |  |  | 775 | 	// dont on a besoin de n'extraire que le premier élément
 | 
        
           |  |  | 776 | 	// or javascript n'a pas de méthode cross browsers pour extraire les clés
 | 
        
           |  |  | 777 | 	// TODO: utiliser var.keys quand ça sera plus répandu
 | 
        
           |  |  | 778 | 	// ou bien utiliser un vrai tableau et pas un objet
 | 
        
           |  |  | 779 | 	for (var obsNum in observations) {
 | 
        
           |  |  | 780 | 		obsATransmettre = new Object();
 | 
        
           |  |  | 781 |   | 
        
           |  |  | 782 | 	    obsATransmettre['projet'] = TAG_PROJET;
 | 
        
           |  |  | 783 | 	    obsATransmettre['tag-obs'] = TAG_OBS;
 | 
        
           |  |  | 784 | 	    obsATransmettre['tag-img'] = TAG_IMG;
 | 
        
           | 1210 | jpm | 785 |   | 
        
           | 1249 | jpm | 786 | 		var utilisateur = new Object();
 | 
        
           | 1352 | aurelien | 787 | 		utilisateur.id_utilisateur = $("#id_utilisateur").val();
 | 
        
           | 1249 | jpm | 788 | 		utilisateur.prenom = $("#prenom").val();
 | 
        
           |  |  | 789 | 		utilisateur.nom = $("#nom").val();
 | 
        
           |  |  | 790 | 		utilisateur.courriel = $("#courriel").val();
 | 
        
           | 2110 | aurelien | 791 | 		obsATransmettre['utilisateur'] = utilisateur;
 | 
        
           |  |  | 792 | 		obsATransmettre[obsNum] = observations[obsNum];
 | 
        
           |  |  | 793 | 		var idObsNumerique = obsNum.replace('obsId', '');
 | 
        
           |  |  | 794 | 		if(idObsNumerique != "") {
 | 
        
           |  |  | 795 | 			envoyerObsAuCel(idObsNumerique, obsATransmettre);
 | 
        
           |  |  | 796 | 		}
 | 
        
           |  |  | 797 |   | 
        
           |  |  | 798 | 		break;
 | 
        
           | 1249 | jpm | 799 | 	}
 | 
        
           |  |  | 800 | }
 | 
        
           |  |  | 801 |   | 
        
           | 2110 | aurelien | 802 | var nbObsTransmises = 0;
 | 
        
           |  |  | 803 | function mettreAJourProgression() {
 | 
        
           |  |  | 804 | 	nbObsTransmises++;
 | 
        
           |  |  | 805 | 	var pct = (nbObsTransmises/totalObsATransmettre)*100;
 | 
        
           |  |  | 806 | 	$('#barre-progression-upload').attr('aria-valuenow', nbObsTransmises);
 | 
        
           |  |  | 807 | 	$('#barre-progression-upload').attr('style', "width: "+pct+"%");
 | 
        
           |  |  | 808 | 	$('#barre-progression-upload .sr-only').text(nbObsTransmises+"/"+totalObsATransmettre+" observations transmises");
 | 
        
           |  |  | 809 |   | 
        
           |  |  | 810 | 	if(obsNbre == 0) {
 | 
        
           |  |  | 811 | 		$('.progress').removeClass('active');
 | 
        
           |  |  | 812 | 		$('.progress').removeClass('progress-striped');
 | 
        
           |  |  | 813 | 	}
 | 
        
           |  |  | 814 | }
 | 
        
           |  |  | 815 |   | 
        
           |  |  | 816 | function envoyerObsAuCel(idObs, observation) {
 | 
        
           | 1249 | jpm | 817 | 	var erreurMsg = "";
 | 
        
           |  |  | 818 | 	$.ajax({
 | 
        
           |  |  | 819 | 		url : SERVICE_SAISIE_URL,
 | 
        
           |  |  | 820 | 		type : "POST",
 | 
        
           | 2110 | aurelien | 821 | 		data : observation,
 | 
        
           | 1249 | jpm | 822 | 		dataType : "json",
 | 
        
           |  |  | 823 | 		beforeSend : function() {
 | 
        
           | 1251 | jpm | 824 | 			$("#dialogue-obs-transaction-ko").hide();
 | 
        
           |  |  | 825 | 			$("#dialogue-obs-transaction-ok").hide();
 | 
        
           | 1249 | jpm | 826 | 			$(".alert-txt .msg").remove();
 | 
        
           |  |  | 827 | 			$(".alert-txt .msg-erreur").remove();
 | 
        
           |  |  | 828 | 			$(".alert-txt .msg-debug").remove();
 | 
        
           |  |  | 829 | 			$("#chargement").show();
 | 
        
           |  |  | 830 | 		},
 | 
        
           |  |  | 831 | 		success : function(data, textStatus, jqXHR) {
 | 
        
           | 2110 | aurelien | 832 | 			// mise à jour du nombre d'obs à transmettre
 | 
        
           |  |  | 833 | 			// et suppression de l'obs
 | 
        
           |  |  | 834 | 			supprimerObsParId(idObs);
 | 
        
           |  |  | 835 | 			nbObsEnCours++;
 | 
        
           |  |  | 836 | 			// mise à jour du statut
 | 
        
           |  |  | 837 | 			mettreAJourProgression();
 | 
        
           |  |  | 838 | 			if(obsNbre > 0) {
 | 
        
           |  |  | 839 | 				// dépilement de la suivante
 | 
        
           |  |  | 840 | 				depilerObsPourEnvoi();
 | 
        
           |  |  | 841 | 			}
 | 
        
           | 1249 | jpm | 842 | 		},
 | 
        
           |  |  | 843 | 		statusCode : {
 | 
        
           |  |  | 844 | 			500 : function(jqXHR, textStatus, errorThrown) {
 | 
        
           |  |  | 845 | 				erreurMsg += "Erreur 500 :\ntype : "+textStatus+' '+errorThrown+"\n";
 | 
        
           |  |  | 846 | 		    }
 | 
        
           |  |  | 847 | 		},
 | 
        
           |  |  | 848 | 		error : function(jqXHR, textStatus, errorThrown) {
 | 
        
           |  |  | 849 | 			erreurMsg += "Erreur Ajax :\ntype : "+textStatus+' '+errorThrown+"\n";
 | 
        
           |  |  | 850 | 			try {
 | 
        
           |  |  | 851 | 				reponse = jQuery.parseJSON(jqXHR.responseText);
 | 
        
           |  |  | 852 | 				if (reponse != null) {
 | 
        
           |  |  | 853 | 					$.each(reponse, function (cle, valeur) {
 | 
        
           |  |  | 854 | 						erreurMsg += valeur + "\n";
 | 
        
           |  |  | 855 | 					});
 | 
        
           |  |  | 856 | 				}
 | 
        
           |  |  | 857 | 			} catch(e) {
 | 
        
           |  |  | 858 | 				erreurMsg += "L'erreur n'était pas en JSON.";
 | 
        
           |  |  | 859 | 			}
 | 
        
           |  |  | 860 | 		},
 | 
        
           |  |  | 861 | 		complete : function(jqXHR, textStatus) {
 | 
        
           |  |  | 862 | 			var debugMsg = extraireEnteteDebug(jqXHR);
 | 
        
           | 1210 | jpm | 863 |   | 
        
           | 1249 | jpm | 864 | 			if (erreurMsg != '') {
 | 
        
           |  |  | 865 | 				if (DEBUG) {
 | 
        
           |  |  | 866 | 					$("#dialogue-obs-transaction-ko .alert-txt").append('<pre class="msg-erreur">'+erreurMsg+'</pre>');
 | 
        
           |  |  | 867 | 					$("#dialogue-obs-transaction-ko .alert-txt").append('<pre class="msg-debug">Débogage : '+debugMsg+'</pre>');
 | 
        
           | 1210 | jpm | 868 | 				}
 | 
        
           | 1901 | mathias | 869 | 				var hrefCourriel = "mailto:cel_remarques@tela-botanica.org?"+
 | 
        
           |  |  | 870 | 					"subject=Dysfonctionnement du widget de saisie "+TAG_PROJET+
 | 
        
           | 1902 | mathias | 871 | 					"&body="+erreurMsg+"%0D%0ADébogage :%0D%0A"+debugMsg;
 | 
        
           | 1249 | jpm | 872 |   | 
        
           | 2110 | aurelien | 873 | 				// mise en valeur de l'obs en erreur + scroll vers celle ci en changeant le hash
 | 
        
           |  |  | 874 | 				$('#obs'+idObs+' div div').addClass('obs-erreur');
 | 
        
           |  |  | 875 | 				window.location.hash = "obs"+idObs;
 | 
        
           |  |  | 876 |   | 
        
           | 1249 | jpm | 877 | 				$('#dialogue-obs-transaction-ko .alert-txt').append($("#tpl-transmission-ko").clone()
 | 
        
           |  |  | 878 | 					.find('.courriel-erreur')
 | 
        
           |  |  | 879 | 					.attr('href', hrefCourriel)
 | 
        
           |  |  | 880 | 					.end()
 | 
        
           |  |  | 881 | 					.html());
 | 
        
           |  |  | 882 | 				$("#dialogue-obs-transaction-ko").show();
 | 
        
           | 2110 | aurelien | 883 | 				$("#chargement").hide();
 | 
        
           |  |  | 884 | 				initialiserBarreProgression();
 | 
        
           | 1249 | jpm | 885 | 			} else {
 | 
        
           |  |  | 886 | 				if (DEBUG) {
 | 
        
           |  |  | 887 | 					$("#dialogue-obs-transaction-ok .alert-txt").append('<pre class="msg-debug">Débogage : '+debugMsg+'</pre>');
 | 
        
           |  |  | 888 | 				}
 | 
        
           | 2110 | aurelien | 889 | 				if(obsNbre == 0) {
 | 
        
           |  |  | 890 | 					setTimeout(function() {
 | 
        
           |  |  | 891 | 						$("#chargement").hide();
 | 
        
           |  |  | 892 | 						$('#dialogue-obs-transaction-ok .alert-txt').append($('#tpl-transmission-ok').clone().html());
 | 
        
           |  |  | 893 | 						$("#dialogue-obs-transaction-ok").show();
 | 
        
           | 2117 | aurelien | 894 | 						window.location.hash = "dialogue-obs-transaction-ok";
 | 
        
           | 2110 | aurelien | 895 | 						initialiserObs();
 | 
        
           |  |  | 896 | 					}, 1500);
 | 
        
           |  |  | 897 |   | 
        
           |  |  | 898 | 				}
 | 
        
           | 1251 | jpm | 899 | 			}
 | 
        
           | 1210 | jpm | 900 | 		}
 | 
        
           |  |  | 901 | 	});
 | 
        
           | 1249 | jpm | 902 | }
 | 
        
           | 1210 | jpm | 903 |   | 
        
           |  |  | 904 | function validerFormulaire() {
 | 
        
           |  |  | 905 | 	$observateur = $("#form-observateur").valid();
 | 
        
           |  |  | 906 | 	$station = $("#form-station").valid();
 | 
        
           |  |  | 907 | 	$obs = $("#form-obs").valid();
 | 
        
           |  |  | 908 | 	return ($observateur == true && $station == true && $obs == true) ? true : false;
 | 
        
           |  |  | 909 | }
 | 
        
           |  |  | 910 |   | 
        
           | 1524 | aurelien | 911 | function getNomsImgsOriginales() {
 | 
        
           |  |  | 912 | 	var noms = new Array();
 | 
        
           |  |  | 913 | 	$(".miniature-img").each(function() {
 | 
        
           |  |  | 914 | 		noms.push($(this).attr('alt'));
 | 
        
           |  |  | 915 | 	});
 | 
        
           |  |  | 916 | 	return noms;
 | 
        
           |  |  | 917 | }
 | 
        
           |  |  | 918 |   | 
        
           |  |  | 919 | function getB64ImgsOriginales() {
 | 
        
           |  |  | 920 | 	var b64 = new Array();
 | 
        
           |  |  | 921 | 	$(".miniature-img").each(function() {
 | 
        
           |  |  | 922 | 		if ($(this).hasClass('b64')) {
 | 
        
           |  |  | 923 | 			b64.push($(this).attr('src'));
 | 
        
           |  |  | 924 | 		} else if ($(this).hasClass('b64-canvas')) {
 | 
        
           |  |  | 925 | 			b64.push($(this).data('b64'));
 | 
        
           |  |  | 926 | 		}
 | 
        
           |  |  | 927 | 	});
 | 
        
           |  |  | 928 |   | 
        
           | 1210 | jpm | 929 | 	return b64;
 | 
        
           |  |  | 930 | }
 | 
        
           |  |  | 931 |   | 
        
           |  |  | 932 | function supprimerObs() {
 | 
        
           |  |  | 933 | 	var obsId = $(this).val();
 | 
        
           |  |  | 934 | 	// Problème avec IE 6 et 7
 | 
        
           |  |  | 935 | 	if (obsId == "Supprimer") {
 | 
        
           |  |  | 936 | 		obsId = $(this).attr("title");
 | 
        
           |  |  | 937 | 	}
 | 
        
           | 2110 | aurelien | 938 | 	supprimerObsParId(obsId);
 | 
        
           |  |  | 939 | }
 | 
        
           |  |  | 940 |   | 
        
           |  |  | 941 | function supprimerObsParId(obsId) {
 | 
        
           | 1215 | jpm | 942 | 	obsNbre = obsNbre - 1;
 | 
        
           |  |  | 943 | 	$(".obs-nbre").text(obsNbre);
 | 
        
           | 1237 | jpm | 944 | 	$(".obs-nbre").triggerHandler('changement');
 | 
        
           | 1215 | jpm | 945 | 	$('.obs'+obsId).remove();
 | 
        
           | 1210 | jpm | 946 | 	$("#liste-obs").removeData('obsId'+obsId);
 | 
        
           |  |  | 947 | }
 | 
        
           |  |  | 948 |   | 
        
           | 2110 | aurelien | 949 | function initialiserBarreProgression() {
 | 
        
           |  |  | 950 | 	$('#barre-progression-upload').attr('aria-valuenow', 0);
 | 
        
           |  |  | 951 | 	$('#barre-progression-upload').attr('style', "width: 0%");
 | 
        
           |  |  | 952 | 	$('#barre-progression-upload .sr-only').text("0/0 observations transmises");
 | 
        
           |  |  | 953 | 	$('.progress').addClass('active');
 | 
        
           |  |  | 954 | 	$('.progress').addClass('progress-striped');
 | 
        
           |  |  | 955 | }
 | 
        
           |  |  | 956 |   | 
        
           | 1249 | jpm | 957 | function initialiserObs() {
 | 
        
           | 1231 | jpm | 958 | 	obsNbre = 0;
 | 
        
           | 2110 | aurelien | 959 | 	nbObsTransmises = 0;
 | 
        
           |  |  | 960 | 	nbObsEnCours = 0;
 | 
        
           |  |  | 961 | 	totalObsATransmettre = 0;
 | 
        
           |  |  | 962 | 	initialiserBarreProgression();
 | 
        
           | 1231 | jpm | 963 | 	$(".obs-nbre").text(obsNbre);
 | 
        
           | 1249 | jpm | 964 | 	$(".obs-nbre").triggerHandler('changement');
 | 
        
           |  |  | 965 | 	$("#liste-obs").removeData();
 | 
        
           |  |  | 966 | 	$('.obs').remove();
 | 
        
           |  |  | 967 | 	$("#dialogue-bloquer-creer-obs").hide();
 | 
        
           | 1231 | jpm | 968 | }
 | 
        
           |  |  | 969 |   | 
        
           | 1210 | jpm | 970 | function ajouterImgMiniatureAuTransfert() {
 | 
        
           | 1524 | aurelien | 971 | 	var html = '';
 | 
        
           |  |  | 972 | 	var miniatures = '';
 | 
        
           |  |  | 973 | 	var premiere = true;
 | 
        
           |  |  | 974 | 	if ($("#miniatures img").length >= 1) {
 | 
        
           |  |  | 975 | 		$("#miniatures img").each(function() {
 | 
        
           |  |  | 976 | 			var visible = premiere ? 'miniature-selectionnee' : 'miniature-cachee';
 | 
        
           |  |  | 977 | 			premiere = false;
 | 
        
           |  |  | 978 | 			var css = $(this).hasClass('b64') ? 'miniature b64' : 'miniature';
 | 
        
           |  |  | 979 | 			var src = $(this).attr("src");
 | 
        
           |  |  | 980 | 			var alt = $(this).attr("alt");
 | 
        
           |  |  | 981 | 			miniature = '<img class="'+css+' '+visible+'"  alt="'+alt+'"src="'+src+'" />';
 | 
        
           |  |  | 982 | 			miniatures += miniature;
 | 
        
           |  |  | 983 | 		});
 | 
        
           |  |  | 984 | 		visible = ($("#miniatures img").length > 1) ? '' : 'defilement-miniatures-cache';
 | 
        
           |  |  | 985 | 		var html =
 | 
        
           |  |  | 986 | 			'<div class="defilement-miniatures">'+
 | 
        
           |  |  | 987 | 				'<a href="#" class="defilement-miniatures-gauche '+visible+'"><</a>'+
 | 
        
           |  |  | 988 | 				miniatures+
 | 
        
           |  |  | 989 | 				'<a href="#" class="defilement-miniatures-droite '+visible+'">></a>'+
 | 
        
           |  |  | 990 | 			'</div>';
 | 
        
           | 1237 | jpm | 991 | 	} else {
 | 
        
           | 1524 | aurelien | 992 | 		html = '<img class="miniature" alt="Aucune photo"src="'+PAS_DE_PHOTO_ICONE_URL+'" />';
 | 
        
           | 1210 | jpm | 993 | 	}
 | 
        
           | 1524 | aurelien | 994 | 	return html;
 | 
        
           | 1210 | jpm | 995 | }
 | 
        
           |  |  | 996 |   | 
        
           | 1524 | aurelien | 997 | function defilerMiniatures(element) {
 | 
        
           |  |  | 998 |   | 
        
           |  |  | 999 | 	var miniatureSelectionne = element.siblings("img.miniature-selectionnee");
 | 
        
           |  |  | 1000 | 	miniatureSelectionne.removeClass('miniature-selectionnee');
 | 
        
           |  |  | 1001 | 	miniatureSelectionne.addClass('miniature-cachee');
 | 
        
           |  |  | 1002 | 	var miniatureAffichee = miniatureSelectionne;
 | 
        
           |  |  | 1003 |   | 
        
           |  |  | 1004 | 	if(element.hasClass('defilement-miniatures-gauche')) {
 | 
        
           |  |  | 1005 | 		if(miniatureSelectionne.prev('.miniature').length != 0) {
 | 
        
           |  |  | 1006 | 			miniatureAffichee = miniatureSelectionne.prev('.miniature');
 | 
        
           |  |  | 1007 | 		} else {
 | 
        
           |  |  | 1008 | 			miniatureAffichee = miniatureSelectionne.siblings(".miniature").last();
 | 
        
           |  |  | 1009 | 		}
 | 
        
           |  |  | 1010 | 	} else {
 | 
        
           |  |  | 1011 | 		if(miniatureSelectionne.next('.miniature').length != 0) {
 | 
        
           |  |  | 1012 | 			miniatureAffichee = miniatureSelectionne.next('.miniature');
 | 
        
           |  |  | 1013 | 		} else {
 | 
        
           |  |  | 1014 | 			miniatureAffichee = miniatureSelectionne.siblings(".miniature").first();
 | 
        
           |  |  | 1015 | 		}
 | 
        
           |  |  | 1016 | 	}
 | 
        
           | 1822 | aurelien | 1017 | 	//console.log(miniatureAffichee);
 | 
        
           | 1524 | aurelien | 1018 | 	miniatureAffichee.addClass('miniature-selectionnee');
 | 
        
           |  |  | 1019 | 	miniatureAffichee.removeClass('miniature-cachee');
 | 
        
           |  |  | 1020 | }
 | 
        
           |  |  | 1021 |   | 
        
           | 1240 | jpm | 1022 | function ajouterNumNomSel() {
 | 
        
           |  |  | 1023 | 	var nn = '';
 | 
        
           |  |  | 1024 | 	if ($("#taxon").data("numNomSel") == undefined) {
 | 
        
           |  |  | 1025 | 		nn = '<span class="alert-error">[non lié au référentiel]</span>';
 | 
        
           |  |  | 1026 | 	} else {
 | 
        
           |  |  | 1027 | 		nn = '<span class="nn">[nn'+$("#taxon").data("numNomSel")+']</span>';
 | 
        
           |  |  | 1028 | 	}
 | 
        
           |  |  | 1029 | 	return nn;
 | 
        
           |  |  | 1030 | }
 | 
        
           |  |  | 1031 |   | 
        
           | 1210 | jpm | 1032 | //+---------------------------------------------------------------------------------------------------------+
 | 
        
           |  |  | 1033 | // AUTO-COMPLÉTION Noms Scientifiques
 | 
        
           |  |  | 1034 |   | 
        
           |  |  | 1035 | function ajouterAutocompletionNoms() {
 | 
        
           |  |  | 1036 | 	$('#taxon').autocomplete({
 | 
        
           |  |  | 1037 | 		source: function(requete, add){
 | 
        
           |  |  | 1038 | 			// la variable de requête doit être vidée car sinon le parametre "term" est ajouté
 | 
        
           |  |  | 1039 | 			requete = "";
 | 
        
           | 1215 | jpm | 1040 | 			var url = getUrlAutocompletionNomsSci();
 | 
        
           |  |  | 1041 | 			$.getJSON(url, requete, function(data) {
 | 
        
           | 1210 | jpm | 1042 | 				var suggestions = traiterRetourNomsSci(data);
 | 
        
           |  |  | 1043 | 				add(suggestions);
 | 
        
           |  |  | 1044 |             });
 | 
        
           |  |  | 1045 |         },
 | 
        
           |  |  | 1046 |         html: true
 | 
        
           |  |  | 1047 | 	});
 | 
        
           | 1215 | jpm | 1048 |   | 
        
           | 1213 | jpm | 1049 | 	$( "#taxon" ).bind("autocompleteselect", function(event, ui) {
 | 
        
           | 1215 | jpm | 1050 | 		$("#taxon").data(ui.item);
 | 
        
           |  |  | 1051 | 		if (ui.item.retenu == true) {
 | 
        
           |  |  | 1052 | 			$("#taxon").addClass('ns-retenu');
 | 
        
           |  |  | 1053 | 		} else {
 | 
        
           |  |  | 1054 | 			$("#taxon").removeClass('ns-retenu');
 | 
        
           |  |  | 1055 | 		}
 | 
        
           | 1213 | jpm | 1056 | 	});
 | 
        
           | 1210 | jpm | 1057 | }
 | 
        
           |  |  | 1058 |   | 
        
           | 1215 | jpm | 1059 | function getUrlAutocompletionNomsSci() {
 | 
        
           |  |  | 1060 | 	var mots = $('#taxon').val();
 | 
        
           | 1476 | aurelien | 1061 | 	var url = SERVICE_AUTOCOMPLETION_NOM_SCI_URL_TPL.replace('{referentiel}',NOM_SCI_PROJET);
 | 
        
           |  |  | 1062 | 	url = url.replace('{masque}', mots);
 | 
        
           | 1210 | jpm | 1063 | 	return url;
 | 
        
           |  |  | 1064 | }
 | 
        
           |  |  | 1065 |   | 
        
           |  |  | 1066 | function traiterRetourNomsSci(data) {
 | 
        
           |  |  | 1067 | 	var suggestions = [];
 | 
        
           |  |  | 1068 | 	if (data.resultat != undefined) {
 | 
        
           |  |  | 1069 | 		$.each(data.resultat, function(i, val) {
 | 
        
           |  |  | 1070 | 			val.nn = i;
 | 
        
           | 1215 | jpm | 1071 | 			var nom = {label : '', value : '', nt : '', nomSel : '', nomSelComplet : '', numNomSel : '',
 | 
        
           |  |  | 1072 | 				nomRet : '', numNomRet : '', famille : '', retenu : false
 | 
        
           |  |  | 1073 | 			};
 | 
        
           |  |  | 1074 | 			if (suggestions.length >= AUTOCOMPLETION_ELEMENTS_NBRE) {
 | 
        
           | 1213 | jpm | 1075 | 				nom.label = "...";
 | 
        
           |  |  | 1076 | 				nom.value = $('#taxon').val();
 | 
        
           |  |  | 1077 | 				suggestions.push(nom);
 | 
        
           |  |  | 1078 | 				return false;
 | 
        
           |  |  | 1079 | 			} else {
 | 
        
           | 1231 | jpm | 1080 | 				nom.label = val.nom_sci_complet;
 | 
        
           |  |  | 1081 | 				nom.value = val.nom_sci_complet;
 | 
        
           | 1215 | jpm | 1082 | 				nom.nt = val.num_taxonomique;
 | 
        
           |  |  | 1083 | 				nom.nomSel = val.nom_sci;
 | 
        
           |  |  | 1084 | 				nom.nomSelComplet = val.nom_sci_complet;
 | 
        
           |  |  | 1085 | 				nom.numNomSel = val.nn;
 | 
        
           | 1237 | jpm | 1086 | 				nom.nomRet = val.nom_retenu_complet;
 | 
        
           | 1220 | jpm | 1087 | 				nom.numNomRet = val["nom_retenu.id"];
 | 
        
           | 1231 | jpm | 1088 | 				nom.famille = val.famille;
 | 
        
           | 1215 | jpm | 1089 | 				nom.retenu = (val.retenu == 'false') ? false : true;
 | 
        
           |  |  | 1090 |   | 
        
           | 1213 | jpm | 1091 | 				suggestions.push(nom);
 | 
        
           |  |  | 1092 | 			}
 | 
        
           | 1210 | jpm | 1093 | 		});
 | 
        
           |  |  | 1094 | 	}
 | 
        
           | 1213 | jpm | 1095 |   | 
        
           | 1210 | jpm | 1096 | 	return suggestions;
 | 
        
           |  |  | 1097 | }
 | 
        
           |  |  | 1098 |   | 
        
           |  |  | 1099 | /*
 | 
        
           |  |  | 1100 |  * jQuery UI Autocomplete HTML Extension
 | 
        
           |  |  | 1101 |  *
 | 
        
           |  |  | 1102 |  * Copyright 2010, Scott González (http://scottgonzalez.com)
 | 
        
           |  |  | 1103 |  * Dual licensed under the MIT or GPL Version 2 licenses.
 | 
        
           |  |  | 1104 |  *
 | 
        
           |  |  | 1105 |  * http://github.com/scottgonzalez/jquery-ui-extensions
 | 
        
           |  |  | 1106 |  *
 | 
        
           |  |  | 1107 |  * Adaptation par Aurélien Peronnet pour la mise en gras des noms de taxons valides
 | 
        
           |  |  | 1108 |  */
 | 
        
           |  |  | 1109 | (function( $ ) {
 | 
        
           | 1215 | jpm | 1110 | 	var proto = $.ui.autocomplete.prototype,
 | 
        
           |  |  | 1111 | 		initSource = proto._initSource;
 | 
        
           |  |  | 1112 |   | 
        
           |  |  | 1113 | 	function filter( array, term ) {
 | 
        
           |  |  | 1114 | 		var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
 | 
        
           |  |  | 1115 | 		return $.grep( array, function(value) {
 | 
        
           |  |  | 1116 | 			return matcher.test( $( "<div>" ).html( value.label || value.value || value ).text() );
 | 
        
           |  |  | 1117 | 		});
 | 
        
           |  |  | 1118 | 	}
 | 
        
           |  |  | 1119 |   | 
        
           |  |  | 1120 | 	$.extend( proto, {
 | 
        
           |  |  | 1121 | 		_initSource: function() {
 | 
        
           |  |  | 1122 | 			if ( this.options.html && $.isArray(this.options.source) ) {
 | 
        
           |  |  | 1123 | 				this.source = function( request, response ) {
 | 
        
           |  |  | 1124 | 					response( filter( this.options.source, request.term ) );
 | 
        
           |  |  | 1125 | 				};
 | 
        
           |  |  | 1126 | 			} else {
 | 
        
           |  |  | 1127 | 				initSource.call( this );
 | 
        
           |  |  | 1128 | 			}
 | 
        
           |  |  | 1129 | 		},
 | 
        
           |  |  | 1130 | 		_renderItem: function( ul, item) {
 | 
        
           |  |  | 1131 | 			if (item.retenu == true) {
 | 
        
           |  |  | 1132 | 				item.label = "<strong>"+item.label+"</strong>";
 | 
        
           |  |  | 1133 | 			}
 | 
        
           |  |  | 1134 |   | 
        
           |  |  | 1135 | 			return $( "<li></li>" )
 | 
        
           |  |  | 1136 | 				.data( "item.autocomplete", item )
 | 
        
           |  |  | 1137 | 				.append( $( "<a></a>" )[ this.options.html ? "html" : "text" ]( item.label ) )
 | 
        
           |  |  | 1138 | 				.appendTo( ul );
 | 
        
           |  |  | 1139 | 		}
 | 
        
           | 1210 | jpm | 1140 | 	});
 | 
        
           |  |  | 1141 | })( jQuery );
 |