var prixHT=0;
var prixTTC, montantHT, montantTTC;

// ouvre la fenetre avec l'url contenu dans fichier
function OuvreFenetre(fichier)
{
window.open(fichier,"extraction","toolbar=no,directories=no,location=no,menubar=no,status=no,resize=no,scrollbars=yes");
}

/****************************************************************************/
/****************************************************************************/
/* nom : focus_initial							    */
/* auteur : Tony							    */
/* date : 31/01/00							    */
/* entree : champ ou on mettra le focus initiallement			    */
/* sortie : 								    */
/* descriptif : permet de placer le focus ou on le désire		    */
/****************************************************************************/
function focus_initial()
{
//Debut modif caddie
   if (flagCaddie == 1)
      top.frames[2].frames[0].document.forms[0].LIBELLE.focus();
//Fin modif caddie
   else if(flagTotal == 0) /* si 0 rien n'est modifiable dans l'ensemble des données */
      top.frames[2].frames[0].document.forms[0].LNOM.focus();
   else if(flagFacturation == 0)     
     top.frames[2].frames[0].document.forms[0].REF.focus();
   else top.frames[2].frames[0].document.forms[0].LNOM.focus(); 

}

/****************************************************************************/
/* nom : affiche_pop_up2						    */
/* auteur : Tony							    */
/* date : 21/12/99							    */
/* entree : nom de la liste qui remplit le pop-up menu			    */
/*	    nom de la liste qui remplit les valeurs retournées par les      */
/*	    éléments du pop-up menu					    */
/*	    numero du pop-up Reference menu dans le formulaire		    */
/*	    index de la valeur par défaut du pop-up 			    */
/* sortie : 								    */
/* descriptif : permet d'afficher en fonction d'une liste d'éléments un pop */
/* 		up menu contenant ses valeurs				    */
/****************************************************************************/

function affiche_pop_up2(Elements, Valeurs, NumPopUp, index_selected)
{
  /* on controle que le nombre d'éléments du pop-up est égal au nombre de valeurs 
  renvoyées par ce pop-up menu */
  if(Elements.length != Valeurs.length) 
  {
    //document.write('problème avec les listes de ce pop-up menu');
    document.write(MESS11);
    return;
  }

  if(ModifRef == 1)
  {
    if(flagTotal == 0)
    {
      	document.write('<select disabled name="Ref' + NumPopUp+ '"  style="font-size:8pt" size="1" ONCHANGE="affiche_donnees_article(this.selectedIndex,' + NumPopUp +');">');
    }
    else document.write('<select name="Ref' + NumPopUp+ '"  style="font-size:8pt" size="1" ONCHANGE="affiche_donnees_article(this.selectedIndex,' + NumPopUp +');">');
    //else document.write('<select name="Ref' + NumPopUp+ '"  style="font-size:8pt" size="1" ONKEYUP="javascript:alert(this.value);">');
     
    for(i=0;i<Elements.length;i++)
    {
      if(i == Entier(index_selected))
        document.write('<option SELECTED value="' + Valeurs[i] + '">' + Elements[i] +'</option>\n');

      else
        document.write('<option value="' + Valeurs[i] + '">' + Elements[i] +'</option>\n');
    }
    document.write('</select>');
  }
  else 
  {
   	document.write('<input ONFOCUS="document.forms[0].Quant' + NumPoPup + '.focus();" name="DRef' + NumPopUp +'" type="text"  style="font-size:8pt" size=13 maxlength=13 value="'+ Valeurs[NumPopUp-1] +'">'); 

   document.write('<input name="Ref' + NumPopUp +'" type="hidden" value="'+ Valeurs[NumPopUp-1] +'">'); 
  }
}


/****************************************************************************/
/* nom : affiche_pop_up 						    */
/* auteur : Tony							    */
/* date : 21/12/99							    */
/* entree : nom de la liste qui remplit le pop-up menu			    */
/*	    nom de la liste qui remplit les valeurs retournées par les      */
/*	    éléments du pop-up menu					    */
/*	    numero du pop-up Reference menu dans le formulaire		    */
/*	    index de la valeur par défaut du pop-up 			    */
/* sortie : 								    */
/* descriptif : permet d'afficher en fonction d'une liste d'éléments un pop */
/* 		up menu contenant ses valeurs				    */
/****************************************************************************/
function affiche_pop_up(Valeurs, num_lig, index_par_defaut, couleur)
{
var index;

  if(flagTotal == 0)
  {
    index = index_par_defaut;
    if(ModifRef == 0)
		index=index_par_defaut - 1;
    		document.write('<input ONFOCUS="this.blur();" name="Ref' + num_lig +'" type="text"   style="font-size: 7 pt; font-family: Arial;border-width: 0;background-color: #' + couleur + '" size="16" maxlength=13 value="'+ Valeurs[index] +'">'); 
  }
  else
  {
    if(ModifRef == 1)
    {
      document.write('<input type="text" name="Ref' + num_lig + '"   style="font-size: 7 pt; font-family: Arial" size="16" maxlength="13" value="'+ Valeurs[index_par_defaut] +'" ONBLUR="affiche_donnees_article(this.value,' + num_lig +');">');
    }
    else 
    {
      	document.write('<input ONFOCUS="document.forms[0].Quant' + num_lig + '.focus();" name="Ref' + num_lig +'" type="text"   style="font-size: 7 pt; font-family: Arial;border-width: 0;background-color: #' + couleur + '" size="16" maxlength=13 value="'+ Valeurs[num_lig-1] +'">'); 
    }
  }
}

/****************************************************************************/
/* nom : article_deja_saisi						    */
/* auteur : Tony							    */
/* date : 22/12/99							    */
/* entree : référence de l'article saisi				    */
/*	    numéro de ligne de l'article sélectionné			    */
/* sortie : true si l'article a déjà été sélectionné			    */
/*	    false sinon							    */
/* descriptif : permet de tester si un article a déjà été saisi dans  	    */
/*		la commande en cours					    */
/****************************************************************************/
function article_deja_saisi(ref_article, num_ligne)
{
  if(ModifRef == 0) return(false);
  if(QueDesEspaces(ref_article)) return(false);
  
  for(i=1;i<=NB_LIGNES;i++)
  {
    if(i != num_ligne)
    {
      ref_article_courant = eval("document.forms[0].Ref" + i + ".value");
      if(ref_article_courant == ref_article)
        return true;
    }
  }
 
  return(false);
}

/****************************************************************************/
/* nom : RechercheReference						    */
/* auteur : Tony							    */
/* date : 02/02/00							    */
/* entree : reference de l'article					    */
/* sortie : index de l'article dans les tableaux			    */
/* descriptif : retourne l'index de la référence de l'article saisi	    */
/****************************************************************************/
function RechercheReference(ref_article)
{
  var i;
  
  if(ModifRef == 1)
  {
    for(i=0;i<=NB_ARTICLES;i++)
    {
      if(References[i] == ref_article)
        return(i);
    }
  }
  return(0);
}


function CorrespondReferences(ref_saisi,ref_lue)
{
  var i;
  
  for(i=0;i<ref_saisi.length;i++)
  {
    if(ref_saisi.charAt(i) != ref_lue.charAt(i))	
      return(false);
  }
  
  return(true);
}

/****************************************************************************/
/* nom : CompleteReference						    */
/* auteur : Tony							    */
/* date : 04/02/00							    */
/* entree : reference de l'article en cours				    */
/* sortie : retourne la référence la plus proche de la référence saisie     */
/* descriptif : permet de completer la référence d'un article à peine saisi.*/
/*		exemple : l'utilisateur tape 1, ca va lui afficher 1111	    */
/****************************************************************************/
function CompleteReference(touche_saisie, num_ligne)
{
  var i,j;
  if(touche_saisie=="") return;
    
  if(!(touche_saisie-0)) /* la touche saisie doit âtre un nombre sinon on efface tout */
  {
    eval("document.forms[0].Ref" + num_ligne + ".value='';");
    eval("document.forms[0].RefSaisie.value='';");
    return;
  }
  ref_cur = eval("document.forms[0].RefSaisie.value;"); /* on mémorise l'ancienne valeur */
  
  if(touche_saisie == ref_cur) /* appui sur fleche directionnelles */
  {
    eval("document.forms[0].Ref" + num_ligne + ".value='';");
//    eval("document.forms[0].Ref" + num_ligne + ".focus();");
    eval("document.forms[0].RefSaisie.value='';");
    return;
  }
  
  ref_temp = ref_cur + touche_saisie; /* on concatene l'ancienne reference avec la touche saisie */
  
  ref_global = eval("document.forms[0].RefSaisie.value=\"" + ref_temp +"\";"); /* on place la nouvelle saisie dans la variable */
  
  if(ModifRef == 1)
  {
    for(i=1;i<NB_ARTICLES;i++)
    {
      if(CorrespondReferences(ref_global,References[i]))
      {
        eval("document.forms[0].Ref" + num_ligne + ".value=\"" + References[i] +"\";");
        eval("document.forms[0].Ref" + num_ligne + ".select();");
        return;
      }
    }      
    eval("document.forms[0].Ref" + num_ligne + ".value=\"" + ref_global +"\";");
    eval("document.forms[0].Ref" + num_ligne + ".select();");
  }

}



/****************************************************************************/
/* nom : affiche_donnees_article					    */
/* auteur : Tony							    */
/* date : 02/02/00							    */
/* entree : reference de l'article					    */
/*	    numéro de ligne						    */
/* sortie : 								    */
/* descriptif : affiche les données de l'article sélectionné		    */
/****************************************************************************/
function affiche_donnees_article(ref_article, num_ligne)
{
  
  eval("document.forms[0].RefSaisie.value='';");

  if(ref_article == "")
  {
    eval("document.forms[0].Des" + num_ligne + ".value=\"" + Designations[0] +"\";");
    eval("document.forms[0].Cond" + num_ligne + ".value=\"" + Conditions[0] +"\";");
    eval("document.forms[0].Quant" + num_ligne + ".value='';");
    eval("document.forms[0].Prix" + num_ligne + ".value='';");
    eval("document.forms[0].Mont" + num_ligne + ".value='';");
	document.forms[0].elements["budgetNumligne" + num_ligne].value= "";
    return;
  }
  
  ref_article = SupprimeEspaces(ref_article);
  eval("document.forms[0].Ref" + num_ligne + ".value=\"" + ref_article +"\";");

  if(article_deja_saisi(ref_article, num_ligne))
  {
    //alert("article deja selectionne dans la liste");
    alert(MESS01);
    if(DernierArticleSelectionne[num_ligne-1] == "0")
      index_prec = 0;
    else index_prec = Entier(DernierArticleSelectionne[num_ligne-1]); /* index de la valeur précédente */
    
    eval("document.forms[0].Ref" + num_ligne + ".value=\"" + References[index_prec] +"\";");
    eval("document.forms[0].Des" + num_ligne + ".value=\"" + Designations[index_prec] +"\";");
    eval("document.forms[0].Cond" + num_ligne + ".value=\"" + Conditions[index_prec] +"\";");
	document.forms[0].elements["budgetNumligne" + num_ligne].value= NumLigneBudget[index_prec];
  }
  else
  {
    index_article = RechercheReference(ref_article);
    if(index_article == 0) 
    { 
      //alert("cette référence n'existe pas"); 
      alert(MESS02);
      eval("document.forms[0].Ref" + num_ligne +".value='';");
      eval("document.forms[0].Des" + num_ligne + ".value='';");
      eval("document.forms[0].Cond" + num_ligne + ".value='';");
      eval("document.forms[0].Quant" + num_ligne + ".value='';");
      eval("document.forms[0].Prix" + num_ligne + ".value='';");
      eval("document.forms[0].Mont" + num_ligne + ".value='';");
      
      eval("document.forms[0].Ref" + num_ligne +".focus();");
      return; 
    }
    eval("document.forms[0].Des" + num_ligne + ".value=\"" + Designations[index_article] +"\";");
    eval("document.forms[0].Cond" + num_ligne + ".value=\"" + Conditions[index_article] +"\";");
    //eval("document.forms[0].Quant" + num_ligne + ".value='';");
    //eval("document.forms[0].Prix" + num_ligne + ".value='';");
    //eval("document.forms[0].Mont" + num_ligne + ".value='';");
	document.forms[0].elements["budgetNumligne" + num_ligne].value= NumLigneBudget[index_article];
  
    DernierArticleSelectionne[num_ligne-1] = index_article;
    
    /* on place le focus sur la quantité */
    if(index_article != 0 ) 
      eval("document.forms[0].Quant" + num_ligne +".focus();");
  }
}

/****************************************************************************/
/* nom : affiche_donnees_article2					    */
/* auteur : Tony							    */
/* date : 27/12/99							    */
/* entree : 								    */
/* sortie : 								    */
/* descriptif : affiche les données des articles si ModifRef = 0	    */
/****************************************************************************/
function affiche_donnees_article2()
{
  if(ModifRef == 1)
  {
    for(i=1;i<=NB_LIGNES;i++)
    {  
      ref = eval("document.forms[0].Ref" + i + ".value");
      index = RechercheReference(ref);
      if(index != 0)
      {
        eval("document.forms[0].Des" + i + ".value=\"" + Designations[index] +"\";");
        eval("document.forms[0].Cond" + i + ".value=\"" + Conditions[index] +"\";");
		document.forms[0].elements["budgetNumligne" + i].value= NumLigneBudget[index];

      }
    }
  }
  else
  {
    for(i=1;i<=NB_LIGNES;i++)
    {  
      eval("document.forms[0].Des" + i + ".value=\"" + MDesignations[i-1] +"\";");
      eval("document.forms[0].Cond" + i + ".value=\"" + MConditions[i-1] +"\";");
	  document.forms[0].elements["budgetNumligne" + i].value= MNumLigneBudget[i-1];
    }
  }

}

/****************************************************************************/
/* nom : protege_champ							    */
/* auteur : Tony							    */
/* date : 21/12/99							    */
/* entree : champ ou on mettra le focus (destination)			    */
/* sortie : 								    */
/* descriptif : permet de protéger un champ, on place le focus sur un autre */
/*		champ							    */
/****************************************************************************/
function protege_champ(Champ_dest)
{
   Champ_dest.focus();
}

/****************************************************************************/
/* nom : protege_donnees_si_flag					    */
/* auteur : Tony							    */
/* date : 23/12/99							    */
/* entree : champ ou on mettra le focus (destination)			    */
/* sortie : 								    */
/* descriptif : permet de protéger un champ (de l'adresse de facturation) si*/
/* 		le flag flagFacturation est à 0				    */
/****************************************************************************/
function protege_donnes_si_flag(Champ_dest)
{
   if(flagFacturation == 0) /* si 0 rien n'est modifiable dans l'adresse de facturation */
        Champ_dest.focus();

}

/****************************************************************************/
/* nom : protege_donnees_si_flag2					    */
/* auteur : Tony							    */
/* date : 10/01/99							    */
/* entree : champ ou on mettra le focus (destination)			    */
/* sortie : 								    */
/* descriptif : permet de protéger un champ tous les champs du formulaire si*/
/*		flagTotal = 0						    */
/****************************************************************************/
function protege_donnes_si_flag2()
{
   if(flagTotal == 0) /* si 0 rien n'est modifiable dans l'ensemble des données */
        top.frames[2].frames[1].document.forms[0].TVA.focus();

}

/****************************************************************************/
/* nom : protege_donnees_si_flag3					    */
/* auteur : Tony							    */
/* date : 24/01/99							    */
/* entree : champ ou on mettra le focus (destination)			    */
/* sortie : 								    */
/* descriptif : permet de protéger un champ tous les champs du formulaire si*/
/*		flagTotal = 0						    */
/****************************************************************************/
function protege_donnes_si_flag3()
{
   if(top.frames[2].frames[0].flagTotal == "0") /* si 0 rien n'est modifiable dans l'ensemble des données */
        top.frames[2].frames[1].document.forms[0].TVA.focus();
}


/****************************************************************************/
/* nom : affiche_montant						    */
/* auteur : Tony							    */
/* date : 21/12/99							    */
/* entree : numero de ligne du pop_up en cours				    */
/* sortie : 								    */
/* descriptif : permet d'afficher le montant				    */
/****************************************************************************/
function affiche_montant(num_ligne)
{
  var prix = 0;

  /* on recupere la quantite saisie (chaine de caractère) */
  quant = eval("document.forms[0].Quant" + num_ligne + ".value");
  
  /* on recupere la condition de l'article sélectionné */
  cond  = eval("document.forms[0].Cond" + num_ligne + ".value");
  
  if(ModifRef == 1)
    index = RechercheReference(eval("document.forms[0].Ref" + num_ligne + ".value"));
  else index = num_ligne;
  
  if(quant =="") return true;
  
  if((quant == "0") && ModifRef)
  {
    eval("document.forms[0].Ref" + num_ligne + ".value=\"    \";");
    eval("document.forms[0].Des" + num_ligne + ".value=\"\";");
    eval("document.forms[0].Cond" + num_ligne + ".value=\"\";");
    eval("document.forms[0].Prix" + num_ligne + ".value=\"\";");
    eval("document.forms[0].Mont" + num_ligne + ".value=\"\";");
    eval("document.forms[0].Quant" + num_ligne + ".value=\"\";");
  }
  
  else
  {
    if(!EntierPositif(quant)) 
    {
      //alert("la quantité doit être un entier positif");
      alert(MESS03);
      eval("document.forms[0].Quant" + num_ligne + ".value=\"\";");      
      eval("document.forms[0].Quant" + num_ligne + ".focus();");
      return false;
    }
    else
    {
      if(!ControleCondition(cond, quant))
      { 
      	//alert("saisir un multiple du conditionnement");
        alert(MESS04);
        eval("document.forms[0].Quant" + num_ligne + ".focus();");
        return false;
      }
      else
      {
        calcul_article(quant, index);
        
        if(flagPrix == 0)
        {
          /* affiche le prix et montant Hors Taxes */
          eval("document.forms[0].Prix" + num_ligne + ".value='" + arrondi(prixHT,2) + "';");
          eval("document.forms[0].Mont" + num_ligne + ".value='" + arrondi(montantHT,PRECISION) + "';");
        }
        else
        {
  	  /* affiche le prix et montant Toutes Taxes Comprises */
          eval("document.forms[0].Prix" + num_ligne + ".value='" + arrondi(prixTTC,2) + "';");
          eval("document.forms[0].Mont" + num_ligne + ".value='" + arrondi(montantTTC,PRECISION) + "';");
        }
      
     }
    }
  }
  affiche_total();
  return true;
}


/****************************************************************************/
/* nom : affiche_total							    */
/* auteur : Tony							    */
/* date : 28/12/99							    */
/* entree : 								    */
/* sortie : 								    */
/* descriptif : affiche les montants globaux (dans la frame du bas). 	    */
/*		sont concernés les montants TTC, Hors Taxe ainsi que le     */
/*		budget disponible					    */
/* modif [08/02/2007] : on met à jour les lignes budgetaires*/
/****************************************************************************/
function affiche_total()
{
  mont= 0; /* montant Hors Taxe ou Toutes Taxes global */
  var totalTTC = 0;
  var totalHT  = 0;
  var totalTVA = 0;
  var budget = 0;
  var budgetTotal = 0;
  var budgetInitial = 0;
  var budgetConsomme = new Array();
  var numLigne;
  var i;
  var forfait;
  var port;
  
  forfait = 0.00;
  port = 0.00;
  
  budgetTotal = 0;
  for(i=1;i<=NB_LIGNES;i++)
  {
    quant = eval("document.forms[0].Quant" + i + ".value");

    if(quant == "") 
    { 
      montantHT = 0; 
      montantTTC = 0; 
    }
    else 
    {
      if(ModifRef == 1)
      {
        index = RechercheReference(eval("document.forms[0].Ref" + i + ".value"));
        calcul_article(quant, index);      
      }
      else if(ModifRef ==0)
        calcul_article(quant, i);
    }
        
    totalHT += montantHT-0;
    totalTTC += montantTTC-0;
	
	// on va chercher le numéro de la ligne budgétaire associée
	numLigne = parseInt(document.forms[0].elements["budgetNumligne"+i].value);
	if (!isNaN(numLigne) && numLigne>0){
		//top.frames[2].frames[1].document.forms[0].elements["budget_"+numLigne].value=top.frames[2].frames[1].document.forms[0].elements["budgetinitial_"+numLigne].value - montantHT;
		
		if (budgetConsomme[numLigne]){
				budgetConsomme[numLigne] += parseFloat(arrondi(montantHT,0));
		}
		else{
				budgetConsomme[numLigne] = parseFloat(arrondi(montantHT,0));
		}
		
	}
	
  }
  for (i=1;i<99;i++){
	 if (top.frames[2].frames[1].document.forms[0].elements["budget_"+i]){
		if (budgetConsomme[i]){
			top.frames[2].frames[1].document.forms[0].elements["budget_"+i].value=arrondi(top.frames[2].frames[1].document.forms[0].elements["budgetinitial_"+i].value - budgetConsomme[i],PRECISION);
		}
		else{
				top.frames[2].frames[1].document.forms[0].elements["budget_"+i].value=arrondi(top.frames[2].frames[1].document.forms[0].elements["budgetinitial_"+i].value,PRECISION);
		}
		budget = parseInt(top.frames[2].frames[1].document.forms[0].elements["budget_"+i].value);
		if (budget<=0){
				top.frames[2].frames[1].document.forms[0].elements["budget_"+i].className = "budget_negatif";
		}
		else{
				top.frames[2].frames[1].document.forms[0].elements["budget_"+i].className = "";
		}
		
		if (!isNaN(budget)){
			budgetTotal+= budget;
		}
	} 
  
  }
  
  
  if(totalHT != 0)
  {
    if(MinForfait > 0 && totalHT <= MinForfait)
    {
      forfait = MtForfait;
      totalTTC += forfait * (1+(TVAFrais/100));
    }
    else
      forfait = 0.00;
    
    if(MinPort> 0 && totalHT <= MinPort)
    {
      port = MtPort;
      totalTTC += port * (1+(TVAFrais/100));
    }
    else
      port=0.00;

//   totalTVA = totalTTC - totalHT - forfait - port;
	//totalTVA = (totalHT + forfait + port)*((TVAFrais/100));
	totalTVA = totalHT*(TVA2/100) + (forfait + port)*(TVAFrais/100);
	totalTTC = totalHT + forfait + port + totalTVA;
	
   if(flagPrix == 0) budget = Budget - totalHT;
   else budget = Budget - totalTTC;
  }

   eval("top.frames[2].frames[1].document.forms[0].MontTVA.value='" + arrondi(totalTVA,PRECISION) +"';"); 
   eval("top.frames[2].frames[1].document.forms[0].MontHT.value='" + arrondi(totalHT,PRECISION) +"';"); 
   eval("top.frames[2].frames[1].document.forms[0].MontNet.value='" + arrondi(totalTTC,PRECISION) +"';"); 
   //On vire le recalcul du budget puisque il n'a pas a etre recalculé
   //eval("top.frames[2].frames[1].document.forms[0].Budget.value='" + arrondi(budget,PRECISION) +"';");
  // eval("top.frames[2].frames[1].document.forms[0].Budget.value='" + arrondi(Budget,PRECISION) +"';");
  eval("top.frames[2].frames[1].document.forms[0].Budget.value='" + arrondi(budgetTotal,PRECISION) +"';");
   if (budgetTotal<=0){
	   	top.frames[2].frames[1].document.forms[0].Budget.className = 'budget_negatif';
   }
   else{
	   		top.frames[2].frames[1].document.forms[0].Budget.className = '';
   }
	   
	   
   
   //Debut affichage en devise national des euro 
   if (TAUXEURO>0)
 	eval("top.frames[2].frames[1].document.forms[0].DEVISENATIONALTTC.value='" + arrondi(arrondi(totalTTC,PRECISION)*TAUXEURO,PRECISION) +"';"); 
   //Fin affichage en devise national des euro   
   
   if(totalHT <= MinForfait)
     eval("top.frames[2].frames[1].document.forms[0].FGestion.value='" + arrondi(forfait,PRECISION) +"';"); 
   else eval("top.frames[2].frames[1].document.forms[0].FGestion.value='0.00';"); 
   
   if(totalHT <= MinPort)
     eval("top.frames[2].frames[1].document.forms[0].Port.value='" + arrondi(port,PRECISION)+"';"); 
   else eval("top.frames[2].frames[1].document.forms[0].Port.value='0.00';"); 

   eval("top.frames[2].frames[1].document.forms[0].TVA.value= TVA2;");

//Fin modif bug javascript

}

/****************************************************************************/
/* nom : arrondi							    */
/* auteur : Tony							    */
/* date : 21/12/99							    */
/* entree : valeur à convertir						    */
/*	    precision (nombre de chiffres après la virgule		    */
/* sortie : 								    */
/* descriptif : permet d'arrondir une valeur				    */
/****************************************************************************/
function arrondi(valeur, precision)
{
  valeur = "" + valeur; 
  precision = precision - 0; 

  var temp = "" + Math.round(valeur * Math.pow(10, precision));
	
  var PointDecimal = temp.length - precision;

  if(PointDecimal > 0)
  {
    resultat = temp.substring(0, PointDecimal);
    if (precision > 0) 
	resultat += ".";
    resultat += temp.substring(PointDecimal, temp.length);
  }
  else
  {
    resultat = temp/Math.pow(10, precision);
  }
  return resultat;
        
        
 /*       valeur = valeur - 0;
        precision = precision - 0; 

        var temp = "" + Math.round(valeur * Math.pow(10, precision));
        temp = temp/Math.pow(10, precision);
                      
        return(temp);*/
}



/****************************************************************************/
/* nom : ControleChampObligatoire()					    */
/* auteur : Tony							    */
/* date : 21/12/99							    */
/* entree : le champ à controler					    */
/* sortie : false si le champ contient des caractères			    */
/* descriptif : cette fonction controle si le champ saisi contient des      */
/*		caractères			    			    */
/****************************************************************************/
function ControleChampObligatoire(champ)
{
  if(champ.value == "")
    {
     //alert("champ " + champ.name +" obligatoire");
     alert("champ " + champ.name +MESS05);
     champ.focus();
    }
  else return(false);
}


/****************************************************************************/
/* nom : EntierPositif()					    	    */
/* auteur : Tony							    */
/* date : 21/12/99							    */
/* entree : le nombre à controler					    */
/* sortie : true si le nombre est un entier				    */
/*	    false si le nombre n'est pas un entier			    */
/* descriptif : cette fonction controle si le nombre est un entier     	    */
/****************************************************************************/
function EntierPositif(n)
{
  if(n<0) return(false)  
  
  if(n == "0") return true;
  
  if(!(n - 0))
    return false;
  else return true;
}

/****************************************************************************/
/* nom : Entier()						    	    */
/* auteur : Tony							    */
/* date : 23/12/99							    */
/* entree : le nombre à convertir (chaine)				    */
/* sortie : le nombre convertit en entier				    */
/* descriptif : cette fonction convertit une chaine en entier		    */
/****************************************************************************/
function Entier(n)
{
  t = (n - 0);
  if(!t)
    return false;
  else return(t);

}

/****************************************************************************/
/* nom : ControleCondition					    	    */
/* auteur : Tony							    */
/* date : 21/12/99							    */
/* entree : le champ condition du formulaire				    */
/*	    la quantité saisie par l'utilisateur			    */
/* sortie : true si la quantité est valide				    */
/*	    false sinon							    */
/* descriptif : cette fonction controle si la quantité saisie par 	    */
/*		l'utilisateur respecte la tegle suivante : 		    */
/*		quantité modulo condition == 0				    */
/****************************************************************************/
function ControleCondition(Condition, Quantite)
{
  
  if(EntierPositif(Condition))
  {
    if(Quantite%Condition == 0)
      return(true);
  }
  return(false);
}

/****************************************************************************/
/* nom : QueDesEspaces					    	    	    */
/* auteur : Tony							    */
/* date : 31/01/00							    */
/* entree : la chaine à analyser					    */
/* sortie : true si la chaine ne contient que des espaces		    */
/*	    false sinon							    */
/* descriptif : cette fonction controle si une chaine ne contient des espaces*/
/****************************************************************************/

function QueDesEspaces(Chaine)
{
  Chaine = Chaine +"";
  
  for(i=0;i<Chaine.length;i++)
  {
    if(Chaine.charAt(i) != ' ')	
      return(false);
  }
  return(true);
}

/****************************************************************************/
/* nom : SupprimeEspaces					    	    */
/* auteur : Tony							    */
/* date : 22/02/00							    */
/* entree : la chaine à traiter						    */
/* sortie : la chaine traitée						    */
/* descriptif : cette fonction supprime les espaces			    */
/****************************************************************************/
function SupprimeEspaces(Chaine)
{
  var Temp="";
  var j=0;
  
  for(i=0;i<Chaine.length;i++)
  {
    if(Chaine.charAt(i) != ' ')	
    { 
      Temp += Chaine.charAt(i); 
    }
  }
  return(Temp);
}

/****************************************************************************/
/* nom : test_qte						    	    */
/* auteur : Tony							    */
/* date : 22/12/99							    */
/* entree : - le numero de ligne de l'article				    */
/* sortie : 								    */
/* descriptif : permet d'interdire la saisie d'une quantité lorsque aucun   */
/*		article n'a été sélectionné dans la ligne		    */
/****************************************************************************/
function test_qte(num_ligne)
{
  if(ModifRef == 1) /* on peut modifier la référence */
  {
    if(flagTotal == 0) /* si 0 rien n'est modifiable dans l'ensemble des données */
      top.frames[2].frames[1].document.forms[0].TVA.focus();
    else
    {
      var ref = eval("document.forms[0].Ref" + num_ligne + ".value;");
    }
  }
}

/****************************************************************************/
/* nom : DateOK							    	    */
/* auteur : Tony							    */
/* date : 22/12/99							    */
/* entree : - la date sous forme de chaine de car.			    */
/* sortie : booleen							    */
/* descriptif : teste la validité d'une date				    */
/****************************************************************************/
// format JJ/MM/AAAA
function DateOK(date)
{
  var str = date;
  var format=0;
  var month=0;
  var day=0;
  var year=0;
  var err=false;
  
  if(str == "")
  {
    return false;
  }

  if(str.length != 10)
    err=true;

  if(str.charAt(2) == "/" && str.charAt(5) == "/")
  {
  // verifie si le jour est un nombre
    for (var i = 0; i < 2; i++) 
    { 
      var ch = str.substring(i, i + 1); 
      if(ch < "0" || "9" < ch) 
        err=true; 
    }
     
    // verifie si le mois est un nombre
    for (var i = 3; i < 5; i++) 
    { 
      var ch = str.substring(i, i + 1); 
      if(ch < "0" || "9" < ch) 
        err=true; 
    }
     
    // verifie si l'année est un nombre
    for (var i = 6; i < 10; i++) 
    { 
      var ch = str.substring(i, i + 1); 
      if(ch < "0" || "9" < ch) 
        err=true; 
    }
     
    // on stocke les données jour, mois, année
    if(err==false)
    { 
      day=eval(str.substring(0,2)); 
      month=eval(str.substring(3,5)); 
      year=eval(str.substring(6,str.length)); 
    }
     
  }  
  else return false;
  
  // mois entre 0 et 12
  if(month<0 || month>13)
    err=true;

  // test du jour par rapport au mois et année (bissextile par exemple)
  if( month==2 && ((year/4)==parseInt(year/4)) )
    { if(day<=0 || day>29) err=true; }
    
  if( month==2 && ((year/4)!=parseInt(year/4)) )
    { if(day<=0 || day>28) err=true; }
     
  if( month==4 || month==6 || month==9 || month==11 )
    { if(day<=0 || day>30) err=true; }
   
  if( month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12 )
    { if(day<=0 || day>31) err=true; }

  
  if(err==true)
  {
    return false;
  }
  
  return true;
}

/****************************************************************************/
/* nom : affiche_label_prix					    	    */
/* auteur : Tony							    */
/* date : 22/12/99							    */
/* entree : 								    */
/* sortie : 								    */
/* descriptif : si le flag flagPrix == 0 alors on affiche le prix HT        */
/****************************************************************************/
function affiche_label_prix()
{
  if(flagPrix == 0)
    //document.write("Prix HT");
    document.write(MESS12);
  else 
	//document.write("Prix TTC");
    	document.write(MESS13);
}


/****************************************************************************/
/* nom : affiche_label_montant					    	    */
/* auteur : Tony							    */
/* date : 22/12/99							    */
/* entree : 								    */
/* sortie : 								    */
/* descriptif : si le flag flagPrix == 0 alors on affiche le montant HT     */
/****************************************************************************/
function affiche_label_montant()
{
  if(flagPrix == 0)
    	//document.write("Mt HT");
    	document.write(MESS14);
  else 
	//document.write("Mt TTC");
    	document.write(MESS15);
}


/****************************************************************************/
/* nom : calcul_article					    	    	    */
/* auteur : Tony							    */
/* date : 23/12/99							    */
/* entree : quantite							    */
/*	    index de l'article						    */
/* sortie : les prix et montants					    */
/* descriptif : calcule le prix HT et le prix TTC, calcule le montant HT et */
/*		le montant TTC						    */
/****************************************************************************/
function  calcul_article(qte, index_article)
{
  uval = UVAL[index_article-1];
  tva = TVA[index_article-1];
  
  prix = trouve_prix_article(qte, index_article) - 0;
   
  prixHT = prix - prix*REMISE;
  prixHT = arrondi(prixHT,2);
  
  prixTTC = prixHT * (1+(tva/100));
  prixTTC = arrondi(prixTTC,2);
  
  montantHT = (prixHT * qte)/uval;
  montantHT = arrondi(montantHT,PRECISION); 
  
  montantTTC = (prixTTC * qte)/uval;
  montantTTC = arrondi(montantTTC,PRECISION); 
}


/****************************************************************************/
/* nom : trouve_prix_article					    	    */
/* auteur : Tony							    */
/* date : 23/12/99							    */
/* entree : quantite							    */
/*	    index de l'article						    */
/* sortie : 								    */
/* descriptif : trouve le prix par article par tranche de quantite	    */
/****************************************************************************/
function trouve_prix_article(qte, index_article)
{
  var i;
  
  if(ModifRef == 1)
  {
    var BornesTemp= eval("Bornes"+index_article);
    var PrixTemp= eval("PrixHT"+index_article);
  }
  else
  {
    var BornesTemp= eval("MBornes"+index_article);
    var PrixTemp= eval("MPrixHT"+index_article);
  }

  if(BornesTemp == 0) 
    return(PrixTemp);

  for(i=NB_BORNES;i>=1;i--)
  {
    borne = BornesTemp[i-1]-0;

    if((borne != 0) && (Entier(qte) >= borne))
    {
      return(PrixTemp[i-1]);
    }
  }
  
  if(ModifRef == 1) 
    return(eval("PrixBHT"+index_article));
  else return(eval("MPrixBHT"+index_article));
  
}


/****************************************************************************/
/* nom : toutes_les_qte_ok						    */
/* auteur : Tony							    */
/* date : 25/01/00							    */
/* entree : - 								    */
/* sortie : 								    */
/* descriptif : teste toutes les quantités saisies			    */
/****************************************************************************/
function toutes_les_qte_ok()
{
  for(i=1; i<=top.frames[2].frames[0].NB_LIGNES; i++)
  {
    qte_cur = eval("top.frames[2].frames[0].document.forms[0].Quant" + i + ".value;");
    cond_cur = eval("top.frames[2].frames[0].document.forms[0].Cond" + i + ".value;");
    
    if(EntierPositif(cond_cur))
    {
      if(!EntierPositif(qte_cur))
        return(false);
    }
  }
      
  return(true);
}

/****************************************************************************/
/* nom : une_cond_ko						    	    */
/* auteur : Tony							    */
/* date : 25/01/00							    */
/* entree : - 								    */
/* sortie : - index de la ligne de commande qui ne fonctionne pas	    */
/* descriptif : renvoie l'index de la quantité qui ne vérifie pas la        */
/*		condition						    */
/****************************************************************************/
function une_cond_ko()
{
  for(i=1; i<=top.frames[2].frames[0].NB_LIGNES; i++)
  {
    qte_cur = eval("top.frames[2].frames[0].document.forms[0].Quant" + i + ".value;");
    cond_cur = eval("top.frames[2].frames[0].document.forms[0].Cond" + i + ".value;");
    
    if(EntierPositif(cond_cur))
    {
      if(!ControleCondition(cond_cur, qte_cur))
        return(i);
    }
  }
      
  return(false);
}


function actionE() { action("E") }
function actionV() { action("V") }
function action0() { action("0") }

/****************************************************************************/
/* nom : action							    	    */
/* auteur : Tony							    */
/* date : 18/01/99							    */
/* entree : - paramètre qui indique le type de fonction			    */
/* sortie : 								    */
/* descriptif : fonction associées aux boutons Validation, Attente,   	    */
/*		du formulaire Bon de commande      			    */
/****************************************************************************/
function action(type)
{

  // teste si toutes les quantités sont bonnes, si la date est correcte, si ...
  erreur = 0;
  var index = 0;
  with(top.frames[2].frames[0].document.forms[0])
  {
    if(!DateOK(DATELIV.value)) 
      erreur=1;
    
    if(!toutes_les_qte_ok()) 
      erreur = 2;
      
    index = une_cond_ko(); 
    if(index) 
      { erreur = 3; }

  }
  
 
  if(erreur == 0)
  {
    top.frames[2].frames[0].document.forms[0].TYPE.value=type; 
    top.frames[2].frames[0].document.forms[0].submit();
  }
  else if(erreur == 1) 
    {
      //alert("la date est incorrecte");
      alert(MESS06);
      top.frames[2].frames[0].document.forms[0].DATELIV.focus();
    }
  else if(erreur == 2) 
      //alert("une des quantité de commande est incorrecte. Veuillez vérifiez.");
      alert(MESS07);

  else if(erreur == 3) 
	alert(MESS08);
	// conditionement incorrect
  else if(erreur == 4) 
    //alert("Votre budget est insuffisant pour effectuer cette commande.");
	alert(MESS23);
	
}


/****************************************************************************/
/* nom : action2						    	    */
/* auteur : Tony							    */
/* date : 18/01/99							    */
/* entree : - paramètre du cgi						    */
/*	    - cgi à appeler						    */
/* sortie : 								    */
/* descriptif : fonction associées aux boutons Annulation, Tranférée   	    */
/*		du formulaire Bon de commande      			    */
/****************************************************************************/
function action2()
{
	ret=confirm(MESS16);
	if (ret == true)
   		top.frames[2].frames[0].document.forms[2].submit();
	else
		alert(MESS17);
}

// appel le portefeuille quant la commande est en consultation
function action3()
{
  document.forms[2].submit();
}

// appel la recap
function action4()
{
    top.frames[2].frames[0].document.forms[0].action="/bondecommande/cgi/boncommande_recap.cgi"; 
    top.frames[2].frames[0].document.forms[0].TVA.value=top.frames[2].frames[1].document.forms[0].TVA.value;
    top.frames[2].frames[0].document.forms[0].MontTVA.value=top.frames[2].frames[1].document.forms[0].MontTVA.value;
    top.frames[2].frames[0].document.forms[0].MontNet.value=top.frames[2].frames[1].document.forms[0].MontNet.value;
    top.frames[2].frames[0].document.forms[0].MontHT.value=top.frames[2].frames[1].document.forms[0].MontHT.value;
    top.frames[2].frames[0].document.forms[0].Port.value=top.frames[2].frames[1].document.forms[0].Port.value;
    top.frames[2].frames[0].document.forms[0].FGestion.value=top.frames[2].frames[1].document.forms[0].FGestion.value;
    top.frames[2].frames[0].document.forms[0].Budget.value=top.frames[2].frames[1].document.forms[0].Budget.value;
    top.frames[2].frames[0].document.forms[0].TYPECDE.value=TYPECDE;
    top.frames[2].frames[0].document.forms[0].flagPrix.value=flagPrix;
    top.frames[2].frames[0].document.forms[0].fbudget.value=fbudget;
    top.frames[2].frames[0].document.forms[0].submit();
}

// quitte la commande
function action5()
{
  //document.forms[3].submit();
   top.frames[2].frames[0].document.forms[1].submit();
}

// appel les adresse de livraisons multiple
function action6(type)
{
/*
   if (type == "0") 
   {
	type="E";
	alert(MESS22);
	document.forms[0].LNOM.focus();
   }	
*/
   top.frames[2].frames[0].document.forms[0].TYPE.value=type;
   top.frames[2].frames[0].document.forms[0].URLDEST.value="ADRLIV";
  document.forms[0].submit();
}

// efface l'adresse de livraisons
function action7(type)
{
    	clearadr();

	document.forms[0].LNOM.focus();
    	top.frames[2].frames[0].document.forms[0].action="/bondecommande/cgi/boncommande_cree_adrliv.cgi"; 
    	top.frames[2].frames[0].document.forms[0].submit();
}

function clearadr()
{
  with(top.frames[2].frames[0].document.forms[0])
  {
    LNOM.value = "";
    LADR1.value = "";
    LADR2.value = "";
    LADR3.value = "";
    LVILLE.value = "";
    LCP.value = "";
    LNUMTEL.value = "";
    LFAX.value = "";
    LCOM1.value = "";
    LCOM2.value = "";
    LREFCLIA.value = "";
  }	
}

// supprime une adresse de livraison
function action8()
{
	if (TYPEADR == "-1")
	{
		//alert("Aucune adresse de livraison n'est selectionée");
		alert(MESS20);
		document.forms[0].LNOM.focus();
		return;
	}
	if (TYPEADR == "-2")
	{
		//alert("Impossible de supprimer une adresse de livraison client");
		document.forms[0].LNOM.focus();
		alert(MESS21);
		return;
	}
	ret=confirm(MESS18);
	if (ret == true)
	{
    		clearadr();
    		top.frames[2].frames[0].document.forms[0].action="/bondecommande/cgi/boncommande_supp_adrliv.cgi"; 
    		top.frames[2].frames[0].document.forms[0].submit();
	}
	else
		alert(MESS19);
	document.forms[0].LNOM.focus();
}

/****************************************************************************/
/* nom : assigne_valeur_montant					    	    */
/* auteur : Tony							    */
/* date : 18/01/99							    */
/* entree : - frais de port						    */
/*	    - frais de gestion						    */
/*	    - Montant TVA						    */
/*	    - Montant HT						    */
/*	    - Net à Payer						    */
/*	    - Budget disponible						    */
/* sortie : 								    */
/* descriptif : affecte des valeurs par défaut aux montants 		    */
/****************************************************************************/
function assigne_valeurs_montant(Port, Gestion, MontTVA, MontHT, MontNet, Budget, EquivalentNational, Tva)
{
   eval("top.frames[2].frames[1].document.forms[0].Port.value='" + arrondi(Port,2) +"';"); 
   eval("top.frames[2].frames[1].document.forms[0].FGestion.value='" + arrondi(Gestion,2) +"';"); 
   eval("top.frames[2].frames[1].document.forms[0].MontTVA.value='" + MontTVA +"';"); 
   eval("top.frames[2].frames[1].document.forms[0].MontHT.value='" + MontHT +"';"); 
   eval("top.frames[2].frames[1].document.forms[0].MontNet.value='" + MontNet +"';"); 
   eval("top.frames[2].frames[1].document.forms[0].Budget.value='" + Budget +"';"); 
   if (EquivalentNational!=0)
   {
     eval("top.frames[2].frames[1].document.forms[0].DEVISENATIONALTTC.value='" + EquivalentNational +"';"); 
   }
   eval("top.frames[2].frames[1].document.forms[0].TVA.value='" + Tva +"';"); 
}


/****************************************************************************/
/* nom : resolution_ok						    	    */
/* auteur : Tony							    */
/* date : 24/01/99							    */
/* entree : 								    */
/* sortie : - true ou false		 				    */
/* descriptif : retourne true ou false si la résolution est 800*600	    */
/****************************************************************************/
function resolution_ok()
{
	// fabrice tout le monde avec des petits ou gros ecrans peut s'y connecter
    return(true);
  if((screen.width == 800) && (screen.height == 600))
    return(true);
  // Fred : c'est temporaire, z'inquietez pas les copains ;)
  else if((screen.width == 1024) && (screen.height == 768))
    return(true);
  return(false);
}

/****************************************************************************/
/* nom : navigateur_ok						    	    */
/* auteur : Tony							    */
/* date : 24/01/99							    */
/* entree : 								    */
/* sortie : - true ou false		 				    */
/* descriptif : retourne true ou false si navigateur est IE4.0		    */
/****************************************************************************/
function navigateur_ok()
{
return(true);
/*if((navigator.appName=="Microsoft Internet Explorer") && (parseInt(navigator.appVersion)>=4))
    return(true);
else if((navigator.appName=="Netscape") && (parseFloat(navigator.appVersion)<4.76)&&(parseFloat(navigator.appVersion)>=4.08))
    return(true);
  else return(false);*/
}

/****************************************************************************/
/* nom : control_global					    	    */
/* auteur : Tony							    */
/* date : 24/01/99							    */
/* entree : 								    */
/* sortie : 				 				    */
/* descriptif : test si la resolution et la version de navigateur sont bonnes*/
/****************************************************************************/
function control_global()
{
  if(!resolution_ok())
  {
    //alert("Vous devez changer la résolution de votre écran en 800 x 600  ou en 1024 x 768 et relancez l'application");
    alert(MESS09);
	window.close();
  }
  
  if(!navigateur_ok())
  {
    //alert("Vous devez utilisez Internet Explorer version 4.0 pour utiliser l'applicatif");
    alert(MESS10);
    window.close();
  }
}

/****************************************************************************/
/* nom : transfert_adresse				    	    	    */
/* auteur : Tony							    */
/* date : 22/02/99							    */
/* entree : 								    */
/* sortie : 				 				    */
/* descriptif : transfert les données d'adresse de facturation dans adresse */
/*		de livraison						    */
/****************************************************************************/
function transfert_adresse()
{
  with(top.frames[2].frames[0].document.forms[0])
  {
    LNOM.value = NOM.value;
    LADR1.value = ADR1.value;
    LADR2.value = ADR2.value;
    LADR3.value = ADR3.value;
    LVILLE.value = VILLE.value;
    LCP.value = CP.value;
    LNUMTEL.value = NUMTEL.value;
    LFAX.value = FAX.value;
  }	
}

/****************************************************************************/
/* nom : afficheEUR				    	    	            */
/* auteur : dgimelle							    */
/* date : 04/07/2001							    */
/* entree : 								    */
/* sortie : 				 				    */
/* descriptif : affiche EUR en Rouge si TAUXEURO > 0                        */
/****************************************************************************/
function afficheEUR()
{
if (TAUXEURO>0)
 document.write('<font color="#CC0033" size="1" face="Comic Sans MS"> EUR');
}

//Debut modif bug javascript
/****************************************************************************/
/* nom : BonVersTotal				    	    	            */
/* auteur : Fred							    */
/* date : 03/10/2001							    */
/* entree : 								    */
/* sortie : 				 				    */
/* descriptif : Envoie les données concernant le total commande du bon	    */
/*              de commande vers le pied de page                            */
/****************************************************************************/
function BonVersTotal()
{
	top.frames[2].frames[1].document.forms[0].MontTVA.value=top.frames[2].frames[0].document.forms[3].MontTVA.value;
	top.frames[2].frames[1].document.forms[0].MontHT.value=top.frames[2].frames[0].document.forms[3].MontHT.value;
	top.frames[2].frames[1].document.forms[0].MontNet.value=top.frames[2].frames[0].document.forms[3].MontNet.value;
	top.frames[2].frames[1].document.forms[0].Budget.value=top.frames[2].frames[0].document.forms[3].Budget.value;
	top.frames[2].frames[1].document.forms[0].DEVISENATIONALTTC.value=top.frames[2].frames[0].document.forms[3].DEVISENATIONALTTC.value;
	top.frames[2].frames[1].document.forms[0].FGestion.value=top.frames[2].frames[0].document.forms[3].FGestion.value;
	top.frames[2].frames[1].document.forms[0].Port.value=top.frames[2].frames[0].document.forms[3].Port.value;
	top.frames[2].frames[1].document.forms[0].TVA.value=top.frames[2].frames[0].document.forms[3].TVA.value;
}
//Fin modif bug javascript

function delay(gap){ /* gap is in millisecs */
var then,now; then=new Date().getTime();
now=then;
while((now-then)<gap)
{now=new Date().getTime();}
}//


