///////////////////////////////////////////////////////////////////////
// Copyright (C) 2007 Manuel Vila, Pascal Vilarem

// This file is part of The grenouille.com Project.

// The grenouille.com Project is free software: you can redistribute it and/or
// modify it under the terms of the Affero General Public License as
// published by Free Software Foundation either version 3 of the License, or
// (at your option) any later version.

// The grenouille.com Project is distributed in the hope that it will be
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// Affero General Public License for more details.

// You should have received a copy of the Affero General Public
// License in the COPYING file that comes with The grenouille.com Project.
// If not, see <http://www.gnu.org/licenses/>.
//----------------------------------------------------------------------

function faiPopLoad()
{
	with(document.register.fai)
	{
		for(i = options.length-1; i >= 0; i--) options[i] = null; // null out in reverse order (bug workarnd)

		options[0] = new Option("Indiquez votre connexion haut d\xE9bit...", -1);
		for(i = 0; i < fai_id.length; i++) options[i+1] = new Option(fai_name[i], fai_id[i]);
		options[i+1] = new Option("Autre...", -2);
		options[0].selected = true;
	}

	villePopLoad();
}

function villePopLoad()
{
	with(document.register.fai)
	{
		if(selectedIndex < (options.length-1))
		{
			faiIndex = selectedIndex - 1;
			document.register.submitButton.value = "enregistrer";
		}
		else
		{
			faiIndex = - 2; // "Autres..." a ŽtŽ choisi
			document.register.submitButton.value = "suite...";
		}
	}

	with(document.register.ville)
	{
		for(i = options.length-1; i >= 0; i--) options[i] = null; // null out in reverse order (bug workarnd)

		if(faiIndex >= 0)
		{ 
			options[0] = new Option("Indiquez votre ville...", -1);
			for(i = 0; i < ville_id[faiIndex].length; i++) options[i+1] = new Option(ville_name[faiIndex][i], ville_id[faiIndex][i]);
			options[i+1] = new Option("Autre...", -2);
			options[0].selected = true;
		}
		else
		{
			options[0] = new Option("", -1);
			options[0].selected = true;
		}
	}
}

function villePopChange()
{
	with(document.register.ville)
	{
		if(selectedIndex < (options.length-1))
			document.register.submitButton.value = "enregistrer";
		else
			document.register.submitButton.value = "suite...";
	}
}

function formSubmit()
{
	switch(document.register.page.value)
	{
		case "1" :
			if(isLogin() && isPass() && isEmail() && isPrenom() && isNom() && isConnexion())
				return true;
			break;
		case "2" :
			if(isFaiAutre() && isVilleAutre())
				return true;
			break;
		case "3" :
			if(isVilleAutre())
				return true;
			break;
		case "4" :
			if(isCodeConfirm())
				return true;
			break;
	}

	return false;
}

function isLogin()
{
	if(document.register.login.value == "")
	{
		alert("Le champ \"pseudo\" est vide. Veuillez choisir votre pseudo.");
		document.register.login.focus();
		return false;
	}
	
	caracteresAutorises = "?1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_.";
	flagOK = true;
	i = 0;
	while(i < document.register.login.value.length && flagOK)
	{
		if(caracteresAutorises.indexOf(document.register.login.value.charAt(i)) > 0)
			i++;
		else
			flagOK = false;
	}
	if (! flagOK)
	{
		alert("Votre pseudo contient des caracteres non autorises. Veuillez choisir un autre pseudo.");
		document.register.login.select();
		document.register.login.focus();
		return false;
	}

	return true;
}

function isPass()
{
	if(document.register.pass.value == "")
	{
		alert("Le champ \"mot de passe\" est vide. Veuillez choisir un mot de passe.");
		document.register.pass.focus();
		return false;
	}

	if(document.register.pass.value.length < 6 || document.register.pass.value.length > 16)
	{
		alert("Le mot de passe doit comporter au moins 6 caracteres. Veuillez choisir un autre mot de passe.");
		document.register.pass.select();
		document.register.pass.focus();
		return false;
	}

	if(document.register.passConfirm.value == "")
	{
		alert("Afin de s'assurer que vous n'avez pas commis d'erreur dans la saisie de votre mot de passe, vous devez le taper une deuxieme fois.");
		document.register.passConfirm.focus();
		return false;
	}

	if(document.register.passConfirm.value != document.register.pass.value)
	{
		alert("Les deux mots de passe ne sont pas identiques. Veuillez retaper votre mot de passe.");
		document.register.passConfirm.select();
		document.register.passConfirm.focus();
		return false;
	}

	return true;
}

function isEmail()
{
	if(document.register.email.value == "")
	{
		alert("Le champ \"e-mail\" est vide. Veuillez entrer votre adresse e-mail.");
		document.register.email.focus();
		return false;
	}

	if(document.register.email.value.indexOf('@',0) == -1 || document.register.email.value.indexOf ('.',0) == -1)
	{
		alert("Une adresse e-mail doit contenir un \"@\" et un \".\". Veuillez re-entrer votre adresse e-mail.");
		document.register.email.select();
		document.register.email.focus();
		return false;
	}

	return true;
}

function isPrenom()
{
	if(document.register.prenom.value == "")
	{
		alert("Le champ \"prenom\" est vide. Veuillez indiquer votre prenom.");
		document.register.prenom.focus();
		return false;
	}

	return true;
}

function isNom()
{
	if(document.register.nom.value == "")
	{
		alert("Le champ \"nom\" est vide. Veuillez indiquer votre nom de famille.");
		document.register.nom.focus();
		return false;
	}

	return true;
}

function isConnexion()
{
	if(document.register.fai.selectedIndex <= 0)
	{
		alert("Veuillez indiquer votre connexion haut debit.");
		document.register.fai.focus();
		return false;
	}

	if(document.register.fai.selectedIndex < (document.register.fai.options.length-1))
		if(document.register.ville.selectedIndex <= 0)
		{
			alert("Veuillez indiquer votre ville.");
			document.register.ville.focus();
			return false;
		}

	return true;
}

function isFaiAutre()
{
	if(document.register.faiAutre.value == "")
	{
		alert("Le champ \"connexion\" est vide. Veuillez indiquer le nom de votre formule d'abonnement haut debit.");
		document.register.faiAutre.focus();
		return false;
	}

	return true;
}

function isVilleAutre()
{
	if(document.register.villeAutre.value == "")
	{
		alert("Le champ \"ville\" est vide. Veuillez indiquer le nom de votre ville.");
		document.register.villeAutre.focus();
		return false;
	}

	return true;
}

function isCodeConfirm()
{
	if(document.register.codeConfirm.value == "")
	{
		alert("Veuillez indiquer votre code de confirmation.");
		document.register.codeConfirm.focus();
		return false;
	}

	return true;
}

function bodyOnLoad(NumeroPage, Fai, Ville, errorMessage, Pseudo)
{

	document.register.page.value = NumeroPage;

	switch(document.register.page.value)
	{
		case "1" :
			faiPopLoad();

			if(Fai != "")
			{
				with(document.register.fai)
				{
					for(i = 0; i < options.length; i++)
						if(options[i].value == Fai ) options[i].selected = true;
				}

				villePopLoad();

				with(document.register.ville)
				{
					for(i = 0; i < options.length; i++)
						if(options[i].value == Ville ) options[i].selected = true;
				}
				
				villePopChange();
			}
		
			document.register.login.focus();
			break;
		case "2" :
			document.register.faiAutre.focus();
			break;
		case "3" :
			document.register.villeAutre.focus();
			break;
		case "4" :
			document.register.codeConfirm.focus();
			break;
		case "unknowError" :
			alert("Une erreur inattendue est survenue !");
			break;
	}
	
	switch(errorMessage)
	{
		case "loginNotAvailable" :
			document.register.login.blur();
			alert("Le pseudo \""+Pseudo+"\" n'est pas disponible ! Veuillez en choisir un autre. ");
			document.register.login.select();
			document.register.login.focus();
			break;
		case "badConfirmCode" :
			document.register.codeConfirm.blur();
			alert("Votre code de confirmation est incorrect ! Veuillez vous reporter a l'e-mail de confirmation qui vous a ete envoye.");
			document.register.codeConfirm.select();
			document.register.codeConfirm.focus();
			break;
	}
}
