﻿var tErrorMSG = new Array();
var tabDates = new Array();

tErrorMSG['email'] = 'Please enter your email.';
tErrorMSG['password'] = 'Please enter your password.';

function tickedMakeUnTicked(idFrom,idTo) {	//décocher une case en cochant une autre
	if (document.getElementById(idFrom).checked) document.getElementById(idTo).checked = false;	//si on coche la case, l'autre se décoche
}

function tickedMakeSerialUnTicked(idFrom,idTo,number) {	//décochant une série de case en cochant une autre case
	if (document.getElementById(idFrom).checked) for (var i = 1; i <= number; i++) document.getElementById(idTo + '_' + i).checked = false;	//si on coche une certaine case, on décoche toutes les autres
}

function attribDate(id) {
	tabDates[id] = parseInt(document.getElementById(id).value,10);
}
		
function sendExtractForm() {	//envoyer le formulaire si valide
	var formulaire = document.frmExtract;

	attribDate('sd');	//on regarde ce que l'utilisateur donne comme dates
	attribDate('sm');
	attribDate('sy');
	attribDate('ed');
	attribDate('em');
	attribDate('ey');
	
	if (!valideDateById('s')) alertError("La date de début n'est pas valide.");
	else if (!valideDateById('e')) alertError("La date de fin n'est pas valide.");
	else if (!validateInterval()) alertError('La date de début est postérieure à la date de fin!');
	else formulaire.submit();
}

function validateInterval() {
	if (tabDates['sy'] > tabDates['ey']) return false;
	if (tabDates['sy'] < tabDates['ey']) return true;
	if (tabDates['sm'] > tabDates['em']) return false;
	if (tabDates['sm'] < tabDates['em']) return true;
	if (tabDates['sd'] > tabDates['ed']) return false;
	return true;
}

function valideDateById(id) {
	if (ValidateDateByValues(tabDates[id+'d'],tabDates[id+'m'],tabDates[id+'y'])) return true;
	return false;
}

function ValidateDateByValues(iDay,iMonth,iYear) {
	var today = new Date();
	
	if ((iDay > 31) || (iMonth > 12) || (iYear < 1900 || iYear > today.getFullYear())) return false;
	var dummyDate = new Date(iYear, iMonth - 1, iDay);
	if ((dummyDate.getDate() != iDay) || (dummyDate.getMonth() != iMonth - 1) ||(dummyDate.getFullYear() != iYear)) return false;
	return true;
}

function checkTitle() {	//action selon le titre
	if (document.getElementById('ddlTitle').value == '5') document.getElementById('sex').style.display = 'block';	//si le type est "Docteur", on demande son sexe
	else document.getElementById('sex').style.display = 'none';														//sinon, on le sait déjà
}

function validBeforeRegistrationForm(formId,section,page) {
	var tAnswers = verifyFilledBeforeRegistrationForm(formId);
	
	if (tAnswers) {
		var url = 'default.asp?section=my-beauty&page=register&from_section='+section+'&from_page='+page;
		
		for (var i = 1; i < tAnswers.length; i++) {
			url += '&answer' + i + '=' + tAnswers[i];
		}
			
		self.location.replace(url);
	}
}

function validForm(formId) {
	if (verifyFilledForm(formId)) document.getElementById(formId).submit();	//si le formulaire est rempli, on le valide
}

function verifyFilledBeforeRegistrationForm(formId) {
	var answer;
	var question;
	var name;
	var numAnswer;
	var tAnswers = new Array();
    var questionSelected = false;
    var isCheckbox = false;

	var questions = document.getElementById(formId).elements;
	
	for (var i = 0; i < questions.length; i++) {
		
		question = questions[i];
		name = question.name;
		
		if (name.substring(0,6) == 'answer') {
			numAnswer = parseInt(name.substring(6),10);
		
			answer = question.value;
			
			switch (question.type) {	//selon le type de champ
				case 'checkbox':		//si c'est une case à cocher
					if (question.checked) {																			//si elle est cochée
						if (!tAnswers[numAnswer]) tAnswers[numAnswer] = answer; else tAnswers[numAnswer] += ', ' + answer;	//on note la réponse
					} else if ((!tAnswers[numAnswer]) && ((!questions[i+1]) || (questions[i+1].name != name))) {	//si elle est pas cochée et qu'il n'y en a plus
						alertChampVide(name); return false;															//ça va pas!
					}
					
				break;
				
				case 'radio':			//si c'est un bouton radio
					if (question.checked) {																			//si elle est cochée
						tAnswers[numAnswer] = answer;																//on note la réponse de l'utilisateur
					} else if ((!tAnswers[numAnswer]) && ((!questions[i+1]) || (questions[i+1].name != name))) {	//si on aucun des boutons radio de la question n'a été cochée
						alertChampVide(name);																		//on affiche une erreur
						return false;																				//ça va pas !
					}
				break;
				
				default:				//pour les autres types de question
					if (answer == '') {	//si l'utilisateur n'a rien répondu
						alertChampVide(name);
						question.focus();
						return false;	//ça va pas !
					} else {
						tAnswers[numAnswer] = answer;
					}
				break;
			}
		}
	}
		    
	if (! IsChecked('chkTerms')) {	//si l'utilisateur n'a pas lu le règlement
		alertError('Please read the terms and conditions.');
		document.getElementById('chkTerms').focus();
		return false;
	}
	
	return tAnswers;
}

function verifyFilledForm(formId) {
	var answer;
	var question;
	var name;
	var bAnswers = new Array();
    var questionSelected = false;
    var isCheckbox = false;
    
	var questions = document.getElementById(formId).elements;
		
	for (var i = 0; i < questions.length; i++) {
		
		question = questions[i];
		answer = question.value;
		name = question.name;
		//alert(questions.length);
		switch (question.type) {	//selon le type de champ
			case 'checkbox':		//si c'est une case à cocher
			   
			    if(name.indexOf('answer')>-1){                                                       //on ne vérifie que les questions
			         isCheckbox = true;
			        if (!document.getElementById(question.id).checked && !questionSelected){									//si elle est cochée
			            questionSelected = false;
			        }
			        else{
			            questionSelected = true;
			            break;
			        }
			    }
			    
			break;					
			
			case 'radio':			//si c'est un bouton radio
				if (question.checked) {																	//si elle est cochée
					bAnswers[name] = true;																//on note que l'utilisateur a répondu à la question
				} else if ((!bAnswers[name]) && ((!questions[i+1]) || (questions[i+1].name != name))) {	//si on aucun des boutons radio de la question n'a été cochée
					alertChampVide(name);																//on affiche une erreur
					return false;																		//ça va pas !
				}
			break;
			
			default:				//pour les autres types de question
				if (answer == '') {	//si l'utilisateur n'a rien répondu
					alertChampVide(name);
					question.focus();
					return false;	//ça va pas !
				}
			break;
		}
	}
		    
	if (! IsChecked('chkTerms')) {	//si l'utilisateur n'a pas lu le règlement
		alertError('Please read the terms and conditions.');
		document.getElementById('chkTerms').focus();
		return false;
	}

	if(isCheckbox)
	{
	    if(!questionSelected )
	    {
	        alertError('Please complete all the questions.');
	        return false;   
	    }
	     
	}
	return true;
}

function alertChampVide(champ) {	//erreur à afficher quand une info n'est pas donné
	var msg = tErrorMSG[champ];
	
	if (msg == undefined) {			//s'il n'y a pas de message d'erreur défini pour ce champ
		alertError('Please complete all the questions.');	//on affiche le message d'erreur générique
	} else {						//si il y a un message d'erreur défini
		alertError(msg);					//on l'affiche
	}
}


function varLook(look) {
	if (look == 'Eva Longria - Supernatural Finish'			) { return ('supernatural-finish'		);}
	if (look == 'Doutzen Kroes - Golden Girl'				) { return ('golden-girl'				);}
	if (look == 'Penelope Cruz - Vintage Glamour'			) { return ('vintage-glamour'			);}
	if (look == 'Eva Longoria - Perfectly Pastel'			) { return ('perfectly-pastel'			);}
	if (look == 'Noemie Lenoir - Bronze Riviera'			) { return ('bronze-riviera'			);}
	if (look == 'Penelope Cruz - Natural Rose'				) { return ('natural-rose'				);}
	if (look == 'Aishwarya Rai - Iridescence'				) { return ('iridescence'				);}
	if (look == 'Doutzen Kroes - Glam Rock'					) { return ('glam-rock'					);}
	if (look == 'Milla Jovovich - Infallible'				) { return ('infallible'				);}
	if (look == 'Linda Evangelista  - Colour of the Stars'	) { return ('colour-of-the-stars'		);}
	if (look == 'Doutzen Kroes - Sultry Chic'				) { return ('sultry-chic'				);}
	if (look == 'Laetitia Casta - Classic Chic'				) { return ('classic-chic'				);}
	if (look == 'Noemie Lenoir - Exotic Chic'				) { return ('glamorous-chic'			);}
	if (look == 'Doutzen Kroes - Sultry Rock'				) { return ('sultry-rock'				);}
	if (look == 'Doutzen Kroes - Natural Romance'			) { return ('lustrous-lips'				);}
	if (look == 'Laetitia Casta - Glam Rose'				) { return ('glam-rose'					);}
	
	return look;
}

function envoyerLoginMascara() {	//envoie du formulaire d'identification et de participation à la compet "Mascara"
	envoyerLoginWithAnswerMascara('Please complete all the questions.');
}

function envoyerLoginGoodyBag() {	//envoi du formulaire d'identification et de participation à Goody Bag
	envoyerLoginWithAnswer('Please select your favourite look.');
}

function envoyerMascara() {	//envoi du formulaire de participation à la compet "Free Course"
	//alert ('envoyerMascara');
	envoyerAnswerCompetMascara('Please complete all the questions.');
}

function envoyerGoodyBag() {	//envoi du formulaire de participation au Goody Bag
	envoyerAnswerCompet('Please select your favourite look.');
}

function envoyerRegistrationMascara(section,page) {	//s'enregistrer à la compet Mascara en créant un nouvea profil
	competByRegistrationMascara(section,page,'Please complete all the questions.');
}

function envoyerRegistrationGoodyBag(section,page) {	//s'enregistrer à la compet "Goody Bag" en créant un nouvea profil
	competByRegistration(section,page,'Please select your favourite look.');
}

function envoyerLoginWithAnswerMascara(msg) {
	if (validationLoginCompetMascara(msg)) {	//si le formulaire est valide
		document.forms.frmLogin.submit();	//on l'envoie
	}
}

function envoyerLoginWithAnswer(msg) {
	if (validationLoginCompet(msg)) {	//si le formulaire est valide
		document.forms.frmLogin.submit();	//on l'envoie
	}
}

function envoyerAnswerCompetMascara(msg) {	//envoi du formulaire de participation à la compet
	//alert ('envoyerAnswerCompetMascara');
	if (validationCompetMascara(msg)) {	//si le formulaire est valide
		if (! IsChecked('chkTerms')) {	//si la case pour les règlements n'est pas cochée
			alertError("Please read the terms and conditions.");
			eval("document.frmLogin.chkTerms.focus()");
		} else {
			document.forms.frmLogin.submit();	//on l'envoie
		}
	}
}

function envoyerAnswerCompet(msg) {	//envoi du formulaire de participation à la compet
	if (validationCompet(msg)) {	//si le formulaire est valide
		if (! IsChecked('chkTerms')) {	//si la case pour les règlements n'est pas cochée
			alertError("Please read the terms and conditions.");
			eval("document.frmLogin.chkTerms.focus()");
		} else {
			document.forms.frmLogin.submit();	//on l'envoie
		}
	}
}

function validationLoginCompetMascara(msg) {
	if (!validationLogin()) {	//si les champs relatifs à l'identification ne sont pas valides
		return false;			//le formulaire n'est pas valide
	}
	
	if (! validationCompetMascara(msg)) {	//si l'utilisateur n'a pas choisi quel cours il voulait recevoir
		return false;			//le formulaire n'est pas valide
	}
	
	return true;	//en dehors de ça, c'est bon
}

function validationLoginCompet(msg) {
	if (!validationLogin()) {	//si les champs relatifs à l'identification ne sont pas valides
		return false;			//le formulaire n'est pas valide
	}
	
	if (! validationCompet(msg)) {	//si l'utilisateur n'a pas choisi quel cours il voulait recevoir
		return false;			//le formulaire n'est pas valide
	}
	
	return true;	//en dehors de ça, c'est bon
}

function validationCompetMascara(msg) {
	if (
		(
			(!document.getElementById('answer1_1').checked)
				&& (!document.getElementById('answer1_2').checked)
				&& (!document.getElementById('answer1_3').checked)
				&& (!document.getElementById('answer1_4').checked)
				&& (!document.getElementById('answer1_5').checked)
		)
			|| ((!document.getElementById('answer2_1').checked) && (!document.getElementById('answer2_2').checked))
	) {
	
		alertError(msg);														//on lui dit de la faire
		return false;															//et le formulaire n'est pas valide
	}
	
	return true;	//en dehors de ça, c'est bon
}

function validationCompet(msg) {
	var answer = document.getElementById('answer');	//on repère le champ de la réponse
	
	if (answer.value == '') {						//si l'utilisateur n'a pas répondu
		alertError(msg);							//on lui dit de la faire
		answer.focus();								//et on lui met directement le curseur dessus
		return false;								//et le formulaire n'est pas valide
	}
	
	return true;	//en dehors de ça, c'est bon
}

function competByRegistrationMascara(section,page,msg) {	//envoi du formulaire de participation à la compet
	if (validationCompetMascara(msg)) {	//si le formulaire est valide
		var answer1;
		var answer2;
	
		for (var i=1; i <= 5; i++) {
			if (document.getElementById('answer1_' + i).checked) {answer1 = document.getElementById('answer1_' + i).value;}
		}
	
		for (var i=1; i <= 2; i++) {
			if (document.getElementById('answer2_' + i).checked) {answer2 = document.getElementById('answer2_' + i).value;}
		}
	
		self.location.replace(
			'default.asp?section=my-beauty&page=register'
				+ '&from_section=' + section
				+ '&from_page=' + page
				+ '&answer1=' + answer1
				+ '&answer2=' + answer2
		);
	}
}

function competByRegistration(section,page,msg) {	//envoi du formulaire de participation à la compet
	if (validationCompet(msg)) {	//si le formulaire est valide
		self.location.replace(
			'default.asp?section=my-beauty&page=register'
				+ '&from_section=' + section
				+ '&from_page=' + page
				+ '&answer1=' + document.getElementById('answer').value
		);
	}
}

function envoyerPanel() {	//envoie du formulaire d'inscription au panel
	if (validationPanel()) {	//si le panel est valide
		document.forms.frmPanel.submit();	//on l'envoie
	}
}

function validationPanel() {	//Contrôle de formulaire du panel
	var describe = document.getElementById('describe');
	var desert = document.getElementById('desert');
	var number = document.getElementById('number');

	if (! verifyTextAreaNotBlank(describe)) {
		return false;
	}
	
	if (! verifyTextAreaNotTooLong(describe)) {
		return false;
	}
	
	if (! verifyTextAreaNotBlank(desert)) {
		return false;
	}
	
	if (! verifyTextAreaNotTooLong(desert)) {
		return false;
	}

	if (! verifyTextAreaNotBlank(number)) {
		return false;
	}

	if ((!document.getElementById('bt1').checked) && (!document.getElementById('bt2').checked) && (!document.getElementById('bt3').checked)) {
		alertError('All questions must be completed, to continue.');
		return false;
	}
	
	if (! IsChecked('chkTerms')) {	//si l'utilisateur n'a pas lu le règlement
		alertError('Please read the terms and conditions.');
		document.getElementById('chkTerms').focus();
		return false;
	}
	
	return true;
}

function verifyTextAreaNotTooLong(textarea) {
	if (textarea.value.length > 100)	{	//si la personne a mis plus de 100 caractères
		alertError('Please enter less than 100 characters.');	//on lui dit que c'est pas possible
		textarea.focus();												//et on l'amène à la bonne place pour corriger
		return false;
	}
	
	return true;
}
	
function verifyTextAreaNotBlank(textarea) {
	if (textarea.value == '')	{	//si la personne n'a pas répondu à la première question
		alertError('All questions must be completed, to continue.');	//on lui dit de répondre
		textarea.focus();												//et on l'amène à la bonne place pour le faire
		return false;
	}
	
	return true;
}

function envoyerSample(camp) {	//demande d'échantillon
	if (! IsChecked('chkTerms')) {	//si l'utilisateur n'a pas lu le règlement
		alertError('Please read the terms and conditions.');
	} else {
		self.location.replace('default.asp?section=competitions-offers&page=' + camp + '&r=1');
	}
}

function envoyerUserTest() {
	if (EstChaineVide("email")) 
	{
		alertError("Please enter your email.");
		eval("document.frmPassword.email.focus()");
	} else {	//si l'email est bien rentré
		document.frmUserTest.submit();	//on teste ses réponses/participations
	}
}

function envoyerPassword() {
	if (EstChaineVide("email")) 
	{
		alertError("Please enter your email.");
		eval("document.frmPassword.email.focus()");
	} else {	//si l'utilisateur a bien rentré son mail
		document.frmPassword.submit();	//on lui envoie son mot de passe
	}
}

function envoyerGolden() {
	if  (! verifyGoldenNotEmpty()) {	//s'il n'a pas répondu aux Golden Questions
		alertError('Please complete all the questions so that we can deliver the most relevant products and information for you.');
	} else {
		readGoldenAnswers();				//on prépare les golden answers
		document.forms.frmGolden.submit();	//et on les envoie
	}
}

function readGoldenAnswers() {
	var Golden;
	var lenGolden;
		
	for (var i = 1; i <= 4; i++) {
		Golden = Sortable.serialize('Sortable' + i);
		lenGolden = Golden.length;
		document.getElementById('gd' + i).value = Golden.substring(lenGolden-1,lenGolden);
	}
}

function envoyerRegistrationSMS() {
	if (validRegistrationFormSMS()) {	//si le formulaire est valide
		document.forms.frmRegistration.submit();	//on l'envoie
	}
}

function envoyerRegistration() {
	if (validRegistrationForm()) {	//si le formulaire est valide
		var Golden;
		var lenGolden;
		
		readGoldenAnswers();		//avant d'envoyer le formulaire, on prépare les golden answers
		document.forms.frmRegistration.submit();
	}
}

function countryToPostcode() {
	if (document.getElementById('ddlCountry').value == 'Ireland')  {	//pour l'irlande
		document.getElementById('txtPostcode').disabled = true;			//pas de code postal
	} else {															//mais dans les autres cas
		document.getElementById('txtPostcode').disabled = false;		//si !!
	}
}

function alertError(msg) {
	document.getElementById('errormsg').innerHTML = msg;
}

function alertPanelError(msg,n) {
	document.getElementById('errormsg' + n).innerHTML = msg;
}

function envoyerLogin() {
	if(validationLogin())
	{
		document.forms.frmLogin.submit();
	}
}

function envoyerPanelLogin(n) {
	if(validationPanelLogin(n))
	{
		document.getElementsByName('frmLogin' + n)[0].submit();
	}
}

function validationPanelLogin(n)
{
		var form = document.getElementsByName('frmLogin' + n)[0];

		if (!document.getElementById('sup' + n).checked)
		{
			if (n == 1) {alertPanelError("Please confirm you have a webcam",n);}
			else {alertPanelError("Please confirm you don't have a webcam",n);}
			document.getElementById('sup' + n).focus();
			return false;
		}
		if (form.email.value == '')
		{
			alertPanelError("Please enter your email.",n);
			form.email.focus();
			return false;
		}
		if (form.password.value == '')
		{
			alertPanelError("Please enter your password.",n);	
			form.password.focus();
			return false;
		}
		if (!form.terms.checked) {	//si la case pour les règlements n'est pas cochée
			alertPanelError("Please read the terms and conditions.",n);
			form.terms.focus();
			return false;
		}
				
	return true;
}



function validationLogin()
{

		if (EstChaineVide("email")) 
		{
			alertError("Please enter your email.");
			eval("document.frmLogin.email.focus()");
			return false;
		}
		/*
		else 
		{
			if (!verifEmailLogin(document.frmLogin.email.value)) 
			{
				alertError("Please enter a valid email address.");		
				eval("document.frmLogin.email.focus()");
				return false;
			}
		}
		*/
		if (EstChaineVide("password"))
		{
			alertError("Please enter your password.");	
			eval("document.frmLogin.password.focus()");
			return false;
		}
		if (! IsChecked('chkTerms')) {	//si la case pour les règlements n'est pas cochée
			alertError("Please read the terms and conditions.");
			eval("document.frmLogin.chkTerms.focus()");
			return false;
		}
				
	return true;
}

function verifEmailLogin(mail) 
{
		var validity = true;
		var test = false;
		mail = mail.toLowerCase();
		// si fin de boucle sur 1 alors c'est pas bon
		for (var i=1 ; i<(mail.length) ; i++) {
			// on va jusqu'a l'arobase
			if (mail.charAt(i)=='@') { 
				// on s'assure qu'il y a des caracteres apres
				if (i<(mail.length-4)){ 
					for (var j = i + 2 ; j<(mail.length-2) ; j++) { 
						// on s'assure qu'il y a un point apres l'arobase
						if (mail.charAt(j)=='.')
							// on verifie que l'extension compte entre 2 et 4 caracteres
							if ((j+1<mail.length) && (String(mail.substring(j+1,mail.length)).length<5))
								test = true; 
						} 
					} 
				} 
			}

		validity = verifString(mail,'abcdefghijklmnopqrstuvwxyz.@0123456789-_');
		if (!test) validity = false;
		return validity ;
}

function validRegistrationFormSMS() {
	if (EstChaineVide('txtForename')) {	//s'il n'y a pas de prénom
		alertError('Please enter the first name.');
		document.getElementById('txtForename').focus();
		return false;
	}
	
	if (EstChaineVide('Text1')) {	//s'il n'y a pas de nom
		alertError('Please enter the surname.');
		document.getElementById('Text1').focus();
		return false;
	}
	
	if (! verifyDateNotBlank()) {		//si la date de naissance n'est pas renseignée
		alertError('Please enter the date of birth.');
		document.getElementById('ddlDobDay').focus();
		return false;
	}
	
	if (! ValidateDate()) {	//si la date de naissance n'est pas valide {
		alertError('Please enter a valid date of birth.');
		document.getElementById('ddlDobDay').focus();
		return false;
	}
	
	if (EstChaineVide('txtEmail')) {	//s'il n'y a pas d'email
		alertError('Please enter the email address.');
		document.getElementById('txtEmail').focus();
		return false;
	}
	
	if (! verifyEmail(document.getElementById('txtEmail').value)) {		//si l'email n'est pas valide
		alertError('Please enter a valid email address.');
		document.getElementById('txtEmail').focus();
		return false;
	}
	
	return true;	//en dehors de tout ça, c'est bon
}

function validRegistrationForm() {
	if (EstChaineVide('ddlTitle')) {	//s'il n'y pas de title
		alertError('Please select your title.')
		document.getElementById('ddlTitle').focus();
		return false;
	}
	
	if (
		(document.getElementById('sex').style.display == 'block')
			&& (!document.getElementById('female').checked)
			&& (!document.getElementById('male').checked)
	) {
		alertError('Please enter your gender.');
		document.getElementById('female').focus();
		return false;
	}

	if (EstChaineVide('txtForename')) {	//s'il n'y a pas de prénom
		alertError('Please enter your first name.');
		document.getElementById('txtForename').focus();
		return false;
	}
	
	if (EstChaineVide('Text1')) {	//s'il n'y a pas de nom
		alertError('Please enter your surname.');
		document.getElementById('Text1').focus();
		return false;
	}
	
	if (! verifyDateNotBlank()) {		//si la date de naissance n'est pas renseignée
		alertError('Please enter your date of birth.');
		document.getElementById('ddlDobDay').focus();
		return false;
	}
	
	if (! ValidateDate()) {	//si la date de naissance n'est pas valide {
		alertError('Please enter a valid date of birth.<br>Users under the age of 18 may register but not enter competitions.');
		document.getElementById('ddlDobDay').focus();
		return false;
	}
	
	if (EstChaineVide('txtEmail')) {	//s'il n'y a pas d'email
		alertError('Please enter your email address.');
		document.getElementById('txtEmail').focus();
		return false;
	}
	
	if (EstChaineVide('txtEmailConf')) {	//s'il n'y a pas d'email
		alertError('Please confirm your email address.');
		document.getElementById('txtEmail').focus();
		return false;
	}
	
	if (! controlEmails()) {	//si les mots de passe ne correspondent pas
		alertError('Please make sure that your email addresses match.');
		document.getElementById('txtEmail').focus();
		return false;
	}
	
	if (! verifyEmail(document.getElementById('txtEmail').value)) {		//si l'email n'est pas valide
		alertError('Please enter a valid email address.');
		document.getElementById('txtEmail').focus();
		return false;
	}
	
	if (EstChaineVide('txtAddr1')) {	//s'il n'y a pas d'adresse
		alertError('Please enter your address.');
		document.getElementById('txtAddr1').focus();
		return false;
	}
	
	if (EstChaineVide('txtTown')) {	//s'il n'y a pas de ville
		alertError('Please enter your town.');
		document.getElementById('txtTown').focus();
		return false;
	}
	
	if (!document.getElementById('txtPostcode').disabled) {	//si le pode costal est bien activé, on le checke
		if (EstChaineVide('txtPostcode')) {	//s'il n'y a pas de code postal
			alertError('Please enter your postcode.');
			document.getElementById('txtPostcode').focus();
			return false;
		}

		if (!verifyPostCode(document.getElementById('txtPostcode').value)) {				//si le code postal est invalide
			alertError('Your postcode must contain at least 5 characters,<br>eg. SW3 4NX.');
			document.getElementById('txtPostcode').focus();
			return false;
		}
	}
	
	if (EstChaineVide('ddlCountry')) {
		alertError('Please enter your country.');
		document.getElementById('ddlCountry').focus();
		return false;
	}
	
	if (EstChaineVide('ddlHowHear')) {	//s'il n'a pas dit comment il a découvert ce site
		alertError('Please tell us how you heard about this site.');
		document.getElementById('ddlHowHear').focus();
		return false;
	}
	
	if (! verifyPassword()) {	//s'il n'y a pas de mot de passe valide
		alertError('Please enter a password with at least 6 numbers or letters, or a combination of numbers and letters.');
		document.getElementById('txtPass').focus();
		return false;
	}
	
	if (! controlPasswords()) {	//si les mots de passe ne correspondent pas
		alertError('Please ensure the passwords you have entered match.');
		document.getElementById('txtPass').focus();
		return false;
	}
	
	if  (! verifyGoldenNotEmpty()) {	//s'il n'a pas répondu aux Golden Questions
		alertError('Please complete all the questions so that we can deliver the most relevant products and information for you.');
		return false;
	}

	if (! IsChecked('chkTerms')) {	//si l'utilisateur n'a pas lu le règlement
		alertError('Please read the terms and conditions.');
		return false;
	}
	
	return true;	//en dehors de tout ça, c'est bon
}

function IsChecked(id) {	//fonction pour vérifier qu'une case est cochée
	if (document.getElementById(id).checked) {		//si la case est bien cochée
		return true;							//c'est cool
	}

	return false;								//sinon, c'est pas cool
}

function verifString(txt,lettres)
{
	validity = true;
	
	for (var i=0 ; i<(txt.length) ; i++) {
		validity_char = false;
		for (var j=0 ; j<(lettres.length) ; j++) {
			if ( txt.charAt(i) == lettres.charAt(j))
			validity_char = true;
		}
		if ( validity_char == false)
		validity = false;
	}
	return validity;
}

function ValidateDate() {
		var today = new Date();

		var iDay = document.getElementById('ddlDobDay').value;
		var iMonth = document.getElementById('ddlDobMonth').value;
		var iYear = document.getElementById('ddlDobYear').value;
		
		if ((iDay > 31) || (iMonth > 12) || (iYear < 1900 || iYear > today.getFullYear())) return false;
		var dummyDate = new Date(iYear, iMonth - 1, iDay);
		if ((dummyDate.getDate() != iDay) || (dummyDate.getMonth() != iMonth - 1) ||(dummyDate.getFullYear() != iYear)) return false;
		return true;
}

function EstChaineVide(id)		
{
	if (document.getElementById(id).value == '') 
		return true;
	else
		return false;
}

function EstPasCaractere(sNomChampAvalider, sFormName) 
{
	var i;			
	var ChaineAvalider = eval("document."+sFormName+"."+sNomChampAvalider+".value");
	var bEstNum = true;
		
		ChaineAvalider = ChaineAvalider.toUpperCase();

		for(i=0;i<ChaineAvalider.length;i++)
			{
			if ((ChaineAvalider.charAt(i) < 'A' || ChaineAvalider.charAt(i) > 'Z' ))
				{
					if (ChaineAvalider.charCodeAt(i) != 32 && ChaineAvalider.charCodeAt(i) != 45 && ChaineAvalider.charCodeAt(i) != 47) {
						bEstNum = false;
						break;									
					}
				}
			}
			
	if (bEstNum) return true; else	return false;					
}

function EstPasNumerique(sNomChampAvalider, sFormName)
{
	var i;			
	var ChaineAvalider = eval("document."+sFormName+"."+sNomChampAvalider+".value");
	var bEstNum = true;

		ChaineAvalider = ChaineAvalider.toUpperCase(); 			

		for(i=0;i<ChaineAvalider.length;i++) 
			{
			if ((ChaineAvalider.charAt(i) < '0' || ChaineAvalider.charAt(i) > '9'))
				{
					
					bEstNum = false;						
					break;												
				}										
			}
			
	if (bEstNum) return true; else	return false;					
}

function controlPasswords() {	//contrôle de l'identité des deux champs "mot de passe"
	if (document.getElementById('txtPass').value != document.getElementById('txtPassConf').value) {	//si les deux champs mot de passe ne correspondent pas
		return false;									//c'est pas bon
	}
	
	return true;	//sinon, c'est bon
}

function controlEmails() {	//contrôle de l'identité des deux champs "mot de passe"
	if (document.getElementById('txtEmail').value != document.getElementById('txtEmailConf').value) {	//si les deux champs mot de passe ne correspondent pas
		return false;									//c'est pas bon
	}
	
	return true;	//sinon, c'est bon
}

function verifyPassword() {	//contrôle du mot de passe
	if (document.getElementById('txtPass').value.length < 6) {	//si le mot de passe contient moins de 6 caractères
		return false;	//c'est pas bon
	}
	
	 return true;	//sinon, c'est bon
}

function verifyDateNotBlank() {	//Vérifier que la date est bien donnée
	var Day = document.getElementById('ddlDobDay').value;			//on note le jour donné
	var Month = document.getElementById('ddlDobMonth').value;		//on note le mois donné
	var Year = document.getElementById('ddlDobYear').value;			//on note l'année donnée
	if (Day + Month + Year == '') {	//si rien de la date n'a été remplie
		return false;	//c'est pas bon
	}
	
	return true;		//en dehors de ça, c'est bon
}

function verifyGoldenNotEmpty() {
	if (
		(Sortable.serialize('Sortable1') == '')
			|| (Sortable.serialize('Sortable2') == '')
			|| (Sortable.serialize('Sortable3') == '')
			|| (Sortable.serialize('Sortable4') == '')
	) {
		return false;
	}
	return true;
}


function verifyAdult() {											//vérifier que la personne a plus de 18 ans
		var iDay = document.getElementById('day').value;
		var iMonth = document.getElementById('month').value;
		var iYear = document.getElementById('year').value;
		
		var birthdate = new Date(iYear, iMonth, iDay);					//on note la date de naissance
		
		var limitBirthdate = new Date();								//on note la date du jour
		limitBirthdate.setFullYear(limitBirthdate.getFullYear - 18);	//on enlève 18 ans
		
		if (birthdate > limitBirthdate) {								//si la personne a moins de 18 ans,
			return false;										//alors, ça va pas
		}
	
		return true;												//sinon, ça va
}