//================================================================================
// Librairie de fonctions communes
//================================================================================
var valDefault;
var valType;
var valRequis;
var valDefaut;

//--------------------------------------------------------------------------------
// Fonction D'extraction des attributs propriétaires des input
function funcExtract(varElement,varTyp)
	{
	if ((varElement.alt != '') && (varElement.alt))
		{
//		alert(varElement.alt.substr(varElement.alt.indexOf('|Type:',0)+6 , varElement.alt.indexOf('|Requis:',0)-(varElement.alt.indexOf('|Type:',0)+6)));			
		switch (varTyp)
			{
			case 'nom' :
				return varElement.alt.substr(4 , varElement.alt.indexOf('|')-4);
			case 'type' :
				return varElement.alt.substr((varElement.alt.indexOf('|Type:',0)+6) , varElement.alt.indexOf('|Requis:',0)-(varElement.alt.indexOf('|Type:',0)+6));
			case 'requis' :
				return varElement.alt.substr(varElement.alt.indexOf('|Requis:')+8 , 3);
			case 'defaut' :
				return varElement.alt.substr(varElement.alt.indexOf('|Defaut:')+8 , varElement.alt.length-(varElement.alt.indexOf('|Defaut:')+8));
			}
		}
	else
		return '';
	}

//--------------------------------------------------------------------------------
// Fonction d'initialisation d'un formulaire
varInit = false;
function funcFormInit(varForm)
	{
	if (varInit == false)
		{
		//--- Affectation des valeurs par défaut
		for (i = 0; i < varForm.length; i++)
			{
			valDefault = funcExtract(varForm.elements[i],'defaut');
			if ((varForm.elements[i].value == "") && (valDefault != 'undefined'))
				{
				varForm.elements[i].value = valDefault;
				}
			valType = funcExtract(varForm.elements[i],'type').toLowerCase();	
 			  if ((valType == "dat") && (varForm.elements[i].value  == "")) 
				{
				strDate = new Date();
				strDay = strDate.getDate().toString();
				if (strDay.length == 1) {strDay = "0"+ strDay;}
				strMonth = (strDate.getMonth()+1).toString();
				if (strMonth.length == 1) {strMonth = "0"+ strMonth;}
				strYear = strDate.getYear();
				varForm.elements[i].value = strDay +"/"+ strMonth +"/"+ strYear;
				}
			}
		}
	varInit = true;
	}

//--------------------------------------------------------------------------------
// Fonction de contrôle de saisie d'un formulaire
var varPwdCtrl = "";

function funcCtrlSaisie(varForm)
	{
	var StatutValid = 'OK';
	var StatutSelect = 'NON';
	var StrMessage = '';
	var strCheckbox = '';
	//--- Réinitlisation de l'aspect des champs (s'ils ont été précédemment en erreur de saisie)
	for (i = 0; i < varForm.length; i++)
		{
		funcInitField(varForm.elements[i]);
		}
		
	for (i = 0; i < varForm.length; i++)
		{
//		alert (varForm.elements[i].id + ' - ' + varForm.elements[i].alt);	
		//--- Contrôle des champs obligatoires
//		if (varForm.elements[i].valoblig == "Oui")
		if (funcExtract(varForm.elements[i],'requis').toLowerCase() == 'oui')
			{
			switch (varForm.elements[i].type)
				{
				case 'checkbox' :
					if (strCheckbox != funcExtract(varForm.elements[i],'nom'))
						{
						strCheckbox = funcExtract(varForm.elements[i],'nom');
						statutSelect = "NON";
						 for (var j=i;j<varForm.elements.length;j++)
							if (strCheckbox == funcExtract(varForm.elements[i],'nom'))
								if (varForm.elements[j].checked)
									statutSelect = 'OK';		
						if (statutSelect != 'OK')
							{
							StrMessage = StrMessage + "Le champ \"" + funcExtract(varForm.elements[i],'nom') + "\" est obligatoire,\n vous devez le remplir \n"
							funcErrorField(varForm.elements[i-1]);
							StatutValid = "NON"
							}	
						}
					break;	
						
				case 'select-one' :
					statutSelect = "NON";
					for (var j=0;j<varForm.elements[i].options.length;j++)
						if (varForm.elements[i].options[j].selected)
							statutSelect = 'OK';
					if (statutSelect != 'OK')
						{
						StrMessage = StrMessage + "Le champ \"" + funcExtract(varForm.elements[i],'nom') + "\" est obligatoire,\n vous devez le remplir \n"
						funcErrorField(varForm.elements[i]);
						StatutValid = "NON"
						}
					break;					

				case 'text' :
					if ((varForm.elements[i].value.length < 1) || (varForm.elements[i].value == "VIDE"))
						{
						StrMessage = StrMessage + "Le champ \"" + funcExtract(varForm.elements[i],'nom') + "\" est obligatoire,\n vous devez le remplir \n"
						funcErrorField(varForm.elements[i]);
						StatutValid = "NON"
						}
					break
				
				case 'textarea' :
					if ((varForm.elements[i].value.length < 1) || (varForm.elements[i].value == "VIDE"))
						{
						StrMessage = StrMessage + "Le champ \"" + funcExtract(varForm.elements[i],'nom') + "\" est obligatoire,\n vous devez le remplir \n"
						funcErrorField(varForm.elements[i]);
						StatutValid = "NON"
						}
					break			

				case 'password' :
					if ((varForm.elements[i].value.length < 1) || (varForm.elements[i].value == "VIDE"))
						{
						StrMessage = StrMessage + "Le champ \"" + funcExtract(varForm.elements[i],'nom') + "\" est obligatoire,\n vous devez le remplir \n"
						funcErrorField(varForm.elements[i]);
						StatutValid = "NON"
						}
					break	
				}
			}

		//--- Contrôle des champs Upload Image
		if (funcExtract(varForm.elements[i],'type').toLowerCase() == "img" && varForm.elements[i].value.length > 0)
			{
			var strCar = ".GIF, .JPG, .JPEG, .PNG"
			var strExt = varForm.elements[i].value.substring(varForm.elements[i].value.length-4,varForm.elements[i].value.length).toUpperCase()
			if (strCar.indexOf(strExt) < 0)
				{
				StrMessage = StrMessage + "Le champ \"" + funcExtract(varForm.elements[i],'nom') + "\" doit être un fichier du type \"" + strCar + "\"\n"
				funcErrorField(varForm.elements[i]);
				StatutValid = "";
				}
			}
		//--- Contrôle des champs Numériques
		if (funcExtract(varForm.elements[i],'type').toLowerCase() == "num" && varForm.elements[i].value.length > 0)
			{
			var strCar = "0123456789"
			for (j = 0; j < varForm.elements[i].value.length; j++)
				{
				if (strCar.indexOf(varForm.elements[i].value.charAt(j)) < 0)
					{
					StrMessage = StrMessage + "Le champ \"" + funcExtract(varForm.elements[i],'nom') + "\" ne peut contenir que les caractères suivants \"" + strCar + "\"\n"
					funcErrorField(varForm.elements[i]);
					StatutValid = "";
					break
					}
				}
			}
		//--- Contrôle des champs E-mail
//		if ((varForm.elements[i].alt != '') && (varForm.elements[i].alt))
	//		alert (varForm.elements[i].id + ' - ' + varForm.elements[i].alt + ' - ' + varForm.elements[i].alt.indexOf('|Type:',0) + ' - ' + varForm.elements[i].alt.indexOf('|Requis:',0));
//		alert(varForm.elements[i].id + ' - ' + funcExtract(varForm.elements[i],'type').toLowerCase());
		if (funcExtract(varForm.elements[i],'type').toLowerCase() == "mail" && varForm.elements[i].value.length > 0)
			{
			if (varForm.elements[i].value.length < 6 || varForm.elements[i].value.indexOf("@") < 0 || varForm.elements[i].value.indexOf(".") < 0)
				{
				StrMessage = StrMessage + "Vous devez saisir une adresse E-mail valide\n"
				funcErrorField(varForm.elements[i]);
				StatutValid = "";
				}
			}
		//--- Contrôle des champs Date sur 10 ou 19 caractères
		if (funcExtract(varForm.elements[i],'type') == "Dat" && varForm.elements[i].value.length > 0)
			{
			if (((varForm.elements[i].value.length != 10) && (varForm.elements[i].value.length != 19)) || (varForm.elements[i].value.charAt(2) != "/") || (varForm.elements[i].value.length.charAt(5) != "/"))
				{
				StrMessage = StrMessage + "Le champ \"" + funcExtract(varForm.elements[i],'nom') + "\" doit respecter le format JJ/MM/AAAA HH:MM:SS\n"
				funcErrorField(varForm.elements[i]);
				StatutValid = "";
				}
			var strCar = "0123456789/ :";
			for (j = 0; j < varForm.elements[i].value.length; j++)
				{
				if (strCar.indexOf(varForm.elements[i].value.charAt(j)) < 0)
					{
					StrMessage = StrMessage + "Le champ \"" + funcExtract(varForm.elements[i],'nom') + "\" ne peut contenir que les caractères suivants \"" + strCar + "\"\n"
					funcErrorField(varForm.elements[i]);
					StatutValid = "";
					break
					}
				}
			}
		//--- Contrôle des champs Password
		if (funcExtract(varForm.elements[i],'type').toLowerCase() == "pwd" && varForm.elements[i].value.length > 0)
			{
			if (varPwdCtrl == "")
				{
				varPwdCtrl = varForm.elements[i].value;
				varForm.elements[i].value = "";
				StrMessage = "veuillez saisir à nouveau le mot de passe pour confirmation.";
				varForm.elements[i].select();
				StatutValid = "";
				break
				}
			else
				{
				if (varPwdCtrl != varForm.elements[i].value)
					{
					StrMessage = "Le 2ème mot de passe saisi pour confirmation est différent.\n Veuillez recommencer.";
					varForm.elements[i].value = "";
					varPwdCtrl = "";
					StatutValid = "";
					break
					}
				}
			}
		//--- retour du contrôle de saisie
		}
	if (StatutValid != "OK")
		{
		alert(StrMessage);
		return false;
		}
	else
		{
		return true;
		}
	}

//--------------------------------------------------------------------------------
// Fonction de mise en évidence d'un champ en erreur de saisie

function funcErrorField(varField)
	{
	varField.style.borderColor = "red";
	varField.style.borderWidth = "2px";
	varField.style.borderStyle = "solid";
	if (document.all["Alert"+ varField.name] == null)
		{
		varField.outerHTML = "<img id='Alert"+ varField.name +"' src='../images/_charte/alert.gif' align='top'>"+ varField.outerHTML;
		}
	}

//--------------------------------------------------------------------------------
// Fonction de réinitialisation d'un champ précédemment en erreur de saisie

function funcInitField(varField)
	{
	varField.style.borderColor = "";
	varField.style.borderWidth = "";
	varField.style.borderStyle = "";
	if (document.all["Alert"+ varField.name])
		{
		document.all["Alert"+ varField.name].outerHTML = "";
		}
	}


var varPassword2 = "";

function funcCtrlPassword(varForm)
	{
	var StatutValid = "OK";
	var StrMessage = "";

	//--- Réinitlisation de l'aspect des champs (s'ils ont été précédemment en erreur de saisie)
	for (i = 0; i < varForm.length; i++)
		{
		//--- Contrôle des champs Password
		if ((varForm.elements[i].valtyp == "Pwd") && (varForm.elements[i].value.length > 0))
			{
			if (varPassword2 == "")
				{
				varPassword2 = varForm.elements[i].value;
				varForm.elements[i].value = "";
				StrMessage = "veuillez saisir à nouveau le mot de passe pour confirmation.";
//				varForm.elements[i].select();
				StatutValid = "";
				break
				}
			else
				{
				if (varPassword2 != varForm.elements[i].value)
					{
					StrMessage = "Le 2ème mot de passe saisi pour confirmation est différent.\n Veuillez recommencer.";
					varForm.elements[i].value = "";
					varPassword2 = "";
					StatutValid = "";
					break
					}
				}
			}
		//--- retour du contrôle de saisie
		}
	if (StatutValid != "OK")
		{
		alert(StrMessage);
		return false;
		}
	else
		{
		return true;
		}
	}
	

