/[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 536 by vpihour, Thu Oct 25 16:12:46 2012 UTC revision 2201 by softime, Fri Aug 30 11:14:48 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 VerifNumdec(champ) {  function file(fichier) {
376      champ.value = champ.value.replace(",", "."); // remplacement de la virgule      //
377      //if (champ.value.lastIndexOf(".") == -1){ // champ decimal      if (fichier == "") {
378          if (isNaN(champ.value)) {          alert("zone vide");
379              alert(msg_alert_error_verifnum);      }
380              champ.value = "";      //
381              return;      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  /* -- Debut -- */  
386    /**
387     * Retour spécifique de l'écran de consultation multiple - surcharge de ajaxIt
388     * @todo XXX voir les différences avec ajaxIt et si il n'est pas possible
389     * d'effectuer  la modification dans le core
390     */
391  function messageIt(objsf, link, empty) {  function messageIt(objsf, link, empty) {
392      // recuperation du terme recherche      // recuperation du terme recherche
393      var recherche = document.getElementById("recherchedyn");      var recherche = document.getElementById("recherchedyn");
# Line 73  function messageIt(objsf, link, empty) { Line 396  function messageIt(objsf, link, empty) {
396      }else {      }else {
397          link += "&recherche=";          link += "&recherche=";
398      }      }
399      // execution de la requete en POST      // execution de la requete en GET
400      $.ajax({      $.ajax({
401          type: "GET",          type: "GET",
402          url: link,          url: link,
# Line 87  function messageIt(objsf, link, empty) { Line 410  function messageIt(objsf, link, empty) {
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*/  /* 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){  jQuery.download = function(url, data, method){
419      //url and data options required      //url and data options required
# Line 105  jQuery.download = function(url, data, me Line 432  jQuery.download = function(url, data, me
432      };      };
433  };  };
434    
 /* -- FIN -- */  
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                            modal: true,
1047                            buttons : {
1048                                Valider: function(){
1049                                    if ( res != 'Aucune correspondance trouvée.'){
1050                                        var id = $('#select-'+objName+' option:selected').val();
1051                                        if($.isNumeric(id)) {
1052                                            ajaxIt(objName,
1053                                            '../scr/sousform.php?obj=' + objName +
1054                                            '&action=1&retourformulaire=' + objReturn +
1055                                            '&idx='+id
1056                                            );
1057                                        }
1058                                    }
1059                                    // Fermeture de l'overlay
1060                                    $(this).dialog( "close" );
1061                                    $(this).remove();
1062                                }
1063                            },
1064                            close: function(){
1065                                $(this).remove();
1066                            }
1067                        });
1068                    },
1069                });
1070            }
1071        );
1072    }
1073    
1074    /*
1075     * Ajoute un div pour l'overlay dialog de jQuery
1076     */
1077    function addDivDialog(id){
1078        
1079        $(id).prepend('<div id="dialog"></div>');
1080    }
1081    
1082    /*
1083        Action au changement du select de la qualite du demandeur
1084     * */
1085    function changeDemandeurType(id){
1086    
1087        /*Réinitialise les champs et cache les champs inutiles selon la qualité du demandeur*/
1088        /*Si la qualite du demandeur est particulier */
1089        if ( $('#' + id ).val() == 'particulier' ){
1090            
1091            $('.personne_morale_fields input').each(
1092                function(){
1093                    $(this).val('');
1094                }
1095            );
1096            $('.personne_morale_fields select option[value=""]').each(
1097                function(){
1098                    $(this).attr('selected', 'selected');
1099                }
1100            );
1101            
1102            $('.personne_morale_fields').hide();
1103            $('.particulier_fields').show();
1104        }
1105        /*Si c'est une personne morale*/
1106        else {
1107            
1108           $('.particulier_fields input').each(
1109                function(){
1110                    $(this).val('');
1111                }
1112            );
1113            $('.particulier_fields select option[value=""]').each(
1114                function(){
1115                    $(this).attr('selected', 'selected');
1116                }
1117            );
1118            
1119            $('.particulier_fields').hide();
1120            $('.personne_morale_fields').show();
1121        }
1122    }
1123    
1124    /*
1125        Fonction de test des champs
1126     * */
1127    function isAlpha(str) {
1128        return /^[a-zA-Z\/]+$/.test(str);
1129    }
1130    
1131    function isMail(str){
1132        return /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/.test(str);
1133    }
1134    
1135    function isPhoneNumber(str){
1136        return /[0-9-()+]{3,20}/.test(str);
1137    }
1138    
1139    function testSeparator(obj){
1140    
1141        if ( obj.value != 'A' &&
1142             obj.value != '/' ) {
1143                
1144            alert('Saisissez uniquement un A ou un / comme séparateur');
1145            obj.value = '';
1146        }
1147    }
1148    /* Fin fonction test */
1149    
1150    /*
1151     *  Ajoute les ations spécifiques pour le formulaire personnalisé d'ajout de
1152     *  référence cadastrale
1153    */
1154    function actionFormReferenceCadastrale(){
1155        
1156        $('form').submit(
1157            function(){
1158                
1159                getDataFieldReferenceCadastrale();
1160            }
1161        );
1162        if( $("form[name=f1] .form-is-valid").size() == 0) {
1163    
1164            $('#moreFieldReferenceCadastrale' +
1165                ($('.moreFieldReferenceCadastrale').length - 1 )).
1166            on("click", function() {
1167                
1168                $(this).before(newInputReferenceCadastrale());
1169            });
1170        }
1171        
1172    }
1173    
1174    /*
1175     * Récupère les données saisies dans les champs de références cadastrales
1176     */
1177    function getDataFieldReferenceCadastrale(){
1178        
1179        var reference_cadastrale = '';
1180        var reference_cadastrale_temp = '';
1181        
1182        /*Pour chacun des champs du formulaire de saisie de référence cadastrale*/
1183        $('.reference_cadastrale_custom_field').each(
1184            function(){
1185                
1186                /*Si on est à la fin d'une ligne de champs*/
1187                if ( $(this).val() == ';' ){
1188                    
1189                    reference_cadastrale_bis = reference_cadastrale_temp ;
1190                    
1191                    /* Vérifie que les données sont correctement formatées avant de
1192                     * les ajouter au résultat*/
1193                    while( reference_cadastrale_bis != ''){
1194                        if ( /^([0-9]{1,4}[a-zA-Z]{1,3}[0-9]{1,5}([A\/]{1}[0-9]{1,4})*)*$/.test(reference_cadastrale_bis) ){
1195                            
1196                            reference_cadastrale += reference_cadastrale_bis + ";";
1197                            break;
1198                        }
1199                        else{
1200                            
1201                            reference_cadastrale_bis = reference_cadastrale_bis.slice( 0, -1);
1202                        }    
1203                    }
1204                    
1205                    reference_cadastrale_temp = '';
1206                }
1207                
1208                else {
1209                    
1210                    /*Sinon, on récupère la valeur du champ*/
1211                    reference_cadastrale_temp += $(this).val();
1212                }
1213            }
1214        );
1215    
1216        /*Met la valeur du résultat dans le champs généré par le framework*/
1217        $('#terrain_references_cadastrales').val(reference_cadastrale);
1218    }
1219    
1220    /*
1221        Action pour l'ajout de nouvelle ligne dans le formulaire d'ajout
1222        de référence cadastrale
1223     * */
1224    function actionLineFormReferenceCadastrale(){
1225        if( $("form[name=f1] .form-is-valid").size() == 0) {
1226    
1227            $('#morelineReferenceCadastrale').click(
1228                function(){
1229                    
1230                    /*Ajout des trois champs de base*/
1231                    $('.reference_cadastrale_custom_fields').
1232                    append( "<br/>" + fieldReferenceCadastraleBase());
1233    
1234                    /*Ajout du bind pour l'ajout de nouveaux champs*/
1235                    $('#moreFieldReferenceCadastrale'+
1236                        ($('.moreFieldReferenceCadastrale').length - 1 )).
1237                    on("click", function() {
1238                        $(this).before(newInputReferenceCadastrale());
1239                    });
1240                }
1241            );
1242        }
1243    }
1244    
1245    /*
1246        Met à jour le select demande_type dès qu'un
1247        dossier_autorisation_type_detaille est choisi
1248     * */
1249    function changeDemandeType(){
1250    
1251        var idDossierAutorisationTypeDetaille =
1252            $("#dossier_autorisation_type_detaille").val();
1253            
1254        /* Récupère les données saisies dans les champs pour la référence cadastrale */
1255        getDataFieldReferenceCadastrale();
1256        
1257        /*Si l'identifiant fourni est correct*/
1258        if ( $.isNumeric(idDossierAutorisationTypeDetaille) ){
1259            
1260            /*Met à jour le select de demande_type avec les données correspondant*/
1261            changeDemandeTypeDataSelect();
1262            if ( $('#demande_type option').size() < 2 ) {
1263                showFormsDemande();
1264            }
1265          
1266           /*Affiche le select*/
1267           $('#demande_type').parent().parent().show();
1268           if($('#demande_type').val() == '' ) {
1269                $('.demande_hidden_bloc').each(
1270                    function(){
1271                        $(this).hide();
1272                    }
1273                );
1274                $('input[type=submit]').hide();
1275           }
1276        }
1277        else {
1278            
1279            /*Sinon, cache tous les champs du formulaire*/
1280            hideFields();
1281        }
1282    }
1283    
1284    /*
1285        Ajoute le code HTML des champs pour les références cadastrales
1286     * */
1287    function addNewFieldReferencesCadastrales(){
1288    
1289        var html = '<div class="field field-type-text references_cadastrales_new_field" >'+
1290                '<div class="form-libelle">' +
1291                    '<label '+
1292                        'class="libelle-terrain_references_cadastrales" '+
1293                        'for="terrain_references_cadastrales">'+
1294                        ' Références cadastrales '+
1295                    '</label>' +
1296                '</div>' +
1297                '<div class="form-content reference_cadastrale_custom_fields">' +
1298                     fieldReferenceCadastraleBase() +
1299                '</div>' +
1300            '</div>';
1301        
1302        url = document.location + "";
1303        if((getDemandeInfo('nature') == 'NOUV' || getDemandeInfo('nature') == 'NONE' ) && $(".form-is-valid").size() == 0 && url.indexOf('action=3') == -1 ) {
1304            html += '<div class="field field-type-text" id="morelineReferenceCadastrale">' +
1305                '<div class="form-libelle"></div>' +
1306                '<div class="form-content">' +
1307                    '<span class="om-form-button add-16" title="Ajouter">ajouter d\'autres lignes</span>' +
1308                '</div>' +
1309           '</div>';
1310        }
1311    
1312        $('.references_cadastrales_new_field').remove();
1313        $('.moreFieldReferenceCadastrale').remove();
1314        $('#morelineReferenceCadastrale').remove();
1315        $('#terrain_references_cadastrales').parent().parent().before(
1316            html
1317        );
1318    }
1319    
1320    function addButtonCadastraleAdesse(){
1321        
1322        $('#terrain_superficie').parent().parent().after('<div class="field field-type-text" >' +
1323            '<div class="form-libelle"></div>' +
1324            '<div class="form-content buttonCadAdr">' +
1325                '<input id="cad-adr-them" '+
1326                    'class="ui-button ui-widget ui-state-default ui-corner-all" '+
1327                    'type="button" '+
1328                    'onclick="getAdressFromCadastrale();" '+
1329                    'value="Cadastrale = > Adresse"/>' +
1330            '</div>' +
1331       '</div>' );
1332    }
1333    
1334    /*
1335        Séparateur caché ; pour marqué la fin d'une ligne de référence cadastrale
1336     * */
1337    function hiddenSeparatorField(){
1338    
1339        return '<input ' +
1340                    'class="reference_cadastrale_custom_field" ' +
1341                    'type="hidden" ' +
1342                    'maxlength="2" ' +
1343                    'size="2" ' +
1344                    'value=";" />';
1345    }
1346    
1347    /**
1348     * Retourne l'info passée en paramètre (nature de la demande ou type de la demande)
1349     **/
1350    function getDemandeInfo(info) {
1351        var id_demande_type = $('#demande_type').val();
1352        var res = "";
1353        if ( typeof id_demande_type !== "undefined" ){
1354            $.ajax({
1355                type: "GET",
1356                url: "../app/getDemandeInfo.php?iddemandetype=" + id_demande_type
1357                        + "&info=" + info,
1358                cache: false,
1359                async: false,
1360                success: function(val){
1361                    res = val;
1362                }
1363            });
1364        }
1365        else {
1366            
1367            res = "NONE"
1368        }
1369        return res;
1370    }
1371    /*
1372        Ajout d'une nouvelle ligne de champ de référence cadastrale
1373        Retourne le code HTML
1374     * */
1375    function fieldReferenceCadastraleBase(){
1376        
1377        url = document.location + "";
1378        
1379        var type = getDemandeInfo('nature');
1380        var reference_cadastrale = '<input ' +
1381                    'class="champFormulaire reference_cadastrale_custom_field" ' +
1382                    'type="text" ' +
1383                    'onchange="VerifNum(this)" ' +
1384                    'maxlength="4" ' +
1385                    'size="4" '+
1386                    'placeholder="Quart." ';
1387                    
1388        // désactivation des champs de référence cadastrale
1389        if( (type != 'NOUV' &&  type != 'NONE') || $(".form-is-valid").size() > 0 || url.indexOf('action=3') != -1 ) {
1390            reference_cadastrale += 'disabled="disabled" ';
1391        }
1392        
1393        reference_cadastrale += 'value="" />';
1394    
1395        reference_cadastrale += '<input ' +
1396                    'class="champFormulaire reference_cadastrale_custom_field" ' +
1397                    'type="text" ' +
1398                    'maxlength="3" ' +
1399                    'size="3" '+
1400                    'placeholder="Sect." ';
1401        
1402        // désactivation des champs de référence cadastrale
1403        if((type != 'NOUV'&&  type != 'NONE') || $(".form-is-valid").size() > 0 || url.indexOf('action=3') != -1 ) {
1404            reference_cadastrale += 'disabled="disabled" ';
1405        }
1406        
1407        reference_cadastrale += 'value="" '+
1408                    'onchange="if ( !isAlpha(this.value) ){ alert(\'Vous ne devez saisir que des lettres dans ce champs.\'); this.value = \'\'; }"/>';
1409        reference_cadastrale += '<input ' +
1410                    'class="champFormulaire reference_cadastrale_custom_field" ' +
1411                    'type="text" ' +
1412                    'onchange="VerifNum(this)" ' +
1413                    'maxlength="5" ' +
1414                    'size="5" '+
1415                    'placeholder="Parc." ';
1416        
1417        // désactivation des champs de référence cadastrale
1418        if((type != 'NOUV'&&  type != 'NONE') || $(".form-is-valid").size() > 0 || url.indexOf('action=3') != -1 ) {
1419            reference_cadastrale += 'disabled="disabled" ';
1420        }
1421        
1422        reference_cadastrale += 'value="" />';
1423    
1424        reference_cadastrale += '<span id="moreFieldReferenceCadastrale' +
1425            $('.moreFieldReferenceCadastrale').length +
1426            '" class="moreFieldReferenceCadastrale">' + hiddenSeparatorField();
1427    
1428        // Si form validé pas de bouton
1429        url = document.location + "";
1430        if( (type == 'NOUV' ||  type == 'NONE') && $("form[name=f1] .form-is-valid").size() == 0 && url.indexOf('action=3') == -1 ) {
1431    
1432            reference_cadastrale +=
1433                '<span class="om-form-button add-16" title="Ajouter">ajouter d\'autres champs</span>';
1434        }
1435    
1436        reference_cadastrale += '</span>';
1437        
1438        return reference_cadastrale;
1439    }
1440    
1441    /**
1442     * Cache les champs inutules [formulaire de demande]
1443     **/
1444    function hideFields(){
1445        $('.demande_hidden_bloc').each(
1446            function(){
1447                $(this).hide();
1448            }
1449        );
1450        
1451        $('.field-type-text').hide();
1452        $('input[type=submit]').hide();
1453        $('#demande_type').parent().parent().hide();
1454    }
1455    
1456    /*
1457        Affiche les champs dont on a besoin dans le formulaire de demande
1458     * */
1459    function showFormsDemande(){
1460        
1461        
1462        if($('#demande_type').val() != "") {
1463    
1464            $('.demande_hidden_bloc').each(
1465                function(){
1466                    $(this).show();
1467                }
1468            );
1469            formatFieldReferenceCadastrale(1);
1470            $('.field-type-text').show();
1471            $('input[type=submit]').show();
1472            $('.terrain_references_cadastrales_custom').hide();
1473            
1474            $('#terrain_references_cadastrales').parent().parent().hide();
1475    
1476            //Vérification des contraintes de récupération des demandeurs si
1477            // pas de récupération, on efface la liste
1478            if(getDemandeInfo('contraintes') == 'sans_recup') {
1479                if($('input[name=petitionnaire_principal]').size() != -1) {
1480                    removeDemandeur("petitionnaire_principal_" + $('input[name=petitionnaire_principal]').val());
1481                }
1482                if($('input[name=delegataire]').size() != -1) {
1483                    removeDemandeur("delegataire_" + $('input[name=delegataire]').val());
1484                }
1485    
1486                $('#listePetitionnaires input.demandeur_id').each(function(){
1487                    if($(this).size() != -1) {
1488    
1489                        removeDemandeur("petitionnaire_" + $(this).val());
1490                    }
1491                });
1492            } else if ( getDemandeInfo('contraintes') == 'avec_recup' ) {
1493                            //Récupération des demandeurs si la contrainte le permet
1494                $.ajax({
1495                    type: "GET",
1496                    url: "../app/getDemandeurList.php?dossier_autorisation=" + $('#dossier_autorisation').val(),
1497                    cache: false,
1498                    async: false,
1499                    success: function(html){
1500                        $('#liste_demandeur').replaceWith(html);
1501                    }
1502                });
1503            }
1504            affichageBoutonsDemandeurs();
1505        } else {
1506            
1507            /*Récupère les references cadastrales*/
1508            getDataFieldReferenceCadastrale();
1509            
1510            $('.demande_hidden_bloc').each(
1511                function(){
1512                    $(this).hide();
1513                }
1514            );
1515            $('input[type=submit]').hide();
1516    
1517        }
1518    }
1519    
1520    /*
1521        Action au clique sur le bouton " + ajouter d'autres champs"
1522     * */
1523    function newInputReferenceCadastrale(){
1524        
1525        // Champs désactivé si le formulaire a été validé et est valide
1526        var type = getDemandeInfo('nature');
1527        var reference_cadastrale_disabled = '';
1528        if((type != 'NOUV'&&  type != 'NONE') || $(".form-is-valid").size() > 0 || url.indexOf('action=3') != -1 ) {
1529            reference_cadastrale_disabled = 'disabled="disabled" ';
1530        }
1531        
1532        return '<input ' +
1533                'class="champFormulaire reference_cadastrale_custom_field" ' +
1534                'type="text" ' +
1535                'maxlength="1" ' +
1536                'size="3" ' +
1537                'value="" ' +
1538                'placeholder="Sep." ' +
1539                reference_cadastrale_disabled +
1540                'onchange="testSeparator(this);"/>' +
1541            '<input ' +
1542                'class="champFormulaire reference_cadastrale_custom_field" ' +
1543                'type="text" ' +
1544                'onchange="VerifNum(this)" ' +
1545                'maxlength="4" ' +
1546                'size="4" ' +
1547                'placeholder="Parc." ' +
1548                reference_cadastrale_disabled +
1549                'value="" />';
1550    }
1551    
1552    
1553    // Cette fonction permet d'associer a un arbre html les fonctions jquery
1554    // necessaires. Elle permet notamment lors du chargement d'une page en ajax
1555    // d'associer le comportement du bouton, la gestion du calendrier et la gestion
1556    // du fieldset.
1557    function om_initialize_content() {
1558        // Gestion du skin des boutons, liens
1559        link_bind_button();
1560        // Gestion du calendrier avec le widget datepicker de jqueryui
1561        inputdate_bind_datepicker();
1562        // Gestion des fieldset avec le plugin collaspsible de jquery
1563        fieldset_bind_collapsible();
1564        // Gestion du picker color avec le plugin minicolors
1565        bind_form_field_rvb();
1566        // Gestion du widget aide à la saisie localisation avec le plugin draggable
1567        // de jqueryui
1568        localisation_bind_draggable();
1569        // Gestion de la redimension automatique des textarea
1570        textarea_autoresize();
1571        
1572    
1573        changeDemandeurType('qualite');
1574        addSearchIcon();
1575        addDivDialog('.bloc_demandeur');
1576        
1577    }
1578    
1579    // Retourne la valeur d'une variable GET de l'URL
1580    function getQuerystring(key, default_)
1581    {
1582      if (default_==null) default_="";
1583      key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
1584      var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
1585      var qs = regex.exec(window.location.href);
1586      if(qs == null)
1587        return default_;
1588      else
1589        return qs[1];
1590    }
1591    
1592    // Récupère l'id de l'enregistrement lié au lot passé en parametre puis appel popupit
1593    function overlayCerfa(idLot) {
1594        $.get("../app/displayLotCerfa.php?lot="+idLot, function(data) {
1595            if(data != '') {
1596                    popupIt('donnees_techniques',
1597                            '../scr/sousform.php?obj=donnees_techniques&idx='+data+
1598                                '&retourformulaire=lot&maj=1&idxformulaire='+idLot,
1599                                950, 700);
1600                    
1601                } else {
1602                    // Si pas d'id retourner on créer un nouvel enregistrement de donnéees techniques
1603                    popupIt('donnees_techniques',
1604                            '../scr/sousform.php?obj=donnees_techniques&retourformulaire=lot&maj=0&idxformulaire='+idLot,
1605                                950, 700);
1606                }
1607    
1608            });
1609    }
1610    
1611    /**
1612     * Fonction permettant de faire la somme des champs passé en 2nd parametre et
1613     * le stocker dans le champ passé en 1er
1614     */
1615    function sommeChampsCerfa(cible, source) {
1616        val_cible = 0;
1617        
1618        $.each(source, function(index, value) {
1619            // Conversion des champs source en integer
1620            val_source = parseInt($('#'+value).val());
1621            // Cumul des valeurs des champs source
1622            val_cible = val_cible + (isNaN(val_source) ? 0 : val_source);
1623        });
1624        // Affectation de la nouvelle valeur
1625        $('#'+cible).val(val_cible);
1626    }
1627    
1628    function calculSurfaceTotal() {
1629        
1630        var nom_col = [ "su_avt_shon",
1631                        "su_cstr_shon",
1632                        "su_trsf_shon",
1633                        "su_chge_shon",
1634                        "su_demo_shon",
1635                        "su_tot_shon" ];
1636    
1637        // Calcul des totaux de colonnes
1638        $.each(nom_col, function(index, value) {
1639            var tot_col = 0;
1640            for ( var i = 1; i <= 9; i++ ) {
1641                // Conversion des champs source en integer
1642                val_source = parseInt($('#'+value+i).val());
1643                // Cumul des valeurs des champs source
1644                tot_col = tot_col + (isNaN(val_source) ? 0 : val_source);
1645            }
1646    
1647            // Affectation du résultat de ligne
1648            $('#'+value+'_tot').val(tot_col);
1649        });
1650    
1651        // Calcul des totaux des lignes
1652        for ( var j = 1; j <= 9; j++ ) {
1653            // Conversion des champs source en integer
1654            su_avt_shon = parseInt($('#su_avt_shon'+j).val());
1655            su_cstr_shon = parseInt($('#su_cstr_shon'+j).val());
1656            su_trsf_shon = parseInt($('#su_trsf_shon'+j).val());
1657            su_chge_shon = parseInt($('#su_chge_shon'+j).val());
1658            su_demo_shon = parseInt($('#su_demo_shon'+j).val());
1659            
1660            // Cumul des valeurs des champs source
1661            su_avt_shon = isNaN(su_avt_shon) ? 0 : su_avt_shon;
1662            su_cstr_shon = isNaN(su_cstr_shon) ? 0 : su_cstr_shon;
1663            su_trsf_shon = isNaN(su_trsf_shon) ? 0 : su_trsf_shon;
1664            su_chge_shon = isNaN(su_chge_shon) ? 0 : su_chge_shon;
1665            su_demo_shon = isNaN(su_demo_shon) ? 0 : su_demo_shon;
1666    
1667            // Affectation du résultat de ligne
1668            $('#su_tot_shon'+j).val((su_avt_shon+su_cstr_shon+su_trsf_shon)-(su_chge_shon+su_demo_shon));
1669    
1670        }
1671    
1672        // Calcul du total des totaux
1673        // Conversion des champs source en integer
1674        su_avt_shon = parseInt($('#su_avt_shon_tot').val());
1675        su_cstr_shon = parseInt($('#su_cstr_shon_tot').val());
1676        su_trsf_shon = parseInt($('#su_trsf_shon_tot').val());
1677        su_chge_shon = parseInt($('#su_chge_shon_tot').val());
1678        su_demo_shon = parseInt($('#su_demo_shon_tot').val());
1679        
1680        // Cumul des valeurs des champs source
1681        su_avt_shon = isNaN(su_avt_shon) ? 0 : su_avt_shon;
1682        su_cstr_shon = isNaN(su_cstr_shon) ? 0 : su_cstr_shon;
1683        su_trsf_shon = isNaN(su_trsf_shon) ? 0 : su_trsf_shon;
1684        su_chge_shon = isNaN(su_chge_shon) ? 0 : su_chge_shon;
1685        su_demo_shon = isNaN(su_demo_shon) ? 0 : su_demo_shon;
1686    
1687        // Affectation du résultat de ligne
1688        $('#su_tot_shon_tot').val((su_avt_shon+su_cstr_shon+su_trsf_shon)-(su_chge_shon+su_demo_shon));
1689    
1690    }
1691    
1692    /*
1693     * Marque comme lu une consultation ou commission
1694     */
1695    function portletUpdateData(id, objet, objetc, file, field, message){
1696        
1697        /*Vérifie que l'identifiant passé en paramètre est bien un chiffre
1698         * et que le type d'objet est défini
1699         * */
1700        if ( $.isNumeric(id) && objet != '' ){
1701            
1702            donnees = "?ido=" + id + '&obj=' + objet + '&objk=' + objetc + '&idxDossier=' + getQuerystring('idx');
1703            $.ajax({
1704                type: "GET",
1705                url: "../app/"+file+".php" + donnees ,
1706                cache: false,
1707                success: function(html){
1708                    
1709                    $('#sousform-' + objet + ' .message').remove();
1710                    /*Change la valeur affiché et affiche un message valide*/
1711                    if ( $.parseJSON(html) == "Mise a jour effectue avec succes" ||
1712                    $.parseJSON(html).indexOf("Transfert effectue avec succes") != -1 ){
1713                        
1714                        // On modife le champ field
1715                        if ( field != '' && message != '' ){
1716                            $('#'+field).html(message);
1717                            html = $.parseJSON(html);
1718                        }
1719                        else {
1720                            html = $.parseJSON(html).split(';');
1721                            
1722                            $('#'+field).html(html[0]);
1723                            
1724                            html = html[1];
1725                        }
1726                        
1727                        // On supprime l'action
1728                        $('span.'+field+'-16').parent().parent().remove();
1729                        // On affiche le message
1730                        $('#sousform-' + objet + ' .subtitle').after(
1731                            '<div ' +
1732                                'class="message ui-widget ui-corner-all ui-state-highlight ui-state-valid">' +
1733                                '<p>' +
1734                                    '<span class="ui-icon ui-icon-info"></span>' +
1735                                    '<span class="text">' +
1736                                        html +
1737                                    '</span>' +
1738                                '</p>' +
1739                            '</div>'                    
1740                        );
1741                    }
1742                    /*Affichage d'une erreur*/
1743                    else{
1744                        $('#sousform-' + objet + ' .subtitle').after(
1745                            '<div ' +
1746                                'class="message ui-widget ui-corner-all ui-state-highlight ui-state-error">' +
1747                                '<p>' +
1748                                    '<span class="ui-icon ui-icon-info"></span>' +
1749                                    '<span class="text">' +
1750                                        $.parseJSON(html) +
1751                                    '</span>' +
1752                                '</p>' +
1753                            '</div>'                    
1754                        );
1755                    }
1756                }
1757            });
1758        }
1759    }
1760    
1761    /*
1762     * Marque comme non frequent un petitionnaire
1763     */
1764    function portletUpdatePetitionnaire(id, objet, objetc, file, field, message){
1765        
1766        /*
1767         *Vérifie que l'identifiant passé en paramètre est bien un chiffre
1768         * et que le type d'objet est défini
1769         */
1770        if ( $.isNumeric(id) && objet != '' ){
1771            
1772            donnees = "?ido=" + id + '&obj=' + objet + '&objk=' + objetc + '&idxDossier=' + getQuerystring('idx');
1773            $.ajax({
1774                type: "GET",
1775                url: "../app/"+file+".php" + donnees ,
1776                cache: false,
1777                success: function(html){
1778                    
1779                    $('#formulaire .message').remove();
1780                    /*Change la valeur affiché et affiche un message valide*/
1781                    if ( $.parseJSON(html) == "Mise a jour effectue avec succes" ||
1782                    $.parseJSON(html).indexOf("Transfert effectue avec succes") != -1 ){
1783                        
1784                        // On modife le champ field
1785                        if ( field != '' && message != '' ){
1786                            $('#'+field).html(message);
1787                            html = $.parseJSON(html);
1788                        }
1789                        else {
1790                            html = $.parseJSON(html).split(';');
1791                            
1792                            $('#'+field).html(html[0]);
1793                            
1794                            html = html[1];
1795                        }
1796                        
1797                        // On supprime l'action
1798                        $('span.'+field+'-16').parent().parent().remove();
1799                        // On affiche le message
1800                        $('#formulaire #tabs-1').prepend(
1801                            '<div ' +
1802                                'class="message ui-widget ui-corner-all ui-state-highlight ui-state-valid">' +
1803                                '<p>' +
1804                                    '<span class="ui-icon ui-icon-info"></span>' +
1805                                    '<span class="text">' +
1806                                        html +
1807                                    '</span>' +
1808                                '</p>' +
1809                            '</div>'
1810                        );
1811                    }
1812                    /*Affichage d'une erreur*/
1813                    else{
1814                        $('#formulaire #tabs-1').prepend(
1815                            '<div ' +
1816                                'class="message ui-widget ui-corner-all ui-state-highlight ui-state-error">' +
1817                                '<p>' +
1818                                    '<span class="ui-icon ui-icon-info"></span>' +
1819                                    '<span class="text">' +
1820                                        $.parseJSON(html) +
1821                                    '</span>' +
1822                                '</p>' +
1823                            '</div>'
1824                        );
1825                    }
1826                }
1827            });
1828        }
1829    }
1830    
1831    
1832    // Affiche le sous formulaire onglet
1833    function redirectPortletAction(id, onglet, nom_tabs){
1834    
1835        var nom_tabs =  ( typeof nom_tabs === "undefined" ) ? ".ui-tabs" : nom_tabs;
1836        var $tabs = $(nom_tabs).tabs();
1837    
1838        lien_onglet = $('#' + onglet).attr('href');
1839        lien_onglet = lien_onglet.substring( lien_onglet.length - 1, lien_onglet.length);
1840    
1841        $tabs.tabs('select', lien_onglet);
1842    }
1843    
1844    //Rajoute un dossier pour la commission id
1845    function addDossierCommission(id, container){
1846        
1847        link = "../app/commission_ajouter_dossier.php?idx=" + id + "&idxDossier=" + $(container+" #dossier").val();
1848    
1849        $.ajax({
1850            type: "GET",
1851            url: link,
1852            cache: false,
1853            dataType: "json",
1854            success: function(i, obj){
1855                
1856                $(container + " .message").remove();
1857                $(container).prepend(
1858                    '<div class="message ui-widget ui-corner-all ui-state-highlight">'+
1859                        '<p>'+
1860                            '<span class="ui-icon ui-icon-info"></span>'+
1861                            '<span class="text">'+
1862                            '</span>'+
1863                        '</p>'+
1864                    '</div>'
1865                );
1866                    
1867                // Nouveau dossier ajouté
1868                if ( i.return == "1" ){
1869                    
1870                    $(container + ' .message').addClass("ui-state-ok");
1871                    $(container + ' .message .text').html("Dossier ajouté avec succès.");
1872                }
1873                //Dossier existe mais non ajouté
1874                else if( i.return == "0" ){
1875                    
1876                    $(container + ' .message').addClass("ui-state-error");
1877                    $(container + ' .message .text').html("Une erreur s'est produite lors de l'ajout de ce dossier. " +
1878                        "Veuillez contacter votre administrateur");
1879                }
1880                //Le dossier n'existe pas
1881                else if( i.return == "-1" ){
1882                    
1883                    $(container + ' .message').addClass("ui-state-error");
1884                    $(container + ' .message .text').html("Ce dossier n'existe pas.");
1885                }
1886                //Le dossier est déjà à l'ordre du jour
1887                else if( i.return == "2" ){
1888                    
1889                    $(container + ' .message').addClass("ui-state-error");
1890                    $(container + ' .message .text').html("Ce dossier est deja a l'ordre du jour.");
1891                }
1892                
1893            },
1894            async: false
1895        });
1896    }
1897    
1898    //Affichage du tableau des dossier_commission possibles
1899    function ajouterTableauDossierCommissionPossible(id){
1900        
1901        link = "../app/commission_tableau_dossier_possible.php?idx=" + id ;
1902    
1903        $.ajax({
1904            type: "GET",
1905            url: link,
1906            cache: false,
1907            success: function(html){
1908                
1909                $('#tabs-2').html(html);
1910            },
1911            async: false
1912        });
1913    }
1914    
1915    //Met à jour la liste des dossiers de la commission
1916    function updateCommission(id, container){
1917        
1918        var link = "../app/commission_update_dossier.php?idx=" + id ;
1919        var valid = "";
1920        var error = "";
1921        var error_avis = "";
1922        
1923         //Affiche du message de retour
1924        $(container + " .message").remove();
1925        $(container).prepend(
1926            '<div class="message ui-widget ui-corner-all ui-state-highlight dossier-ok">'+
1927                '<p>'+
1928                    '<span class="ui-icon ui-icon-info"></span>'+
1929                    '<span class="text">'+
1930                    msg_loading +
1931                    '</span>'+
1932                '</p>'+
1933            '</div>'
1934        );
1935    
1936        $(container + " input[type='checkbox']").each(
1937            function(index) {
1938                
1939                var idxDossier = $(this).val();
1940                //Identifiant du dossier formaté de façon lisible
1941                var idzDossier = $(this).parent().next().text();
1942                
1943                link = "../app/commission_update_dossier.php?idx=" + id +
1944                    "&idxDossier=" + idxDossier;
1945                
1946                //Ajoute ces dossiers de l'ordre du jour
1947                if ( $(this).is(":checked")){
1948                    
1949                    link += "&action=add";
1950                }
1951                //Supprime ces dossiers de l'ordre du jour
1952                else{
1953                    
1954                    link += "&action=remove";
1955                }
1956    
1957                //Mise à jour des données
1958                $.ajax({
1959                    type: "GET",
1960                    url: link,
1961                    cache: false,
1962                    dataType: "json",
1963                    success: function(i, obj){
1964                        
1965                        // Erreur
1966                        if( i.error == "0" ){
1967                            
1968                            error += idzDossier + ", ";
1969                        }
1970                        else if ( i.error == "-1" ) {
1971    
1972                            error_avis += idzDossier + ", ";
1973                        }
1974                        else{
1975                            valid += idzDossier + ", ";
1976                        }
1977                    },
1978                    async: false
1979                });
1980            }
1981        );
1982    
1983        //Ajout du div des erreurs
1984        if ( error != "" || error_avis != "" ){
1985            
1986            $(container + " .dossier-ok").after(
1987            '<div class="message ui-widget ui-corner-all ui-state-highlight dossier-err">'+
1988                '<p>'+
1989                    '<span class="ui-icon ui-icon-info"></span>'+
1990                    '<span class="text">'+
1991                    '</span>'+
1992                '</p>'+
1993            '</div>');
1994        }
1995    
1996        //le traitement a été effectué avec succès
1997        if ( valid != "" ){
1998            
1999            $(container + ' .dossier-ok').addClass("ui-state-ok");
2000            $(container + ' .dossier-ok .text').html("Mise à jour réalisée avec succès pour le(s) dossier(s) : "+
2001                valid.slice(0,valid.length-2) +
2002                ".");
2003        }
2004        else {
2005            
2006            $(container + " .dossier-ok").remove();
2007        }
2008        //Une erreur s'est produite
2009        if ( error != "" ) {
2010            
2011            $(container + ' .dossier-err').addClass("ui-state-error");
2012            $(container + ' .dossier-err .text').append(
2013                "Dossier : " + error.slice(0,error.length-2) + " déjà plannifié pour une autre commission.");
2014        }
2015        else if ( error_avis != "" ){
2016            
2017            $(container + ' .dossier-err').addClass("ui-state-error");
2018            $(container + ' .dossier-err .text').append(
2019                "Un  avis a déjà été rendu pour le(s) dossier(s): " +
2020                error_avis.slice(0,error_avis.length-2) +
2021                ".");
2022        }
2023    }
2024    
2025    
2026    //Récupère les données du type de commission et les mets dans les champs
2027    function chargeDonneesCommissionType(id_commission_type){
2028    
2029        //Requête ajax de récupération des données
2030        $.ajax({
2031            type: "GET",
2032            url: "../app/getCommissionTypeInfo.php?idx=" + id_commission_type,
2033            dataType: "json",
2034            async: false,
2035            success: function(data){
2036    
2037                // Ajout des données dans les champs
2038                $('#libelle').val(data.libelle);
2039                $('#lieu_adresse_ligne1').val(data.lieu_adresse_ligne1);
2040                $('#lieu_adresse_ligne2').val(data.lieu_adresse_ligne2);
2041                $('#lieu_salle').val(data.lieu_salle);
2042                $('#listes_de_diffusion').val(data.listes_de_diffusion);
2043                $('#participants').val(data.participants);
2044            }
2045        });
2046    }
2047    
2048    // Action de diffusion de mails des commissions
2049    function commission_diffusion(idx, obj, champ){
2050        
2051        $('#tabs-1 .message').remove();
2052        
2053        // Si les données sont fournies
2054        if ( $.isNumeric(idx) && obj != "" ){
2055            
2056            //Requête ajax d'envoi des données
2057            $.ajax({
2058                type: "GET",
2059                url: "../app/commission_diffusion.php?idx=" + idx + "&obj=" + obj,
2060                dataType: "json",
2061                async: false,
2062                success: function(data){
2063    
2064                    $('#tabs-1').prepend(
2065                        '<div ' +
2066                            'class="message ui-widget ui-corner-all ui-state-highlight">' +
2067                            '<p>' +
2068                                '<span class="ui-icon ui-icon-info"></span>' +
2069                                '<span class="text">' +
2070                                '</span>' +
2071                            '</p>' +
2072                        '</div>'                    
2073                    );
2074                    
2075                    var type = ( obj == "commission_compte_rendu" ) ? "du compte-rendu" : "de l'ordre du jour";
2076                    //L'envoi des mails a été effectué avec succès
2077                    if ( data.return == 1 ){
2078                        
2079                        //Finalisation du document
2080                        $.ajax({
2081                            type: "GET",
2082                            url: "../app/finalisation_document.php?idx=" + idx +
2083                                "&obj=commission&champ="+champ,
2084                            dataType: "json",
2085                            async: false,
2086                            success: function(data){
2087    
2088                                //Si la finalisation a été effectuée avec succès
2089                                if ( data != -1 ){
2090                                                      
2091                                    //On affiche le lien du document finalisé
2092                                    $('.'+champ).parent().attr("href", data+"");
2093                                    
2094                                    //On affiche un message de valisation
2095                                    $('.'+obj+' .message .text').html(
2096                                        "La finalisation du document s'est effectuée avec succès.<br/>"
2097                                    );
2098                                }
2099                                // Si une erreur s'est produite
2100                                else {
2101                                    
2102                                    //On affiche un message de validation
2103                                    $('.'+obj+' .message .text').html(
2104                                        "Une erreur s'est produite lors de la finalisation du document."
2105                                    );
2106                                }
2107                            }
2108                        });
2109                        
2110                        $('#tabs-1 .message').addClass("ui-state-valid");
2111                        $('#tabs-1 .message .text').prepend(
2112                            "La diffusion " + type + " s'est effectuée avec succès."
2113                        );
2114                    }
2115                    //Un erreur s'est produite
2116                    else if ( data.return == -1 ){
2117                        
2118                        $('#tabs-1 .message').addClass("ui-state-error");
2119                        $('#tabs-1 .message .text').html(
2120                            "Une erreur s'est produite lors de la diffusion " +
2121                            type +
2122                            ". Veuillez contacter votre administrateur."
2123                        );
2124                    }
2125                }
2126            });
2127        }
2128    }
2129    
2130    /**
2131     * Popup de confirmation pour les traitements
2132     */
2133    //
2134    function trt_confirm() {
2135        //
2136        if (confirm("Etes-vous sur de vouloir confirmer cette action ?")) {
2137            //
2138            return true;
2139        } else {
2140            //
2141            return false;
2142        }
2143    }
2144    
2145    /**
2146     * Finalisation des documents.
2147     *
2148     */
2149    function finalizeDocument(idx, obj, sousform, status, retour){
2150    
2151        //Requête ajax de finalisation des documents
2152        $.ajax({
2153            type: "GET",
2154            url: "../app/finalisation_document.php?idx=" + idx + "&obj=" + obj +
2155                "&status="+status+"&sousform="+sousform+"&retourformulaire="+retour,
2156            dataType: "json",
2157            async: false,
2158            success: function(data){
2159                
2160                $('#'+sousform+obj+' .message.ui-widget.ui-corner-all.ui-state-highlight').remove()
2161                $('#'+sousform+obj+' a.retour').first().before(
2162                    '<div ' +
2163                        'class="message ui-widget ui-corner-all ui-state-highlight">' +
2164                        '<p>' +
2165                            '<span class="ui-icon ui-icon-info"></span>' +
2166                            '<span class="text">' +
2167                            '</span>' +
2168                        '</p>' +
2169                    '</div>'                    
2170                );
2171                
2172                //Si la finalisation a été effectuée avec succès
2173                if ( data.pdf != -1 ){
2174                    
2175                    // On change le lien
2176                    var etat = ((status == 1)?'':'de') + 'finalis';
2177                    
2178                    $('.'+etat+'e').parent().parent().html(
2179                        data.portlet+""
2180                    );
2181                    
2182                    //On affiche le lien de l'action inverse
2183                    $('.edition').parent().attr("href", data.pdf+"");
2184                    
2185                    //Si on le document est finalisé, on cache les actions du portlet
2186                    if ( status == 1 ){
2187                        
2188                        $(".edit-16").parent().parent().remove();
2189                        $(".delete-16").parent().parent().remove();
2190                    }
2191                    else{
2192                        
2193                        var actions = '';
2194                        //Si le lien modifier est autorisé pour cet utilisateur
2195                        if ( typeof(data.actions.modifier)!='undefined' ){
2196                            
2197                            actions += data.actions.modifier;
2198                        }
2199                        
2200                        //Si le lien supprimer est autorisé pour cet utilisateur
2201                        if ( typeof(data.actions.supprimer)!='undefined' ){
2202                            
2203                            actions += data.actions.supprimer;
2204                        }
2205                        
2206                        $('.portlet-list').prepend(actions);
2207                    }
2208                    
2209                    //On affiche un message de valisation
2210                    $('#'+sousform+obj+' .message').addClass("ui-state-valid");
2211                    $('#'+sousform+obj+' .message .text').html(
2212                        "La "+etat+"ation du document s'est effectuée avec succès."
2213                    );
2214                }
2215                // Si une erreur s'est produite
2216                else {
2217                    
2218                    //On affiche un message de validation
2219                    $('#'+sousform+obj+' .message').addClass("ui-state-error");
2220                    $('#'+sousform+obj+' .message .text').html(
2221                        "Une erreur s'est produite lors de la finalisation du document."
2222                    );
2223                }
2224            }
2225        });
2226    }
2227    
2228    /**
2229     * Cette fonction permet d'afficher les options d'un select par rapport
2230     * à un autre champ
2231     *
2232     * @param  int id               Données (identifiant) du champ visé
2233     * @param  string tableName     Nom de la table
2234     * @param  string linkedField   Champ visé
2235     * @param  string formCible     Formulaire visé
2236     */
2237    function filterSelect(id, tableName, linkedField, formCible) {
2238    
2239        //lien vers script php
2240        link = "../app/filterSelect.php?idx=" + id + "&tableName=" + tableName +
2241                "&linkedField=" + linkedField + "&formCible=" + formCible;
2242    
2243        $.ajax({
2244            type: "GET",
2245            url: link,
2246            cache: false,
2247            dataType: "json",
2248            success: function(res){
2249                $('#'+tableName).empty();
2250    
2251                for ( j=0 ; j < res[0].length ; j++ ){
2252    
2253                    $('#'+tableName).append(
2254                        '<option value="'+res[0][j]+'" >'+res[1][j]+'</option>'
2255                    );
2256                    
2257                }
2258    
2259            },
2260            async: false
2261        });
2262    }
2263    
2264    /**
2265     * Redirige vers une page après un temps d'attente
2266     * @param  string   page            lien de la page vers la redirection
2267     * @param  int      milliseconde    temps d'attente avant la redirection
2268     */
2269    function redirection(page, milliseconde) {
2270    
2271        //
2272        setTimeout(window.location = page, milliseconde);
2273    }
2274    
2275    /**
2276     * Retourne ce qu'il y a à afficher dans le formulaire de retour (bouton ajouter ou supprimer et éditer)
2277     */
2278    function getObjId(obj){
2279    
2280        //Récupération de l'id de l'objet
2281        var id=$('#id_retour').val();
2282    
2283        //Retour des données
2284        if ( $('#id_retour').length > 0 ){
2285            setDataFrequent(id, obj);
2286            om_initialize_content();
2287        }
2288    }
2289    
2290    function setDataFrequent(id,obj) {
2291        $.ajax({
2292            type: "GET",
2293            url: '../app/afficher_synthese_obj.view.php?idx='+id+'&obj=' + obj,
2294            cache: false,
2295            success: function(html){
2296                $('.add_'+obj).each(
2297                    function(){
2298                        $(this).remove();
2299                    }
2300                );
2301                $(html).insertBefore('#'+obj).fadeIn(500);
2302                $('#'+obj).val(id);
2303            },
2304            async:false
2305        });
2306    }
2307    
2308    /**
2309     * Redirige vers le script PHP pour mettre à jour les informations
2310     * et met à jour l'interface pour l'utilisateur
2311     * @param  string   id          Identifiant du dossier
2312     * @param  string   fieldname   Nom du champ
2313     * @param  Function callback    Fonction mettant à jour l'interface des données
2314     */
2315    function geolocalisation_treatment(id, fieldname, callback) {
2316    
2317        // Affichage du spinner
2318        $('#'+fieldname).each(
2319            function(){
2320                $(this).children().removeClass();
2321                $(this).children().addClass('message ui-widget ui-corner-all ui-state-highlight ui-state-empty');
2322                $(this).children().children().children(".text").html(msg_loading);
2323            }
2324        );
2325        
2326        // lien vers script PHP faisant l'appel au webservice
2327        link = '../app/geolocalisation_treatment.php?fieldname='+fieldname+'&id='+id+'&callback='+callback;
2328    
2329        // Traitement
2330        $.ajax({
2331            type: "GET",
2332            url: link,
2333            cache: false,
2334            dataType: "json",
2335            success: function(res){
2336                //alert(res['return']['coordX']);
2337                $('#'+fieldname).each(
2338                    function(){
2339                        $(this).children().children().children(".text").text(res['log']['message']);
2340                        $(this).children().removeClass();
2341                        if (res['log']['etat'] == 't') {
2342                            $(this).children().addClass('message ui-widget ui-corner-all ui-state-highlight ui-state-valid');
2343                        } else {
2344                            $(this).children().addClass('message ui-widget ui-corner-all ui-state-highlight ui-state-error');
2345                        }
2346                    }
2347                );
2348    
2349                //
2350                if (typeof(callback) === "function" && res['log']['etat'] == 't') {
2351                    callback(res);
2352                }
2353            },
2354            async:false
2355        });
2356    }
2357    
2358    /**
2359     * Efface le message en haut du formulaire
2360     * @param array res Résultat après le traitement du script PHP
2361     */
2362    function set_geolocalisation_message(res) {
2363        $('#geolocalisation-message').remove();
2364    }
2365    
2366    /**
2367     * Met à jour le champ centroïde à jour
2368     * @param  array   res  Résultat après le traitement du script PHP
2369     */
2370    function set_geolocalisation_centroide(res) {
2371        $('#centroide').text(res['return']['coordX']+", "+res['return']['coordY']);
2372    }
2373    
2374    /**
2375     * Met le champ servitude à jour
2376     * @param  array   res  Résultat après le traitement du script PHP
2377     */
2378    function set_geolocalisation_contrainte(res) {
2379        $('#servitude').text(res['return']['servitude']);
2380    }
2381    
2382    /**
2383     * Redirige vers ElyxWeb
2384     * @param array res Résultat après le traitement du script PHP
2385     */
2386    function redirection_elyxweb(res) {
2387        window.open(res['return']);
2388    }
2389    
2390    /**
2391     * Remplit le formulaire avec l'adresse trouvée ou affiche un message d'erreur
2392     */
2393    function getAdressFromCadastrale(){
2394        
2395        //Récupération des références cadastrales
2396        var referenceCadastrale = '{"refcad":[{';
2397        var i = 0 ;
2398        var j = 1 ;
2399        var delimit = 0;
2400        var parcelleDelimit = 0;
2401        var noReferenceCadastrale = false;
2402        $(".reference_cadastrale_custom_field").each(
2403            function(){
2404                
2405                //On vérifie que le champ n'est pas vide
2406                if ($(this).val()!=""&&$(this).val() != ";"){
2407                    noReferenceCadastrale = true;
2408                }
2409                
2410                //On va à la ligne suivante
2411                if ( $(this).val() == ";" ){
2412                    referenceCadastrale +=(delimit!=0)?'}]':'';
2413                    referenceCadastrale += "}" ;
2414                    i++;
2415                    j = 1;
2416                    delimit = 0;
2417                    parcelleDelimit = 0;
2418                }
2419                //On parcourt la ligne
2420                else {
2421                    switch(true){
2422                        //Quartier
2423                        case (j==1):
2424                            referenceCadastrale += (i!=0)?',':'';
2425                            referenceCadastrale += '"' + i + '"' + ':{"quartier":"'+$(this).val()+'"';
2426                            break;
2427                        //Section
2428                        case (j==2):
2429                            referenceCadastrale += ', "section":"'+$(this).val()+'"';
2430                            break;
2431                        //Parcelle
2432                        case (j==3):
2433                            referenceCadastrale += ', "parcelle":"'+$(this).val()+'"';
2434                            break;
2435                        //Le délimiteur
2436                        case (j%2==0&&j!=2):
2437                            if ( delimit==0 ){
2438                                referenceCadastrale += ', "delimit":[{"'+(delimit++)+'":"'+$(this).val()+'"';
2439                            }
2440                            else {
2441                                referenceCadastrale += ', "'+(delimit++)+'":"'+$(this).val()+'"';
2442                            }
2443                            break;
2444                        //La parcelle après le délimiteur
2445                        case (j%2==1&&j!=1&&j!=3):
2446                            referenceCadastrale += ',"'+(delimit++)+'":"'+$(this).val()+'"';
2447                            break;
2448                    }
2449                    j++;
2450                }
2451            }
2452        );
2453        if ( noReferenceCadastrale == true ){
2454            referenceCadastrale += "}]}";
2455        }
2456        else {
2457            referenceCadastrale = "";
2458        }
2459    
2460        //Lance la tentative de récupération de l'adresse
2461        $.ajax({
2462            type: "POST",
2463            url: '../app/getAdressFromCadastrale.php',
2464            data: $.parseJSON(referenceCadastrale),
2465            cache: false,
2466            dataType: "json",
2467            success: function(data){
2468    
2469                //Si le retour est un objet JSON, on a un résultat
2470                if ( $.isPlainObject(data)){
2471                    
2472                    //On met l'adresse dans les champs
2473                    $("#terrain_adresse_voie_numero").val(data.return.dnuvoi);
2474                    $("#terrain_adresse_voie").val(data.return.prefixe+" "+data.return.nom);
2475                    $("#terrain_adresse_code_postal").val(data.return.arrdt);
2476                    $("#terrain_adresse_localite").val(data.return.localite);
2477                }
2478                //Sinon, on affiche un message d'erreur
2479                else {
2480                    alert(data);
2481                }
2482            },
2483            async: false
2484        });
2485    }

Legend:
Removed from v.536  
changed lines
  Added in v.2201

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26