// Fonction permettant de faire des vérifications sur des champs passés en paramètre
// Retourne true ou false
// Fonctionnement :
// Les "paramètres" sont séparés par des ";"
// Entre chaque ";" : 
// 	--> 1er champ : type de test à faire (non vide, numéric, mail ...)
//	--> Les champ suivant (séparés par des ",") : le nom des champs à tester
// exemple : fCheckField('OBLIG,champ1,champ2;NUMERIC,champ2,champ4;MAIL,champ1')

///////////////////////////////
////Powered by GiNs 01/2002////
///////////////////////////////

function fCheckField(params)
{
	var i;
	var y;
	var fField;
	var bError = 0;
	
	// On met dans un tableau les "bloc type de test / champs à vérifier" séparés par des ";"
	var tBloc = params.split(";");
	// Boucle sur les blocs
	for(i=0; i<tBloc.length; i++)
 	{
		// On met dans un tableau le type de test à faire + les champs à vérifier
		var tTest = tBloc[i].split(",");
	
		// Le 1er élément du tableau contient le type de test à faire
		var sTest = tTest[0];
		
		// Test le type de test à effectuer
		// Pour chaque test on boucle sur les champs à tester
	
		
		// TEST CHAMPS OBLIGATOIRES
		if (sTest == "OBLIG")
		{
			for(y=1; y<tTest.length; y++)
 			{
 				fField = MM_findObj(tTest[y]);
 				if (fField.type == 'text')
 				{
	 				if (fField.value == "")
	 				{
	 					badField(tTest[y]);
	 					alert('Ce champ est obligatoire');
	 					bError = 1;
	 					break;
	 				}
 				}
 				else
 				{
 					if (fField.length>1)
					{
						bOK = "False"
						for(J=0; J<fField.length; J++)
							{
							if (fField[J].checked == true)
								{
								bOK = "True";
								break;
								}
							}
						if (bOK == "False")
						{
							//badField(tTest[y]);
							alert('Les champs marqués d\'une * sont obligatoires');
							bError = 1;
		 					break;
						}
					}
 				}
 			}
		}
		
		
		// TEST MAIL
		if (sTest == "MAIL")
		{
			for(y=1; y<tTest.length; y++)
			 {
			 	fField = MM_findObj(tTest[y]);
			 	if (fField.value != "" && verifieMail(fField.value) == false)
			 	{
					badField(tTest[y]);
					alert('Adresse incorrecte');
					bError = 1;
					break;
				}
 			}
		}
		
		// TEST NUMERIC
		if (sTest == "NUMERIC")
		{
			for(y=1; y<tTest.length; y++)
			 {
				fField = MM_findObj(tTest[y]);
				if (fField.value != "" && isNaN(fField.value.replace(/,/g, ".")) == true)
				{
					badField(tTest[y]);
					alert('Ce champ doit être un numérique');
					bError = 1;
					break;
				}
			}
		}
		
		// TEST ENTIER
		if (sTest == "ENTIER")
		{
			for(y=1; y<tTest.length; y++)
			 {
				fField = MM_findObj(tTest[y]);
				if (fField.value != "" && isNaN(fField.value.replace(".", "gg")) == true)
				{
					badField(tTest[y]);
					alert('Ce champ doit être un entier');
					bError = 1;
					break;
				}
			}
		}
		
		// TEST IMAGE (JPEG, JPG, GIF)
		if (sTest == "IMG")
		{
			for(y=1; y<tTest.length; y++)
			 {
			 	fField = MM_findObj(tTest[y]);
			 	if (fField.value != "" && verifieImg(fField.value) == false)
			 	{
					badField(tTest[y]);
					alert('Ce champ doit être une image');
					bError = 1;
					break;
				}
 			}
		}
		
		// TEST PIECE JOINTE (DOC, ZIP)
				if (sTest == "PIECE")
				{
					for(y=1; y<tTest.length; y++)
					 {
					 	fField = MM_findObj(tTest[y]);
					 	if (fField.value != "" && verifiePiece(fField.value) == false)
					 	{
							badField(tTest[y]);
							alert('La piece jointe doit être un fichier .doc ou .zip');
							bError = 1;
							break;
						}
		 			}
		}
		
		// TEST FICHIER PDF
		if (sTest == "PDF")
		{
			for(y=1; y<tTest.length; y++)
			 {
			 	fField = MM_findObj(tTest[y]);
			 	if (fField.value != "" && verifiePDF(fField.value) == false)
			 	{
					badField(tTest[y]);
					alert('Ce champ doit être un fichier PDF');
					bError = 1;
					break;
				}
 			}
		}
		
		if (bError == 1)
		{
			document.back;
			bError = 1;
			break;
		}
	}
	
	if (bError == 0)
	{
		return true;
	}
	else
	{
		return false;
	}
}


function MM_findObj(n, d) { //v4.01
  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 && d.getElementById) x=d.getElementById(n); return x;
}

function badField(sField)
{
	var fField = MM_findObj(sField);
	if (document.all)
	{
		intrvl=0;
		for(nTimes=0;nTimes<5;nTimes++)
		{
			intrvl += 150;
			setTimeout("changeBgColor('"+sField+"','#618eb4');",intrvl);
			intrvl += 150;
			setTimeout("changeBgColor('"+sField+"','');",intrvl);
		}

		//fField.style.backgroundColor="blue";
	}
	fField.focus();
}

function changeBgColor(sField,sColor)
{
	var fField = MM_findObj(sField);
	fField.style.backgroundColor = sColor;
}


function verifieMail(email) {
var aroba = email.indexOf("@");
if (aroba == -1) {
  return false;
}
var point = email.indexOf(".", aroba);
if ((point == -1) || (point == (aroba + 1))) {
  return false;
}
var point = email.lastIndexOf(".");
if ((point + 1) == email.length) {
  return false;
}
point = email.indexOf("..")
if (point != -1) {
  return false;
}
return true;
}

function verifieImg(sImg) {
var point = sImg.lastIndexOf(".");
if (point == -1) {
  return false;
}
sExt = sImg.substring(point + 1);
sExtMaj = sExt.toUpperCase();
if (sExtMaj!='GIF' && sExtMaj!='JPEG' && sExtMaj!='JPG')
  return false;
return true;
}

function verifiePDF(sPdf) {
var point = sPdf.lastIndexOf(".");
if (point == -1) {
  return false;
}
sExt = sPdf.substring(point + 1);
sExtMaj = sExt.toUpperCase();
if (sExtMaj!='PDF')
  return false;
return true;
}

function verifiePiece(sFich) {
var point = sFich.lastIndexOf(".");
if (point == -1) {
  return false;
}
sExt = sFich.substring(point + 1);
sExtMaj = sExt.toUpperCase();
if (sExtMaj!='DOC' && sExtMaj!='ZIP')
  return false;
return true;
}