// JavaScript Document

// ============== FONCTIONS D'AFFICHAGE ========================= //
//Méthode de gestion de l'affichage
function affichage($table_id, $display)
{
        document.getElementById($table_id).style.display = $display;
}
/*function affichage(table_id, display_mode)
{
    alert('ds affich');
    document.getElementById(table_id).style.display = display_mode;
}*/

// ============== FONCTIONS POUR LE CONTROLE AUTOMATIQUE ======== //
//Méthode de mise à jour de la liste de vérification
function refresh_tab_verif($form, $nom, $obligation)
{
	var i=0;
	var exit = false;	
	while ((i < nb_lignes_tab_verif) && (exit==false))
	{
		//alert($form + " au lieu de " + tab_verif[0][i] + ";" + $nom + " au lieu de " + tab_verif[1][i]);
		if(!tab_verif[0][i])
		{
			exit = true;
		}
		else if((tab_verif[0][i]==$form) && (tab_verif[1][i]==$nom))
		{
			tab_verif[3][i]=$obligation;
			exit = true;
		}
		i++;
	}
}

//Méthode de controle du formulaire en fonction de tab_verif 
//(les fonctios tab_verif et refresh_tab_verif doivent être utilisé avant l'appel de cette fonction)
function controle_tab_verif(raz)
{
	var erreur_msg = "";
	var erreur_nb = 0;	
	var i=0;
	var exit = false;	
	
	while ((i < nb_lignes_tab_verif) && (exit==false))
	{

		if(!tab_verif[0][i])
		{
			exit = true;
		}
		else
		{
			if(tab_verif[3][i]=='true')
			{				
				//appel du controle de l'objet
				err = controle_objet(tab_verif[0][i],tab_verif[1][i],tab_verif[2][i]);
				//alert(tab_verif[1][i] + ";" + tab_verif[2][i] + ";" + tab_verif[3][i] + ";" + err);
				//
				if (err==true)
				{
					erreur_msg += "\t- "+ tab_verif[4][i] +" \n"
					erreur_nb++;
				}								
			}
                        else
                        {
                            if(raz == true)
							{
								//ré-initialisation des champs inutilisés
								init_champs_inutilisés(tab_verif[0][i],tab_verif[1][i],tab_verif[2][i]);
							}
                        }
		}
		i++;
	}
	//============================================//
	//AFFICHAGE DES ERREURS OU APPEL DE PROGRAMME
	//============================================//	
	if (erreur_nb != 0)
  	{
	  alert(erreur_nb+" erreurs ont été detectées : \n\n"+erreur_msg);
   	}
   	else
   	{  
		if(flg_submit==true)
		{           
		   document.frmdevis.submit();  
		}
	}
}

//Méthode de controle d'une ligne de formulaire en fonction de tab_verif 
//Cette fonction est utilisée par controle_tab_verif
function controle_objet($formulaire,$nom,$type)
{
	var err = false;
	
	$objet = "document." + $formulaire + "." + $nom;
	$objet = eval($objet);

	//objet de type texte
	if ($type=='text')
	{
		if (IsEmpty($objet)) err = true;
	}
	
	//objet de type bouton radio
	if ($type=='radio')
	{
		if (!RadioChecked($objet)) err = true;
	}
	
	//objet de type liste déroulante
	if ($type=='select')
	{
		if (IsSelected($objet)) err = true;
	}
	
	//objet de type boite a cochée
	if ($type=='checkbox')
	{
		if (CheckboxChecked($objet) == 0) err = true;
	}
	return(err);
}

// ============== FONCTIONS DE CONTROLE ========================= //
//Méthode vérifiant que la valeur saisie soit bien un entier
function isInteger(valeur)
{
   var re = /^\d+$/;
  
	if(!re.test(valeur))
    {
        alert("Vous n'avez pas saisi un entier !!!");
        return false;
    }
    return true;
}

//Méthode vérifiant que le champ soit bien un réel
function isReal(valeur){
   var re = /^\d+([\.|,])?\d+$/;
   if(!re.test(valeur)){
        alert("Vous n'avez pas saisi un réel !!!");
        return false;
   }
   return true;
}

//Méthode vérifiant que le champ soit numérique
function isNumeric(valeur)
{
var ok = false;
var reel = /^\d+([\.|,])?\d+$/;
var integer = /^\d+$/;
	
	if(reel.test(valeur))
	{
		ok = true;
	}
	else
	{
		if(integer.test(valeur))
		 {
			 ok = true;
		 }
	}
	if(!ok)	alert("Vous n'avez pas saisi un nombre !!!");
	return (ok);
}

//Méthode vérifiant que le champ soitune adresse email
function isEmailAdress(valeur){
   var re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;

   if(!re.test(valeur)){
        alert("Vous n'avez pas saisi une adresse email !!!");
        return false;
   }
   return true;
}

// Fonction permettant de tester si un champ est vide ou pas
function IsEmpty(PtrElement)
 {
  if (PtrElement.value != "")
  { return(false); }
  else
  { return(true); }
 }
 
// Fonction permettant de tester si un element est sélectionné dans la liste.
 function IsSelected(PtrElement)
 {
	if (PtrElement.value != 0)
	  { return(false); }
  	else
	  { return(true); }
 }
 
//Fonction permettant de vérifier qu'un bouton radio est sélectionné
 function RadioChecked(radio)
 {
  var rep=false;
  i=0;
  while((i < radio.length) && (rep==false))
	{
		if (radio[i].checked)
		{
			rep=true;
		}
		i++;
	}
	return rep;
 }

//Fonction retournant le nombre de checkbox cochés
function CheckboxChecked(tableau)
{
	var valeur_temp = "undefined";
	var i = 0;
	var nb = 0;
	
	valeur_temp = tableau[i];
	
	while ( typeof(valeur_temp) == "object" ) 
	{
		
		if(valeur_temp.checked)
		{
			nb++;
		}
		i++;
		valeur_temp = tableau[i];
	}     
	return(nb);
}

// ============== FONCTIONS DE RE-INITIALISATION ========================= //
//fonction générale de ré-initialisation des champs inutilisés
function init_champs_inutilisés($formulaire,$nom,$type)
{
	$objet = "document." + $formulaire + "." + $nom;
	$objet = eval($objet);

	//objet de type texte
	if ($type=='text')
	{
		ClearText($objet);
	}
	
	//objet de type bouton radio
	if ($type=='radio')
	{
		UnCheckRadio($objet);
	}
	
	//objet de type liste déroulante
	if ($type=='select')
	{
		InitSelect($objet);
	}
	
	//objet de type boite a cochée
	if ($type=='checkbox')
	{
		UnCheckCheckbox($objet);
	}
}

//fonction effaçant le contenu d'une zone text
function ClearText(text)
{
	text.value = '';
}

//fonction décochant toutes les boîtes à cocher
function UnCheckCheckbox(tableau)
{
	var valeur_temp = "undefined";
	var i = 0;
	
	valeur_temp = tableau[i];

	while ( typeof(valeur_temp) == "object" ) 
	{
		if(valeur_temp.checked)
		{
			valeur_temp.checked = 0;
		}
		i++;
		valeur_temp = tableau[i];
	}     
}

//fonction décochant tous les boutons radio
function UnCheckRadio(radio)
{
	var rep=false;
	i=0;
	while((i < radio.length) && (rep==false))
	{
		if (radio[i].checked)
		{
			radio[i].checked=0;
		}
		i++;
	}
}

//fonction forçant une liste déroulante à son indice 0 qui est normalement à vide
function InitSelect(TheSelect)
 {
	TheSelect.value = 0
 }
