//
//        Fonctions javascript
//
//        Cr?ation
//        05/12/03
//
//        Modification
//        05/2004                RBT
//        ajout fonction CheckSetForm


//        Montre/ou cache un element en fonction de l'ID pass?e en param?tre
function montre_cache(element)
{
        var elem=document.getElementById(element);

        if(elem.style.display=="none") //table ferm?e
        {
                elem.style.display="";
        }
        else //table ouverte
        {
                elem.style.display="none";
        }
}


function simplemontre(element)
{
        var elem=document.getElementById(element);
        elem.style.display="block";
}

function simplecache(element)
{
        var elem=document.getElementById(element);
        elem.style.display="none";
}



//
// Fonction d'ouverture fen?tre d'impression planning ....
//
function open_popup (a_dest, a_width, a_height, a_left, a_top, a_features)
{
	var featur = "";

	if (a_features) 		featur+=a_features;
	else 				featur+='toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=no'

        featur+= ',width='+a_width+',height='+a_height;
		if (a_left)	 featur+= ', left='+a_left;
		if (a_top)	 featur+= ', top='+a_top;
        zoom = window.open (a_dest, 'popup', featur );
}




//        Montre un element et cache tous les autres (tablo) (utilisation dans les onglets de formulaire des tools)
//        change la couleur de l'onglet selectionn?
//        change la couleur du lien de l'onglet selectionn?

// nom : nom des div
// element : div en cours
// tablo : liste des onglets

// cel : nom commun des cellules
// nomcel : nom des cellules contenant les onglets
// colcel1 : couleur onglet par d?faut
// colcel2 : couleur onglet selectionn?

// elemlien : nom commun des liens
// activelien : nom du lien actif
// collien1 : couleur lien par d?faut
// collien2 : couleur lien selectionn?

//function montre(nomdiv, activediv, nombreonglets, cel, activecel, colcel1, colcel2, elemlien, activelien, collien1, collien2)
function montre(nomdiv,cel,elemlien,nombreonglets,onglet,colcel1,colcel2,collien1,collien2)

{

        activediv = nomdiv+onglet;
        activecel = cel+onglet;
        activelien = elemlien+onglet;


        var elem=document.getElementById(activediv);
        // on ferme tous les onglets
        for (i=1;i<=nombreonglets;i++)
        {
                nom=nomdiv+i;
                allelem=document.getElementById(nom);
                //alert(allelem);
                allelem.style.display="none";
        }
        // on ouvre l'onglet en cours
        elem.style.display="";


        //on d?colore tous les onglets
        for (j=1;j<=nombreonglets;j++)
        {
                nomcels=cel+j;
                //alert(nomcels);
                for (i=1;i<=3;i++)
                {
                        allcel = document.getElementById(nomcels+'_'+i);
                        //alert(thisRow);
                        allcel.bgColor = colcel1;
                }
        }
        //coloration de l'onglet en cours
        //(divis? en 3 cellules)
        for (i=1;i<=3;i++)
        {
                thiscel = document.getElementById(activecel+'_'+i);
                //alert(thisRow);
                thiscel.bgColor = colcel2;
        }


        var lien=document.getElementById(activelien);
        //on d?colore tous les liens
        for (i=1;i<=nombreonglets;i++)
        {
                nomlien=elemlien+i;
                alllien=document.getElementById(nomlien);
                alllien.style.color=collien1;
        }
        // on colore le lien en cours
        lien.style.color=collien2;


}

// change la valeur d'un input hidden
function changeInput(input,val)
{
        document.getElementById(input).value=val;

}

function format_select(select,separateur)
{

        select=document.getElementById(select);
        SelectTout(select);
        var texte="";
        var premier=true;
        for (var i=0; i<select.options.length ; i++)
        {
                if(select.options[i].selected)
                        if(premier)
                        {
                                texte=texte+select.options[i].text;
                                premier=false;
                        }
                        else
                                texte=texte+separateur+"&nbsp;"+select.options[i].text;
        }
        return texte;
}

//change la bgcolor d'un element
function swColoFond(element,couleur)
{
        document.getElementById(element).style.background=couleur;
}

//change la couleur de police d'un element
function swColoPolice(element,couleur)
{
        document.getElementById(element).style.color=couleur;
}

//change la police d'un ?l?ment
function swPolice(element,police)
{
        document.getElementById(element).style.font=police;
}

//change la taille d'?criture d'un ?l?ment
function swPoliceSize(element,taille)
{
        document.getElementById(element).style.size=taille;
}

//permet d'ecrire texte dans un element(div,span,td)
function printIn(element,texte)
{
        document.getElementById(element).innerHTML=texte;
}

//permet d'ecrire texte dans un element(input text ou text area)
function printInForm(element,texte)
{
        document.getElementById(element).value=texte;
}

//permet d'ecrire texte dans un element(div,span,td) du parent
function printInParent(element,texte)
{
        window.opener.document.getElementById(element).innerHTML=texte;
}

//permet d'ecrire texte dans un element(input text ou text area) du parent
function printInFormParent(element,texte)
{
	window.opener.document.getElementById(element).value=texte;
}

//modifie la largueur d'un element
function chWidth(element,width)
{
        document.getElementById(element).style.width=width;
}

//modifie la hauteur d'un element
function chHeight(element,height)
{
        document.getElementById(element).style.height=height;
}

//modifie la taille d'un element
function chSize(element,width,height)
{
        chWidth(element,width);
        chHeight(element,height);
}

//change la position d'un element
function chPos(element,x,y)
{
        var elem=document.getElementById(element);
        elem.style.top=y;
        elem.style.left=x;
}



        // Fonction de v?rification de date pass?e dans un formulaire
        // compare la date envoy?e avec une date mini
        //
        //        yea, mon, day                 = date ? tester
        //          yeatst, montst, daytst         = date de ref (yyyy)
        //          test ? effectuer                 = sup ou inf
        //        message                         = message d'erreur
        //
        function TestDate (yea, mon, day, yeatest, montest, daytest, test, message)
        {


                // Initialisations
                var ret = true;

                // date de r?f?rence
                // !!!!!! ATTENTION, les mois commencent ? 0

                var dateref = new Date (yeatest,montest-1,daytest,0,0,0,0);
                //alert(yeatest+" "+montest+" "+daytest);
                date1 = dateref.getTime();

                // date ? tester
                var yeab = document.getElementById(yea).value;
                var monb = document.getElementById(mon).value;
                var dayb = document.getElementById(day).value;
                //alert(yeab+" "+monb+" "+dayb);
                var valdate = new Date (yeab,monb-1,dayb,0,0,0,0);
                date2 = valdate.getTime();

                var ecart = date2-date1;
                //alert (valdate+" "+dateref+" "+date2+" "+date1+" "+ecart);

                // date ? tester doit ?tre strict. sup ? la date limite
                if  (test == "sup" && ecart<=0)
                {
                        alert (message);
                        ret = false;
                }

                // date ? tester doit ?tre strict. inf ? la date limite
                else if (test == "inf" && ecart>=0)
                {

                        alert (message);
                        ret = false;
                }
                // Retour traitement
                return (ret);
        }


        // Fonction de v?rification de champs pass?s par formulaire
        // V?rifier que les champs obligatoires sont bien remplis
        //
        //        champs                = tableau des noms et libelles des champs obligatoires
        //          forme                        = nom du formulaire
        //        message               = d?but du message d'erreur (genre 'vous devez renseigner ') avec un espace ? la fin
        //
        function CheckSetForm (champs,forme,message)
        {

                // Initialisations
                var ret = true;

                // parcours du tableau
                for (var i=0; i < champs.length && ret==true; i++)
                {

                        // test sur le champs

                        // champs texte
                        var typeChamp = "";

                        nomChamp = eval("document."+forme+"."+champs[i][0]);

                        // un champ sp?cial pour test sur champs de type file
                        champVerif = eval("document."+forme+"."+"js_" + champs[i][0]);

                        libelle = eval(champs[i])[1];

                        // CHAMPS INTERDITS
                        var is_forbidden = false;
                        var forbidden = "";
                        if (champs[i].length==3)         is_forbidden = true;
                        if (is_forbidden)                 forbidden = eval(champs[i])[2];

                        if (nomChamp.type)
                        {
                                typeChamp = nomChamp.type;
                        }
                        else if (nomChamp.length > 1)
                        {
                                typeChamp = nomChamp[0].type;
                        }
                        else continue;


                        // ***************************************************
                        // controle sur un champ de type file ou fileUpload
                        // ***************************************************
                        if (typeChamp.search('file')>=0 )
                        {
//alert ("document."+forme+"."+"js_" + champs[i][0]);
                                var libelle = eval(champs[i])[1];
                                //alert(nomChamp.defaultValue + " / " + nomChamp.size);
                                //alert(champVerif);
                                if ( champVerif.value.length == 0 && nomChamp.value.length == 0)
                                {
// 02/05 LTS                                alert (message + "'" + libelle + "' !!!");
// Le formattage du message doit se faire en amont
                                        alert (message + libelle + " !!!");
                                        nomChamp.focus();
                                        ret = false;
                                        //break;
                                }
                        }



                        // ***************************************************
                        // controle sur un champ de type imput text, textarea, file
                        // ***************************************************
// 01/05 LTS                else if (typeChamp=='text' || typeChamp=='textarea')
                        else if (typeChamp=='text' || typeChamp=='textarea'  ||  typeChamp=='password')
                        {
                                var libelle = eval(champs[i])[1];
//                                if (nomChamp.value.length == 0 || (is_forbidden && forbidden==nomChamp.value))
                                if (nomChamp.value.length == 0)
                                {
// 02/05 LTS
//                                        alert (message + "'" + libelle + "' !!!");
// Le formattage du message doit se faire en amont
                                        alert (message + libelle + " !!!");
                                        nomChamp.focus();
                                        ret = false;
                                        //break;
                                }

                        }



                        // *****************************************************
                        // controle sur les champs de type radio, check
                        // *****************************************************

                        // radio
                        else if (typeChamp=='radio')
                        {
                                var selected=false;

                                for (j=0; j<nomChamp.length && selected==false; j++)
                                {
                                        selected = nomChamp[j].checked;
                                }

                                if (!selected)
                                {
// 02/05 LTS                                alert (message + "'" + libelle + "' !!!");
// Le formattage du message doit se faire en amont
                                        alert (message + libelle + " !!!");
                                        //nomChamp.focus();
                                        ret = false;
                                        //break;
                                }
                        }

// 02/05 LTS Ajout obligation sur les checkboxes
                        // checkbox
                        else if (typeChamp == 'checkbox')
                        {
                                if (!nomChamp.checked)
                                {
// 02/05 LTS                                alert (message + "'" + libelle + "' !!!");
// Le formattage du message doit se faire en amont
                                        alert (message + libelle + " !!!");
                                        //nomChamp.focus();
                                        ret = false;
                                        //break;
                                }
                        }

                        // *****************************************************
                        // controle sur les champs de type liste :
                        // *****************************************************

                        // select-one, select-multiple
                        else if (typeChamp.search('select')>=0)
                        {

                                var selected=false;

                                for (j=0; j<nomChamp.length && selected==false; j++)
                                {
                                        selected = nomChamp[j].selected;
                                        if (is_forbidden && forbidden==nomChamp[j].value)         selected = false;
                                        //alert(nomChamp[j].selected);
                                }

                                if (!selected)
                                {
// 02/05 LTS                                alert (message + "'" + libelle + "' !!!");
// Le formattage du message doit se faire en amont
                                        alert (message + libelle + " !!!");
                                        //nomChamp.focus();
                                        ret = false;
                                        //break;
                                }
                        }

                }
                // Retour traitement
                return (ret);
        }



        // Fonction de v?rification de champs pass?s par formulaire
        // V?rifier que aucun champs n'est rempli
        //
        //        champs                = tableau des noms et libelles des champs du formulaire
        //          forme                        = nom du formulaire
        //        message               = d?but du message d'erreur (genre 'vous devez renseigner ') avec un espace ? la fin
        //
        function CheckFormEmpty (champs,forme,message)
        {

                // Initialisations
                var ret = true;

                // parcours du tableau
                for (var i=0; i < champs.length && ret==true; i++)
                {

                        // test sur le champs

                        // champs texte
                        var typeChamp = "";

//                        alert(champs[i][1]);
                        nomChamp = eval("document."+forme+"."+champs[i][0]);
                        // un champ sp?cial pour test sur champs de type file
                        champVerif = eval("document."+forme+"."+"js_" + champs[i][0]);

                        libelle = eval(champs[i])[1];

                        if (nomChamp.type)
                        {
                                typeChamp = nomChamp.type;
                        }
                        else if (nomChamp.length > 1)
                        {
                                typeChamp = nomChamp[0].type;
                        }
                        else continue;
                        //alert(typeChamp);


                        // ***************************************************
                        // controle sur un champ de type file ou fileUpload
                        // ***************************************************
                        if (typeChamp.search('file')>=0 )
                        {
                                var libelle = eval(champs[i])[1];

                                if ( champVerif.value.length > 0 && nomChamp.value.length > 0)
                                {
                                        ret = false;
                                        //break;
                                }
                        }



                        // ***************************************************
                        // controle sur un champ de type imput text, textarea, file
                        // ***************************************************
// 01/05 LTS                else if (typeChamp=='text' || typeChamp=='textarea')
                        else if (typeChamp=='text' || typeChamp=='textarea'  ||  typeChamp=='password')
                        {
                                var libelle = eval(champs[i])[1];

                                if (nomChamp.value.length > 0)
                                {
                                        ret = false;
                                        //break;
                                }
                        }



                        // *****************************************************
                        // controle sur les champs de type liste :
                        // *****************************************************

                        // radio
                        else if (typeChamp=='radio')
                        {
                                var selected=true;

                                for (j=0; j<nomChamp.length && selected==true; j++)
                                {
                                        selected = nomChamp[j].checked;
                                }

                                if (selected)
                                {
                                        ret = false;
                                        //break;
                                }
                        }

                        // select-one, select-multiple
/*
                        else if (typeChamp.search('select')>=0)
                        {
                                var selected=true;

                                for (j=0; j<nomChamp.length && selected==true; j++)
                                {
                                        selected = nomChamp[j].selected;
                                        //alert(nomChamp[j].selected);
                                }

                                if (selected)
                                {
                                        alert (message);
                                        ret = false;
                                        //break;
                                }
                        }
*/
                }
                if (ret==true)                 alert (message);
                // Retour traitement
                return (ret);
        }


        // variante de la fonction ci dessus : les champs se trouvent dans des DIVs qui peuvent ne pas ?tre affich?s
        // (ex : utilisation des onglets dans les formulaires des Tools)
        function CheckSetFormIndiv (champs,forme,message,nomdiv,cel,elemlien,nombreonglets,onglet,colcel1,colcel2,collien1,collien2)
        {

                // Initialisations
                var ret = true;

                // parcours du tableau
                for (var i=0; i < champs.length && ret==true; i++)
                {

                        // test sur le champs

                        // champs texte
                        var typeChamp = "";

                        nomChamp = eval("document."+forme+"."+champs[i][0]);
                        // un champ sp?cial pour test sur champs de type file
                        champVerif = eval("document."+forme+"."+"js_" + champs[i][0]);

                        libelle = eval(champs[i])[1];

                        if (nomChamp.type)
                        {
                                typeChamp = nomChamp.type;
                        }
                        else if (nomChamp.length > 1)
                        {
                                typeChamp = nomChamp[0].type;
                        }
                        else continue;


                        // ***************************************************
                        // controle sur un champ de type file ou fileUpload
                        // ***************************************************
                        if (typeChamp.search('file')>=0 )
                        {
                                var libelle = eval(champs[i])[1];
                                //alert(nomChamp.defaultValue + " / " + nomChamp.size);
                                //alert(champVerif);
                                if ( champVerif.value.length == 0 && nomChamp.value.length == 0)
                                {
                                        alert (message + "'" + libelle + "' !!!");
                                        //nomChamp.focus();
                                        ret = false;
                                        //break;
                                }
                        }



                        // ***************************************************
                        // controle sur un champ de type imput text, textarea, file
                        // ***************************************************
// 01/05 LTS                else if (typeChamp=='text' || typeChamp=='textarea')
                        else if (typeChamp=='text' || typeChamp=='textarea'  ||  typeChamp=='password')
                        {
                                var libelle = eval(champs[i])[1];
//alert (nomChamp.value);
                                if (nomChamp.value.length == 0)
                                {
                                        alert (message + "'" + libelle + "' !!!");
                                        //nomChamp.focus();
                                        ret = false;
                                        //break;
                                }
                        }



                        // *****************************************************
                        // controle sur les champs de type liste :
                        // *****************************************************

                        // radio
                        else if (typeChamp=='radio')
                        {
                                var selected=false;

                                for (j=0; j<nomChamp.length && selected==false; j++)
                                {
                                        selected = nomChamp[j].checked;
                                }

                                if (!selected)
                                {
                                        alert (message + "'" + libelle + "' !!!");
                                        //nomChamp.focus();
                                        ret = false;
                                        //break;
                                }
                        }

                        // select-one, select-multiple
                        else if (typeChamp.search('select')>=0)
                        {
                                var selected=false;

                                for (j=0; j<nomChamp.length && selected==false; j++)
                                {
                                        selected = nomChamp[j].selected;
                                        //alert(nomChamp[j].selected);
                                }

                                if (!selected)
                                {
                                        alert (message + "'" + libelle +  "' !!!");
                                        //nomChamp.focus();
                                        ret = false;
                                        //break;
                                }
                        }
                        

                }
                // Retour traitement
                if (!ret)
                {
					montre(nomdiv,cel,elemlien,nombreonglets,onglet,colcel1,colcel2,collien1,collien2);
					if (typeChamp=='text' || typeChamp=='textarea')        nomChamp.focus();
                }

                return (ret);

        }



        // Fonction de v?rification d'une liste de checkBoxs
        // V?rifier q'au moins une chkbox est coch?e
        //
        //        champ                        = tableau nom checkbox et nom literal
        //          nb                        = nombre de cases
        //          forme                        = nom du formulaire
        //        message               = d?but du message d'erreur (genre 'vous devez saisir au moins ') avec un espace ? la fin
        //
        function CheckSetboxList (champ,forme,message)
        {

                // Initialisations
                var checked = false;

                for (var i=0; i < champ.length && checked == false; i++)
                {

                        var idElem = eval(champ[i])[0];
                        var libelle = champ[i][1];
                        elem = document.getElementById(idElem);
                        checked = elem.checked;
                        //alert(champ.length+"/"+i+"  "+idElem+"/"+checked);
                }


                if (!checked)
                {
                        alert (message + " " +libelle);
                }

                // Retour traitement
                return (checked);
        }



        // Fonction de v?rification d'un mot de passe et de sa confirmation
        function checkConfPass(a_forme, a_pass, a_motp)
        {
                var val = true;

                if (document.getElementById)
                {
                        var motpasse = document.getElementById(a_pass);          // Mot de passe
                        var confirm = document.getElementById(a_motp);          // Confirmation du mot de passe
                }

                else if(document.all)
                {
                        var motpasse = document.all[a_pass];
                        var confirm = document.all[a_motp];
                }


                if (motpasse.value!=confirm.value)
                {
                        alert("Le mot de passe et la confirmation du mot de passe doivent être identiques ...");
                        val = false;
                }

                return val;
        }



        //
        // V?rification de la structure d'un mail
        //
        //        mail                le champ qui contien l'email
        //
        function checkValidEmail (mail_name)
        {
                if (document.getElementById)
                {
                        var mail = document.getElementById(mail_name);          // Mot de passe
                }

                else if(document.all)
                {
                        var mail = document.all[mail_name];
                }


                // Valeur de retour
                var ret = true;

                // Calcul longueur chaine
                var ilgmail = mail.value.length - 1;

                // Lecture des posiions des diff?rents @
                var fidxaro = mail.value.indexOf ("@");                // position premier @
                var lidxaro = mail.value.lastIndexOf ("@");                // postion dernier @

                // Lecture des posiions des diff?rents .
                var fidxpoi = mail.value.indexOf (".");                // position premier .
                var lidxpoi = mail.value.lastIndexOf (".");                // postion dernier .

                // Test qu'aucun espace dans le mail
                if (mail.value.indexOf (" ") >= 0)
                        ret = false;
                // Test qu'un et un seul @ et position > 0 et position <> lg
                else if (fidxaro <= 0  ||  (lidxaro > 0  &&  fidxaro != lidxaro)  ||  fidxaro == ilgmail  ||  lidxaro == ilgmail)
                        ret = false;
               // Test qu'au moins 1 . et dernier (autre que premier, si existant) apr?s @
                else if (fidxpoi <= 0  ||  (lidxpoi > 0  &&  lidxpoi < fidxaro)  ||  fidxpoi == ilgmail  ||  lidxpoi == ilgmail)
                        ret = false;

                if (!ret)         alert ('Email <'+mail.value+'> incorrect !\r\nFormat <mon@email.com> attendu ...');


                // Valeur de retour
                return (ret);
        }



// V220 WMT function verif(libelle, urlext, script)
// V300 WMT function verif (libelle, urlext, newwin, script)
function verif (libelle, urlext, newwin, lnkstep, script)
{
        var lib = document.getElementById(libelle);
        //alert(lib.value);
        var url = document.getElementById(urlext);
        var newwin = document.getElementById(newwin).checked;                        // (V220)
        var lnkstep = document.getElementById(lnkstep).checked;                        // (V300)

        if ( lib.value.length == 0 )
                alert ( "Vous n'avez pas saisi de libell? ..." ) ;
        else if ( url.value.length == 0 )
                alert ( "Vous n'avez pas saisi d'url ext?rieure ..." ) ;
        else
// V220                document.location=script+'?&lib='+lib.value+'&urlext='+url.value ;
                //document.location=script+'?&lib='+lib.value+'&urlext='+url.value+'&newwin='+newwin;
                document.location=script+'?&lib='+lib.value+'&urlext='+url.value+'&newwin='+newwin+'&lnkstep='+lnkstep;
}


// -------------------------------------------------------------------------------------------

// Fonction permettant de modifier le code html associ? ? un objet html avezc un id donn?
// id = id de l'element ? traiter
// new = nouveau code html
//
function changeHtml (id, nouveau)
{
        if (document.getElementById)
                document.getElementById(id).innerHTML=nouveau;

        else if (document.all)
                document.all[id].innerHTML=nouveau;
}





function annul_css(cell)
{
 		 cell.className='';
}




function vide_input(a_nameid, a_message)
{
//	alert('VIDE');
	 inp = document.getElementById(a_nameid);
	 if (inp.value == a_message)				inp.value = "";
}



function retablir_input(a_nameid, a_message)
{
	 inp = document.getElementById(a_nameid);
	 if (inp.value.length==0) 				 inp.value = a_message;
}



function exist_input(forme, prefix)
{
	found = false;
	formeval = eval ("document." + forme);
        for (var j=0; j < formeval.length && !found; j++)
        {
                // L'objet existe: extraire sa valeur pour voir si elle fait partie de la liste
                if (formeval[j].name.indexOf (prefix) >= 0)
                        found = true;
//                else    c.checked = 0;
        }

	return found;
}



// ----------------------------------------------------------------------------------------------

// Fonction d'activation/désactivation d'un objet référencé par son id
//
function disableById (a_id, a_disable)
{
		document.getElementById(a_id).disabled = a_disable;
}

