function VerifMail(a) {
	valide1 = false;
	
	for(var j=1;j<(a.length);j++){
		if(a.charAt(j)=='@'){
			if(j<(a.length-4)){
				for(var k=j;k<(a.length-2);k++){
					if(a.charAt(k)=='.') valide1=true;
				}
			}
		}
	}
	return valide1;
}

// <Fonctions de calcul des dimensions et des quantites
	function CalculerQuantite() {
			var largeurObject = document.formulaire.Largeur;
			var longueurObject = document.formulaire.Longueur;
			var largeur = document.formulaire.Largeur.value.replace(",",".");
			var longueur = document.formulaire.Longueur.value.replace(",",".");
			var LibelleUnite;
			var codearticle = document.formulaire.codearticletemp.value;
			codearticle = codearticle.toLowerCase();
			if ((largeur.length>0)&&(longueur.length>0))
			{
				if (!isNumeric(largeur) || !isNumeric(longueur)) {
					alert("La valeur saisie n'est pas un nombre");
				} else {
					LibelleUnite = document.formulaire.Unite.value;
					LibelleUnite = LibelleUnite.toLowerCase().trim();
					if (LibelleUnite != 't') {
						if (NotInListeCodeArticle(codearticle)) {
							if ((eval(largeur*longueur) > 0) && (eval(largeur*longueur) < 1))
							{
								largeur = 1;
								longueur = 1;
								document.formulaire.Largeur.value = 1;
								document.formulaire.Longueur.value = 1;
							}
						}
					}
					document.formulaire.Quantite.value = eval(largeur*longueur);
				}
			}
			else
			{
				document.formulaire.Quantite.value = "";
			}
	}
	
	function NotInListeCodeArticle(codearticle) {
		// anciens codes
		//return (codearticle != 'a2.05' && codearticle != 'a2.16' && codearticle != 'b4.04' && codearticle != 'e1.57' && codearticle != 'e1.59' && codearticle != 'g3.60' && codearticle != 'g3.62' && codearticle != 'g3.09')
		//alert(codearticle);
		return (codearticle != 'a2.05' && codearticle != 'a2.16' && codearticle != '1.02' && codearticle != 'e1.57' && codearticle != 'e1.59' && codearticle != 'g3.60' && codearticle != 'g3.62' && codearticle != 'g3.09')
	}

	function CalculerDimensions() {
			var quantite = document.formulaire.Quantite.value.replace(",",".");
			var largeurObject = document.formulaire.Largeur;
			var longueurObject = document.formulaire.Longueur;
			var prixUnit = document.formulaire.PrixUnitaire.value.replace(",",".");
			
			if (quantite.length>0)
			{
				if (!isNumeric(quantite)) {
					alert("La valeur saisie n'est pas un nombre")
				} else {
					document.formulaire.Largeur.value = "1";
					document.formulaire.Longueur.value = eval(quantite);
					if (prixUnit.length > 0) calculprix(quantite);
				}
			}
			else
			{
				document.formulaire.Largeur.value = "";
				document.formulaire.Longueur.value = "";
			}
	}

	function calculprix(qte)
	{
		var lyonnaise = document.formulaire.Utilisateur_Lyonnaise.value;
		var LibelleUnite = document.formulaire.Unite.value.toLowerCase().trim();
		var idarticle = document.formulaire.idarticletemp.value;
		var codearticle = document.formulaire.codearticletemp.value;
		codearticle = codearticle.toLowerCase();
		
		if (LibelleUnite != 't') {
			// if (idarticle != '5' && idarticle != '129' && idarticle != '274' && idarticle != '289' && idarticle != '264' && idarticle != '290' && idarticle != '291' && idarticle != '175' && idarticle != '181' && idarticle != '177' && idarticle != '250' && idarticle != '179' && idarticle != '252' && idarticle != '74' && idarticle != '168') {
			if (NotInListeCodeArticle(codearticle)) {
				if ((qte > 0) && (qte < 1))
				{
					qte=1;
					document.formulaire.Largeur.value = 1;
					document.formulaire.Longueur.value = 1;
					document.formulaire.Quantite.value = qte;
				}
			}
		}
		if (lyonnaise != "False") {
			if (qte < 3) document.formulaire.PrixUnitaire.value = document.formulaire.prixunit1.value;
			else document.formulaire.PrixUnitaire.value = document.formulaire.prixunitGQ.value;
		} else {
			//alert(document.formulaire.PrixUnitaire.value + '\n' + document.formulaire.prixunit1.value);
			document.formulaire.PrixUnitaire.value = document.formulaire.prixunit1.value;
		}
		qte=eval(qte)*100;
		qte=Math.round(qte)/100;
		document.formulaire.Quantite.value=qte;
		var prix=document.formulaire.PrixUnitaire.value;
		if ((prix.indexOf("NaN") < 0)&&(prix.indexOf("nous contacter") < 0))
		{
			prix=prix.replace(',','.')*qte;
			prix = eval(prix) * 100;
			prix=Math.round(prix) / 100;
			document.formulaire.PrixCalcule.value=prix;
			var prixf=document.formulaire.PrixCalcule.value;
			if (prixf.indexOf("NaN") < 0)
			{
			prixf=prixf.replace('.',',');
			virgule=prixf.indexOf(",");
			if ( virgule < 0 )
				prixf += ",00";
			else
				if ( virgule + 3 > prixf.length)
				{
					prixf += "0";
				}
			document.formulaire.PrixCalcule.value=prixf;
			}
		}
		else
		{document.formulaire.PrixCalcule.value="";}
	}


	// </Fonctions de verif de date
	function validedate(valeur)
	{
		var amin=2004; // année mini
		var separateur="/"; // separateur entre jour mois annee
		var j=new Number(valeur.substring(0,2));
		var m=new Number(valeur.substring(3,5));
		var a=new Number(valeur.substring(6));
		var invalide = Number.NaN;
		if ((j.toString() == invalide.toString()) || (m.toString() == invalide.toString()) || (a.toString() == invalide.toString()))
		{	var ok=0 }	else	{	var ok = 1	};
		if ( ((isNaN(j))||(j<1)||(j>31)) && (ok==1) ) {ok=0;}
		if ( ((isNaN(m))||(m<1)||(m>12)) && (ok==1) ) {ok=0;}
		if ( ((isNaN(a))||(a<amin)) && (ok==1) ) {ok=0;}
		if ( ((valeur.substring(2,3)!=separateur)||(valeur.substring(5,6)!=separateur)) && (ok==1) ) {ok=0;}
		if (ok==1) {
		   var debut=new Date(a,m-1,j);
		   j2=new Number(debut.getDate());
		   m2=new Number(debut.getMonth()+1);
		   a2=new Number(debut.getYear());
		   if (a2<=100) {a2=1900+a2}
		   ok = ( (j-j2!=0)||(m-m2!=0)||(a-a2!=0) ) ? 0 : debut;
		}
		return (ok);
	}

	var decimales=".0123456789";
	function isNumeric(expression)
	{
		// expression : chaine ou caractère
		if (expression.length==0)
		{	return false;}
		else
		{
			var a=new Number(expression);
			var invalide = Number.NaN;
			if(a.toString() == invalide.toString())
			{	return false;}
			else
			{	return true;}
		}
	}

	function raz()
	{
		document.formulaire.Largeur.value="";
		document.formulaire.Longueur.value="";
		document.formulaire.Quantite.value="";
		document.formulaire.Unite.value="";
		document.formulaire.LibelleTravail.value="";
		document.formulaire.Observations.value="";
		document.formulaire.PrixUnitaire.value="";
		document.formulaire.PrixCalcule.value="";
		document.formulaire.CodeArticle.value="";
	}

	function ValidationFormulaire()
	{
		if ((document.formulaire.boutonform.value=="AjouterLigne")||(document.formulaire.boutonform.value=="Valider"))
		{	return Verif_ligne();	}
		else
		{	return true; }
	}

	//Fonction appelée indirectement lors du clic sur "ajouter une ligne" : elle valide les valeurs saisies.
	function Verif_ligne()
	{
		okligne = true;
		text_alert = "";
		nf = document.formulaire;
		var quantite = nf.Quantite.value.replace(",",".");
		var largeur = nf.Largeur.value.replace(",",".");
		var longueur = nf.Longueur.value.replace(",",".");
		var idcommande = nf.idcommande.value;
		var idCategorie = nf.idCategorie.value;
		var idArticle = nf.idArticle.value;
		var Unite = nf.Unite.value;
		var LibelleTravail = nf.LibelleTravail.value;
		var Observations = nf.Observations.value;
		var PrixUnitaire = nf.PrixUnitaire.value;
		var PrixCalcule = nf.PrixCalcule.value;
		var ReferenceClient = nf.ReferenceClient.value;
		var Imputation 	= nf.Imputation.value;
		var GIT 	= (nf.GIT!=null) ? nf.GIT.value : "0";		//que pour l'admin
		var DateCommande 	= (nf.DateCommande!=null) ? nf.DateCommande.value : "0";		//que pour l'admin
		var DateButoir 	= (nf.DateButoir.value.length>0) ? validedate(nf.DateButoir.value) : "";								// en fait c'est la date de commande qui est obligatoire
		var emailclient = nf.emailclient.value;
		var Adresse 		= nf.Adresse.value;
		var Ville 			= nf.Ville.value;
		var IdSecteur 		= (nf.idsecteur_select.value.length>0) ? nf.idsecteur_select.value : (nf.CodeSecteur!=null) ? nf.CodeSecteur.value : "CodeSecteur";
		var IdCommanditaire	= nf.idcommanditaire_select.value;
		var PersonneQuiCommande = (nf.PersonneQuiCommande!=null) ? nf.PersonneQuiCommande.value : "";
		var NbTravaux = (nf.NbTravaux!=null) ? nf.NbTravaux.value : 0;
		NbTravaux = ((NbTravaux.length > 0)&&(isNumeric(NbTravaux))) ? NbTravaux : 0;

		if (ReferenceClient.length==0) {text_alert += "Veuillez renseigner la référence de la commande.\n";okligne = false;};
		if (Imputation.length==0) {text_alert += "Veuillez renseigner l'imputation.\n";okligne = false;};
		if (GIT.length==0) {text_alert += "Veuillez renseigner le GIT.\n";okligne = false;};
		if ((Adresse.length==0)||(Ville.length==0)) {text_alert += "L'adresse est incomplète.\n";okligne = false;};
		if ((IdCommanditaire.length==0)) {text_alert += "Veuillez renseigner le commanditaire de la commande.\n";okligne = false;};
		if ((IdSecteur.length==0)||(IdSecteur=="CodeSecteur")) {text_alert += "Veuillez renseigner le secteur de la commande.\n";okligne = false;};
		if (DateCommande==0) {text_alert += "Erreur dans la saisie de date de commande. Format : jj/mm/aaaa\n";okligne = false;};
		if ((DateButoir.length > 0)&&(DateButoir==0)) {text_alert += "Erreur dans la saisie de date butoire. Format : jj/mm/aaaa\n";okligne = false;};
		if (emailclient.length==0) {text_alert += "Veuillez renseigner l\'email du contact client.\n";okligne = false;};
		if (emailclient.length>0 && !VerifMail(emailclient)) {text_alert += "L\'email du contact client n\'est pas valide.\n";okligne = false;};
		//Les elements suivant ne se testent que si TOUS les champs ne sont pas vide ET que nbTravaux > 0
		var text_alert2 = "";
		if (idCategorie.length==0) {text_alert2 += "Veuillez renseigner la désignation du travail.\n";};
		if (idArticle.length==0) {text_alert2 += "Veuillez renseigner le detail du travail.\n";};
		if (!isNumeric(quantite) || quantite.length == 0) {
			text_alert2 += "Veuillez renseigner la quantité (format numérique).\n";
		} else {
			if (largeur.length == 0 || longueur.length == 0) CalculerDimensions();
		}
		if ((text_alert2.length!=0)&&(nf.boutonform.value=="AjouterLigne"))
		{text_alert += text_alert2; okligne = false;}

		if (!okligne) {alert(text_alert)}
		//else{nf.EditerTravail.value = ""};
		return okligne;
	}

	function majSecteur(chaine)
	{
		var separateur="#";
		var index1=chaine.indexOf(separateur);
		var index2=chaine.indexOf(separateur, index1+1);
		var codeSecteur=chaine.substring(index1+1, index2);
		var horscub=chaine.substring(index2+1);
		document.formulaire.CodeSecteur.value = codeSecteur;
		document.formulaire.HorsCub.value = horscub;
	}

	function majSecteurSelect(chaine)
	{
		var separateur="#";
		var chaine = separateur+chaine+separateur;
		var trouve = false;
		for(i=1;i< document.getElementById('idsecteur_select').length ;i++){
			present = document.getElementById('idsecteur_select').options[i].value.indexOf(chaine);
			if (present > 0) {document.getElementById('idsecteur_select').selectedIndex= i;trouve = true;}
		}
		if (!trouve) {document.formulaire.CodeSecteur.value = "CodeSecteur";document.getElementById('idsecteur_select').selectedIndex= 0;}
	}



	function majchampsTarifs(chaine)
	{
		var separateur="#";
		var index1=chaine.indexOf(separateur);
		var index2=chaine.indexOf(separateur, index1+1);
		var index3=chaine.indexOf(separateur, index2+1);
		var index4=chaine.indexOf(separateur, index3+1);
		var index5=chaine.lastIndexOf(separateur);
		var idarticle=chaine.substring(0, index1);
		var prix1=chaine.substring(index1+1, index2);
		var unite=chaine.substring(index2+1,index3);
		var libelle=chaine.substring(index3+1, index4);
		var codearticle=chaine.substring(index4+1, index5);
		var prixGQ = chaine.substring(index5+1);
		var quantite = document.formulaire.Quantite.value.replace(",",".");
		var lyonnaise = document.formulaire.Utilisateur_Lyonnaise.value;
		var prix;
		var LibelleUnite;

		document.formulaire.idarticletemp.value = idarticle.trim();
		document.formulaire.codearticletemp.value = codearticle.trim();

		var virgule=prix1.indexOf(",");
		if (prix1 != "")
			if (prix1 == "0")
				prix1 = "nous contacter";
			else
				if ( virgule < 0 )
					prix1 += ",00";
				else
					if (virgule + 3 > prix1.length)
					{
						prix1 += "0";
					}
		virgule=prixGQ.indexOf(",");
		if (prixGQ != "")
			if (prixGQ == "0")
				prixGQ = "nous contacter";
			else
				if ( virgule < 0 )
					prixGQ += ",00";
				else
					if ( virgule + 3 > prixGQ.length)
					{
						prixGQ += "0";
					}
		document.formulaire.prixunitGQ.value = prixGQ;
		document.formulaire.prixunit1.value = prix1;
		if (lyonnaise != "False") {
			if (quantite < 3) {
				prix = prix1;
				document.formulaire.PrixUnitaire.value = prix1;
			}
			else {
				prix = prixGQ;
				document.formulaire.PrixUnitaire.value = prixGQ;
			}
		} else {
			prix = prix1;
			document.formulaire.PrixUnitaire.value = prix1;
		}

		document.formulaire.Unite.value=' ' + unite;
		document.formulaire.LibelleTravail.value=libelle;
		document.formulaire.CodeArticle.value=codearticle;
		if(prix!="nous contacter")
		{	document.formulaire.PrixCalcule.value=prix.replace(',','.')*document.formulaire.Quantite.value.replace(',','.');}
		else
		// pourquoi le mettre a vide si = a nous contacter ...
		{	document.formulaire.PrixCalcule.value = "";}
		PrixCalcule=document.formulaire.PrixCalcule.value;

		if ((PrixCalcule.indexOf("NaN") < 0)&&(PrixCalcule.indexOf("nous contacter") < 0)&&(PrixCalcule.length>0))
		{
			PrixCalcule=PrixCalcule.replace('.',',');
			virgule=PrixCalcule.indexOf(",");
			if ( virgule < 0 )
				PrixCalcule += ",00";
			else
				if ( virgule + 3 > PrixCalcule.length)
				{
					PrixCalcule += "0";
				}
			PrixCalcule=PrixCalcule.replace(',','.');
			PrixCalcule=eval(PrixCalcule)*100;
			PrixCalcule=Math.round(PrixCalcule)/100;
			document.formulaire.PrixCalcule.value=PrixCalcule;
		}
		else
		{document.formulaire.PrixCalcule.value="";}

		LibelleUnite = document.formulaire.Unite.value;
		LibelleUnite = LibelleUnite.toLowerCase().trim();

		codearticle = codearticle.toLowerCase();
		if (LibelleUnite != 't') {
			if (NotInListeCodeArticle(codearticle)) {
				if ((quantite > 0) && (quantite < 1))
				{
					quantite=1;
					document.formulaire.Largeur.value = 1;
					document.formulaire.Longueur.value = 1;
					document.formulaire.Quantite.value = quantite;
				}
			}
		}
	}

	String.prototype.trim = function()
	{ return this.replace(/(^\s*)|(\s*$)/g, ""); }