function ConvertBR(input) {var output = "";for (var i = 0; i < input.length; i++) {
if ((input.charCodeAt(i) == 13) && (input.charCodeAt(i + 1) == 10)) {i++;output += "<BR>";} else {output += input.charAt(i);   }
}return output;
}

function remove_XS_whitespace(nomform)
{  var  formelement;
  for (formelement = 0; formelement < document.forms[nomform].elements.length; formelement++)
  {var item_name=document.forms[nomform].elements[formelement].name;
    //alert(document.forms[nomform].elements[formelement].name);
   //Pas de check sur liste de selection sinon erreur
   if(!(item_name=='dd'||item_name=='mm'||item_name=='yyyy' || item_name=='moisnais' || item_name=='annais' || item_name=='anref' || item_name=='numref'))
     {//alert(document.forms[nomform].elements[formelement].name);

     var item=document.forms[nomform].elements[formelement];
     // if (!(checkObjects[i].n =='dd' || checkObjects[i].n =='mm' || checkObjects[i].n =='yyyy'))

     var tmp = "";
     var item_length = item.value.length;
     var item_length_minus_1 = item.value.length - 1;//alert('passe '+formelement+' nb element '+document.forms[0].elements.length+' nom element '+item);
     for (index = 0; index < item_length; index++)
          {
          if (item.value.charAt(index) != ' '){tmp += item.value.charAt(index);}
          else{
               if (tmp.length > 0)
                  {
                  if (item.value.charAt(index+1) != ' ' && index != item_length_minus_1)
                      {tmp += item.value.charAt(index);
                      }
                   }
               }
          }
     item.value = tmp;
     }  //end liste select
  }
}

function showImage(imagename, imageurl, errors)
 {document[imagename].src = imageurl.src ;
  if (!haveerrors && errors) haveerrors = errors; // flag haveerrors->1 à la première erreur
 }

function define(n, type, HTMLname, min, max, d)
{
 var p;var i;var x;
 if (!d) d = document;
 if ((p=n.indexOf("?"))>0&&parent.frames.length)
  {d = parent.frames[n.substring(p+1)].document;
   n = n.substring(0,p);
  }
 if (!(x = d[n]) && d.all) x = d.all[n];
 for (i = 0; !x && i < d.forms.length; i++) {x = d.forms[i][n];}
 for (i = 0; !x && d.layers && i < d.layers.length; i++)
     {x = define(n, type, HTMLname, min, max, d.layers[i].document);
 return x;
     }
 eval("V_"+n+" = new formResult(x, type, HTMLname, min, max,n);");
 checkObjects[eval(checkObjects.length)] = eval("V_"+n);
}

function formResult(form, type, HTMLname, min, max,n)
{this.form = form;  this.type = type;  this.HTMLname = HTMLname;
 this.min  = min;   this.max  = max;   this.n = n;
}

function validate(nomform)
{
  remove_XS_whitespace(nomform);
  haveerrors = 0; //alert(checkObjects[i].n);
  //Check les bouttons radio (tous les hidden à la fin du form
  if(nomform=='inserttxt' )
    {
    if(document.forms[nomform].elements[3].checked || document.forms[nomform].elements[5].checked) {showImage("imgsexe", blank, false);}else{showImage("imgsexe", buttonradio, true);errors += 1;}
    }
  if(nomform=='inserttxt_parrai')
    {
    if(document.forms[nomform].elements[1].checked || document.forms[nomform].elements[3].checked) {showImage("imgsexe", blank, false);}else{showImage("imgsexe", buttonradio, true);errors += 1;}
    }
  if(nomform=='updateprof')
    {// if pas * -> change
    if(document.forms[nomform].passe.value.match("---"))
      {showImage("imgpasse", blank, false);}
    else
      { if(document.forms[nomform].passe.value.match(/\W/) )
              {showImage("imgpasse", alphanum, true);errors += 1}
        else  {showImage("imgpasse", blank, false);}
      }
     if(document.forms[nomform].passe.value!=document.forms[nomform].passe2.value)
       { showImage("imgpasse2", confirm, true);errors += 1}
     else{showImage("imgpasse2", blank, false);}
    }
  //Check un champ après l'autre
  if (checkObjects.length > 0)
   {errorObject = "";
    for (i = 0; i < checkObjects.length; i++)  // n'inclu pas submit
       {  //alert(checkObjects[i].type+' val ');//?? checkObjects[i].type=='bouttonradio'
       validateObject = new Object();
       //Ote certaines propriétés pour les boutton radio et liste de selection
       if(!( checkObjects[i].n=='anref'|| checkObjects[i].n=='moisnais'|| checkObjects[i].n=='annais'|| checkObjects[i].n=='radiobutton'|| checkObjects[i].n=='dd' || checkObjects[i].n=='mm' ||checkObjects[i].n=='yyy'|| checkObjects[i].n=='sexe'))
         {
         validateObject.form = checkObjects[i].form;
         validateObject.HTMLname = checkObjects[i].HTMLname;
         validateObject.val = checkObjects[i].form.value;
         validateObject.len = checkObjects[i].form.value.length;
         validateObject.min = checkObjects[i].min;
         validateObject.max = checkObjects[i].max;
         }
       validateObject.type = checkObjects[i].type;
       validateObject.imgn = 'img'+checkObjects[i].n; // nom img = 'img' + nom du champ
       //alert('objet  '+validateObject.imgn+' valeur: '+validateObject.val+'longuer '+validateObject.len);
       //Fonction que pour pwd
       if (validateObject.type == "pwd" )
          { // check for minimum length
                var invalid = " "; // Invalid character is a space
                var minLength = 1; // Minimum length
                var pw1 = document.forms[nomform].passe.value;
                var pw2 = document.forms[nomform].passe2.value;
               //check for length
               if(document.forms[nomform].passe.value.length < minLength){ showImage("imgpasse", required, true);errors += 1}
               //check for spaces
               else if(document.forms[nomform].passe.value.indexOf(invalid) > -1){ showImage("imgpasse", space, true);errors += 1}
               //check for invalide char
               else if(noword=document.forms[nomform].passe.value.match(/\W/) ){ showImage("imgpasse", alphanum, true);errors += 1}
               //check same pass
               else if(pw1 != pw2){ showImage("imgpasse2", confirm, true);errors += 1}
               //checks OK
               else {showImage("imgpasse", blank, false);showImage("imgpasse2", blank, false);}
           }// end check pwd

       if (validateObject.type == "onlynum")
           {
             if (validateObject.len != 3)//only 3 digit
                { showImage(validateObject.imgn, only3digit, true);errors += 1;
                }
           }
       if (validateObject.type == "num" || validateObject.type == "string")
          {
             if ((validateObject.type == "num" && validateObject.len <= 0) || (validateObject.type == "num" && isNaN(validateObject.val)))
                { showImage(validateObject.imgn, digitmin3, true);errors += 1;
                }

             else if (validateObject.min && validateObject.max && (validateObject.len < validateObject.min || validateObject.len > validateObject.max))
                { errors += 1;
                } // Minimum 4 caractères (optimise validateObject.min ->4)
             else if (validateObject.min && !validateObject.max && (validateObject.len < validateObject.min))
                { //showImage(validateObject.imgn, charmin4, true);errors += language['start'] + language['field'] + validateObject.HTMLname + language['require'] + language['min'] + validateObject.min + language['chars'] + "\n";
                showImage(validateObject.imgn, plusdetail, true); errors += 1;
                }
             else if (validateObject.max && !validateObject.min &&(validateObject.len > validateObject.max))
                { errors += 1;
                }// Obligatoire
             else if (!validateObject.min && !validateObject.max && validateObject.len <= 0)
                { showImage(validateObject.imgn, required, true);errors += 1;
                }
              // si num et string OK -> blank.gif
             else{showImage(validateObject.imgn, blank, false);}
          }    // email valide

       else if(validateObject.type == "email" || (validateObject.type == "emailfac" && validateObject.len > 0))
          {    //alert(checkObjects[i].n +'  '+validateObject.len);
           // Checking existense of "@" and ".". ,  Length of must >= 5 and the "." must  not directly precede or follow the "@"
           if ((validateObject.val.indexOf("@") == -1) || (validateObject.val.charAt(0) == ".") || (validateObject.val.charAt(0) == "@") || (validateObject.len < 6) || (validateObject.val.indexOf(".") == -1) || (validateObject.val.charAt(validateObject.val.indexOf("@")+1) == ".") || (validateObject.val.charAt(validateObject.val.indexOf("@")-1) == "."))
              { showImage(validateObject.imgn, email, true);errors += 1;
              }
              // si mail OK -> blank.gif
           else{showImage(validateObject.imgn, blank, false);}
          }
            // pas d'espace entre
       else if(validateObject.type == "space")
          { // au moins 1 car, alphanum sans espace :
           if ( (validateObject.len <= 0) ||  (validateObject.val.match(/\W/)) )
              {showImage(validateObject.imgn, alphanum, true);errors += 1;
              }
           else{showImage(validateObject.imgn, blank, false);}
          }//date obligatoire sur la base du champ dd
       else if(validateObject.type == "dateform")
          { //alert(document.forms[nomform].dd.selectedIndex);
           if(document.forms[nomform].dd.selectedIndex==0 ||document.forms[nomform].mm.selectedIndex==0 ||document.forms[nomform].yyyy.selectedIndex==0)
             {showImage(validateObject.imgn, date1, true); errors += 1;
             }
           else{showImage(validateObject.imgn, blank, false);}
           }
       else if(validateObject.type == "submitbutton")
          { // si plusieurs form défini le bon submit
            objetsubmit =validateObject.imgn;
          }
        } // end for
    } // end if
  //Bilan des checks :
  if (errors)
     { showImage(objetsubmit, submitimage, true);
     //alert('error');
     errors = "";
     returnVal = false;
     }
  else {showImage(objetsubmit, blank, false); returnVal = true;}

} // end validate()
function initcheck() {
//form inserttxt or insert_parrai
define('submit', 'submitbutton', 'soumettre');
define('nom', 'string', 'le nom', 1);
//utilisé aussi pour update -> erreur define('numref', 'onlynum', 'le num de ref', 3);
}
//  ---------------------- COEUR -------------------------------
if(!(pathtojavaimg)) {var pathtojavaimg="http://www.lvpa.ch/lib_js/images/";}
var submitimage= new Image(); submitimage.src = pathtojavaimg+"submit.gif";
var blank = new Image(); blank.src = pathtojavaimg+"blank.gif";
var required = new Image(); required.src = pathtojavaimg+"required.gif";
var space = new Image(); space.src = pathtojavaimg+"space.gif";
var alphanum = new Image(); alphanum.src = pathtojavaimg+"alphanum.gif";
var confirm = new Image(); confirm.src = pathtojavaimg+"confirm.gif";
var charmin4 = new Image(); charmin4.src = pathtojavaimg+"charmin4.gif";
var digit = new Image(); digit.src = pathtojavaimg+"digit.gif";
var email = new Image(); email.src = pathtojavaimg+"email.gif";
var digitmin3 = new Image(); digitmin3.src = pathtojavaimg+"digitmin3.gif";
var only3digit = new Image(); only3digit.src = pathtojavaimg+"only3digit.gif";
var plusdetail = new Image(); plusdetail.src = pathtojavaimg+"plusdetail.gif";
var date1 = new Image(); date1.src = pathtojavaimg+"date1.gif";
var buttonradio = new Image(); buttonradio.src = pathtojavaimg+"buttonradio.gif";
//initialisation
var haveerrors = 0;
var checkObjects     = new Array();
var errors           = "";
var returnVal        = false;
