﻿
// version mootools
function _setWrongStyle (element)
{
	element.setStyles({
						color      : '#FF0000',
						fontWeight : 'bold'
					});
}
function _setRightStyle (element)
{
	element.style.color = '#412311';
	element.style.fontWeight = 'normal';
	
	/*
	alert(element.style.color);
	element.setStyles({
						color      : '#412311',
						fontWeight : 'normal'
					});*/
}
/*
function getAttribute(element, sValue)
{
	if (element.attributes[sValue]){
		return element.attributes[sValue].value;
	}
	else{
		return element.readAttribute[sValue];
	}
}
*/
function _getFormLabel (form_id, label_name)
{
	var aLabels = $(form_id).getElements("label");
	for (var i = 0; i < aLabels.length; i++)
	{
		var name = aLabels[i].getProperty ("for");
		if (name == label_name)	return aLabels[i];
	}
	return false;
}
function checkFormulaire (form_id)
{
	var eForm     = $(form_id);
	var aElements = eForm.elements; // les éléments du formulaire
	var bError    = false; // erreur ou pas
	var sMsg = "Vérifier et corriger les champs marqués en rouge";

	// je réinitialise le style des labels
	$("alerte").innerHTML = "";
	var aLabels = $(form_id).getElementsByTagName("label");
	
	for (var i = 0; i < aLabels.length; i++)
	{
		_setRightStyle (aLabels[i]);
	}
	if ($("label-info_departement")) {
		_setRightStyle($("label-info_departement"));
	}
	if ($("label-message")) {
		_setRightStyle($("label-message"));
	}
	if ($("label-publication")) {
		_setRightStyle($("label-publication"));
	}
	
	
	// je parcours les éléments du formulaire
	for (var i = 0; i < aElements.length; i++)
	{
		var optional;
		if (aElements[i].optional)
		{
			optional = aElements[i].optional;
		}
		else if (aElements[i].attributes['optional'])
		{
			optional = aElements[i].attributes['optional'].value;
		}
		var classname  = aElements[i].className;
		// c'est un champs obligatoire
		if (optional == "false")
		{
			// si c'est un select
			if (classname == "dropdown")
			{
				var index;
				if (!aElements[i].getSelected){
					index = aElements[i].options[aElements[i].selectedIndex].value;
				}
				else{
					index = aElements[i].getSelected()[0].value;
				}
				if (index == "0")
				{
					bError = true;
					if ($("label-info_departement")){
						_setWrongStyle($("label-info_departement"));
					}
				}
			}
			else if (classname == "textfield" || classname == "textfield-footer" || classname == "textarea" || classname == "textarea-petit") // sinon si c'est un champs texte
			{
				// si c'est l'email
				if (aElements[i].id == "email")
				{
					// je vérifie la validité de l'email
					if (!_checkMail (aElements[i].value ))
					{
						bError = true;
						var label = _getFormLabel (form_id, aElements[i].id);
						if (label) _setWrongStyle (label);
					}
				}
				else if (aElements[i].id == "departement")
				{
					// je vérifie la validité de l'email
					if (!_isNumeric (aElements[i].value ) || aElements[i].value.length > 2)
					{
						bError = true;
						var label = _getFormLabel (form_id, aElements[i].id);
						if (label) _setWrongStyle (label);
					}
				}
				else // sinon
				{
					// je vérifie que les champs de texte sont renseignés
					if (aElements[i].value == "")
					{
						bError = true;
						if ($("label-message")){
							_setWrongStyle($("label-message"));
						}
						var label = _getFormLabel (form_id, aElements[i].id);
						if (label) _setWrongStyle (label);
					}
					
					
					// je vérifie que les champs de texte sont renseignés
					/*$
					if (aElements[i].value == "")
					{
						bError = true;
						var label = _getFormLabel (form_id, aElements[i].id);
						if (label) _setWrongStyle (label);
					}*/
				}
			}
		}
		else // sinon
		{
			// si le champs est renseignés
			if (classname == "textfield" && aElements[i].value != "")
			{
				// si c'est le téléphone
				if (aElements[i].id == "telephone")
				{
					// je vérifie qu'il s'agit de chiffres
					if (!_isNumeric (aElements[i].value))
					{
						bError = true;
						var label = _getFormLabel (form_id, aElements[i].id);
						if (label) _setWrongStyle (label);
					}
				}
			}
		}
	}
	if (bError){
		$("alerte").innerHTML = sMsg;
		return false;
	}
	else{
		return true;
	}
}
function _checkMail (email) //Boolean
{
	var aEmail  = [];
	var aDomain = [];
	
	if (email.length < 1) // moins d'un caractère
		return false;
	
	aEmail = email.split("@");
	
	if (aEmail.length != 2) // seulement un @ autorisé
		return false;

	var aDomain = aEmail[1].split(".");
	
	if (aDomain.length < 2) // au moins un point 
	{
		return false;
	}
	
	if (aDomain[aDomain.length - 1].length < 2 || aDomain[aDomain.length - 1].length > 4)
		return false; // un . est permis et entre 2 et 4 caractères après le .
	
	if(!_checkString (aEmail[0].toString()) || !_checkString (aEmail[1].toString()))
		return false;	// il y a un caractère invalide
	
	return true;
}
function _checkString (str) // Boolean
{
	var len	= str.length; // longueur de la chaine
	// je parcours la chaine
	for (var i = 0; i < len; i++)
		if (!_checkChar(str.charCodeAt(i)))
			return false; // la chaine contient au moins un caractère invalide
	return true;
}
function _checkChar (charCode) // Boolean
{
	var ASCII_ALLOWED = [[38,39],[42,43],[45,57],[61,61],[63,63],[65,90],[94,95],[97,123],[125,126]];
	// je parcours les caractères invalide
	for (var j = 0; j < ASCII_ALLOWED.length; j++)
	{
		if (charCode >= ASCII_ALLOWED[j][0] && charCode <= ASCII_ALLOWED[j][1])
		{
			return true;	// le caractère est dans l'intervalle des caractères permis
		}
	}
	return false;
}
function _isNumeric (str) // Boolean
{
	if (str.length == 0) return false;
	var result = true;
	var len    = str.length;
	for (var i = 0; i < len; i++)
	{
		var charCode = str.charCodeAt(i);
		if (charCode < 48 || charCode > 57)
		{
			result = false;
			break;
		}
	}
	return result;
}
function _isAlphabetic (str) // Boolean
{
	var result = true;
	var len    = str.length;
	for (var i = 0; i < len; i++)
	{
		var charCode = str.charCodeAt(i);
		if ((charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122))
		{
			result = false;
			break;
		}
	}
	return result;
}

