//
// (c) Sylvain Baudoin, 2007
//

window.onload = format_form;

var FORM_NAME             = "bandeau";
var DEFAULT_EMPTY_IMAGE   = "/images/blank.gif";
// Increment du zoom (en pourcent)
var ZOOM_INCREMENT        = 5;
// Zoom actuel (en pourcent)
var CURRENT_ZOOM          = 0;
var IMAGE_HEIGHT          = 207;
var IMAGE_WIDTH           = 184;
var INIT_IMAGE_HEIGHT     = 1;
var INIT_IMAGE_WIDTH      = 1;
var x_startpos, x_diffpos = 0;
var y_startpos, y_diffpos = 0;
var MAGNETISM_MARGIN      = 5;
var x_pointerpos_old      = 0;
var movable               = false;
var nn6                   = document.getElementById && !document.all;
var image_temp            = null;

// Fonction declanchee lorsque l'utilisateur clique sur la souris. Est utilisee pour
// savoir s'il y a eu clic sur l'image de la frise
function start_move(e) {
	// On recupere l'element clique
	var fobj = nn6 ? e.target : event.srcElement;
	
	if (fobj.id == "photo_frise") {
		movable    = true;
		x_diffpos  = get_pix_size(fobj.style.left);
		y_diffpos  = get_pix_size(fobj.style.top);
		x_startpos = nn6 ? e.clientX : event.clientX;
		y_startpos = nn6 ? e.clientY : event.clientY;
		x_pointerpos_old = x_startpos;
		if (navigator.appName == "Netscape") {
			return false;
		} else {
			return true;
		}
	} else {
		movable = false;
		return true;
	}
}

// Fonction declanchee lorsque l'utilisateur relache le bouton de la souris
function stop_move(e) {
	movable = false;
	return false;
}

// Fonction declanchee au deplacement de la souris
function move(e) {
	// On ne fait qqch que si on a clique sur l'image
	if (movable) {
		var image = document.getElementById("photo_frise");
		
		// Deplacement horizontal
		var x_pointerpos = nn6 ? e.clientX : event.clientX;
		var xpos = x_diffpos + x_pointerpos - x_startpos;
		// Si on fait sortir l'image de la bordure gauche
		// Magnetisme a gauche avec deplacement vers la droite
		if (xpos >= 0 && xpos <= MAGNETISM_MARGIN && x_pointerpos >= x_pointerpos_old) {
			xpos = 0;
		}
		// Magnetisme a gauche avec deplacement vers la gauche
		if (xpos >= -MAGNETISM_MARGIN && xpos <= 0 && x_pointerpos <= x_pointerpos_old) {
			xpos = 0;
		}
		// Si on va trop loin
		if (image.width + xpos < 0) {
			xpos = 1 - image.width;
		}
		// Si on fait sortir l'image de la bordure droite
		// Magnetisme a droite avec deplacement vers la droite
		if (xpos >= IMAGE_WIDTH - image.width && xpos <= IMAGE_WIDTH - image.width + MAGNETISM_MARGIN && x_pointerpos >= x_pointerpos_old) {
			xpos = IMAGE_WIDTH - image.width;
		}
		// Magnetisme a droite avec deplacement vers la gauche
		if (xpos >= IMAGE_WIDTH - image.width - MAGNETISM_MARGIN && xpos <= IMAGE_WIDTH - image.width && x_pointerpos <= x_pointerpos_old) {
			xpos = IMAGE_WIDTH - image.width;
		}
		// Si on va trop loin
		if (xpos > IMAGE_WIDTH) {
			xpos = IMAGE_WIDTH - 1;
		}
		x_pointerpos_old = x_pointerpos;
    image.style.left = xpos + "px";
		
		// Deplacement vertical
		var ypos = nn6 ? y_diffpos + e.clientY - y_startpos : y_diffpos + event.clientY - y_startpos;
		if (ypos > 0) {
			ypos = 0;
		}
		if (image.height + ypos < IMAGE_HEIGHT) {
			ypos = IMAGE_HEIGHT - image.height;
		}
    image.style.top  = ypos + "px";
    
    // On enregistre les nouvelles coordonnees
		document.forms[FORM_NAME].offset_x.value = xpos;
		document.forms[FORM_NAME].offset_y.value = ypos;
	}
	
	return false;
}

// Definition des fonctions d'evenement
document.onmousedown = start_move;
document.onmouseup   = stop_move;
document.onmousemove = move;

function get_pix_size(pix) {
	return parseInt(pix.replace(/ *px/, ""));
}

function supported_file_extension() {
	var form = document.forms[FORM_NAME];
	return !(form.photo_perso.value.search(/\.jpg$/i) == -1 && form.photo_perso.value.search(/\.jpeg$/i) == -1 &&
	         form.photo_perso.value.search(/\.png$/i) == -1 && form.photo_perso.value.search(/\.gif$/i) == -1);
}

// Fonction declanchee dans le cas ou on choisit un fichier local
function check_selected_file() {
	var form = document.forms[FORM_NAME];

	if (form.upload_type[0].checked) {
		if (supported_file_extension()) {
			load_image(true);
		} else {
			form.image_loaded.value = "0";
			alert("Format de fichier incorrect. Veuillez indiquer une image .jpg, .png ou .gif.");
		}
	}
	return false;
}

// Fonction declanchee dans le cas ou on choisit une URL
function check_selected_url() {
	var form = document.forms[FORM_NAME];

	if (form.upload_type[1].checked && form.photo_perso_url.value != "") {
		load_image(true);
	}
}

// Charge et affiche une image
function load_image(flag) {
	var form = document.forms[FORM_NAME];
	
	if (((form.photo_perso.value != "" && form.upload_type[0].checked) || (form.photo_perso_url.value != "" && form.upload_type[1].checked)) && (flag == true)) {
		// On verifie l'extension du fichier
		if (form.upload_type[0].checked) {
			if (! supported_file_extension()) {
				alert("Format de fichier incorrect. Veuillez indiquer une image .jpg, .png ou .gif.");
				return false;
			}
		}
		
		// On desactive le bouton de post du formulaire
		document.getElementById("submit_form_button").disabled = true;
		// On affiche l'image de progression
		document.getElementById("photo_frise").style.display     = "none";
		document.getElementById("upload_progress").style.display = "block";
		// On poste l'image
		var init_target = form.target;
		form.target     = "photo_upload";
		var init_action = document.forms[FORM_NAME].action;
		form.action     = "/upload_photo.php";
		// On n'uploade pas l'image si on a choisi une image de type URL
		if (form.upload_type[0].checked) {
			form.enctype = "multipart/form-data";
		} else {
			form.enctype = "application/x-www-form-urlencoded";
		}
		form.submit();
		// On reinitialise les parametres du formulaire
		form.target = init_target;
		form.action = init_action;
	} else {
		document.getElementById("upload_progress").style.display = "none";
		document.getElementById("photo_frise").src               = DEFAULT_EMPTY_IMAGE;
		document.getElementById("photo_frise").style.display     = "block";
		form.image_loaded.value                                  = "0";
	}
	return false;
}

// Execute apres upload de l'image
function post_load_image(id) {
	var form = document.forms[FORM_NAME];
	
	form.image_loaded.value = "1";
	CURRENT_ZOOM = form.zoom.value = 0;
	x_startpos   = form.offset_x.value = 0;
	x_diffpos    = 0;
	y_startpos   = form.offset_y.value = 0;
	y_diffpos    = 0;
	
	// On charge l'image qui a ete uploadee sur le serveur
	image_temp        = new Image();
	image_temp.onload = new_image_temp_loaded;
	image_temp.src    = "/photos_perso_temp/photo_" + id + "?" + (new Date()).getTime();
	return false;
}

// Une fois qu'une nouvelle image a ete chargee par le navigateur, on l'affiche 
function new_image_temp_loaded() {
	var image    = document.getElementById("photo_frise");
	
	// On charge l'image definitive
	image.src    = image_temp.src;
	
	// Reinitialisation des variables globales
	INIT_IMAGE_HEIGHT = image_temp.height;
	INIT_IMAGE_WIDTH  = image_temp.width;
	// On recadre la photo
	zoom_out();
	// On affiche l'image
	document.getElementById("upload_progress").style.display = "none";
	image.style.display = "block";
	// Curseur de deplacement
	image.style.cursor = "move";
	// On reactive le bouton submit du formulaire
	document.getElementById("submit_form_button").disabled = false;
	
	image.onload = null;
	return true;
}

// Une fois qu'une image deja uploadee a ete chargee par le navigateur, on l'affiche 
function uploaded_image_loaded() {
	var image = document.getElementById("photo_frise");
	
	// On affiche l'image
	document.getElementById("upload_progress").style.display = "none";
	image.style.display = "block";
	// Reinitialisation des variables globales
	var form = document.forms[FORM_NAME];
	INIT_IMAGE_HEIGHT = image.height;
	INIT_IMAGE_WIDTH  = image.width;
	CURRENT_ZOOM      = form.zoom.value;
	x_startpos        = form.offset_x.value;
	y_startpos        = form.offset_y.value;
	// On recadre la photo
	image.style.left = x_startpos + "px";
	image.style.top  = y_startpos + "px";
	resize_image();
	// Curseur de deplacement
	image.style.cursor = "move";
	
	image.onload = null;
	return true;
}

function handleUploadEvent(e, id) {
	switch (e) {
		case "FILE NOT FOUND":
			purge_image();
			alert("Le fichier que vous avez indiqué est trop gros ou n'existe pas.");
			break;
		
		case "WRONG FORMAT":
			purge_image();
			alert("Format de fichier incorrect. Veuillez indiquer une image .jpg, .png ou .gif.");
			break;
		
		case "NOT AN IMAGE":
			purge_image();
			alert("Impossible d'ouvrir la photo. Veuillez vérifier qu'il s'agit bien d'une image .jpg, .png ou .gif.");
			break;
		
		case "DB ERROR":
			purge_image();
			alert("Une erreur inattendue nous empêche de poursuivre l'opération. Veuillez réessayer dans quelques instants.");
			break;
		
		case "UNKNOWN ERROR":
			purge_image();
			alert("Une erreur inconnue nous empêche de poursuivre l'opération. Veuillez réessayer dans quelques instants.");
			break;
		
		case "OK":
			post_load_image(id);
			break;
		
		default:
			break;
	}
}

// Quand on selectionne une photo perso de type fichier ou de type URL
function select_upload_type(type) {
	switch (type) {
		case 0:
			document.getElementById("photo_perso").style.display     = "";
			document.getElementById("photo_perso_url").style.display = "none";
			break;
		
		case 1:
			document.getElementById("photo_perso").style.display     = "none";
			document.getElementById("photo_perso_url").style.display = "";
			break;
		
		default:
			break;
	}
}

// Efface l'image de la frise
function purge_image() {
	document.forms[FORM_NAME].photo_perso.value = "";
	load_image(false);
	// Pas de curseur de deplacement
	document.getElementById("photo_frise").style.cursor = "default";
	// On reactive le bouton du formulaire
	document.getElementById("submit_form_button").disabled = false;
}

// Redimensionne l'image au zoom global et la replace au bon endroit si necessaire 
function resize_image() {
	var image = document.getElementById("photo_frise");
	var form  = document.forms[FORM_NAME];
	
	// Nouvelles dimensions de l'image
	var height = Math.round(INIT_IMAGE_HEIGHT * CURRENT_ZOOM / 100);
	image.height = height;
	var width = Math.round(INIT_IMAGE_WIDTH * CURRENT_ZOOM / 100);
	image.width  = width;
	// On regarde si l'image sort de la zone
	if (image.src != DEFAULT_EMPTY_IMAGE) {
		if (get_pix_size(image.style.left) + width < 0) {
			if (width > IMAGE_WIDTH) {
				image.style.left    = Math.round(IMAGE_WIDTH - width) + "px";
				form.offset_x.value = Math.round(IMAGE_WIDTH - width);
			} else {
				image.style.left    = "0px";
				form.offset_x.value = 0;
			}
		}
		
		if (get_pix_size(image.style.top) > 0) {
			image.style.top = "0px";
			form.offset_y.value = "0";
		} else if (height + get_pix_size(image.style.top) < IMAGE_HEIGHT) {
			image.style.top = Math.round(IMAGE_HEIGHT - height) + "px";
			form.offset_y.value = Math.round(IMAGE_HEIGHT - height);
		} else {
			form.offset_y.value = get_pix_size(image.style.top);
		}
	}
	document.forms[FORM_NAME].zoom.value = CURRENT_ZOOM;
}

// Zoom avant sur l'image
function zoom_in() {
	// On ne zoom pas l'image par defaut vide
	if (document.getElementById("photo_frise").src != DEFAULT_EMPTY_IMAGE) {
		// On calcule le nouveau zoom
		CURRENT_ZOOM = (Math.floor(CURRENT_ZOOM / ZOOM_INCREMENT) + 1) * ZOOM_INCREMENT;
		resize_image();
	}
}

// Zoom arriere sur l'image
function zoom_out() {
	// On ne zoom pas l'image par defaut vide
	if (document.getElementById("photo_frise").src != DEFAULT_EMPTY_IMAGE) {
		// On calcule le nouveau zoom. On s'arrete des qu'un zoom arriere rend une dimension
		// de l'image plus petite que les limites max de l'image
		var new_zoom = (Math.floor(CURRENT_ZOOM / ZOOM_INCREMENT) - 1) * ZOOM_INCREMENT;
		if (INIT_IMAGE_HEIGHT * new_zoom / 100 < IMAGE_HEIGHT) {
			CURRENT_ZOOM = IMAGE_HEIGHT / INIT_IMAGE_HEIGHT * 100;
		} else {
			CURRENT_ZOOM = new_zoom;
		}
		resize_image();
	}
}

// Masque un element donne
function hide(name) {
	if (document.getElementById) {
		document.getElementById(name).style.display = "none";
	}
}

// Affiche un element donne
function show(name) {
	if (document.getElementById) {
//		document.getElementById(name).style.display = "block";
		document.getElementById(name).style.display = "";
	}
}

// Affiche un onglet
function select_tab(name, id) {
	var onglets         = document.getElementById(name).childNodes;
	var contenu_onglets = document.getElementById("contenu_" + name).childNodes;
	for (var i = 0; i < onglets.length; i++) {
		var onglet         = onglets[i];
		var contenu_onglet = contenu_onglets[i];
		if (contenu_onglet.nodeName.toLowerCase() == "div") {
			if (onglet.id == name + "_" + id) {
				onglet.className         = "onglet_actif";
				contenu_onglet.className = "contenu_onglet_actif";
			} else {
				onglet.className         = "onglet_inactif";
				contenu_onglet.className = "contenu_onglet_inactif";
			}
		}
	}
}

// Fonction appelee au chargement de la page pour formatter le formulaire
function format_form() {
	// Masque des champs du formulaire
	check_form();
	// Chargement de la photo perso
	var form = document.forms[FORM_NAME];
	if (form.image_loaded.value == "1" && form.upload_id_full.value != "") {
		var image = document.getElementById("photo_frise");
		// On affiche l'image de progression
		image.style.display = "none";
		document.getElementById("upload_progress").style.display = "block";
		// On charge l'image
		image.onload = uploaded_image_loaded;
		image.src    = "/photos_perso_temp/photo_" + document.forms[FORM_NAME].upload_id_full.value;
	}
}

// Verifie le formulaire et masque des champs en fonction du type de frise
function check_form() {
	var form = document.forms[FORM_NAME];
	if (form.type_evenement[0].checked) {
		check_form_classique();
	}
	if (form.type_evenement[1].checked) {
		check_form_conception();
	}
	if (form.type_evenement[2].checked) {
		check_form_regime();
	}
}

// Affiche ou cache des champs du formulaire dans le cas d'une frise de type classique
function check_form_classique() {
	hide("titre_conception");
	hide("numero_cycle");
	hide("titre_date_regles");
	hide("affichage_fin_cycle");
	hide("dates_conception");
	hide("titre_regime");
	hide("type_calcul_regime");
	hide("titre_date_regime");
	hide("info_regime");
	show("titre_date");
	show("date_debut");
	show("style_decompte");
	// Restaure les messages par defaut
	var form = document.forms[FORM_NAME];
	if (form.message_J.value == "" ||
		    form.message_J.value == "Texte (facultatif)") {
		form.message_J.value = "Texte (obligatoire)";
	}
	show("titre_message_J");
	show("exemple_message_J");
	hide("exemple_message_conception");
	hide("exemple_message_regime");
	show("message_apres");
	show("message");
	check_date();
}

// Affiche ou cache des champs du formulaire dans le cas d'une frise de type conception
function check_form_conception() {
	hide("titre_date");
	hide("style_decompte");
	// Restaure les messages par defaut
	var form = document.forms[FORM_NAME];
	if (form.message_J.value == "" ||
		    form.message_J.value == "Texte (obligatoire)") {
		form.message_J.value = "Texte (facultatif)";
	}
	hide("message_avant");
	show("message_J");
	hide("titre_message_J");
	hide("exemple_message_J");
	show("exemple_message_conception");
	hide("exemple_message_regime");
	hide("message_apres");

	hide("titre_regime");
	hide("type_calcul_regime");
	hide("titre_date_regime");
	hide("info_regime");
	show("titre_conception");
	show("numero_cycle");
	show("titre_date_regles");
	show("affichage_fin_cycle");
	show("date_debut");
	show("dates_conception");
}

// Affiche ou cache des champs du formulaire dans le cas d'une frise de type regime
function check_form_regime() {
	hide("titre_date");
	hide("style_decompte");
	// Restaure les messages par defaut
	var form = document.forms[FORM_NAME];
	if (form.message_J.value == "" ||
		    form.message_J.value == "Texte (obligatoire)") {
		form.message_J.value = "Texte (facultatif)";
	}
	hide("message_avant");
	show("message_J");
	hide("titre_message_J");
	hide("exemple_message_J");
	hide("exemple_message_conception");
	show("exemple_message_regime");
	hide("message_apres");

	hide("titre_conception");
	hide("numero_cycle");
	hide("titre_date_regles");
	hide("affichage_fin_cycle");
	hide("dates_conception");
	show("titre_regime");
	show("type_calcul_regime");
	show("titre_date_regime");
	show("info_regime");
	
	check_type_calcul_regime();
}

// Affiche ou cache des champs du formulaires relatifs aux frises de regime
function check_type_calcul_regime() {
	var form = document.forms[FORM_NAME];
	if (form.type_calcul_regime[0].checked) {
		show("date_debut");
		show("champ_regime_duree");
		hide("champ_regime_poids_actuel");
	} else {
		hide("date_debut");
		hide("champ_regime_duree");
		show("champ_regime_poids_actuel");
	}
}


// Verifie la date choisie et affiche ou masque des champs de texte en fonction
function check_date() {
	var form = document.forms[FORM_NAME];
	// Concerne uniquement les frises de type classique
	if (! form.type_evenement[0].checked) {
		return;
	}
	
	var valeurCachee = "-- IGNORE --";
	var date_today   = 20120211;
	var date_choisie = form.annee.value * 10000 + form.mois.value * 100 + form.jour.value * 1;

	if (date_choisie < date_today) {    // Date passee
		hide("message_avant");
		if (form.message_avant1.value == "" ||
		    form.message_avant1.value == "Texte 1 (obligatoire)")
			form.message_avant1.value = valeurCachee;
		if (form.message_avant2.value == "" ||
		    form.message_avant2.value == "Texte 2 (facultatif)")
			form.message_avant2.value = valeurCachee;
		hide("message_J");
		if (form.message_J.value == "" ||
		    form.message_J.value == "Texte (obligatoire)")
			form.message_J.value = valeurCachee;
		hide("titre_message_apres");
	} else if (date_choisie == date_today) {    // Aujourd'hui
		hide("message_avant");
		if (form.message_avant1.value == "" ||
		    form.message_avant1.value == "Texte 1 (obligatoire)")
			form.message_avant1.value = valeurCachee;
		if (form.message_avant2.value == "" ||
		    form.message_avant2.value == "Texte 2 (facultatif)")
			form.message_avant2.value = valeurCachee;
		if (form.message_J.value == valeurCachee)
			form.message_J.value = "Texte (obligatoire)";
		show("message_J");
		show("titre_message_apres");
	} else {    // Date a venir
		if (form.message_avant1.value == valeurCachee)
			form.message_avant1.value = "Texte 1 (obligatoire)";
		if (form.message_avant2.value == valeurCachee)
			form.message_avant2.value = "Texte 2 (facultatif)";
		show("message_avant");
		if (form.message_J.value == valeurCachee)
			form.message_J.value = "Texte (obligatoire)";
		show("message_J");
		show("titre_message_apres");
	}
}

// Verifie si la date choisie est valide
function isDateValid(day, month, year) {
	var aDate = new Date(year, month - 1, day);
	return ((aDate.getDate() == day) && (aDate.getMonth() == month - 1) && (aDate.getFullYear() == year))
}

// Valide le formulaire
function validate_form(form) {
	var form = document.forms[FORM_NAME];
	var result;
	
	if (form.type_evenement[0].checked) {
		result = validate_form_classique(form);
	}
	if (form.type_evenement[1].checked) {
		result = validate_form_conception(form);
	}
	if (form.type_evenement[2].checked) {
		result = validate_form_regime(form);
	}
	
	// Avant de poster le formulaire, on supprime le champ de fichier
	if (result) {
		var field = document.getElementById("photo_perso");
		if (field) {
			field.parentNode.removeChild(field);
		}
	}
	return result;
}

function validate_form_classique(form) {
	// On verifie la date de l'evenement
	if (! isDateValid(form.jour.value, form.mois.value, form.annee.value)) {
		alert("La date est incorrecte. Veuillez la vérifier.");
		return false;
	}
	// On verifie le format de la couleur choisie
	var reg = /^#[0-9a-fA-F]{6}$/;
	if (!reg.test(form.couleur_texte.value)) {
		alert("La couleur n'est pas reconnue. Veuillez vérifier sa valeur.");
		return false;
	}
	// On verifie les textes obligatoires. La liste des champs depend de la date de l'evenement.
	var date_today   = 20120211;
	var date_choisie = form.annee.value * 10000 + form.mois.value * 100 + form.jour.value * 1;
	if (date_choisie < date_today) {    // Date passee
		if (form.message_apres1.value == "" ||
		    form.message_apres1.value == "Texte 1 (obligatoire)") {
			alert("Tous les premiers champs de texte de votre message sont obligatoires.");
			return false;
		}
	} else if (date_choisie == date_today) {    // Aujourd'hui
		if (form.message_J.value == "" ||
		    form.message_J.value == "Texte (obligatoire)" ||
		    form.message_apres1.value == "" ||
		    form.message_apres1.value == "Texte 1 (obligatoire)") {
			alert("Tous les premiers champs de texte de votre message sont obligatoires.");
			return false;
		}
	} else {    // Date a venir
		if (form.message_avant1.value == "" ||
		    form.message_avant1.value == "Texte 1 (obligatoire)" ||
		    form.message_J.value == "" ||
		    form.message_J.value == "Texte (obligatoire)" ||
		    form.message_apres1.value == "" ||
		    form.message_apres1.value == "Texte 1 (obligatoire)") {
			alert("Tous les premiers champs de texte de votre message sont obligatoires.");
			return false;
		}
	}

	// On peut poster le formulaire
	return true;
}

function validate_form_conception(form) {
	// On verifie que le numero de cycle est un entier positif s'il existe
	if (form.numero_cycle.value != "") {
		if (isNaN(form.numero_cycle.value) || form.numero_cycle.value <= 0 || parseInt(form.numero_cycle.value) != form.numero_cycle.value-0) {
			alert("Le numéro de cycle doit être un entier positif. Veuillez le vérifier.");
			return false;
		}
	}
	// On verifie la date des regles
	if (! isDateValid(form.jour.value, form.mois.value, form.annee.value)) {
		alert("La date est incorrecte. Veuillez la vérifier.");
		return false;
	}
	// Il faut donner une date passee
	var selectedDate = new Date(form.annee.value, form.mois.value - 1, form.jour.value);
	var currentDate = new Date();
	if ((selectedDate.getFullYear() * 10000 + (selectedDate.getMonth() + 1) * 100 + selectedDate.getDate())
	    > (currentDate.getFullYear() * 10000 + (currentDate.getMonth() + 1) * 100 + currentDate.getDate())) {
		alert("Veuillez indiquer la date des dernières règles et non une date dans le futur.");
		return false;
	}
	// Phase luteale < duree cycle
	if (form.duree_cycle.value*1 <= form.duree_phase_luteale.value*1) {
		alert("La durée de la phase lutéale est incorrecte. Veuillez la vérifier.");
		return false;
	}

	// On peut poster le formulaire
	return true;
}

function validate_form_regime(form) {
	// Champs dependant du mode de calcul
	if (form.type_calcul_regime[0].checked) {
		// Date de debut de regime doit etre une date valide
		if (! isDateValid(form.jour.value, form.mois.value, form.annee.value)) {
			alert("La date de début de régime est incorrecte. Veuillez la vérifier.");
			return false;
		}
		// On verifie que la duree du regime est un entier
		if (isNaN(form.duree_regime.value) || form.duree_regime.value <= 0 || parseInt(form.duree_regime.value) != form.duree_regime.value-0) {
			alert("La durée du régime doit être un entier positif. Veuillez la vérifier.");
			return false;
		}
	} else {
		// On verifie le poids actuel
		if (isNaN(form.poids_actuel.value) || form.poids_actuel.value <= 0) {
			alert("Votre poids actuel doit être un positif. Au besoin, utiliser un point au lieu de la virgule. Veuillez le vérifier.");
			return false;
		}
		// Le poids actuel doit etre dans la fourchette de poids indiquee
		if (form.poids_actuel.value > Math.max(form.poids_depart.value, form.poids_fin.value) ||
		    form.poids_actuel.value < Math.min(form.poids_depart.value, form.poids_fin.value)) {
			alert("Votre poids actuel doit être compris entre le poids de départ et le poids cible. Veuillez le vérifier.");
			return false;
		}
	}
	
	// Champs communs
	// On verifie le poids de depart
	if (isNaN(form.poids_depart.value) || form.poids_depart.value <= 0) {
		alert("Le poids de départ doit être un positif. Au besoin, utiliser un point au lieu de la virgule. Veuillez le vérifier.");
		return false;
	}
	// On verifie le poids cible
	if (isNaN(form.poids_fin.value) || form.poids_fin.value <= 0) {
		alert("Le poids cible doit être un positif. Au besoin, utiliser un point au lieu de la virgule. Veuillez le vérifier.");
		return false;
	}

	// On peut poster le formulaire
	return true;
}

function show_help(id) {
	document.getElementById("help_" + id).style.display = "block";
}

function close_help(id) {
	document.getElementById("help_" + id).style.display = "none";
}

