function isValidEmail(email, required) {
    if (required==undefined) {   // if not specified, assume it's required
	required=true;
    }
    if (email==null) {
	if (required) {
	    return false;
	}
	return true;
    }
    if (email.length==0) {  
	if (required) {
	    return false;
	}
	return true;
    }
    if (! allValidChars(email)) {  // check to make sure all characters are valid
	return false;
    }
    if (email.indexOf("@") < 1) { //  must contain @, and it must not be the first character
	return false;
    } else if (email.lastIndexOf(".") <= email.indexOf("@")) {  // last dot must be after the @
	return false;
    } else if (email.indexOf("@") == email.length) {  // @ must not be the last character
	return false;
    } else if (email.indexOf("..") >=0) { // two periods in a row is not valid
	return false;
    } else if (email.indexOf(".") == email.length) {  // . must not be the last character
	return false;
    }
    return true;
}

function allValidChars(email) {
    var parsed = true;
    var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
    for (var i=0; i < email.length; i++) {
	var letter = email.charAt(i).toLowerCase();
	if (validchars.indexOf(letter) != -1)
	    continue;
	parsed = false;
	break;
    }
    return parsed;
}

function validateMail() {
    if (document.contact.nom.value == "") {
        alert ("Veuillez saisir votre nom.");
        return false;
    }

    if (! isValidEmail(document.contact.email.value)) {
        alert ("Veuillez saisir une adresse mail valide.");
        return false;
    }

    if (document.contact.sujet.value == "") {
        alert ("Veuillez saisir le sujet de votre mail.");
        return false;
    }

    if (document.contact.content.value == "") {
        alert ("Veuillez saisir le texte de votre mail.");
        return false;
    }

    return true;
}

function validateMailOnly() {
    if (document.contact.chx_email_perso.checked == true && !isValidEmail(document.contact.email.value)) {
        alert ("Veuillez saisir une adresse mail valide.");
        return false;
    }
    return true;
}

