﻿var tErrorMSG = new Array();
var tabDates = new Array();

tErrorMSG['email'			] = 'Please enter your email.'		;
tErrorMSG['password'		] = 'Please enter your password.'	;
tErrorMSG['expertQuestion'	] = 'Pease submit your question.'	;

function checkOther() {
	if (document.getElementById('other_checkbox').checked) {
		document.getElementById('other').style.display = 'block';
		if (document.getElementById('other_text').value == 'none') {
			document.getElementById('other_text').value = '';
		}
	}
	else {
		document.getElementById('other').style.display = 'none';
		document.getElementById('other_text').value = 'none';
	}
}

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];
		}
		
		if (document.getElementById('heard')) {	//s'il y a un champ pour rentrer l'email d'un parrain
			url += '&heard=' + document.getElementById('heard').value;
		}
			
		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;
			}
		} else if (name == 'heard') {
			answer = question.value;
			
			if ((answer != '') && (!verifyEmail(answer))) {		//si l'email de l'ami n'est pas valide
				alertError('Please enter a valid friend email address.');
				question.focus();
				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 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 (name == 'heard') {
					if ((answer != '') && (!verifyEmail(answer))) {		//si l'email de l'ami n'est pas valide
						alertError('Please enter a valid friend email address.');
						question.focus();
						return false;
					}
				} else 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 (document.getElementById('SortableBrief')) {	//si le formulaire des golden questions existe
		var bGoldenForm = true;						//on le note
	}

	if ((document.getElementById('txtMobile')) && (document.getElementById('txtMobile').value == '')) {	//s'il ne donne pas son numéro de téléphone alors qu'on lui demande
		alertError('Please enter your phone number.');
	} else if ((bGoldenForm) && (! 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 {
		if (bGoldenForm) 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 ((bPhoneMandatory) && (EstChaineVide('txtMobile'))) {	//si pas de numéro de téléphone alors qu'il est obligatoire
		alertError('To help us contact you as soon as possible if you win this prize draw, please could you provide us with your phone number. We promise not to contact you by phone for any other reason unless you have indicated that you are happy for us to do so. Thank you!');
		document.getElementById('txtMobile').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
}