/********************************************************************************************************************
*			fonction NBEACHTYPE																						*
*			paramètre: chaine																						*
*			Met dans un tableau le nombre de valeurs alphanumérique et le nombre de valeurs de type entier			*
*			Renvoi un tableau : tab[0] nb d'éléments alpha, tab[1] nb d'entiers										*
*																													*
********************************************************************************************************************/

function nbEachType(val)//0 => alpha // 1 = entier
{
	var tabType = new Array(0,0);
	for(var i =0 ; i<val.length ; i++)
	{
		if((val.substr(i,1)-val.substr(i,1))==0)
			tabType[1] +=1;
		else
			tabType[0] +=1;
	}
	return tabType;
}

/********************************************************************************************************************
*			fonction TESTRADIO																						*
*			paramètre: objet radio d'un formulaire																	*
*			Renvoi la valeur sélectionnée si plusieurs objets radio ont le même nom 								*
*																													*
********************************************************************************************************************/

function testRadio(objRadio) 
{
	var radioVal = '';
	for (var i=0; i<objRadio.length ; i++) 
	{
		if (eval(objRadio)[i].checked) 
		{
			radioVal = eval(objRadio)[i].value;
		}
	}
	return radioVal;
}

/********************************************************************************************************************
*			fonction CHECKEMAIL																						*
*			paramètre: chaine																						*
*			Renvoi true ou false 																					*
*																													*
********************************************************************************************************************/

function checkEmail(chaine)
{
	
	var compte 		= "([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")";
	var domaine		= "([a-zA-Z0-9][a-zA-Z0-9._-]*\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\.[a-zA-Z]{2,5}";
	var reg 		= "^"+compte+"@"+domaine+"$";
	var regExp 		= new RegExp(reg);
	return regExp.test(chaine);
}

/********************************************************************************************************************
*			fonction CHECKFORM																						*
*			paramètres: objet formulaire, tableau avec le nom des champs, tableau avec msg d'erreur pour ces champs	*
*																													*
********************************************************************************************************************/
function checkForm(objForm,nomForm,tabObli,tabEquiv)
{
	/*bulleLeft		= (bulleLeft=='' || bulleLeft==undefined) ?0 : bulleLeft;
	bulleTop		= (bulleTop=='' || bulleTop==undefined) ? -60: bulleTop;
	*/	
	//var objForm		=	document.nomForm;
	var tabObli			= 	tabObli.split(',');
	var tabEquiv 		= 	tabEquiv.split(',');
	var alEr			= 	false;
	var newMsg			= 	'';
	
	//regs
	regCaracteresOff	=	new RegExp("^[a-zA-Z0-9]+$", "g");

	for(var i=0; i<tabObli.length ; i++)
	{
		//var deb 	= tabObli[i].substr(0,3);
		casSpec			=	tabObli[i].split('-');
		var deb 		= 	casSpec[0];

		var nomCheck 	= 	casSpec.length == 1 ? casSpec[0] : casSpec[1];
		nomChamp		=	'';
		
		if(deb.substr(0,3) == 'MIN')
		{
			longueur	=	deb.replace('MIN','');
			deb			=	'MIN';
		}

		//deb 	= deb[0];
		//var nomCheck= tabObli[i].substr(3,tabObli[i].length);//pour cas autres que default
		//var nomCheck= deb[1];*/
		//alert(deb);
		switch(deb)
		{
			case 'CHK':		var resultats	= 0;
			
							for (var j=0; j<objForm.length;j++)
							{
								//if(objForm[j].name)
								//	alert(objForm[j].name.substr(0,5));
								
								if (objForm[j].name && objForm[j].name.substr(0,nomCheck.length)==nomCheck && objForm[j].checked)
								{
									//alert(objForm[j].name.substr(0,5));
									resultats++;
									if(document.getElementById(objForm[j].name+'_hidden') && document.getElementById(objForm[j].name+'_hidden').style.display=='block')
										//newMsg = tabEquiv[i]+' reste à préciser';
										newMsg = tabEquiv[i]+' has to be precised';
								}
							}
							
							alEr = (resultats>0)? false : true;
							if(alEr)
								//newMsg = 'Veuillez cocher au moins une checkbox';
								newMsg = 'Please check at least one checkbox';
							break;
							
			case 'RAD':		if(testRadio(eval('objForm.'+nomCheck))=='')
							{
								alEr = true;
								//newMsg = 'Veuillez cocher une réponse';
								newMsg = 'Please check one answer';
							}
							break;
							
			case 'PSW': 	alEr			= true;
							if(eval('objForm.'+nomCheck) && eval('objForm.'+nomCheck+'.value.length')==0)
								newMsg		= 'Veuillez préciser un mot de passe';
							else if(eval('objForm.'+nomCheck) && eval('objForm.'+nomCheck+'.value.length')<6)
								newMsg		= 'Le mot de passe doit faire au moins 6 caractères';
							else if(eval('objForm.'+nomCheck+'.value').replace(regCaracteresOff,'').length > 1)
								newMsg		= 'Seules les caractères non accuentués et les chiffres sont acceptés';
							else
							{
								var tabType	= nbEachType(eval('objForm.'+nomCheck+'.value'));
								if(tabType[1] == 0)
									newMsg	= 'Veuillez mettre au moins un chiffre dans votre mot de passe';
								else if(eval('objForm.'+nomCheck+'.value')!='')
									alEr = false;
							}
							break;
							
			case 'EMA':		if(eval('objForm.'+nomCheck+'.value')=='')
							{
								alEr = true;
								newMsg		= 'Email adress is required';
							}
							else if(!checkEmail(eval('objForm.'+nomCheck+'.value')))
							{
								alEr 		= true;
								//newMsg		= 'Votre adresse email est incorrecte';
								newMsg		= 'Your email address is not correct';
							}
							break;

			case 'MIN':		alEr			= true;
							if(eval('objForm.'+nomCheck) && eval('objForm.'+nomCheck+'.value.length')==0 )
								newMsg		= 'Veuillez indiquer une valeur';
							else if(eval('objForm.'+nomCheck) && eval('objForm.'+nomCheck+'.value.length')<longueur)
								newMsg		= 'Le '+tabEquiv[i]+' doit faire au moins '+longueur+' caractères';
							else if(eval('objForm.'+nomCheck+'.value').replace(regCaracteresOff,'').length > 1)
								newMsg		= 'Seules les caractères non accuentués et les chiffres sont acceptés';
							else
								alEr = false;
							break;	
							
			case 'INT':		alEr			= true;
							if(eval('objForm.'+nomCheck+'.value')=='')
								newMsg		= 'Veuillez indiquer une valeur';
							else if(isNaN(eval('objForm.'+nomCheck+'.value')))
								newMsg		= 'Veuillez n\'indiquer que des chiffres';
							else
								alEr = false;
							break;	
							
			case 'MOB':		alEr			= true;
							reg 			= "^[\+]336[0-9]{8}$";
							regExp 			= new RegExp(reg);
							if(eval('objForm.'+nomCheck+'.value')=='')
								newMsg		= 'Veuillez préciser un numéro de mobile';
							else if(!regExp.test(eval('objForm.'+nomCheck+'.value')))
								newMsg		= 'Veuillez indiquer votre numéro de mobile sous la forme:'+"\n"+'+336xxxxxxxx';
							else
								alEr = false;
							break;
							
			case 'FILEDOC':	alEr			= true;
							ext				=	eval('objForm.'+nomCheck+'.value').split('.');
							ext				=	ext[ext.length-1];
							ext				=	ext.toLowerCase();
							if(eval('objForm.'+nomCheck+'.value')=='')
								newMsg		= 'Veuillez préciser le fichier à envoyer';
							else if(ext != 'doc' && ext != 'docx' && ext != 'pdf')
								newMsg		= 'Seule les extensions DOC, DOCX et PDF sont acceptées';
							else
								alEr		= false;
							break;
							
			case 'DATEF':	alEr			= 	true;
							if(document.getElementById(nomCheck+'_jour').value == '' || document.getElementById(nomCheck+'_mois').value == '' || document.getElementById(nomCheck+'_annee').value == '')
								newMsg		= 'Veuillez préciser une date complète';
							else
								alEr		= false;
							break;
								
			case 'DATE':	alEr			= 	true;
							if(document.getElementById(nomCheck+'_jour').value == '' && document.getElementById(nomCheck+'_mois').value == '' && document.getElementById(nomCheck+'_annee').value == '')
								newMsg		= 'Veuillez préciser au moins le jour, le mois ou l\'annee';
							else
								alEr		= false;	
							break;
								
								
							//alert(document.getElementById(nomCheck+'_jour').value);
							/*ext				=	eval('objForm.'+nomCheck+'.value').split('.');
							ext				=	ext[ext.length-1];
							ext				=	ext.toLowerCase();
							if(eval('objForm.'+nomCheck+'.value')=='')
								newMsg		= 'Veuillez préciser le fichier à envoyer';
							else if(ext != 'doc' && ext != 'docx' && ext != 'pdf')
								newMsg		= 'Seule les extensions DOC, DOCX et PDF sont acceptées';
							else
								alEr		= false;*/
							break;								
							
			default	 : 		if(eval('objForm.'+tabObli[i]+'.value').replace(' ','') =='')
							{
								newMsg = (tabEquiv[i] == '' ? tabObli[i] : tabEquiv[i])+' is required';
								alEr = true;
							}
							else if(document.getElementById(tabObli[i]+'_hidden') && document.getElementById(tabObli[i]+'_hidden').style.display=='block' && (document.getElementById(tabObli[i]+'_hidden').value=='' || document.getElementById(tabObli[i]+'_hidden').value=='Veuillez préciser'))
							{
								alEr = true;
								newMsg = tabEquiv[i]+' is required';
							}
							nomChamp	=	tabObli[i];
							break;
		}
		
		//nomChamp	=	deb == 'EMA' || deb == 'PSW' ? nomCheck : tabObli[i];
		//nomChamp	=	nomCheck;
		if(nomChamp == '')
			nomChamp	=	nomCheck;
		setClass(nomForm+'_'+nomChamp,'');
		document.getElementById(nomForm+'_'+'fdMsg'+nomChamp).innerHTML = '';
		
		if(alEr)
		{
			//document.getElementById('mFormBulleTxt').innerHTML = (((newMsg=='') ? 'Veuillez préciser '+tabEquiv[i] : newMsg));
			//mForm_showObj('posmFormBulle','3500');
			//document.getElementById(tabObli[i]).
			setClass(nomForm+'_'+nomChamp,'invalid');
			//tmpTab		=	tabEquiv[i].split('-');
			//defMsg		=	tmpTab[1] =! 'undefined' ? tmpTab[1] : tmpTab[0];
			//alert(tmpTab[0]);
			//msg			=	(newMsg=='') ? 'Veuillez préciser '+defMsg : newMsg;
			//msg			=	newMsg;
			document.getElementById(nomForm+'_'+'fdMsg'+nomChamp).innerHTML = newMsg;//msg;
			
			//alert(((newMsg=='') ? 'Veuillez préciser '+tabEquiv[i] : newMsg));
			return false;
		}

		//
	}
	

	objForm.submit();
	//AJAX le cas échéant
	/*if(ajax!='')
	{
		var paramAjax 	= new Array();
		paramAjax		= ajax.split('¤');
		//valeurs formulaire
		var getForm 	= '';
		paramForm		= paramAjax[3].split('|');
		if(paramForm!='')
		{
			for (var i=0; i<paramForm.length;i++)
			{
				getForm += '&'+paramForm[i]+'='+escape(eval('objForm.'+paramForm[i]+'.value'));
			}
		}
		var getParams = paramAjax[2]+'&'+getForm;
		getParams	  = getParams.replace(/"/g,'\\\"');

		eval(paramAjax[0]+'("'+paramAjax[1]+'","'+getParams+'")');
		return false;
	}*/
}
/********************************************************************************************************************
*			fonction switchReturn																					*
*			Effectue le test pour chaque champ, si un est rempli return true										*
*			Renvoi true ou false 																					*
*																													*
********************************************************************************************************************/
/*
function switchReturn(objForm,tabObli,tabEquiv,ajax,bulleLeft,bulleTop)
{
	tmpTab = tabObli.split(',');
	for(i=0 ; i<tmpTab.length ; i++)
	{
		if(eval('objForm.'+tmpTab[i]+'.value')!='')
		{
			var paramAjax 	= new Array();
			paramAjax		= ajax.split('¤');
			//alert(paramAjax[0]+'("'+paramAjax[1]+'","'+paramAjax[2]+'")');
			eval(paramAjax[0]+'("'+paramAjax[1]+'","'+paramAjax[2]+'")');
			return false;			
		}
	}
	//alert(objForm+' -  '+tabObli+' -  '+tabEquiv+' -  '+ajax+' -  '+bulleLeft+' -  '+bulleTop);
	checkForm(objForm,tabObli,tabEquiv,ajax,bulleLeft,bulleTop);
	return false;
}*/
/********************************************************************************************************************
*			fonction showObj																						*
*			Apparition d'un ID le tps x																				*
*																													*
********************************************************************************************************************/
var T = '';
function mForm_showObj(nomObj, duration)
{
	document.getElementById(nomObj).style.visibility='visible';
	if(duration!='inf')
	{
		clearTimeout(T);
		var href = document.getElementById(nomObj).getElementsByTagName('A');
		for (var i = 0; i < href.length; i++)
		{
			href[i].onmouseover= function (){ mForm_showObj(nomObj,duration); }
		}
		T = setTimeout('mForm_hideObj("'+nomObj+'");',duration);
	}
}
function mForm_hideObj(nomObj)
{
	document.getElementById(nomObj).style.visibility = 'hidden';
}
/********************************************************************************************************************
*			fonction setClass																						*
*			Attribuer une classe à un objet																			*
*																													*
********************************************************************************************************************/
function setClass(nomObj,classe)
{
	if(document.getElementById(nomObj))
		document.getElementById(nomObj).className=classe;
}

/********************************************************************************************************************
*			fonction fdForm_trShowHide																				*
*			Cacher / Montrer les TD d'un TR à partir de son ID														*
*																													*
********************************************************************************************************************/
function fdForm_trShowHide(trId,action)
{
	TD	=	document.getElementById(trId).getElementsByTagName('TD'); 
	if (TD.length > 0) 
	{
		for (i = 0; i < TD.length; i++)
		{
			SPAN	=	TD[i].getElementsByTagName('SPAN');
			SPAN[0].style.display	=	action == 'show' ? 'block' : 'none';
			//if(i==1)
				//TD[i].style.width='180px';
			//	TD[i].style.width='200px';
		//	else
		//		TD[i].className='field';
			
			//TD[i].style.display	=	action == 'show' ? 'block' : 'none';
		}
	}
	//document.getElementById(trId).style.display	=	action == 'show' ? 'block' : 'none';
}