 // JavaScript Document
/*
-- Subject : Script form.js Evolubiz - Fonctions de formulaire
-- Historique : Création le 10 juin 2005
-- Author : Cynthia Roy
-- Évolubiz Inc.
*/

var a_valid_emptyfields = new Array();
var a_valid_emptyradiofields = new Array();
var a_valid_emptycheckboxfields = new Array();
var a_valid_radiofields = new Array();
var a_valid_checkboxfields = new Array();
var a_valid_selectfields = new Array();
var a_valid_phonefields = new Array();
var a_valid_codepostalfields = new Array();
var a_valid_zipfields = new Array();
var a_valid_emailfields = new Array();
var a_valid_confirmfields = new Array();
var a_selectall = new Array();

function frm_labelclick(obj)
{
	if(obj.checked==false)
	{
		obj.checked=true;
	}
	else
	{
		obj.checked=false;
	}
}

function frm_selectall(id)
{
	for(var i=0; i<a_selectall.length; i++)
	{
		if(a_selectall[i][0] == id)
		{
			for(var ii=0; ii<a_selectall[i][1].length; ii++)
			{
				a_selectall[i][1][ii].checked = true;
			}
		}
	}
}

function affiche_erreurs(a_errors,display)
{ 
	for(var i=0; i<a_errors.length; i++)
	{
		if(document.getElementById && document.getElementById(a_errors[i]))
		{
			document.getElementById(a_errors[i]).style.display = display;
		} 
		else if(document.all && document.all(a_errors[i])) 
		{
			document.all(a_errors[i]).style.display = display;
		}
	}
}

function validate(obj_form)
{
	var send = true;
	var a_errors = new Array();
	var gotoanchor = "";
	var a_error_emptyfields = Array();
	var a_error_emptyradiofields = Array();
	var a_error_emptycheckboxfields = Array();
	var a_error_radiofields = Array();
	var a_error_checkboxfields = Array();
	var a_error_selectfields = Array();
	var a_error_validphonefields = Array();
	var a_error_validcodepostalfields = Array();
	var a_error_validzipfields = Array();
	var a_error_validemailfields = Array();
	var a_error_confirmfields = Array();

	// validation des champs vides
	for(var i=0; i<a_valid_emptyfields.length; i++)
	{
		a_error_emptyfields[a_error_emptyfields.length] = a_valid_emptyfields[i][1];
		if(send == true)
		{
			send=valid_emptyfields(a_valid_emptyfields[i][0]);
			if(send != true)
			{
				a_errors[a_errors.length] = a_valid_emptyfields[i][1];
				gotoanchor = a_valid_emptyfields[i][1];
			}
		}
		else
		{
			if(valid_emptyfields(a_valid_emptyfields[i][0]) != true)
			{
				a_errors[a_errors.length] = a_valid_emptyfields[i][1];
			}
		}
	}

	// validation des champs radio vides
	for(var i=0; i<a_valid_emptyradiofields.length; i++)
	{
		a_error_emptyradiofields[a_error_emptyradiofields.length] = a_valid_emptyradiofields[i][1];
		if(send == true)
		{
			send=valid_emptyradiofields(a_valid_emptyradiofields[i][0]);
			if(send != true)
			{
				a_errors[a_errors.length] = a_valid_emptyradiofields[i][1];
				gotoanchor = a_valid_emptyradiofields[i][1];
			}
		}
		else
		{
			if(valid_emptyradiofields(a_valid_emptyradiofields[i][0]) != true)
			{
				a_errors[a_errors.length] = a_valid_emptyradiofields[i][1];
			}
		}
	}

	// validation des champs checkbox vides
	for(var i=0; i<a_valid_emptycheckboxfields.length; i++)
	{
		a_error_emptycheckboxfields[a_error_emptycheckboxfields.length] = a_valid_emptycheckboxfields[i][1];
		if(send == true)
		{
			send=valid_emptycheckboxfields(a_valid_emptycheckboxfields[i][0]);
			if(send != true)
			{
				a_errors[a_errors.length] = a_valid_emptycheckboxfields[i][1];
				gotoanchor = a_valid_emptycheckboxfields[i][1];
			}
		}
		else
		{
			if(valid_emptycheckboxfields(a_valid_emptycheckboxfields[i][0]) != true)
			{
				a_errors[a_errors.length] = a_valid_emptycheckboxfields[i][1];
			}
		}
	}
	
	// validation des champs radio activés
	for(var i=0; i<a_valid_radiofields.length; i++)
	{
		a_error_radiofields[a_error_radiofields.length] = a_valid_radiofields[i][1];
		if(send == true)
		{
			send=valid_radiofields(a_valid_radiofields[i][0]);
			if(send != true)
			{
				a_errors[a_errors.length] = a_valid_radiofields[i][1];
				gotoanchor = a_valid_radiofields[i][1];
			}
		}
		else
		{
			if(valid_radiofields(a_valid_radiofields[i][0]) != true)
			{
				a_errors[a_errors.length] = a_valid_radiofields[i][1];
			}
		}
	}
	
	// validation des champs ckeckbox activés
	for(var i=0; i<a_valid_checkboxfields.length; i++)
	{
		a_error_checkboxfields[a_error_checkboxfields.length] = a_valid_checkboxfields[i][1];
		if(send == true)
		{
			send=valid_checkboxfields(a_valid_checkboxfields[i][0]);
			if(send != true)
			{
				a_errors[a_errors.length] = a_valid_checkboxfields[i][1];
				gotoanchor = a_valid_checkboxfields[i][1];
			}
		}
		else
		{
			if(valid_checkboxfields(a_valid_checkboxfields[i][0]) != true)
			{
				a_errors[a_errors.length] = a_valid_checkboxfields[i][1];
			}
		}
	}
	
	// validation des champs select multiple
	for(var i=0; i<a_valid_selectfields.length; i++)
	{
		a_error_selectfields[a_error_selectfields.length] = a_valid_selectfields[i][1];
		if(send == true)
		{
			send=valid_selectfields(a_valid_selectfields[i][0]);
			if(send != true)
			{
				a_errors[a_errors.length] = a_valid_selectfields[i][1];
				gotoanchor = a_valid_selectfields[i][1];
			}
		}
		else
		{
			if(valid_selectfields(a_valid_selectfields[i][0]) != true)
			{
				a_errors[a_errors.length] = a_valid_selectfields[i][1];
			}
		}
	}
	
	// validation des numéros de téléphone
	for(i=0; i<a_valid_phonefields.length; i++)
	{
		a_error_validphonefields[a_error_validphonefields.length] = a_valid_phonefields[i][1];
		if(a_valid_phonefields[i][0].value != "")
		{
			if(send == true)
			{
				send=valid_phone(a_valid_phonefields[i][0].value);
				if(send != true)
				{
					a_errors[a_errors.length] = a_valid_phonefields[i][1];
					gotoanchor = a_valid_phonefields[i][1];
				}
			}
			else
			{
				if(valid_phone(a_valid_phonefields[i][0].value) != true)
				{
					a_errors[a_errors.length] = a_valid_phonelfields[i][1];
				}
			}
		}
	}
	
	// validation des codes postaux
	for(i=0; i<a_valid_codepostalfields.length; i++)
	{
		a_error_validcodepostalfields[a_error_validcodepostalfields.length] = a_valid_codepostalfields[i][1];
		if(a_valid_codepostalfields[i][0].value != "")
		{
			if(send == true)
			{
				send=valid_codepostal(a_valid_codepostalfields[i][0].value);
				if(send != true)
				{
					a_errors[a_errors.length] = a_valid_codepostalfields[i][1];
					gotoanchor = a_valid_codepostalfields[i][1];
				}
			}
			else
			{
				if(valid_codepostal(a_valid_codepostalfields[i][0].value) != true)
				{
					a_errors[a_errors.length] = a_valid_codepostalfields[i][1];
				}
			}
		}
	}
	
	// validation des zip codes
	for(i=0; i<a_valid_zipfields.length; i++)
	{
		a_error_validzipfields[a_error_validzipfields.length] = a_valid_zipfields[i][1];
		if(a_valid_zipfields[i][0].value != "")
		{
			if(send == true)
			{
				send=valid_zipcode(a_valid_zipfields[i][0].value);
				if(send != true)
				{
					a_errors[a_errors.length] = a_valid_zipfields[i][1];
					gotoanchor = a_valid_zipfields[i][1];
				}
			}
			else
			{
				if(valid_zipcode(a_valid_zipfields[i][0].value) != true)
				{
					a_errors[a_errors.length] = a_valid_zipfields[i][1];
				}
			}
		}
	}
	
	// validation des emails
	for(i=0; i<a_valid_emailfields.length; i++)
	{
		a_error_validemailfields[a_error_validemailfields.length] = a_valid_emailfields[i][1];
		if(a_valid_emailfields[i][0].value != "")
		{
			if(send == true)
			{
				send=valid_email(a_valid_emailfields[i][0].value);
				if(send != true)
				{
					a_errors[a_errors.length] = a_valid_emailfields[i][1];
					gotoanchor = a_valid_emailfields[i][1];
				}
			}
			else
			{
				if(valid_email(a_valid_emailfields[i][0].value) != true)
				{
					a_errors[a_errors.length] = a_valid_emailfields[i][1];
				}
			}
		}
	}
	
	// validation des confirmations
	for(i=0; i<a_valid_confirmfields.length; i++)
	{
		a_error_confirmfields[a_error_confirmfields.length] = a_valid_confirmfields[i][1];
		if(a_valid_confirmfields[i][0][0].value != "")
		{
			if(send == true)
			{
				send=valid_confirmfields(a_valid_confirmfields[i][0][0], a_valid_confirmfields[i][0][1]);
				if(send != true)
				{
					a_errors[a_errors.length] = a_valid_confirmfields[i][1];
					gotoanchor = a_valid_confirmfields[i][1];
				}
			}
			else
			{
				if(valid_confirmfields(a_valid_confirmfields[i][0][0], a_valid_confirmfields[i][0][1]) != true)
				{
					a_errors[a_errors.length] = a_valid_confirmfields[i][1];
				}
			}
		}
	}
	
	// submit ou affichage des erreurs
	affiche_erreurs(a_error_emptyfields,'none');
	affiche_erreurs(a_error_emptyradiofields,'none');
	affiche_erreurs(a_error_emptycheckboxfields,'none');
	affiche_erreurs(a_error_radiofields,'none');
	affiche_erreurs(a_error_checkboxfields,'none');
	affiche_erreurs(a_error_selectfields,'none');
	affiche_erreurs(a_error_validphonefields,'none');
	affiche_erreurs(a_error_validcodepostalfields,'none');
	affiche_erreurs(a_error_validzipfields,'none');
	affiche_erreurs(a_error_validemailfields,'none');
	affiche_erreurs(a_error_confirmfields,'none');	
	affiche_erreurs(a_errors,'block');
	
	ini_hauteur();
	if(send == false)
	{
		document.location.hash = gotoanchor;	
	}

	obj_form.evo_submit.value = 'evolubiz';
	return send;
}

function valid_emptyfields(obj)
{
	if(obj.value == "")
	{
		return false;
	}
	return true;
}

function valid_emptyradiofields(obj)
{
	for(var i=0; i<obj.length; i++)
	{
		if(obj[i].checked == true)
		{
			return true;
		}
	}
	return false;
}

function valid_emptycheckboxfields(a_obj)
{
	for(var i=0; i<a_obj.length; i++)
	{
		if(a_obj[i].checked == true)
		{
			return true;
		}
	}
	return false;
}

function valid_radiofields(obj) //fonction incomplète
{
	return true;
}

function valid_checkboxfields(obj)
{
	if(obj.checked == false)
	{
		return false;
	}
	return true;
}

function valid_selectfields(obj) //fonction incomplète
{
	return true;
}

function valid_confirmfields(obj1, obj2) 
{
	if(obj1.value != obj2.value)
	{
		return false;
	}
	return true;
}

//-------------------------------------------Validation du email---------------------------------------------
// Cette fonction valide chaque composante d'un courriel.
function valid_email(uneAdresse)
{
	var valid = true;

	if (uneAdresse.length != 0)
	{
		valid = valid_caracteres_speciaux(uneAdresse);
		if (valid == true)
		{
			valid = valid_email_at(uneAdresse);
			if (valid == true)
			{
				var positionAt = (uneAdresse.indexOf("@")) + 1;
				var finAdresse = uneAdresse.substring(positionAt, uneAdresse.length);
				valid = valid_email_point(finAdresse);
				if (valid == true)
				{
					valid = valid_email_longueur(finAdresse);
				}
			}
		}
	}
	else
	{
 		valid = false;
	}
	return valid;
}

// Cette fonction vérifie s'il y a présence de caractères spéciaux dans un courriel.
function valid_caracteres_speciaux(courriel)
{
	var caracteresSpeciaux = "/:,;";
	var position = 0;
	var caractere = "";
	var temoinCaractere = -1;
	var valid = true;	

	while (position < courriel.length && temoinCaractere == -1)
	{
		caractere = courriel.charAt(position);
		temoinCaractere = caracteresSpeciaux.indexOf(caractere);
		if (temoinCaractere != -1)
		{
			valid = false;
		}
		position = position + 1;
	}
	return valid;
}

// Cette fonction vérifie s'il y a la présence d'un et d'un seul arobas dans un courriel.
function valid_email_at(courriel)
{
	var position = 0;
	var temoinCaractere = "";
	var valid = true;	

	position = courriel.indexOf("@") ;
	temoinCaractere = courriel.indexOf("@", position + 1) ;
	if (position <= 0 || (temoinCaractere != -1))
	{
		valid = false;
	}
	return valid;
}

// Cette fonction vérifie s'il y a la présence d'au moins un point après le premier caractère après l'arobas dans un courriel.
function valid_email_point(courriel)
{
	var positionArobas = 0;
	var positionPoint = 0;
	var valid = true;	

	positionArobas = courriel.indexOf("@");
	positionPoint = courriel.indexOf(".", positionArobas + 1);
	if (positionPoint == -1 || courriel.charAt(positionArobas + 1) == ".")
	{
		valid = false;
	}
	return valid;
}

// Cette fonction vérifie s'il y a au moins deux caractères après le dernier point d'un courriel.
function valid_email_longueur(courriel)
{
	var position = courriel.length - 1;
	var caractere = "";
	var compteur = 1;
	var valid = true;	
	
	while (compteur <= 2 && valid != false)
	{
		caractere = courriel.charAt(position);
		if (caractere == ".")
		{
			valid = false;
		}
		position = position - 1;
		compteur = compteur + 1;
	}
	return true ;
}
//-----------------------------------------------------------------------------------------------------------

//------------------------------------Validation du numéro de téléphone--------------------------------------
function valid_phone()
{
	return true;
}
//-----------------------------------------------------------------------------------------------------------

//------------------------------Validation du code postal et du zip code-------------------------------------
//par Cynthia Roy
//3 mars 2004

function valid_codepostal(chaine)
{
	var compteur = 0;
	var code01 = "";
	var code02 = "";
	var codePostal = "";
	var valid = true;
	
	chaine = chaine.toLowerCase();
	if((chaine.length == 6 && chaine.charAt(3) != " ") || chaine.length == 7)
	{
		code01 = chaine.substr(0,3);
		if(chaine.charAt(3) == " ")
		{
			code02 = chaine.substr(4,3);
		}
		else
		{
			code02 = chaine.substr(3,3);
		}	
		codePostal = code01 + code02;
		while(compteur <= chaine.length && valid != 1)
		{
			if(compteur % 2 == 0)
			{
				valid = valid_lettres(codePostal.charAt(compteur))
			}
			else
			{
				valid = valid_chiffres(codePostal.charAt(compteur))
			}
			compteur = compteur+1;
		}
	}
	else
	{
		valid = false;
	}
	return valid;
}
	
function valid_zipcode(chaine)
{
	var valid = true;
	
	if(chaine.length == 5)
	{
		valid = validerChiffres(chaine);
	}
	else
	{
		valid = false;
	}
	
	return valid;
}

function valid_chiffres (chaine)
{ 
	valid = true
	compteur = 0;
	listChiffres = "1234567890";
	while(compteur <= chaine.length)
	{
		caractere = chaine.charAt(compteur);
		if (listChiffres.indexOf(caractere) == -1)
		{
			valid = false;
			break;
		}
		compteur = compteur+1;
	}
	return valid;
}

function valid_lettres(chaine)
{ 
	valid = true
	compteur = 0;
	listLettres = "abcdefghijklmnopqrstuvwxyz";
	while(compteur <= chaine.length)
	{
		caractere = chaine.charAt(compteur);
		if (listLettres.indexOf(caractere) == -1)
		{
			valid = false;
			break;
		}
		compteur = compteur+1;
	}
	return valid;
}
//-----------------------------------------------------------------------------------------------------------