// 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_phonefields = new Array();
var a_valid_codepostalfields = new Array();
var a_valid_zipfields = new Array();
var a_valid_emailfields = new Array();

	
function loading()
{
	document.getElementById("demande").style.display = "none";
	document.getElementById("details").style.display = "none";
}

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

function affiche_erreurs(objName,x,newText)
{ 
	if (document.layers)
	{
		//syntaxe pour ecrire du html dans un calque de Netscape 4
		document.layers[objName].document.write(unescape(newText)); document.layers[objName].document.close();
	}
	//syntaxe pour Ècrire du html dans une balise div, fonctionne dans explorer 4 et + et netscape 6 et +
	else 
	{
		document.getElementById(objName).innerHTML = unescape(newText);
	}
}

function validation(obj_form)
{
	var error = 0;
	var a_errors = new Array();
	
	// validation des champs vides
	for(i=0; i<a_valid_emptyfields.length; i++)
	{
		if(error == 0)
		{
			error=valid_emptyfields(a_valid_emptyfields[i][0]);
			if(error != 0)
			{
				a_errors[a_errors.length] = a_valid_emptyfields[i][1];
			}
		}
		else
		{
			if(valid_emptyfields(a_valid_emptyfields[i][0]) != 0)
			{
				a_errors[a_errors.length] = a_valid_emptyfields[i][1];
			}
		}
	}
	
	// validation des numéros de téléphone
	for(i=0; i<a_valid_phonefields.length; i++)
	{
		if(a_valid_phonefields[i][0].value != "")
		{
			if(error == 0)
			{
				error=valid_phone(a_valid_phonefields[i][0].value);
				if(error != 0)
				{
					a_errors[a_errors.length] = a_valid_phonefields[i][1];
				}
			}
			else
			{
				if(valid_phone(a_valid_phonefields[i][0].value) != 0)
				{
					a_errors[a_errors.length] = a_valid_phonelfields[i][1];
				}
			}
		}
	}
	
	// validation des codes postaux
	for(i=0; i<a_valid_codepostalfields.length; i++)
	{
		if(a_valid_codepostalfields[i][0].value != "")
		{
			if(error == 0)
			{
				error=valid_codepostal(a_valid_codepostalfields[i][0].value);
				if(error != 0)
				{
					a_errors[a_errors.length] = a_valid_codepostalfields[i][1];
				}
			}
			else
			{
				if(valid_codepostal(a_valid_codepostalfields[i][0].value) != 0)
				{
					a_errors[a_errors.length] = a_valid_codepostalfields[i][1];
				}
			}
		}
	}
	
	// validation des zip codes
	for(i=0; i<a_valid_zipfields.length; i++)
	{
		if(a_valid_zipfields[i][0].value != "")
		{
			if(error == 0)
			{
				error=valid_zipcode(a_valid_zipfields[i][0].value);
				if(error != 0)
				{
					a_errors[a_errors.length] = a_valid_zipfields[i][1];
				}
			}
			else
			{
				if(valid_zipcode(a_valid_zipfields[i][0].value) != 0)
				{
					a_errors[a_errors.length] = a_valid_zipfields[i][1];
				}
			}
		}
	}
	
	// validation des emails
	for(i=0; i<a_valid_emailfields.length; i++)
	{
		if(a_valid_emailfields[i][0].value != "")
		{
			if(error == 0)
			{
				error=valid_email(a_valid_emailfields[i][0].value);
				if(error != 0)
				{
					a_errors[a_errors.length] = a_valid_emailfields[i][1];
				}
			}
			else
			{
				if(valid_email(a_valid_emailfields[i][0].value) != 0)
				{
					a_errors[a_errors.length] = a_valid_emailfields[i][1];
				}
			}
		}
	}
	
	// submit ou affichage des erreurs
	if(error == 0)
	{
		obj_form.submit();
	}
	else
	{
		affiche_erreurs('erreur','',a_errors.join(", "))
		window.location.hash='go_erreur';
		ini_hauteurs();
		// spécifique au site
		/*var obj_erreur = document.getElementById('erreur');
		var obj_columncontent = document.getElementById('column_content');
		var obj_content = document.getElementById('content');
		obj_content.style.height = int_hauteurcontent + obj_erreur.offsetHeight + 'px';
		obj_columncontent.style.height = obj_content.offsetHeight + 'px';*/
		//
	}
}

function valid_emptyfields(obj)
{
	if(obj.value == "")
	{
		return 1;
	}
	return 0;
}

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

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

// 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 resultat = 0 ;	

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

// 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 resultat = 0 ;	

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

// 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 resultat = 0 ;	

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

// 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 resultat = 0 ;	
	
	while (compteur <= 2 && resultat != 5)
	{
		caractere = courriel.charAt(position) ;
		if (caractere == ".")
		{
			resultat = 5 ;
		}
		position = position - 1 ;
		compteur = compteur + 1 ;
	}
	return resultat ;
}
//-----------------------------------------------------------------------------------------------------------

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

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

function valid_codepostal(chaine)
{
	var compteur = 0;
	var erreur = false;
	var code01 = "";
	var code02 = "";
	var codePostal = "";
	
	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 && erreur != 1)
		{
			if(compteur % 2 == 0)
			{
				erreur = valid_lettres(codePostal.charAt(compteur))
			}
			else
			{
				erreur = valid_chiffres(codePostal.charAt(compteur))
			}
			compteur = compteur+1;
		}
	}
	else
	{
		erreur = true;
	}
	return erreur;
}
	
function valid_zipcode(chaine)
{
	var erreur = false;
	
	if(chaine.length == 5)
	{
		erreur = validerChiffres(chaine);
	}
	else
	{
		erreur = true;
	}
	
	return erreur;
}

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

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