


function validForm(form)
{
    
    elements=form.elements;
    
    list_element=new Array();
    status=true;
    name_form=form.name;


    for(i=0;i<elements.length;i++){
	
	if(elements[i].name.substr(0,5) == 'form_'){
	    //alert(elements[i].name.substr(5,elements[i].name.length));
	    
	    list_element[elements[i].name.substr(5,elements[i].name.length)]=elements[i].value;
	    if(document.getElementById('err_'+elements[i].value)){
		
		document.getElementById('err_'+elements[i].value).innerHTML='&nbsp;';
	    }
	    
	    
	}
    }
    for (var name in list_element){
	object=form[name];
	if(object == undefined){
	   // cas de valeur multiple
	   
	   object=form[name+'[]'];
	

	}
	id=list_element[name];
	//alert(name);
	//alert(status);
	
	if(form['obligatoire_'+list_element[name]]){
	    //alert(object);
	    
	    status_obligatoire=obligatoire(object,id);
	    if(status_obligatoire == 'false'){
		status_obligatoire=false;
	    }
	    
	    

	    status= status_obligatoire && status;
	    if(status_obligatoire){
		//on verifie le validator
		
		if(form['validate_'+list_element[name]]){
		    name_validator=form['validate_'+list_element[name]].value;
		    
		    
		    text=name_validator+"(document."+name_form+"['"+name+"'],'"+id+"')";
		    //alert(text);
		    
		    
		    status_obligatoire=eval(text);
		    if(status_obligatoire == 'false'){
			status_obligatoire=false;
		    }
		    
		    
		    
		    //alert(status);
		    
		    
		    status=status_obligatoire && status;
		    

		    
		    


		    
		}
	    }
	    
		

	}
	else{
	    if(form['validate_'+list_element[name]]){
		name_validator=form['validate_'+list_element[name]].value;
		text=name_validator+"(document."+name_form+"['"+name+"'],'"+id+"')";
		//alert(text);
		status_obligatoire=eval(text);
		if(status_obligatoire=='false'){
		    status_obligatoire=false;
		}
		

		status= status_obligatoire && status;
		//if(!status_obligatoire){
		    //alert(name_validator + ' ' + name);
		//}
		    
	    }
	}
	
	
	    
	    
	    
	    

	
    }
    
   
    
    if(status == 'false'){
	//ie bug
	return false;
	
    }
    
   

    if(status){
	//alert('on soumet');
	
	form.submit();
    }
    
    else{
	return false;
    } 


    
    
}






function show_error(id,value)
{
     try{
		  
    	document.getElementById('err_'+id).innerHTML=value;
       }
      catch(ex){
	alert(value);
      }
	
	
    		
}



function getValue(object)
{

    //alert( object);
    var value;
    
    try{
	
    }
    catch(ex){
	alert("exeption");
	
	alert(e);
	
    }
}



function obligatoire(object,id)
{
    
    //cas des checked box
    //alert(object.value);
    if(object.value == undefined){
	
	if(object.length != undefined){
	
	    var status=false;
	    //alert('on passe par la');    
	    for(i=0;i<object.length;i++){
		
		if(object[i].type!=undefined && (object[i].type=='radio' || object[i].type=='checkbox')){
		    
		    status=status || object[i].checked;
		}
		
		
		    
	    }
	    if(!status){
		show_error(id,'Le champ est obligatoire');
		
		
	    
	    }
	   
	    
	    return status;
	    
	    
	}
	return true;
	
	
		
    }
    else{
	
	
    
	if(object.value.length==0){
	    //alert('obligatoire');
	    show_error(id,'Le champ est obligatoire');
	    return false;
	
	}
	return true;
    }
    
    
}

function test(object,id)
{
    alert(object);
    alert(id);
    
    return true;
    

}





function isNumber(objet,id)
{

    

    if(objet.value.length!=0){
	    if(isNaN(objet.value)){
		show_error(id,'Le champ doit être un nombre.');
		objet.select();
		return false;
	    }
    }
    return true;

    
}


function isVoie(objet,id){

    if(objet.value.length!=0){
	e = new RegExp("^[1-9]+ [a-zA-Z]+$");
	if (!e.test(objet.value)){ 
	    show_error(id,'Le champ est incorrect. Vérifiez que le numéro de voie est un entier et que vous avez selectionnez un type de voie');
	    return false;
	}
	return true;
    }
    return true;
    

}


function isEntier(objet,id){


    if(objet.value.length!=0){
	if((isNaN(objet.value))||(eval(objet.value) != parseInt(objet.value))){
	    show_error(id,'Le champ doit être un nombre entier.');
	    objet.select();
	    return false;
	}
	if(eval(objet.value) < 0){
	    show_error(id,'Le champ doit être positif.');
	    objet.select();
	    return false;
	}
	return true;
    }
    return true;
	
}

function isId(objet,id)
{		
    
    if(objet.value.length!=0){
	e = new RegExp("^[a-zA-Z][0-9a-zA-Z_:\.\-]+$");
	if (!e.test(objet.value)){ 
	    show_error(id,'Le champ est incorrect.');
	    return false;
	}
 	return true;
    }
    return true;
}

function isEmail(objet,id)
{		
    
    
    
    
    if(objet.value.length!=0){
	
	e = new RegExp("^[0-9a-zA-Z_\.\-]+@[0-9a-zA-Z\.\-]+\.[0-9a-zA-Z][0-9a-zA-Z]+$");
	if (!e.test(objet.value)){ // On teste l'expression régulière pour valider la forme du mail
	    show_error(id,'L\'adresse mail  est incorrecte.');
	    return false;
	} 
	return true;
    }	
    return true;    
}

function isTelephone(objet,id)
{
    
    if(objet.value.length!=0){
	if((isNaN(objet.value))||(objet.value.length != 10)){
	    show_error(id,'Le champ  n\'est pas valide.');
	    objet.select();
	    return false;
	}
	return true;
    }
    return true; 
      
}

function isMsisdn(objet,id)
{
    
    if(objet.value.length!=0){
	if((isNaN(objet.value))||(objet.value.length != 10)){
	    show_error(id,'Le champ  n\'est pas valide.');
	    objet.select();
	    return false;
	}
	if(objet.value.substring(0,2) != "06"){
	    show_error(id,'Le champ  doit commencer par 06.');
	    objet.select();
	    return false;
	    
	}
	return true;
    }
    return true; 
    
}

function isDate(objet, label)
{
    
  if ((objet.value == "")||(objet.value == "jj/mm/aaaa")){ // si la variable est vide on retourne vrai
      return true;
  }
  var retour=isDateGood(objet.value);
  if(!retour){
      show_error(id,'La date est incorrecte, elle doit être de la forme JJ/MM/AAAA.'); 
      objet.select();
      return false;
  }
  objet.value=retour;
  return true;
}


function isDateGood(d){
  // Cette fonction permet de vérifier la validité d'une date au format jj/mm/aa ou jj/mm/aaaa
  
  if (d == "") // si la variable est vide on retourne faux
    return false;
  
  e = new RegExp("^[0-9]{1,2}\/[0-9]{1,2}\/([0-9]{2}|[0-9]{4})$");
  
  if (!e.test(d)) // On teste l'expression régulière pour valider la forme de la date
    return false; // Si pas bon, retourne faux

  // On sépare la date en 3 variables pour vérification, parseInt() converti du texte en entier
  j = parseInt(d.split("/")[0], 10); // jour
  m = parseInt(d.split("/")[1], 10); // mois
  a = parseInt(d.split("/")[2], 10); // annee
  // Si l'année n'est composée que de 2 chiffres on complète automatiquement
  if (a < 1000) {
  	return false;
    if (a < 89)  a+=2000; // Si a < 89 alors on ajoute 2000 sinon on ajoute 1900
    else a+=1900;
  }

  // Définition du dernier jour de février
  // Année bissextile si annnée divisible par 4 et que ce n'est pas un siècle, ou bien si divisible par 400
  if (a%4 == 0 && a%100 !=0 || a%400 == 0) fev = 29;
  else fev = 28;

  // Nombre de jours pour chaque mois
  nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31);

  // Enfin, retourne la date reformaté si le jour est bien entre 1 et le bon nombre de jours, idem pour les mois, sinon retourn faux
  if(!( m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] )){return false;}
  var mois=m;
  var jour=j;
  if (m < 10){mois = '0' + m;}
  if (j < 10){jour = '0' + j;}
  return jour + '/' + mois + '/' + a;
}

function isSirenSiret (siren,id){
    var isValide=false;
    if(siren.value.length == 0){
	return true;
    }
    if(siren.value.length == 14){
	isValide = validateSiret(siren.value);
    }
    if(siren.value.length == 9){
	isValide = validateSiren(siren.value);
    }
    if(!isValide){
	show_error(id,"Numéro de Siren/siret invalide.");
	siren.select();
	return false;
    }
    return true;
}

function validateSiren (siren){
    if((isNaN(siren))||(siren == "000000000")){
	return false;
    }
    var key=0;
    for(var i=0;i < siren.length;i++){
	var v = eval(siren.substr(i,1));
	if (i % 2){
	    v = v * 2;
	}
	if ( v >= 10){
	    v = v - 9;
	}
	key = key + v;
    }
    return ((key % 10) == 0);		
}


function isFax(objet,id)
{
  //alert( 'controle isFax :' + objet.value);  
  if(objet.value.length!=0){
	if((isNaN(objet.value))||(objet.value.length != 10)){
	    show_error(id,'Le numéro de Fax n\'est pas valide.');
	    objet.select();
	    return false;
	}
	if((objet.value.substring(0,2) != "01") &&
	   (objet.value.substring(0,2) != "02") &&
	   (objet.value.substring(0,2) != "03") &&
	   (objet.value.substring(0,2) != "04") &&
	   (objet.value.substring(0,2) != "05") &&
	   (objet.value.substring(0,2) != "08")) {
	    show_error(id,'Le numéro de Fax n\'est pas valide.');
	    objet.select();
	    return false;
	    
	}	
	return true;
    }
    return true; 
      
}

function isSiren(object,id) {
  if(object.value.length == 0){
    return true;
  }
	if(object.value.length>0){
	  if ((object.value.length<9) || (object.value.length>9)){
			show_error(id,'Numéro de Siren invalide.');
	     return false;
	  }
		if((isNaN(object.value))||(object.value == "000000000")){
			return false;
		}
		return true;
	}
	return true;
}


function isCompteClient(object,id){
    if(object.value.length==0){
	return true;
    }	
    var expr1 = new RegExp("^(2\.[0-9]{2}|3\.[0-9]{3}|4\.[0-9]{4}|[5-9]\.[0-9]{5})(\.[0-9][0-9](\.[0-9][0-9])?)?");
    if (!expr1.test(object.value)){
	
	show_error(id,'Le compte client n\'est pas correct ');
	return false;
    }
    return true;
}

function isCentreFacturation(object,id){
    if(object.value.length==0){
	return true;
    }	
    var expr1 = new RegExp("^(2\.[0-9]{2}|3\.[0-9]{3}|4\.[0-9]{4}|[5-9]\.[0-9]{5})");
    if (!expr1.test(object.value)){
	
	show_error(id,'Le centre de facturation n\'est pas correct ');
	return false;
    }
    return true;
}



function validateSiret (siren){
    if((isNaN(siren))||(siren == "00000000000000")||(!validateSiren(siren.substr(0,9)))){
	return false;
    }
    var key=0;
    for(var i=0;i < siren.length;i++){
	var v = eval(siren.substr(i,1));
	if ((i % 2) == 0){
	    v = v * 2;
	}
	if ( v >= 10){
	    v = v - 9;
	}
	key = key + v;
    }
    return ((key % 10) == 0);		
}

function isNumberLength(objet,id,longueur)
{
    
    
    if(objet.value.length!=0){
	if((isNaN(objet.value))||(objet.value.length != longueur)){
	    
	    
	    if(longueur>1){
		show_error(id,'Le champ doit être un nombre  de '+ longueur +' chiffres.');
	    }
	    else{
		show_error(id,'Le champ doit être un chiffre ');
	    }
	    
	    objet.select();
	    return false;
	}
	return true;
    }
    return true;
}

function isCodePostal(objet,id){
    
    
    return isNumberLength(objet,id, 5);
    
}

function deleteOption(theSel, theIndex)
{ 
  var selLength = theSel.length;
  if(selLength>0)
  {
    theSel.options[theIndex] = null;
  }
}




function moveOptions(theSelFrom, theSelTo)
{
  
  var selLength = theSelFrom.length;
  var selectedText = new Array();
  var selectedValues = new Array();
  var selectedCount = 0;
  
  var i;
  
  // Find the selected Options in reverse order
  // and delete them from the 'from' Select.
  for(i=selLength-1; i>=0; i--)
  {
    if(theSelFrom.options[i].selected)
    {
      selectedText[selectedCount] = theSelFrom.options[i].text;
      selectedValues[selectedCount] = theSelFrom.options[i].value;
      deleteOption(theSelFrom, i);
      selectedCount++;
    }
  }
  
  // Add the selected text/values in reverse order.
  // This will add the Options to the 'to' Select
  // in the same order as they were in the 'from' Select.
  for(i=selectedCount-1; i>=0; i--)
  {
    addOption(theSelTo, selectedText[i], selectedValues[i]);
  }
  
  if(NS4) history.go(0);
}

var NS4 = (navigator.appName == "Netscape" && parseInt(navigator.appVersion) < 5);

function addOption(theSel, theText, theValue)
{
  var newOpt = new Option(theText, theValue);
  newOpt.selected=true;
  var selLength = theSel.length;
  theSel.options[selLength] = newOpt;
}

function FocusText(BoxName){if(BoxName.value == BoxName.defaultValue){BoxName.value = ''; } }
function BlurText(BoxName){if(BoxName.value == ''){BoxName.value = BoxName.defaultValue; } }
function validsubmit2() {if(document.ident.login.value.indexOf("_")!= -1){alert('Le login ne doit pas comporter de caractère "_"');return false;}valide = 1;document.ident.valid.value = "1";document.ident.submit();}


