/*le formulaire de saisie d'une date est parametrable
            Ainsi on pourra utiliser la fonction saisie_date() pour avoir
            des formulaires de saisies         d'une date sans meme repeter les codes.
            Il suffit juste d'appeler la fonction mais seules les variables
            sont différentes.
           
            La syntaxe est comme suit :
            function saisie_date(var_day,var_month,var_year,form_result,default_value,evt)     
            var_day=la variable jour;
            var_month=la variable month;
            var_year=la variable mois;
            form_result=la variable qui contiendra la date complete
                                                c-a-d le resultat; en principe un champ de saisie
            default_value=la date par défaut.De format "mm/dd/yyyy"
            evt=chaine des événements ou autre ex:"disabled","OnClick='....'"
*/
            var min_day=01;
            var max_day=31;
            var month=new Array();
            month[0]='Janvier ';
            month[1]='Fevrier ';
            month[2]='Mars ';
            month[3]='Avril ';
            month[4]='Mai ';
            month[5]='Juin ';
            month[6]='Juillet ';
            month[7]='Ao&ucirc;t ';
            month[8]='Septembre ';
            month[9]='Octobre ';
            month[10]='Novembre ';
            month[11]='D&eacute;cembre ';
            var min_year=2000;
            var max_year=min_year+10;
            var nbJours= 7;
           
            /* Fonction qui donnera comme le mois + l'annee */
            function leMois(i,mois,dateDuJour) {
            var an,res;
                        if (i<dateDuJour.getMonth())
                                    an=dateDuJour.getYear()+1
                        else
                                    an=dateDuJour.getYear();
                        if (an<1900) // sur netscape 4.5 ou ulterieur
                                    an=an+1900
                        res=mois+an;
                        return res;
            }
           
                       
            /*fonction qui donnera la date complete en fonction
                        des variables jours,mois,et annee
                        Le resultat sera affecté à "form_result"
            */
            function verifier_date(form_day,form_month,form_year,form_result)
            {
                        //alert(form_day);
                        //alert(form_month);
                        //alert(form_year);
 
                        var indice_day=form_day.selectedIndex;
                        var day=indice_day+1;
                        var indice_month=form_month.options[form_month.selectedIndex].value;
                        var text_month=form_month.options[form_month.selectedIndex].text;
                        var positionEspace=text_month.indexOf(' ');
                        var year=text_month.substring(positionEspace,text_month.length);
                        var month=indice_month;
                        //alert(month);
                       
                        var indice_year=form_year.selectedIndex;
                        //var year=min_year+indice_year;
                        //var year=min_year;
                        if(month==2)
                        {
                                    // si on est Fevrier
                                    if(year%4==0)
                                    {
                                                if(day>29) form_day.selectedIndex=28;
                                    }
                                    else
                                                if (day>28) form_day.selectedIndex=27;
                        }
                        else
                        {
                                    if(month<7)       var reste=0;
                                    else
                                                if(month>8) var reste=1;
                                               
                                    if((month<7)||(month>8))
                                    {
                                                if(month%2==reste)//dernier jour =30
                                                            if(day>29) form_day.selectedIndex=29;
                                    }
                        }
                        form_year.value=year;
                        form_result.value=form_day.options[form_day.selectedIndex].value+"/"+form_month.options[form_month.selectedIndex].value+"/"+year;
           
                        if ( form_day.name == 'DEPART_DD' && form_month.name == 'DEPART_MM' )
                        {
                                    var d_day          = form_day.selectedIndex+1;
                                    var d_month      = form_month.options[form_month.selectedIndex].value-1;
                                    var d_year         = form_year.value;
                                    var secondDate = Ajout_date(d_day,d_month,d_year,nbJours);
                                   
                                    document.moteur.RETOUR_DD.selectedIndex = secondDate.getDate()-1;
                                    for (var ii = 0;ii<=11;ii++)
                                    {
                                                if (document.moteur.RETOUR_MM.options[ii].value == secondDate.getMonth() + 1 )
                                                            var currentCible = ii;
                                    }
                                   
                                    document.moteur.RETOUR_MM.selectedIndex = currentCible;
                                    //document.moteur.RETOUR_YYYY.value = form_year.value;
                                    //document.moteur.RETOUR_YYYY.value = secondDate.getYear();
                                    an = secondDate.getYear();
                                    if (an < 1900) an = an +1900;
                                    document.moteur.RETOUR_YYYY.value = an;                           
 
                        }
                        else      //retour
                        {
                                    var d_day          = form_day.selectedIndex+1;
                                    var d_month      = form_month.options[form_month.selectedIndex].value-1;
                                    var d_year         = form_year.value;
                        }
           
           
            }//fin fonction verifier
           
            //fonction saisie_date
            function saisie_date(var_day,var_month,var_year,form_result,dateJour,default_value,evt)
            {          
                        var date_default=new Date();
                        var now=new Date();
                        //saisie jour
                        document.write("<select name='"+var_day+"' OnChange='verifier_date(this,form."+var_month+",form."+var_year+","+form_result+")'"+evt+">");
                                    for(i=min_day;i<=max_day;i++)
                                    {
                                                if(date_default.getDate()==i)
                                                            document.write("<option value='" +i+"' selected>"+i);
                                                else
                                                            document.write("<option value='" +i+"'>"+i);                                           
                                    }          
                        document.write("</select>");
                       
                        //saisie mois
                        document.write( "<select name='"+var_month+"' OnChange='verifier_date(form."+var_day+",this,form."+var_year+","+form_result+");'"+evt+">");                 
                                    for(i=now.getMonth();i<month.length;i++)
                                    {
                                                if(date_default.getMonth()==i)                
                                                            document.write("<option value='" +(i+1)+"' selected>"+leMois(i,month[i],now));
                                                else
                                                            document.write("<option value='" +(i+1)+"'>"+leMois(i,month[i],now));
                                    }
                                    for(i=0;i<now.getMonth();i++)
                                    {
                                                document.write("<option value='" +(i+1)+"'>"+leMois(i,month[i],now));
                                    }
                        document.write("</select>");
                       
                        //saisie année
                        annee="";
                        if (date_default.getYear()<1900)
                                    annee=date_default.getYear()+1900;
                        else
                                    annee=date_default.getYear();
                        document.write( "<input type='hidden' name='"+var_year+"' value='"+annee+"'>");
            }//fin sisie_date
           
            //élimination des blancs n'importe où dans le champ
            function Trim(val)
            {
                        var res='';
                        for(i=0;i<val.length;i++)
                        {
                                    if(!(val.charAt(i)==" "))
                                                res=res+val.charAt(i);
                        }
                        return res;
            }
           
            //retourne vraie si la valeur est numerique fausse sinon
            function IsNumeric(val)
            {
                        var test=true;
                        for(i=0;i<val.length;i++)
                        {
                                    temp=val.charAt(i);
                                    if( !((temp>=0) && (temp<=9) ||(temp=='.')) )
                                    {
                                                test=false;
                                                break;
                                    }
                        }
                        return test;                   
            }
           
            //teste un champ s'il est numerique au cours du saisie
            // si on specifie l'evenement OnChange
            function Test_Numeric(form)
            {
                        form.value=Trim(form.value);
                        if(!IsNumeric(form.value))
                        {
                                    alert("La valeur doit être numerique");
                                    form.focus();
                        }
            }
           
            //compte la valeur d'une chaine 'str' dans 'val'
            function Compter_Chaine(str,val)
            {
                        var temp=val;
                        var compteur=0;
                        var indice=0;
                        var pos=0;
                        for(var i=0;i<temp.length;i++)
                        {
                                    pos=temp.indexOf(str,0);
                                    if(pos!=-1)
                                    {
                                                compteur++;
                                                temp=temp.substring(pos+str.length,temp.length);
                                    }
                        }
                        return compteur;
            }
           
            function IsMail(val)
            {
                        var test=false;
                        if( (val.indexOf('@')!=-1) && (val.indexOf('@')!=val.length-1) &&  (val.indexOf('@')!=0))
                        {
                                    if(Compter_Chaine('@',val)==1)
                                                test=true;
                        }
                       
                        return test;
            }
           
            //Ajoute date de n (jours) jours
            function Ajout_date(d_day,d_month,d_year,jours) {
           
                        var DaysOfMonths = Array(); //Nombre de jours par mois
                       
                        for (var i=0;i<=6;i++) {
                                    DaysOfMonths[i] = i%2 ? 30 : 31;
                        }
                        for (var i=7;i<=11;i++) {
                                    DaysOfMonths[i] = i%2 ? 31 : 30;
                        }
                        DaysOfMonths[1] = d_year%4 ? 28 : 29; // For fevrier only
                       
                        var C_Day         = d_day + jours;
                        var C_Month = d_month;
                        var C_Year  = d_year;
                       
                        while ( C_Day > DaysOfMonths[C_Month] ) {
                                    C_Day  = C_Day - DaysOfMonths[C_Month];     
                                    C_Month++;
                                    if (C_Month == 12) break;
                        }
 
                        if (C_Month == 12) {
                                    C_Month = 0;
                                    C_Year++;
                                    C_Day--;
                                    var outputDate = Ajout_date(1,0,C_Year,C_Day);
                        }
                        else var outputDate = new Date(C_Year,C_Month,C_Day);
                       
                        return outputDate;        
            } 