projects/genea/out/phpui/edit_person.php
1.
<?php
2.
 
3.
/*
4.
 
5.
        Formulaire d'édition pour la table : person.
6.
 
7.
        07/03/2021 10:45
8.
 
9.
        lvardon@laposte.net - 2021
10.
         
11.
        Licence libre
12.
 
13.
*/
14.
 
15.
include_once "dbconnect.php";
16.
include_once "phpdb/class_person.php";
17.
include_once "phpdb/class_person_ext.php";
18.
 
19.
if (isset($_REQUEST['a_id_value']))    $id=$_REQUEST['a_id_value'];
20.
else 
21.
    if (isset($_REQUEST['id']))    $id=$_REQUEST['id'];
22.
    else die("Erreur : _REQUEST['id'] est manquant.");  
23.
                
24.
if (isset($_REQUEST['offset']))
25.
    $offset=$_REQUEST['offset'];
26.
else 
27.
    $offset '';
28.
 
29.
$userUiMessage="";
30.
  
31.
// Class instance
32.
$myperson = new person$db );
33.
 
34.
  
35.
// Traitement des fichiers télédéposés
36.
 
37.
if ( isset($_REQUEST['a_icon_deletebefore']) && file_exists($_REQUEST["a_icon"])) {    
38.
    unlink($_REQUEST['a_icon']);
39.
    $_REQUEST['a_icon'] = '';
40.
}
41.
if(isset($_FILES['a_icon']) && $_FILES['a_icon']['name'] != '' ){
42.
 
43.
      $errors= array();
44.
      $file_name $_FILES['a_icon']['name'];
45.
      $file_size $_FILES['a_icon']['size'];
46.
      $file_tmp $_FILES['a_icon']['tmp_name'];
47.
      $file_type $_FILES['a_icon']['type'];
48.
      $file_ext=strtolower(end(explode('.',$_FILES['a_icon']['name'])));
49.
           
50.
      $extensions= array( 'jpeg''jpg''png' );
51.
      
52.
      if(in_array($file_ext,$extensions)=== false){
53.
         $errors[]="Extensions autorisées : 'jpeg', 'jpg', 'png'.";
54.
      }
55.
      
56.
      if($file_size 2097152 ) {
57.
         $errors[]='Taille maximum fichier : 2097152 octets.';
58.
      }
59.
      
60.
      if(empty($errors)==true) {
61.
        $dest_dir="documents/icons/";
62.
                    
63.
        if ( file_exists($_REQUEST['a_icon'] ) ) {
64.
            $userUiMessage='<div class="editmessageError">Le fichier existe déjà : '.$_REQUEST["a_icon"].'</div>';
65.
        }
66.
        else {
67.
            move_uploaded_file($file_tmp,$dest_dir.$file_name);
68.
            $_REQUEST['a_icon']= $dest_dir.$file_name// Database url doc update        
69.
            $userUiMessage .= '<div class="editmessageInfo">Fichier déposé : '.$dest_dir.$file_name.'</div>';        
70.
        }
71.
      }else{
72.
        $userUiMessage .= '<div class="editmessageError">';    
73.
        $userUiMessage .= 'Erreur upload :';
74.
        foreach ($errors as $verr) {
75.
            $userUiMessage .= $verr.'<br>';
76.
        }        
77.
        $userUiMessage .= '</div>';                  
78.
      }
79.
}   
80.
 
81.
 
82.
$sqlError false;
83.
 
84.
// Sauvegarde 
85.
if(isset($_POST['submitSave'])) 
86.
87.
    if ($id 0) {
88.
        $results $myperson->update
89.
$_REQUEST["a_id"], 
90.
$_REQUEST["a_displayname"], 
91.
$_REQUEST["a_description"], 
92.
$_REQUEST["a_firstname"], 
93.
$_REQUEST["a_lastname"], 
94.
$_REQUEST["a_private"], 
95.
$_REQUEST["a_icon"], 
96.
$_REQUEST["a_sex"], 
97.
$_REQUEST["a_notesearch"], 
98.
$_REQUEST["a_firstnameprefix"], 
99.
$_REQUEST["a_displaynameprefix"], 
100.
$_REQUEST["a_lastnamesuffix"], 
101.
$_REQUEST["a_surname"], 
102.
$_REQUEST["a_datecreated"] ); 
103.
 
104.
        if ($results === false) {           
105.
            $userUiMessage .= '<div class="editmessageError">Erreur sauvegarde (id='.$id.') :'.$myperson->lasterror.'</div>';        
106.
            $sqlError true;
107.
        }
108.
        else 
109.
            $userUiMessage .= '<div class="editmessageInfo">Sauvegarde effectuée (id='.$id.')</div>';        
110.
    }
111.
    else 
112.
    {
113.
        $results $myperson->insert
114.
$_REQUEST["a_displayname"], 
115.
$_REQUEST["a_description"], 
116.
$_REQUEST["a_firstname"], 
117.
$_REQUEST["a_lastname"], 
118.
$_REQUEST["a_private"], 
119.
$_REQUEST["a_icon"], 
120.
$_REQUEST["a_sex"], 
121.
$_REQUEST["a_notesearch"], 
122.
$_REQUEST["a_firstnameprefix"], 
123.
$_REQUEST["a_displaynameprefix"], 
124.
$_REQUEST["a_lastnamesuffix"], 
125.
$_REQUEST["a_surname"], 
126.
$_REQUEST["a_datecreated"]  ); 
127.
        echo '<div class="editmessage">';
128.
        if ($results === false) {
129.
            $userUiMessage .= '<div class="editmessageError">Erreur de création :'.$myperson->lasterror.'</div>';        
130.
            $sqlError true;
131.
        }
132.
        else {
133.
            $id=$myperson->lastInsertId;
134.
            $userUiMessage .= '<div class="editmessageInfo">Création effectuée (id='.$id.')</div>';
135.
        }        
136.
    }
137.
}
138.
 
139.
// Suppression
140.
if(isset($_POST['submitDelete'])) 
141.
142.
    if ($id 0) {
143.
        $results $myperson->delete$id ); 
144.
 
145.
        if ($results === false) {
146.
            $userUiMessage .= '<div class="editmessageError">Erreur Suppression (id='.$id.') :'.$myperson->lasterror.'</div>';
147.
            $sqlError true;
148.
        }
149.
        else {
150.
            $userUiMessage .= '<div class="editmessageInfo">Suppression effectuée (id='.$id.')</div>';
151.
            $id = -1;
152.
        }
153.
        
154.
    }
155.
}
156.
 
157.
// Select reccord by id :
158.
if ($sqlError === false ) {
159.
    
160.
    if ( isset($_POST['submitSave']) || isset($_POST['submitDelete']) ) 
161.
        $results $myperson->select$id );
162.
    else {
163.
        switch ($offset) {
164.
            case '_PREV':
165.
                $results $myperson->selectPrev$id );
166.
                $id $results[0]['a.id'];
167.
                break;
168.
            case '_NEXT':
169.
                $results $myperson->selectNext$id );
170.
                $id $results[0]['a.id'];
171.
                break;
172.
            default:
173.
                $results $myperson->select$id );
174.
                break;
175.
        }                
176.
    }
177.
        
178.
    if ($results === false) {           
179.
        $userUiMessage .= '<div class="editmessageError">Erreur Sql : '.$myperson->lasterror.'</div>';        
180.
        $sqlError true;
181.
    }
182.
    /*if ( empty($results) ) {           
183.
        $userUiMessage .= '<div class="editmessageInfo">Cet enregistrement n\'existe plus. id = '.$id.'  </div>';        
184.
        $sqlError = true;
185.
    }
186.
    */    
187.
}
188.
else {     
189.
        $results[0]["a.id"] = $_REQUEST['a_id'];    
190.
        $results[0]["a.displayname"] = $_REQUEST['a_displayname'];
191.
        $results[0]["a.description"] = $_REQUEST['a_description'];
192.
        $results[0]["a.firstname"] = $_REQUEST['a_firstname'];
193.
        $results[0]["a.lastname"] = $_REQUEST['a_lastname'];
194.
        $results[0]["a.private"] = $_REQUEST['a_private'];
195.
        $results[0]["a.icon"] = $_REQUEST['a_icon'];
196.
        $results[0]["a.sex"] = $_REQUEST['a_sex'];
197.
        $results[0]["a.notesearch"] = $_REQUEST['a_notesearch'];
198.
        $results[0]["a.firstnameprefix"] = $_REQUEST['a_firstnameprefix'];
199.
        $results[0]["a.displaynameprefix"] = $_REQUEST['a_displaynameprefix'];
200.
        $results[0]["a.lastnamesuffix"] = $_REQUEST['a_lastnamesuffix'];
201.
        $results[0]["a.surname"] = $_REQUEST['a_surname'];
202.
        $results[0]["a.datecreated"] = $_REQUEST['a_datecreated'];
203.
        
204.
    }
205.
 
206.
$recordcount $myperson->getCount();
207.
 
208.
echo '<div class="formtable">';
209.
 
210.
$protocol strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https'
211.
                === FALSE 'http' 'https';
212.
$host     $_SERVER['HTTP_HOST'];
213.
$script   $_SERVER['SCRIPT_NAME'];
214.
$params   $_SERVER['QUERY_STRING'];
215.
 
216.
$currentUrl $protocol '://' $host $script '?' $params;
217.
 
218.
// xxx  fix enctype
219.
echo '<form id="editform" class="formedit pure-form pure-form-aligned" method="post" action="'.$currentUrl.'"  enctype="multipart/form-data" >';
220.
 
221.
echo '<fieldset>';
222.
 
223.
echo '<legend style="display:inline-block" class="titleedit"><span title="Liste des individus" class="titleedit">Individu</span> #'.($id==-1?'?':$id).'/'.$recordcount['count'];
224.
 
225.
echo '<div style="font-size:80%; float:right; display:inline-block;">'.$userUiMessage.'</div>';
226.
 
227.
echo '</legend>';
228.
?>
229.
230.
<input type="hidden" readonly name="a.id.value" value="<?php echo $results[0]["a.id"]; ?>" >
231.
 
232.
<div class="pure-control-group"><label for="aligned-name">id</label>
233.
        <input type="{{edithidden}}" readonly name="a.id" value="<?php echo $results[0]["a.id"]; ?>"         
234.
        style="width:12em;" ><span class="pure-form-message-inline"></span>
235.
</div>
236.
        
237.
        <div class="pure-control-group"><label title="displayname" for="aligned-name">displayname</label>
238.
    
239.
            
240.
            
241.
            
242.
                <input type="text"  class="" name="a.displayname" id="a_displayname" 
243.
                value="<?php if ( $results[0]["a.displayname"] !='') echo $results[0]["a.displayname"]; else echo ''?>"
244.
                style="width:12em;" 
245.
                >            
246.
                <div style="display:inline-block; color:red">*</div>
247.
                
248.
            
249.
                        
250.
            <span class="pure-form-message-inline"></span>    
251.
                                
252.
        </div>
253.
        
254.
        <div class="pure-control-group"><label title="description" for="aligned-name">description</label>
255.
    
256.
            
257.
                        
258.
            
259.
                <textarea  text rows="4" cols="40" name="a.description" rows="4" cols="30" ><?php if ( $results[0]["a.description"] !='') echo $results[0]["a.description"]; else echo ''?></textarea>
260.
            
261.
                        
262.
            <span class="pure-form-message-inline"></span>    
263.
                                
264.
        </div>
265.
        
266.
        <div class="pure-control-group"><label title="firstname" for="aligned-name">firstname</label>
267.
    
268.
            
269.
            
270.
            
271.
                <input type="text"  class="" name="a.firstname" id="a_firstname" 
272.
                value="<?php if ( $results[0]["a.firstname"] !='') echo $results[0]["a.firstname"]; else echo ''?>"
273.
                style="width:30em;" 
274.
                >            
275.
                <div style="display:inline-block; color:red">&nbsp;</div>
276.
                
277.
            
278.
                        
279.
            <span class="pure-form-message-inline"></span>    
280.
                                
281.
        </div>
282.
        
283.
        <div class="pure-control-group"><label title="lastname" for="aligned-name">lastname</label>
284.
    
285.
            
286.
            
287.
            
288.
                <input type="text"  class="" name="a.lastname" id="a_lastname" 
289.
                value="<?php if ( $results[0]["a.lastname"] !='') echo $results[0]["a.lastname"]; else echo ''?>"
290.
                style="width:30em;" 
291.
                >            
292.
                <div style="display:inline-block; color:red">&nbsp;</div>
293.
                
294.
            
295.
                        
296.
            <span class="pure-form-message-inline"></span>    
297.
                                
298.
        </div>
299.
        
300.
        <div class="pure-control-group"><label title="private" for="aligned-name">private</label>
301.
    
302.
            
303.
            
304.
            
305.
                <input type="checkbox"  name="a.private" 
306.
                value="1" 
307.
                <?php echo ($results[0]["a.private"]==1?"checked='checked'":""?>
308.
                >
309.
                <div style="display:inline-block; color:red">&nbsp;</div>
310.
            
311.
                        
312.
            <span class="pure-form-message-inline"></span>    
313.
                                
314.
        </div>
315.
        
316.
        <div class="pure-control-group"><label title="icon" for="aligned-name">icon</label>
317.
    
318.
                
319.
            
320.
            
321.
                <input style="display:inline-block" type="file" class="" name="a.icon" id="a_icon" 
322.
                style="width:12em;" 
323.
                >    
324.
                
325.
                <input type="checkbox" name="a_icon_deletebefore" id="a_icon_deletebefore" title="Supprimer le fichier.">
326.
                                                
327.
                <input type="hidden" class="" name="a_icon" id="a_icon" 
328.
                value="<?php echo $results[0]["a.icon"]; ?>"
329.
                >    
330.
                <div style="display:inline-block; vertical-align:middle" >
331.
                    
332.
                    <?php
333.
                    
334.
                    if (file_exists($results[0]["a.icon"])) {
335.
                        
336.
                        echo '<img width="50" height="50" style="width: 50px; height: 50px;" alt="'.$results[0]["a.icon"].'" title="'.$results[0]["a.icon"].'" src="'.$results[0]["a.icon"].' ">';
337.
                    } else {
338.
                        
339.
                        echo '<img width="50" height="50" style="width: 50px; height: 50px;" alt="Image inexistante" title="Image inexistante" src="img/missing.png">';            
340.
                    }            
341.
                        
342.
                    ?>                    
343.
                    
344.
                </div>
345.
            
346.
                        
347.
            <span class="pure-form-message-inline"></span>    
348.
                                
349.
        </div>
350.
        
351.
        <div class="pure-control-group"><label title="sex" for="aligned-name">sex</label>
352.
    
353.
            
354.
        
355.
            
356.
                <select  name="a.sex" >
357.
                    <option  value="" <?php if ($results[0]["a.sex"]=="") echo "selected"?>  >[sélectionner une valeur]</option>
358.
<option  value="F" <?php if ($results[0]["a.sex"]=="F") echo "selected"?>  >Féminin</option>
359.
<option  value="M" <?php if ($results[0]["a.sex"]=="M") echo "selected"?>  >Masculin</option>
360.
<option  value="I" <?php if ($results[0]["a.sex"]=="I") echo "selected"?>  >Indéterminé</option>
361.
                    
362.
                </select>
363.
                <div style="display:inline-block; color:red">&nbsp;</div>
364.
            
365.
                        
366.
            <span class="pure-form-message-inline"></span>    
367.
                                
368.
        </div>
369.
        
370.
        <div class="pure-control-group"><label title="Notes de recherche" for="aligned-name">Notes de recherche</label>
371.
    
372.
            
373.
                        
374.
            
375.
                <textarea  text rows="4" cols="40" name="a.notesearch" rows="4" cols="12" ><?php if ( $results[0]["a.notesearch"] !='') echo $results[0]["a.notesearch"]; else echo ''?></textarea>
376.
            
377.
                        
378.
            <span class="pure-form-message-inline"></span>    
379.
                                
380.
        </div>
381.
        
382.
        <div class="pure-control-group"><label title="firstnameprefix" for="aligned-name">firstnameprefix</label>
383.
    
384.
            
385.
            
386.
            
387.
                <input type="text"  class="" name="a.firstnameprefix" id="a_firstnameprefix" 
388.
                value="<?php if ( $results[0]["a.firstnameprefix"] !='') echo $results[0]["a.firstnameprefix"]; else echo ''?>"
389.
                style="width:8em;" 
390.
                >            
391.
                <div style="display:inline-block; color:red">&nbsp;</div>
392.
                
393.
            
394.
                        
395.
            <span class="pure-form-message-inline"></span>    
396.
                                
397.
        </div>
398.
        
399.
        <div class="pure-control-group"><label title="displaynameprefix" for="aligned-name">displaynameprefix</label>
400.
    
401.
            
402.
            
403.
            
404.
                <input type="text"  class="" name="a.displaynameprefix" id="a_displaynameprefix" 
405.
                value="<?php if ( $results[0]["a.displaynameprefix"] !='') echo $results[0]["a.displaynameprefix"]; else echo ''?>"
406.
                style="width:12em;" 
407.
                >            
408.
                <div style="display:inline-block; color:red">&nbsp;</div>
409.
                
410.
            
411.
                        
412.
            <span class="pure-form-message-inline"></span>    
413.
                                
414.
        </div>
415.
        
416.
        <div class="pure-control-group"><label title="lastnamesuffix" for="aligned-name">lastnamesuffix</label>
417.
    
418.
            
419.
            
420.
            
421.
                <input type="text"  class="" name="a.lastnamesuffix" id="a_lastnamesuffix" 
422.
                value="<?php if ( $results[0]["a.lastnamesuffix"] !='') echo $results[0]["a.lastnamesuffix"]; else echo ''?>"
423.
                style="width:12em;" 
424.
                >            
425.
                <div style="display:inline-block; color:red">&nbsp;</div>
426.
                
427.
            
428.
                        
429.
            <span class="pure-form-message-inline"></span>    
430.
                                
431.
        </div>
432.
        
433.
        <div class="pure-control-group"><label title="surname" for="aligned-name">surname</label>
434.
    
435.
            
436.
            
437.
            
438.
                <input type="text"  class="" name="a.surname" id="a_surname" 
439.
                value="<?php if ( $results[0]["a.surname"] !='') echo $results[0]["a.surname"]; else echo ''?>"
440.
                style="width:16em;" 
441.
                >            
442.
                <div style="display:inline-block; color:red">&nbsp;</div>
443.
                
444.
            
445.
                        
446.
            <span class="pure-form-message-inline"></span>    
447.
                                
448.
        </div>
449.
        
450.
        <div class="pure-control-group"><label title="datecreated" for="aligned-name">datecreated</label>
451.
    
452.
            
453.
                        
454.
            <span class="pure-form-message-inline"></span>    
455.
                                
456.
        </div>
457.
 
458.
<?
459.
 
460.
echo ' <div class="pure-controls">'."\n";
461.
echo '<button type="submit" name = "submitSave" class="formbutton xpure-button xpure-button-primary">Enregistrer</button>'."\n";
462.
$confirmBox "onclick=\"return confirm('Etes vous sûr de vouloir supprimer cet article ?')\"";
463.
if ($id 0)
464.
    echo '<button type="submit" name = "submitDelete" class="formbutton xpure-button xpure-button-primary" '.$confirmBox.'  >Supprimer</button>'."\n";
465.
 
466.
 
467.
parse_str($_SERVER['QUERY_STRING'], $query_string);
468.
 
469.
if ($id != -and $id $recordcount['minid'] ) {     
470.
    $urlPrev='';
471.
    $query_string['id'] = $id;
472.
    $query_string['offset'] = '_PREV';
473.
    $paramPrev http_build_query($query_string);
474.
    $urlPrev $protocol '://' $host $script '?' $paramPrev;
475.
    echo "<a class='formbutton' href='$urlPrev'>Précédent</a>\n";
476.
}
477.
else echo "<a class='formbutton' style='color:gray; pointer-events: none' href=''>Précédent</a>\n";
478.
 
479.
if ($id != -and $id $recordcount['maxid']  ) { 
480.
    $urlNext='';
481.
    $query_string['id'] = $id;
482.
    $query_string['offset'] = '_NEXT';
483.
    $paramNext http_build_query($query_string);
484.
    $urlNext $protocol '://' $host $script '?' $paramNext;
485.
    echo "<a class='formbutton' href='$urlNext'>Suivant</a>\n";
486.
}
487.
else echo "<a class='formbutton' style='color:gray; pointer-events: none' href=''>Suivant</a>\n";
488.
 
489.
    
490.
echo '</div>'."\n";
491.
echo '</fieldset>'."\n";
492.
echo '</form>'."\n";
493.
 
494.
echo '</div>';
495.
 
496.
?>
497.
498.
 
499.
<script type="text/javascript">
500.
    
501.
    $(document).ready(function(){
502.
        
503.
        $(".selectlist").on("click", function() {            
504.
            startModal('selectplaceholder');                                    
505.
            //alert("Id du champ à remplir au retour : [" + $(this).attr('valuebackval')  + "]");
506.
            var url = "phpui/select_" + $(this).attr('valuetable') + ".php?valuebackfield=" + $(this).attr('valuebackfield') + '&valuebackval=' + $(this).attr('valuebackval');
507.
            
508.
            $('#selectplaceholder').load(url, function() {
509.
                $('#selectplaceholder').css("background-color", "white");
510.
                $('#selectplaceholder').css("border", "1px solid #034668");
511.
                //box-shadow: 5px 10px 12px -4px rgba(0,0,0,0.75);
512.
                //-webkit-box-shadow: 5px 10px 12px -4px rgba(0,0,0,0.75);
513.
                //-moz-box-shadow: 5px 10px 12px -4px rgba(0,0,0,0.75);
514.
                $('#selectplaceholder').css("box-shadow", "5px 10px 12px -4px rgba(0,0,0,0.75)");                
515.
                $('#selectplaceholder').css("border-radius", "7px");
516.
            });            
517.
            
518.
        });
519.
    });
520.
 
521.
    function startModal(id) {
522.
        $("body").prepend(
523.
            "<div id='PopupMask' style='position:fixed;width:100%;height:100%;z-index:10;background-color:gray;'></div>"+
524.
            "<div style='position: fixed;top: 50%;left: 50%; transform: translate(-50%, -50%);' "+
525.
                "id='selectplaceholder'><img  width='180' height='60' src='img/loading.gif'></div>");
526.
        $("#PopupMask").css('opacity', 0.5);  
527.
        $("#"+id).data('saveZindex', $("#"+id).css( "z-index"));
528.
        $("#"+id).data('savePosition', $("#"+id).css( "position"));
529.
        $("#"+id).css( "z-index" , 11 );
530.
        $("#"+id).css( "position" , "fixed" );
531.
    }
532.
 
533.
</script>
534.
 
535.
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
536.
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
537.
 
538.
<script>
539.
 
540.
    // Disable autofill
541.
    $(".datepicker").prop("autocomplete", "off");
542.
 
543.
    $( function() {
544.
        
545.
        $.datepicker.regional['fr'] = {
546.
                yearRange: '1:2099',
547.
                changeMonth: true,
548.
                changeYear: true,
549.
                closeText: 'Fermer',
550.
                prevText: '&#x3c;Préc',
551.
                nextText: 'Suiv&#x3e;',
552.
                currentText: 'Aujourd\'hui',
553.
                monthNames: ['Janvier','Fevrier','Mars','Avril','Mai','Juin',
554.
                'Juillet','Aout','Septembre','Octobre','Novembre','Decembre'],
555.
                monthNamesShort: ['Jan','Fev','Mar','Avr','Mai','Jun',
556.
                'Jul','Aou','Sep','Oct','Nov','Dec'],
557.
                dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
558.
                dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],
559.
                dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],
560.
                weekHeader: 'Sm',
561.
                dateFormat: 'dd/mm/yy',
562.
                firstDay: 1,
563.
                /*isRTL: false,*/
564.
                /*showMonthAfterYear: false,*/
565.
                /*yearSuffix: '',*/
566.
                /*minDate: 0,*/
567.
                /*maxDate: '+12M +0D',*/
568.
                numberOfMonths: 1,
569.
                showButtonPanel: true
570.
            };
571.
                        
572.
        $.datepicker.setDefaults($.datepicker.regional['fr']);
573.
                
574.
        $(".datepicker" ).datepicker().on("show", function() {
575.
                            var formDate = $(this).val()                            
576.
                            $(this).val(formDate).datepicker('update');
577.
                        });
578.
                                
579.
    } );
580.
 
581.
    $("#over").remove();
582.
    
583.
    // Page quit confirmation
584.
    var form = $('#editform'),
585.
      original = form.serialize()
586.
 
587.
    form.submit(function(){
588.
        $('body').append('<div id="over" style="background:rgba(0,0,0, 0.05); position:fixed; top:0; left:0; width:100%; height:100%;"> <img style="position:absolute; top:0; left:0; right:0; bottom:0; margin:auto;"  width="180" height="60" src="img/loading.gif"> </div> ');
589.
        window.onbeforeunload = null
590.
    })
591.
 
592.
    window.onbeforeunload = function(){
593.
      if (form.serialize() != original)
594.
        return "Confirmez-vous l'abandon de vos modifications ?"
595.
    }
596.
 
597.
</script>
598.
  
599.