/*******************************************/
/* change une image et sont info-bulle     */
/* type : -1 = erreur                      */
/*         0 = option                      */
/*         1 = oblig                       */
/*         2 = ok                          */
/* text : "Texte de la nouvelle info-bulle */
/*******************************************/
       function chgImg(img,type,text){
           if(type==-1) img.src = 'img/erreur.gif';
           if(type==0) img.src = 'img/option.gif';
           if(type==1) img.src = 'img/oblig.gif';
           if(type==2) img.src = 'img/ok.gif';
           img.title = text;
       }
       
       
/*************************************************************/
/* Ci-dessous : différentes fonction de vérification         */
/* is_mail(mail) : adresse mail valide                       */
/*  is_url(mail) : adresse Url valide                        */
/*   is_num(num) : nombre sans point ne commencant pas par 0 */
/* is_text(text) : text non null                             */
/*                                                           */
/* -> variables d'entrée = <input type="text" ... />         */
/* Sortie -> true | false                                    */
/*************************************************************/
       function is_mail(mail) {
           var nbrarobase = 0;
           var nbrpoint = 0;
           var goodcar = "@0123456789.-_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
           var i = 0;
           var car;
           var carAfter;
           while( (car = mail.charAt(i)) ){
               if(goodcar.indexOf(car)<0) {
                   return(false);
               }
               if( (car=="@") || (car==".") ) {
                   carAfter = mail.charAt(i+1);
                   if( (carAfter==".") || (carAfter=="-") || (carAfter=="_") || (carAfter=="@") ){
                       return(false);
                   }
                   if(car=="@") nbrarobase++;
                   if((car==".") && (nbrarobase>0)) nbrpoint++;
               }
               i++;
           }
           // a partir d'ici, i représente le nombre de caractères
           if(nbrarobase != 1 || nbrpoint == 0
                              || mail.charAt(0) == "@"
                              || mail.charAt(0) == "."
                              || mail.charAt(0) == "-"
                              || mail.charAt(0) == "_"
                              || mail.charAt((i-1)) == "-"
                              || mail.charAt((i-1)) == "_"
                              || (mail.lastIndexOf(".")>(i-3))
                              || (mail.lastIndexOf("@")>(i-5))) {
               return(false);
           }
           return(true);
       }
/*************************************************************/
       function is_url(url) {
           var goodcar = "0123456789.-_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ%?=#&~/*'";
           var car;
           var carAfter;
           var i = 0;
           while( (car = url.charAt(i)) ) {
               if(goodcar.indexOf(car) >= 0) {
                   if(car == "/" || car == ".") {
                       carAfter = url.charAt(i+1);
                       if((carAfter=="/") || (carAfter=="-")
                                          || (carAfter=="_")
                                          || (carAfter=="?")
                                          || (carAfter=="#")
                                          || (carAfter=="~")
                                          || (carAfter=="*")
                                          || (carAfter==".")
                                          || (carAfter=="=")) {
                           return(false);
                       }
                   }
               } else {
                   return(false);
               }
               i++;
           }
           if(url.charAt(0)=='/'){
               return(false);
           }
           return(true);
       }
/*************************************************************/
       function is_num(num){
           var goodChars = "0123456789";
           var i = 0;
           var car;
           while( (car=num.charAt(i)) ){
               if(goodChars.indexOf(car)<0){
                   return(false);
               }
               i++;
           }
           return(true);
       }
/*************************************************************/
       function is_tel(tel){
           var goodChars = "()+ ./-0123456789";
           var i = 0;
           var car;
           while( (car = tel.charAt(i)) ){
               if( goodChars.indexOf(car)<0 ){
                   return(false);
               }
               i++;
           }
           return(true);
       }
/*************************************************************/
       function is_text(text){
           if( text=='' || text.charAt(0)==" ") return(false);
           var obligChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
           var i = 0;
           var car;
           while( (car = text.charAt(i)) ){
               if(obligChars.indexOf(car)>=0){
                   return(true);
               }
               i++;
           }
           return(false);
       }


/************************************************************************************************/
/* Ci-dessous : fonctions testant les valeurs entrées dans le formulaire                        */
/*                                                                                              */
/*              chk_text(value,img,oblig) : champ textuel (<input> ou <textarea>)               */
/*   chk_num(valueInf,valueSup,img,oblig) : champ numérique, valueInf < valueSup                */
/* chk_contact(mail,tel,img_mail,img_tel) : au moins le mail ou le tel de renseigné             */
/* chk_recrut(valueChkbx,valueInf,ValueSup,img,oblig) : pour les champs "recrutement à prévoir" */
/* ...                                                                                          */
/*                                                                                              */
/* Variables d'entrées :                                                                        */
/*     value -> <input type="text" name="pouet" /> : pouet.value                                */
/*       img -> <img class="aide" name="img_pouet" /> : img_pouet                               */
/*     oblig -> 0:champ optionnel, 1:champ obligatoire                                          */
/*                                                                                              */
/* Sortie -> 1 si le champ devrai ou est mal renseigné                                          */
/*  Effet -> change la source des images et leurs info-bulles                                   */
/************************************************************************************************/
       function chk_text(value,img,oblig){
           if(value==''){
               if(oblig==1){
                   chgImg(img,1,'Champ obligatoire. Veuillez entrer un texte');
                   return(1);
               }else{
                   chgImg(img,0,'Entrer un texte');
                   return(0);
               }
           }else{
               if(is_text(value)){
                   chgImg(img,2,'Champ correctement renseigné');
                   return(0);
               }else{
                   chgImg(img,-1,"'"+value+"' commence par un espace ou ne contient pas de caractère alpha-numérique)");
                   return(1);
               }
           }
       }
/************************************************************************************************/
       function chk_url(value,img,oblig){
           if(value==''){
               if(oblig==1){
                   chgImg(img,1,'Champ obligatoire. Veuillez entrer une URL (sans "http://")');
                   return(1);
               }else{
                   chgImg(img,0,'Entrer un texte');
                   return(0);
               }
           }else{
               if(is_url(value)){
                   chgImg(img,2,'Champ correctement renseigné');
                   return(0);
               }else{
                   chgImg(img,-1,"'"+value+"' n'est pas un une URL valide (pas de 'http://')");
                   return(1);
               }
           }
       }
/************************************************************************************************/
       function chk_tel(value,img,oblig){
           if(value==''){
               if(oblig==1){
                   chgImg(img,1,"'Champ obligatoire. Veuillez entrer un numéro de téléphone");
                   return(1);
               }else{
                   chgImg(img,0,"Entrer un numéro de téléphone");
                   return(0);
               }
           }else{
               if(is_tel(value)){
                   chgImg(img,2,'Champ correctement renseigné');
                   return(0);
               }else{
                   chgImg(img,-1,"'"+value+"' n'est pas un numéro de téléphone valide");
                   return(1);
               }
           }
       }
/************************************************************************************************/
       function chk_num(valueInf,valueSup,img,oblig){
           if(!is_num(valueInf) || !is_num(valueSup)){
               chgImg(img,-1,"'"+valueInf+"' ou '"+valueSup+"' n'est pas un nombre valide.");
               return(1);
           }
           if(valueInf=='' && valueSup==''){
               if(oblig==1){
                   chgImg(img,1,"Champ obligatoire. Veuillez entrer un nombre dans chaques champs");
                   return(1);
               }else{
                   chgImg(img,0,"Entrer un nombre dans chaques champs");
                   return(0);
               }
           }
           if( (valueInf=='' && valueSup!='') || (valueInf!='' && valueSup=='') ){
                   chgImg(img,-1,"Vous n'avez rempli qu'un seul des deux champs numériques");
                   return(1);
           }
           if( Number(valueInf) > Number(valueSup) ){
               chgImg(img,-1,"Le premier champ ("+valueInf+") ne doit pas être supérieur au second ("+valueSup+")");
               return(1);
           }
           chgImg(img,2,'Champs correctement renseigné');
           return(0);
       }
/************************************************************************************************/
       function chk_recrut(Chkbx,valueInf,valueSup,img,oblig){
           if(!Chkbx){
               if(oblig==1){
                   chgImg(img,oblig,"Champ obligatoire. Veuillez cocher l'option et remplir les deux champs numériques suivant");
                   return(1);
               }else{
                   chgImg(img,oblig,"Cocher l'option et remplir les deux champs numériques");
                   return(0);
               }
           }
           if( (valueInf=="") || (valueSup=="") ){
               chgImg(img,-1,"Si vous cochez l'option, les deux champ numérique doivent être remplis");
               return(1);
           }
           if( !is_num(valueInf) ){
               chgImg(img,-1,"Le premier champ numérique ("+valueInf+") n'est pas un nombre valide");
               return(1);
           }
           if( !is_num(valueSup) ){
               chgImg(img,-1,"Le deuxième champ numérique ("+valueSup+") n'est pas un nombre valide");
               return(1);
           }
           chgImg(img,2,"Champs correctement renseignés");
           return(0);
       }
/************************************************************************************************/
       function chk_radio(value,img,oblig){
           if(value==""){
               if(oblig==1){
                   chgImg(img,1,'Champ obligatoire. Veuillez choisir une des deux options');
                   return(1);
               }else{
                   chgImg(img,0,'Choisir une des deux options');
                   return(0);
               }
           }else{
               chgImg(img,2,'Choix effectuer');
               return(0);
           }
       }
/************************************************************************************************/
function chk_list(document,nom,img,oblig){
    var blankDetected = false;
    var V,i,j;

    for(i=1;i<11;i++){
        V = document.getElementById(nom+String(i)).value;
        if(V==''){
            blankDetected = true;
        }else{
            if(blankDetected){
                for(j=i;j<11;j++){
                    document.getElementById(nom+String(j-1)).value = document.getElementById(nom+String(j)).value;
                }
                document.getElementById(nom+"10").value = '';
                blankDetected = false;
            }
        }
    }

    for(i=9;i>1;i=(i-1)){
        V = document.getElementById(nom+String(i)).value;
        if(V!=''){
            document.getElementById("div"+nom+String(i+1)).style.display = 'block';
        }else{
            document.getElementById("div"+nom+String(i+1)).style.display = 'none';
        }
    }

    V = document.getElementById(nom+"1").value;
    return(chk_text(V,img,oblig));
}
/************************************************************************************************/
function chk_handicap(document,value,checked,img){
    var handicap = document.getElementById("handicap");
    var handicaptype = document.getElementById("handicaptype");
    var th1 = document.getElementById("th1");
    var th2 = document.getElementById("th2");
    var th4 = document.getElementById("th4");
    var divHandicap = document.getElementById("divHandicap");
    var nbChk;

    if(value!=0){
        if(value=='oui' || value=='non'){
            handicap.value = value;
        }else{
            if(checked){
                handicaptype.value = (handicaptype.value|value);
            }else{
                handicaptype.value = (handicaptype.value^value);
            }
        }

        if(handicap.value=='non'){
            th1.checked = false;
            th2.checked = false;
            th4.checked = false;
            handicaptype.value = 0;
            chgImg(img,2,'Poste non ouvert à une personne handicapée');
            divHandicap.style.display = 'none';
            return(0);
        }
    }

    if(handicap.value=='oui'){
        nbChk = 0;
        divHandicap.style.display = 'block';
        if(handicaptype.value&th1.value){
            th1.checked = true;
            nbChk++;
        }else{
            th1.checked = false;
        }
        if(handicaptype.value&th2.value){
            th2.checked = true;
            nbChk++;
        }else{
            th2.checked = false;
        }
        if(handicaptype.value&th4.value){
            th4.checked = true;
            nbChk++;
        }else{
            th4.checked = false;
        }

        if(nbChk>0){
            chgImg(img,2,'Poste ouvert à une personne handicapée');
            return(0);
        }else{
            chgImg(img,-1,"Veuillez selectionner un ou plusieurs type d'handicap admis");
            return(1);
        }
    }
    if(handicap.value=='non'){
        chgImg(img,2,'Poste non ouvert à une personne handicapée');
        return(0);
    }

    chgImg(img,1,'Veuillez selectionner une option');
    return(1);
}
/************************************************************************************************/
       function chk_select(valueSelect,valueRadio,img,oblig){
           if(valueSelect!=0){
               return(chk_radio(valueRadio,img,oblig));
           }else{
               if(oblig==1){
                   chgImg(img,oblig,"Champ obligatoire. Veuillez selectionner une option de la liste déroulante et cocher un choix");
                   return(1);
               }else{
                   chgImg(img,oblig,"Selectionner une option de la liste déroulante et cocher un choix");
                   return(0);
               }
           }
       }
/************************************************************************************************/
       function chk_contact(mail,tel,img_mail,img_tel){
           var ret = 0;
           if((mail=='') && (tel=='')){
               chgImg(img_mail,1,"Veuillez entrer une adresse mail");
               chgImg(img_tel,1,"Veuillez entrer un numéro de téléphone");
               return(1);
           }
           if((mail!='') && (!is_mail(mail))){
               chgImg(img_mail,-1,"'"+mail+"' n'est pas une adresse mail valide");
               return(1);
           }
           if((tel!='') && (!is_tel(tel))){
               chgImg(img_tel,-1,"'"+tel+"' n'est pas un numéro de téléphone valide");
               return(1);
           }
           chgImg(img_mail,2,"Au moins un des deux champs est correctement rempli");
           chgImg(img_tel,2,"Au moins un des deux champs est correctement rempli");
           return(0);
       }
/************************************************************************************************/
       function chk_logo(logo,which,img,oblig){
           if(which=="old"){
               chgImg(img,2,'Champ correctement renseigné');
               return(0);
           }

           if(logo==''){
               if(oblig==1){
                   chgImg(img,1,"Champ obligatoire. Veuillez sélectionner un fichier à l'aide du bouton 'Parcourir...'");
                   return(1);
               }else{
                   chgImg(img,0,"Veuillez sélectionner un fichier à l'aide du bouton 'Parcourir...'");
                   return(0);
               }
           }else{
               if(is_text(logo)){
                   chgImg(img,2,'Champ correctement renseigné');
                   return(0);
               }else{
                   chgImg(img,-1,"Veuillez sélectionner un fichier à l'aide du bouton 'Parcourir...'");
                   return(1);
               }
           }
       }



/************************************************/
/* Fonction mère qui vérifie tous le formulaire */
/************************************************/
       function chk_all(document){
           nbErr = 0;

           /* Entreprise */
           nbErr += chk_text(document.myForm.metier.value,document.img_metier,1);
           nbErr += chk_text(document.myForm.entreprise.value,document.img_entreprise,1);
           nbErr += chk_text(document.myForm.lieu.value,document.img_lieu,1);
           nbErr += chk_url(document.myForm.site.value,document.img_site,1);
           nbErr += chk_text(document.myForm.entreprise.value,document.img_entreprise,1);
           nbErr += chk_logo(document.myForm.logo.value,document.myForm.whichlogo.value,document.img_logo,0);
           nbErr += chk_text(document.myForm.presentation.value,document.img_presentation,1);

           /* Le métier */
           nbErr += chk_text(document.myForm.description.value,document.img_description,1);
           nbErr += chk_radio(document.myForm.inspire.value,document.img_inspire,1);
           nbErr += chk_list(document,'T',document.img_T,1);
           nbErr += chk_list(document,'Q',document.img_Q,1);
           nbErr += chk_select(document.myForm.formation.value,document.myForm.formationchoix.value,document.img_formationchoix,1);
           nbErr += chk_text(document.myForm.formationdesc.value,document.img_formationdesc,0);
           nbErr += chk_select(document.myForm.exp.value,document.myForm.expchoix.value,document.img_expchoix,1);
           nbErr += chk_text(document.myForm.expdesc.value,document.img_expdesc,0);
           
           /* L'emploi */
           nbErr += chk_text(document.myForm.emploi.value,document.img_emploi,0);
           nbErr += chk_handicap(document,0,false,document.img_handicap);
           nbErr += chk_num(document.myForm.salairedu.value,document.myForm.salaireau.value,document.img_salaire,0);
           nbErr += chk_text(document.myForm.salairedesc.value,document.img_salairedesc,0);
           nbErr += chk_num(document.myForm.nbsalarie.value,document.myForm.nbensemble.value,document.img_nbsalarie,0);
           nbErr += chk_recrut(document.myForm.quand1.checked,document.myForm.nb11.value,document.myForm.nb21.value,document.img_quand1,0);
           nbErr += chk_recrut(document.myForm.quand2.checked,document.myForm.nb12.value,document.myForm.nb22.value,document.img_quand2,0);
           nbErr += chk_recrut(document.myForm.quand3.checked,document.myForm.nb13.value,document.myForm.nb23.value,document.img_quand3,0);
           nbErr += chk_recrut(document.myForm.quand4.checked,document.myForm.nb14.value,document.myForm.nb24.value,document.img_quand4,0);

           /* En savoir plus */
           nbErr += chk_text(document.myForm.savoirplus.value,document.img_savoirplus,0);
           
           /* Contact de l'entreprise */
           nbErr += chk_text(document.myForm.nom.value,document.img_nom,0);
           nbErr += chk_contact(document.myForm.email.value,document.myForm.tel.value,document.img_email,document.img_tel);
           nbErr += chk_tel(document.myForm.mobile.value,document.img_mobile,0);
           nbErr += chk_tel(document.myForm.fax.value,document.img_fax,0);
           
           /* Diffusion */
           nbErr += chk_radio(document.myForm.contact.value,document.img_contact,1);

           return(nbErr);
       }


       function doVisualiser(document){
           nbErr = chk_all(document);
           
           if(nbErr==0){
               document.myForm.action='visualiser.php';
               document.myForm.submit();
           }else{
               alert(nbErr+" champ(s) du formulaire mal(s) ou pas renseigné(s)... Revérifiez le formulaire");
           }
       }

       function doRechercher(myForm){
           myForm.submit();
       }

       function doAnnullerRechercher(myForm){
           myForm.metierrome.value = "";
           myForm.code.value = "";
       }



