
/*ouverture des popup*/
function openpopup(page, x, y, scroll)
{
	var top=(screen.height-y)/2;
	var left=(screen.width-x)/2;
	window.open(page, "", "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars="+scroll+",resizable=0,top="+top+",left="+left+",width="+x+",height="+y);
}


/*debut du rollover sur les images*/
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
/*fin du rollover sur les images*/

/*debut du formulaire*/
/*valider un formuler*/
function validerform(formulaire, action)
{
	form=eval("document."+formulaire);	
	form.action.value = action;
	form.submit();
}
/*fonction appelée par le boutton de validation
liste des paramètre :
	form : nom du formulaire à appeler
	action : ce que engendre la validation du forumaire
	tableau : tableau avec tous les messages d'erreur il commence toujour à la cellule 3
	on ajoute ensuite tous les champs obligatoirez du formulaire*/
function boutonval(form, action, tableau)
{
	
	if(testchamps(form, 'boutonval', tableau))
	{
		 validerform(form, action);
	}
}    

/*teste les champs vide ou non*/
/*teste les ou*/
function testeou(champs, form, i)
{
	var j =0;
	erreur =1;
	message= tab[i];
	tabchamps = champs.split("/");
	max = tabchamps.length;
	for (j=0; j<max; j++)
	{
		if(tabchamps[j].indexOf("#", 1)>0)
		{
			if(!testeet(tabchamps[j], form, i))
			{
				tab[i]=message;
				tabetou = tabchamps[j].split("#");
				nomchamp = eval("document."+form+"."+tabetou[0]);
				if(nomchamp.value != "")
				{
					erreur=0;
				}
				
			}else if(testeet(tabchamps[j], form, i) && erreur==0)
			{
				erreur = 1;
			}
			
		}else
		{
			nomchamp = eval("document."+form+"."+tabchamps[j]);
			if(nomchamp.type == "checkbox" || nomchamp.type == "radio" )
			{
				if (nomchamp.checked== false && erreur == 1)
				{
					erreur =1;
				}else
				{
					erreur =0;
				}
			}else
			{	
				if (nomchamp.value == "" && erreur == 1)
				{
					erreur =1;
				}else
				{
					erreur =0;
				}
			}
		}
	}	
	return erreur;
}

/*teste les et*/
function testeet(champs, form, i)
{
	var j =0;
	erreurou = 0;
	tabchampsou = champs.split("#");
	for (j=0; j<tabchampsou.length; j++)
	{
		nomchamp = eval("document."+form+"."+tabchampsou[j]);
		
		if (erreurou == 0 && (nomchamp.value == "" || nomchamp.value == "http://"))
		{
			tabet = eval("message"+tabchampsou[1])
			tab[i] = tabet[j];
			erreurou =1;
			mailerreur=0;
		}else if (erreurou == 1 && nomchamp.value != "" && nomchamp.value != "http://")
		{
			mailerreur = testemail(tabchampsou[j], form, i)
			erreurou =1;
		}else
		{
			mailerreur = testemail(tabchampsou[j], form, i);
			tab[i] = "";
			erreurou = 0;
		}
	}
	return erreurou;
}

/*teste les mail*/
function testemail(champs, form, i)
{
	if (champs=="mail" || champs=="mel" || champs=="email")
	{
		nomchamp = eval("document."+form+"."+champs);
		if(nomchamp.value.indexOf("@", 1) < 0 && nomchamp.value != "")
		{
			mailerreur=1;
			alert("le mail n'est pas valide");
			return mailerreur;
		}else
		{
			mailerreur=0;
			return mailerreur;
		}
	}else
	{
		mailerreur=0;
		return mailerreur;
	}
}

/*test tous les champs*/
function testchamps(form, fonction, tableau)
{
	var i=0, j=0, buff=0, msgerreur= "", page="", bufferreur=1;
	mailerreur = imgerreur = 0;
	tab=eval("message"+tableau);
	/*fonction précédante*/
	obligatoire = eval(fonction+".arguments");

	/*test des champs obligatoires*/
	for (i=3; i<obligatoire.length; i++)
	{
		bufferreur =0;
		champstest = obligatoire[i].split("$");
		var ch = obligatoire[i];
		var dates = obligatoire[i].indexOf('dates');
		
		if(champstest[1] == "||")//un champs ou un autre
		{
			bufferreur = testeou(champstest[0], form, i);
		}else if(champstest[1] == "&&") //un champs et un autre
		{
			bufferreur = testeet(champstest[0], form, i);
		}else if(champstest[1] == "img") //le type d'une image
		{
			tab = champstest[0].split("/");
			if (eval("document."+form+"."+tab[0]+".value") != "")
			{
				img = eval("document."+form+"."+tab[0]+".value")
				type =img.split(".");
				max = type.length-1;
				if(type[max].toLowerCase()!=tab[1])
				{
					alert ("Le fichier n'est pas au bon format : il faut du "+tab[1]);
					return 0;
				}
			}

		}else if(champstest[1] == "=") //deux champs egaux
		{
			tabchampsegau = champstest[0].split("/");
			if(eval("document."+form+"."+tabchampsegau[0]+".value") != eval("document."+form+"."+tabchampsegau[1]+".value"))
			{
				alert(tab[i]);
				return 0;
			}
		}else if(champstest[1]=="num") // teste les champs numériques
		{
			bufferreur = saisinumeric(champstest[0], form);
		}else if(champstest[1]=="long") // teste la longueur des champs
		{
			bufferreur = longmax(champstest[0], form);
		}else if(eval("document."+form+"."+champstest[0]+".value") == "" || eval("document."+form+"."+champstest[0]+".value") == "http://")
		{
			bufferreur=1;
		}else if (dates!=-1)
		{		
			champdate = eval("document."+form+"."+champstest);
			ch = verif_date(champdate.value);
			if (ch==0)
			{
				return 0;
			}
		}
		mailerreur = testemail(champstest[0], form, i);
		
		if (bufferreur == 1)
		{
			if (buff==1){msgerreur += ", ";}
			msgerreur += tab[i];
			buff = 1
		}
	}
	if(msgerreur=="" && mailerreur==0)/*si il n'y a pas d'erreur*/
	{
		return 1;
	}else if(mailerreur==0)
	{
		alert ("Vous n'avez pas saisi :\n"+msgerreur);
		return 0;
	}
}

/*verifie les dates*/
function verif_date(d)
{
	var amin=2000; // année mini
	var j=(d.substring(0,2));
	var m=(d.substring(3,5));
	var a=(d.substring(6));
	
	var ok=1;
	if (((isNaN(j))||(j<1)||(j>31)) && (ok==1))
	{
	   alert("Le jour n'est pas correct.");
	   ok=0;
	}
	if (((isNaN(m))||(m<1)||(m>12)) && (ok==1))
	{
	   alert("Le mois n'est pas correct.");
	   ok=0;
	}
	if (((isNaN(a))||(a<amin)) && (ok==1))
	{
	   alert("L'année n'est pas correcte.");
	   ok=0;
	}

	if (ok==1)
	{
	   var d2=new Date(a,m-1,j);
	   j2=d2.getDate();
	   m2=d2.getMonth()+1;
	   a2=d2.getYear();
	   if (a2<=100)
	   {
	   		a2=2000+a2;
	   }
	   if (j2<10) j2="0"+j2;
	   if (m2<10) m2="0"+m2;
	   if ((j!=j2)||(m!=m2)||((a!=a2) && (a-1900!=a2)))
	   {
	      alert("La date "+d+" n'existe pas !");
	      ok=0;
	   }
	   else
	   {
	   		date_archive = a+"-"+m+"-"+j;
	   	}
	}
	return ok;
}

//test si c'est un champs numérique
function saisinumeric(champs, form)
{
	//explode a partir du @
	tabchamps = champs.split("@");
	// la valeur reçoit la valeur du champs du formulaire
	valeur = eval("document."+form+"."+tabchamps[0]+".value");
	//var erreur recoit 0
	var erreur = 0 ;
	//si la valeur est différente du champs 
	if(valeur!=tabchamps[1])
	{// pour toutes les var égale a 0 ou toutes les valeurs > a la taille max
		for (var i = 0; i < valeur.length ; i++) 
		{//de la valeur est extrait les caractere du premier au dernier 1 par 1
			var chaine = valeur.substring (i, i + 1);
			//si il y des caractere <> de 0 à 9 alors erreur
			if (chaine < "0" || "9" < chaine)
				erreur=1;
      		}
	}
	return erreur;
}

//test la longueur d'un champs
function longmax(champs, form)
//on crée un tableau en séparant les caracteres a gauhe du "@"
{
	tabchamps = champs.split("@");
	valeur = eval("document."+form+"."+tabchamps[0]+".value")
// variable 'erreur' = 0 par défaut	
	var erreur = 0 ;
//test si le nb caractere dans le champs saisit est =! a la valeur dans devis.php et si c vide
	if(valeur.length!=tabchamps[1] && valeur!="")
	{
//si c =! erreur passe à 1		
		erreur = 1	 
	}
//renvoi de la valeur de erreur	
	return erreur;
}/*fin du formulaire*/


/*fonction du plan du site*/
function lancer_lien(lien, x, y, scroll)
{
	if(x == '')
	{
		top.window.opener.location.href=lien;
	}else
	{		
		openpopup(lien,x,y,scroll)
	}

	window.close();
}
