/[openfoncier]/trunk/app/js/script.js
ViewVC logotype

Diff of /trunk/app/js/script.js

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 343 by fraynaud, Tue Jul 3 14:49:41 2012 UTC revision 2237 by softime, Wed Sep 4 10:28:01 2013 UTC
# Line 1  Line 1 
1  // specific openfoncier ========================================================  /**
2     * Script JS spécifique à l'applicatif, ce script est destiné à être
3     * appelé en dernier dans la pile des fichiers JS.
4     *
5     * @package openfoncier
6     * @version SVN : $Id$
7     */
8    
9  function bible(){  // Document is ready
10      if(fenetreouverte==true)  $(function(){
            pfenetre.close();  
     var ev=document.f2.evenement.value;  
     var idx=document.f2.dossier.value;  
     pfenetre=window.open("../app/bible.php?ev="+ev+"&idx="+idx,"bible","scrollbars=yes,width=600,height=600,top=120,left=120");  
     fenetreouverte=true;  
 }  
11    
12  function bible2()      /**
13  {       * Ajout du focus sur le champ login au chargement de la page.
14      if(fenetreouverte==true)       */
15             pfenetre.close();       $('#login_form #login').focus();
16    
17        /**
18         * Spécifique app/affichage_reglementaire_attestation.php pour donner le
19         * focus sur le champ de recherche au chargement de la page.
20         */
21         $('#affichage_reglementaire_attestation_form #dossier').focus();
22    
23        /**
24         * Spécifique app/widget_recherche_dossier.php pour donner le
25         * focus sur le champ de recherche au chargement de la page.
26         */
27         $('#widget_recherche_dossier_form #dossier').focus();
28    
29       /**
30        * Spécifique app/suivi_retours_de_consultation.php pour donner le focus sur le champ de
31        * recherche au chargement de la page.
32        */
33       $('#suivi_retours_de_consultation_form #code_barres').focus();
34    
35        /**
36        * Spécifique app/suivi_mise_a_jour_des_dates.php pour donner le focus sur le champ
37        * instruction au chargement de la page si la date n'est pas vide.
38        */
39        if($('#suivi_mise_a_jour_des_dates_form #date').val()!="") {
40            $('#suivi_mise_a_jour_des_dates_form #code_barres').focus();
41        }
42        
43        /**
44        * Spécifique app/suivi_envoi_lettre_rar.php pour donner le focus sur le champ
45        * liste des codes barres d'instructions scannés au chargement de la page.
46        */
47        $('#suivi_envoi_lettre_rar_form #liste_code_barres_instruction').focus();
48        
49        /**
50         * Affichage d'un dialog pour les règles de calcul associés à l'action
51         */
52        $('.regle_action').dialog({
53            autoOpen: false,
54            show: "fade",
55            hide: "fade",
56            dialogClass: "alert",
57            minHeight: 30,
58            minWidth: 400
59        });
60        
61        $('.wf_evenement_action').mouseover(
62            function(){
63                var id = $(this).attr("id");
64                $( "#regle_action"+ id ).dialog({ position: { my: "left top", at: "left bottom", of: $(this) } });
65                $( "#regle_action"+ id ).dialog("open");
66                $(".ui-dialog-titlebar").hide();
67            }
68        );
69        
70        $('.wf_evenement_action').mouseleave(
71            function(){
72                var id = $(this).attr("id");
73                $( "#regle_action"+ id ).dialog( "close" );
74            }
75        );
76     });
77    
78    
79    /**
80     * WIDGET liés au formulaire et sousformulaire
81     *
82     * Ces fonctions javascript sont appelées depuis les méthodes setOnChange,
83     * setOnClick, ...
84     */
85    //
86    // Cette fonction permet de retourner les informations sur le fichier téléchargé
87    // du formulaire d'upload vers le formulaire d'origine
88    function bible_return(form, champ) {
89        // Initialisation de la variable contenant les valeurs sélectionnées
90        var listeElement = '';
91        // Récupération du contenu de chacun des éléments cochés
92        $("span.content").each(function( index ) {
93            if (document.getElementById('checkbox'+index).checked == true) {
94                listeElement += $(this).text() + '\r\n\r';
95            }
96        });
97        // Récupération du textarea à remplir
98        obj = $("form[name|="+form+"] #"+champ);
99        // Remplissage du textarea et déclenchement du trigger autosize
100        $(obj).val(obj.val()+listeElement+"\r").trigger('autosize');
101        // Fermeture de la boite de dialog
102        $('#upload-container').dialog('close').remove();
103    }
104    //
105    function bible() {
106        //
107        var ev = document.f2.evenement.value;
108        //
109        if (ev == "") {
110            window.alert("Vous devez d'abord sélectionner un événement.");
111            return false;
112        }
113        //
114        var idx = document.f2.dossier.value;
115        //
116        var link = "../app/bible.php?complement=1&ev="+ev+"&idx="+idx;
117        load_form_in_modal(link);
118        //
119        return false;
120    }
121    //
122    function bible2() {
123      var ev=document.f2.evenement.value;      var ev=document.f2.evenement.value;
124        if (ev == "") {
125            window.alert("Vous devez d'abord sélectionner un événement.");
126            return false;
127        }
128      var idx=document.f2.dossier.value;      var idx=document.f2.dossier.value;
129      pfenetre=window.open("../app/bible2.php?ev="+ev+"&idx="+idx,"bible","scrollbars=yes,width=600,height=600,top=120,left=120");      var link = "../app/bible.php?complement=2&ev="+ev+"&idx="+idx;
130      fenetreouverte=true;      load_form_in_modal(link);
131        return false;
132  }  }
133    // bible_auto - type httpclick
134  function bible_auto(){  function bible_auto(){
135      if(fenetreouverte==true)      if(fenetreouverte==true)
136             pfenetre.close();             pfenetre.close();
137      var ev=document.f2.evenement.value;      var ev=document.f2.evenement.value;
138        if (ev == "") {
139            window.alert("Vous devez d'abord sélectionner un événement.");
140            return false;
141        }
142      var idx=document.f2.dossier.value;      var idx=document.f2.dossier.value;
143        
144      pfenetre=window.open("../app/bible_auto.php?idx="+idx+"&ev="+ev,"evenement","width=600,height=300,top=120,left=120");      pfenetre=window.open("../app/bible_auto.php?idx="+idx+"&ev="+ev,"evenement","width=600,height=300,top=120,left=120");
145      fenetreouverte=true;      fenetreouverte=true;
146        return false;
147    }
148    // VerifNumdec - type text
149    function VerifNumdec(champ) {
150        champ.value = champ.value.replace(",", "."); // remplacement de la virgule
151        //if (champ.value.lastIndexOf(".") == -1){ // champ decimal
152            if (isNaN(champ.value)) {
153                alert(msg_alert_error_verifnum);
154                champ.value = "";
155                return;
156            }
157        //}
158        
159    }
160    // Ce widget permet de charger les données d'un select en ajax
161    function changeDataSelect(tableName, linkedField, joker){
162        var id_dossierAutorisation = $("#dossier_autorisation").val();
163        var id = $("#"+linkedField).val();
164        link = "../app/listData.php?idx=" + id + "&tableName=" + tableName +
165                "&linkedField=" + linkedField ;
166        if(id_dossierAutorisation != "") {
167            link += "&nature=EXIST";
168        }
169        var val_tableName = $('#'+tableName).val();
170        $.ajax({
171            type: "GET",
172            url: link,
173            cache: false,
174            dataType: "json",
175            success: function(html){
176                
177                $('#'+tableName).empty();
178                var selected = "";
179                if(val_tableName == "") {
180                    selected=' selected="selected"';
181                }
182                if ( joker == true )
183                    $('#'+tableName).append(
184                        '<option value=""'+selected+'>*</option>'
185                    );
186                else {
187                    $('#'+tableName).append(
188                        '<option value=""'+selected+'>Choisir ' + tableName + '</option>'
189                    );
190                }
191                if ( html !== '' ){
192                    
193                    html = html.split(';');
194                    for ( i = 0 ; i < html.length - 1 ; i++ ){
195                        
196                        html_temp = html[i].split('_');
197                        selected = "";
198                        if(val_tableName == html_temp[0]) {
199                            selected=' selected="selected"';
200                        }
201                        $('#'+tableName).append(
202                            '<option value="'+html_temp[0]+'"'+selected+' >'+html_temp[1]+'</option>'
203                        );
204                        
205                    }
206                }
207            },
208            async: false
209        });
210  }  }
211    
212    // Ce widget permet de charger les données de la demande type en ajax
213    function changeDemandeTypeDataSelect(){
214        // Récupération de l'id du dossier_autorisation_type_detaille
215        var id_datd = $("#dossier_autorisation_type_detaille").val();
216    
217        // Récupération de la liste des paramètres de l'url
218        var params = extractUrlParams();
219        if ( typeof params['idx_dossier'] === "undefined" ){
220            params['idx_dossier'] = '';
221        }
222    
223        link = "../app/listDemandeType.php?idx=" + params['idx_dossier'] + "&datd="+ id_datd;
224    
225        var val_tableName = $('#demande_type').val();
226        $.ajax({
227            type: "GET",
228            url: link,
229            cache: false,
230            dataType: "json",
231            success: function(res){
232                $('#demande_type').empty();
233                var selected = "";
234    
235                for ( j=0 ; j < res[0].length ; j++ ){
236    
237                    $('#demande_type').append(
238                        '<option value="'+res[0][j]+'"'+selected+' >'+res[1][j]+'</option>'
239                    );
240                    
241                }
242                $('#demande_type').val(val_tableName);
243            },
244            async: false
245        });
246    }
247    
248    /**
249     * Fonction de récupération des paramètres GET de la page
250     * @return Array Tableau associatif contenant les paramètres GET
251     */
252    function extractUrlParams(){    
253        var t = location.search.substring(1).split('&');
254        var f = [];
255        for (var i=0; i<t.length; i++){
256            var x = t[ i ].split('=');
257            f[x[0]]=x[1];
258        }
259        return f;
260    }
261    
262    // vuploadMulti - XXX
263    function vuploadMulti(champ) {
264        //
265        if (fenetreouverte == true) {
266            pfenetre.close();
267        }
268        //
269        pfenetre = window.open("../spg/upload.php?origine="+champ+"&form="+$('input[name='+champ+']').closest('form').attr('name'),"upload","width=400,height=300,top=120,left=120");
270        //pfenetre = window.open("../spg/upload2.php?origine="+champ,"upload2","width=300,height=100,top=120,left=120");
271        //
272        fenetreouverte = true;
273    }
274    
275    /**
276     * POPUP pour le téléchargement de fichier
277     *
278     * Ces fonctions javascript sont appelées depuis des onClick sur des
279     * formulaires spécifiques pour permettre de transmettre des paramètres aux
280     * éditions pdf ainsi appelées.
281     */
282    //
283  function dossierads_d(debut)  function dossierads_d(debut)
284  {  {
285  //if(fenetreouverte==true)  //if(fenetreouverte==true)
286  window.location="../pdf/pdfetat.php?obj=dossier_ads_d&nature="  window.location="../pdf/pdfetat.php?obj=registre_dossiers_decisions_par_type_par_date&nature="
287  +document.f1.nature.value+"&idx=demo&datedebut="  +document.f1.nature.value+"&idx=demo&datedebut="
288  +document.f1.datedebut.value+"&datefin="+document.f1.datefin.value;  +document.f1.datedebut.value+"&datefin="+document.f1.datefin.value;
289  }  }
290    
291    // Cette fonction permet de gérer la validation du formulaire du script :
292    // app/affichage_reglementaire_registre.php
293    function affichage_reglementaire_registre(button) {
294        // Popup de confirmation du traitement par l'utilisateur
295        if (trt_confirm() == false) {
296            return false;
297        }
298        // Suppression du bouton pour que l'utilisateur ne puisse pas cliquer une
299        // deuxième fois
300        $(button).remove();
301        // Affichage du spinner
302        $("#msg").html(msg_loading);
303        // Requête AJAX vers le fichier app/affichage_reglementaire_registre.php
304        // pour mettre à jour les dossiers
305        // XXX layout
306        $.ajax({
307            type: "GET",
308            url: "../app/affichage_reglementaire_registre.php?update",
309            cache: false,
310            success: function(html){
311                // Ajout d'un bloc de message vide
312                $('#msg').html(
313                    '<div class="message ui-widget ui-corner-all ui-state-highlight">'+
314                        '<p>'+
315                            '<span class="ui-icon ui-icon-info"></span>'+
316                            '<span class="text">'+
317                            '</span>'+
318                        '</p>'+
319                    '</div>'
320                );
321                // Si le retour de l'appel Ajax n'est pas vide, alors il y a eu une
322                // lors du traitement
323                if ( html.length > 2 ) {
324                    $("#msg .message").addClass("ui-state-error");
325                    $("#msg .text").html(html);
326                } else {
327                    // Sinon message de succès et appel de l'édition
328                    $("#msg .message").addClass("ui-state-valid");
329                    $("#msg .text").html("Traitement terminé. Le registre a été téléchargé.");
330                    window.open("../pdf/pdfetat.php?obj=registre_dossiers_affichage_reglementaire&idx=demo");
331                }
332            },
333            async: false
334        });
335        //
336        return false;
337    }
338    
339    //Fonction de redirection pour le widget de recherche de dossier
340    function widget_recherche_dossier(data,nbRes){
341        /*$('#msg').show();
342        $('#msg').html(msg_loading);*/
343      
344        // S'il n'y a qu'un seul résultat, afficher un résumé
345        if ( nbRes == 1 ){
346        
347            window.location = "../scr/form.php?obj=dossier_instruction&action=3&" +
348                "idx=" + data + "&premier=0&advs_id=&recherche=&tricol=&" +
349                "selectioncol=&valide=&retour=tab";  
350        }
351        // S'il y a une liste de dossier, redirection vers le tableau
352        else {
353            
354            window.location = "../scr/tab.php?obj=recherche_direct&selectioncol=0&recherche=" + data;
355        }
356    }
357    //
358  function dossierdepot()  function dossierdepot()
359  {  {
360  //if(fenetreouverte==true)  //if(fenetreouverte==true)
361      window.location="../pdf/pdfetat.php?obj=dossier_depot&nature="+      window.location="../pdf/pdfetat.php?obj=registre_dossiers_depots_par_type_par_date&nature="+
362      document.f1.nature.value+"&idx=demo&datedebut="+      document.f1.nature.value+"&idx=demo&datedebut="+
363      document.f1.datedebut.value+"&datefin="+document.f1.datefin.value;      document.f1.datedebut.value+"&datefin="+document.f1.datefin.value;
364  }  }
365    //
366  function dossierads()  function dossierads()
367  {  {
368  //if(fenetreouverte==true)  //if(fenetreouverte==true)
369      window.location="../pdf/pdfetat.php?obj=dossier_ads&nature="+      window.location="../pdf/pdfetat.php?obj=registre_dossiers_par_type_par_date&nature="+
370      document.f1.nature.value+"&idx=demo&datedebut="+      document.f1.nature.value+"&idx=demo&datedebut="+
371      document.f1.datedebut.value+"&datefin="+document.f1.datefin.value;      document.f1.datedebut.value+"&datefin="+document.f1.datefin.value;
372  }  }
373    
374    // téléchargement du fichier
375    function file(fichier) {
376        //
377        if (fichier == "") {
378            alert("zone vide");
379        }
380        //
381        pfenetre = window.open("../app/file.php?file="+fichier,"Visualisation","width=100,height=100,top=1,left=150,scrollbars=yes,resizable = yes");
382        //
383        fenetreouverte = true;
384    }
385    
386  function VerifNumdec(champ) {  /**
387      champ.value = champ.value.replace(",", "."); // remplacement de la virgule   * Retour spécifique de l'écran de consultation multiple - surcharge de ajaxIt
388      //if (champ.value.lastIndexOf(".") == -1){ // champ decimal   * @todo XXX voir les différences avec ajaxIt et si il n'est pas possible
389          if (isNaN(champ.value)) {   * d'effectuer  la modification dans le core
390              alert(msg_alert_error_verifnum);   */
391              champ.value = "";  function messageIt(objsf, link, empty) {
392              return;      // recuperation du terme recherche
393        var recherche = document.getElementById("recherchedyn");
394        if (recherche != null) {
395            link += "&recherche="+recherche.value;
396        }else {
397            link += "&recherche=";
398        }
399        // execution de la requete en GET
400        $.ajax({
401            type: "GET",
402            url: link,
403            cache: false,
404            success: function(html){
405                (empty == true )?$("#sousform-"+objsf).empty():'';
406                $("#sousform-"+objsf).append(html);
407                om_initialize_content();
408            },
409            async: false
410        });
411    }
412    
413    /**
414     * TTélécharegement de fichier pdf en ajax
415     * spécifique de l'écran de consultation multiple
416     */
417    /* Plugin jQuery qui lance un espèce d'appel AJAX vers un script PHP de téléchargement de fichier*/
418    jQuery.download = function(url, data, method){
419        //url and data options required
420        if( url && data ){
421            //data can be string of parameters or array/object
422            data = typeof data == 'string' ? data : jQuery.param(data);
423            //split params into form inputs
424            var inputs = '';
425            jQuery.each(data.split('&'), function(){
426                var pair = this.split('=');
427                inputs+='<input type="hidden" name="'+ pair[0] +'" value="'+ pair[1] +'" />';
428            });
429            //send request
430            jQuery('<form action="'+ url +'" method="'+ (method||'post') +'">'+inputs+'</form>')
431            .prependTo('body').submit().remove();
432        };
433    };
434    
435    /**
436     * Cette fonction permet de charger dans un dialog jqueryui un formulaire tel
437     * qu'il aurait été chargé avec ajaxIt
438     *
439     * @param objsf string : objet de sousformulaire
440     * @param link string : lien vers un sousformulaire (../scr/sousform.php...)
441     * @param width integer: width en px
442     * @param height integer: height en px
443     * @param callback function (optionel) : nom de la méthode à appeler
444     *                                       à la fermeture du dialog
445     * @param callbackParams mixed (optionel) : paramètre à traiter dans la function
446     *                                          callback
447     *
448     **/
449    function popupIt(objsf, link, width, height, callback, callbackParams) {
450        // Insertion du conteneur du dialog
451        var dialog = $('<div id=\"sousform-'+objsf+'\"></div>').insertAfter('#tabs-1 .formControls');
452        $('<input type=\"text\" name=\"recherchedyn\" id=\"recherchedyn\" value=\"\" class=\"champFormulaire\" style=\"display:none\" />').insertAfter('#sousform-'+objsf);
453        
454        // execution de la requete passee en parametre
455        // (idem ajaxIt + callback)
456        $.ajax({
457            type: "GET",
458            url: link,
459            cache: false,
460            success: function(html){
461                //Suppression d'un precedent dialog
462                dialog.empty();
463                //Ajout du contenu recupere
464                dialog.append(html);
465                //Initialisation du theme OM
466                om_initialize_content();
467                //Creation du dialog
468                $(dialog).dialog({
469                //OnClose suppression du contenu
470                close: function(ev, ui) {
471                    // Si le formulaire est submit et valide on execute la méthode
472                    // passée en paramètre
473                    if (typeof(callback) === "function") {
474                        callback(callbackParams);
475                    }
476                    $(this).remove();
477                },
478                resizable: true,
479                modal: true,
480                width: 'auto',
481                height: 'auto',
482                position: 'left top',
483              });
484            },
485            async : false
486        });
487        //Fermeture du dialog lors d'un clic sur le bouton retour
488        $('#sousform-'+objsf).on("click",'a.retour',function() {
489            $(dialog).dialog('close').remove();
490            return false;
491        });
492    }
493    
494    /***
495     * Fonction getter des paramètres de l'url courante
496     */
497    // Parse URL Queries Method
498    (function($){
499        $.getQuery = function( query ) {
500            query = query.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
501            var expr = "[\\?&]"+query+"=([^&#]*)";
502            var regex = new RegExp( expr );
503            var results = regex.exec( window.location.href );
504            if( results !== null ) {
505                return results[1];
506                return decodeURIComponent(results[1].replace(/\+/g, " "));
507            } else {
508                return false;
509          }          }
510      //}      };
511    })(jQuery);
512    
513    
514    /*
515     * Javascript concernant la demande d'avis
516     *
517     *
518     */
519    
520    /**
521     * Fonction de callback appellée lors de la fermeture du dialog (popupit)
522     * du retour d'avis d'un service
523     **/
524    function returnToTab(objsf) {
525        var valid=$('#sousform-'+objsf+' div.ui-state-valid');
526        if(valid.length > 0) {
527            document.location.href="../scr/tab.php?obj="+$.getQuery('obj')+"&premier="+$.getQuery('premier')
528            +"&advs_id="+$.getQuery('advs_id')+"&recherche="+$.getQuery('recherche')+"&tricol="+$.getQuery('tricol')
529            +"&selectioncol="+$.getQuery('selectioncol');
530        }
531    };
532    
533    
534    /*
535     * Javascript concernant la demande
536     *
537     *
538     */
539    
540     /**
541      * Fonction permettant de mettre à jour les infos du demandeur
542      **/
543    function getDemandeurId(type) {
544        var id_demandeur=$('#id_retour').val();
545        if($.isNumeric(id_demandeur)) {
546            afficherDemandeur(id_demandeur,type);
547            om_initialize_content();
548        }
549    }
550    
551    /**
552     * Fonction permettant d'afficher la synthèse d'un demandeur
553     */
554    function afficherDemandeur(id,type) {
555        $.ajax({
556            type: "GET",
557            url: '../app/afficher_synthese_demandeur.view.php?iddemandeur='+id+'&type='+type,
558            cache: false,
559            success: function(html){
560                $(html).insertBefore('#add_'+type).fadeIn(500);
561    
562            },
563            async:false
564        });
565        affichageBoutonsDemandeurs();
566    }
567    
568    /**
569     * Fonction permettant de modifier un demandeur
570     */
571    function editDemandeur(obj,id,type,id_css) {
572        var url = '../scr/sousform.php?obj='+obj+'&retourformulaire=demande';
573        //Vérification des contraintes de récupération des demandeurs
574        if(getDemandeInfo('contraintes') == 'avec_recup') {
575            url += '&action=0&idx_demandeur='+id;
576        } else {
577            url += '&action=1&idx='+id;
578        }
579        popupIt(obj, url, 860, 'auto',
580                replaceDemandeur, {'type':type,'id': id, 'id_css':id_css});
581        affichageBoutonsDemandeurs();
582    }
583    
584    /**
585     * Function permettant de remplacer un contenu déjà existant
586     **/
587    function replaceDemandeur(obj) {
588        var new_demandeur=$('#id_retour').val();
589        if($.isNumeric(new_demandeur)) {
590            $.ajax({
591                type: "GET",
592                url: '../app/afficher_synthese_demandeur.view.php?iddemandeur='+new_demandeur+'&type='+obj.type,
593                cache: false,
594                success: function(html){
595                    $(obj.id_css).replaceWith(html);
596                }
597            });
598        }
599    }
600    /**
601     * Function permettant de remplacer un contenu déjà existant
602     **/
603    function removeDemandeur(id) {
604        var div_class=$('#'+id).attr("class");
605        $('#'+id).remove();
606        if(div_class == "delegataire") {
607            $('#add_delegataire').fadeIn(500);
608        }
609        affichageBoutonsDemandeurs();
610    }
611    
612    /**
613     * Fonction permettant d'afficher et cacher les boutons d'ajout de demandeurs
614     */
615    function affichageBoutonsDemandeurs(){
616    
617        // Si formulaire après validation on cache les boutons d'ajout de demandeurs
618        url = document.location + "" ;
619    
620        if ((url.indexOf("form.php?obj=demande&") != -1
621            || url.indexOf("form.php?obj=demande_nouveau_dossier&") != -1
622            || url.indexOf("form.php?obj=demande_dossier_existant&") != -1)
623            && $("form[name=f1] .form-is-valid").size() > 0 ) {
624    
625            $('#add_petitionnaire_principal').hide();
626            $('#add_delegataire').hide();
627            if($('input[name=delegataire][type=hidden]').size() == 0) {
628                $('#delegataire').hide();
629            }
630            $('#add_petitionnaire').hide();
631    
632        } else {
633    
634            // Affichage du bouton d'ajout du petitionnaire principal
635            if($('input[name=petitionnaire_principal][type=hidden]').size() == 1) {
636                $('#add_petitionnaire_principal').hide();
637            } else {
638                $('#add_petitionnaire_principal').fadeIn(500);
639            }
640    
641            // Affichage du bouton d'ajout du delegataire
642            if($('input[name=petitionnaire_principal][type=hidden]').size() == 1
643               || $('input[name=delegataire][type=hidden]').size() == 1) {
644                $('#delegataire').fadeIn(500);
645                if($('input[name=delegataire][type=hidden]').size() == 0) {
646                    $('#add_delegataire').fadeIn(500);
647                } else {
648                    $('#add_delegataire').hide();
649                }
650            } else {
651                $('#delegataire').hide();
652            }
653    
654            // Affichage du bouton d'ajout de petitionnaires
655            if($('input[name=petitionnaire_principal][type=hidden]').size() == 0) {
656                $('#add_petitionnaire').hide();
657            } else {
658                $('#add_petitionnaire').fadeIn(500);
659            }
660        }
661    }
662    
663    /**
664     * Appel au chargement de la page
665     **/
666    $(function() {
667        changeDemandeurType('qualite');
668        if ( $('#type_demandeur') == 'petitionnaire' ){
669            
670            addSearchIcon();
671            addDivDialog('.bloc_demandeur');
672        }
673        affichageBoutonsDemandeurs();
674        // Bind de la fonction permettant l'ajout du pétitionnaire principal
675        $("#formulaire").on("click","#add_petitionnaire_principal",  function() {
676            popupIt('petitionnaire',
677                    '../scr/sousform.php?obj=petitionnaire&action=0'+
678                    '&retourformulaire=demande&principal=true', 860, 'auto',
679                    getDemandeurId, 'petitionnaire_principal');
680        });
681        // Bind de la fonction permettant l'ajout du délégataire
682        $("#formulaire").on("click","#add_delegataire", function(event) {
683            popupIt('delegataire',
684                    '../scr/sousform.php?obj=delegataire&action=0'+
685                    '&retourformulaire=demande', 860, 'auto',
686                    getDemandeurId, 'delegataire');
687        });
688        // Bind de la fonction permettant l'ajout des pétitionnaires
689        $("#formulaire").on("click","#add_petitionnaire", function(event) {
690            popupIt('petitionnaire',
691                    '../scr/sousform.php?obj=petitionnaire&action=0'+
692                    '&retourformulaire=demande', 860, 'auto',
693                    getDemandeurId, 'petitionnaire');
694        });
695    
696        url = document.location + "" ;
697        if ((
698            url.indexOf("form.php?obj=demande&") != -1 ||
699            url.indexOf("form.php?obj=dossier&") != -1 ||
700            url.indexOf("form.php?obj=dossier_instruction&") != -1
701            )
702            && url.indexOf("&action=3") == -1) {
703    
704            formatFieldReferenceCadastrale();
705        }
706        
707        if (url.indexOf("form.php?obj=demande_nouveau_dossier&") != -1
708            && (url.indexOf("&action=3") == -1
709            && url.indexOf("&action=2") == -1
710            && $(".form-is-valid").size() == 0)) {
711            
712            addButtonCadastraleAdesse();
713            changeDemandeType();
714        }
715        
716        // Ajout de demande
717        if ((url.indexOf("form.php?obj=demande_nouveau_dossier&") != -1
718            || url.indexOf("form.php?obj=demande_dossier_existant&") != -1)
719            && url.indexOf("&action=0") != -1 ){
720    
721            /*Cache les champs avant que dossier_autorisation_type_detaille soit choisi*/
722            hideFields();
723        }
724        
725        // Ajout de demande sur dossier existant
726        if (url.indexOf("form.php?obj=demande_dossier_existant&") != -1
727            && url.indexOf("&action=0") != -1 ){
728    
729            /*Cache les champs avant que dossier_autorisation_type_detaille soit choisi*/
730            hideFields();
731            changeDemandeType();
732        }
733        
734        // Modification de demande
735        if (
736            (
737                url.indexOf("form.php?obj=demande&") != -1
738                || url.indexOf("form.php?obj=demande_nouveau_dossier&") != -1
739                || url.indexOf("form.php?obj=demande_dossier_existant&") != -1
740            )
741            && url.indexOf("&action") == -1
742        ){
743    
744            formatFieldReferenceCadastrale();
745        }
746        
747        //Gestion de la commission
748        $( "#tabs" ).tabs();
749          
750        // Affichage du tableau des dossier_commission au clique
751        $("#dossier_planifie").click(function() {
752            
753            var params = extractUrlParams();
754            idx = params['idx'];
755    
756            ajaxIt(
757                'dossier_commission',
758                '../scr/soustab.php?obj=dossier_commission&idxformulaire='+
759                idx +
760                '&retourformulaire=commission');
761        });
762        
763        // Affichage du tableau des dossier_commission posssible au clique
764        $('#commission_dossiers_plannifier_retirer').click(
765            function(){
766                
767                var params = extractUrlParams();
768                idx = params['idx'];
769                
770                $('#tabs-2').empty();
771                ajouterTableauDossierCommissionPossible(idx);
772            }
773        );
774        
775        //Suppression du message et des données dans le champ dossier
776        $('#commission_dossiers_plannifier_numero').click(
777            function(){
778                
779                $('#tabs-3 .message').remove();
780                $('#tabs-3 #dossier').val("");
781            }
782        );
783    });
784    
785    /*
786     * Action sur les champs pour les références cadastrales
787     */
788    function formatFieldReferenceCadastrale(){
789    
790        addNewFieldReferencesCadastrales();
791        $('#terrain_references_cadastrales').parent().parent().hide();
792        
793        url = document.location + "";
794    
795        reference_cadastrale = $('#terrain_references_cadastrales').val();
796        /*Formatage de la reference cadastrale*/
797        if ( reference_cadastrale != '' ){
798            
799            /* Récupère la référence cadastrale non formatée */
800            references_cadastrales = reference_cadastrale.split(';');
801            donnees = new Array();
802            
803            i = 0 ;
804            /* Boucle sur les références, elles étaient séparées par un ; */
805            for ( l = 0 ; l < references_cadastrales.length - 1 ; l ++ ){
806                
807                /*Récupère le code impots du qartier [CHIFFRES]*/
808                k = 0;
809                donnees[i] = '';
810                for ( j = k ; j < references_cadastrales[l].length ; j++ ){
811                    
812                    if ( references_cadastrales[l].charAt(j) >= 0 &&
813                        references_cadastrales[l].charAt(j) <= 9 ){
814                            
815                        donnees[i] += references_cadastrales[l].charAt(j);
816                        k++;
817                        
818                    } else {
819                        
820                        i++;
821                        break;
822                    }
823                }
824                
825                /* Récupère la section [LETTRES] */    
826                donnees[i] = '';
827                for ( j = k ; j < references_cadastrales[l].length ; j++ )
828                    if ( isAlpha(references_cadastrales[l].charAt(j)) ){
829                        
830                        donnees[i] += references_cadastrales[l].charAt(j);
831                        k++;
832                        
833                    } else {
834                        
835                        i++;
836                        break;
837                    }
838                
839                /* Récupère la parcelle [CHIFFRES] */
840                donnees[i] = '';
841                for ( j = k ; j < references_cadastrales[l].length ; j++ )
842                    if ( references_cadastrales[l].charAt(j) >= 0 &&
843                        references_cadastrales[l].charAt(j) <= 9 ){
844                            
845                        donnees[i] += references_cadastrales[l].charAt(j);
846                        k++;
847                        
848                    } else {
849                        
850                        break;
851                    }
852                
853                /* Récupère les séparateurs [ A / ] et les sections */
854                m = 0 ; // Nombre de suffixe
855                if ( k < references_cadastrales[l].length ){
856                    
857                    for ( j = k ; j < references_cadastrales[l].length ; j++ )
858                        if ( isAlpha(references_cadastrales[l].charAt(j)) ){
859                            
860                            m++;
861                            donnees[++i] = references_cadastrales[l].charAt(j);
862                            donnees[++i] = '';
863                        }
864                        else {
865                            
866                            donnees[i] += references_cadastrales[l].charAt(j);
867                        }
868                }
869                
870                /*Créé autant de champs de que de référence */
871                donnees[++i] = ';';
872                i++;
873    
874                if ( l > 0 ) {
875                    
876                    $('.reference_cadastrale_custom_fields').append(
877                        "<br/>" + fieldReferenceCadastraleBase()
878                    );
879                }
880                
881                actionFormReferenceCadastrale();
882                
883                if ( m > 0 ){
884                            
885                    for ( j = 0 ; j < m ; j++ ){
886                        
887                        $('#moreFieldReferenceCadastrale' +
888                            ( $('.moreFieldReferenceCadastrale').length - 1 ) ).
889                        before(
890                            newInputReferenceCadastrale()
891                        );
892                    }
893                }
894            }
895             /* Action sur les boutons [+ ajouter d'autres champs] et [+ ajouter
896              * d'autres lignes] */
897            actionLineFormReferenceCadastrale();
898            
899            /* Ajoute les données dans les champs nouvellement créés */
900            $('.reference_cadastrale_custom_field').each(
901                function(index) {
902                    
903                    $(this).val(donnees[index])
904                }
905            );
906        }
907        else{
908            actionFormReferenceCadastrale();
909            actionLineFormReferenceCadastrale();
910        }
911    }
912    
913    /**
914     * Ajoute les icônes pour la recherche de pétitionnaire fréquent.
915     */
916    function addSearchIcon(){
917    
918        $("#form-content:not(.form-is-valid) .search_fields").each(
919            function() {
920                //Ajout de l'icône après le champs dénomination et nom de la personne morale*/
921                $(this).append(
922                    '<span '+
923                        'class="om-icon om-icon-16 om-icon-fix search-frequent-16" '+
924                        'title="Chercher un frequent"> '+
925                    '</span>'
926                );
927            }
928        );
929        
930        /*Ajout des actions sur les boutons*/
931        addActionSearchIcon();
932        addActionRemove();
933    
934    }
935    
936    /**
937     * Fonction permettant de revenir sur le formulaire d'ajout de demandeur
938     **/
939    function addActionRemove(){
940        $('.erase-petitionnaire').click(
941            function(){
942                ajaxIt('petitionnaire','../scr/sousform.php?obj=petitionnaire&action=0');
943        });
944    }
945    
946    /**
947     * Vérifie que les champs necessaires sont remplis et retourne les données necessaires
948     * sous forme de tableau JSOn
949     */
950    function getDataSearch(){
951        
952        //Il faut un minimum de trois lettres pour lancer la recherche
953        var minChar = false;
954        //Récupération des données
955        var dataJson = "{";
956        $('.search_fields input').each(
957            function(){
958                if ( $(this).val().length >= 3 ){
959                    minChar = true;
960                }
961                
962                var idInput = $(this).attr("id");
963                var valInput = $(this).val();
964                dataJson += "\"" + idInput + "\":\"" + valInput + "\",";
965            }
966        );
967        if (!minChar){
968            alert('Saisissez au moins trois lettres pour la recherche');
969            return "";
970        }
971        
972        dataJson = $.parseJSON(dataJson.substring(0,dataJson.length-1)+"}");
973        //Données sous forme d'un tableau JSON
974        return dataJson;
975    }
976    
977    /*
978     * Ajoute les actions sur les icônes de recherche
979     */
980    function addActionSearchIcon(){
981        
982        //Selon l'objet dans lequel on se trouve
983        var objName = '';
984        var objReturn = '';
985        if ( $('#demandeur').length == 1 ){
986            objName = 'petitionnaire';
987            objReturn = 'demande';
988        }
989        else if($('#architecte').length == 1){
990            objName = 'architecte';
991            objReturn = 'donnees_techniques';
992        }
993        
994        $('.search-frequent-16').click(
995            function(){
996                //Récupération des données
997                dataJson = getDataSearch();
998                //Si ce n'est pas un tableau JSON on n'exécute pas le reste du code
999                if ( typeof dataJson !== 'object' ){
1000                    return;
1001                }
1002                
1003                //Requête qui va récupérer les données du addSearchIcon(es)
1004                //pétitionnaire(s) correspondant(s) à la recherche
1005                $.ajax({
1006                    type: "POST",
1007                    dataType: "json",
1008                    data: dataJson,
1009                    url: "../app/find" + objName.charAt(0).toUpperCase() + objName.substring(1) + ".php" ,
1010                    cache: false,
1011                    success: function(obj){
1012                        var freq = obj;
1013                        var res='';
1014                        /*Si la recherche a donné des résultats*/
1015                        if ( freq.length > 0 ){
1016                            /*Limitation des résultats à 50 */
1017                            if ( freq.length > 50 ){
1018                                
1019                                nbRes = 50;
1020                                res += 'Votre recherche a donn&eacute; ' + freq.length
1021                                    + ' r&eacute;sultats. Seul les cinquantes premiers ' +
1022                                    'seront affich&eacute;s.<br/>';
1023                            } else {
1024                                nbRes = freq.length;
1025                            }
1026                            
1027                            res += '<select id="select-'+objName+'">' ;
1028                            
1029                            /* Met les résultats de la recherche dans un select */
1030                           for ( i = 0 ; i < nbRes ; i++ ){
1031                                res += '<option value="' + freq[i].value + '">' +
1032                                            freq[i].content +
1033                                       '</option>';
1034                            }
1035                            
1036                            res += '</select>';
1037                        } else {
1038                            res += 'Aucune correspondance trouvée.';
1039                        }
1040                        
1041                        addDivDialog('#sousform-' + objName);
1042                        /* Affichage de l'overlay */
1043                        $('#dialog').html(res);
1044                          
1045                        $( "#dialog" ).dialog({
1046                            dialogClass: "dialog-search-frequent-"+objName,
1047                            modal: true,
1048                            buttons : {
1049                                Valider: function(){
1050                                    if ( res != 'Aucune correspondance trouvée.'){
1051                                        var id = $('#select-'+objName+' option:selected').val();
1052                                        if($.isNumeric(id)) {
1053                                            ajaxIt(objName,
1054                                            '../scr/sousform.php?obj=' + objName +
1055                                            '&action=1&retourformulaire=' + objReturn +
1056                                            '&idx='+id
1057                                            );
1058                                        }
1059                                    }
1060                                    // Fermeture de l'overlay
1061                                    $(this).dialog( "close" );
1062                                    $(this).remove();
1063                                }
1064                            },
1065                            close: function(){
1066                                $(this).remove();
1067                            }
1068                        });
1069                    },
1070                });
1071            }
1072        );
1073    }
1074    
1075    /*
1076     * Ajoute un div pour l'overlay dialog de jQuery
1077     */
1078    function addDivDialog(id){
1079        
1080        $(id).prepend('<div id="dialog"></div>');
1081    }
1082    
1083    /*
1084        Action au changement du select de la qualite du demandeur
1085     * */
1086    function changeDemandeurType(id){
1087    
1088        /*Réinitialise les champs et cache les champs inutiles selon la qualité du demandeur*/
1089        /*Si la qualite du demandeur est particulier */
1090        if ( $('#' + id ).val() == 'particulier' ){
1091            
1092            $('.personne_morale_fields input').each(
1093                function(){
1094                    $(this).val('');
1095                }
1096            );
1097            $('.personne_morale_fields select option[value=""]').each(
1098                function(){
1099                    $(this).attr('selected', 'selected');
1100                }
1101            );
1102            
1103            $('.personne_morale_fields').hide();
1104            $('.particulier_fields').show();
1105        }
1106        /*Si c'est une personne morale*/
1107        else {
1108            
1109           $('.particulier_fields input').each(
1110                function(){
1111                    $(this).val('');
1112                }
1113            );
1114            $('.particulier_fields select option[value=""]').each(
1115                function(){
1116                    $(this).attr('selected', 'selected');
1117                }
1118            );
1119            
1120            $('.particulier_fields').hide();
1121            $('.personne_morale_fields').show();
1122        }
1123    }
1124    
1125    /*
1126        Fonction de test des champs
1127     * */
1128    function isAlpha(str) {
1129        return /^[a-zA-Z\/]+$/.test(str);
1130    }
1131    
1132    function isMail(str){
1133        return /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/.test(str);
1134    }
1135    
1136    function isPhoneNumber(str){
1137        return /[0-9-()+]{3,20}/.test(str);
1138    }
1139    
1140    function testSeparator(obj){
1141    
1142        if ( obj.value != 'A' &&
1143             obj.value != '/' ) {
1144                
1145            alert('Saisissez uniquement un A ou un / comme séparateur');
1146            obj.value = '';
1147        }
1148    }
1149    /* Fin fonction test */
1150    
1151    /*
1152     *  Ajoute les ations spécifiques pour le formulaire personnalisé d'ajout de
1153     *  référence cadastrale
1154    */
1155    function actionFormReferenceCadastrale(){
1156        
1157        $('form').submit(
1158            function(){
1159                
1160                getDataFieldReferenceCadastrale();
1161            }
1162        );
1163        if( $("form[name=f1] .form-is-valid").size() == 0) {
1164    
1165            $('#moreFieldReferenceCadastrale' +
1166                ($('.moreFieldReferenceCadastrale').length - 1 )).
1167            on("click", function() {
1168                
1169                $(this).before(newInputReferenceCadastrale());
1170            });
1171        }
1172        
1173    }
1174    
1175    /*
1176     * Récupère les données saisies dans les champs de références cadastrales
1177     */
1178    function getDataFieldReferenceCadastrale(){
1179        
1180        var reference_cadastrale = '';
1181        var reference_cadastrale_temp = '';
1182        
1183        /*Pour chacun des champs du formulaire de saisie de référence cadastrale*/
1184        $('.reference_cadastrale_custom_field').each(
1185            function(){
1186                
1187                /*Si on est à la fin d'une ligne de champs*/
1188                if ( $(this).val() == ';' ){
1189                    
1190                    reference_cadastrale_bis = reference_cadastrale_temp ;
1191                    
1192                    /* Vérifie que les données sont correctement formatées avant de
1193                     * les ajouter au résultat*/
1194                    while( reference_cadastrale_bis != ''){
1195                        if ( /^([0-9]{1,4}[a-zA-Z]{1,3}[0-9]{1,5}([A\/]{1}[0-9]{1,4})*)*$/.test(reference_cadastrale_bis) ){
1196                            
1197                            reference_cadastrale += reference_cadastrale_bis + ";";
1198                            break;
1199                        }
1200                        else{
1201                            
1202                            reference_cadastrale_bis = reference_cadastrale_bis.slice( 0, -1);
1203                        }    
1204                    }
1205                    
1206                    reference_cadastrale_temp = '';
1207                }
1208                
1209                else {
1210                    
1211                    /*Sinon, on récupère la valeur du champ*/
1212                    reference_cadastrale_temp += $(this).val();
1213                }
1214            }
1215        );
1216    
1217        /*Met la valeur du résultat dans le champs généré par le framework*/
1218        $('#terrain_references_cadastrales').val(reference_cadastrale);
1219    }
1220    
1221    /*
1222        Action pour l'ajout de nouvelle ligne dans le formulaire d'ajout
1223        de référence cadastrale
1224     * */
1225    function actionLineFormReferenceCadastrale(){
1226        if( $("form[name=f1] .form-is-valid").size() == 0) {
1227    
1228            $('#morelineReferenceCadastrale').click(
1229                function(){
1230                    
1231                    /*Ajout des trois champs de base*/
1232                    $('.reference_cadastrale_custom_fields').
1233                    append( "<br/>" + fieldReferenceCadastraleBase());
1234    
1235                    /*Ajout du bind pour l'ajout de nouveaux champs*/
1236                    $('#moreFieldReferenceCadastrale'+
1237                        ($('.moreFieldReferenceCadastrale').length - 1 )).
1238                    on("click", function() {
1239                        $(this).before(newInputReferenceCadastrale());
1240                    });
1241                }
1242            );
1243        }
1244    }
1245    
1246    /*
1247        Met à jour le select demande_type dès qu'un
1248        dossier_autorisation_type_detaille est choisi
1249     * */
1250    function changeDemandeType(){
1251    
1252        var idDossierAutorisationTypeDetaille =
1253            $("#dossier_autorisation_type_detaille").val();
1254            
1255        /* Récupère les données saisies dans les champs pour la référence cadastrale */
1256        getDataFieldReferenceCadastrale();
1257        
1258        /*Si l'identifiant fourni est correct*/
1259        if ( $.isNumeric(idDossierAutorisationTypeDetaille) ){
1260            
1261            /*Met à jour le select de demande_type avec les données correspondant*/
1262            changeDemandeTypeDataSelect();
1263            if ( $('#demande_type option').size() < 2 ) {
1264                showFormsDemande();
1265            }
1266          
1267           /*Affiche le select*/
1268           $('#demande_type').parent().parent().show();
1269           if($('#demande_type').val() == '' ) {
1270                $('.demande_hidden_bloc').each(
1271                    function(){
1272                        $(this).hide();
1273                    }
1274                );
1275                $('input[type=submit]').hide();
1276           }
1277        }
1278        else {
1279            
1280            /*Sinon, cache tous les champs du formulaire*/
1281            hideFields();
1282        }
1283    }
1284    
1285    /*
1286        Ajoute le code HTML des champs pour les références cadastrales
1287     * */
1288    function addNewFieldReferencesCadastrales(){
1289    
1290        var html = '<div class="field field-type-text references_cadastrales_new_field" >'+
1291                '<div class="form-libelle">' +
1292                    '<label '+
1293                        'class="libelle-terrain_references_cadastrales" '+
1294                        'for="terrain_references_cadastrales">'+
1295                        ' Références cadastrales '+
1296                    '</label>' +
1297                '</div>' +
1298                '<div class="form-content reference_cadastrale_custom_fields">' +
1299                     fieldReferenceCadastraleBase() +
1300                '</div>' +
1301            '</div>';
1302        
1303        url = document.location + "";
1304        if((getDemandeInfo('nature') == 'NOUV' || getDemandeInfo('nature') == 'NONE' ) && $(".form-is-valid").size() == 0 && url.indexOf('action=3') == -1 ) {
1305            html += '<div class="field field-type-text" id="morelineReferenceCadastrale">' +
1306                '<div class="form-libelle"></div>' +
1307                '<div class="form-content">' +
1308                    '<span class="om-form-button add-16" title="Ajouter">ajouter d\'autres lignes</span>' +
1309                '</div>' +
1310           '</div>';
1311        }
1312    
1313        $('.references_cadastrales_new_field').remove();
1314        $('.moreFieldReferenceCadastrale').remove();
1315        $('#morelineReferenceCadastrale').remove();
1316        $('#terrain_references_cadastrales').parent().parent().before(
1317            html
1318        );
1319    }
1320    
1321    function addButtonCadastraleAdesse(){
1322        
1323        $('#terrain_references_cadastrales').parent().parent().after('<div class="field field-type-text" >' +
1324            '<div class="form-libelle"></div>' +
1325            '<div class="form-content buttonCadAdr">' +
1326                '<input id="cad-adr-them" '+
1327                    'class="ui-button ui-widget ui-state-default ui-corner-all" '+
1328                    'type="button" '+
1329                    'onclick="getAdressFromCadastrale();" '+
1330                    'value="Récupérer l\'adresse"/>' +
1331            '</div>' +
1332       '</div>' );
1333    }
1334    
1335    /*
1336        Séparateur caché ; pour marqué la fin d'une ligne de référence cadastrale
1337     * */
1338    function hiddenSeparatorField(){
1339    
1340        return '<input ' +
1341                    'class="reference_cadastrale_custom_field" ' +
1342                    'type="hidden" ' +
1343                    'maxlength="2" ' +
1344                    'size="2" ' +
1345                    'value=";" />';
1346    }
1347    
1348    /**
1349     * Retourne l'info passée en paramètre (nature de la demande ou type de la demande)
1350     **/
1351    function getDemandeInfo(info) {
1352        var id_demande_type = $('#demande_type').val();
1353        var res = "";
1354        if ( typeof id_demande_type !== "undefined" ){
1355            $.ajax({
1356                type: "GET",
1357                url: "../app/getDemandeInfo.php?iddemandetype=" + id_demande_type
1358                        + "&info=" + info,
1359                cache: false,
1360                async: false,
1361                success: function(val){
1362                    res = val;
1363                }
1364            });
1365        }
1366        else {
1367            
1368            res = "NONE"
1369        }
1370        return res;
1371    }
1372    /*
1373        Ajout d'une nouvelle ligne de champ de référence cadastrale
1374        Retourne le code HTML
1375     * */
1376    function fieldReferenceCadastraleBase(){
1377        
1378        url = document.location + "";
1379        
1380        var type = getDemandeInfo('nature');
1381        var reference_cadastrale = '<input ' +
1382                    'class="champFormulaire reference_cadastrale_custom_field" ' +
1383                    'type="text" ' +
1384                    'onchange="VerifNum(this)" ' +
1385                    'maxlength="4" ' +
1386                    'size="4" '+
1387                    'placeholder="Quart." ';
1388                    
1389        // désactivation des champs de référence cadastrale
1390        if( (type != 'NOUV' &&  type != 'NONE') || $(".form-is-valid").size() > 0 || url.indexOf('action=3') != -1 ) {
1391            reference_cadastrale += 'disabled="disabled" ';
1392        }
1393        
1394        reference_cadastrale += 'value="" />';
1395    
1396        reference_cadastrale += '<input ' +
1397                    'class="champFormulaire reference_cadastrale_custom_field" ' +
1398                    'type="text" ' +
1399                    'maxlength="3" ' +
1400                    'size="3" '+
1401                    'placeholder="Sect." ';
1402        
1403        // désactivation des champs de référence cadastrale
1404        if((type != 'NOUV'&&  type != 'NONE') || $(".form-is-valid").size() > 0 || url.indexOf('action=3') != -1 ) {
1405            reference_cadastrale += 'disabled="disabled" ';
1406        }
1407        
1408        reference_cadastrale += 'value="" '+
1409                    'onchange="if ( !isAlpha(this.value) ){ alert(\'Vous ne devez saisir que des lettres dans ce champs.\'); this.value = \'\'; }"/>';
1410        reference_cadastrale += '<input ' +
1411                    'class="champFormulaire reference_cadastrale_custom_field" ' +
1412                    'type="text" ' +
1413                    'onchange="VerifNum(this)" ' +
1414                    'maxlength="4" ' +
1415                    'size="4" '+
1416                    'placeholder="Parc." ';
1417        
1418        // désactivation des champs de référence cadastrale
1419        if((type != 'NOUV'&&  type != 'NONE') || $(".form-is-valid").size() > 0 || url.indexOf('action=3') != -1 ) {
1420            reference_cadastrale += 'disabled="disabled" ';
1421        }
1422        
1423        reference_cadastrale += 'value="" />';
1424    
1425        reference_cadastrale += '<span id="moreFieldReferenceCadastrale' +
1426            $('.moreFieldReferenceCadastrale').length +
1427            '" class="moreFieldReferenceCadastrale">' + hiddenSeparatorField();
1428    
1429        // Si form validé pas de bouton
1430        url = document.location + "";
1431        if( (type == 'NOUV' ||  type == 'NONE') && $("form[name=f1] .form-is-valid").size() == 0 && url.indexOf('action=3') == -1 ) {
1432    
1433            reference_cadastrale +=
1434                '<span class="om-form-button add-16" title="Ajouter">ajouter d\'autres champs</span>';
1435        }
1436    
1437        reference_cadastrale += '</span>';
1438        
1439        return reference_cadastrale;
1440    }
1441    
1442    /**
1443     * Cache les champs inutules [formulaire de demande]
1444     **/
1445    function hideFields(){
1446        $('.demande_hidden_bloc').each(
1447            function(){
1448                $(this).hide();
1449            }
1450        );
1451        
1452        $('.field-type-text').hide();
1453        $('input[type=submit]').hide();
1454        $('#demande_type').parent().parent().hide();
1455    }
1456    
1457    /*
1458        Affiche les champs dont on a besoin dans le formulaire de demande
1459     * */
1460    function showFormsDemande(){
1461        
1462        
1463        if($('#demande_type').val() != "") {
1464    
1465            $('.demande_hidden_bloc').each(
1466                function(){
1467                    $(this).show();
1468                }
1469            );
1470            formatFieldReferenceCadastrale(1);
1471            $('.field-type-text').show();
1472            $('input[type=submit]').show();
1473            $('.terrain_references_cadastrales_custom').hide();
1474            
1475            $('#terrain_references_cadastrales').parent().parent().hide();
1476    
1477            //Vérification des contraintes de récupération des demandeurs si
1478            // pas de récupération, on efface la liste
1479            if(getDemandeInfo('contraintes') == 'sans_recup') {
1480                if($('input[name=petitionnaire_principal]').size() != -1) {
1481                    removeDemandeur("petitionnaire_principal_" + $('input[name=petitionnaire_principal]').val());
1482                }
1483                if($('input[name=delegataire]').size() != -1) {
1484                    removeDemandeur("delegataire_" + $('input[name=delegataire]').val());
1485                }
1486    
1487                $('#listePetitionnaires input.demandeur_id').each(function(){
1488                    if($(this).size() != -1) {
1489    
1490                        removeDemandeur("petitionnaire_" + $(this).val());
1491                    }
1492                });
1493            } else if ( getDemandeInfo('contraintes') == 'avec_recup' ) {
1494                            //Récupération des demandeurs si la contrainte le permet
1495                $.ajax({
1496                    type: "GET",
1497                    url: "../app/getDemandeurList.php?dossier_autorisation=" + $('#dossier_autorisation').val(),
1498                    cache: false,
1499                    async: false,
1500                    success: function(html){
1501                        $('#liste_demandeur').replaceWith(html);
1502                    }
1503                });
1504            }
1505            affichageBoutonsDemandeurs();
1506        } else {
1507            
1508            /*Récupère les references cadastrales*/
1509            getDataFieldReferenceCadastrale();
1510            
1511            $('.demande_hidden_bloc').each(
1512                function(){
1513                    $(this).hide();
1514                }
1515            );
1516            $('input[type=submit]').hide();
1517    
1518        }
1519    }
1520    
1521    /*
1522        Action au clique sur le bouton " + ajouter d'autres champs"
1523     * */
1524    function newInputReferenceCadastrale(){
1525            
1526        // Champs désactivé si le formulaire a été validé et est valide
1527        var type = getDemandeInfo('nature');
1528        var reference_cadastrale_disabled = '';
1529        if((type != 'NOUV'&&  type != 'NONE') || $(".form-is-valid").size() > 0 || url.indexOf('action=3') != -1 ) {
1530            reference_cadastrale_disabled = 'disabled="disabled" ';
1531        }
1532        
1533        return '<input ' +
1534                'class="champFormulaire reference_cadastrale_custom_field" ' +
1535                'type="text" ' +
1536                'maxlength="1" ' +
1537                'size="3" ' +
1538                'value="" ' +
1539                'placeholder="Sep." ' +
1540                reference_cadastrale_disabled +
1541                'onchange="testSeparator(this);"/>' +
1542            '<input ' +
1543                'class="champFormulaire reference_cadastrale_custom_field" ' +
1544                'type="text" ' +
1545                'onchange="VerifNum(this)" ' +
1546                'maxlength="4" ' +
1547                'size="4" ' +
1548                'placeholder="Parc." ' +
1549                reference_cadastrale_disabled +
1550                'value="" />';
1551    }
1552    
1553    
1554    // Cette fonction permet d'associer a un arbre html les fonctions jquery
1555    // necessaires. Elle permet notamment lors du chargement d'une page en ajax
1556    // d'associer le comportement du bouton, la gestion du calendrier et la gestion
1557    // du fieldset.
1558    function om_initialize_content() {
1559        // Gestion du skin des boutons, liens
1560        link_bind_button();
1561        // Gestion du calendrier avec le widget datepicker de jqueryui
1562        inputdate_bind_datepicker();
1563        // Gestion des fieldset avec le plugin collaspsible de jquery
1564        fieldset_bind_collapsible();
1565        // Gestion du picker color avec le plugin minicolors
1566        bind_form_field_rvb();
1567        // Gestion du widget aide à la saisie localisation avec le plugin draggable
1568        // de jqueryui
1569        localisation_bind_draggable();
1570        // Gestion de la redimension automatique des textarea
1571        textarea_autoresize();
1572        
1573    
1574        changeDemandeurType('qualite');
1575        addSearchIcon();
1576        addDivDialog('.bloc_demandeur');
1577        
1578    }
1579    
1580    // Retourne la valeur d'une variable GET de l'URL
1581    function getQuerystring(key, default_)
1582    {
1583      if (default_==null) default_="";
1584      key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
1585      var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
1586      var qs = regex.exec(window.location.href);
1587      if(qs == null)
1588        return default_;
1589      else
1590        return qs[1];
1591    }
1592    
1593    // Récupère l'id de l'enregistrement lié au lot passé en parametre puis appel popupit
1594    function overlayCerfa(idLot) {
1595        $.get("../app/displayLotCerfa.php?lot="+idLot, function(data) {
1596            if(data != '') {
1597                    popupIt('donnees_techniques',
1598                            '../scr/sousform.php?obj=donnees_techniques&idx='+data+
1599                                '&retourformulaire=lot&maj=1&idxformulaire='+idLot,
1600                                950, 700);
1601                    
1602                } else {
1603                    // Si pas d'id retourner on créer un nouvel enregistrement de donnéees techniques
1604                    popupIt('donnees_techniques',
1605                            '../scr/sousform.php?obj=donnees_techniques&retourformulaire=lot&maj=0&idxformulaire='+idLot,
1606                                950, 700);
1607                }
1608    
1609            });
1610    }
1611    
1612    /**
1613     * Fonction permettant de faire la somme des champs passé en 2nd parametre et
1614     * le stocker dans le champ passé en 1er
1615     */
1616    function sommeChampsCerfa(cible, source) {
1617        val_cible = 0;
1618        
1619        $.each(source, function(index, value) {
1620            // Conversion des champs source en integer
1621            val_source = parseInt($('#'+value).val());
1622            // Cumul des valeurs des champs source
1623            val_cible = val_cible + (isNaN(val_source) ? 0 : val_source);
1624        });
1625        // Affectation de la nouvelle valeur
1626        $('#'+cible).val(val_cible);
1627    }
1628    
1629    function calculSurfaceTotal() {
1630        
1631        var nom_col = [ "su_avt_shon",
1632                        "su_cstr_shon",
1633                        "su_trsf_shon",
1634                        "su_chge_shon",
1635                        "su_demo_shon",
1636                        "su_tot_shon" ];
1637    
1638        // Calcul des totaux de colonnes
1639        $.each(nom_col, function(index, value) {
1640            var tot_col = 0;
1641            for ( var i = 1; i <= 9; i++ ) {
1642                // Conversion des champs source en integer
1643                val_source = parseInt($('#'+value+i).val());
1644                // Cumul des valeurs des champs source
1645                tot_col = tot_col + (isNaN(val_source) ? 0 : val_source);
1646            }
1647    
1648            // Affectation du résultat de ligne
1649            $('#'+value+'_tot').val(tot_col);
1650        });
1651    
1652        // Calcul des totaux des lignes
1653        for ( var j = 1; j <= 9; j++ ) {
1654            // Conversion des champs source en integer
1655            su_avt_shon = parseInt($('#su_avt_shon'+j).val());
1656            su_cstr_shon = parseInt($('#su_cstr_shon'+j).val());
1657            su_trsf_shon = parseInt($('#su_trsf_shon'+j).val());
1658            su_chge_shon = parseInt($('#su_chge_shon'+j).val());
1659            su_demo_shon = parseInt($('#su_demo_shon'+j).val());
1660            
1661            // Cumul des valeurs des champs source
1662            su_avt_shon = isNaN(su_avt_shon) ? 0 : su_avt_shon;
1663            su_cstr_shon = isNaN(su_cstr_shon) ? 0 : su_cstr_shon;
1664            su_trsf_shon = isNaN(su_trsf_shon) ? 0 : su_trsf_shon;
1665            su_chge_shon = isNaN(su_chge_shon) ? 0 : su_chge_shon;
1666            su_demo_shon = isNaN(su_demo_shon) ? 0 : su_demo_shon;
1667    
1668            // Affectation du résultat de ligne
1669            $('#su_tot_shon'+j).val((su_avt_shon+su_cstr_shon+su_trsf_shon)-(su_chge_shon+su_demo_shon));
1670    
1671        }
1672    
1673        // Calcul du total des totaux
1674        // Conversion des champs source en integer
1675        su_avt_shon = parseInt($('#su_avt_shon_tot').val());
1676        su_cstr_shon = parseInt($('#su_cstr_shon_tot').val());
1677        su_trsf_shon = parseInt($('#su_trsf_shon_tot').val());
1678        su_chge_shon = parseInt($('#su_chge_shon_tot').val());
1679        su_demo_shon = parseInt($('#su_demo_shon_tot').val());
1680        
1681        // Cumul des valeurs des champs source
1682        su_avt_shon = isNaN(su_avt_shon) ? 0 : su_avt_shon;
1683        su_cstr_shon = isNaN(su_cstr_shon) ? 0 : su_cstr_shon;
1684        su_trsf_shon = isNaN(su_trsf_shon) ? 0 : su_trsf_shon;
1685        su_chge_shon = isNaN(su_chge_shon) ? 0 : su_chge_shon;
1686        su_demo_shon = isNaN(su_demo_shon) ? 0 : su_demo_shon;
1687    
1688        // Affectation du résultat de ligne
1689        $('#su_tot_shon_tot').val((su_avt_shon+su_cstr_shon+su_trsf_shon)-(su_chge_shon+su_demo_shon));
1690    
1691    }
1692    
1693    /*
1694     * Marque comme lu une consultation ou commission
1695     */
1696    function portletUpdateData(id, objet, objetc, file, field, message){
1697        
1698        /*Vérifie que l'identifiant passé en paramètre est bien un chiffre
1699         * et que le type d'objet est défini
1700         * */
1701        if ( $.isNumeric(id) && objet != '' ){
1702            
1703            donnees = "?ido=" + id + '&obj=' + objet + '&objk=' + objetc + '&idxDossier=' + getQuerystring('idx');
1704            $.ajax({
1705                type: "GET",
1706                url: "../app/"+file+".php" + donnees ,
1707                cache: false,
1708                success: function(html){
1709                    
1710                    $('#sousform-' + objet + ' .message').remove();
1711                    /*Change la valeur affiché et affiche un message valide*/
1712                    if ( $.parseJSON(html) == "Mise a jour effectue avec succes" ||
1713                    $.parseJSON(html).indexOf("Transfert effectue avec succes") != -1 ){
1714                        
1715                        // On modife le champ field
1716                        if ( field != '' && message != '' ){
1717                            $('#'+field).html(message);
1718                            html = $.parseJSON(html);
1719                        }
1720                        else {
1721                            html = $.parseJSON(html).split(';');
1722                            
1723                            $('#'+field).html(html[0]);
1724                            
1725                            html = html[1];
1726                        }
1727                        
1728                        // On supprime l'action
1729                        $('span.'+field+'-16').parent().parent().remove();
1730                        // On affiche le message
1731                        $('#sousform-' + objet + ' .subtitle').after(
1732                            '<div ' +
1733                                'class="message ui-widget ui-corner-all ui-state-highlight ui-state-valid">' +
1734                                '<p>' +
1735                                    '<span class="ui-icon ui-icon-info"></span>' +
1736                                    '<span class="text">' +
1737                                        html +
1738                                    '</span>' +
1739                                '</p>' +
1740                            '</div>'                    
1741                        );
1742                    }
1743                    /*Affichage d'une erreur*/
1744                    else{
1745                        $('#sousform-' + objet + ' .subtitle').after(
1746                            '<div ' +
1747                                'class="message ui-widget ui-corner-all ui-state-highlight ui-state-error">' +
1748                                '<p>' +
1749                                    '<span class="ui-icon ui-icon-info"></span>' +
1750                                    '<span class="text">' +
1751                                        $.parseJSON(html) +
1752                                    '</span>' +
1753                                '</p>' +
1754                            '</div>'                    
1755                        );
1756                    }
1757                }
1758            });
1759        }
1760    }
1761    
1762    /*
1763     * Marque comme non frequent un petitionnaire
1764     */
1765    function portletUpdatePetitionnaire(id, objet, objetc, file, field, message){
1766        
1767        /*
1768         *Vérifie que l'identifiant passé en paramètre est bien un chiffre
1769         * et que le type d'objet est défini
1770         */
1771        if ( $.isNumeric(id) && objet != '' ){
1772            
1773            donnees = "?ido=" + id + '&obj=' + objet + '&objk=' + objetc + '&idxDossier=' + getQuerystring('idx');
1774            $.ajax({
1775                type: "GET",
1776                url: "../app/"+file+".php" + donnees ,
1777                cache: false,
1778                success: function(html){
1779                    
1780                    $('#formulaire .message').remove();
1781                    /*Change la valeur affiché et affiche un message valide*/
1782                    if ( $.parseJSON(html) == "Mise a jour effectue avec succes" ||
1783                    $.parseJSON(html).indexOf("Transfert effectue avec succes") != -1 ){
1784                        
1785                        // On modife le champ field
1786                        if ( field != '' && message != '' ){
1787                            $('#'+field).html(message);
1788                            html = $.parseJSON(html);
1789                        }
1790                        else {
1791                            html = $.parseJSON(html).split(';');
1792                            
1793                            $('#'+field).html(html[0]);
1794                            
1795                            html = html[1];
1796                        }
1797                        
1798                        // On supprime l'action
1799                        $('span.'+field+'-16').parent().parent().remove();
1800                        // On affiche le message
1801                        $('#formulaire #tabs-1').prepend(
1802                            '<div ' +
1803                                'class="message ui-widget ui-corner-all ui-state-highlight ui-state-valid">' +
1804                                '<p>' +
1805                                    '<span class="ui-icon ui-icon-info"></span>' +
1806                                    '<span class="text">' +
1807                                        html +
1808                                    '</span>' +
1809                                '</p>' +
1810                            '</div>'
1811                        );
1812                    }
1813                    /*Affichage d'une erreur*/
1814                    else{
1815                        $('#formulaire #tabs-1').prepend(
1816                            '<div ' +
1817                                'class="message ui-widget ui-corner-all ui-state-highlight ui-state-error">' +
1818                                '<p>' +
1819                                    '<span class="ui-icon ui-icon-info"></span>' +
1820                                    '<span class="text">' +
1821                                        $.parseJSON(html) +
1822                                    '</span>' +
1823                                '</p>' +
1824                            '</div>'
1825                        );
1826                    }
1827                }
1828            });
1829        }
1830    }
1831    
1832    
1833    // Affiche le sous formulaire onglet
1834    function redirectPortletAction(id, onglet, nom_tabs){
1835    
1836        var nom_tabs =  ( typeof nom_tabs === "undefined" ) ? ".ui-tabs" : nom_tabs;
1837        var $tabs = $(nom_tabs).tabs();
1838    
1839        lien_onglet = $('#' + onglet).attr('href');
1840        lien_onglet = lien_onglet.substring( lien_onglet.length - 1, lien_onglet.length);
1841    
1842        $tabs.tabs('select', lien_onglet);
1843    }
1844    
1845    //Rajoute un dossier pour la commission id
1846    function addDossierCommission(id, container){
1847        
1848        link = "../app/commission_ajouter_dossier.php?idx=" + id + "&idxDossier=" + $(container+" #dossier").val();
1849    
1850        $.ajax({
1851            type: "GET",
1852            url: link,
1853            cache: false,
1854            dataType: "json",
1855            success: function(i, obj){
1856                
1857                $(container + " .message").remove();
1858                $(container).prepend(
1859                    '<div class="message ui-widget ui-corner-all ui-state-highlight">'+
1860                        '<p>'+
1861                            '<span class="ui-icon ui-icon-info"></span>'+
1862                            '<span class="text">'+
1863                            '</span>'+
1864                        '</p>'+
1865                    '</div>'
1866                );
1867                    
1868                // Nouveau dossier ajouté
1869                if ( i.return == "1" ){
1870                    
1871                    $(container + ' .message').addClass("ui-state-ok");
1872                    $(container + ' .message .text').html("Dossier ajouté avec succès.");
1873                }
1874                //Dossier existe mais non ajouté
1875                else if( i.return == "0" ){
1876                    
1877                    $(container + ' .message').addClass("ui-state-error");
1878                    $(container + ' .message .text').html("Une erreur s'est produite lors de l'ajout de ce dossier. " +
1879                        "Veuillez contacter votre administrateur");
1880                }
1881                //Le dossier n'existe pas
1882                else if( i.return == "-1" ){
1883                    
1884                    $(container + ' .message').addClass("ui-state-error");
1885                    $(container + ' .message .text').html("Ce dossier n'existe pas.");
1886                }
1887                //Le dossier est déjà à l'ordre du jour
1888                else if( i.return == "2" ){
1889                    
1890                    $(container + ' .message').addClass("ui-state-error");
1891                    $(container + ' .message .text').html("Ce dossier est deja a l'ordre du jour.");
1892                }
1893                
1894            },
1895            async: false
1896        });
1897    }
1898    
1899    //Affichage du tableau des dossier_commission possibles
1900    function ajouterTableauDossierCommissionPossible(id){
1901        
1902        link = "../app/commission_tableau_dossier_possible.php?idx=" + id ;
1903    
1904        $.ajax({
1905            type: "GET",
1906            url: link,
1907            cache: false,
1908            success: function(html){
1909                
1910                $('#tabs-2').html(html);
1911            },
1912            async: false
1913        });
1914    }
1915    
1916    //Met à jour la liste des dossiers de la commission
1917    function updateCommission(id, container){
1918        
1919        var link = "../app/commission_update_dossier.php?idx=" + id ;
1920        var valid = "";
1921        var error = "";
1922        var error_avis = "";
1923        
1924         //Affiche du message de retour
1925        $(container + " .message").remove();
1926        $(container).prepend(
1927            '<div class="message ui-widget ui-corner-all ui-state-highlight dossier-ok">'+
1928                '<p>'+
1929                    '<span class="ui-icon ui-icon-info"></span>'+
1930                    '<span class="text">'+
1931                    msg_loading +
1932                    '</span>'+
1933                '</p>'+
1934            '</div>'
1935        );
1936    
1937        $(container + " input[type='checkbox']").each(
1938            function(index) {
1939                
1940                var idxDossier = $(this).val();
1941                //Identifiant du dossier formaté de façon lisible
1942                var idzDossier = $(this).parent().next().text();
1943                
1944                link = "../app/commission_update_dossier.php?idx=" + id +
1945                    "&idxDossier=" + idxDossier;
1946                
1947                //Ajoute ces dossiers de l'ordre du jour
1948                if ( $(this).is(":checked")){
1949                    
1950                    link += "&action=add";
1951                }
1952                //Supprime ces dossiers de l'ordre du jour
1953                else{
1954                    
1955                    link += "&action=remove";
1956                }
1957    
1958                //Mise à jour des données
1959                $.ajax({
1960                    type: "GET",
1961                    url: link,
1962                    cache: false,
1963                    dataType: "json",
1964                    success: function(i, obj){
1965                        
1966                        // Erreur
1967                        if( i.error == "0" ){
1968                            
1969                            error += idzDossier + ", ";
1970                        }
1971                        else if ( i.error == "-1" ) {
1972    
1973                            error_avis += idzDossier + ", ";
1974                        }
1975                        else{
1976                            valid += idzDossier + ", ";
1977                        }
1978                    },
1979                    async: false
1980                });
1981            }
1982        );
1983    
1984        //Ajout du div des erreurs
1985        if ( error != "" || error_avis != "" ){
1986            
1987            $(container + " .dossier-ok").after(
1988            '<div class="message ui-widget ui-corner-all ui-state-highlight dossier-err">'+
1989                '<p>'+
1990                    '<span class="ui-icon ui-icon-info"></span>'+
1991                    '<span class="text">'+
1992                    '</span>'+
1993                '</p>'+
1994            '</div>');
1995        }
1996    
1997        //le traitement a été effectué avec succès
1998        if ( valid != "" ){
1999            
2000            $(container + ' .dossier-ok').addClass("ui-state-ok");
2001            $(container + ' .dossier-ok .text').html("Mise à jour réalisée avec succès pour le(s) dossier(s) : "+
2002                valid.slice(0,valid.length-2) +
2003                ".");
2004        }
2005        else {
2006            
2007            $(container + " .dossier-ok").remove();
2008        }
2009        //Une erreur s'est produite
2010        if ( error != "" ) {
2011            
2012            $(container + ' .dossier-err').addClass("ui-state-error");
2013            $(container + ' .dossier-err .text').append(
2014                "Dossier : " + error.slice(0,error.length-2) + " déjà plannifié pour une autre commission.");
2015        }
2016        else if ( error_avis != "" ){
2017            
2018            $(container + ' .dossier-err').addClass("ui-state-error");
2019            $(container + ' .dossier-err .text').append(
2020                "Un  avis a déjà été rendu pour le(s) dossier(s): " +
2021                error_avis.slice(0,error_avis.length-2) +
2022                ".");
2023        }
2024    }
2025    
2026    
2027    //Récupère les données du type de commission et les mets dans les champs
2028    function chargeDonneesCommissionType(id_commission_type){
2029    
2030        //Requête ajax de récupération des données
2031        $.ajax({
2032            type: "GET",
2033            url: "../app/getCommissionTypeInfo.php?idx=" + id_commission_type,
2034            dataType: "json",
2035            async: false,
2036            success: function(data){
2037    
2038                // Ajout des données dans les champs
2039                $('#libelle').val(data.libelle);
2040                $('#lieu_adresse_ligne1').val(data.lieu_adresse_ligne1);
2041                $('#lieu_adresse_ligne2').val(data.lieu_adresse_ligne2);
2042                $('#lieu_salle').val(data.lieu_salle);
2043                $('#listes_de_diffusion').val(data.listes_de_diffusion);
2044                $('#participants').val(data.participants);
2045            }
2046        });
2047    }
2048    
2049    // Action de diffusion de mails des commissions
2050    function commission_diffusion(idx, obj, champ){
2051        
2052        $('#tabs-1 .message').remove();
2053        
2054        // Si les données sont fournies
2055        if ( $.isNumeric(idx) && obj != "" ){
2056            
2057            //Requête ajax d'envoi des données
2058            $.ajax({
2059                type: "GET",
2060                url: "../app/commission_diffusion.php?idx=" + idx + "&obj=" + obj,
2061                dataType: "json",
2062                async: false,
2063                success: function(data){
2064    
2065                    $('#tabs-1').prepend(
2066                        '<div ' +
2067                            'class="message ui-widget ui-corner-all ui-state-highlight">' +
2068                            '<p>' +
2069                                '<span class="ui-icon ui-icon-info"></span>' +
2070                                '<span class="text">' +
2071                                '</span>' +
2072                            '</p>' +
2073                        '</div>'                    
2074                    );
2075                    
2076                    var type = ( obj == "commission_compte_rendu" ) ? "du compte-rendu" : "de l'ordre du jour";
2077                    //L'envoi des mails a été effectué avec succès
2078                    if ( data.return == 1 ){
2079                        
2080                        //Finalisation du document
2081                        $.ajax({
2082                            type: "GET",
2083                            url: "../app/finalisation_document.php?idx=" + idx +
2084                                "&obj=commission&champ="+champ,
2085                            dataType: "json",
2086                            async: false,
2087                            success: function(data){
2088    
2089                                //Si la finalisation a été effectuée avec succès
2090                                if ( data != -1 ){
2091                                                      
2092                                    //On affiche le lien du document finalisé
2093                                    $('.'+champ).parent().attr("href", data+"");
2094                                    
2095                                    //On affiche un message de valisation
2096                                    $('.'+obj+' .message .text').html(
2097                                        "La finalisation du document s'est effectuée avec succès.<br/>"
2098                                    );
2099                                }
2100                                // Si une erreur s'est produite
2101                                else {
2102                                    
2103                                    //On affiche un message de validation
2104                                    $('.'+obj+' .message .text').html(
2105                                        "Une erreur s'est produite lors de la finalisation du document."
2106                                    );
2107                                }
2108                            }
2109                        });
2110                        
2111                        $('#tabs-1 .message').addClass("ui-state-valid");
2112                        $('#tabs-1 .message .text').prepend(
2113                            "La diffusion " + type + " s'est effectuée avec succès."
2114                        );
2115                    }
2116                    //Un erreur s'est produite
2117                    else if ( data.return == -1 ){
2118                        
2119                        $('#tabs-1 .message').addClass("ui-state-error");
2120                        $('#tabs-1 .message .text').html(
2121                            "Une erreur s'est produite lors de la diffusion " +
2122                            type +
2123                            ". Veuillez contacter votre administrateur."
2124                        );
2125                    }
2126                }
2127            });
2128        }
2129    }
2130    
2131    /**
2132     * Popup de confirmation pour les traitements
2133     */
2134    //
2135    function trt_confirm() {
2136        //
2137        if (confirm("Etes-vous sur de vouloir confirmer cette action ?")) {
2138            //
2139            return true;
2140        } else {
2141            //
2142            return false;
2143        }
2144    }
2145    
2146    /**
2147     * Finalisation des documents.
2148     *
2149     */
2150    function finalizeDocument(idx, obj, sousform, status, retour){
2151    
2152        //Requête ajax de finalisation des documents
2153        $.ajax({
2154            type: "GET",
2155            url: "../app/finalisation_document.php?idx=" + idx + "&obj=" + obj +
2156                "&status="+status+"&sousform="+sousform+"&retourformulaire="+retour,
2157            dataType: "json",
2158            async: false,
2159            success: function(data){
2160                
2161                $('#'+sousform+obj+' .message.ui-widget.ui-corner-all.ui-state-highlight').remove()
2162                $('#'+sousform+obj+' a.retour').first().before(
2163                    '<div ' +
2164                        'class="message ui-widget ui-corner-all ui-state-highlight">' +
2165                        '<p>' +
2166                            '<span class="ui-icon ui-icon-info"></span>' +
2167                            '<span class="text">' +
2168                            '</span>' +
2169                        '</p>' +
2170                    '</div>'                    
2171                );
2172                
2173                //Si la finalisation a été effectuée avec succès
2174                if ( data.pdf != -1 ){
2175                    
2176                    // On change le lien
2177                    var etat = ((status == 1)?'':'de') + 'finalis';
2178                    
2179                    $('.'+etat+'e').parent().parent().html(
2180                        data.portlet+""
2181                    );
2182                    
2183                    //On affiche le lien de l'action inverse
2184                    $('.edition').parent().attr("href", data.pdf+"");
2185                    
2186                    //Si on le document est finalisé, on cache les actions du portlet
2187                    if ( status == 1 ){
2188                        
2189                        $(".edit-16").parent().parent().remove();
2190                        $(".delete-16").parent().parent().remove();
2191                    }
2192                    else{
2193                        
2194                        var actions = '';
2195                        //Si le lien modifier est autorisé pour cet utilisateur
2196                        if ( typeof(data.actions.modifier)!='undefined' ){
2197                            
2198                            actions += data.actions.modifier;
2199                        }
2200                        
2201                        //Si le lien supprimer est autorisé pour cet utilisateur
2202                        if ( typeof(data.actions.supprimer)!='undefined' ){
2203                            
2204                            actions += data.actions.supprimer;
2205                        }
2206                        
2207                        $('.portlet-list').prepend(actions);
2208                    }
2209                    
2210                    //On affiche un message de valisation
2211                    $('#'+sousform+obj+' .message').addClass("ui-state-valid");
2212                    $('#'+sousform+obj+' .message .text').html(
2213                        "La "+etat+"ation du document s'est effectuée avec succès."
2214                    );
2215                }
2216                // Si une erreur s'est produite
2217                else {
2218                    
2219                    //On affiche un message de validation
2220                    $('#'+sousform+obj+' .message').addClass("ui-state-error");
2221                    $('#'+sousform+obj+' .message .text').html(
2222                        "Une erreur s'est produite lors de la finalisation du document."
2223                    );
2224                }
2225            }
2226        });
2227    }
2228    
2229    /**
2230     * Cette fonction permet d'afficher les options d'un select par rapport
2231     * à un autre champ
2232     *
2233     * @param  int id               Données (identifiant) du champ visé
2234     * @param  string tableName     Nom de la table
2235     * @param  string linkedField   Champ visé
2236     * @param  string formCible     Formulaire visé
2237     */
2238    function filterSelect(id, tableName, linkedField, formCible) {
2239    
2240        //lien vers script php
2241        link = "../app/filterSelect.php?idx=" + id + "&tableName=" + tableName +
2242                "&linkedField=" + linkedField + "&formCible=" + formCible;
2243    
2244        $.ajax({
2245            type: "GET",
2246            url: link,
2247            cache: false,
2248            dataType: "json",
2249            success: function(res){
2250                $('#'+tableName).empty();
2251    
2252                for ( j=0 ; j < res[0].length ; j++ ){
2253    
2254                    $('#'+tableName).append(
2255                        '<option value="'+res[0][j]+'" >'+res[1][j]+'</option>'
2256                    );
2257                    
2258                }
2259    
2260            },
2261            async: false
2262        });
2263    }
2264    
2265    /**
2266     * Redirige vers une page après un temps d'attente
2267     * @param  string   page            lien de la page vers la redirection
2268     * @param  int      milliseconde    temps d'attente avant la redirection
2269     */
2270    function redirection(page, milliseconde) {
2271    
2272        //
2273        setTimeout(window.location = page, milliseconde);
2274    }
2275    
2276    /**
2277     * Retourne ce qu'il y a à afficher dans le formulaire de retour (bouton ajouter ou supprimer et éditer)
2278     */
2279    function getObjId(obj){
2280    
2281        //Récupération de l'id de l'objet
2282        var id=$('#id_retour').val();
2283    
2284        //Retour des données
2285        if ( $('#id_retour').length > 0 ){
2286            setDataFrequent(id, obj);
2287            om_initialize_content();
2288        }
2289    }
2290    
2291    function setDataFrequent(id,obj) {
2292        $.ajax({
2293            type: "GET",
2294            url: '../app/afficher_synthese_obj.view.php?idx='+id+'&obj=' + obj,
2295            cache: false,
2296            success: function(html){
2297                $('.add_'+obj).each(
2298                    function(){
2299                        $(this).remove();
2300                    }
2301                );
2302                $(html).insertBefore('#'+obj).fadeIn(500);
2303                $('#'+obj).val(id);
2304            },
2305            async:false
2306        });
2307    }
2308    
2309    /**
2310     * Redirige vers le script PHP pour mettre à jour les informations
2311     * et met à jour l'interface pour l'utilisateur
2312     * @param  string   id          Identifiant du dossier
2313     * @param  string   fieldname   Nom du champ
2314     * @param  Function callback    Fonction mettant à jour l'interface des données
2315     * @param  string   confirm_message     Texte du message de confirmation
2316     */
2317    function geolocalisation_treatment(id, fieldname, callback, confirm_message) {
2318    
2319        // Overlay de confirmation du traitement
2320        if (confirm_message != null && confirm_message != '') {
2321            var dialog_confirm = confirm(confirm_message);
2322            if( dialog_confirm == false ){
2323              return false;
2324            }
2325        }
2326    
2327        // Affichage du spinner
2328        $('#'+fieldname).each(
2329            function(){
2330                $(this).children().removeClass();
2331                $(this).children().addClass('message ui-widget ui-corner-all ui-state-highlight ui-state-empty');
2332                $(this).children().children().children(".text").html(msg_loading);
2333            }
2334        );
2335        
2336        // lien vers script PHP faisant l'appel au webservice
2337        link = '../app/geolocalisation_treatment.php?fieldname='+fieldname+'&id='+id+'&callback='+callback;
2338    
2339        // Traitement
2340        $.ajax({
2341            type: "GET",
2342            url: link,
2343            cache: false,
2344            dataType: "json",
2345            success: function(res){
2346                //
2347                $('#'+fieldname).each(
2348                    function(){
2349                        $(this).children().children().children(".text").text(res['log']['message']);
2350                        $(this).children().removeClass();
2351                        if (res['log']['etat'] == 't') {
2352                            $(this).children().addClass('message ui-widget ui-corner-all ui-state-highlight ui-state-valid');
2353                        } else {
2354                            $(this).children().addClass('message ui-widget ui-corner-all ui-state-highlight ui-state-error');
2355                        }
2356                    }
2357                );
2358    
2359                //
2360                if (typeof(callback) === "function" && res['log']['etat'] == 't') {
2361                    callback(res);
2362                }
2363            },
2364            async:false
2365        });
2366    }
2367    
2368    /**
2369     * Efface le message en haut du formulaire
2370     * @param array res Résultat après le traitement du script PHP
2371     */
2372    function set_geolocalisation_message(res) {
2373        $('#geolocalisation-message').remove();
2374    }
2375    
2376    /**
2377     * Met le champ centroïde à jour
2378     * @param  array   res  Résultat après le traitement du script PHP
2379     */
2380    function set_geolocalisation_centroide(res) {
2381        $('span#centroide').text("POINT("+res['return']['coordX']+" "+res['return']['coordY']+")");
2382    }
2383    
2384    /**
2385     * Met le champ servitude à jour
2386     * @param  array   res  Résultat après le traitement du script PHP
2387     */
2388    function set_geolocalisation_contrainte(res) {
2389        $('span#servitude').text(res['return']['servitude']);
2390    }
2391    
2392    /**
2393     * Redirige vers ElyxWeb
2394     * @param array res Résultat après le traitement du script PHP
2395     */
2396    function redirection_elyxweb(res) {
2397        window.open(res['return']);
2398    }
2399    
2400    /**
2401     * Traitement du bouton permettant de calculer toutes les données géographiques
2402     * @param  string   id                  Identifiant du dossier
2403     * @param  string   confirm_message     Texte du message de confirmation
2404     */
2405    function all_geolocalisation_treatments(id, confirm_message) {
2406    
2407        // Overlay de confirmation du traitement
2408        if (confirm_message != null && confirm_message != '') {
2409            var dialog_confirm = confirm(confirm_message);
2410            if( dialog_confirm == false ){
2411              return false;
2412            }
2413        }
2414    
2415        // Initialisation des variables utilisées en paramètres
2416        var fieldname = '';
2417        var callback = '';
2418        var confirm_message = '';
2419        var flag = '';
2420    
2421        // Modification des variables utilisées en paramètres pour "Vérifier les
2422        // parcelles"
2423        fieldname = 'verif_parcelle';
2424        callback = set_geolocalisation_message;
2425        // Traitement "Vérifier les parcelles"
2426        geolocalisation_treatment(id, fieldname, callback, confirm_message);
2427    
2428        // Positionne le flag sur le message de "Vérifier les parcelles"
2429        flag = $('#'+fieldname+"-message").attr("class");
2430        // Si c'est un message d'erreur on arrete le traitement
2431        if (flag == 'message ui-widget ui-corner-all ui-state-highlight ui-state-error') {
2432            return false;
2433        }
2434    
2435        // Modification des variables utilisées en paramètres pour "Calculer
2436        // l'emprise"
2437        fieldname = 'calcul_emprise';
2438        callback = '';
2439        // Traitement "Calculer l'emprise"
2440        geolocalisation_treatment(id, fieldname, callback, confirm_message);
2441    
2442        // Positionne le flag sur le message de "Calculer l'emprise"
2443        flag = $('#'+fieldname+"-message").attr("class");
2444        // Si c'est un message d'erreur on arrete le traitement
2445        if (flag == 'message ui-widget ui-corner-all ui-state-highlight ui-state-error') {
2446            return false;
2447        }
2448    
2449        // Modification des variables utilisées en paramètres pour "Calculer le
2450        // centroïde"
2451        fieldname = 'calcul_centroide';
2452        callback = set_geolocalisation_centroide;
2453        // Traitement "Calculer le centroïde"
2454        geolocalisation_treatment(id, fieldname, callback, confirm_message);
2455    
2456        // Positionne le flag sur le message de "Calculer le centroïde"
2457        flag = $('#'+fieldname+"-message").attr("class");
2458        // Si c'est un message d'erreur on arrete le traitement
2459        if (flag == 'message ui-widget ui-corner-all ui-state-highlight ui-state-error') {
2460            return false;
2461        }
2462    
2463        // Modification des variables utilisées en paramètres pour "Récupérer les
2464        // contraintes"
2465        fieldname = 'recup_contrainte';
2466        callback = set_geolocalisation_contrainte;
2467        //Traitement "Récupérer les contraintes"
2468        geolocalisation_treatment(id, fieldname, callback, confirm_message);
2469        
2470    }
2471    
2472    /**
2473     * Remplit le formulaire avec l'adresse trouvée ou affiche un message d'erreur
2474     */
2475    function getAdressFromCadastrale(){
2476        
2477        //Récupération des références cadastrales
2478        var referenceCadastrale = '{"refcad":[{';
2479        var i = 0 ;
2480        var j = 1 ;
2481        var delimit = 0;
2482        var parcelleDelimit = 0;
2483        var noReferenceCadastrale = false;
2484        $(".reference_cadastrale_custom_field").each(
2485            function(){
2486                
2487                //On vérifie que le champ n'est pas vide
2488                if ($(this).val()!=""&&$(this).val() != ";"){
2489                    noReferenceCadastrale = true;
2490                }
2491                
2492                //On va à la ligne suivante
2493                if ( $(this).val() == ";" ){
2494                    referenceCadastrale +=(delimit!=0)?'}]':'';
2495                    referenceCadastrale += "}" ;
2496                    i++;
2497                    j = 1;
2498                    delimit = 0;
2499                    parcelleDelimit = 0;
2500                }
2501                //On parcourt la ligne
2502                else {
2503                    switch(true){
2504                        //Quartier
2505                        case (j==1):
2506                            referenceCadastrale += (i!=0)?',':'';
2507                            referenceCadastrale += '"' + i + '"' + ':{"quartier":"'+$(this).val()+'"';
2508                            break;
2509                        //Section
2510                        case (j==2):
2511                            referenceCadastrale += ', "section":"'+$(this).val()+'"';
2512                            break;
2513                        //Parcelle
2514                        case (j==3):
2515                            referenceCadastrale += ', "parcelle":"'+$(this).val()+'"';
2516                            break;
2517                        //Le délimiteur
2518                        case (j%2==0&&j!=2):
2519                            if ( delimit==0 ){
2520                                referenceCadastrale += ', "delimit":[{"'+(delimit++)+'":"'+$(this).val()+'"';
2521                            }
2522                            else {
2523                                referenceCadastrale += ', "'+(delimit++)+'":"'+$(this).val()+'"';
2524                            }
2525                            break;
2526                        //La parcelle après le délimiteur
2527                        case (j%2==1&&j!=1&&j!=3):
2528                            referenceCadastrale += ',"'+(delimit++)+'":"'+$(this).val()+'"';
2529                            break;
2530                    }
2531                    j++;
2532                }
2533            }
2534        );
2535        if ( noReferenceCadastrale == true ){
2536            referenceCadastrale += "}]}";
2537        }
2538        else {
2539            referenceCadastrale = "";
2540        }
2541    
2542        //Lance la tentative de récupération de l'adresse
2543        $.ajax({
2544            type: "POST",
2545            url: '../app/getAdressFromCadastrale.php',
2546            data: $.parseJSON(referenceCadastrale),
2547            cache: false,
2548            dataType: "json",
2549            success: function(data){
2550    
2551                //Si le retour est un objet JSON, on a un résultat
2552                if ( $.isPlainObject(data)){
2553                    
2554                    //On met l'adresse dans les champs
2555                    $("#terrain_adresse_voie_numero").val(data.return.dnuvoi);
2556                    $("#terrain_adresse_voie").val(data.return.prefixe+" "+data.return.nom);
2557                    $("#terrain_adresse_code_postal").val(data.return.arrdt);
2558                    $("#terrain_adresse_localite").val(data.return.localite);
2559                }
2560                //Sinon, on affiche un message d'erreur
2561                else {
2562                    alert(data);
2563                }
2564            },
2565            async: false
2566        });
2567  }  }

Legend:
Removed from v.343  
changed lines
  Added in v.2237

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26