function MM_displayStatusMsg(msgStr) { //v1.0
  status=msgStr;
  document.MM_returnValue = true;
}

var val=0
function search(expr,a,b) {
	var i=0
	while (i!=-1) {	
		i=expr.indexOf(a,i);
		if (i>=0) {
			if (i==0) {
				expr=expr.substring(0,i)+b+expr.substring(i+a.length);
				i+=b.length	
			} else {
				if (expr.substring(i-1,i)!="a") {
					expr=expr.substring(0,i)+b+expr.substring(i+a.length);
					i+=b.length
				} else {i++}
			}
		
		}
	}
	return expr

}

function formatNumber(valeur,decimales)
{
	this.value = valeur;
	this.decimales = decimales;
	this.format = format;
}

function format()
{
	valeur = this.value;
	decimales = this.decimales;
	valeur = valeur*(Math.pow(10,decimales));
	valeur = Math.round(valeur);
	valeur = valeur/(Math.pow(10,decimales));
	valeur = valeur.toString();
	indPoint = valeur.indexOf(".");
	var valeurPE;
	var valeurPD;
	if (indPoint == -1)
	{
		valeurPD = new String("0",decimales);
		valeurPE = valeur;
	}
	else
	{
		valeurPD = valeur.substr(indPoint+1);
		valeurPE = valeur.substring(0,indPoint);
	}
	while (valeurPD.length < decimales)
	{
		valeurPD = valeurPD + "0";
	}
	valeurTMP = valeurPE;
	valeurPE = "";
	while (valeurTMP.lenght > 3)
	{
		valeurPE = " " + valeurTMP.substr(valeurTMP.lenght-3) + valeurPE;
		valeurTMP = valeurTMP.slice(0,-3);
	}
	valeurPE = valeurTMP + valeurPE;
	valeur = valeurPE + "," + valeurPD;
	return valeur;
}

function Valoriser(f) {
	var prix01=13.5;
	var prix02=8.80;
	var prix03=9.80;
	var prix04=9.80;
	var prix05=17;
	var prix06=17;
	var prix07=7.10;
	var prix09=2.80;
	var prix10a=2.70;
	var prix10b=3.50;
	var prix11a=3.20;
	var prix11b=4.50;
	var prix12a=2.20;
	var prix12b=2.80;
	var prix13a=2.70;
	var prix13b=3.50;
	var prix14a=2.70;
	var prix14b=3.50;
	var prix16=3.80;
	var envoi080=8;
	var envoi150=11;
	var envoi225=15;
	var envoi300=18;
	var envoi301=0;
    val01=prix01*f.elements["qte01"].value;
    deuxdeci = new formatNumber(val01,2);
	f.elements["res01"].value=deuxdeci.format();
    val02=prix02*f.elements["qte02"].value;
    deuxdeci = new formatNumber(val02,2);
	f.elements["res02"].value=deuxdeci.format();
    val03=prix03*f.elements["qte03"].value;
    deuxdeci = new formatNumber(val03,2);
	f.elements["res03"].value=deuxdeci.format();
    val04=prix04*f.elements["qte04"].value;
    deuxdeci = new formatNumber(val04,2);
	f.elements["res04"].value=deuxdeci.format();
    val05=prix05*f.elements["qte05"].value;
    deuxdeci = new formatNumber(val05,2);
	f.elements["res05"].value=deuxdeci.format();
    val06=prix06*f.elements["qte06"].value;
    deuxdeci = new formatNumber(val06,2);
	f.elements["res06"].value=deuxdeci.format();
    val07=prix07*f.elements["qte07"].value;
    deuxdeci = new formatNumber(val07,2);
	f.elements["res07"].value=deuxdeci.format();
    val09=prix09*f.elements["qte09"].value;
    deuxdeci = new formatNumber(val09,2);
	f.elements["res09"].value=deuxdeci.format();
    val10a=prix10a*f.elements["qte10a"].value;
    deuxdeci = new formatNumber(val10a,2);
	f.elements["res10a"].value=deuxdeci.format();
    val10b=prix10b*f.elements["qte10b"].value;
    deuxdeci = new formatNumber(val10b,2);
	f.elements["res10b"].value=deuxdeci.format();
    val11a=prix11a*f.elements["qte11a"].value;
    deuxdeci = new formatNumber(val11a,2);
	f.elements["res11a"].value=deuxdeci.format();
    val11b=prix11b*f.elements["qte11b"].value;
    deuxdeci = new formatNumber(val11b,2);
	f.elements["res11b"].value=deuxdeci.format();
    val12a=prix12a*f.elements["qte12a"].value;
    deuxdeci = new formatNumber(val12a,2);
	f.elements["res12a"].value=deuxdeci.format();
    val12b=prix12b*f.elements["qte12b"].value;
    deuxdeci = new formatNumber(val12b,2);
	f.elements["res12b"].value=deuxdeci.format();
    val13a=prix13a*f.elements["qte13a"].value;
    deuxdeci = new formatNumber(val13a,2);
	f.elements["res13a"].value=deuxdeci.format();
    val13b=prix13b*f.elements["qte13b"].value;
    deuxdeci = new formatNumber(val13b,2);
	f.elements["res13b"].value=deuxdeci.format();
    val14a=prix14a*f.elements["qte14a"].value;
    deuxdeci = new formatNumber(val14a,2);
	f.elements["res14a"].value=deuxdeci.format();
    val14b=prix14b*f.elements["qte14b"].value;
    deuxdeci = new formatNumber(val14b,2);
	f.elements["res14b"].value=deuxdeci.format();
	val16=prix16*f.elements["qte16"].value;
    deuxdeci = new formatNumber(val16,2);
	f.elements["res16"].value=deuxdeci.format();
    val=0;
    val=val01+val02+val03+val04+val05+val06+val07+val09+val10a+val11a+val12a+val13a+val14a+val10b+val11b+val12b+val13b+val14b+val16;
    deuxdeci = new formatNumber(val,2);
    f.elements["total"].value=deuxdeci.format();

    envoi = envoi301;
    if (val <= 80)
	{
		envoi = envoi080;
	}
	else
	{
	    if (val <= 150)
		{
		    envoi = envoi150;
		}
	    else
		{
		    if (val <= 225)
			{
			    envoi = envoi225;
			}
		    else
			{
			    if (val <= 300)
				{
					envoi = envoi300;
				}
			}
		}
	}

    deuxdeci = new formatNumber(envoi,2);
    f.elements["envoi"].value=deuxdeci.format();

    apayer = val + envoi;
    deuxdeci = new formatNumber(apayer,2);
    f.elements["apayer"].value=deuxdeci.format();

}

/* les controles sont pilotes par une convention de nomage des 2 derniers caracteres du champ NAME des objets du formulaire, avant dernier carac a R signifie saisie requise (obligatoire) ou autre lettre (X par convention) sinon et dernier carac a E entier, N numérique, D date, X chaine car, M adresse email */

function testEntier(valeur)
{
  if (valeur == parseInt(valeur)) return true;
  else return false;
}

function testDate(jour,mois,annee)
{
  var erreur;
  erreur = 0;
  valeurJour = jour.toString();
  valeurMois = mois.toString();
  valeurAnnee = annee.toString();
  if ((!testEntier(valeurJour)) || (valeurJour.length != 2)) erreur = 1;
  if ((!testEntier(valeurMois)) || (valeurMois.length != 2))erreur = 1;
  if ((!testEntier(valeurAnnee)) || (valeurAnnee.length != 4)) erreur = 1;
  var bis;
  var maxFev;
  bis = valeurAnnee % 4;
  if (bis == 0) maxFev = 29;
  else maxFev = 28;
  var maxJours;
  maxJours = new Array(31,maxFev,31,30,31,30,31,31,30,31,30,31);
  if (valeurJour > maxJours[valeurMois-1]) erreur = 1;
  if (erreur == 0) return true;
  else return false;
}

function isDate(valeur)
{
  var erreur;
  erreur = 0;
  var jour;
  var mois;
  var annee;
  valeurDate = valeur;
  indSep1 = valeurDate.indexOf("/");
  indSep2 = valeurDate.lastIndexOf("/");
  if ((indSep1 != -1) && (indSep1 != indSep2))
  {
    jour = valeurDate.substring(0,indSep1);
    mois = valeurDate.substring(indSep1+1,indSep2);
    annee = valeurDate.substr(indSep2+1);
    if (!testDate(jour,mois,annee)) erreur = 1;
  }
  else erreur = 1;
  if (erreur == 0) return true;
  else return false;
}

function testRadio(nomForm,nomGroupe)
{
  var compteur;
  compteur = 0;
  while (compteur < nomForm.elements[nomGroupe].length)
  {
    if (nomForm.elements[nomGroupe][compteur].checked) 
    return true;
    compteur++;
  }
  return false;
}

function testMail(email)
{
  var posArobase;
  posArobase = email.indexOf("@");
  if (posArobase == -1) return false;
  var posPoint;
  posPoint = email.lastIndexOf(".");
  if ((posPoint == -1) || (posPoint < posArobase)) return false;
  return true;
}

function testrequis(nom)
{
  if (nom.lastIndexOf("R")==nom.length-2) return true;
  return false;
}

function ctrleForm(nomForm)
{
  champ=nomForm.elements;
  nbr = champ.length;
  i=0;
  while (i<nbr)
  {
    testtemp=champ[i].type.substring(0,3);
	switch (testtemp)
    {
      case "tex" :
        if (testrequis(champ[i].name)) 
        {
          if (champ[i].value=="") 
          {
            window.alert ("Le champ "+champ[i].name.slice(0,-2)+" doit être renseigné");
            champ[i].focus();
            return false;
          }
        }
        switch (champ[i].name.substr(champ[i].name.length-1))  
        {
          case "N" : 
            if (!testNumerique(champ[i].value))
            {
              window.alert ("Le champ "+champ[i].name.slice(0,-2)+" doit être un nombre");
              champ[i].value="";
              champ[i].focus();
              return false;
            }
			break;
          case "E" : 
            if (!testEntier(champ[i].value))
            {
              window.alert ("Le champ "+champ[i].name.slice(0,-2)+" doit être un nombre entier");
              champ[i].value="";
              champ[i].focus();
              return false;
            }
			break;
          case "M" : 
            if (!testMail(champ[i].value))
            {
              window.alert ("Le champ "+champ[i].name.slice(0,-2)+" semble ne pas avoir le format nom@domaine.com");
              champ[i].value="";
              champ[i].focus();
              return false;
            }
			break;
          case "D" : 
            if (!isDate(champ[i].value))   
            {
              window.alert ("Le champ "+champ[i].name.slice(0,-2)+" semble ne pas avoir le format jj/mm/aaaa");
              champ[i].value="";
              champ[i].focus();
              return false;
            }
			break;
          default :
           
        }
        break;

      case "sel" : 
        if ((testrequis(champ[i].name)) && (champ[i].options[champ[i].selectedIndex].value==""))
        {
          window.alert ("Veuillez sélectionner une option valide pour le champ "+champ[i].name.slice(0,-2));
          champ[i].focus();
          return false;
        }
		break;
      case "rad" : 
        if ((testrequis(champ[i].name)) && (!testRadio(nomForm,champ[i].name)))
        {
          window.alert("Les boutons radios ne sont pas renseignés correctement ");
          champ[i].focus();
          return false;
        }
		break;
      case "che" : 
	  	if ((testrequis(champ[i].name)) && (!champ[i].checked))
        {
          window.alert ("La case à cocher doit être validée ");
          champ[i].focus();
          return false;
        }
		break;
      default :
        
    }
    i++;
  }

  return true;
}

