// Fonction appelée dans la page de sélection du type d'annonce lorsque
// l'utilisateur change le type d'annonce
function onTypeAddSelect(e) {
	// Récupération de la DIV de chargement d'une image
	var divImage = document.getElementById('selectionImageDiv');

	// Récupération du bouton à l'origine de l'événement
	var radBtn;
	if (e.target) {
         radBtn = e.target;
     } else if (e.srcElement) {
         radBtn = e.srcElement;
     }
	// Si ca valeur vaut 3, on affiche la DIV, sinon on la cache
	if(radBtn.value == "3") {
		divImage.style.display = "block";
	} else {
		divImage.style.display = "none";
	}
	//updateAmount(radBtn.value);
}

// Fonction appelée dans la page de sélection du type d'annonce
// lorsque l'utilisateur change le nombre de mois

function onChangeTypeAdd(e) {
	// Récupération de l'élément
	var inputElt;
	if (e.target) {
         inputElt = e.target;
     } else if (e.srcElement) {
         inputElt = e.srcElement;
     }
	var type = inputElt.name.substr(8,1);
	// On déclenche le traitement si le radio correspondant est sélectionné
	if(document.getElementById('rad_' + type).checked) {
		//updateAmount(type);
	}
}

// Met à jour le montant de la commande suivant le type d'annonce sélectionnée
// dans la page de sélection d'une annonce
function updateAmount(type) {
	// Définition des tarifs appliqués
	var baseCost = new Array();
	baseCost["1"] = 0;
	baseCost["2"] = 5;
	baseCost["3"] = 7;
	
	var addCost = new Array();
	addCost["1"] = 5;
	addCost["2"] = 5;
	addCost["3"] = 5;
	
	// Récupération des éléments
	var inputTotal = document.getElementById('total');
	var nbMonths = document.getElementById('nbMonth_' + type).value;
	// Validation de la valeur saisie
	var regEx=/^[0-9]+$/;
	if (!regEx.test(nbMonths)) {
		alert("Le nombre de mois saisi est incorrect !");
		return;
	}
	// Mise à jour de la valeur
	var amount = baseCost[type] + (nbMonths-1) * addCost[type];
	inputTotal.value = amount;
}

// Fonction de contrôle sur la recherche
// On force la sélection d'un département
function validerRecherche() {
	var selectDpt = document.getElementById('departmentId');
	if(selectDpt.value == "" || selectDpt.value == "0") {
		alert("Vous devez sélectionner un département dans la liste avant de lancer la recherche");
		return false;
	}
	return true;
}

// Fonction de contrôle pour la validation de l'inscription
function validerInscription() {
	if(!validerDateNaissance()) {
		return false;
	}
	var chkboxCG = document.getElementById('conditions');
	if(!chkboxCG.checked) {
		alert("Veuillez prendre connaissance des conditions générales");
		return false;
	}
	
	return true;
}

// Fonction de contrôle pour la validation de la saisie d'une annonce
function validerRedactionAnnonce() {
	var picto = confirm("Attention : vérifiez que vous avez coché les bons pictos (homme ou femme) !!!");
	if(picto) {
		var chkboxCG = document.getElementById('conditions');
		if(!chkboxCG.checked) {
			alert("Veuillez prendre connaissance des conditions générales");
			return false;
		}
	} else {
		return false;
	}
	
	return true;
}

// Fonction de contrôle sur l'édition d'une annonce
// On force à lire les conditions générales
function validerEditionAnnonce() {
	var chkboxCD = document.getElementById('conditions');
	if(!chkboxCD.checked) {
		alert("Veuillez prendre connaissance des conditions générales");
	}
}	

// Fonction appelée pour valider la saisie d'adresse du formulaire des badges
function validerEditAdd() {
	// On vérifie que l'adresse saisie ne dépasse pas 200 caractères
	if(document.getElementById('address').value.length > 200) {
		alert("L'adresse ne peut dépasser 200 caractères");
		return false;
	}
	return true;
}

// Fonction appelée pour valider la saisie d'envoi de mail à partir de la page de contact/presse
function validerContactUs() {
	// On vérifie que les champs ne sont pas vides
	if(document.getElementById('email').value == "") {
		alert("Vous devez saisir votre email pour que nous puissions vous recontacter.");
		return false;
	}
	if(document.getElementById('objet').value == "") {
		alert("Vous devez saisir l'objet de votre message.");
		return false;
	}
	if(document.getElementById('message').value == "") {
		alert("Vous devez saisir un corps pour votre message.");
		return false;
	}
	return true;
}


// Fonction appelée lors du changement de quantité de badges sélectionnés
function onChangeBadgeSelection() {
	// Mise à jour du montant si le radio est sélectionné
	if(document.getElementById('badge').checked) {
		updateMontantBadge();
	}
}

// Fonction appelée lors de la sélection/déselection de l'achat de badge
function onSelectBadgeRadio(selected) {
	if(selected) {
		document.getElementById('quantity').disabled = false;
		document.getElementById('firstname').disabled = false;
		document.getElementById('lastname').disabled = false;
		document.getElementById('address').disabled = false;
		document.getElementById('city').disabled = false;
		document.getElementById('zip').disabled = false;
		updateMontantBadge()
	} else {
		document.getElementById('total').value = total;
		document.getElementById('quantity').disabled = true;
		document.getElementById('firstname').disabled = true;
		document.getElementById('lastname').disabled = true;
		document.getElementById('address').disabled = true;
		document.getElementById('city').disabled = true;
		document.getElementById('zip').disabled = true;
	}
}

// Fonction appelée pour mettre à jour le montant de la commande sur le formulaire des badges
function updateMontantBadge() {
	var quantity = document.getElementById('quantity').value;
	// Validation du nombre saisi
	var regEx=/^[0-9]+$/;
	if (!regEx.test(quantity)) {
		alert("Le nombre de badge saisi est incorrect !");
		return;
	}
	
	var montant = total + quantity * 2;
	document.getElementById('total').value = montant;
}

// Fonction permettant de valider que la date de naissance correspond à une personne majeure et a le format jj/mm/aaaa
function validerDateNaissance() {
	// Récupération de la date saisie
	var dateSaisie = document.getElementById('birthdate').value;
	
	// Validation du format de la date saisie
	if(!validerFormatDate(dateSaisie)) {
		alert("La date saisie n'a pas le format jj/mm/aaaa");
		return false;
	}
	// Vérification que la date correspond à une personne majeure
	var dateJour = new Date();
	var todayAnnee = dateJour.getFullYear();
	var todayMonth = dateJour.getMonth() + 1;
	var todayDay = dateJour.getDate();
	
	elementsDate = dateSaisie.split("/");
	var inputDay = elementsDate[0];
	var inputMonth = elementsDate[1];
	var inputAnnee = elementsDate[2];
	var age;
	
	// Calcul de l'age
	if((inputMonth < todayMonth) || ((inputMonth == todayMonth) && (inputDay <= todayDay))) {
		age = todayAnnee - inputAnnee;
	} else {
		age = todayAnnee - inputAnnee - 1;
	}

	if(age < 18) {
		alert("Désolé, ce site est interdit aux mineurs !");
		return false;
	}
	
	return true
}

// Fonction permettant de valider le format d'une date jj/mm/aaaa
function validerFormatDate(strValeur) {
	//try {
		var tabNbJoursDansMois = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
		var elementsDate;
		var isDay;
		var isMonth;
		var isYear;
		
		// Si la date saisie ne fait pas 10 caractères, on arrête
		if (strValeur.length != 10) {
			return false;
		}
		// On teste le format par rapport à l'expression régulière
		var re = new RegExp("^[0-9]{2}/[0-9]{2}/[0-9]{4}$");
		if (!re.test(strValeur)) {
			return false;
		}
		
		// Separation de la date saisie en 3 variables jour, mois et annee
		elementsDate = strValeur.split("/");
		isDay    = elementsDate[0];
		isMonth  = elementsDate[1];
		isYear   = elementsDate[2];	

		// Verification que le mois est compris entre 1 et 12
		if ( (isMonth < 1) || (isMonth > 12) ) {
			return false;
		}
				
		// Verification de la bonne concordance entre le jour et le mois
		// Definition du dernier jour de fevrier
		// Annee bissextile si annee divisible par 4 et que ce n'est pas un siecle, ou bien si divisible par 400
		if ( (isYear%4 == 0) && (isYear%100 !=0) || (isYear%400 == 0) ) {
			tabNbJoursDansMois[1] = 29;
		}
		if ( (isDay < 1) || (isDay > tabNbJoursDansMois[isMonth-1]) ) {
			return false
		}
				
		return true;
/*	}  catch(exception){
		alert('Exception : [' + exception.name + '] ' + exception.message + ' - ' + exception.description + ' dans la fonction validerFormatDate') ;
	}*/
}

// Initialise le sexe sur la page d'édition de l'annonce
function initSex() {
	var sexId = document.getElementById('idSex').value;
	var sexs = document.getElementsByName('sex');
	
	if(sexId != "") {
		for(var i=0; i<sexs.length; i++) {
			if(sexId == sexs[i].value) {
				sexs[i].checked = true;
			}
		}
	} else {
		sexs[0].checked = true;
	}
}

// Initialise la rubrique sur la page d'édition de l'annonce
function initTopic() {
	var topicId = document.getElementById('idTopic').value;
	var topics = document.getElementsByName('topic');
	if(topicId != "") {
		for(var i=0; i<topics.length; i++) {
			if(topicId == topics[i].value) {
				topics[i].checked = true;
			}
		}
	} else {
		topics[0].checked = true;
	}
}

// Compte le nombre de caractères restant dans un textArea
function compterCaracteres(txtArea, max, idCompteur) {
	var taille = txtArea.value.length;
	if (taille > max ) {
		txtArea.value = txtArea.value.substring(0, max);
		var charsLeft = 0;
	} else {
		charsLeft = max - taille;
	}
	var compteur = document.getElementById(idCompteur);
	compteur.value = charsLeft;
}

// Masque l'écran principal et affiche la page de conditions générales
function afficherConditionsGenerales(idDivPrincipale) {
	document.getElementById(idDivPrincipale).style.display = 'none';
	document.getElementById(idDivPrincipale).style.visibility = 'hidden';
	
	document.getElementById('idDivCG').style.display = 'block';
	document.getElementById('idDivCG').style.visibility = 'visible';
}

// Masque l'écran des conditions générales et affiche la page principale
function masquerConditionsGenerales(idDivPrincipale) {
	document.getElementById(idDivPrincipale).style.display = 'block';
	document.getElementById(idDivPrincipale).style.visibility = 'visible';
	
	document.getElementById('idDivCG').style.display = 'none';
	document.getElementById('idDivCG').style.visibility = 'hidden';
}

