Rev 1540 | Blame | Compare with Previous | Last modification | View Log | RSS feed
//+---------------------------------------------------------------------------------------------------------+// GÉNÉRAL$(document).ready(function() {if (DEBUG == false) {$(window).on('beforeunload', function(event) {return 'Êtes vous sûr de vouloir quiter la page?\nLes observations saisies mais non transmises seront perdues.';});}});//+----------------------------------------------------------------------------------------------------------+// FONCTIONS GÉNÉRIQUES/*** Stope l'évènement courrant quand on clique sur un lien.* Utile pour Chrome, Safari...* @param evenement* @return*/function arreter(evenement) {if (evenement.stopPropagation) {evenement.stopPropagation();}if (evenement.preventDefault) {evenement.preventDefault();}return false;}function extraireEnteteDebug(jqXHR) {var msgDebug = '';if (jqXHR.getResponseHeader('X-DebugJrest-Data') != '') {var debugInfos = jQuery.parseJSON(jqXHR.getResponseHeader('X-DebugJrest-Data'));if (debugInfos != null) {$.each(debugInfos, function (cle, valeur) {msgDebug += valeur + "\n";});}}return msgDebug;}function afficherPanneau(selecteur) {$(selecteur).fadeIn('slow').delay(DUREE_MESSAGE).fadeOut('slow');}//+----------------------------------------------------------------------------------------------------------+//UPLOAD PHOTO : Traitement de l'image$(document).ready(function() {$('.effacer-miniature').click(function () {supprimerMiniatures($(this));});$('#photo-placeholder').click(function(event) {$('#fichier').click();});$('#fichier').bind('change', function (e) {arreter(e);var options = {success: afficherMiniature, // post-submit callbackdataType: 'xml', // 'xml', 'script', or 'json' (expected server response type)resetForm: true // reset the form after successful submit};$('#miniature').append('<img id="miniature-chargement" class="miniature" alt="chargement" src="'+CHARGEMENT_IMAGE_URL+'"/>');$('#ajouter-obs').attr('disabled', 'disabled');if(verifierFormat($('#fichier').val())) {$('#form-upload').ajaxSubmit(options);} else {window.alert("Le format de fichier n'est pas supporté, les formats acceptés sont "+ $('#fichier').attr('accept'));}return false;});$('.effacer-miniature').on('click', function() {$(this).parent().remove();});});function verifierFormat(nom) {var parts = nom.split('.');extension = parts[parts.length - 1];return (extension.toLowerCase() == 'jpeg' || extension.toLowerCase() == 'jpg');}function afficherMiniature(reponse) {if (DEBUG) {var debogage = $('debogage', reponse).text();console.log('Débogage upload : ' + debogage);}var message = $('message', reponse).text();if (message != '') {$('#miniature-msg').append(message);} else {$('#miniatures').append(creerWidgetMiniature(reponse));}$('#ajouter-obs').removeAttr('disabled');}function creerWidgetMiniature(reponse) {var miniatureUrl = $('miniature-url', reponse).text(),imgNom = $('image-nom', reponse).text(),html ='<div class="miniature">'+'<img class="miniature-img" class="miniature" alt="'+imgNom+'" src="'+miniatureUrl+'"/>'+'<button class="effacer-miniature" type="button">Effacer</button>'+'</div>'return html;}function supprimerMiniatures() {$('#miniatures').empty();$('#miniature-msg').empty();}//+----------------------------------------------------------------------------------------------------------+// GOOGLE MAPvar map,marker,latLng,geocoder;$(document).ready(function() {initialiserGoogleMap();// Autocompletion du champ adresse$('#carte-recherche').on('focus', function() {$(this).select();});$('#carte-recherche').on('mouseup', function(event) {// Pour Safari...event.preventDefault();});$('#carte-recherche').keypress(function(e) {if (e.which == 13) {e.preventDefault();}});$('#carte-recherche').autocomplete({//Cette partie utilise geocoder pour extraire des valeurs d'adressesource: function(request, response) {geocoder.geocode( {'address': request.term+', France', 'region' : 'fr' }, function(results, status) {if (status == google.maps.GeocoderStatus.OK) {response($.map(results, function(item) {var retour = {label: item.formatted_address,value: item.formatted_address,latitude: item.geometry.location.lat(),longitude: item.geometry.location.lng()};return retour;}));} else {afficherErreurGoogleMap(status);}});},// Cette partie est executee a la selection d'une adresseselect: function(event, ui) {var latLng = new google.maps.LatLng(ui.item.latitude, ui.item.longitude);deplacerMarker(latLng);}});$('#geolocaliser').on('click', geolocaliser);google.maps.event.addListener(marker, 'dragend', surDeplacementMarker);google.maps.event.addListener(map, 'click', surClickDansCarte);});function initialiserGoogleMap(){// Cartevar latLng = new google.maps.LatLng(46.30871, 2.54395),// Centre de la FrancezoomDefaut = 5;options = {zoom: zoomDefaut,center: latLng,mapTypeId: google.maps.MapTypeId.HYBRID,mapTypeControlOptions: {mapTypeIds: ['OSM',google.maps.MapTypeId.ROADMAP,google.maps.MapTypeId.HYBRID,google.maps.MapTypeId.SATELLITE,google.maps.MapTypeId.TERRAIN]}};// Ajout de la couche OSM à la carteosmMapType = new google.maps.ImageMapType({getTileUrl: function(coord, zoom) {return 'http://tile.openstreetmap.org/' + zoom + '/' + coord.x + '/' + coord.y + '.png';},tileSize: new google.maps.Size(256, 256),isPng: true,alt: 'OpenStreetMap',name: 'OSM',maxZoom: 19});// Création de la carte Googlemap = new google.maps.Map(document.getElementById('map-canvas'), options); //affiche la google map dans la div map_canvasmap.mapTypes.set('OSM', osmMapType);// Création du Geocodergeocoder = new google.maps.Geocoder();// Marqueur google draggablemarker = new google.maps.Marker({map: map,draggable: true,title: 'Ma station',icon: GOOGLE_MAP_MARQUEUR_URL,position: latLng});initialiserMarker(latLng);// Tentative de geocalisationif (navigator.geolocation) {navigator.geolocation.getCurrentPosition(function(position) {var latitude = position.coords.latitude,longitude = position.coords.longitude;latLng = new google.maps.LatLng(latitude, longitude);deplacerMarker(latLng);});}}function surDeplacementMarker() {trouverCommune(marker.getPosition());mettreAJourMarkerPosition(marker.getPosition());}function surClickDansCarte(event) {deplacerMarker(event.latLng);}function geolocaliser(event) {var latitude = $('#latitude').val(),longitude = $('#longitude').val();latLng = new google.maps.LatLng(latitude, longitude);deplacerMarker(latLng);arreter(event);}function initialiserMarker(latLng) {if (marker != undefined) {marker.setPosition(latLng);map.setCenter(latLng);mettreAJourMarkerPosition(latLng);trouverCommune(latLng);}}function deplacerMarker(latLng) {if (marker != undefined) {marker.setPosition(latLng);map.setCenter(latLng);mettreAJourMarkerPosition(latLng);trouverCommune(latLng);}}function mettreAJourMarkerPosition(latLng) {var lat = latLng.lat().toFixed(5),lng = latLng.lng().toFixed(5);remplirChampLatitude(lat);remplirChampLongitude(lng);}function remplirChampLatitude(latDecimale) {var lat = Math.round(latDecimale * 100000) / 100000;$('#latitude').val(lat);}function remplirChampLongitude(lngDecimale) {var lng = Math.round(lngDecimale * 100000) / 100000;$('#longitude').val(lng);}function trouverCommune(pos) {$(function() {var url_service = SERVICE_NOM_COMMUNE_URL,urlNomCommuneFormatee = url_service.replace('{lat}', pos.lat()).replace('{lon}', pos.lng());$.ajax({url: urlNomCommuneFormatee,type: 'GET',dataType: 'jsonp',beforeSend: function() {$('.commune-info').empty();$('#dialogue-erreur .alert-txt').empty();},success: function(data, textStatus, jqXHR) {$('.commune-info').empty();$('#commune-nom').append(data.nom);$('#commune-code-insee').append(data.codeINSEE);$('#marqueur-commune').data('commune', {'nom' : data.nom, 'codeInsee' : data.codeINSEE});},statusCode: {500: function(jqXHR, textStatus, errorThrown) {if (DEBUG) {$('#dialogue-erreur .alert-txt').append('<p id="msg">Un problème est survenu lors de l\'appel au service fournissante le nom des communes.</p>');reponse = jQuery.parseJSON(jqXHR.responseText);var erreurMsg = "";if (reponse != null) {$.each(reponse, function (cle, valeur) {erreurMsg += valeur + '<br />';});}$('#dialogue-erreur .alert-txt').append('<p class="msg-erreur">Erreur 500 : '+errorThrown+'<br />'+erreurMsg+'</p>');}}},error: function(jqXHR, textStatus, errorThrown) {if (DEBUG) {$('#dialogue-erreur .alert-txt').append('<p class="msg">Une erreur Ajax est survenue lors de la transmission de vos observations.</p>');reponse = jQuery.parseJSON(jqXHR.responseText);var erreurMsg = '';if (reponse != null) {$.each(reponse, function (cle, valeur) {erreurMsg += valeur + '<br />';});}$('#dialogue-erreur .alert-txt').append('<p class="msg-erreur">Erreur Ajax : '+errorThrown+' (type : '+textStatus+') <br />'+erreurMsg+'</p>');}},complete: function(jqXHR, textStatus) {var debugMsg = extraireEnteteDebug(jqXHR);if (debugMsg != '') {if (DEBUG) {$("#dialogue-erreur .alert-txt").append('<pre class="msg-debug msg">Débogage : '+debugMsg+'</pre>');}}if ($("#dialogue-erreur .msg").length > 0) {$("#dialogue-erreur").show();}}});});}//+---------------------------------------------------------------------------------------------------------+// IDENTITÉ$(document).ready(function() {$('#courriel').on('blur', requeterIdentite);$('#courriel').on('keypress', testerLancementRequeteIdentite);});function testerLancementRequeteIdentite(event) {if (event.which == 13) {requeterIdentite();event.preventDefault();event.stopPropagation();}}function requeterIdentite() {var courriel = $('#courriel').val();//TODO: mettre ceci en paramètre de configvar urlAnnuaire = SERVICE_ANNUAIRE_ID_URL + courriel;$.ajax({url: urlAnnuaire,type: 'GET',success: function(data, textStatus, jqXHR) {console.log('SUCCESS:'+textStatus);if (data != undefined && data[courriel] != undefined) {var infos = data[courriel];$('#id_utilisateur').val(infos.id);$('#prenom').val(infos.prenom);$('#nom').val(infos.nom);$('#courriel_confirmation').val(courriel);$('#prenom, #nom, #courriel_confirmation').attr('disabled', 'disabled');$('#date').focus();} else {surErreurCompletionCourriel();}},error: function(jqXHR, textStatus, errorThrown) {console.log('ERREUR :'+textStatus);surErreurCompletionCourriel();},complete: function(jqXHR, textStatus) {console.log('COMPLETE :'+textStatus);$('#zone-prenom-nom').removeClass('hidden');$('#zone-courriel-confirmation').removeClass('hidden');}});}function surErreurCompletionCourriel() {$('#prenom, #nom, #courriel_confirmation').val('');$('#prenom, #nom, #courriel_confirmation').removeAttr('disabled');afficherPanneau('#dialogue-courriel-introuvable');}//+---------------------------------------------------------------------------------------------------------+// FORMULAIREvar obsNbre = 0;$(document).ready(function() {// SliderstransformerEnSlider('#presence-zone-vegetalise');transformerEnSlider('#hauteur-batiment-avoisinant');transformerEnSlider('#periodicite-traitement-phyto');transformerEnSlider('#resistance-traitement-phyto');transformerEnSlider('#vitesse-croissance');// Afficher/Cacher champs cachés par défaut$('#periodicite-traitement-phyto').on('change', function() {if ($(this).val() === 'jamais') {$('#datp-zone').removeClass('hidden');} else {$('#datp-zone').addClass('hidden');}});$('#taxon-liste').on('change', function() {if ($(this).val() === '?') {$('#taxon-input-groupe').removeClass('hidden');} else {$('#taxon-input-groupe').addClass('hidden');}});$('.alert .close').on('click', fermerPanneauAlert);$('[rel=tooltip]').tooltip('enable');$('#btn-aide').on('click', basculerAffichageAide);$('#prenom').on('change', formaterPrenom);$('#nom').on('change', formaterNom);configurerDatePicker('#date');configurerDatePicker('#date-arret-traitement-phyto');ajouterAutocompletionNoms();configurerFormValidator();definirReglesFormValidator();$('#courriel_confirmation').on('paste', bloquerCopierCollerCourriel);$('a.afficher-coord').on('click', basculerAffichageCoord);$('#ajouter-obs').on('click', ajouterObs);$('.obs-nbre').on('changement', surChangementNbreObs);$('body').on('click', '.supprimer-obs', supprimerObs);$('#transmettre-obs').on('click', transmettreObs);$('body').on('click', '.defilement-miniatures-gauche', function(event) {event.preventDefault();defilerMiniatures($(this));});$('body').on('click', '.defilement-miniatures-droite', function(event) {event.preventDefault();defilerMiniatures($(this));});$('.dropdown-menu input, .dropdown-menu label').on('click', function(event) {event.stopPropagation();});$('input#hauteur-plante').on('blur', function() {// if there's a bad valuevar valeur = $(this).val();console.log(valeur);if (! valeur.match(/^[0-9]+$/)) {// replace it with nothingvar nouvelleValeur = valeur.replace(/[^0-9]/g, '');$(this).val(nouvelleValeur);}});});function transformerEnSlider(selector) {$(selector).each(function(index, el) {// hide the element$(el).addClass('slider-on');// add the slider to each elementvar slider = $( '<div class="slider-holder"><div class="horizontal-slider"></div></div>' ).insertAfter( el ).find('.horizontal-slider').slider({min: 1,max: el.options.length,range: 'min',value: el.selectedIndex + 1,slide: function( event, ui ) {el.selectedIndex = ui.value - 1;slider.find('a').text(el.options[el.selectedIndex].text);},stop: function() {$(el).change();}});slider.find('a').text(el.options[el.selectedIndex].text);// Create a legend under the slider so we can see the optionsvar options = [];for (var option in $(el).children()) {if (!isNaN(parseInt(option))) {options.push(el.options[option].text);}}// the width of each legend/optionvar width = (slider.width() / (options.length - 1));// Add the legend. Half the width of the first and last options for display consistency.slider.after('<div class="slider-legend"><p style="width:' + (width / 2) + 'px;text-align:left;">' +options.join('</p><p style="width:' + width + 'px;">') +'</p></div>').parent().find('.slider-legend p:last-child').css('width', width / 2).css('text-align', 'right');// if there are too many options so that the text is wider than the width, then hide the textvar lastChild = slider.parent().find('.slider-legend p:last-child');if (lastChild[0].clientWidth < lastChild[0].scrollWidth) {slider.parent().find('.slider-legend p').css('text-indent', '200%');}});}function configurerFormValidator() {$.validator.addMethod('dateCel',function (value, element) {return value == '' || (/^[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{4}$/.test(value));},'Format : jj/mm/aaaa. Date incomplète, utiliser 0, exemple : 00/12/2011.');$.extend($.validator.defaults, {highlight: function(element) {$(element).closest('.control-group').removeClass('success').addClass('error');},success: function(element) {element.text('OK!').addClass('valid').closest('.control-group').removeClass('error').addClass('success');if (element.attr('id') == 'taxon' && $('#taxon').val() != '') {// Si le taxon n'est pas lié au référentiel, on vide le data associéif ($('#taxon').data('value') != $('#taxon').val()) {$('#taxon').data('numNomSel', '');$('#taxon').data('nomRet', '');$('#taxon').data('numNomRet', '');$('#taxon').data('nt', '');$('#taxon').data('famille', '');}}}});}function definirReglesFormValidator() {$('#form-observateur').validate({rules: {courriel: {required: true,email: true},courriel_confirmation: {required: true,equalTo: '#courriel'}}});$('#form-station').validate({rules: {latitude : {range: [-90, 90]},longitude: {range: [-180, 180]}}});$('#form-obs').validate({rules: {date: 'dateCel','taxon-liste': 'required'}});}function configurerDatePicker(selector) {$.datepicker.setDefaults($.datepicker.regional['fr']);$(selector).datepicker({dateFormat: 'dd/mm/yy',showOn: 'button',buttonImageOnly: true,buttonImage: CALENDRIER_ICONE_URL,buttonText: 'Afficher le calendrier pour saisir la date.',showButtonPanel: true});$(selector + ' + img.ui-datepicker-trigger').appendTo(selector + '-icone.add-on');}function fermerPanneauAlert() {$(this).parentsUntil('.zone-alerte', '.alert').hide();}function formaterNom() {$(this).val($(this).val().toUpperCase());}function formaterPrenom() {var prenom = new Array(),mots = $(this).val().split(' ');for (var i = 0; i < mots.length; i++) {var mot = mots[i];if (mot.indexOf('-') >= 0) {var prenomCompose = new Array(),motsComposes = mot.split('-');for (var j = 0; j < motsComposes.length; j++) {var motSimple = motsComposes[j],motMajuscule = motSimple.charAt(0).toUpperCase() + motSimple.slice(1);prenomCompose.push(motMajuscule);}prenom.push(prenomCompose.join('-'));} else {var motMajuscule = mot.charAt(0).toUpperCase() + mot.slice(1);prenom.push(motMajuscule);}}$(this).val(prenom.join(' '));}function basculerAffichageAide() {if ($(this).hasClass('btn-warning')) {$('[rel=tooltip]').tooltip('enable');$(this).removeClass('btn-warning').addClass('btn-success');$('#btn-aide-txt', this).text("Désactiver l'aide");} else {$('[rel=tooltip]').tooltip('disable');$(this).removeClass('btn-success').addClass('btn-warning');$('#btn-aide-txt', this).text("Activer l'aide");}}function bloquerCopierCollerCourriel() {afficherPanneau('#dialogue-bloquer-copier-coller');return false;}function basculerAffichageCoord() {$('.afficher-coord-action').toggle();$('#coordonnees-geo').toggle('slow');//valeur false pour que le lien ne soit pas suivireturn false;}function ajouterObs() {if (validerFormulaire() == true) {obsNbre = obsNbre + 1;$('.obs-nbre').text(obsNbre);$('.obs-nbre').triggerHandler('changement');afficherObs();stockerObsData();supprimerMiniatures();$('#taxon').val('').data('numNomSel', undefined).removeClass('ns-retenu');} else {afficherPanneau('#dialogue-form-invalide');}}function afficherObs() {var numNomSel = ($('#taxon-liste').val() == '?') ? $('#taxon').data('numNomSel') : $('#taxon-liste').val(),taxon = ($('#taxon-liste').val() == '?') ? $('#taxon').val() : taxons[numNomSel]['nom_sel'],referentiel = (numNomSel == undefined) ? '' : '['+NOM_SCI_PROJET+']',commune = $('#commune-nom').text(),codeInsee = $('#commune-code-insee').text(),lat = $('input[name="latitude"]').val(),lng = $('input[name="longitude"]').val(),date = $('#date').val(),site = $('#station').val(),milieux = getMilieux(),notes = $('#notes').val();$('#liste-obs').prepend('<div id="obs'+obsNbre+'" class="row-fluid obs obs'+obsNbre+'">'+'<div class="span12">'+'<div class="well">'+'<div class="obs-action pull-right" rel="tooltip" data-placement="bottom" '+'title="Supprimer cette observation de la liste à transmettre">'+'<button class="btn btn-danger supprimer-obs" value="'+obsNbre+'" title="'+obsNbre+'">'+'<i class="icon-trash icon-white"></i>'+'</button>'+'</div> '+'<div class="row-fluid">'+'<div class="thumbnail span2">'+ajouterImgMiniatureAuTransfert()+'</div>'+'<div class="span9">'+'<ul class="unstyled">'+'<li>'+'<span class="nom-sci">' + taxon + '</span> ' +formaterNumNomSel(numNomSel)+'<span class="referentiel-obs">' + referentiel + '</span>' +' observé à ' +'<span class="commune">' + commune + '</span> ' +'(' + codeInsee + ') [' + lat +' / ' + lng + ']' +' le ' +'<span class="date">' + date + '</span>' +'</li>' +'<li>' +'<span>Site :</span> ' + site + ' ' +'<span>Milieu :</span> ' + milieux + ' ' +'</li>' +'<li>' +'Commentaires : <span class="discretion">' + notes + '</span>'+'</li>'+'</ul>'+'</div>'+'</div>'+'</div>'+'</div>'+'</div>');}function getMilieux() {var milieuxStr = '',milieux = [];$('input:checkbox[name="milieux"]:checked').each(function() {milieux.push($(this).val());});milieuxStr = Array.prototype.slice.call(milieux).join(', ');return milieuxStr;}function ajouterImgMiniatureAuTransfert() {var html = '',miniatures = '',premiere = true;if ($('#miniatures img').length >= 1) {$('#miniatures img').each(function() {var visible = premiere ? 'miniature-selectionnee' : 'miniature-cachee',css = $(this).hasClass('b64') ? 'miniature b64' : 'miniature',src = $(this).attr('src'),alt = $(this).attr('alt');premiere = false;miniature = '<img class="'+css+' '+visible+'" alt="'+alt+'"src="'+src+'" />';miniatures += miniature;});visible = ($('#miniatures img').length > 1) ? '' : 'defilement-miniatures-cache';var html ='<div class="defilement-miniatures">'+'<a href="#" class="defilement-miniatures-gauche '+visible+'"><</a>'+miniatures+'<a href="#" class="defilement-miniatures-droite '+visible+'">></a>'+'</div>';} else {html = '<img class="miniature" alt="Aucune photo"src="'+PAS_DE_PHOTO_ICONE_URL+'" />';}return html;}function formaterNumNomSel(numNomSel) {var nn = '';if (numNomSel == undefined) {nn = '<span class="alert-error">[non lié au référentiel]</span>';} else {nn = '<span class="nn">[nn'+numNomSel+']</span>';}return nn;}function stockerObsData() {$('#liste-obs').data('obsId'+obsNbre, {'date' : $('#date').val(),'notes' : $('#notes').val(),'nom_sel' : $('#taxon').val(),'num_nom_sel' : $('#taxon').data('numNomSel'),'nom_ret' : $('#taxon').data('nomRet'),'num_nom_ret' : $('#taxon').data('numNomRet'),'num_taxon' : $('#taxon').data('nt'),'famille' : $('#taxon').data('famille'),'referentiel' : ($('#taxon').data('numNomSel') == undefined ? '' : NOM_SCI_REFERENTIEL),'latitude' : $('#latitude').val(),'longitude' : $('#longitude').val(),'commune_nom' : $('#commune-nom').text(),'commune_code_insee' : $('#commune-code-insee').text(),'lieudit' : $('#lieudit').val(),'station' : $('#station').val(),'milieu' : $('#milieu').val(),//Ajout des champs images'image_nom' : getNomsImgsOriginales(),'image_b64' : getB64ImgsOriginales()});}function surChangementReferentiel() {NOM_SCI_PROJET = $('#referentiel').val();NOM_SCI_REFERENTIEL = NOM_SCI_PROJET+':'+PROJETS_VERSIONS[NOM_SCI_PROJET];$('#taxon').val('');}function surChangementNbreObs() {if (obsNbre == 0) {$('#transmettre-obs').attr('disabled', 'disabled');$('#ajouter-obs').removeAttr('disabled');} else if (obsNbre > 0 && obsNbre < OBS_MAX_NBRE) {$('#transmettre-obs').removeAttr('disabled');$('#ajouter-obs').removeAttr('disabled');} else if (obsNbre >= OBS_MAX_NBRE) {$('#ajouter-obs').attr('disabled', 'disabled');afficherPanneau('#dialogue-bloquer-creer-obs');}}function transmettreObs() {var observations = $('#liste-obs').data();console.log(observations);if (observations == undefined || jQuery.isEmptyObject(observations)) {afficherPanneau('#dialogue-zero-obs');} else {observations['projet'] = TAG_PROJET;observations['tag-obs'] = TAG_OBS;observations['tag-img'] = TAG_IMG;var utilisateur = new Object();utilisateur.id_utilisateur = $('#id_utilisateur').val();utilisateur.prenom = $('#prenom').val();utilisateur.nom = $('#nom').val();utilisateur.courriel = $('#courriel').val();observations['utilisateur'] = utilisateur;envoyerObsAuCel(observations);}return false;}function envoyerObsAuCel(observations) {var erreurMsg = '';$.ajax({url: SERVICE_SAISIE_URL,type: 'POST',data: observations,dataType: 'json',beforeSend: function() {$('#dialogue-obs-transaction-ko').hide();$('#dialogue-obs-transaction-ok').hide();$('.alert-txt .msg').remove();$('.alert-txt .msg-erreur').remove();$('.alert-txt .msg-debug').remove();$('#chargement').show();},success: function(data, textStatus, jqXHR) {$('#dialogue-obs-transaction-ok .alert-txt').append($('#tpl-transmission-ok').clone().html());supprimerMiniatures();},statusCode: {500: function(jqXHR, textStatus, errorThrown) {erreurMsg += "Erreur 500 :\ntype : " + textStatus + ' ' + errorThrown + "\n";}},error: function(jqXHR, textStatus, errorThrown) {erreurMsg += "Erreur Ajax :\ntype : " + textStatus + ' ' + errorThrown + "\n";try {reponse = jQuery.parseJSON(jqXHR.responseText);if (reponse != null) {$.each(reponse, function (cle, valeur) {erreurMsg += valeur + "\n";});}} catch(e) {erreurMsg += "L'erreur n'était pas en JSON.";}},complete: function(jqXHR, textStatus) {$('#chargement').hide();var debugMsg = extraireEnteteDebug(jqXHR);if (erreurMsg != '') {if (DEBUG) {$('#dialogue-obs-transaction-ko .alert-txt').append('<pre class="msg-erreur">' + erreurMsg + '</pre>');$('#dialogue-obs-transaction-ko .alert-txt').append('<pre class="msg-debug">Débogage : ' + debugMsg + '</pre>');}var hrefCourriel = 'mailto:cel@tela-botanica.org?' +'subject=Disfonctionnement du widget de saisie ' + TAG_PROJET +'&body=' + erreurMsg + "\nDébogage :\n" + debugMsg;$('#dialogue-obs-transaction-ko .alert-txt').append($('#tpl-transmission-ko').clone().find('.courriel-erreur').attr('href', hrefCourriel).end().html());$('#dialogue-obs-transaction-ko').show();} else {if (DEBUG) {$('#dialogue-obs-transaction-ok .alert-txt').append('<pre class="msg-debug">Débogage : ' + debugMsg + '</pre>');}$('#dialogue-obs-transaction-ok').show();}initialiserObs();}});}function validerFormulaire() {$observateur = $('#form-observateur').valid();$station = $('#form-station').valid();$obs = $('#form-obs').valid();return ($observateur == true && $station == true && $obs == true) ? true : false;}function getNomsImgsOriginales() {var noms = new Array();$('.miniature-img').each(function() {noms.push($(this).attr('alt'));});return noms;}function getB64ImgsOriginales() {var b64 = new Array();$('.miniature-img').each(function() {if ($(this).hasClass('b64')) {b64.push($(this).attr('src'));} else if ($(this).hasClass('b64-canvas')) {b64.push($(this).data('b64'));}});return b64;}function supprimerObs() {var obsId = $(this).val();// Problème avec IE 6 et 7if (obsId == 'Supprimer') {obsId = $(this).attr('title');}obsNbre = obsNbre - 1;$('.obs-nbre').text(obsNbre);$('.obs-nbre').triggerHandler('changement');$('.obs'+obsId).remove();$('#liste-obs').removeData('obsId' + obsId);}function initialiserObs() {obsNbre = 0;$('.obs-nbre').text(obsNbre);$('.obs-nbre').triggerHandler('changement');$('#liste-obs').removeData();$('.obs').remove();$('#dialogue-bloquer-creer-obs').hide();}function defilerMiniatures(element) {var miniatureSelectionne = element.siblings('img.miniature-selectionnee');miniatureSelectionne.removeClass('miniature-selectionnee');miniatureSelectionne.addClass('miniature-cachee');var miniatureAffichee = miniatureSelectionne;if(element.hasClass('defilement-miniatures-gauche')) {if(miniatureSelectionne.prev('.miniature').length != 0) {miniatureAffichee = miniatureSelectionne.prev('.miniature');} else {miniatureAffichee = miniatureSelectionne.siblings('.miniature').last();}} else {if(miniatureSelectionne.next('.miniature').length != 0) {miniatureAffichee = miniatureSelectionne.next('.miniature');} else {miniatureAffichee = miniatureSelectionne.siblings('.miniature').first();}}miniatureAffichee.addClass('miniature-selectionnee');miniatureAffichee.removeClass('miniature-cachee');}//+---------------------------------------------------------------------------------------------------------+// AUTO-COMPLÉTION Noms Scientifiquesfunction ajouterAutocompletionNoms() {$('#taxon').autocomplete({source: function(requete, add){// la variable de requête doit être vidée car sinon le parametre "term" est ajoutévar url = getUrlAutocompletionNomsSci();$.getJSON(url, function(data) {console.log(data);var suggestions = traiterRetourNomsSci(data);add(suggestions);});},html: true});$('#taxon').bind('autocompleteselect', function(event, ui) {$('#taxon').data(ui.item);if (ui.item.retenu == true) {$('#taxon').addClass('ns-retenu');} else {$('#taxon').removeClass('ns-retenu');}});}function getUrlAutocompletionNomsSci() {var mots = $('#taxon').val(),url = SERVICE_AUTOCOMPLETION_NOM_SCI_URL_TPL.replace('{referentiel}',NOM_SCI_PROJET);url = url.replace('{masque}', mots);return url;}function traiterRetourNomsSci(data) {var suggestions = [];if (data.resultat != undefined) {$.each(data.resultat, function(i, val) {val.nn = i;var nom = {label: '', value: '', nt: '', nomSel: '', nomSelComplet: '', numNomSel: '',nomRet: '', numNomRet: '', famille: '', retenu: false};if (suggestions.length >= AUTOCOMPLETION_ELEMENTS_NBRE) {nom.label = '...';nom.value = $('#taxon').val();suggestions.push(nom);return false;} else {nom.label = val.nom_sci_complet;nom.value = val.nom_sci_complet;nom.nt = val.num_taxonomique;nom.nomSel = val.nom_sci;nom.nomSelComplet = val.nom_sci_complet;nom.numNomSel = val.nn;nom.nomRet = val.nom_retenu_complet;nom.numNomRet = val['nom_retenu.id'];nom.famille = val.famille;nom.retenu = (val.retenu == 'false') ? false : true;suggestions.push(nom);}});}return suggestions;}/** jQuery UI Autocomplete HTML Extension** Copyright 2010, Scott González (http://scottgonzalez.com)* Dual licensed under the MIT or GPL Version 2 licenses.** http://github.com/scottgonzalez/jquery-ui-extensions** Adaptation par Aurélien Peronnet pour la mise en gras des noms de taxons valides*/(function($) {var proto = $.ui.autocomplete.prototype,initSource = proto._initSource;function filter(array, term) {var matcher = new RegExp($.ui.autocomplete.escapeRegex(term), 'i');return $.grep(array, function(value) {return matcher.test($('<div>').html(value.label || value.value || value).text());});}$.extend(proto, {_initSource: function() {if (this.options.html && $.isArray(this.options.source)) {this.source = function( request, response ) {response(filter(this.options.source, request.term));};} else {initSource.call(this);}},_renderItem: function(ul, item) {if (item.retenu == true) {item.label = '<strong>'+item.label+'</strong>';}return $('<li></li>').data('item.autocomplete', item).append($('<a></a>')[this.options.html ? 'html' : 'text'](item.label)).appendTo(ul);}});})(jQuery);