/**
 * Ce script javascript ...
 *
 * @package openmairie_exemple
 * @version SVN : $Id: script.js 714 2011-09-15 22:03:15Z fmichon $
 */

// Initialisation des variables gerant les popup
var pfenetre;
var fenetreouverte = false;

// Chaines de caracteres et messages utilises dans le script dans des
// variables dans l'optique de les traduire
// XXX Mettre en place un systeme de traduction des chaines du javascript
var msg_alert_error_verifnum = "Vous ne devez saisir que des nombres";
var msg_alert_error_fdate = "La date saisie n'est pas valide";
var msg_alert_error_ftime = "L'heure saisie n'est pas valide";
var msg_alert_error_tabs = "Le contenu de l'onglet ne peut pas etre charge. Verifiez votre connexion reseau. Si le probleme persiste contactez votre administrateur.";
var msg_widget_action_retract = "Reduire/Deplier l'affichage du widget";
var msg_widget_action_delete = "Supprimer le widget";
var msg_popup_upload_title = "Upload";
var msg_popup_traces_title = "Traces";
var msg_popup_adresse_postale_title = "Adresse postale";
var msg_popup_genaff_title = "Fichier";
var msg_loading = "<img src=\"../img/loading.gif\" alt=\"Le traitement est en cours. Merci de patienter.\" /> Le traitement est en cours. Merci de patienter.";

// Parametrage du calendrier jquery ui
// XXX Il faut reflechir a un systeme en cas de format de date different
var currDate = new Date ();
var currYear = currDate.getFullYear();
var maxYear = currYear + 20;
var minYear = currYear - 120;
var dateFormat = 'dd/mm/yy';

/**
 * Au chargement de la page
 */
$(function() {
    // Gestion du menu
    menu_bind_accordion();
    // Gestion des formulaires et sous-formulaires avec le widget tabs de
    // jqueryui
    form_bind_tabs();
    // Gestion des sous-formulaires avec le widget accordion de jqueryui
    sousform_bind_accordion();
    // Gestion de tous les elements de contenus
    om_initialize_content();
    // Gestion des widgets sur le tableau de bord avec l'interaction sortable
    // de jqueryui
    widget_bind_move_actions();
    widget_bind_edit_actions();
    widget_bind_add_action();
});

// Cette fonction permet d'associer a un arbre html les fonctions jquery
// necessaires. Elle permet notamment lors du chargement d'une page en ajax
// d'associer le comportement du bouton, la gestion du calendrier et la gestion
// du fieldset.
function om_initialize_content() {
    // Gestion du skin des boutons, liens
    link_bind_button();
    // Gestion du calendrier avec le widget datepicker de jqueryui
    inputdate_bind_datepicker();
    // Gestion des fieldset avec le plugin collaspsible de jquery
    fieldset_bind_collapsible();
}

/**
 * MISC
 */
// Cette fonction permet d'afficher un fichier du dossier tmp passe en
// parametre dans une popup
function traces(fichier) {
    //
    if (fenetreouverte == true) {
        pfenetre.close();
    }
    //
    pfenetre = window.open("../tmp/"+fichier, msg_popup_traces_title, "toolbar=no, scrollbars=yes, status=no, width=600, height=400, top=120, left=120");
    //
    fenetreouverte = true;
}

// Cette fonction permet d'afficher dans une popup ...
function genaff(file) {
    //
    if (fenetreouverte == true) {
        pfenetre.close();
    }
    //
    pfenetre = window.open("../spg/genaff.php?file="+file, msg_popup_genaff_title, "width=600, height=400, top=120, left=120, scrollbars=yes");
    //
    fenetreouverte = true;
}

// Cette fonction permet d'afficher dans une popup ...
function adresse_postale(form, libelle_voie, numero_voie) {
    //
    if (fenetreouverte == true) {
        pfenetre.close();
    }
    //
    pfenetre = window.open("../spg/adresse_postale.php?form="+form+"&libelle_voie="+libelle_voie.replace('\'','\\\'')+"&numero_voie="+numero_voie, msg_popup_adresse_postale_title, "width=400, height=400, top=120, left=120");
    //
    fenetreouverte = true;
}

/**
 * MENU
 */
// Cette fonction permet d'associer au code html du menu la gestion du
// widget accordion de jqueryui
function menu_bind_accordion() {
    //
    $("#menu-list").accordion({
        autoHeight: false,
        collapsible: true,
        active : false
    });
}

/**
 * BUTTON
 */
// Cette fonction permet d'associer au code html representant des boutons ou
// des liens le widget button de jqueryui
function link_bind_button() {
    //
    $("button, input:submit, input:reset, input:button, p.linkjsclosewindow, p.likeabutton").button();
}

/**
 * TAB, FORM, SOUFORM
 */
// Cette fonction permet d'associer au code html des tableaux, formulaires,
// sous formulaires la gestion du widget tabs de jqueryui
function form_bind_tabs() {
    //
    var $tabs = $("#formulaire").tabs({
        load: function(event, ui) {
            //
            om_initialize_content();
            return true;
        },
        select: function(event, ui) {
            // Suppression du contenu de l'onglet precedemment selectionne
            // #ui-tabs-X correspond uniquement aux ids des onglets charges
            // dynamiquement
            selectedTabIndex = $tabs.tabs('option', 'selected');
            $("#ui-tabs-"+selectedTabIndex).empty();
            // Gestion de la recherche
            // Si le nouvel onglet clique est un onglet qui charge dynamiquement
            // son contenu
            var url = $.data(ui.tab, 'load.tabs');
            if (url) {
                // On affiche la recherche
                var recherchedyn = document.getElementById("recherchedyn");
                if (recherchedyn != null) {
                    var recherche = document.getElementById("recherchedyn").value;
                    url += "&recherche="+recherche;
                    $("#recherche_onglet").removeAttr("style");
                    $tabs.tabs("url", ui.index, url);
                }
            } else {
                // On cache la recherche
                $("#recherche_onglet").attr("style", "display:none;")
            }
            return true;
        },
        ajaxOptions: {
            error: function(xhr, status, index, anchor) {
                $(anchor.hash).html(msg_alert_error_tabs);
            }
        }
    });
}

// Cette fonction permet d'associer au code html des sous formulaires la
// gestion du widget accordion de jqueryui
function sousform_bind_accordion() {
    //
    $("#accordion").accordion({
        autoHeight: false,
        collapsible: true,
        active : false
    });
}

//
function ajaxIt(objsf, link) {
    // recuperation du terme recherche
    var recherche = document.getElementById("recherchedyn");
    if (recherche != null) {
        link += "&recherche="+recherche.value;
    }else {
        link += "&recherche=";
    }
    // execution de la requete en POST
    $.ajax({
        type: "GET",
        url: link,
        cache: false,
        success: function(html){
            $("#sousform-"+objsf).empty();
            $("#sousform-"+objsf).append(html);
            om_initialize_content();
        }
    });
}

//
function recherche(link) {
    // recuperation de l'objsf
    var $tabs = $('#formulaire').tabs();
    var selected = $tabs.tabs('option', 'selected');
    $("#formulaire ul a").each(function(i){
        if (i === selected) {
            objsf =  $(this).attr("id");
        }
    }); 
    // recuperation du terme recherche
    link += "&obj="+objsf;
    //
    ajaxIt(objsf, link);
}

//
function affichersform(objsf, link, formulaire) {
    // composition de la chaine data en fonction des elements du formulaire
    var data = ""
    if (formulaire) {
        for (i=0;i<formulaire.elements.length;i++) {
            data+=formulaire.elements[i].name+"="+formulaire.elements[i].value+"&";
        }
    }
    // recuperation du terme recherche
    var recherche = document.getElementById("recherchedyn").value;
    link += "&recherche="+recherche;
    // execution de la requete en POST
    $.ajax({
        type: "POST",
        url: link,
        cache: false,
        data: data,
        success: function(html){
            $("#sousform-"+objsf).empty();
            $("#sousform-"+objsf).append(html);
            om_initialize_content();
        }
    });
}

/**
 * FIELDSET
 */
//
function fieldset_bind_collapsible() {
    //
    $("fieldset.collapsible").collapse();
    $("fieldset.startClosed").collapse( { closed: true } );
}

/**
 * WIDGET
 */
// Cette fonction permet d'associer aux colonnes des actions de deplacement
// des widgets
function widget_bind_move_actions() {
    //
    $( ".column" ).sortable({
        connectWith: ".column",
        handle: ".widget-header-move",
        stop: function(event, ui) {
            var order = ""
            $(".column").each(function(){
                order += $(this).attr('id') + "=";
                order += $(this).sortable("toArray").join("x") + "&";
            })
            $("#info").load("../spg/widgetctl.php?action=update&"+order); 
        }
    });
    //
    $( ".column" ).disableSelection();
}

// Cette fonction permet d'associer a l'icone "ajouter" l'action d'ajouter un
// nouveau widget
function widget_bind_add_action() {
    //
    $(".widget-add-action").click(function() {
        $("#widget_").remove();
        //
        $.get("../spg/widgetctl.php?action=insert", function(data) {
            $(data).prependTo("#column_1").effect("highlight");
            widget_bind_edit_actions("#widget_");
            link_bind_button();
        });
    });
}

// Cette fonction permet d'associer a un widget ou a tous les widgets les
// differentes actions possibles sur ce ou ces derniers : plier/deplier,
// supprimer, ...
function widget_bind_edit_actions(widget_selector) {
    // Initialisation de l'argument de la fonction si besoin
    widget_selector = typeof(widget_selector) != 'undefined' ? widget_selector : "";
    // Ajout de l'icone "reduire"
    $(widget_selector+" .widget-header").prepend( "<span class=\"ui-icon ui-icon-minusthick\" title=\""+msg_widget_action_retract+"\">-/+&nbsp;</span>");
    // Ajout de l'icone "supprimer"
    $(widget_selector+" .widget-header-edit").prepend( "<span class='ui-icon ui-icon-closethick' title=\""+msg_widget_action_delete+"\">x&nbsp;</span>");
    // Bind de l'evenement click sur l'icone "reduire"
    $(widget_selector+" .widget-header .ui-icon-minusthick" ).click(function() {
        // On change l'icone "reduire" par l'icone "deplier" ou l'inverse
        $(this).toggleClass("ui-icon-minusthick").toggleClass("ui-icon-plusthick");
        // On cache le contenu du widget ou on l'affiche
        $(this).parents(".widget:first").find(".widget-content-wrapper").toggle();
    });
    // Bind de l'evenement click sur l'icone "supprimer"
    $(widget_selector+" .widget-header-edit .ui-icon-closethick" ).click(function() {
        // On recupere l'attribut id de l'element parent representant le widget
        widget = $(this).parents(".widget:first").attr('id');
        // Si le widget n'est pas le widget d'ajout
        if (widget != "widget_") {
            // On appelle le script permettant de realiser l'action supprimer dans
            // la base de donnees
            $("#info").load("../spg/widgetctl.php?action=delete&widget="+widget);
        }
        // On supprime le widget de l'affichage
        $(this).parents(".widget:first").hide("highlight", function() {
            $(this).remove();
        });
    });
}

// Cette fonction permet lors de la validation du formulaire d'ajout de widget,
// d'appeler le script PHP permettant de faire le traitement d'ajout dans la
// base puis d'ajouter a l'ecran le nouveau widget
function widget_add_form_post() {
    // serialisation des valeurs du formulaire
    data = "widget_add_form_valid=true&widget="+$("#widget_add_form select").val();
    // execution de la requete en POST pour ajouter le widget
    $.ajax({
        type: "POST",
        url: "../spg/widgetctl.php?action=insert",
        cache: false,
        data: data,
        success: function(html){
            // On cache le widget d'ajout
            $("#widget_").hide("highlight", function() {
                // On supprime le widget d'ajout
                $("#widget_").remove();
                // On recupere la vue du widget que l'on vient d'ajouter
                $.get("../spg/widgetctl.php?action=view&widget="+html, function(data) {
                    // On affiche le widget ajoute dans la premiere colonne
                    $(data).prependTo("#column_1").effect("highlight");
                    // On associe les actions du widget
                    widget_bind_edit_actions("#widget_"+html);
                });
            });
        }
    });
}

/**
 * FORMULAIRE
 */
// Cette fonction permet de verifier si la valeur du champ passe en parametre
// est un nombre valide ou non
function VerifNum(champ) {
    // On teste si la valeur saisit est un nombre valide
    if (isNaN(champ.value)) {
        // On avertit l'utilisateur qu'il y a une erreur dans le champs
        alert(msg_alert_error_verifnum);
        // On vide le champ
        champ.value = "";
        //
        return;
    }
    // Attention ici on supprime le caractere '.' donc si l'utilisateur saisit
    // 82.5 alors la valeur se tranformera en 825
    // XXX Reflechir au but de cette modification
    champ.value = champ.value.replace(".", "");
}

// Cette fonction permet de verifier si la valeur du champ passe en parametre
// est une date valide ou non (le format de sortie est : JJ/MM/AAAA, les
// formats de saisie possibles sont : JJ/MM/AA JJ/MM/AAAA JJMMAA JJMMAAAA)
// XXX Il faut reflechir a un systeme en cas de format de date different
function fdate(champ) {
    // Initialisation des variables
    var flag = 0;
    var jour = "";
    var mois = "";
    var annee = "";
    // Si il n'y a pas de separateur et que la longueur est de 6 ou de 8
    // caracteres, c'est-a-dire correspondant au format JJMMAA ou JJMMAAAA
    if (champ.value.lastIndexOf("/") == -1 && (champ.value.length == 6 || champ.value.length == 8)) {
        // On recupere le jour et le mois JJMM dans deux variables du meme nom
        jour = champ.value.substring(0,2);
        mois = champ.value.substring(2,4);
        // Si le format est JJMMAA, alors on ajoute 20 (JJMM20AA) puis on
        // recupere l'annee dans une variable du meme nom
        if (champ.value.length == 6) {
            annee = "20"+champ.value.substring(4,6);
        }
        // Si le format est JJMMAAAA, alors on recupere l'annee dans une
        // variable du meme nom
        if (champ.value.length == 8) {
            annee = champ.value.substring(4,8);
        }
    }
    // Si il y a au moins un separateur et que la longueur est de 8 ou de 10
    // caracteres, c'est-a-dire correspodnant au format JJ/MM/AA ou JJ/MM/AAAA
    if (champ.value.lastIndexOf("/") != -1 && (champ.value.length == 8 || champ.value.length == 10)) {
        // On recupere le jour et le mois JJ/MM dans deux variables du meme nom
        jour = champ.value.substring(0,2);
        mois = champ.value.substring(3,5);
        // Si le format est JJ/MM/AA, alors on ajoute 20 (JJ/MM/20AA) puis on
        // recupere l'annee dans une variable du meme nom
        if (champ.value.length == 8) {
            annee = "20"+champ.value.substring(6,8);
        }
        // Si le format est JJ/MM/AAAA, alors on recupere l'annee dans une
        // variable du meme nom
        if (champ.value.length == 10) {
            annee = champ.value.substring(6,10);
        }
    }
    // Si une des trois variables recuperees n'est pas un nombre alors il y a
    // une erreur
    if (isNaN(jour) || isNaN(mois) || isNaN(annee)) {
        // On positionne le flag d'erreur a 1
        flag = 1;
    }
    // Si une des trois variables recuperees n'est pas un nombre coherent
    // pour cette variable alors il y a une erreur
    if (jour < '01' || jour > '31' || mois < '01' || mois > '12' || annee < '0000' || annee > '9999') {
        // On positionne le flag d'erreur a 1
        flag = 1;
    }
    // Si il n'y a pas d'erreur alors on remplit le champ avec les valeurs
    // recuperees precedemment sinon on leve une erreur
    if (flag == 0) {
        // On remplit le champ
        champ.value = jour+"/"+mois+"/"+annee;
    } else {
        // On avertit l'utilisateur qu'il y a une erreur dans le champs
        alert(msg_alert_error_fdate);
        // On vide le champ
        champ.value = "";
        //
        return;
    }
}

// Cette fonction permet de verifier si la valeur du champ passe en parametre
// est une heure valide ou non (le format de sortie est : HH:MM:SS, les
// formats de saisie possibles sont : HH:MM:SS HH:MM HH HHMM HHMMSS)
function ftime(champ) {
    //
    var flag = 0;
    var heure = "";
    var minute = "00";
    var seconde = "00";
    // Si il n'y a pas de separateur et que la longueur est de 2 ou de 4 ou de 6
    // caracteres, c'est-a-dire correspondant au format HH ou HHMM ou HHMMSS
    if (champ.value.lastIndexOf(":") == -1 && (champ.value.length == 2 || champ.value.length == 4 || champ.value.length == 6)) {
        // On recupere l'heure dans une variable du meme nom
        heure = champ.value.substring(0,2);
        // Si le format est HHMM, on recupere les minutes dans une variable du
        // meme nom
        if (champ.value.length == 4) {
            minute = champ.value.substring(2,4);
        }
        // Si le format est HHMMSS, on recupere les minutes et les secondes
        // dans deux variables du meme nom
        if (champ.value.length == 6) {
            minute = champ.value.substring(2,4);
            seconde = champ.value.substring(4,6);
        }
    }
    // Si il y a au moins un separateur et que la longueur est de 5 ou de 8
    // caracteres, c'est-a-dire correspondant au format HH:MM ou HH:MM:SS
    if (champ.value.lastIndexOf(":") != -1 && (champ.value.length == 5 || champ.value.length == 8)) {
        // On recupere l'heure dans une variable du meme nom
        heure = champ.value.substring(0,2);
        // Si le format est HH:MM, on recupere les minutes dans une variable du
        // meme nom
        if (champ.value.length == 5) {
            minute = champ.value.substring(3,5);
        }
        // Si le format est HH:MM:SS, on recupere les minutes et les secondes
        // dans deux variables du meme nom
        if (champ.value.length == 8) {
            minute = champ.value.substring(3,5);
            seconde = champ.value.substring(6,8);
        }
    }
    // Si une des trois variables recuperees n'est pas un nombre alors il y a
    // une erreur
    if (isNaN(heure) || isNaN(minute) || isNaN(seconde)) {
        // On positionne le flag d'erreur a 1
        flag = 1;
    }
    // Si une des trois variables recuperees n'est pas un nombre coherent
    // pour cette variable alors il y a une erreur
    if (heure < '00' || heure > '23' || minute < '00' || minute > '59' || seconde < '00' || seconde > '59') {
        // On positionne le flag d'erreur a 1
        flag = 1;
    }
    // Si il n'y a pas d'erreur alors on remplit le champ avec les valeurs
    // recuperees precedemment sinon on leve une erreur
    if (flag == 0) {
        // On remplit le champ
        champ.value = heure+":"+minute+":"+seconde;
    } else {
        // On avertit l'utilisateur qu'il y a une erreur dans le champs
        alert(msg_alert_error_ftime);
        // On vide le champ
        champ.value = "";
        //
        return;
    }
}

// Cette fonction permet d'associer a un champ input la gestion du widget
// datepicker de jqueryui
function inputdate_bind_datepicker() {
    // 
    $(".datepicker").datepicker({
        dateFormat: dateFormat,
        changeMonth: true,
        changeYear: true,
        yearRange: minYear+':'+maxYear,
        showOn: 'button',
        buttonImage: '../img/calendar.png',
        buttonImageOnly: true,
        constrainInput: true
    });
}

////////////////////////////////////////////////////////////////////////////////
// VOIR
////////////////////////////////////////////////////////////////////////////////
//
function voir(champ) {
    //
    if (fenetreouverte == true) {
        pfenetre.close();
    }
    //
    var fichier = document.f1.elements[champ].value;
    //
    if (fichier == "") {
        alert("zone vide");
    }
    // 
    pfenetre = window.open("../spg/voir.php?fic="+fichier,"Visualisation","width=630,height=530,top=50,left=150,scrollbars=yes,resizable = yes");
    //
    fenetreouverte = true;
}
//
function voir2(champ) {
    //
    if (fenetreouverte == true) {
        pfenetre.close();
    }
    //
    var fichier = document.f2.elements[champ].value;
    //
    if (fichier == "") {
        alert("zone vide");
    }
    //
    pfenetre = window.open("../spg/voir.php?fic="+fichier,"Visualisation","width=630,height=530,top=50,left=150,scrollbars=yes,resizable = yes");
    //
    fenetreouverte = true;
}

////////////////////////////////////////////////////////////////////////////////
// LOCALISATION
////////////////////////////////////////////////////////////////////////////////
//
function localisation(champ, chplan, positionx) {
    //
    if (fenetreouverte == true) {
        pfenetre.close();
    }
    //
    var plan = document.f1.elements[chplan].value;
    var x = document.f1.elements[positionx].value;
    var y = document.f1.elements[champ].value;
    //
    pfenetre = window.open("../spg/localisation.php?positiony="+champ+"&positionx="+positionx+"&plan="+plan+"&form=f1"+"&x="+x+"&y="+y,"localisation","toolbar=no,scrollbars=yes,width=800,height=600,top=10,left=10");
    //
    fenetreouverte = true;
}

function localisation2(champ, chplan, positionx) {
    //
    if (fenetreouverte == true) {
        pfenetre.close();
    }
    //
    var plan = document.f2.elements[chplan].value;
    var x = document.f2.elements[positionx].value;
    var y = document.f2.elements[champ].value;
    //
    pfenetre = window.open("../spg/localisation.php?positiony="+champ+"&positionx="+positionx+"&plan="+plan+"&form=f2"+"&x="+x+"&y="+y,"localisation","toolbar=no,scrollbars=yes,width=800,height=600,top=10,left=10");
    //
    fenetreouverte = true;
}

////////////////////////////////////////////////////////////////////////////////
// RVB
////////////////////////////////////////////////////////////////////////////////
//
function rvb(champ) {
    //
    if (fenetreouverte == true) {
        pfenetre.close();
    }
    //
    var valeur = document.f1.elements[champ].value;
    //
    pfenetre = window.open("../spg/rvb.php?retour="+champ+"&valeur="+valeur+"&form=f1","rvb","width=450,height=450,resizable=1");
    //
    fenetreouverte = true;
}

function rvb2(champ) {
    //
    if (fenetreouverte == true) {
        pfenetre.close();
    }
    //
    var valeur = document.f2.elements[champ].value;
    //
    pfenetre = window.open("../spg/rvb.php?retour="+champ+"&valeur="+valeur+"&form=f2","rvb","width=450,height=450,resizable=1");
    //
    fenetreouverte = true;
}

////////////////////////////////////////////////////////////////////////////////
// UPLOAD
////////////////////////////////////////////////////////////////////////////////
//
function vupload(champ) {
    //
    if (fenetreouverte == true) {
        pfenetre.close();
    }
    //
    pfenetre = window.open("../spg/upload.php?origine="+champ+"&form=f1","upload","width=400,height=300,top=120,left=120");
    //
    fenetreouverte = true;
}
//
function vupload2(champ) {
    //
    if (fenetreouverte == true) {
        pfenetre.close();
    }
    //
    pfenetre = window.open("../spg/upload.php?origine="+champ+"&form=f2","upload","width=400,height=300,top=120,left=120");
    //pfenetre = window.open("../spg/upload2.php?origine="+champ,"upload2","width=300,height=100,top=120,left=120");
    //
    fenetreouverte = true;
}

////////////////////////////////////////////////////////////////////////////////
// CORREL
////////////////////////////////////////////////////////////////////////////////
// comboG comboD
function vcorrel(champ, zcorrel2, params) {
    //
    if (fenetreouverte == true) {
        pfenetre.close();
    }
    //
    var rec = document.f1.elements[champ].value;
    var temp = zcorrel2;
    //
    if (temp == "s1") {
        zcorrel2 = "";
        temp = "s1";
    } else {
        zcorrel2 = document.f1.elements[zcorrel2].value;
    }
    //
    pfenetre = window.open("../spg/combo.php?origine="+champ+"&recherche="+rec+params+"&zcorrel2="+zcorrel2+"&form=f1","Correspondance","width=600,height=300,top=120,left=120");
    //
    fenetreouverte = true;
}
// comboG2 et comboD2
function vcorrel2(champ, zcorrel2, params) {
    //
    if (fenetreouverte == true) {
        pfenetre.close();
    }
    //
    var rec = document.f2.elements[champ].value;
    var temp = zcorrel2;
    //
    if (temp == "s1") {
        zcorrel2 = "";
        temp = "s1";
    } else {
        zcorrel2 = document.f2.elements[zcorrel2].value;
    }
    //
    pfenetre = window.open("../spg/combo.php?origine="+champ+"&recherche="+rec+params+"&zcorrel2="+zcorrel2+"&form=f2","Correspondance","width=600,height=300,top=120,left=120");
    //
    fenetreouverte = true;
}
// comboC
function vcorrel3(champ) {
    //
    if (fenetreouverte == true) {
        pfenetre.close();
    }
    //
    var val = document.f1.elements[champ].value;
    //
    pfenetre = window.open("../spg/combobba.php?table="+champ+"&val="+val,champ,"width=500,height=150,top=120,left=120");
    //
    fenetreouverte = true;
}

////////////////////////////////////////////////////////////////////////////////
// CHECKBOX
////////////////////////////////////////////////////////////////////////////////
//
function changevaluecheckbox(object) {
    if (object.value == "Oui") {
        object.value = "";
    } else {
        object.value = "Oui";
    }
}
//
function changevaluecheckboxnum(object) {
    if (object.value == 1) {
        object.value = "0";
    } else {
        object.value = 1;
    }
}

////////////////////////////////////////////////////////////////////////////////
// 
////////////////////////////////////////////////////////////////////////////////
//

//textmultiarea
function selectauto(champ,selection)
{
if(document.f1.elements[champ].value=="")
   document.f1.elements[champ].value=document.f1.elements[selection].value;
else
   document.f1.elements[champ].value=document.f1.elements[champ].value+"\n"+document.f1.elements[selection].value;
   
document.f1.elements[selection].value="";
}
//selectlistemulti
function refresh_ids(champ,champ3) {
 var tids=document.f1.elements[champ3];
 var lids=document.f1.elements[champ];
 tids.value="";
 if (lids.options.length>0) {
    for (i=0;i<lids.options.length;i++) 
      if (lids.options[i].value) tids.value+=lids.options[i].value+",";
    tids.value=tids.value.substring(0,tids.value.length-1);
 }
}
function addlist(champ,champ2,champ3) {
  var linst=document.f1.elements[champ2];
  var lids=document.f1.elements[champ];
  if (linst.selectedIndex>=0) {
    lids.options[lids.options.length]=new Option(linst.options[linst.selectedIndex].text,linst.options[linst.selectedIndex].value);  
    refresh_ids(champ,champ3);
  }
}
function removelist(champ,champ3) {
  var lids=document.f1.elements[champ];
  if (lids.selectedIndex>=0) {
    lids.remove(lids.selectedIndex);  
    refresh_ids(champ,champ3);
  }                    
}
function removealllist(champ,champ3) {
  var lids=document.f1.elements[champ];
  lids.options.length=0;
  refresh_ids(champ,champ3);
  document.f1.elements["_unselect+champ"].disabled=false;
  document.f1.elements["_select+champ"].disabled=false;
}

